Uses of Interface
org.ek9lang.compiler.symbols.IAggregateSymbol
Packages that use IAggregateSymbol
Package
Description
Common parts of processing that can be reused across various phases.
F - Resolution of Explicitly Defined Type Symbols - at this point phase3 processing should have defined
most of the explicitly defined symbols, so they should be resolvable.
G - Full Symbol Resolution can now take place.
Contains critical general components used in the
Ek9Compiler listeners.
This is the main source of EK9 Symbols used within the compiler.
-
Uses of IAggregateSymbol in org.ek9lang.compiler.common
Classes in org.ek9lang.compiler.common that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescriptionclassPredicate to see if an aggregate mandated pure in its construction.Methods in org.ek9lang.compiler.common that return IAggregateSymbolModifier and TypeMethodDescriptionMethodAndAggregateData.aggregateSymbol()Returns the value of theaggregateSymbolrecord component.Methods in org.ek9lang.compiler.common with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionbooleanAggregateHasPureConstruction.test(IAggregateSymbol aggregateSymbol) Constructors in org.ek9lang.compiler.common with parameters of type IAggregateSymbolModifierConstructorDescriptionMethodAndAggregateData(MethodSymbol methodSymbol, IAggregateSymbol aggregateSymbol) Creates an instance of aMethodAndAggregateDatarecord class. -
Uses of IAggregateSymbol in org.ek9lang.compiler.phase2
Classes in org.ek9lang.compiler.phase2 that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescription(package private) final classExamines all the service operations on a service and looks at the verbs used and the uri proto paths.(package private) final classSome aggregates like classes, components, etc.(package private) final classDoes a simple check (excluding any inheritance) for visibility rules on methods/operators on aggregates.Methods in org.ek9lang.compiler.phase2 with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionvoidNoDuplicatedServicePathsOrError.accept(IAggregateSymbol service) voidSyntheticConstructorCreator.accept(IAggregateSymbol aggregate) voidVisibilityOfOperationsOrError.accept(IAggregateSymbol aggregate) -
Uses of IAggregateSymbol in org.ek9lang.compiler.phase3
Classes in org.ek9lang.compiler.phase3 that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescription(package private) final classGiven a 'type' (the IAggregateSymbol passed in), see it would be possible to iterator over it with some other type.(package private) final classGiven an aggregate and a symbol, this predicate checks if the symbol is a property/field of that aggregate.(package private) final classUsed for resolving operation calls on aggregates, which can include properties that are delegates to functions.(package private) final classAccesses the aggregate and gets just the 'default' operators defined on that aggregate (not any hierarchy).(package private) final classGets the abstract methods and then resolves each to see what the resulting method would be.Methods in org.ek9lang.compiler.phase3 that return IAggregateSymbolModifier and TypeMethodDescriptionAggregateMethodData.aggregate()Returns the value of theaggregaterecord component.StreamAggregateCheckData.aggregateSymbol()Returns the value of theaggregateSymbolrecord component.Methods in org.ek9lang.compiler.phase3 with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionvoidTraverseAbstractMethods.accept(IAggregateSymbol aggregateSymbol, Consumer<MethodSymbol> actionToTake) GetIteratorType.apply(IAggregateSymbol aggregate) OperationCallOrError.apply(EK9Parser.OperationCallContext ctx, IAggregateSymbol aggregate) RetrieveDefaultedOperators.apply(IAggregateSymbol aggregate) booleanIsPropertyOfAggregate.test(IAggregateSymbol aggregate, ISymbol possibleProperty) Constructors in org.ek9lang.compiler.phase3 with parameters of type IAggregateSymbolModifierConstructorDescription(package private)AggregateMethodData(IToken location, IAggregateSymbol aggregate, MethodSymbol methodSymbol) Creates an instance of aAggregateMethodDatarecord class.(package private)StreamAggregateCheckData(org.antlr.v4.runtime.Token errorLocation, IAggregateSymbol aggregateSymbol, ISymbol symbolType) Creates an instance of aStreamAggregateCheckDatarecord class. -
Uses of IAggregateSymbol in org.ek9lang.compiler.support
Classes in org.ek9lang.compiler.support that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescription(package private) classDeals with normal operators (i.e.final classIf the aggregate is a generic parameterised type this function triggers a check for duplicated methods.final classDoes a simple check (excluding any inheritance) for duplicated operations (methods, operators) on any sort of Aggregate, i.e.Fields in org.ek9lang.compiler.support with type parameters of type IAggregateSymbolModifier and TypeFieldDescription(package private) final Function<IAggregateSymbol, String> CheckAndPopulateOperator.messageForMethods in org.ek9lang.compiler.support with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionvoidCheckForDuplicateOperationsOnGeneric.accept(IToken errorLocationToken, IAggregateSymbol aggregate) voidNoDuplicateOperationsOrError.accept(IToken errorLocationToken, IAggregateSymbol aggregate) voidAggregateManipulator.addAllSyntheticOperators(IAggregateSymbol t) Add all possible synthetic operators to the aggregate.AggregateManipulator.addComparatorOperator(IAggregateSymbol aggregateSymbol, String comparatorType, Optional<ISymbol> returnType) Adds a form of a comparison operator.voidAggregateManipulator.addComparatorOperator(IAggregateSymbol aggregateSymbol, IAggregateSymbol arg0, String comparatorType, Optional<ISymbol> returnType) Adds a form of a comparison operator.AggregateManipulator.addConstructor(IAggregateSymbol t) Create a new constructor for the aggregate with no params.voidAggregateManipulator.addConstructor(IAggregateSymbol aggregateSymbol, List<ISymbol> constructorArguments, boolean synthetic, boolean markedPure) voidAggregateManipulator.addConstructorIfRequired(IAggregateSymbol aggregateSymbol, List<ISymbol> constructorArguments, boolean synthetic) Add a new constructor if not present, marked as synthetic.booleanOperationFactory.addMissingDefaultOperators(EK9Parser.DefaultOperatorContext ctx, IAggregateSymbol aggregate) A bit of a beast this method.booleanSymbolFactory.addMissingDefaultOperators(EK9Parser.DefaultOperatorContext ctx, IAggregateSymbol aggregate) A bit of a beast this method.voidAggregateManipulator.addNonAbstractMethods(IAggregateSymbol from, IAggregateSymbol to) Takes the 'from' aggregate obtains all the methods that are not abstract that have a return the type 'from' and adds them to the 'to' aggregate.voidAggregateManipulator.addPurePublicReturnSameTypeMethod(IAggregateSymbol aggregate, String methodName) AggregateManipulator.addPurePublicSimpleOperator(IAggregateSymbol aggregateSymbol, String methodName, Optional<ISymbol> returnType) Adds a simple operator, that is 'pure' (no side effects) and accepts no parameters, but just returns a value.voidAggregateManipulator.addSyntheticConstructorIfRequired(IAggregateSymbol aggregateSymbol) Add a synthetic constructor, if a constructor is not present.voidAggregateManipulator.addSyntheticConstructorIfRequired(IAggregateSymbol aggregateSymbol, List<ISymbol> constructorArguments) Add a synthetic constructor, if a constructor is not present.CheckAndPopulateOperator.apply(EK9Parser.OperatorDeclarationContext ctx, IAggregateSymbol aggregate) AggregateManipulator.cloneMethodWithNewType(MethodSymbol method, IAggregateSymbol to) AggregateManipulator.createMutatorOperator(IAggregateSymbol aggregateSymbol, String operatorType) Create an operator of the name supplied.AggregateManipulator.createMutatorOperatorReturnVoid(IAggregateSymbol aggregateSymbol, String operatorType) Create an operator of the name supplied.AggregateManipulator.createOperator(IAggregateSymbol aggregateSymbol, String operatorType, boolean isPure) Create an operator of the name supplied.AggregateManipulator.createPureAcceptSameTypeOperatorAndReturnType(IAggregateSymbol aggregateSymbol, String comparatorType, Optional<ISymbol> returnType) Creates a pure method with an argument the same as the main type.AggregateManipulator.createPureArgumentOperatorAndReturnType(IAggregateSymbol aggregateSymbol, IAggregateSymbol arg0, String comparatorType, Optional<ISymbol> returnType) Creates a pure method with an argument of a different type as the main type.AggregateManipulator.createPurePublicReturnSameTypeMethod(IAggregateSymbol aggregateSymbol, String methodName) AggregateManipulator.createPurePublicSimpleOperator(IAggregateSymbol aggregateSymbol, String methodName, Optional<ISymbol> returnType) Just creates a public operator with the name specified.AggregateManipulator.createToJsonSimpleOperator(IAggregateSymbol aggregateSymbol) Create operator for json.AggregateManipulator.getAllPossibleDefaultOperators(IAggregateSymbol aggregate) Provides all the possible default operators.(package private) List<MethodSymbol> OperatorFactory.getAllPossibleDefaultOperators(IAggregateSymbol aggregate) (package private) List<MethodSymbol> OperatorFactory.getAllPossibleSyntheticOperators(IAggregateSymbol aggregate) AggregateManipulator.getDefaultOperator(IAggregateSymbol aggregate, String operator) If the operator provided can be defaulted then a Method symbol with the correct signature will be returned.(package private) MethodSymbolOperatorFactory.getDefaultOperator(IAggregateSymbol aggregate, String operator) OperationFactory.newOperator(EK9Parser.OperatorDeclarationContext ctx, IAggregateSymbol aggregate) Create a new aggregate that represents an EK9 operator, uses a method for this.SymbolFactory.newOperator(EK9Parser.OperatorDeclarationContext ctx, IAggregateSymbol aggregate) Create a new aggregate that represents an EK9 operator, uses a method for this.voidAggregateManipulator.updateToConstrainBy(IAggregateSymbol t, IAggregateSymbol constrainingType) This is the idea where a 'T' is constrained to only be a type or a subtype of that type. -
Uses of IAggregateSymbol in org.ek9lang.compiler.symbols
Classes in org.ek9lang.compiler.symbols that implement IAggregateSymbolModifier and TypeClassDescriptionclassThis is typically a 'class' or an interface type where it can include the definitions of new properties.classAn aggregate, but one that can have zero or more traits (like interfaces).classSpecial type that is super of Aggregate and super of Function (if they don't have supers).Methods in org.ek9lang.compiler.symbols that return types with arguments of type IAggregateSymbolModifier and TypeMethodDescriptionAggregateWithTraitsSymbol.getAllowedExtenders()AggregateSymbol.getSubAggregateSymbols()default List<IAggregateSymbol> IAggregateSymbol.getSubAggregateSymbols()To get a full hierarchy you will need to get these subclasses and then get the subclasses of those.AggregateSymbol.getSuperAggregate()default Optional<IAggregateSymbol> IAggregateSymbol.getSuperAggregate()AggregateWithTraitsSymbol.getTraits()Get the traits that this aggregates implements.default List<IAggregateSymbol> IAggregateSymbol.getTraits()Methods in org.ek9lang.compiler.symbols with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionvoidAggregateWithTraitsSymbol.addAllowedExtender(IAggregateSymbol extenderSymbol) For use with constraining types to be limited to a declared set.voidAggregateSymbol.addSubAggregateSymbol(IAggregateSymbol sub) We note down any subtypes this type is used with.default voidIAggregateSymbol.addSubAggregateSymbol(IAggregateSymbol sub) used to add back pointers to subclasses.booleanAggregateSymbol.hasImmediateSuper(IAggregateSymbol theSuper) booleanAggregateWithTraitsSymbol.hasImmediateTrait(IAggregateSymbol trait) Does this aggregate have the trait passed in as an immediate trait.booleanAggregateWithTraitsSymbol.isAllowingExtensionBy(IAggregateSymbol extenderSymbol) Is the extender allowed to implement this aggregate (normally a trait).booleanAggregateSymbol.isImplementingInSomeWay(IAggregateSymbol aggregate) booleanAggregateWithTraitsSymbol.isImplementingInSomeWay(IAggregateSymbol traitSymbol) default booleanIAggregateSymbol.isImplementingInSomeWay(IAggregateSymbol aggregate) Only really used by aggregates that can have one or more traits.booleanAggregateSymbol.isInAggregateHierarchy(IAggregateSymbol theAggregateToCheck) Does the aggregate passed in exist in this type hierarchy.booleanIAggregateSymbol.isInAggregateHierarchy(IAggregateSymbol theAggregateToCheck) voidAggregateSymbol.setSuperAggregate(IAggregateSymbol baseSymbol) default voidIAggregateSymbol.setSuperAggregate(IAggregateSymbol superAggregateSymbol) Method parameters in org.ek9lang.compiler.symbols with type arguments of type IAggregateSymbolModifier and TypeMethodDescriptionvoidAggregateSymbol.setSuperAggregate(Optional<IAggregateSymbol> superAggregate) Set the 'super' of this type.default voidIAggregateSymbol.setSuperAggregate(Optional<IAggregateSymbol> superAggregate)