Class AugmentAggregateWithTraitMethods

All Implemented Interfaces:
BiConsumer<EK9Parser.TraitsListContext, AggregateWithTraitsSymbol>

final class AugmentAggregateWithTraitMethods extends TypedSymbolAccess implements BiConsumer<EK9Parser.TraitsListContext, AggregateWithTraitsSymbol>
Designed to add in methods on the aggregate where the 'traits' use is 'traits by'. Every member the trait provides - its own and those of its super-traits - is forwarded, unless the aggregate declares it itself. What this means is any abstract methods in the trait (and its supers not implemented) must have been implemented in the 'by {reference}'. Otherwise, there would have been errors when creating the {reference}. So what this means is that these same abstract methods must be 'overridden' in this aggregate, either by the ek9 developer - or we have to add in a synthetic non-abstract method. When it actually comes to actually implementing this code generated will actually add a real method in but delegate the call to the {reference} object.