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.