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.
H - Generic/Parameterised types can have their methods checked when used in specific contexts.
I - PRE Intermediate Representation generation checks.
K - Intermediate Representation Generation.
Synthetic operator and method generation for EK9.
Used primarily to hold structures that are related to searching for symbols.
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.final classTHE close operator of an aggregate: the oneoperator closea call tocloseresolves to (its own, or inherited), or empty when it has none.final classPredicate to check if an aggregate type has a close() operator defined.final classTHE shared test for "is this type orderable?" - does it have a REAL<=>operator, one it declares itself or inherits from a real (user) super, as opposed to only the degenerateAny._cmpthat EVERY type inherits and which is not value ordering.final classTHE shared test for "does this type have a REAL<operator>?" - one it declares itself or inherits from a real (user) super OR from a trait (its own, a super's, or a trait's trait), as opposed to only the degenerateAny.<operator>that EVERY type inherits (e.g.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 TypeMethodDescriptionbooleanHasRealComparator.allPropertiesOrderable(IAggregateSymbol aggregate) THE test that every property of the type has a REAL<=>(HasRealComparator.test(IAggregateSymbol)) - so a BAREdefault operator's<=>over them survives.CloseOperatorOf.apply(IAggregateSymbol aggregate) HasRealOperator.declaredAt(IAggregateSymbol level) The operator this one LEVEL declares (not its supers or traits), if any.booleanAggregateHasPureConstruction.test(IAggregateSymbol aggregateSymbol) booleanHasCloseOperator.test(IAggregateSymbol aggregate) booleanHasRealComparator.test(IAggregateSymbol type) booleanHasRealOperator.test(IAggregateSymbol type) 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 classSets theCONCURRENT_ENTRY_POINT = "TRUE"squirrelled marker on every non-constructor, non-operator, concrete method of the supplied aggregate.(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 that return IAggregateSymbolModifier and TypeMethodDescriptionPostPassSites.DefaultOperatorSite.aggregate()Returns the value of theaggregaterecord component.Methods in org.ek9lang.compiler.phase2 that return types with arguments of type IAggregateSymbolModifier and TypeMethodDescription(package private) Map<IAggregateSymbol, IToken> PostPassSites.bareDefaultTokens()The 'default' token of an aggregate's bare 'default operator' (the last one, if it has several).(package private) Set<IAggregateSymbol> PostPassSites.dynamicClasses()The dynamic classes amongPostPassSites.samenessDeclaredIn: their captures are known only in FULL_RESOLUTION.(package private) Map<IAggregateSymbol, ParsedModule> PostPassSites.samenessDeclaredIn()The aggregates whose sameness is completed (not built-in, not Java-backed), in walk order, with their module.(package private) Map<IAggregateSymbol, ParsedModule> PostPassSites.servicesDeclaredIn()The services (not built-in, not Java-backed), in walk order, with their module.Methods in org.ek9lang.compiler.phase2 with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionvoidMarkMethodsAsConcurrentEntryPoint.accept(IAggregateSymbol aggregate) voidNoDuplicatedServicePathsOrError.accept(IAggregateSymbol service) voidSyntheticConstructorCreator.accept(IAggregateSymbol aggregate) voidVisibilityOfOperationsOrError.accept(IAggregateSymbol aggregate) Constructors in org.ek9lang.compiler.phase2 with parameters of type IAggregateSymbolModifierConstructorDescription(package private)DefaultOperatorSite(EK9Parser.DefaultOperatorContext ctx, IAggregateSymbol aggregate, ParsedModule parsedModule) Creates an instance of aDefaultOperatorSiterecord class. -
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 classRecords, on a conceptualT, that the body being resolved compares its values with<=>(item <=> other.itemoveritem as T?) - one ordering step (D89, D91 step 4).(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 classEvery EK9 constructor chains to a super constructor: an explicitsuper(...), an explicitthis(...)delegation, or - when neither is written - a hidden IMPLICITsuper()to the super's no-arg constructor.(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 TypeMethodDescriptionvoidNoteTypeParameterOrdered.accept(IAggregateSymbol owner, MethodSymbol operator) Record the step whenowneris a bareTandoperatoris its<=>.voidSuperConstructorAccessOrError.accept(IAggregateSymbol aggregate) voidTraverseAbstractMethods.accept(IAggregateSymbol aggregateSymbol, Consumer<MethodSymbol> actionToTake) GetIteratorType.apply(IAggregateSymbol aggregate) OperationCallOrError.apply(EK9Parser.OperationCallContext ctx, IAggregateSymbol aggregate) RetrieveDefaultedOperators.apply(IAggregateSymbol aggregate) (package private) CommonValuesGetIteratorType.determineIterationPattern(IAggregateSymbol aggregate) Determine which iteration pattern an (already-confirmed iterable) aggregate uses.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.phase4
Constructor parameters in org.ek9lang.compiler.phase4 with type arguments of type IAggregateSymbolModifierConstructorDescription(package private)ParameterisedTypeOrError(Ek9Types ek9Types, ErrorListener errorListener, Map<IAggregateSymbol, List<MethodSymbol>> accessedMethodsByT, Function<PossibleGenericSymbol, Optional<ISymbol>> definedParameterisation) Create the check. -
Uses of IAggregateSymbol in org.ek9lang.compiler.phase5
Classes in org.ek9lang.compiler.phase5 that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescription(package private) final classThe reason a dynamic class (or closed class) never ends - its effectivehasNext()'sNEVER_ENDING_ITERATIONmark, made byNeverEndingIterationMarker- if it has one.(package private) final classAn aggregate's own property fields, in declaration order, as an unmodifiable list.Methods in org.ek9lang.compiler.phase5 that return IAggregateSymbolModifier and TypeMethodDescriptionTraitImplementationAnalyzer.TraitAnalysis.trait()Returns the value of thetraitrecord component.(package private) IAggregateSymbolPropertyTypeGraph.typeOf(PropertyTypeGraph.Node node) The aggregate a node stands for (not forANY).Methods in org.ek9lang.compiler.phase5 that return types with arguments of type IAggregateSymbolModifier and TypeMethodDescription(package private) List<? extends IAggregateSymbol> PropertyTypeGraph.allAggregates()Every aggregate in the program - where the roots are chosen from.List<? extends IAggregateSymbol> PropertyTypeGraph.TypeUniverse.allAggregates()Every aggregate in the program.List<? extends IAggregateSymbol> PropertyTypeGraph.TypeUniverse.concreteSubtypesOf(IAggregateSymbol type) Every concrete aggregate that extends or implements the type, transitively.Methods in org.ek9lang.compiler.phase5 with parameters of type IAggregateSymbolModifier and TypeMethodDescription(package private) voidCohesionTracker.accountForDefaultOperators(IAggregateSymbol aggregate) Account for default operators which implicitly access all fields.(package private) List<TraitImplementationAnalyzer.TraitAnalysis> TraitImplementationAnalyzer.analyzeTraitsWithoutDelegation(IAggregateSymbol aggregate, EK9Parser.TraitsListContext traitsListContext) Analyze traits implemented WITHOUT 'by' delegation to detect potential E11023 patterns.MarkedNeverEndingHasNext.apply(IAggregateSymbol aggregate) PropertyFieldsOf.apply(IAggregateSymbol aggregate) (package private) FieldClassifier.FieldCountsFieldClassifier.classify(IAggregateSymbol aggregate, EK9Parser.TraitsListContext traitsListContext) Classify all fields of an aggregate.List<? extends IAggregateSymbol> PropertyTypeGraph.TypeUniverse.concreteSubtypesOf(IAggregateSymbol type) Every concrete aggregate that extends or implements the type, transitively.PropertyTypeGraph.fieldsOf(IAggregateSymbol aggregate) The node for the fields of an object of exactly this type - what a root, or a cycle member, is.ConcreteSubtypeFinder.findAllSubtypes(IAggregateSymbol baseType) Find all aggregate types (both abstract and concrete) that have the given base type in their type hierarchy.ConcreteSubtypeFinder.findConcreteSubtypes(IAggregateSymbol abstractType) Find all concrete (non-abstract) aggregate types that have the given abstract type in their type hierarchy.TraitMethodConflictDetector.findConflictingMethodSignatures(IAggregateSymbol aggregate) Find method signatures that appear in multiple traits implemented by this aggregate.(package private) booleanTraitMethodConflictDetector.hasConflict(IAggregateSymbol aggregate, MethodSymbol method) Check if a specific method has a conflict across traits.(package private) booleanTraitMethodConflictDetector.hasConflictForTrait(Set<String> conflictingSignatures, IAggregateSymbol trait) Check if any of the conflicting signatures is one of the given trait's own methods.ReachableInjections.membersOf(IAggregateSymbol aggregate) Every method and operator of a type, its supers' and its traits' included.Constructors in org.ek9lang.compiler.phase5 with parameters of type IAggregateSymbolModifierConstructorDescription(package private)TraitAnalysis(IAggregateSymbol trait, String traitName, int traitMethodCount, int overriddenMethodCount, boolean hasCompatibleField, String compatibleFieldName) Creates an instance of aTraitAnalysisrecord class.Constructor parameters in org.ek9lang.compiler.phase5 with type arguments of type IAggregateSymbolModifierConstructorDescription(package private)SharedTypeClosure(ConcreteSubtypeFinder subtypeFinder, Predicate<IAggregateSymbol> keepsOwnDomain) -
Uses of IAggregateSymbol in org.ek9lang.compiler.phase5.construction
Methods in org.ek9lang.compiler.phase5.construction that return IAggregateSymbolModifier and TypeMethodDescriptionConstructionEdges.InstanceInitTarget.aggregate()Returns the value of theaggregaterecord component.Constructors in org.ek9lang.compiler.phase5.construction with parameters of type IAggregateSymbolModifierConstructorDescriptionInstanceInitTarget(IAggregateSymbol aggregate) Creates an instance of aInstanceInitTargetrecord class. -
Uses of IAggregateSymbol in org.ek9lang.compiler.phase7
Methods in org.ek9lang.compiler.phase7 that return IAggregateSymbolModifier and TypeMethodDescriptionConstrainedTypeShape.baseType()Returns the value of thebaseTyperecord component.Constructors in org.ek9lang.compiler.phase7 with parameters of type IAggregateSymbolModifierConstructorDescription(package private)ConstrainedTypeShape(AggregateSymbol constrainedType, String constrainedTypeName, IAggregateSymbol baseType, String baseTypeName, EK9Parser.ConstrainTypeContext constraint) Creates an instance of aConstrainedTypeShaperecord class. -
Uses of IAggregateSymbol in org.ek9lang.compiler.phase7.generator
Methods in org.ek9lang.compiler.phase7.generator that return IAggregateSymbolModifier and TypeMethodDescriptionIteratorSetup.collectionType()Returns the value of thecollectionTyperecord component.BucketTracker.producesType()Returns the value of theproducesTyperecord component.IteratorSetup.type()Returns the value of thetyperecord component.TerminalSetup.type()Returns the value of thetyperecord component.Methods in org.ek9lang.compiler.phase7.generator with parameters of type IAggregateSymbolModifier and TypeMethodDescription(package private) SortSetupStreamEmissionEngine.applySortToCollection(List<EK9Parser.StreamPartContext> stages, IteratorSetup iteratorSetup, ISymbol elementType, IAggregateSymbol collectionType, org.antlr.v4.runtime.tree.ParseTree probeSite, DebugInfo debugInfo, List<IRInstr> instructions) CloseChain.closeOperator(List<IRInstr> body, IAggregateSymbol aggregate, DebugInfo debugInfo) The body of a type's close followed, on every path, by its generated chain.CloseChain.constructionFailure(List<IRInstr> body, IAggregateSymbol aggregate, DebugInfo debugInfo) A constructor's work after its construction call, with the chain run only if it fails.CloseChain.constructionFailureInOwnScope(List<IRInstr> body, IAggregateSymbol aggregate, DebugInfo debugInfo) CloseChain.constructionFailure(List, IAggregateSymbol, DebugInfo)in a scope of its own (SCOPE_ENTER/SCOPE_EXITaround it), so what the region registers has an entered scope to be released by: a generated constructor has no body scope, and a written one's region sits after its body scope has been left (or, after an explicitsuper(...), inside it).(package private) StringIterationSourceLowering.enumInstanceForIteration(IAggregateSymbol enumType, DebugInfo debugInfo, List<IRInstr> instructions) An unset instance of an enumeration type, made by its default constructor, in a fresh managed temp.StreamPipelineMachinery.generatePipelineItemBinding(String iteratorVar, IAggregateSymbol iteratorType, String pipelineItemVar, ISymbol elementType, DebugInfo debugInfo, boolean rawIterator) Generate: pipelineItem = iterator.next() Follows ForInGenerator.generateLoopVariableBinding() pattern.booleanCloseChain.isEmpty(IAggregateSymbol aggregate) True when a close of this type generates nothing.(package private) StringIterationSourceLowering.iteratorOf(IAggregateSymbol sourceType, String sourceVar, IAggregateSymbol iteratorType, DebugInfo debugInfo, List<IRInstr> instructions) sourceVar.iterator()into a fresh managed temp, typediteratorType.(package private) StringCoverageSourceName.ofAggregate(IAggregateSymbol aggregate) The aggregate's source-level name - the generic it parameterises when it is a monomorphisation, otherwise its own name.(package private) StringIterationSourceLowering.sourceValue(EK9Parser.ExpressionContext sourceCtx, IAggregateSymbol sourceType, DebugInfo debugInfo, List<IRInstr> instructions) The source's value in a fresh managed temp: the enumeration instance (IterationSourceLowering.enumInstanceForIteration(IAggregateSymbol, DebugInfo, List)) or the evaluated expression.Constructors in org.ek9lang.compiler.phase7.generator with parameters of type IAggregateSymbolModifierConstructorDescription(package private)BucketTracker(String variable, String helperType, IAggregateSymbol producesType) Creates an instance of aBucketTrackerrecord class.(package private)IteratorSetup(String variable, IAggregateSymbol type, IAggregateSymbol collectionType) Creates an instance of aIteratorSetuprecord class.(package private)TerminalSetup(String variable, IAggregateSymbol type, MethodSymbol resolvedPipeMethod, ISymbol consumesType) Creates an instance of aTerminalSetuprecord class. -
Uses of IAggregateSymbol in org.ek9lang.compiler.phase7.support
Methods in org.ek9lang.compiler.phase7.support with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionCycleGuardOwner.initialise(IAggregateSymbol aggregate, String tempVar, DebugInfo debugInfo) Make the constant, once, in the type's_c_init.CycleGuardOwner.load(String resultVar, IAggregateSymbol aggregate, DebugInfo debugInfo) Load the constant for a guarded operator - a borrowed reference, neither retained nor released.static ConstrainedEnumSubsetConstrainedEnumSubset.of(AggregateSymbol constrainedType, IAggregateSymbol baseEnum) The subset ofbaseEnumadmitted byconstrainedType's constraint. -
Uses of IAggregateSymbol in org.ek9lang.compiler.phase7.synthesis
Methods in org.ek9lang.compiler.phase7.synthesis with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionprotected StringAbstractSyntheticGenerator.differentTypeLabel(IAggregateSymbol owner, MethodSymbol operator) The "different run-time type" label of a generated sameness comparison that needs THE run-time-type check (SamenessTypeCheck, D24 rule 3, Contract 22), else null - and then nothing is generated for it, so a comparison that needs no check keeps exactly its IR.protected booleanAbstractSyntheticGenerator.isAnyType(IAggregateSymbol type) Check if the given type is the Any type.protected Optional<MethodSymbol> AbstractSyntheticGenerator.nearestSuperOperator(IAggregateSymbol aggregateSymbol, String operatorName) THE super operator a generated operator calls: the NEAREST declaration above the type, across the whole super chain (NearestOperatorAbove, neverAny's), when it has a body.protected StringAbstractSyntheticGenerator.servingOperatorParameterTypeName(IAggregateSymbol aggregate, String jvmMethodName) The parameter type of the operator that actually servesthis <op> otherwhenotheris this aggregate too - THE descriptor a synthesised delegation (<>to==,<and the rest to<=>) must call.protected StringAbstractSyntheticGenerator.superCallOwner(IAggregateSymbol aggregateSymbol, String operatorName) The fully qualified name of the type that OWNS the nearest super operator - the type a generated super call names (Contract 19).protected StringAbstractSyntheticGenerator.superCallParameterTypeName(IAggregateSymbol aggregateSymbol, String operatorName) The fully qualified name of the parameter type the nearest super operator DECLARES - the argument type a generatedCALL (Owner)super._x(param)names, read off the operator that serves the call (asOperatorTargetMethodResolver.declaredParameterTypes(ISymbol, String, List)does for every other synthesised call), never assumed to be the owner:Exception's<=>takesAny, and adefault operator <=>on a sub-type of it namedException._cmp(Exception)- aNoSuchMethodErrorat run time (D56).protected booleanAbstractSyntheticGenerator.superContributesRepresentation(IAggregateSymbol aggregateSymbol, String operatorName) Does this type's super contribute to its '$' / '$$'? Only when the NEAREST operator above it (AbstractSyntheticGenerator.nearestSuperOperator(IAggregateSymbol, String)) can render something: never an abstract one (nothing to call), a hand-written one always may (it is honoured, whatever it returns), a GENERATED one only when its owner's chain has fields to render (HasFieldsIncludingInherited). -
Uses of IAggregateSymbol in org.ek9lang.compiler.search
Methods in org.ek9lang.compiler.search with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionFuzzySymbolSearch.findSimilarMethods(IAggregateSymbol aggregate, String methodName) Search for methods with names similar to the target method name in the given aggregate and its super aggregates.FuzzySymbolSearch.findSimilarProperties(IAggregateSymbol aggregate, String propertyName) Search for properties with names similar to the target property name in the given aggregate. -
Uses of IAggregateSymbol in org.ek9lang.compiler.support
Classes in org.ek9lang.compiler.support that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescriptionfinal classRecords what the captures of a dynamic class are to its constructors (phase 3 only, once the capture constructor is decided).(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 classTHE recovery of the base type a CONSTRAINED type narrows — call this, do not re-derive it.final classThe base enumeration of a CONSTRAINED enumeration (RedSuit as CardSuit constrain as ...); empty for a base enumeration and for anything not enumeration-based.final classThe base enumeration of a CONSTRAINED enumeration (RedSuit as CardSuit constrain as ...); empty for a base enumeration and for anything not enumeration-based.final classTHE properties a constructor ofaggregateis responsible for: for a dynamic class its captures first (they live in the capture scope, not the class's own symbol table), then itsDeclaredProperties.final classTHE copy constructor of a type: a PUBLIC constructor taking exactly one argument of EXACTLY that type -Step(Step).final classTHE properties a type DECLARES itself, the property half of the fields an object of it carries (the other half, for a dynamic class, isCapturedVariables).final classTHE decision of which operator a GENERATED comparison is answered by - hold one and use it, do not re-derive it.final classTHE test of whether a type already has what adefault operatorwould give it - hold one and apply it, do not re-derive it.final classTHE rule of Q-COMPONENT-? (Steve, 2026-10-07): a type with NO fields, counting inherited ones, is set whenever it is present.final classTHE "does this type have any fields, counting inherited ones?" (Steve, 2026-10-07, Q-COMPONENT-?): its own fields (GeneratedOperatorFields- properties and a dynamic class's captures) or any property of a super, all the way up.final classTHE reading of phase 5's property-cycle mark (phase5/PropertyCycleMarker): can an object of this type reach itself through its properties? Hold one and ask it - never the squirrelled data directly.final classThe slots an aggregate's super chain occupies before its own properties in the flat field layout (FieldSlots): each super's properties, up to the first extern base, which adds its native footprint (ExternFootprint) and ends the walk.final classThe call-graph identity of an aggregate's property initialisers -module::Aggregate._i_init(), the method the generated code runs them in, and the name a stack trace shows.final classTHE "is this an enumeration TYPE, a base enumeration or a constrained one?" -IsEnumeration, or a constrained type over an enumeration (ConstrainedEnumerationBase).final classTHE "must a generated#?on this type leave this field out?" - the reading of phase 5's property-cycle marks (phase5/PropertyCycleMarker) for the hash (Contract 13).final classTHE no-argument constructor of a type, whatever its access -Counter().final classDoes a simple check (excluding any inheritance) for duplicated operations (methods, operators) on any sort of Aggregate, i.e.final classTHE parent declarations a method overrides - hold one and apply it, do not re-derive it.final classTHE super's dispatcher entry point that a sub-type's entry point overrides: the super's effective dispatcher method with exactly the same signature - what a synthesisedInheritedDispatcherentry point calls.final classTHE "is this a property of the object whose code is running?" - use it, never re-derive it.final classTHE reading of a program's body - use it, never a private"_main"test.final classTHE constraint of a generic's type parameter: the 'X' ofT constrain by X, or empty for an unconstrained 'T' - use this, never "does T have a super?".final classTHE constraint of a generic's type parameter: the 'X' ofT constrain by X, or empty for an unconstrained 'T' - use this, never "does T have a super?".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 that return types with arguments of type IAggregateSymbolModifier and TypeMethodDescriptionConstrainedEnumerationBase.apply(IAggregateSymbol type) The program whose body this symbol is - empty for anything else.TypeParameterConstraint.apply(IAggregateSymbol t) The type this 'T' was constrained by, or empty when it is unconstrained (or not yet set up).ConstructionSteps.implicitSuper()Returns the value of theimplicitSuperrecord component.Methods in org.ek9lang.compiler.support with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionvoidCapturedPropertiesRecorder.accept(IAggregateSymbol dynamicClass, List<ISymbol> capturedVariables) voidCheckForDuplicateOperationsOnGeneric.accept(IToken errorLocationToken, IAggregateSymbol aggregate) voidNoDuplicateOperationsOrError.accept(IToken errorLocationToken, IAggregateSymbol aggregate) voidNoDuplicateOperationsOrError.acceptImplementedOnly(IToken errorLocationToken, IAggregateSymbol aggregate) The duplicate check over the construct's IMPLEMENTED (non-abstract) methods only - for a text locale variant.voidAggregateManipulator.addAllSyntheticOperators(IAggregateSymbol t) Add all possible synthetic operators to the aggregate.voidAggregateManipulator.addCaptureConstructorIfRequired(IAggregateSymbol aggregateSymbol, List<ISymbol> capturedVariables) THE capture constructor of a dynamic class (IsCaptureConstructor): the constructor whose parameter types are EXACTLY the capture types, in order.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.voidAggregateManipulator.addConstrainingTypeConstructors(IAggregateSymbol t, IAggregateSymbol constrainingType) Clone the constraining type's constructors onto a constrained 'T', so T can be constructed with the same arguments (implemented as a call to the super).AggregateManipulator.addConstructor(IAggregateSymbol t) Create a new constructor for the aggregate with no params.AggregateManipulator.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.addMutatingVoidOperator(IAggregateSymbol aggregate, String operatorName) Creates a public mutating operator that takes no arguments and returns void.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) ConstrainedBase.apply(IAggregateSymbol aggregate) The base typeaggregateconstrains, or null when it has no such constructor (so it is not a constrained type, or the compiler did not synthesise one).ConstrainedEnumerationBase.apply(IAggregateSymbol type) ConstructorProperties.apply(IAggregateSymbol aggregate) CopyConstructor.apply(IAggregateSymbol type) The public copy constructor oftype, if it has one.DeclaredProperties.apply(IAggregateSymbol aggregateSymbol) The aggregate's own properties - none for an enumeration, whose values are constants, not fields.DefaultedComparisonDelegate.apply(IAggregateSymbol aggregate, ISymbol ek9Any) DefaultOperatorCoverage.apply(IAggregateSymbol aggregate, String operator) The type's own operator that already servesdefault operator <operator>, if any.InstanceInitIdentity.apply(IAggregateSymbol aggregate) NoArgumentConstructor.apply(IAggregateSymbol type) The no-argument constructor oftype, if it has one (private, protected or public).OverriddenDeclarations.apply(IAggregateSymbol aggregate, MethodSymbol method) Every parent declaration with exactly this method's signature - at most one per parent - private ones included: a private parent member is not inherited, so not overridden, and the caller decides what that means.OverriddenEntryPoint.apply(IAggregateSymbol aggregate, MethodSymbol entryPoint) TypeParameterConstraint.apply(IAggregateSymbol t) The type this 'T' was constrained by, or empty when it is unconstrained (or not yet set up).intInheritedSlotCount.applyAsInt(IAggregateSymbol aggregate) DispatcherHandlers.collectFor(IAggregateSymbol aggregate, MethodSymbol dispatcher) The handlers fordispatcheronaggregate: every non-abstract, non-constructor, non-operator, non-dispatcher method across the inheritance chain with the same name and arity.voidOperationFactory.completeBareDefaultOperators(EK9Parser.DefaultOperatorContext ctx, IAggregateSymbol aggregate) Completes a bare 'default operator' once types are known - THE second half ofOperationFactory.addMissingDefaultOperators(EK9Parser.DefaultOperatorContext, IAggregateSymbol).voidSymbolFactory.completeBareDefaultOperators(EK9Parser.DefaultOperatorContext ctx, IAggregateSymbol aggregate) Completes a bare 'default operator' once types are known: the self-typed defaults a same-NAME operator taking a different argument hid from phase 1 (FE74, F2).voidOperationFactory.completeFieldlessIsSet(IAggregateSymbol aggregate) Gives a type with no fields, counting inherited ones, its synthesised '?' (Q-COMPONENT-?, Steve 2026-10-07): present means set.voidSymbolFactory.completeFieldlessIsSet(IAggregateSymbol aggregate) Gives a type with no fields, counting inherited ones, its synthesised '?' (Q-COMPONENT-?).voidOperationFactory.completeSameness(IAggregateSymbol aggregate, IToken bareToken) THE completion of a type's sameness once types are known (B18 - a type defines sameness once; Steve, 2026-09-30).voidSymbolFactory.completeSameness(IAggregateSymbol aggregate, IToken bareToken) Completes a type's sameness once types are known (B18).AggregateManipulator.createMutatingVoidOperator(IAggregateSymbol aggregateSymbol, String operatorName) Creates a mutating void operator with no parameters.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.DispatcherHandlers.entryPointsOf(IAggregateSymbol aggregate) THE dispatcher entry points of an aggregate: every non-operator method markedas dispatcher, drawn from the FULL inheritance chain.booleanNoNameCollisionOrError.errorsIfLocalNamedLikeAMethod(IAggregateSymbol aggregate, ISymbol symbol) A LOCAL variable may not take the name of a method of the type it is declared in (its own - private included - or one it inherits or takes from a trait, unless that one is private and so unreachable here):total <- total()means a value on the left and a call on the right, and with the local in scope a bare 'total()' no longer reaches the method (it surfaced as E50010 'type not resolved', 2026-10-01).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.booleanAggregateManipulator.superHasAccessibleNoArgConstructor(IAggregateSymbol aggregateSymbol) THE test of whether an implicitsuper()from this aggregate can reach its super: true when there is no real super (none, or the implicitAny), or the super has a no-argument constructor that is not private.booleanFieldlessIsSet.test(IAggregateSymbol aggregate) Is this a type that gets the synthesised '?': a class (dynamic classes included), component or service with no fields, counting inherited ones, and no '?' of its own or from any super or trait (other thanAny's).booleanHasFieldsIncludingInherited.test(IAggregateSymbol aggregateSymbol) booleanHasPropertyCycle.test(IAggregateSymbol aggregate) booleanIsEnumerationType.test(IAggregateSymbol type) booleanLeftOutOfHash.test(IAggregateSymbol owner, ISymbol field) Must a generated#?on this type leave this field out?booleanOwnProperty.test(ISymbol candidate, IAggregateSymbol aggregate) True whencandidateis one ofaggregate's own declared properties - by identity, never by name.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.Constructor parameters in org.ek9lang.compiler.support with type arguments of type IAggregateSymbolModifierConstructorDescriptionConstructionSteps(Optional<IAggregateSymbol> implicitSuper, boolean runsInstanceInit) Creates an instance of aConstructionStepsrecord class. -
Uses of IAggregateSymbol in org.ek9lang.compiler.support.closeables
Classes in org.ek9lang.compiler.support.closeables that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescriptionfinal classEvery type a close of this type reaches through its chain - the static types of the closed fields and the owner of the parent close - for the call graph (each is called by the generated close).final classThe fields the type's close closes, in acquisition order: owned captures (OwnedCaptures), then own closeable properties - never an injected one, nor the delegate aby-delegation proxy close forwards to (the exclusions are listed onCloseSteps).final classTHE generated chain of a type's close (CloseSteps): what it closes (ClosedProperties) and the parent close it then calls (ParentClose).final classThe close operator this type declares itself, if any: own scope, not abstract, not a delegation proxy.(package private) final classThe no-argument close operator in the type's own scope, whatever it is (abstract, proxy or written).final classThe captures a dynamic class owns: each one PRE_IR_CHECKS marked as a fresh closeable (R-E).final classThe close of the nearest super CLASS that has one, when it is not abstract.Methods in org.ek9lang.compiler.support.closeables with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionChainedCloses.apply(IAggregateSymbol aggregate) ClosedProperties.apply(IAggregateSymbol aggregate) CloseStepsOf.apply(IAggregateSymbol aggregate) DeclaredClose.apply(IAggregateSymbol aggregate) OwnCloseOperator.apply(IAggregateSymbol aggregate) OwnedCaptures.apply(IAggregateSymbol aggregate) ParentClose.apply(IAggregateSymbol aggregate) -
Uses of IAggregateSymbol in org.ek9lang.compiler.support.conceptual
Classes in org.ek9lang.compiler.support.conceptual that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescriptionfinal classTHE "does the generic's body select between values of this conceptualTwith a comparison coalescing operator" (NoteCoalescingComparison).final classTHE note that the generic's body selects between values of its conceptualTwith<?or>?(D24 Q4 REVISED).final classTHE note of an operator the body used onowner, but only whenownerIS a conceptual type parameter - a concrete type needs no deferred check.final classTHE conceptual parameters a (non-bare) parameterisation is built on, each once; for a generic template (named in its own body) its own type parameters.Methods in org.ek9lang.compiler.support.conceptual that return types with arguments of type IAggregateSymbolMethods in org.ek9lang.compiler.support.conceptual with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionvoidNoteCoalescingComparison.accept(IAggregateSymbol conceptualT) voidNoteIfConceptual.accept(IAggregateSymbol owner, MethodSymbol operator) voidNoteOrderingUse.note(IAggregateSymbol owner, MethodSymbol operator, boolean writtenAsAnOperatorCall) Note the ordering use, when the operator is an ordering operator.booleanIsComparedByCoalescing.test(IAggregateSymbol conceptualT) -
Uses of IAggregateSymbol in org.ek9lang.compiler.support.copy
Classes in org.ek9lang.compiler.support.copy that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescriptionfinal classTHE "can a copy into this owner meet an object of a different class?" - only when the owner may have sub-types.(package private) final classIs the aggregate of a genus that can own a copy: the extensible data-carrying aggregates (a trait is an interface, and has no fields to copy).final classTHE "is the aggregate's self copy GENERATED" (SelfCopy,IsGeneratedCopy).final classTHE inherited:=:(Super)signatures a GENERATED copy owner overrides (Q5b,PolymorphicCopy): every:=:declared up its super CLASS chain (AllOperatorsAbove) whose single parameter is a super type of the owner - one per distinct parameter type, nearest first - unless the owner itself already declares that signature.final classTHE "is this aggregate a copy OWNER" - does it declare its own:=:taking itself (SelfCopy)? E07238 guarantees a class adding fields is one (PolymorphicCopy).final classTHE "does the owner get a_copyAccepts?" (PolymorphicCopy).final classTHE self copy of an aggregate: the:=:it declares in its OWN scope that takes the aggregate itself (PolymorphicCopy).Methods in org.ek9lang.compiler.support.copy with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionInheritedCopySignatures.apply(IAggregateSymbol owner, ISymbol ek9Any) SelfCopy.apply(IAggregateSymbol aggregate) booleanCopyNeedsRuntimeCheck.test(IAggregateSymbol owner) booleanCopyOwnerGenus.test(IAggregateSymbol aggregate) booleanHasGeneratedSelfCopy.test(IAggregateSymbol aggregate) booleanIsCopyOwner.test(IAggregateSymbol aggregate) booleanNeedsCopyAccepts.test(IAggregateSymbol owner, ISymbol ek9Any) -
Uses of IAggregateSymbol in org.ek9lang.compiler.support.operators
Classes in org.ek9lang.compiler.support.operators that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescriptionfinal classTHE "is a value of EXACTLY this type always set - its '?' the one synthesised for a field-less type (IsSynthesisedIsSet, Q-COMPONENT-?), answering true?" Read by phase 5's value tracker (F3, Steve 2026-10-07):s <- FieldlessType()thenif s?is provably true (E08088), asInteger()is provably unset.final classTHE operator of one name a type declares in its OWN scope, preferring the overload that takes the type itself when there are several (ExactSingleParameter) - and otherwise ANY overload (a zero-argument$or?has no parameter to match).final classTHE "does the author's source give this type its OWN '?'" - hand-written,default operator ?or the baredefault operator- for tools that edit source (adding a type's first field must also add a '?', E07235).final classTHE return types of the (non-private) parent declarations a method overrides (OverriddenDeclarations) with a NARROWER - covariant - return, one per distinct type (N07, phase 7's covariant bridges).final classTHE nearest declaration above an aggregate that a level test finds - asked of each super class in turn, nearest first (SuperClassChain).final classTHE nearest declaration above an aggregate that a level test finds - asked of each super class in turn, nearest first (SuperClassChain).final classTHE place a missing operator belongs when NOTHING above an aggregate declares it (Q4, Steve 2026-10-08): the nearest super class that HAS fields of its own - the root of the data decides whether its fields are exposed (R4) - or, when no super class has fields, the topmost one (the hierarchy's root belowAny).final classTHE place a missing operator belongs when NOTHING above an aggregate declares it (Q4, Steve 2026-10-08): the nearest super class that HAS fields of its own - the root of the data decides whether its fields are exposed (R4) - or, when no super class has fields, the topmost one (the hierarchy's root belowAny).final classTHE type that declares an operator - its OWNER, which a generated super call names (Contract 19,NearestOperatorAbove).(package private) final classThe super CLASS chain above an aggregate, nearest first - the walk every "operator above" question shares (NearestOperatorAbove).(package private) final classThe super CLASS chain above an aggregate, nearest first - the walk every "operator above" question shares (NearestOperatorAbove).Methods in org.ek9lang.compiler.support.operators that return IAggregateSymbolMethods in org.ek9lang.compiler.support.operators that return types with arguments of type IAggregateSymbolModifier and TypeMethodDescriptionOperatorDeclarationSite.apply(IAggregateSymbol aggregate, ISymbol ek9Any) SuperClassChain.apply(IAggregateSymbol aggregate) Methods in org.ek9lang.compiler.support.operators with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionDeclaredOperator.apply(IAggregateSymbol aggregate, String operatorName) NarrowedReturnTypes.apply(IAggregateSymbol aggregate, MethodSymbol method) Empty for a method that overrides nothing or keeps every parent's return type.NearestAbove.apply(IAggregateSymbol aggregate, Function<IAggregateSymbol, Optional<MethodSymbol>> declaredOn) OperatorDeclarationSite.apply(IAggregateSymbol aggregate, ISymbol ek9Any) SuperClassChain.apply(IAggregateSymbol aggregate) AllOperatorsAbove.of(IAggregateSymbol aggregate, String operatorName, ISymbol ek9Any) Every declaration above, nearest level first.NearestOperatorAbove.of(IAggregateSymbol aggregate, String operatorName, ISymbol ek9Any) The nearest operator calledoperatorNamedeclared ABOVE the aggregate, neverAny's:Anydeclares?$$$#?==<=>for every type, which says nothing about a hierarchy's data.NearestSelfComparisonAbove.of(IAggregateSymbol aggregate, String operatorName, ISymbol ek9Any) The nearest self-comparison above, if any.booleanAlwaysSetWhenPresent.test(IAggregateSymbol aggregate) booleanHasAuthoredIsSet.test(IAggregateSymbol aggregate) Method parameters in org.ek9lang.compiler.support.operators with type arguments of type IAggregateSymbolModifier and TypeMethodDescriptionNearestAbove.apply(IAggregateSymbol aggregate, Function<IAggregateSymbol, Optional<MethodSymbol>> declaredOn) -
Uses of IAggregateSymbol in org.ek9lang.compiler.support.sameness
Classes in org.ek9lang.compiler.support.sameness that implement interfaces with type arguments of type IAggregateSymbolModifier and TypeClassDescription(package private) final classThe fields a generated<=>walks for one type: its properties and, for a dynamic class, its captures (GeneratedOperatorFields; D62 - a capture is a field, not a property).(package private) final classThe nearest concrete<=>above the type that compares its level with itself, read from the methods as DECLARED - a retracted one included (getAllNonAbstractMethodsInThisScopeOnlydoes not filter the retraction), soOrderingAvailability.orderingSurvives(MethodSymbol, ISymbol)gives the same answer whichever types phase 5 has already visited.(package private) final classThe concrete<=>this one LEVEL declares comparing itself with itself, read as DECLARED (a retracted one included), preferring the one taking exactly the level.final classTHE sameness a type itself declares (B18) - its own non-abstract<=>comparing it with itself, else its==- hand-written or defaulted, never one GENERATED from it (IsGeneratedFromSameness).final classTHE "did the developer write an==that takes the type itself" (not a defaulted one).final classTHE "has the aggregate its own REAL<=>that takes itself" - hand-written, or defaulted (and not retracted) over fields that can all really be ordered.final classTHE sameness a type INHERITS - from its super chain (stopping beforeAny) or any of its traits (its own, a super's, a trait's trait) - if any, sealed or not.final classTHE "is this a comparison B18 generates from the sameness?": a<><<=>>=comparing the owner with itself (IsSelfComparison) - always generated, never written.final classTHE "is the sameness this type declares ONE sameness for its whole hierarchy?" (D24 rule 1).final classTHE "is this a declaration of its owner's sameness?" (B18): a<=>or==comparing the owner with itself (IsSelfComparison).final classTHE "does this operator compare its owner with ITSELF?" of B18 (Sameness): an operator taking exactly one argument of a type the owner is assignable to.final classTHE test behind E07187 (D24 Q4 REVISED, Steve 2026-10-20): can two values of this type be of DIFFERENT run-time types whose<=>is UNSET? Then<?and>?have no lesser or greater value to select, and an unset value cannot be built to stand in for one (aT()may be set, absent, private or abstract, and would run developer code).final classFor a message: how a type for whichMayMixRuntimeTypesholds can have values of different run-time types - "a trait", or "an abstract" / "an open" followed by "class", "record" or "component".final classTHE sameness a type would inherit through its super CLASS chain (D24 follow-up Q5, Steve 2026-10-20): the nearest concrete<=>comparing its owner with itself (NearestSelfComparisonAbove) - the super is ORDERED - else the nearest such==- the super is EQUATABLE only.final classTHE sameness a type that declares none of its own gets from its super CLASS chain once PRE_IR_CHECKS has run (D55):NearestSamenessAbove, but a<=>that does not survive (OrderingAvailability.orderingSurvives(MethodSymbol, ISymbol)) is passed over for the nearest==- the super is EQUATABLE only.final classTHE test of whether a sameness comparison - the type's==or<=>, hand-written or generated, or a generated==/<>answered by its<=>- needs the run-time-type check in front of it (D24 rule 3, Contract 22): values of different run-time types are never the same.final classTHE inherited sameness signatures a type with its own sameness OVERRIDES (D24 rule 3; N07 - the object decides, never the reference): for each of==and<=>the type declares taking exactly itself, every same-named comparison above it on its super CLASS chain (AllOperatorsAbove) that takes a type the owner is assignable to and that the owner does not declare itself (OwnOperatorTaking).final classTHE retraction step (D55/D58/D62): whenOrderingAvailability.bareOrderingRetracted(IAggregateSymbol, ISymbol)says the type's bare ordering is withdrawn, mark each of its bare ordering operators (<=>,<,<=,>,>=)DEFAULT_OPERATOR_RETRACTED, which the type's method set then filters out, so none is generated.final classTHE SEALED sameness a type inherits (D24 rule 1) - one written by hand on an abstract base or a trait above it (IsHierarchyWideSameness) - if any.final classTHE sort owner of a type (D52 residual, Steve 2026-10-21, option a): the type a streamsortgroups its values by before comparing any two with<=>.final classTHE wording of why a type has no<=>although it asked for one with the baredefault operator(D58): the field whose type cannot be ordered, the type declaring it and - only where that is a super - that a sub-type follows its super.Methods in org.ek9lang.compiler.support.sameness that return IAggregateSymbolModifier and TypeMethodDescription(package private) IAggregateSymbolSamenessAbove.declaringType(IAggregateSymbol level) The type whose declarations a level of the walk reads: a parameterised type's generic, else the type itself.SamenessAbove.Found.level()Returns the value of thelevelrecord component.UnorderedProperty.owner()Returns the value of theownerrecord component.Methods in org.ek9lang.compiler.support.sameness with parameters of type IAggregateSymbolModifier and TypeMethodDescriptionbooleanOrderingAvailability.allPropertiesOrderable(IAggregateSymbol aggregate, ISymbol ek9Any) THE "can every property of this type be ordered?" (OrderingAvailability.isOrderable(IAggregateSymbol, ISymbol)for each property's type) - what a baredefault operator's<=>needs of its own fields.ComparedFieldsOf.apply(IAggregateSymbol aggregate) DeclaredOrderingAbove.apply(IAggregateSymbol owner, ISymbol ek9Any) DeclaredOrderingAt.apply(IAggregateSymbol level, ISymbol ek9Any) DeclaredSameness.apply(IAggregateSymbol owner) InheritedSameness.apply(IAggregateSymbol aggregate, ISymbol ek9Any) MixingKind.apply(IAggregateSymbol type) NearestSamenessAbove.apply(IAggregateSymbol owner, ISymbol ek9Any) NearestSurvivingSamenessAbove.apply(IAggregateSymbol owner, ISymbol ek9Any) OverriddenSamenessSignatures.apply(IAggregateSymbol owner, ISymbol ek9Any) RetractWithdrawnBareOrdering.apply(IAggregateSymbol aggregate, ISymbol ek9Any) SealedSameness.apply(IAggregateSymbol aggregate, ISymbol ek9Any) SortOwnerAbove.apply(IAggregateSymbol aggregate) The display name of the hierarchy-wide<=>'s owner above the type.WhyNotOrderable.apply(IAggregateSymbol type, ISymbol ek9Any) booleanOrderingAvailability.bareOrderingRetracted(IAggregateSymbol owner, ISymbol ek9Any) THE retraction decision for a type's BARE ordering family (<=> < <= > >=added by the baredefault operator): its own bare<=>decides for the whole family throughOrderingAvailability.orderingSurvives(MethodSymbol, ISymbol); without one (the ordering family alone, beside a hand-written<=>) the type's own properties decide.(package private) booleanOrderingAvailability.constrainedOverRetractedOrdering(IAggregateSymbol owner, ISymbol ek9Any) Is this a constrained type whose base's bare ordering is withdrawn? Its copied ordering operators are then withdrawn with it: a constrained type offers exactly the operators its base has (M1).(package private) IAggregateSymbolSamenessAbove.declaringType(IAggregateSymbol level) The type whose declarations a level of the walk reads: a parameterised type's generic, else the type itself.(package private) Optional<SamenessAbove.Found> SamenessAbove.first(IAggregateSymbol aggregate, Predicate<IAggregateSymbol> skip, Predicate<IAggregateSymbol> ownerTest) The first sameness aboveaggregatewhose declaring type passesownerTest, passing over each levelskipholds for.booleanOrderingAvailability.isOrderable(IAggregateSymbol type, ISymbol ek9Any) THE "is this type orderable?" behindHasRealComparator: the nearest<=>it declares or inherits (super chain beforeAny, then its traits) that survives (OrderingAvailability.orderingSurvives(MethodSymbol, ISymbol)).OwnOperatorTaking.of(IAggregateSymbol owner, String name, ISymbol parameterType) The owner's own non-abstract operator of this name taking exactly that one type, if any.booleanOrderingAvailability.orderingWithdrawn(IAggregateSymbol type, ISymbol ek9Any) Does a use that needs the type's<=>without naming it (sort,<?, a range) rely on an ordering that is not there: a withdrawn bare<=>(OrderingAvailability.withdrawnOrdering(IAggregateSymbol, ISymbol)) or aDictEntrywhose key cannot be ordered (OrderingAvailability.unorderedDictEntryKey(ISymbol, ISymbol))? THE test of phase 5'sRetractedComparatorUseOrError;WhyNotOrderablewords it.booleanHasHandWrittenEquality.test(IAggregateSymbol aggregate) booleanHasOwnComparator.test(IAggregateSymbol aggregate, ISymbol ek9Any) booleanIsDerivedComparison.test(IAggregateSymbol owner, MethodSymbol operator) booleanIsHierarchyWideSameness.test(IAggregateSymbol owner) booleanIsSamenessOperator.test(IAggregateSymbol owner, MethodSymbol operator) True for a<=>or==comparing the owner with itself - a declaration of its sameness.booleanIsSelfComparison.test(IAggregateSymbol owner, MethodSymbol operator) True for an operator taking exactly one argument of a type the owner is assignable to.booleanMayMixRuntimeTypes.test(IAggregateSymbol type, ISymbol ek9Any) booleanNeedsRuntimeTypeCheck.test(IAggregateSymbol owner, MethodSymbol operator) (package private) booleanTakesItself.test(IAggregateSymbol aggregate, MethodSymbol method, String operatorName) OrderingAvailability.withdrawnOrdering(IAggregateSymbol type, ISymbol ek9Any) THE "does a use of this type's<=>rely on an ordering that is withdrawn?" (D58, Steve 2026-10-21): the nearest<=>declared on the type or above it - the one phase 3 resolved the use to - is one the baredefault operatoradded, and it does not survive (OrderingAvailability.orderingSurvives(MethodSymbol, ISymbol)).Method parameters in org.ek9lang.compiler.support.sameness with type arguments of type IAggregateSymbolModifier and TypeMethodDescription(package private) Optional<SamenessAbove.Found> SamenessAbove.first(IAggregateSymbol aggregate, Predicate<IAggregateSymbol> skip, Predicate<IAggregateSymbol> ownerTest) The first sameness aboveaggregatewhose declaring type passesownerTest, passing over each levelskipholds for.Constructors in org.ek9lang.compiler.support.sameness with parameters of type IAggregateSymbolModifierConstructorDescription(package private)Found(IAggregateSymbol level, MethodSymbol operator) Creates an instance of aFoundrecord class.UnorderedProperty(IAggregateSymbol owner, ISymbol property) Creates an instance of aUnorderedPropertyrecord class. -
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()default List<IAggregateSymbol> IAggregateSymbol.getDirectSupertypes()THE direct supertypes of this aggregate: its super aggregate (when it has one), then its traits.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.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).booleanAggregateWithTraitsSymbol.isDelegatedTrait(IAggregateSymbol traitSymbol) Is this one of the traits this aggregate lists with a delegate.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)