Inherit processes each TypeDef to resolve the inherited slots. This step is used to check invalid inheritances due to conflicting slots and invalid overrides.
Slots
-
private Void checkFieldFieldOverride(TypeDef t, CField base, FieldDef def) -
private Void checkMethodFieldOverride(TypeDef t, CMethod base, FieldDef def) -
private Void checkMethodMethodOverride(TypeDef t, CMethod base, MethodDef def) -
private Void checkOverride(TypeDef t, CSlot base, SlotDef def)Check that def is a valid override of the base slot.
-
private Bool isOverrideProtectionErr(CSlot base, SlotDef def) -
private CSlot? keep(CSlot a, CSlot b)Return if there is a clear keeper between a and b - if so return the one to keep otherwise return null.
- makeSource
-
new make(Compiler compiler) -
private Bool matchingSignatures(CSlot a, CSlot b)Return if two slots have matching signatures
- runSource
-
override Void run()Overrides compiler::CompilerStep.run
Doc inherited from compiler::CompilerStep.run
Run the step
- visitTypeDefSource
-
override Void visitTypeDef(TypeDef t)Overrides compiler::Visitor.visitTypeDef
Doc inherited from compiler::Visitor.visitTypeDef
Callback when visiting a type definition.