Uses of Interface
org.ek9lang.compiler.symbols.ISymbol
Packages that use ISymbol
Package
Description
B - For the EK9 compiler itself.
Common parts of processing that can be reused across various phases.
The directives are really aimed at helping the creation of the EK9 language, but they
maybe very useful in the early stages of adoption of EK9 (should there be any).
IR Instruction Classes - The instruction set for EK9 intermediate representation.
IR Support Utilities - Helper classes for IR generation and processing.
E - Initial Symbol definition by traversing the 'ANTLR' - 'AST'.
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.
Call graph infrastructure for EK9 compiler static analysis.
Data model for slice-2 deadlock detection analysis results.
K - Intermediate Representation Generation.
Synthetic operator and method generation for EK9.
Support classes for synthetic operator IR generation.
THE automatic source repairs - one engine for every door (
ek9 -ff, ek9_format, the MCP editors,
ek9_write_file, ek9_edit_file, ek9_compile).
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 ISymbol in org.ek9lang.compiler
Classes in org.ek9lang.compiler that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescription(package private) final classFind the ISymbol at a given token position by traversing the parse tree.Methods in org.ek9lang.compiler that return ISymbolModifier and TypeMethodDescriptionParsedModule.getRecordedSymbol(org.antlr.v4.runtime.tree.ParseTree node) Locate and return a recorded symbol against part of the parse tree, this may return null if nothing has been recorded.ParsedModuleTransientData.getRecordedSymbol(org.antlr.v4.runtime.tree.ParseTree node) Locate and return a recorded symbol against part of the parse tree, this may return null if nothing has been recorded.Methods in org.ek9lang.compiler that return types with arguments of type ISymbolModifier and TypeMethodDescriptionParseTreeSymbolLocator.apply(CompilableSource source, IToken targetToken) ParsedModule.locateSymbolAtToken(CompilableSource source, IToken targetToken) Locate a symbol at a specific token position in the source.CompilableProgram.resolveByFullyQualifiedSearch(SymbolSearch search) Resolve some symbol via a fully qualified search.CompilableProgram.resolveFromImplicitScopes(SymbolSearch search) Search in the implicit ek9 module namespaces of: org.ek9.lang etc.CompilableProgram.resolveFromModule(String moduleName, SymbolSearch search) A package name (moduleName) can actually have multiple parsedModules (i.e.CompilableProgram.resolveReferenceFromModule(String moduleName, SymbolSearch search) Check the existing set of references in the moduleName.Methods in org.ek9lang.compiler with parameters of type ISymbolModifier and TypeMethodDescriptionvoidParsedModule.recordSymbol(org.antlr.v4.runtime.tree.ParseTree node, ISymbol symbol) Record a particular node context with a particular symbol.voidParsedModuleTransientData.recordSymbol(org.antlr.v4.runtime.tree.ParseTree node, ISymbol symbol, Module module) Record a particular node context with a particular symbol. -
Uses of ISymbol in org.ek9lang.compiler.common
Classes in org.ek9lang.compiler.common that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescriptionfinal classTest if a symbol is a BARE-defaulted operator, i.e.final classChecks if a symbol should be tracked as a closeable resource.final classTHE test that an operator was written asdefault operator X(or added by the baredefault operator): theDEFAULTEDsquirrel, so the compiler wrote its body.final classTest if a symbol is externally implemented.final classTest if a (generic base function) symbol is forward-target dispatched: the closed set of extern abstract function types a built-in invokes through the erased base_call(Any...)path with the argument held RAW —MutexKey(viaMutexLock.enter) andComparator(viaPriorityQueue.withComparator/Ek9Sort).final classAccess the Symbol for the lhs of the preflow statement.final classChecks for a type is resolved and is suitable genus and category.final classFunction that extracts signature-qualified-name from a symbol.final classJust gets the type from a symbol, or throws a compiler exception if missing.final classExtracts the fully qualified type name from the symbol.final classTHE test that a symbol is a PROPERTY declared with no value, so every access to it is questionable until a constructor (or a guard) has set it: aVariableSymbolthat is a property field andUninitialisedAtDeclaration.declaredWithNoValue(ISymbol).final classChecks if a variable should be processed as a possible uninitialised variable.Methods in org.ek9lang.compiler.common that return ISymbolModifier and TypeMethodDescriptionLhsFromPreFlowOrError.apply(EK9Parser.PreFlowStatementContext ctx) TypedSymbolAccess.getRecordedAndTypedSymbol(org.antlr.v4.runtime.tree.ParseTree node) Gets any symbol associated with this node.SymbolsAndScopes.getRecordedSymbol(org.antlr.v4.runtime.tree.ParseTree node) TypeNameOrException.typeSymbolOf(ISymbol symbol) THE type SYMBOL whose fully qualified nameTypeNameOrException.apply(ISymbol)emits - deliberately the same returning-symbol rule, yielding the symbol rather than its name.Methods in org.ek9lang.compiler.common that return types with arguments of type ISymbolModifier and TypeMethodDescriptionSuitableGenusOrError.apply(org.antlr.v4.runtime.ParserRuleContext ctx) HasRealOperator.declaredAt(IAggregateSymbol level) The operator this one LEVEL declares (not its supers or traits), if any.CodeFlowAnalyzer.getSymbolsNotMeetingAcceptableCriteria(IScope inScope) CodeFlowMap.getSymbolsNotMeetingAcceptableCriteria(IScope inScope) Just provide a list of variables that have not been marked as meeting acceptable criteria in the scope.SymbolsAndScopes.getUninitialisedVariables(IScope inScope) SymbolsAndScopes.resolveOrDefine(PossibleGenericSymbol parameterisedSymbol, SemanticErrorReporter errorListener) Resolve or define a parameterised type here.TypeDefResolver.typeDefToSymbol(String typeDefinition) Use an ek9 parser to accept a String of a typeDef and convert to a symbol (if it can be found).Methods in org.ek9lang.compiler.common with parameters of type ISymbolModifier and TypeMethodDescriptionClassModifierChangePredicate.canChange(ISymbol symbol, ClassModifierChangePredicate.Mode mode) VisibilityChangePredicate.canChangeTo(ISymbol member, String targetAccessModifier) static StringTestPrograms.declaredExitCodeOf(ISymbol symbol) The exit code a test DECLARED with"EXIT:<n>", or null when it declared none.static booleanUninitialisedAtDeclaration.declaredWithNoValue(ISymbol symbol) True when the symbol was declared with no value: a property, local or returning variable thatname as Type?left unset.booleanCodeFlowAnalyzer.doesSymbolMeetAcceptableCriteria(ISymbol identifierSymbol, IScope inScope) booleanCodeFlowMap.doesSymbolMeetAcceptableCriteria(ISymbol identifierSymbol, IScope inScope) Check if a variable meets the criteria of being acceptable.protected voidTypedSymbolAccess.emitTypeNotResolvedError(ISymbol symbol) voidSymbolsAndScopes.enterNewConstant(ISymbol symbol, org.antlr.v4.runtime.tree.ParseTree node, SymbolChecker symbolChecker) Create a new constant as declared in the constants section and records the symbol.voidSymbolsAndScopes.enterNewLiteral(ISymbol symbol, org.antlr.v4.runtime.tree.ParseTree node) For literals, we only record in the parsedModule.voidSymbolsAndScopes.enterNewSymbol(ISymbol symbol, org.antlr.v4.runtime.tree.ParseTree node) A new symbol has been encountered and is defined within the current scope in the scope stack and recorded in the parsedModule against the appropriate node.static StringTestPrograms.executionGroupOf(ISymbol symbol) The sequential execution group a test belongs to.static intTestPrograms.expectedExitCodeOf(ISymbol symbol) The exit code a test program must end with for the test to pass: the one it declared with"EXIT:<n>", else 0.static booleanUninitialisedAtDeclaration.hasInitialiser(ISymbol symbol) True when the symbol was given a value where it was declared (the opposite ofUninitialisedAtDeclaration.declaredWithNoValue(ISymbol)).static booleanThe same test without an instance, for a static helper.static booleanThe same test without an instance, for a static helper.static booleanThe same test without an instance, for a static helper.static booleanTypedSymbolAccess.isAlreadyInError(ISymbol symbol) THE test that a symbol has no type because the expression it was declared from is already reported (E-7): its readers stay silent rather than adding a 'type not resolved' for every later use.booleanSymbolsAndScopes.isErrorResultAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isGetOptionalAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isInitialiserReplaced(ISymbol returningVariable, IScope inScope) True when every path to the end of the scope has given the returning variable a new value - the definite assignment E08050 asks of a returning variable with no initialiser, asked of one that has an initialiser - so the value it was declared with cannot be the one returned.static booleanCloseableResourceToBeChecked.isLocalVariable(ISymbol symbol) THE 'is this a local variable' for resource management: a variable that is not a property, not an incoming parameter and not the returning parameter.booleanCloseableResourceToBeChecked.isManagedCloseableType(ISymbol type) THE 'is this a type whose values the compiler must see closed' predicate: an aggregate with acloseoperator that is not one of the global standard streams and not a bare type parameter (BareTypeParameter- a generic type that HAS type parameters is closeable when it has a close).booleanSymbolsAndScopes.isNextIteratorAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isOkResultAccessSafe(ISymbol identifierSymbol) protected booleanTypedSymbolAccess.isPureReassignmentDisallowed(ISymbol leftHandSideSymbol) THE purity half of E08100 (NO_PURE_REASSIGNMENT): true when a plain reassignment (:=) ofleftHandSideSymbolwould be refused here because the processing scope ispure.booleanSymbolsAndScopes.isSymbolAccessSafe(ISymbol identifierSymbol) true if identifier is safe to access.booleanSymbolsAndScopes.isSymbolAccessSafe(ISymbol identifierSymbol, IScope inScope) true if identifier is safe to access within the specified scope (rather than the current top scope).static booleanTestPrograms.isTestProgram(ISymbol symbol) Whether this symbol is itself a@Testprogram.booleanSymbolsAndScopes.isVariableInitialised(ISymbol identifierSymbol) booleanSymbolsAndScopes.isVariableInitialised(ISymbol identifierSymbol, IScope inScope) static booleanTestPrograms.isWithinTestProgram(ISymbol symbol) Whether this symbol is a test program or a method declared inside one.voidSymbolsAndScopes.markErrorResultAccessSafe(ISymbol identifierSymbol, IScope inScope) voidSymbolsAndScopes.markGetOptionalAccessSafe(ISymbol identifierSymbol, IScope inScope) voidSymbolsAndScopes.markNextIteratorAccessSafe(ISymbol identifierSymbol, IScope inScope) voidSymbolsAndScopes.markOkResultAccessSafe(ISymbol identifierSymbol, IScope inScope) voidSymbolsAndScopes.markSymbolAccessSafe(ISymbol identifierSymbol, IScope inScope) Record an identifier as being safe to access.voidSymbolsAndScopes.markSymbolAsInitialised(ISymbol identifierSymbol, IScope inScope) Record an identifier was initialised.voidCodeFlowAnalyzer.markSymbolAsMeetingAcceptableCriteria(ISymbol identifierSymbol, IScope inScope) voidCodeFlowMap.markSymbolAsMeetingAcceptableCriteria(ISymbol identifierSymbol, IScope inScope) Ensures that an identifier symbol is now marked as meeting the criteria of being acceptable.voidTypedSymbolAccess.recordATypedSymbol(ISymbol symbol, org.antlr.v4.runtime.tree.ParseTree node) Records a symbol against a node and also emits an error if its type has not been set.voidSymbolsAndScopes.recordDeclarationOfVariableUsingIterator(ISymbol identifierSymbol) voidSymbolsAndScopes.recordDeclarationOfVariableUsingOptional(ISymbol identifierSymbol) voidSymbolsAndScopes.recordDeclarationOfVariableUsingResult(ISymbol identifierSymbol) voidSymbolsAndScopes.recordInitialisedReturningVariable(ISymbol returningVariable) Follow a returning variable that was declared WITH a value: from here onSymbolsAndScopes.isInitialiserReplaced(ISymbol, IScope)says whether every path has since given it a new one.voidSymbolsAndScopes.recordInitialiserReplaced(ISymbol returningVariable) Record a plain assignment to a followed returning variable: on this path its declared value is replaced.voidCodeFlowAnalyzer.recordSymbol(ISymbol identifierSymbol, IScope inScope) voidCodeFlowMap.recordSymbol(ISymbol identifierSymbol, IScope inScope) Records a symbol against the specific scope if it is a variable to be analysed.voidSymbolsAndScopes.recordSymbol(ISymbol symbol, org.antlr.v4.runtime.tree.ParseTree node) Record a symbol against a specific node (so it can be looked up later).voidSymbolsAndScopes.recordSymbolAssignment(ISymbol identifierSymbol) Record an identifier was assigned and therefore initialised.voidSymbolsAndScopes.recordSymbolDeclaration(ISymbol identifierSymbol) Records a variable against the appropriate scope.voidSymbolsAndScopes.recordSymbolDeclaration(ISymbol identifierSymbol, IScope inScope) Record variable declaration against a specific scope.booleanbooleanbooleanbooleanbooleanbooleanbooleanTypeNameOrException.typeSymbolOf(ISymbol symbol) THE type SYMBOL whose fully qualified nameTypeNameOrException.apply(ISymbol)emits - deliberately the same returning-symbol rule, yielding the symbol rather than its name.booleanSuitableGenusOrError.validOrError(org.antlr.v4.runtime.ParserRuleContext ctx, ISymbol symbol) Checks a symbol that is already in hand (for example the type a call constructs), reporting at ctx.Constructors in org.ek9lang.compiler.common with parameters of type ISymbolModifierConstructorDescriptionHasRealComparator(ISymbol ek9Any) HasRealOperator(ISymbol ek9Any, String operatorGlyph, boolean binary) Constructor parameters in org.ek9lang.compiler.common with type arguments of type ISymbolModifierConstructorDescriptionprotectedCodeFlowMap(Predicate<ISymbol> isVariableToBeChecked, Predicate<SymbolAccess> meetsCriteria, Consumer<SymbolAccess> markAsMeetingCriteria) SymbolTypeOrException(UnaryOperator<ISymbol> typeResolver) Create with a type resolver for Scenario 3 type parameter substitution.TypeNameOrException(Function<ISymbol, String> typeResolver) Create with a type resolver for Scenario 3 type parameter substitution. -
Uses of ISymbol in org.ek9lang.compiler.directives
Methods in org.ek9lang.compiler.directives with parameters of type ISymbolModifier and TypeMethodDescription(package private) FileDirectiveClassBytes.mainClassFile(CompilationEvent compilationEvent, ISymbol symbol) The main (non-dev) class file location for a symbol — used for the "not found" diagnostic.(package private) Optional<byte[]> DirectiveClassBytes.read(CompilationEvent compilationEvent, ISymbol symbol) The bytes for a symbol's generated class, using the dev-then-main lookup — but asking the sink rather than the filesystem.protected voidByteCodeDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidComplexityDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidCounterexampleDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidDebugDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective directive, ISymbol symbol) protected voidGenusDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidImplementsDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidInputVarietyDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidIRDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidNotResolvedDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective directive, ISymbol symbol) protected voidObligationsDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected abstract voidResolutionDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective directive, ISymbol symbol) protected voidResolvedDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective directive, ISymbol symbol) protected voidSquirrelledDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidVerifiedDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) -
Uses of ISymbol in org.ek9lang.compiler.ir.instructions
Methods in org.ek9lang.compiler.ir.instructions that return ISymbolModifier and TypeMethodDescriptionField.getSymbol()Get the symbol representing this field.IRConstruct.getSymbol()OperationInstr.getSymbol()Methods in org.ek9lang.compiler.ir.instructions that return types with arguments of type ISymbolModifier and TypeMethodDescriptionIRConstruct.getImplementedTraits()IRConstruct.getSuperType()The single nominal super type this construct extends, resolved from the symbol's declared super (function super-chain, Scenario-2 wrapper base, or aggregate super).Methods in org.ek9lang.compiler.ir.instructions with parameters of type ISymbolModifier and TypeMethodDescriptionvoidIRConstruct.addImplementedTrait(ISymbol traitSymbol) booleanIRConstruct.isForSymbol(ISymbol toCheck) static FieldField.staticField(ISymbol symbol, String name, String typeName, DebugInfo debugInfo) Factory method for creating a static field (e.g., enum constants).Constructors in org.ek9lang.compiler.ir.instructions with parameters of type ISymbol -
Uses of ISymbol in org.ek9lang.compiler.ir.support
Classes in org.ek9lang.compiler.ir.support that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescriptionclassExtracts call metadata from symbols for use in IR generation.Methods in org.ek9lang.compiler.ir.support with parameters of type ISymbolModifier and TypeMethodDescription -
Uses of ISymbol in org.ek9lang.compiler.phase1
Classes in org.ek9lang.compiler.phase1 that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescription(package private) final classTypically used with programs.(package private) classIf any of its OWN methods is marked as 'dispatcher' then mark this class as a 'dispatcher'.(package private) final class(package private) classChecks that if the aggregate is a generic class that the appropriate public constructors are in place.Methods in org.ek9lang.compiler.phase1 that return ISymbolModifier and TypeMethodDescriptionConflictingTokens.symbol()Returns the value of thesymbolrecord component.Methods in org.ek9lang.compiler.phase1 with parameters of type ISymbolModifier and TypeMethodDescriptionvoidImplementationPresentOrError.accept(ISymbol aggregate, EK9Parser.MethodDeclarationContext ctx) voidvoidvoidConstructors in org.ek9lang.compiler.phase1 with parameters of type ISymbolModifierConstructorDescription(package private)ConflictingTokens(IToken tokenInError, IToken firstUse, ISymbol symbol) Creates an instance of aConflictingTokensrecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase2
Classes in org.ek9lang.compiler.phase2 that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescription(package private) final classA generic type's inferring constructor must take exactly its type parameters, in the same order - that is what lets 'Box(21)' infer 'Box of Integer'.(package private) final classChecks HTTP Access for service operations because some require HTTP_SOURCE, but others do not support it.(package private) final classChecks that the variable supplied (if not null and has a type), does not have a type that is a genericTypeParameter.(package private) classFor Constrained Types, focus on checking it is possible to constrain the type and if so then clones the appropriate methods/operators over and alters the types as appropriate.(package private) final classValidates that the 'sanitized' keyword is used correctly: 1.(package private) final classChecks for a type is resolved and is suitable to be extended from (in basic terms).(package private) final classOnly types of a specific genus can be used as constraints on the generic type 'T'.(package private) final classChecks the PATH value (if this is a path parameter) and ensures that the name appears in the path itself on the operation.Methods in org.ek9lang.compiler.phase2 that return types with arguments of type ISymbolModifier and TypeMethodDescriptionSuitableToExtendOrError.apply(org.antlr.v4.runtime.ParserRuleContext ctx) Methods in org.ek9lang.compiler.phase2 with parameters of type ISymbolModifier and TypeMethodDescriptionvoidvoidvoidvoidPopulateConstrainedTypeOrError.accept(AggregateSymbol newType, ISymbol constrainedType) (package private) voidPopulateConstrainedTypeOrError.accept(AggregateSymbol newType, ISymbol constrainedType, boolean hasConstraint) voidbooleanbooleanValidPathParameterOrError.test(ServiceOperationSymbol operation, ISymbol param) -
Uses of ISymbol in org.ek9lang.compiler.phase3
Classes in org.ek9lang.compiler.phase3 that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescription(package private) final classChecks the assignments for operator : := = and :=? that's all.(package private) final classE07187 (D24 Q4 REVISED, Steve 2026-10-20): the comparison coalescing operators<?and>?select one operand by<=>.(package private) classGiven a symbol, this check that the type that the symbol has can support the '<=>' operator.(package private) final classInside a constructor body, 'this' must not be passed as an argument to any NON-PURE call.(package private) classGiven a symbol, this check that the type that the symbol has can support the '--' operator.(package private) final classChecks that the symbol passed has a type and that the type is compatible with an EK9 Exception.(package private) final classAttempts to locate an Trait by name.(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) classGiven a symbol, this check that the type that the symbol has can support the '#?' operator.(package private) final classUsed for pure identifier resolution and recording.(package private) final classEnsures that 'identifierReference' is now resolved and hangs together and is 'typed' or emit "not resolved" error.(package private) classGiven a symbol, this check that the type that the symbol has can support the '++' operator.(package private) classChecks if a type has the $ 'toString' method or a 'promotion' #^ to a String method.(package private) final classGiven a symbol, this check that the type that the symbol has can support the '?' operation.(package private) final classChecks if a symbol can be mutated, this is nothing to do with a pure context.(package private) final classAs it is possible to have a variable that is a delegate 'function', it means that to call that function, the ek9 developer would use variable-name(parameters).(package private) final classTHE 'cannot call an abstract function or type' check (CANNOT_CALL_ABSTRACT_TYPE), with the located message.(package private) classProvides a common set of operations for checking operators.(package private) final classUsed for resolving and recoding of fields on specific types.(package private) final classJust check that with in the current 'context' - if pure that the processing call is pure.(package private) final classTo be used with operators on aggregates (except for the is-set ? operator, that has to deal with functions).(package private) final classTHE rule for when a write to a local resets its 'referenced' flag (E08090): a write is not a use.(package private) final classLooks at the returning param (if not null) and sets the symbol type as appropriate.(package private) final classReturns the appropriate symbol from the symbol and scope management component.(package private) final classChecks if a symbol has been referenced or not (can be null - no error).(package private) final classJust extracts the ISymbols from the expression contexts and issues not resolved errors if any are not present.(package private) final classProvides the PossibleGenericSymbol type of the symbol if it has been typed, or empty.(package private) classChecks that a trait access like T1.xyz() - is allowed i.e.(package private) final classIf the Ek9 developer has used named parameters, then they must be validated.(package private) final classChecks if a symbol's type is Void and emits E10010 if so.Methods in org.ek9lang.compiler.phase3 that return ISymbolModifier and TypeMethodDescriptionIdentifierOrError.apply(EK9Parser.IdentifierContext ctx) PropertyFieldOrError.apply(EK9Parser.IdentifierContext ctx, IScope scopeToResolveIn) SymbolFromContextOrError.apply(org.antlr.v4.runtime.ParserRuleContext ctx) StreamFunctionCheckData.currentStreamType()Returns the value of thecurrentStreamTyperecord component.DelegateFunctionData.delegateSymbol()Returns the value of thedelegateSymbolrecord component.CaptureEvaluationScope.OuterField.field()Returns the value of thefieldrecord component.CovarianceData.fromVar()Returns the value of thefromVarrecord component.(package private) ISymbolRangeOrError.inRangeOf(EK9Parser.ExpressionContext ctx) The range ofx in a ... b: the start israngeFromand the end isrightof the comparison alternative (the range form shares that level, so its end binds like any comparison operand - PRECEDENCE (4), Steve 2026-10-07).ExprLeftAndRightData.left()Returns the value of theleftrecord component.TypeCompatibilityData.lhs()Returns the value of thelhsrecord component.TypeCompatibilityData.rhs()Returns the value of therhsrecord component.ExprLeftAndRightData.right()Returns the value of therightrecord component.CheckOperatorData.symbol()Returns the value of thesymbolrecord component.SymbolAccessData.symbol()Returns the value of thesymbolrecord component.StreamAggregateCheckData.symbolType()Returns the value of thesymbolTyperecord component.CovarianceData.toVar()Returns the value of thetoVarrecord component.Methods in org.ek9lang.compiler.phase3 that return types with arguments of type ISymbolModifier and TypeMethodDescriptionGetIteratorType.apply(IAggregateSymbol aggregate) IdentifierReferenceOrError.apply(EK9Parser.IdentifierReferenceContext ctx) RequiredOperatorPresentOrError.apply(CheckOperatorData checkOperatorData) RequiredOperatorPresentOrError.apply(CheckOperatorData checkOperatorData, CallSymbol callSymbol) Overloaded version that accepts a CallSymbol and sets the resolved method on it.SymbolsFromParamExpression.apply(EK9Parser.ParamExpressionContext ctx) MethodOnAggregateData.callArguments()Returns the value of thecallArgumentsrecord component.DelegateFunctionData.callArgumentTypes()Returns the value of thecallArgumentTypesrecord component.FunctionData.callArgumentTypes()Returns the value of thecallArgumentTypesrecord component.LiteralTargetType.dictKeyValueTypes(EK9Parser.DictContext ctx) The declared key and value types of the Dict literal at this context, if it has a Dict target.ParametersData.from()Returns the value of thefromrecord component.OperatorTest.getSymbolType(ISymbol symbol) LiteralTargetType.listElementType(EK9Parser.ListContext ctx) The declared type parameters of the List literal at this context, if it has a List target.SanitizedCheckData.superParameters()Returns the value of thesuperParametersrecord component.SanitizedCheckData.thisParameters()Returns the value of thethisParametersrecord component.ParametersData.to()Returns the value of thetorecord component.Methods in org.ek9lang.compiler.phase3 with parameters of type ISymbolModifier and TypeMethodDescriptionvoid(package private) voidCheck if assignment from a sanitized parameter is allowed.(package private) voidCheck a call that has been resolved.voidJudge the common type of a comparison coalescing operator's operands.voidConstructorThisEscapeOrError.accept(EK9Parser.ParamExpressionContext paramExpression, ISymbol resolvedTarget) voidvoidvoidvoidvoidvoidvoidSetTypeFromReturningParam.accept(ISymbol symbol, EK9Parser.ReturningParamContext ctx) void(package private) voidAsSymbolReferencedOrError.accept(ISymbol), with what else the developer needs to know to fix it (placed after the name, before the standard text).voidIsSetPresentOrError.decidedForType(ISymbol symbolType) The types '?' is decided for without a search - shared byIsSetPresentOrError.test(IToken, ISymbol)andOperatorTest.testType(IToken, ISymbol)(B-2, so the coalescing operators judging a common type get them too).OperatorTest.decidedForType(ISymbol symbolType) THE stepOperatorTest.test(IToken, ISymbol)andOperatorTest.testType(IToken, ISymbol)both take before searching for the operator: a type for which this operator is decided without a search (for '?': a function, Any, text, an enumeration).(package private) static StringCaptureEvaluationScope.deniedReferenceText(ISymbol symbol) The text of a denial, the same at every site: what was named and where it is declared.(package private) booleanCaptureEvaluationScope.deniesAccessTo(org.antlr.v4.runtime.tree.ParseTree node, ISymbol symbol) THE "may this code reach that property?" check for a BARE name, shared by every site that resolves one against the scope stack: a read (IdentifierReferenceOrError), an assignment, an object-access start, a pre-flow or a for-range (IdentifierOrError), and a stream pipeline part (ResolveFunctionOrDelegateByNameOrError: a sink,head,map with,tee in).(package private) voidLiteralTargetType.elementFitsOrError(org.antlr.v4.runtime.ParserRuleContext elementCtx, ISymbol element, ISymbol declaredType, SemanticErrorReporter errorListener) An element of a targeted literal must be assignable to the declared element (or key/value) type - exactly the test a single assignment applies.(package private) static CheckOperatorDataCheckOperatorData.forType(ISymbol type, IToken operatorUseToken, MethodSymbolSearch search) An operator required of a TYPE, by a caller that has no value of it.protected MethodSymbolSearchComparatorPresentOrError.getMethodSymbolSearch(ISymbol symbolType) protected MethodSymbolSearchDecrementPresentOrError.getMethodSymbolSearch(ISymbol symbolType) protected MethodSymbolSearchHashCodePresentOrError.getMethodSymbolSearch(ISymbol symbolType) protected MethodSymbolSearchIncrementPresentOrError.getMethodSymbolSearch(ISymbol symbolType) protected MethodSymbolSearchIsSetPresentOrError.getMethodSymbolSearch(ISymbol symbolType) protected abstract MethodSymbolSearchOperatorTest.getMethodSymbolSearch(ISymbol symbolType) OperatorTest.getSymbolType(ISymbol symbol) (package private) static booleanControlIsBooleanOrError.isCondition(ISymbol type, ISymbol booleanType) True if a value of this type can be a condition: a Boolean, or a type that promotes to Boolean with '#^'.booleanOperatorTest.notAnEnumerationTypeOrError(IToken operatorUse, ISymbol operand) Is this operand a value rather than the enumeration TYPE itself? E07630 when it is the type.(package private) booleanRequiredOperatorPresentOrError.notAnEnumerationTypeOrError(IToken operatorUse, ISymbol operand) THE check that an operand is a VALUE, not the enumeration TYPE itself (CardSuit > CardSuit.Hearts), which is E07630.(package private) voidConstructorThisEscapeOrError.recordDynamicClass(ISymbol target, EK9Parser.AssignmentExpressionContext assignment) Inside a constructor, mark a local that is given a dynamic class capturing 'this'.booleanbooleanboolean(package private) booleanbooleanTest if the symbol has a Void type.booleanAsOperatorTest.test(IToken, ISymbol), for a TYPE rather than a value of it - e.g.Method parameters in org.ek9lang.compiler.phase3 with type arguments of type ISymbolModifier and TypeMethodDescriptionvoidValidNamedArgumentsOrError.accept(EK9Parser.ParamExpressionContext ctx, List<ISymbol> parameters) Constructors in org.ek9lang.compiler.phase3 with parameters of type ISymbolModifierConstructorDescription(package private)CheckOperatorData(ISymbol symbol, IToken operatorUseToken, MethodSymbolSearch search) An operator used on a VALUE (the usual case).(package private)CheckOperatorData(ISymbol symbol, IToken operatorUseToken, MethodSymbolSearch search, boolean onType) Creates an instance of aCheckOperatorDatarecord class.(package private)Creates an instance of aCovarianceDatarecord class.(package private)DelegateFunctionData(IToken token, ISymbol delegateSymbol, List<ISymbol> callArgumentTypes) Creates an instance of aDelegateFunctionDatarecord class.(package private)ExprLeftAndRightData(ISymbol left, ISymbol right) Creates an instance of aExprLeftAndRightDatarecord class.(package private)OuterField(ISymbol field, boolean fromDynamicClass, boolean denied) Creates an instance of aOuterFieldrecord class.(package private)StreamAggregateCheckData(org.antlr.v4.runtime.Token errorLocation, IAggregateSymbol aggregateSymbol, ISymbol symbolType) Creates an instance of aStreamAggregateCheckDatarecord class.(package private)StreamFunctionCheckData(org.antlr.v4.runtime.Token errorLocation, FunctionSymbol functionSymbol, ISymbol currentStreamType) Creates an instance of aStreamFunctionCheckDatarecord class.(package private)Creates an instance of aSymbolAccessDatarecord class.(package private)TypeCompatibilityData(IToken location, ISymbol lhs, ISymbol rhs) Creates an instance of aTypeCompatibilityDatarecord class.Constructor parameters in org.ek9lang.compiler.phase3 with type arguments of type ISymbolModifierConstructorDescription(package private)DelegateFunctionData(IToken token, ISymbol delegateSymbol, List<ISymbol> callArgumentTypes) Creates an instance of aDelegateFunctionDatarecord class.(package private)FunctionData(IToken token, FunctionSymbol function, List<ISymbol> callArgumentTypes) Creates an instance of aFunctionDatarecord class.(package private)MethodOnAggregateData(IToken token, IScope scopeToSearch, String methodName, List<ISymbol> callArguments) Creates an instance of aMethodOnAggregateDatarecord class.(package private)Creates an instance of aParametersDatarecord class.(package private)SanitizedCheckData(Supplier<String> errorMessage, List<ISymbol> superParameters, List<ISymbol> thisParameters) Creates an instance of aSanitizedCheckDatarecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase4
Constructor parameters in org.ek9lang.compiler.phase4 with type arguments of type ISymbolModifierConstructorDescription(package private)ParameterisedTypeOrError(Ek9Types ek9Types, ErrorListener errorListener, Map<IAggregateSymbol, List<MethodSymbol>> accessedMethodsByT, Function<PossibleGenericSymbol, Optional<ISymbol>> definedParameterisation) Create the check. -
Uses of ISymbol in org.ek9lang.compiler.phase5
Classes in org.ek9lang.compiler.phase5 that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescription(package private) final classThe NAMED half of the closeable ownership rule (Steve, 2026-10-05): "A closeable value you never NAME is owned by the statement that created it and closed when that statement finishes; a closeable value you NAME must be declared as a try-with-resources resource." (E81056).(package private) final classExtracts the EXISTING variable a pre-flow assigns: the target of a blind assignment (v := e()) or an assign-if-unset (v :=? e()).(package private) final class(package private) classCalculates the Depth of Inheritance Tree (DIT) for aggregate symbols.(package private) final classMarks specific types of variable of specific types (generic Result/Option) in a manner that enables the compiler to check if access to certain methods is safe.(package private) final classTests specific types of variable of specific types (generic Result/Option) in a manner that enables the compiler to check if access to certain methods is safe.(package private) final classIt may be that before calling this you have determined that 'isSet' has been called or you 'know' that the value of the variable is present and set.Methods in org.ek9lang.compiler.phase5 that return ISymbolModifier and TypeMethodDescriptionConstrainedConstructionResolver.Site.argSymbol()Returns the value of theargSymbolrecord component.OrderingTotality.Finding.callee()Returns the value of thecalleerecord component.ConstrainedConstructionResolver.Site.constructorParamType()Returns the value of theconstructorParamTyperecord component.CloseableArgumentKeeping.Holder.symbol()Returns the value of thesymbolrecord component.SafeAccessConjuncts.Proof.symbol()Returns the value of thesymbolrecord component.(package private) static ISymbolMetricLimitCheck.symbolOf(SymbolsAndScopes symbolsAndScopes, org.antlr.v4.runtime.tree.ParseTree node) The symbol the metric is recorded against; asserted present (the node, not the symbol, is never null).StoreSite.target()Returns the value of thetargetrecord component.MutatedOnlyVariables.Deferred.variable()Returns the value of thevariablerecord component.Methods in org.ek9lang.compiler.phase5 that return types with arguments of type ISymbolModifier and TypeMethodDescriptionGetGuardVariable.apply(EK9Parser.PreFlowStatementContext ctx) ScopeVariableCollector.collectLocalVariables(org.antlr.v4.runtime.tree.ParseTree node, Predicate<ISymbol> filter) Collect the local variable symbols declared inside the callable's instruction blocks (including those nested in if/while/for/try/switch), admitting only those for which the filter holds.FieldClassifier.FieldCounts.dataFields()Returns the value of thedataFieldsrecord component.ScopeVariableCollector.getAccessibleFields(IScope scope) The property fields of the nearest enclosing aggregate, or an empty list if there is none.PossibleExpressionConstruct.getPreFlowAssignedVariables(EK9Parser.PreFlowAndControlContext ctx) PossibleExpressionConstruct.getPreFlowAssignedVariables(EK9Parser.PreFlowStatementContext ctx) The EXISTING variables the pre-flow assigns, which are initialised after the construct whether or not its body runs - seeGetGuardVariable.ScopeVariableCollector.namedCaptures(org.antlr.v4.runtime.tree.ParseTree node) THE variables a NAMED capture '(name: value)' introduces on a dynamic function or class - read by every name-quality check (E11030, E11031, E11032; C-1: only E11031 once collected them, FE57).InjectionCycles.notExplained(String ownerFqn, Set<ISymbol> injections) The injections ofownerFqnthe ordering checks still judge: those no cycle explains.FieldClassifier.FieldCounts.serviceFields()Returns the value of theserviceFieldsrecord component.StoreSite.valueType(SymbolsAndScopes symbolsAndScopes) The resolved type of the value stored - not the slot's declared type.Methods in org.ek9lang.compiler.phase5 with parameters of type ISymbolModifier and TypeMethodDescriptionvoid(package private) voidReport E08040 atopiftargetis proven safe to unwrap in the current scope.voidvoid(package private) voidCloseableSlotStoreOrError.acceptCallableDeclaration(ISymbol recorded) A callable declaration (a constructor, method, operator, function or dynamic function): what it does with each of its parameters is then known, so an unnamed closeable given to it is a loan unless it keeps the argument (the verdict of a constructor isCloseableArgumentKeeping.fateOf(MethodSymbol, int); of any other callable, its derived RETAINS).(package private) voidCloseableArgumentKeeping.aliases(CloseableArgumentKeeping.Holder from, ISymbol to) The localtonow refers to the same object asfrom.intInheritanceDepthCalculator.applyAsInt(ISymbol symbol) Calculate the inheritance depth for a symbol.protected voidAbstractSafeSymbolMarker.assessIsSetCall(ISymbol toBeAssessed, IScope scopeMadeSafe) (package private) voidOperatorKeepsValueUnsetOrError.constructedUnset(ISymbol symbol, ISymbol type) symbolwas given the value aCONSTRUCTS_UNSETconstructor oftypemakes.(package private) voidA callable declaration was reached: its parameters are the variables whose occurrences are followed.(package private) voidOperatorKeepsValueUnsetOrError.declaredWithoutValue(ISymbol symbol) symbolwas declaredas T?, with no value.(package private) static StringConstructStatementBudget.displayNameFor(ISymbol symbol) Human-readable label for the construct the given symbol represents, for use in diagnostics.(package private) voidMutatedOnlyVariables.Collector.enterCallable(ISymbol symbol) A method, operator, function or dynamic function is entered; only one with a returning variable is followed.(package private) static voidMetricLimitCheck.errorIfExceeds(ErrorListener errorListener, ISymbol symbol, int value, int max, ErrorListener.SemanticClassification code, Supplier<String> message) Raisecodeon the symbol's source token when the value is strictly above the maximum.(package private) booleanTrue when the injection ofinjectedintoownerFqnis explained by a cycle, not by the order.(package private) Optional<CloseableArgumentKeeping.Holder> The callable whose own variable this is, when it is one that is followed (a parameter, or a local made to refer to one); empty otherwise.The node for what a property declared with this type can hold, or empty when it can hold nothing that has properties of its own (a function, a built-in leaf, an unresolved type).(package private) booleanSafeGenericContainers.isAccessSafe(ISymbol symbol) Is the (OK for a Result) unwrapping access of this symbol safe in the scope it is used in.protected booleanSafeSymbolAccess.isAccessUnSafe(ISymbol calledFromSymbol, String methodName, org.antlr.v4.runtime.tree.ParseTree accessSite) True when the access needs a check that neither the enclosing scope nor an earlierandconjunct of the expression ataccessSiteprovides (SafeAccessConjuncts.isProvenEarlier(ParseTree, ISymbol, CommonValues)).(package private) booleanSafeGenericContainers.isContainer(ISymbol symbol) Is the symbol a Result, Optional or Iterator.(package private) static booleanGuardVariableReadWhereUnsetOrError.isInLaterBlockOfItsGuard(org.antlr.v4.runtime.tree.ParseTree at, ISymbol target, SymbolsAndScopes symbolsAndScopes) THE test of this rule's domain, for a rule that must not report the same use a second time (E08096): isatinside a later block of anifchain (anelse ifor theelse) whose earlier block's<-guard declarestarget, provably unset there.(package private) booleanSafeAccessConjuncts.isProvenEarlier(org.antlr.v4.runtime.tree.ParseTree accessSite, ISymbol symbol, CommonValues access) True whenaccessonsymbolataccessSiteis protected by an EARLIER conjunct of an enclosingandevaluated as part of the same expression.protected booleanPossibleExpressionConstruct.isVariableInitialisedInScopes(CodeFlowAnalyzer analyzer, ISymbol variable, List<IScope> scopes) (package private) booleanOperatorKeepsValueUnsetOrError.keepsIncrementedUnset(EK9Parser.IdentifierContext ctx, ISymbol target) An identifier written in place byx++orx--: true when it is UNSET and the operator keeps it unset - reported, and it stays UNSET.(package private) booleanOperatorKeepsValueUnsetOrError.keepsTargetUnset(EK9Parser.AssignmentStatementContext ctx, ISymbol target) An assignment statementx += y(any in-place operator but a store): true when its target is UNSET and the operator keeps it unset - the target then stays UNSET and the finding is made once the right-hand side has been walked (OperatorKeepsValueUnsetOrError.assignmentCompleted(EK9Parser.AssignmentStatementContext)).(package private) voidSafeGenericContainers.markAccessSafe(ISymbol symbol, IScope scopeMadeSafe) Mark the (OK for a Result) unwrapping access of this symbol safe in the scope; nothing for other symbols.(package private) static intConstructStatementBudget.maxStatementsFor(ISymbol symbol) Maximum number of statements permitted for the construct the given symbol represents.(package private) booleanSlotAssignedOnce.mayAlreadyHold(ISymbol slot, org.antlr.v4.runtime.tree.ParseTree assignment) True when the slot may already hold a value at this assignment, judged from the assignments recorded so far; the assignment is then recorded, so call this once for every assignment to the slot, in source order.(package private) voidsymbolwas narrowed by a set-check (if not x?): known unset now because of the check.(package private) static CloseableArgumentKeeping.HolderCloseableArgumentKeeping.Holder.of(ScopedSymbol callable, ISymbol symbol) (package private) Optional<SafeGenericContainers.Container> (package private) voidOperatorKeepsValueUnsetOrError.otherwiseGiven(ISymbol symbol) symbolwas given some other value, by a store or a narrowing.static PropertyTypeGraphPropertyTypeGraph.over(ConcreteSubtypeFinder subtypeFinder, ISymbol anyType) The graph over the program, its subtypes and aggregates from the phase's ONE shared subtype index.protected voidPossibleExpressionConstruct.processPossibleGuardInitialisation(CodeFlowAnalyzer analyzer, ISymbol guardVariable, org.antlr.v4.runtime.ParserRuleContext ctx) Now when there is a preflow control, it may mean that a variable is initialised.(package private) voidThe squirrel core — package-private so it is unit-testable with a hand-built callable, no parse tree or scope resolution required.(package private) static voidMetricLimitCheck.record(ISymbol symbol, CommonValues squirrelKey, int value) Squirrel an integer metric on the symbol as decimal text, throughSmallIntStrings.(package private) voidOrderingTotality.record(ISymbol callable, List<OrderingTotality.Finding> found) Record the partial sources of one callable's Integer result; nothing is recorded for a total one.(package private) voidSafeGenericContainers.recordDeclaration(ISymbol symbol) Record the declaration of a variable of a container type, so that its unwrapping call needs a check.(package private) voidCouplingTracker.recordDependency(ISymbol type) Record a type dependency.(package private) voidModuleCouplingTracker.recordDependency(String sourceModuleName, ISymbol referencedType) Record a type dependency for a specific module.(package private) voidModuleCohesionTracker.recordReference(String moduleName, String fromConstructFqn, ISymbol referencedType) Record a type reference from one construct to another.protected booleanSafeSymbolAccess.requiresSafeAccess(ISymbol calledFromSymbol, String methodName) WhethermethodNameoncalledFromSymbolis a container-unwrap that needs a preceding safety check (Optional.get,Result.ok/error,Iterator.nexton a symbol the marker has flagged) — i.e.booleanboolean(package private) voidMutatedOnlyVariables.Collector.variableDeclared(EK9Parser.VariableDeclarationContext ctx, ISymbol symbol) Method parameters in org.ek9lang.compiler.phase5 with type arguments of type ISymbolModifier and TypeMethodDescription(package private) voidUnsatisfiedInjectionReporter.checkInjectionsAvailable(String aggName, Set<ISymbol> injections, Set<String> availableTypes, Set<String> allRegisteredTypes, IToken triggerToken, ErrorListener errorListener) Report the injections (of a type, or in a callable's body) that are not available at the trigger: never registered (E08210) or not yet registered (E08200).ScopeVariableCollector.collectLocalVariables(org.antlr.v4.runtime.tree.ParseTree node, Predicate<ISymbol> filter) Collect the local variable symbols declared inside the callable's instruction blocks (including those nested in if/while/for/try/switch), admitting only those for which the filter holds.InjectionCycles.notExplained(String ownerFqn, Set<ISymbol> injections) The injections ofownerFqnthe ordering checks still judge: those no cycle explains.(package private) voidDataClumpTracker.recordSignature(String moduleName, String callableName, List<ISymbol> params, IToken token) Record a callable's parameter signature for a specific module.Constructors in org.ek9lang.compiler.phase5 with parameters of type ISymbolModifierConstructorDescription(package private)(package private)Deferred(ParsedModule parsedModule, ISymbol variable, EK9Parser.ExpressionContext initialiser) Creates an instance of aDeferredrecord class.(package private)DynamicClassComparatorRetraction(ParsedModule parsedModule, ISymbol ek9Any) (package private)Creates an instance of aFindingrecord class.(package private)HasTypeOfGeneric(ISymbol matchType) Constructor to check if symbol has a type that matches the use of the match generic type.(package private)Holder(ScopedSymbol callable, ISymbol symbol) Creates an instance of aHolderrecord class.(package private)Proof(ISymbol symbol, CommonValues access) Creates an instance of aProofrecord class.PropertyTypeGraph(PropertyTypeGraph.TypeUniverse universe, ISymbol anyType) (package private)Site(AggregateSymbol constrainedType, ConstraintExpr constraint, ISymbol argSymbol, ISymbol constructorParamType) Creates an instance of aSiterecord class.(package private)StoreSite(ISymbol target, EK9Parser.AssignmentExpressionContext value, IToken location) Creates an instance of aStoreSiterecord class.Constructor parameters in org.ek9lang.compiler.phase5 with type arguments of type ISymbolModifierConstructorDescription(package private)CallableReturnsInitialisedOrError(SymbolsAndScopes symbolsAndScopes, ErrorListener errorListener, Function<C, EK9Parser.OperationDetailsContext> operationDetailsOf, Class<? extends ISymbol> expectedSymbolKind) (package private)FieldCounts(int serviceFieldCount, int dataFieldCount, int byDelegatedFieldCount, List<ISymbol> serviceFields, List<ISymbol> dataFields, Set<String> byDelegatedFields) Creates an instance of aFieldCountsrecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase5.callgraph
Methods in org.ek9lang.compiler.phase5.callgraph that return ISymbolModifier and TypeMethodDescriptionCallableInfo.symbol()Returns the value of thesymbolrecord component.Methods in org.ek9lang.compiler.phase5.callgraph that return types with arguments of type ISymbolModifier and TypeMethodDescriptionCallGraph.getInjectionSites(String callable) The injection sites declared directly in a callable's body (not transitively).Methods in org.ek9lang.compiler.phase5.callgraph with parameters of type ISymbolModifier and TypeMethodDescriptionvoidCallGraph.addInjectionSite(String callable, ISymbol injectedVariable) Record an injection site (name as T!) in the body of a callable.Constructors in org.ek9lang.compiler.phase5.callgraph with parameters of type ISymbolModifierConstructorDescriptionCallableInfo(String fullyQualifiedName, ISymbol symbol, IToken sourceToken, String moduleName, boolean isPure, boolean isProgram, boolean isTestEntry, boolean isServiceEntry, boolean containsAssertion, boolean containsInjection) Create CallableInfo with validation. -
Uses of ISymbol in org.ek9lang.compiler.phase5.construction
Methods in org.ek9lang.compiler.phase5.construction that return ISymbolModifier and TypeMethodDescriptionConstructionEdges.CallTarget.callee()Returns the value of thecalleerecord component.ConstructionEdges.TypeParameterConstruction.typeParameter()Returns the value of thetypeParameterrecord component.Methods in org.ek9lang.compiler.phase5.construction that return types with arguments of type ISymbolModifier and TypeMethodDescriptionConstructionEdges.constructionNodes()Every construction node, by call-graph identity.Methods in org.ek9lang.compiler.phase5.construction with parameters of type ISymbolModifier and TypeMethodDescriptionvoidConstructionEdges.addConstructionNode(String key, ISymbol symbol) Record a construction node - a constructor, or a type's_i_init- which every cycle reported must contain.(package private) static booleanParameterisations.isConcrete(ISymbol type) A type that names no conceptual type parameter anywhere in it.Method parameters in org.ek9lang.compiler.phase5.construction with type arguments of type ISymbolModifier and TypeMethodDescription(package private) Optional<PossibleGenericSymbol> Parameterisations.lookup(PossibleGenericSymbol generic, List<ISymbol> arguments) The existing parameterisation of a generic with exactly these (concrete) arguments, if there is one.Constructors in org.ek9lang.compiler.phase5.construction with parameters of type ISymbolModifierConstructorDescriptionCallTarget(ISymbol callee) Creates an instance of aCallTargetrecord class.TypeParameterConstruction(ISymbol typeParameter, int arity) Creates an instance of aTypeParameterConstructionrecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase5.flow
Methods in org.ek9lang.compiler.phase5.flow that return ISymbolModifier and TypeMethodDescriptionLockIdentityInference.resolveParamSymbol(String paramFqn) Resolve the original parameterISymbolfor a placeholder FQN, if one has been registered viaLockIdentityInference.tokenForSymbol(ISymbol).LockIdentityInference.unwrapCapture(ISymbol symbol, IScopedSymbol enclosingFunction) LikeLockIdentityInference.tokenForSymbol(ISymbol)but unwraps one level of dynamic-function capture: if the symbol is one ofenclosingFunction's captured variables, resolve the same-named variable in theCaptureScope's enclosing scope and use that outer symbol's identity instead.Methods in org.ek9lang.compiler.phase5.flow that return types with arguments of type ISymbolModifier and TypeMethodDescriptionConstraintState.trackedSymbols()Every symbol this state holds anything about (a value or the values it may hold), as a copy.Methods in org.ek9lang.compiler.phase5.flow with parameters of type ISymbolModifier and TypeMethodDescriptionvoidRecord that nothing is provable aboutsymbolhere.ValueTrackingAnalyzer.evaluateIsEmpty(ISymbol symbol) Evaluate the empty state of a variable based on its tracked value.ValueTrackingAnalyzer.evaluateIsSet(ISymbol symbol) Evaluate the isSet state of a variable based on its tracked value.Get the abstract value for a symbol.The constant values that reach this point on SOME path; empty when nothing is provable.ValueTrackingAnalyzer.getMayValues(ISymbol symbol) The constant values that reach this point on SOME path — the MAY side of the analysis.booleanConstraintState.isFreshInLoop(ISymbol symbol) True ifsymbolwas written, on every path here, since the innermost loop body was entered.booleanValueTrackingAnalyzer.isFreshInLoop(ISymbol symbol) True ifsymbolwas written, on every path to here, since the innermost loop body was entered: inside the loop its value is then what that write gave it on every pass, so a decision about it holds (D48) even though the body is walked only once.TrackedValues.knownValueOf(ISymbol symbol) The symbol's tracked value but only if that is known, else TOP - the symbol half ofTrackedValues.knownValueOf(EK9Parser.ExpressionContext), for a name that is not an expression (abystep identifier).voidConstraintState.markFreshInLoop(ISymbol symbol) Note thatsymbolwas written since the innermost loop body was entered (seeConstraintState.freshInLoop).voidValueTrackingAnalyzer.narrowedWithGuardSkipPath(ISymbol guardTarget, Runnable narrowing) Runnarrowing- the false narrowing of an if block's condition, at the start of its next alternative - when the block's guard (v <- f(),v :=? f()) can leaveguardTargetunset: then the condition afterthenwas never evaluated, and the alternative is reached by that skip path as well as by the condition being false (D46).voidValueTrackingAnalyzer.narrowForCondition(ISymbol symbol, String operator, long operandValue, boolean isTrueBranch) 🔑 Narrowing must reduce the MAY side too, or it goes stale. These paths write the MUST side DIRECTLY rather than throughValueTrackingAnalyzer.recordAssignment(ISymbol, AbstractValue), so without this the may-set keeps a value the narrowing has just ruled out — and a value that provably does NOT arrive would be reported as if it did.voidValueTrackingAnalyzer.narrowForIsSet(ISymbol symbol, boolean isTrueBranch) Narrow a variable's value based on an isSet check.voidValueTrackingAnalyzer.recordAssignment(ISymbol symbol, AbstractValue abstractValue) Record a variable assignment with a known constant value.voidValueTrackingAnalyzer.recordEscape(ISymbol symbol) Record that the objectsymbolrefers to is now kept somewhere the analysis cannot name (D61): it may be changed through that holder at any later point, so it is changed now (ValueTrackingAnalyzer.recordInPlaceChange(ISymbol)) and nothing learned about it later - a condition narrowing it included - survives a call that may run the program's own code (ValueTrackingAnalyzer.recordCallThatMayChange(boolean, Collection)) or an in-place change to anything.voidValueTrackingAnalyzer.recordInPlaceChange(ISymbol symbol) Record that the objectsymbolrefers to was changed IN PLACE (x++,cat items > x, a call given it) - so nothing is known any more about it, nor about any name that may refer to the same object.voidValueTrackingAnalyzer.recordInPlaceChangeThroughOthers(ISymbol symbol) voidValueTrackingAnalyzer.recordKeptUnset(ISymbol symbol) The variablesymbolis UNSET and an operation that keeps an unset value unset (KEEPS_UNSET, e.g.voidValueTrackingAnalyzer.recordLiteralAssignment(ISymbol symbol, AbstractValue abstractValue) AsValueTrackingAnalyzer.recordAssignment(ISymbol, AbstractValue), for a value that is exact on EVERY pass of an open loop - a literal, which no earlier pass can have changed (D48).voidValueTrackingAnalyzer.recordMayAliasOutside(ISymbol symbol) Record that the objectsymbolrefers to may be one that exists outside this callable (x <- view(),x <- this): a later call that reaches such an object may change it.voidValueTrackingAnalyzer.recordMayValues(ISymbol symbol, Set<Object> values) Record thatsymbol's value is not known exactly, but is one ofvalues.voidValueTrackingAnalyzer.recordSharing(ISymbol first, ISymbol second) Record thatfirstandsecondmay refer to the same object from here on -alias <- base, or the copy a capture list makes.voidValueTrackingAnalyzer.recordUnknownAssignment(ISymbol symbol) voidValueTrackingAnalyzer.registerModuleConstant(ISymbol symbol, AbstractValue abstractValue) Register a module-level constant (from defines constant blocks).voidValueTrackingAnalyzer.reportWhenSure(ISymbol symbol, Runnable report) Runreport- a finding thatsymbolis UNSET at this point on every pass - once it is SURE.voidConstraintState.set(ISymbol symbol, AbstractValue abstractValue) Set the abstract value for a symbol (mutates this state).voidRecord thatsymboldefinitely holdsvaluehere, REPLACING anything it may have held before — a later write kills an earlier value on this path.voidRecord the full set of values that may reachsymbolhere, REPLACING what came before.LockIdentityInference.tokenForSymbol(ISymbol symbol) Return an identity token for a field, parameter, or capture receiver.voidConstraintState.unmarkFreshInLoop(ISymbol symbol) symbolwas written with something other than a literal: what it holds may be what an earlier pass left in another variable, so it is no longer fresh (seeConstraintState.freshInLoop).LockIdentityInference.unwrapCapture(ISymbol symbol, IScopedSymbol enclosingFunction) LikeLockIdentityInference.tokenForSymbol(ISymbol)but unwraps one level of dynamic-function capture: if the symbol is one ofenclosingFunction's captured variables, resolve the same-named variable in theCaptureScope's enclosing scope and use that outer symbol's identity instead.Method parameters in org.ek9lang.compiler.phase5.flow with type arguments of type ISymbolModifier and TypeMethodDescriptionvoidValueTrackingAnalyzer.recordCallThatMayChange(boolean reachesOutside, Collection<ISymbol> reachedNames) A call that may run the program's own code (not pure, not a concrete built-in) - it may change every object it can reach (D66, Steve 2026-10-21): the receiver, every argument, everything reachable from them and everything that may be the same object. -
Uses of ISymbol in org.ek9lang.compiler.phase5.lockanalysis
Methods in org.ek9lang.compiler.phase5.lockanalysis that return ISymbolModifier and TypeMethodDescriptionCrossThreadEdge.caller()Returns the value of thecallerrecord component.ChainStep.contextFunction()Returns the value of thecontextFunctionrecord component.EnterCallSite.enclosingFunction()Returns the value of theenclosingFunctionrecord component.MutexKeyBody.enclosingFunction()Returns the value of theenclosingFunctionrecord component.FunctionLockSummary.function()Returns the value of thefunctionrecord component.CrossThreadEdge.handler()Returns the value of thehandlerrecord component.MutexKeyBody.keyFunction()Returns the value of thekeyFunctionrecord component.LockIdentityDescriptor.originSymbol()Returns the value of theoriginSymbolrecord component.ChainStep.stepTarget()Returns the value of thestepTargetrecord component.Methods in org.ek9lang.compiler.phase5.lockanalysis that return types with arguments of type ISymbolModifier and TypeMethodDescriptionLockAnalysis.lookupPureGetterReturnFields(String methodFqn) Look up the set of fields a pure-getter method may return.Methods in org.ek9lang.compiler.phase5.lockanalysis with parameters of type ISymbolModifier and TypeMethodDescriptionstatic FunctionLockSummaryConvenience factory producing an empty summary backed by mutable collections.voidLockAnalysis.recordPureGetterReturnField(String methodFqn, ISymbol returnedField) Record that a pure-getter method (by FQN) returns the given field symbol.Constructors in org.ek9lang.compiler.phase5.lockanalysis with parameters of type ISymbolModifierConstructorDescriptionChainStep(StepKind kind, IToken stepLocation, ISymbol contextFunction, ISymbol stepTarget, String contextDescription) Creates an instance of aChainSteprecord class.CrossThreadEdge(ISymbol caller, ISymbol handler, IToken callLocation) Creates an instance of aCrossThreadEdgerecord class.EnterCallSite(String stableId, ISymbol enclosingFunction, IToken callLocation, Set<String> lockIdentityIds, String receiverDisplayForm, EnterKind kind) Creates an instance of aEnterCallSiterecord class.FunctionLockSummary(ISymbol function, List<EnterCallSite> directEnters, List<MutexKeyBody> directKeyBodies, Set<TransitiveEnterRecord> mayEnter) Creates an instance of aFunctionLockSummaryrecord class.LockIdentityDescriptor(String stableId, IdentityOrigin origin, ISymbol originSymbol, IToken originLocation, String displayName) Creates an instance of aLockIdentityDescriptorrecord class.MutexKeyBody(String stableId, ISymbol keyFunction, IToken declarationLocation, ISymbol enclosingFunction, String outerLockIdentityId) Creates an instance of aMutexKeyBodyrecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase7
Fields in org.ek9lang.compiler.phase7 declared as ISymbolMethods in org.ek9lang.compiler.phase7 with parameters of type ISymbolModifier and TypeMethodDescription(package private) booleanScenario2WrapperHelper.containedTypeHasOperator(ISymbol type, String operatorGlyph) Whether the contained (element) type has a REAL binaryoperatorGlyph(==,<>) - its own, a super's or a trait's, never only the degenerateAnyone.protected voidAbstractDfnGenerator.createInitOperation(IRConstruct construct, IScope aggregateSymbol, ISymbol superType) Create _c_init operation for class/static initialization.(package private) StringScenario2WrapperHelper.emitVirtualCall(List<IRInstr> instructions, String targetVar, String targetType, ISymbol targetTypeSymbol, String methodName, List<String> paramTypes, String returnType, List<String> argNames, DebugInfo debugInfo) A virtual method call whose result (+1) the caller states the owner of itself - it casts it (Scenario2WrapperHelper.ownedCast(List, String, String, String, DebugInfo)) or moves it.(package private) StringScenario2WrapperHelper.generateConstructorCall(List<IRInstr> instructions, ISymbol type, String typeName, List<String> paramTypes, List<String> argNames, DebugInfo debugInfo) A constructor call whose new value (+1) the caller states the owner of itself (it moves it).(package private) StringScenario2WrapperHelper.generateConstructorCallInstructions(List<IRInstr> instructions, ISymbol type, String typeName, List<String> paramTypes, List<String> argNames, String scopeId, DebugInfo debugInfo) Generate a constructor call on a type: the new value (+1) is owned by the scope, dropped at its exit.(package private) StringScenario2WrapperHelper.generateProducerVirtualCall(List<IRInstr> instructions, String targetVar, String targetType, ISymbol targetTypeSymbol, String methodName, List<String> paramTypes, String returnType, List<String> argNames, String scopeId, DebugInfo debugInfo) Generate a virtual method call whose result is a +1 PRODUCER — a value-method or operator that hands back a freshly-owned object (e.g.(package private) booleanScenario2WrapperHelper.hasPublicNoArgConstructor(ISymbol type) Whethertype()can be called here to make an unset value of it: a concrete aggregate with a public no-argument constructor.(package private) booleanIs this the built-in Any (by symbol identity, never by name)?(package private) booleanScenario2WrapperHelper.isBareConceptualOnTemplate(ISymbol templateDeclaredType) True when the generic template declared this position as a bare conceptual type parameter (T), as opposed to a parameterisation such as Iterator of T or Comparator of T.(package private) booleanScenario2WrapperHelper.isDelegatingParameterisedType(ISymbol type) THE shared check for "is this a parameterised BUILT-IN generic that carries a rawdelegate" — one whose value must be UNWRAPPED via.delegateon store and RE-WRAPPED on return / at a callback edge.(package private) booleanScenario2WrapperHelper.isFunctionParameterisation(ISymbol type) THE shared check for "is this type a parameterisation of a generic FUNCTION" (e.g.(package private) voidScenario2WrapperHelper.returnVirtualCall(List<IRInstr> instructions, String targetVar, String targetType, ISymbol targetTypeSymbol, String methodName, List<String> paramTypes, String returnType, List<String> argNames, String scopeId, DebugInfo debugInfo) A virtual method call whose result (+1) is moved straight into the return variable: the method hands its caller exactly the count the callee handed it. -
Uses of ISymbol in org.ek9lang.compiler.phase7.calls
Methods in org.ek9lang.compiler.phase7.calls that return ISymbolModifier and TypeMethodDescriptionstatic ISymbolCallTargetResolution.definingType(ISymbol resolvedMethod, ISymbol staticType) The type that DECLARES the resolved method (its enclosing scope) - i.e.CallContext.returnType()Returns the value of thereturnTyperecord component.CallContext.targetType()Returns the value of thetargetTyperecord component.Methods in org.ek9lang.compiler.phase7.calls that return types with arguments of type ISymbolModifier and TypeMethodDescriptionCallContext.argumentTypes()Returns the value of theargumentTypesrecord component.OperatorTargetMethodResolver.declaredParameterTypes(ISymbol targetType, String methodName, List<ISymbol> argumentTypes) THE declared parameter types of the operator/method that actually serves a call - read off the RESOLVED member, never copied from the arguments.OperatorTargetMethodResolver.declaredParameterTypes(ISymbol targetType, String methodName, List<ISymbol> argumentTypes, UnaryOperator<ISymbol> typeArgumentOf) OperatorTargetMethodResolver.declaredParameterTypes(ISymbol, String, List)inside a monomorphisation: the parameter types the member that SERVES the call declares (OperatorTargetMethodResolver.servingMember(ISymbol, String, List, UnaryOperator)), so a call a generic body makes on its bareTnames the type argument's operator, never the template'sT._cmp(T)(D53).Methods in org.ek9lang.compiler.phase7.calls with parameters of type ISymbolModifier and TypeMethodDescriptionCreate CallDetails for _isSet() call on the specified operand.OperatorTargetMethodResolver.apply(ISymbol targetType, String methodName, List<ISymbol> argumentTypes) Resolve a method/operator on the target type, returning the resolved symbol itself (not just type names), so callers can read its defining type, return type and metadata rather than re-deriving them.Metadata for a zero-argument call (operand._isSet(),resource._close()).ResolvemethodName(argumentTypes)ontargetTypeand read the metadata off the resolved callee.OperatorTargetMethodResolver.declaredParameterTypes(ISymbol targetType, String methodName, List<ISymbol> argumentTypes) THE declared parameter types of the operator/method that actually serves a call - read off the RESOLVED member, never copied from the arguments.OperatorTargetMethodResolver.declaredParameterTypes(ISymbol targetType, String methodName, List<ISymbol> argumentTypes, UnaryOperator<ISymbol> typeArgumentOf) OperatorTargetMethodResolver.declaredParameterTypes(ISymbol, String, List)inside a monomorphisation: the parameter types the member that SERVES the call declares (OperatorTargetMethodResolver.servingMember(ISymbol, String, List, UnaryOperator)), so a call a generic body makes on its bareTnames the type argument's operator, never the template'sT._cmp(T)(D53).static ISymbolCallTargetResolution.definingType(ISymbol resolvedMethod, ISymbol staticType) The type that DECLARES the resolved method (its enclosing scope) - i.e.static CallContextCallContext.forBinaryOperation(ISymbol leftType, ISymbol rightType, ISymbol returnType, String methodName, String leftVariable, String rightVariable, String scopeId) Create context for binary operation: left.method(right)static CallContextCallContext.forBinaryOperationWithContext(ISymbol leftType, ISymbol rightType, ISymbol returnType, String methodName, String leftVariable, String rightVariable, String scopeId, org.antlr.v4.runtime.ParserRuleContext parseContext) Create context for binary operation with parseContext: left.method(right) Used when Phase 3 has already resolved the method (e.g., switch case comparisons)SynthesisedCallMetaData.forConstructor(ISymbol targetType, List<ISymbol> argumentTypes) Metadata for a CONSTRUCTOR call on the given type - the default constructor whenargumentTypesis empty, otherwise the matching overload (e.g.static CallContextCallContext.forFunctionCall(ISymbol targetType, List<ISymbol> argumentTypes, String methodName, String targetVariable, List<String> argumentVariables, String scopeId, EK9Parser.CallContext parseContext) Create context for function call: function(args...)static CallContextCallContext.forPrimaryReferenceOperation(ISymbol leftType, ISymbol rightType, ISymbol returnType, String methodName, String leftVariable, String rightVariable, String scopeId, boolean isSuperReceiver) Create context for a method-based operator applied to an explicitthisorsuperprimary reference -super :=: source,super :~: source, and friends.SynthesisedCallMetaData.forSynthesisedCallee(ISymbol target, String methodName, List<ISymbol> argumentTypes) Metadata for a callee the COMPILER itself synthesised, where a symbol may legitimately not exist - returns null, meaning no metadata clause, when there is nothing measured to report.SynthesisedCallMetaData.forSynthesisedConstructor(ISymbol targetType, List<ISymbol> argumentTypes) A compiler-synthesised CONSTRUCTOR - seeSynthesisedCallMetaData.forSynthesisedCallee(ISymbol, String, List).static CallContextCallContext.forUnaryOperation(ISymbol targetType, String methodName, String targetVariable, ISymbol returnType, String scopeId) Create context for unary operation: target.method()static CallContextCallContext.forUnaryOperation(ISymbol targetType, String methodName, String targetVariable, ISymbol returnType, String scopeId, boolean isSuperReceiver) Context for a unary operator applied to an explicitsuperprimary reference -$super,#?super,$$super.static booleanCallTargetResolution.isOpenAggregate(ISymbol type) Whether an aggregate type is open for extension (can have subclasses).static booleanCallTargetResolution.isVirtualCall(ISymbol resolvedMethod, ISymbol targetType) Whether the call needs virtual (vtable) dispatch:falsefor constructors, private methods (cannot be overridden), and targets not open for extension (effectively final).static booleanCallTargetResolution.isVirtualForSynthesisedCallee(ISymbol targetType) The dispatch flag for a call the compiler SYNTHESISED, where the callee type may not have been threaded through.static CloseCallTarget.TargetThe owner type name and dispatch flags for closing a value whose static TYPE is known.OperatorTargetMethodResolver.servingMember(ISymbol targetType, String methodName, List<ISymbol> argumentTypes, UnaryOperator<ISymbol> typeArgumentOf) OperatorTargetMethodResolver.apply(ISymbol, String, List)followed byOperatorTargetMethodResolver.onTypeArgument(ScopedSymbol, UnaryOperator): the member that serves the call, read off the type argument when the call is resolved on a generic's bareTinside a monomorphisation.Method parameters in org.ek9lang.compiler.phase7.calls with type arguments of type ISymbolModifier and TypeMethodDescriptionOperatorTargetMethodResolver.apply(ISymbol targetType, String methodName, List<ISymbol> argumentTypes) Resolve a method/operator on the target type, returning the resolved symbol itself (not just type names), so callers can read its defining type, return type and metadata rather than re-deriving them.ResolvemethodName(argumentTypes)ontargetTypeand read the metadata off the resolved callee.OperatorTargetMethodResolver.declaredParameterTypes(ISymbol targetType, String methodName, List<ISymbol> argumentTypes) THE declared parameter types of the operator/method that actually serves a call - read off the RESOLVED member, never copied from the arguments.OperatorTargetMethodResolver.declaredParameterTypes(ISymbol targetType, String methodName, List<ISymbol> argumentTypes, UnaryOperator<ISymbol> typeArgumentOf) OperatorTargetMethodResolver.declaredParameterTypes(ISymbol, String, List)inside a monomorphisation: the parameter types the member that SERVES the call declares (OperatorTargetMethodResolver.servingMember(ISymbol, String, List, UnaryOperator)), so a call a generic body makes on its bareTnames the type argument's operator, never the template'sT._cmp(T)(D53).OperatorTargetMethodResolver.declaredParameterTypes(ISymbol targetType, String methodName, List<ISymbol> argumentTypes, UnaryOperator<ISymbol> typeArgumentOf) OperatorTargetMethodResolver.declaredParameterTypes(ISymbol, String, List)inside a monomorphisation: the parameter types the member that SERVES the call declares (OperatorTargetMethodResolver.servingMember(ISymbol, String, List, UnaryOperator)), so a call a generic body makes on its bareTnames the type argument's operator, never the template'sT._cmp(T)(D53).SynthesisedCallMetaData.forConstructor(ISymbol targetType, List<ISymbol> argumentTypes) Metadata for a CONSTRUCTOR call on the given type - the default constructor whenargumentTypesis empty, otherwise the matching overload (e.g.static CallContextCallContext.forFunctionCall(ISymbol targetType, List<ISymbol> argumentTypes, String methodName, String targetVariable, List<String> argumentVariables, String scopeId, EK9Parser.CallContext parseContext) Create context for function call: function(args...)SynthesisedCallMetaData.forSynthesisedCallee(ISymbol target, String methodName, List<ISymbol> argumentTypes) Metadata for a callee the COMPILER itself synthesised, where a symbol may legitimately not exist - returns null, meaning no metadata clause, when there is nothing measured to report.SynthesisedCallMetaData.forSynthesisedConstructor(ISymbol targetType, List<ISymbol> argumentTypes) A compiler-synthesised CONSTRUCTOR - seeSynthesisedCallMetaData.forSynthesisedCallee(ISymbol, String, List).OperatorTargetMethodResolver.onTypeArgument(ScopedSymbol templateMember, UnaryOperator<ISymbol> typeArgumentOf) THE member that serves, inside a monomorphisation, a call phase 3 resolved on a generic's bareT.OperatorTargetMethodResolver.servingMember(ISymbol targetType, String methodName, List<ISymbol> argumentTypes, UnaryOperator<ISymbol> typeArgumentOf) OperatorTargetMethodResolver.apply(ISymbol, String, List)followed byOperatorTargetMethodResolver.onTypeArgument(ScopedSymbol, UnaryOperator): the member that serves the call, read off the type argument when the call is resolved on a generic's bareTinside a monomorphisation.OperatorTargetMethodResolver.servingMember(ISymbol targetType, String methodName, List<ISymbol> argumentTypes, UnaryOperator<ISymbol> typeArgumentOf) OperatorTargetMethodResolver.apply(ISymbol, String, List)followed byOperatorTargetMethodResolver.onTypeArgument(ScopedSymbol, UnaryOperator): the member that serves the call, read off the type argument when the call is resolved on a generic's bareTinside a monomorphisation.Constructors in org.ek9lang.compiler.phase7.calls with parameters of type ISymbolModifierConstructorDescriptionCallContext(ISymbol targetType, String targetVariable, String methodName, List<ISymbol> argumentTypes, List<String> argumentVariables, String scopeId, ISymbol returnType, org.antlr.v4.runtime.ParserRuleContext parseContext) Every call site that is not an explicitsuperreceiver - which is all of them but one.CallContext(ISymbol targetType, String targetVariable, String methodName, List<ISymbol> argumentTypes, List<String> argumentVariables, String scopeId, ISymbol returnType, org.antlr.v4.runtime.ParserRuleContext parseContext, boolean explicitSuperReceiver) Creates an instance of aCallContextrecord class.Constructor parameters in org.ek9lang.compiler.phase7.calls with type arguments of type ISymbolModifierConstructorDescriptionCallContext(ISymbol targetType, String targetVariable, String methodName, List<ISymbol> argumentTypes, List<String> argumentVariables, String scopeId, ISymbol returnType, org.antlr.v4.runtime.ParserRuleContext parseContext) Every call site that is not an explicitsuperreceiver - which is all of them but one.CallContext(ISymbol targetType, String targetVariable, String methodName, List<ISymbol> argumentTypes, List<String> argumentVariables, String scopeId, ISymbol returnType, org.antlr.v4.runtime.ParserRuleContext parseContext, boolean explicitSuperReceiver) Creates an instance of aCallContextrecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase7.generation
Methods in org.ek9lang.compiler.phase7.generation that return ISymbolModifier and TypeMethodDescriptionIRGenerationContext.resolveType(ISymbol typeSymbol) The SYMBOL form ofIRGenerationContext.resolveTypeName(ISymbol)- the concrete type a (possibly conceptual) type resolves to under the current generic substitution.Methods in org.ek9lang.compiler.phase7.generation that return types with arguments of type ISymbolModifier and TypeMethodDescriptionIRGenerationContext.monomorphisedDynamicConstruct(ISymbol template) The copy already made of a dynamic construct for the monomorphisation in progress, if any.IRGenerationContext.resolveTypeByIrName(String fullyQualifiedName) THE recovery of a type symbol from the IR type NAME a phase-7 site already emitted - only for where the name is all that survived (aCallInstrcarries its return type as a name).Methods in org.ek9lang.compiler.phase7.generation with parameters of type ISymbolModifier and TypeMethodDescriptionvoidIRInstructionBuilder.callSuperMethod(ISymbol superType, String methodName) Create a method call to super class constructor or method.voidIRInstructionBuilder.callSuperStaticMethod(ISymbol superType, String methodName) Create a static call to super class initialization method.voidIRInstructionBuilder.callThisMethod(ISymbol targetType, String methodName, String targetVariable) Create a method call on 'this' object.voidIRInstructionBuilder.callThisMethod(ISymbol targetType, String methodName, String targetVariable, DebugInfo debugInfo) Create a method call on 'this' object with specific debug info.CoverageProbePlacer.createInputClassProbe(ISymbol operationSymbol, DebugInfo debugInfo, String scopeId, IRGenerationContext stackContext) Create an input-class probe for a public construct's entry (the dynamic numerator, §5).voidIRInstructionBuilder.initializeEnumConstant(ISymbol enumType, String constantName, int ordinal) Initialize an enum constant static field.IRGenerationContext.monomorphisedDynamicConstruct(ISymbol template) The copy already made of a dynamic construct for the monomorphisation in progress, if any.voidIRGenerationContext.recordMonomorphisedDynamicConstruct(ISymbol template, ISymbol monomorph) Record the copy made of a dynamic construct for the monomorphisation in progress; from now on every reference to the construct (its own body, its constructor call, a nested construct) resolves to the copy.IRGenerationContext.resolveType(ISymbol typeSymbol) The SYMBOL form ofIRGenerationContext.resolveTypeName(ISymbol)- the concrete type a (possibly conceptual) type resolves to under the current generic substitution.IRGenerationContext.resolveTypeName(ISymbol typeSymbol) THE "what concrete type name does this (possibly conceptual) type have inside the current Scenario-3 monomorphisation?" step - use this, and never re-derive a variant. -
Uses of ISymbol in org.ek9lang.compiler.phase7.generator
Classes in org.ek9lang.compiler.phase7.generator that implement interfaces with type arguments of type ISymbolMethods in org.ek9lang.compiler.phase7.generator with type parameters of type ISymbolModifier and TypeMethodDescription<T extends ICanCaptureVariables & ISymbol>
List<IRInstr> DynamicConstructEmitter.emit(T dynamicSymbol, Function<IRGenerationContext, IRConstruct> generate, EK9Parser.DynamicVariableCaptureContext captureCtx, DebugInfo debugInfo, String resultVariable, Function<List<ISymbol>, CallMetaDataDetails> metaData) Emit the dynamic construct and the instructions that construct it.Methods in org.ek9lang.compiler.phase7.generator that return ISymbolModifier and TypeMethodDescriptionRangeIterationHelper.InitializationData.byType()Returns the value of thebyTyperecord component.protected ISymbolThe CONCRETE form of a type read straight off a stream symbol (aStreamCallSymbol's produces or consumes type) - under the current Scenario-3 substitution, so inside a monomorphized generic body a templateTorList of Tbecomes the parameterisation's own type.RangeIterationHelper.InitializationData.constrainedBase()Returns the value of theconstrainedBaserecord component.TerminalSetup.consumesType()Returns the value of theconsumesTyperecord component.(package private) ISymbolRangeIterationHelper.InitializationData.counterType()The type the counter, the end copy and the direction probe are held in: the base of a constrained range type, else the range type itself.(package private) ISymbolStreamPipelineMachinery.edgeConsumes(EK9Parser.StreamPartContext stage) The phase-3-resolved IN-edge (consumes) type of a stream stage, ornullif unresolved.(package private) ISymbolStreamPipelineMachinery.edgeProduces(EK9Parser.StreamPartContext stage) The phase-3-resolved OUT-edge (produces) type of a stream stage, ornullif the stage has no recordedStreamCallSymbolor no produced type set.(package private) ISymbolStreamPipelineMachinery.effectivePostSortElementType(SortSetup sortSetup, List<EK9Parser.StreamPartContext> allStages, ISymbol sourceType) The element type the POST-sort pipeline (and terminal) observe.StreamSource.elementType()Returns the value of theelementTyperecord component.protected ISymbolAbstractGenerator.extractReturnType(org.antlr.v4.runtime.tree.ParseTree ctx, ISymbol fallbackSymbol) Extract return type from a CallSymbol's resolved method.(package private) ISymbolPipelineVarPlan.finalType()protected ISymbolAbstractGenerator.getRecordedSymbolOrException(org.antlr.v4.runtime.tree.ParseTree node) Safely retrieve the recorded symbol for a parse tree node with automatic validation.ReturningParamProcessor.getReturnSymbol(EK9Parser.ReturningParamContext ctx) Extract the return variable symbol from a returningParam context.(package private) ISymbolPipelineVarPlan.inType(int stageIndex) (package private) ISymbolGuardedConditionEvaluator.preFlowTargetSymbol(EK9Parser.PreFlowStatementContext preFlowStmt) THE recorded symbol of the variable a pre-flow declares or assigns (FLOW-1).LoopGuardHelper.preFlowTargetSymbol(EK9Parser.PreFlowStatementContext preFlowStmt) THE recorded symbol of the variable a pre-flow declares or assigns (FLOW-1), for the constructs that read it themselves (a switch's discriminant).ConstructorCallProcessor.processChainStart(CallSymbol callSymbol, EK9Parser.CallContext callContext, String resultVariable, List<IRInstr> instructions) THE constructor call that STARTS an object-access chain -String(move).upperCase(),Holder(3).amount(),SomeText("en").message().RangeIterationHelper.InitializationData.rangeType()Returns the value of therangeTyperecord component.ResourceCloser.Closing.staticType()Returns the value of thestaticTyperecord component.ObjectAccessInstrGenerator.ChainStepResult.typeSymbol()Returns the value of thetypeSymbolrecord component.SwitchStatementGenerator.EvalVariable.typeSymbol()Returns the value of thetypeSymbolrecord component.Methods in org.ek9lang.compiler.phase7.generator that return types with arguments of type ISymbolModifier and TypeMethodDescriptionPipelineVarPlan.typeAt()Returns the value of thetypeAtrecord component.Methods in org.ek9lang.compiler.phase7.generator with parameters of type ISymbolModifier and TypeMethodDescriptionAssignExpressionToSymbol.apply(ISymbol lhsSymbol, EK9Parser.AssignmentExpressionContext ctx) (package private) voidStreamEmissionEngine.applyAsyncBufferSortEmit(String asyncExecutorVar, ISymbol asyncProducesType, List<EK9Parser.StreamPartContext> preSortStages, EK9Parser.StreamPartContext sortStage, List<EK9Parser.StreamPartContext> postSortStages, TerminalSetup terminalSetup, DebugInfo debugInfo, List<IRInstr> instructions) Async-specific entry toStreamEmissionEngine.bufferSortEmit(String, String, String, String, CallDetails, ISymbol, List, EK9Parser.StreamPartContext, List, TerminalSetup, DebugInfo, List): drains the async executor (hasNext/next) and closes it after emission.(package private) voidStreamEmissionEngine.applyGroupingStage(StreamSource source, ISymbol consumedElementType, BucketTracker tracker, StageGroup preStageGroup, StageGroup postStageGroup, BoundaryConditionBuilder boundaryBuilder, TerminalSetup terminalSetup, List<IRInstr> instructions, DebugInfo debugInfo) Shared drain+emit engine for the consecutive-grouping stream stages (GROUP, SPLIT).(package private) SortSetupStreamEmissionEngine.applySortToCollection(List<EK9Parser.StreamPartContext> stages, IteratorSetup iteratorSetup, ISymbol elementType, IAggregateSymbol collectionType, DebugInfo debugInfo, List<IRInstr> instructions) (package private) voidStreamEmissionEngine.applyWindowedAsyncToCollection(List<EK9Parser.StreamPartContext> stages, int asyncIndex, List<EK9Parser.StreamPartContext> preAsyncStages, List<StageState> preAsyncStageStates, IteratorSetup iteratorSetup, ISymbol elementType, ISymbol asyncProducesType, String asyncExecutorVar, TerminalSetup terminalSetup, DebugInfo debugInfo, List<IRInstr> instructions, List<StageState> postAsyncStates) Step C — the interleaved WINDOWED async driver for an unbounded source (the telemetry casecat udp | async | filter | head N | collect).(package private) voidStreamEmissionEngine.bufferSortEmit(String sourceVar, String sourceTypeName, String hasNextMethod, String nextMethod, CallDetails closeCall, ISymbol bucketType, List<EK9Parser.StreamPartContext> preSortStages, EK9Parser.StreamPartContext sortStage, List<EK9Parser.StreamPartContext> postSortStages, TerminalSetup terminalSetup, DebugInfo debugInfo, List<IRInstr> instructions) (package private) StageWrapResultStreamEmissionEngine.buildAsyncSubmitAction(String submitItemVar, ISymbol elementType, String asyncExecutorVar, String inFlightVar, String oneVar, ISymbol integerType, List<EK9Parser.StreamPartContext> preAsyncStages, List<StageState> preAsyncStageStates, org.ek9lang.compiler.phase7.generator.StreamEmissionEngine.AsyncCap cap, DebugInfo debugInfo) The per-item SUBMIT action shared by the windowed prime loop and the drain refill:executor.submit(item); inFlight++, wrapped in the pre-ASYNC stages (filter/map/etc.).(package private) ConditionAndPostLoopStreamPipelineMachinery.buildStreamLoop(IteratorSetup iteratorSetup, List<StageState> demandBounds, String itemVar, ISymbol itemType, boolean rawIterator, EK9Parser.StreamCatContext catCtx, StreamLoopSink sink, DebugInfo debugInfo) The unified iterator-driven stream while-loop skeleton: condition scope (hasNext(), with the demand bounds - the segment's heads, or the async window - folded in ahead of it byStreamDemand) + body scope (binditerator.next()then theStreamLoopSinkbody-tail) + theConditionAndPostLoopthe caller feeds tocreateWhileLoop.StreamEmissionEngine.buildWindowRefill(IteratorSetup iteratorSetup, boolean isRawIterator, String submitItemVar, ISymbol elementType, String asyncExecutorVar, String inFlightVar, String oneVar, ISymbol integerType, List<EK9Parser.StreamPartContext> preAsyncStages, List<StageState> preAsyncStageStates, String moreVar, org.ek9lang.compiler.phase7.generator.StreamEmissionEngine.AsyncCap cap, DebugInfo debugInfo) The windowed drain's REFILL step:if (more AND source.hasNext()) { bind submitItem = next(); [pre-async stages]; submit(submitItem); inFlight++ }.protected ISymbolThe CONCRETE form of a type read straight off a stream symbol (aStreamCallSymbol's produces or consumes type) - under the current Scenario-3 substitution, so inside a monomorphized generic body a templateTorList of Tbecomes the parameterisation's own type.(package private) voidStreamEmissionEngine.continueOverIterator(List<EK9Parser.StreamPartContext> stages, IteratorSetup sourceIter, ISymbol sourceElementType, TerminalSetup terminalSetup, DebugInfo debugInfo, List<IRInstr> instructions, boolean sourceUnbounded) Recursive pipeline TAIL driver: emit a stream given assourceIterthroughstagesto the terminal, with NO composition limit.(package private) IteratorSetupStreamPipelineMachinery.drainSourceToIterator(String sourceVar, String sourceTypeName, String hasNextMethod, String nextMethod, CallDetails closeCall, ISymbol bucketType, boolean keepsUnset, DebugInfo debugInfo, List<IRInstr> instructions) As above;keepsUnsetappends with+=so an UNSET element survives the buffer - a stage never drops one (StreamStages.keepsUnsetElements).(package private) IteratorSetupStreamPipelineMachinery.drainSourceToIterator(String sourceVar, String sourceTypeName, String hasNextMethod, String nextMethod, CallDetails closeCall, ISymbol bucketType, DebugInfo debugInfo, List<IRInstr> instructions) MATERIALISE a buffering value source (a GROUP/SPLIT tracker's hasNextGroup/nextGroup, or an async executor's hasNext/next) into a fresh raw EK9_LIST buffer and return an IteratorSetup over it.(package private) ISymbolStreamPipelineMachinery.effectivePostSortElementType(SortSetup sortSetup, List<EK9Parser.StreamPartContext> allStages, ISymbol sourceType) The element type the POST-sort pipeline (and terminal) observe.protected StringAbstractStreamStageGenerator.emitStageFunctionOperand(List<IRInstr> target, EK9Parser.PipelinePartContext pipelinePartCtx, ISymbol operandSymbol, FunctionSymbol functionType, DebugInfo debugInfo) THE shared emission of a stream stage's function operand - use this, do not re-derive it.GuardedConditionEvaluator.evaluateGuardOnlyForVariable(ISymbol guardSymbol, String variableName, VariableDetails conditionResult, String scopeId, DebugInfo debugInfo) Evaluates guard only for a pre-resolved variable (used by WHILE/DO-WHILE for entry check).protected ISymbolAbstractGenerator.extractReturnType(org.antlr.v4.runtime.tree.ParseTree ctx, ISymbol fallbackSymbol) Extract return type from a CallSymbol's resolved method.static FunctionMetricsResolve every phase-5 metric for one operation.static StringResolve the display name for a function/method symbol.ControlFlowChainGenerator.generateAssignIfUnset(ISymbol lhsSymbol, List<IRInstr> assignmentEvaluation, String assignmentResult, DebugInfo debugInfo) Generate SWITCH_CHAIN_BLOCK for assign-if-unset (:=?).ControlFlowChainGenerator.generateAssignIfUnsetTestForTemp(String variableName, ISymbol variableSymbol, boolean isTraitCall, String resultVariable, DebugInfo debugInfo) The question operator on a temp that holds the current value of a:=?target: a null there is the never-written slot:=?exists to write, so it is NOT a strict-absent observation (StrictAbsent).(package private) ConditionAndPostLoopStreamEmissionEngine.generateConditionAndBody(EK9Parser.StreamStatementContext ctx, EK9Parser.StreamCatContext catCtx, List<EK9Parser.StreamPartContext> stages, IteratorSetup iteratorSetup, String pipelineItemVar, ISymbol elementType, TerminalSetup terminalSetup, DebugInfo debugInfo, List<StageState> stageStates, boolean rawIterator, String pipelineScopeId, List<IRInstr> preLoopInstructions) Generate condition (hasNext) and body (next + stages + terminal pipe).AbstractStreamStageGenerator.generateCounterDelta(String counterVar, String oneVar, String op, ISymbol integerType, DebugInfo debugInfo) ReassigncounterVar = counterVar <op> oneVar("_add"to increment,"_sub"to decrement) via the RELEASE/STORE/RETAIN reassignment pattern.StreamPipelineMachinery.generateDynamicStageLimit(EK9Parser.StreamPartContext stageCtx, String limitVar, ISymbol integerType, String scopeId, DebugInfo debugInfo) Generate IR to evaluate a dynamic stage operand (function reference or call) and store the Integer result in the given limit variable.StreamPipelineMachinery.generatePipelineItemBinding(String iteratorVar, IAggregateSymbol iteratorType, String pipelineItemVar, ISymbol elementType, DebugInfo debugInfo, boolean rawIterator) Generate: pipelineItem = iterator.next() Follows ForInGenerator.generateLoopVariableBinding() pattern.ControlFlowChainGenerator.generateQuestionOperatorForTemp(String variableName, ISymbol variableSymbol, boolean isTraitCall, String resultVariable, DebugInfo debugInfo) Generate SWITCH_CHAIN_BLOCK for Question operator applied to a temp variable.ControlFlowChainGenerator.generateQuestionOperatorForVariable(ISymbol variableSymbol, String resultVariable, DebugInfo debugInfo) Generate SWITCH_CHAIN_BLOCK for Question operator applied to a variable.AbstractStreamStageGenerator.generateTerminalPipe(TerminalSetup terminalSetup, String pipelineItemVar, ISymbol elementType, DebugInfo debugInfo) THE shared "pipe a value into a sink" step:sink._pipe(value)- used by the pipeline terminal and bytee's side terminal.static StringCoverageDisplayName.identityForSymbol(ISymbol operationSymbol) THE join key for a construct — the display name minus its one cosmetic exception.booleanStatementOwnedCloseables.involvesCloseables(List<IRInstr> evaluation, ISymbol resultType) True whenStatementOwnedCloseables.ownedEvaluation(ParserRuleContext, List, String, ISymbol)could do anything to this evaluation: its value is closeable, or it makes a closeable temporary phase 5 marked as owned, or it holds one deferred to it.StatementOwnedCloseables.ownedEvaluation(org.antlr.v4.runtime.ParserRuleContext ctx, List<IRInstr> evaluation, String resultVariable, ISymbol resultType) An evaluation nested inside another instruction (a condition, a control, an operand) that hands ONE value on: the evaluation wrapped, like a statement, in THE owned region that closes the closeable temporaries it made - and the variable that now holds its value after the region.(package private) PipelineVarPlanStreamPipelineMachinery.planPipelineVars(List<EK9Parser.StreamPartContext> stages, String sourceVar, ISymbol sourceType, String scopeId, DebugInfo debugInfo, List<IRInstr> declarationsOut) Compute the per-boundary item-variable plan for an in-loop stage list, allocating a fresh variable (declared at the produced type) only where a stage changes the element type.(package private) static PipelineVarPlanstatic StringCoverageDisplayName.sourceQualifiedName(ISymbol operationSymbol) THE fully-qualified name to use as a coverage/profiling IDENTITY for a callable — stable across every parameterisation of a generic.(package private) StageWrapResultStreamEmissionEngine.terminalBodyTail(List<EK9Parser.StreamPartContext> stages, String itemVar, ISymbol itemType, TerminalSetup terminalSetup, String scopeId, List<IRInstr> preLoopInstructions, List<StageState> stageStates, DebugInfo debugInfo) The shared stream body-tail, used identically by the cat path (theStreamPipelineMachinery.buildStreamLoop(IteratorSetup, List, String, ISymbol, boolean, EK9Parser.StreamCatContext, StreamLoopSink, DebugInfo)sink) and the for-range streaming body: plan the per-boundary item vars (declared pre-loop inpreLoopInstructionsso a post-loop consumer like JOIN's emit references a dominating var), pipe the final-typed item to the terminal, and wrap the result in the intermediate stages.static ResourceCloser.ClosingThe super class's close, called NON-virtually on this object (super._close()): the last step of a generated close chain.FilterRejectStageWrapper.wrap(StageWrapParams params, String pipelineItemVar, ISymbol elementType) StreamElementStageWrapper.wrap(StageWrapParams params, String pipelineItemVar, ISymbol elementType) WrapinnerBodyin this stage's gate or side effect.TeeStageWrapper.wrap(StageWrapParams params, String pipelineItemVar, ISymbol elementType, StageState teeState) WrapinnerBody: pipe the item (or its mapped value) to the side target, then run the inner body.UniqStageWrapper.wrap(StageWrapParams params, String pipelineItemVar, ISymbol elementType, StageState stageState) (package private) StageWrapResultStreamStageDispatcher.wrapWithStages(List<EK9Parser.StreamPartContext> stages, Supplier<List<IRInstr>> innerBody, String pipelineItemVar, ISymbol elementType, DebugInfo debugInfo, List<StageState> stageStates) Wrap an innermost body with intermediate pipeline stages in reverse order.(package private) StageWrapResultStreamStageDispatcher.wrapWithStages(List<EK9Parser.StreamPartContext> stages, Supplier<List<IRInstr>> innerBody, String pipelineItemVar, ISymbol elementType, DebugInfo debugInfo, List<StageState> stageStates, String asyncExecutorVar) Wrap inner body instructions with intermediate pipeline stages in reverse order.(package private) StageWrapResultStreamStageDispatcher.wrapWithStages(List<EK9Parser.StreamPartContext> stages, Supplier<List<IRInstr>> innerBody, String pipelineItemVar, ISymbol elementType, DebugInfo debugInfo, List<StageState> stageStates, String asyncExecutorVar, PipelineVarPlan plan) Core stage-wrapping with an explicit per-boundaryPipelineVarPlan.(package private) StageWrapResultStreamStageDispatcher.wrapWithStages(List<EK9Parser.StreamPartContext> stages, Supplier<List<IRInstr>> innerBody, String pipelineItemVar, ISymbol elementType, DebugInfo debugInfo, List<StageState> stageStates, String asyncExecutorVar, PipelineVarPlan plan, String doneFlagVar) Core stage-wrapping, additionally threading adoneFlagVarinto a HEAD stage's else-branch.Method parameters in org.ek9lang.compiler.phase7.generator with type arguments of type ISymbolModifier and TypeMethodDescriptionprotected CallDetailsAbstractStreamStageGenerator.streamFunctionCall(FunctionSymbol fn, String funcInstanceVar, List<ISymbol> flowingTypes, List<String> argVars, String returnTypeName, DebugInfo debugInfo, List<IRInstr> setupInstructions) THE shared builder for a stream stage-function_callinvocation - used by every stage that invokes a resolved function on the flowing element(s): filter/reject and split predicates, map and tee mappers, uniq and group key-functions, and the join fold.Constructors in org.ek9lang.compiler.phase7.generator with parameters of type ISymbolModifierConstructorDescription(package private)ChainStepResult(String tempName, ISymbol typeSymbol, boolean isVoid, boolean isExplicitTraitTypeRef) Creates an instance of aChainStepResultrecord class.A value already held in a variable.Closing(List<IRInstr> load, String variable, ISymbol staticType, String staticTypeName, DebugInfo debugInfo) A value brought into a variable byload(a property's LOAD_FIELD).Closing(List<IRInstr> load, String variable, ISymbol staticType, String staticTypeName, DebugInfo debugInfo, boolean viaSuper) Creates an instance of aClosingrecord class.EvalVariable(String name, String type, ISymbol typeSymbol) Creates an instance of aEvalVariablerecord class.(package private)InitializationData(List<IRInstr> instructions, String endTemp, String byTemp, String directionTemp, String currentTemp, ISymbol rangeType, ISymbol byType, ISymbol constrainedBase, String startTemp, boolean progressChecked) Creates an instance of aInitializationDatarecord class.(package private)StreamSource(IteratorSetup iteratorSetup, ISymbol elementType, boolean sourceUnbounded) Creates an instance of aStreamSourcerecord class.(package private)TerminalSetup(String variable, IAggregateSymbol type, MethodSymbol resolvedPipeMethod, ISymbol consumesType) Creates an instance of aTerminalSetuprecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase7.support
Classes in org.ek9lang.compiler.phase7.support that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescriptionclassCreates the appropriate Field object for the symbol and adds it to the construct.final classGet the name of the variable suitable for use in the IR.Methods in org.ek9lang.compiler.phase7.support that return ISymbolModifier and TypeMethodDescriptionComparisonParams.booleanType()Returns the value of thebooleanTyperecord component.DirectionCheckParams.booleanType()Returns the value of thebooleanTyperecord component.IncrementParams.counterType()Returns the value of thecounterTyperecord component.PromotionCallGenerator.getPromotedType(ISymbol sourceType) Get the type that results from promoting the given type using #^.DirectionCheckParams.integerType()Returns the value of theintegerTyperecord component.BinaryOperatorParams.leftType()Returns the value of theleftTyperecord component.ComparisonParams.leftType()Returns the value of theleftTyperecord component.AssignIfUnsetDetails.lhsSymbol()Returns the value of thelhsSymbolrecord component.LiteralProcessingDetails.literalSymbol()Returns the value of theliteralSymbolrecord component.LiteralParams.literalType()Returns the value of theliteralTyperecord component.UnaryOperatorParams.operandType()Returns the value of theoperandTyperecord component.BinaryOperatorParams.resultType()Returns the value of theresultTyperecord component.UnaryOperatorParams.resultType()Returns the value of theresultTyperecord component.BinaryOperatorParams.rightType()Returns the value of therightTyperecord component.ComparisonParams.rightType()Returns the value of therightTyperecord component.PromotionParams.sourceType()Returns the value of thesourceTyperecord component.Methods in org.ek9lang.compiler.phase7.support that return types with arguments of type ISymbolModifier and TypeMethodDescriptionArgumentDetails.argumentSymbols()Returns the value of theargumentSymbolsrecord component.CaptureConstructorParameters.typeSymbols()Returns the value of thetypeSymbolsrecord component.Methods in org.ek9lang.compiler.phase7.support with parameters of type ISymbolModifier and TypeMethodDescriptionvoidConstantCopyOnAccessLoader.apply(ISymbol constantSymbol, String resultVariable, DebugInfo debugInfo) Read the constant into resultVariable as a fresh copy.IsSetEvaluationCreator.apply(String operandVariable, ISymbol operandSymbol, boolean isTraitCall, VariableDetails resultDetails) Creates _isSet() method call instructions.ConstantCopyOnAccessLoader.applyToNewTemp(ISymbol constantSymbol, DebugInfo debugInfo) Read the constant into a freshly generated temp, returning both the instructions and that temp.static Optional<IAggregateSymbol> EnumTypeHelper.baseEnumOf(ISymbol type) Convenience for callers holding anISymbol: the base enum when it is a constrained enum type.static CallDetailsCallDetailsFactory.call(String targetObject, ISymbol targetType, String methodName, List<String> parameterTypes, String returnTypeName, List<String> arguments, CallMetaDataDetails metaData) The same call, but taking the target type as a SYMBOL so BOTH the emitted type name and the virtual-dispatch flag derive from it - they then cannot disagree.PromotionCallGenerator.getPromotedType(ISymbol sourceType) Get the type that results from promoting the given type using #^.booleanConstantCopyOnAccessLoader.isCopyOnAccessConstant(ISymbol symbol) Does this symbol need the copy-on-access constant read?static booleanFunctionInstance.isDelegateCall(ISymbol recordedCallSymbol) True when the recorded call symbol is a delegate call: the function instance is loaded from a variable (or is the result of an inner call) instead of being the named function's singleton.CollectionElementPromoter.promoteIfRequired(ISymbol elementType, ISymbol targetType, String elementTemp, DebugInfo debugInfo, List<IRInstr> setupInstructions) Insert a#^promotion for a collection element when its static type is not directly assignable to the collection's resolved element type but is coercible to it (single promotion, per EK9 rules).CollectionElementPromoter.promoteIfRequired(ISymbol elementType, ISymbol targetType, String elementTemp, DebugInfo debugInfo, List<IRInstr> setupInstructions, boolean escaping) AsCollectionElementPromoter.promoteIfRequired(ISymbol, ISymbol, String, DebugInfo, List), butescapingselects the ARC of any inserted promote:falsefor a scope-local value (collection element, range bound, comparison operand) — RETAIN + SCOPE_REGISTER;truefor a value that ESCAPES the current scope (a coalescing/ternary body-result that becomes the expression value) — RETAIN only, the consumer takes ownership.CollectionElementPromoter.promotionNeed(ISymbol from, ISymbol to) THE "promote if required" decision, for every site that widens a value into a slot (parameters, assignments, collection elements, range bounds, operands): never re-derive thegetUnCoercedAssignableCostTo/TypeCoercions.isCoerciblepair.static booleanTraitCall.requiredFor(ISymbol targetType) static booleanTraitCall.requiredForValue(ISymbol targetValue) AsTraitCall.requiredFor(ISymbol)but for a value symbol (field/variable/expression) whose declared type is the call target.static booleanTraitCall.requiredForValue(ISymbol targetValue, UnaryOperator<ISymbol> typeArgumentOf) AsTraitCall.requiredForValue(ISymbol)inside a monomorphisation: the value's declared type is substituted first, so a value typed by a bareTis judged by the type argument (D54).Method parameters in org.ek9lang.compiler.phase7.support with type arguments of type ISymbolModifier and TypeMethodDescription(package private) static Optional<OperationDetailsLocator.Located> OperationDetailsLocator.find(ParsedModule parsedModule, EK9Parser.AggregatePartsContext ctx, Predicate<ISymbol> matches) Find the declaration whose recorded symbol satisfiesmatches.SanitizedParameterPrologue.of(IRGenerationContext stackContext, List<ISymbol> parameters) Create the prologue that cleans everySANITIZED_REQUIREDparameter in place, each instruction attributed to the parameter's own declaration.SanitizedParameterPrologue.of(IRGenerationContext stackContext, List<ISymbol> parameters, DebugInfo debugInfo) Create the prologue with every instruction attributed todebugInfo.static booleanTraitCall.requiredForValue(ISymbol targetValue, UnaryOperator<ISymbol> typeArgumentOf) AsTraitCall.requiredForValue(ISymbol)inside a monomorphisation: the value's declared type is substituted first, so a value typed by a bareTis judged by the type argument (D54).Constructors in org.ek9lang.compiler.phase7.support with parameters of type ISymbolModifierConstructorDescriptionAssignIfUnsetDetails(ISymbol lhsSymbol, EK9Parser.AssignmentExpressionContext assignmentExpression, org.antlr.v4.runtime.Token operatorToken) Creates an instance of aAssignIfUnsetDetailsrecord class.BinaryOperatorParams(String leftOperand, String rightOperand, String operator, ISymbol leftType, ISymbol rightType, ISymbol resultType, String resultTemp, String scopeId, DebugInfo debugInfo) Creates an instance of aBinaryOperatorParamsrecord class.ComparisonParams(String leftOperand, String rightOperand, String operator, ISymbol leftType, ISymbol rightType, ISymbol booleanType, String booleanObjectTemp, String primitiveBooleanTemp, String scopeId, DebugInfo debugInfo) Creates an instance of aComparisonParamsrecord class.DirectionCheckParams(String directionTemp, String comparisonOperator, String zeroTemp, String booleanObjectTemp, String primitiveBooleanTemp, ISymbol integerType, ISymbol booleanType, String scopeId, DebugInfo debugInfo) Creates an instance of aDirectionCheckParamsrecord class.IncrementParams(String counterVar, String operator, ISymbol counterType, String scopeId, DebugInfo debugInfo) Creates an instance of aIncrementParamsrecord class.LiteralParams(String tempName, String literalValue, ISymbol literalType, DebugInfo debugInfo) Creates an instance of aLiteralParamsrecord class.LiteralProcessingDetails(ISymbol literalSymbol, String literalResult) Creates an instance of aLiteralProcessingDetailsrecord class.PromotionParams(ISymbol sourceType, String sourceVariable, DebugInfo debugInfo) Non-escaping (scope-local) promotion — the common case (list/dict element, range bound, comparison operand).PromotionParams(ISymbol sourceType, String sourceVariable, DebugInfo debugInfo, boolean escaping) Creates an instance of aPromotionParamsrecord class.UnaryOperatorParams(String operand, String operator, ISymbol operandType, ISymbol resultType, String resultTemp, String scopeId, DebugInfo debugInfo) Creates an instance of aUnaryOperatorParamsrecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase7.synthesis
Methods in org.ek9lang.compiler.phase7.synthesis that return ISymbolModifier and TypeMethodDescriptionprotected ISymbolAbstractSyntheticGenerator.getAnyType()The Any type SYMBOL - the root of every EK9 type, a Java interface at the backend.protected ISymbolAbstractSyntheticGenerator.getBitsType()The Bits type SYMBOL - seeAbstractSyntheticGenerator.getBooleanType().protected ISymbolAbstractSyntheticGenerator.getBooleanType()The Boolean type SYMBOL - for reading call metadata off it, rather than only naming it.protected ISymbolAbstractSyntheticGenerator.getIntegerType()The Integer type SYMBOL - seeAbstractSyntheticGenerator.getBooleanType().protected ISymbolAbstractSyntheticGenerator.getStringType()The String type SYMBOL - seeAbstractSyntheticGenerator.getBooleanType().protected ISymbolThe same type, as a SYMBOL rather than a name - so a call ON this value can derive its dispatch flag instead of inheriting the builder's shape-only default.EnumPrimitiveOperatorGenerator.Call.receiverType()Returns the value of thereceiverTyperecord component.Methods in org.ek9lang.compiler.phase7.synthesis that return types with arguments of type ISymbolModifier and TypeMethodDescriptionAbstractSyntheticGenerator.getSyntheticFields(AggregateSymbol aggregateSymbol) Get all fields from an aggregate that should be included in synthetic operations.Methods in org.ek9lang.compiler.phase7.synthesis with parameters of type ISymbolModifier and TypeMethodDescriptionprotected DebugInfoAbstractSyntheticGenerator.createDebugInfo(ISymbol symbol) Create debug info from a symbol's source token.static Optional<MethodSymbol> FieldSetStatusSymbolGenerator.createFor(AggregateSymbol aggregateSymbol, ISymbol bitsType) Create the detached_fieldSetStatuscarrier for this aggregate, if it should have one.protected SynthesisScopeAbstractSyntheticGenerator.createSynthesisScope(ISymbol symbol, String scopeLabel) Create an SynthesisScope for the given operator symbol.protected booleanAbstractSyntheticGenerator.fieldTypeHasRealOperator(ISymbol field, String glyph, boolean binary) Does the field's TYPE have a REALoperatorGlyphof its own (declared or inherited from a real super), as opposed to only the degenerateAnydefault that every type inherits?AbstractSyntheticGenerator.generateBinaryOperatorGuards(String aggregateTypeName, ISymbol aggregateType, String paramName, String unsetLabel, SynthesisScope ctx) Generate isSet guards for binary operators (this and param).AbstractSyntheticGenerator.generateIsSetGuard(String variableName, String typeName, ISymbol type, String unsetLabel, SynthesisScope ctx) Generate isSet guard check for a variable using SynthesisScope.AbstractSyntheticGenerator.generateIsSetGuard(String variableName, String typeName, ISymbol type, DebugInfo debugInfo, String unsetLabel, String scopeId) Generate isSet guard check for a variable with branch to unset return.AbstractSyntheticGenerator.generateThisIsSetGuard(String aggregateTypeName, ISymbol aggregateType, String unsetLabel, SynthesisScope ctx) Generate isSet guard for 'this' using SynthesisScope.AbstractSyntheticGenerator.generateThisIsSetGuard(String aggregateTypeName, ISymbol aggregateType, DebugInfo debugInfo, String unsetLabel, String scopeId) Generate isSet guard check for 'this' with branch to unset return.protected ISymbolThe same type, as a SYMBOL rather than a name - so a call ON this value can derive its dispatch flag instead of inheriting the builder's shape-only default.protected StringAbstractSyntheticGenerator.getTypeName(ISymbol symbol) Get the fully qualified name for a type.protected booleanAbstractSyntheticGenerator.isTraitType(ISymbol symbol) Check if the given symbol's type is a trait.Constructors in org.ek9lang.compiler.phase7.synthesis with parameters of type ISymbol -
Uses of ISymbol in org.ek9lang.compiler.phase7.synthesis.support
Methods in org.ek9lang.compiler.phase7.synthesis.support with parameters of type ISymbolModifier and TypeMethodDescriptionReturnBlockHelper.generateUnsetReturn(String labelName, String returnTypeName, ISymbol returnType, String returnVarName, DebugInfo debugInfo, String scopeId) Generate a return block that returns an unset value of the given type.ReturnBlockHelper.generateUnsetStore(String labelName, String returnTypeName, ISymbol returnType, String returnVarName, DebugInfo debugInfo, String scopeId, String continueLabel) Generate a block that sets the return variable to an unset value of the given type and then goes on tocontinueLabelinstead of returning (seeReturnBlockHelper.generateBooleanStore(String, boolean, String, DebugInfo, String, String)).The same target, but named by its resolved SYMBOL so the dispatch flag can be derived from it. -
Uses of ISymbol in org.ek9lang.compiler.repair
Methods in org.ek9lang.compiler.repair that return ISymbolModifier and TypeMethodDescription(package private) static ISymbolStringConcatRewriter.resolveSymbolForTest(ParsedModule parsedModule, EK9Parser.ExpressionContext expr) Visible for tests. -
Uses of ISymbol in org.ek9lang.compiler.search
Methods in org.ek9lang.compiler.search that return ISymbolMethods in org.ek9lang.compiler.search that return types with arguments of type ISymbolModifier and TypeMethodDescriptionSymbolSearch.getAsSymbol()Creates a new Symbol from the name in the search and the module name.SymbolSearch.getOfTypeOrReturn()SymbolSearch.getTypeParameters()Get the parameters being used in this search.Methods in org.ek9lang.compiler.search with parameters of type ISymbolModifier and TypeMethodDescriptionMethodSymbolSearch.addTypeParameter(ISymbol parameter) SymbolSearch.addTypeParameter(ISymbol parameter) Add a parameter to the search parameters.SymbolSearch.setExampleSymbolToMatch(ISymbol exampleSymbolToMatch) MethodSymbolSearch.setOfTypeOrReturn(ISymbol ofTypeOrReturn) SymbolSearch.setOfTypeOrReturn(ISymbol ofTypeOrReturn) Method parameters in org.ek9lang.compiler.search with type arguments of type ISymbolModifier and TypeMethodDescriptionMethodSymbolSearch.addTypeParameter(Optional<ISymbol> parameter) SymbolSearch.addTypeParameter(Optional<ISymbol> parameter) Add a type parameter to the search.MethodSymbolSearch.setOfTypeOrReturn(Optional<ISymbol> ofTypeOrReturn) SymbolSearch.setOfTypeOrReturn(Optional<ISymbol> ofTypeOrReturn) What type of symbol is being searched for or its return type.MethodSymbolSearch.setTypeParameters(List<ISymbol> typeParameters) SymbolSearch.setTypeParameters(List<ISymbol> typeParameters) Set any parameters that might be needed as part of this search.Constructors in org.ek9lang.compiler.search with parameters of type ISymbolModifierConstructorDescriptionMatchResult(int costOfMatch, ISymbol symbol) Create a new match result of a cost to match for a symbol.MethodSymbolSearch(String name, ISymbol ofTypeOrReturn) protectedSymbolSearch(String name, ISymbol ofTypeOrReturn) SymbolSearch(ISymbol exampleSymbolToMatch) Use a symbol to populate the search.Constructor parameters in org.ek9lang.compiler.search with type arguments of type ISymbolModifierConstructorDescriptionMethodSymbolSearch(String name, Optional<ISymbol> ofTypeOrReturn) protectedSymbolSearch(String name, Optional<ISymbol> ofTypeOrReturn) -
Uses of ISymbol in org.ek9lang.compiler.support
Classes in org.ek9lang.compiler.support that implement interfaces with type arguments of type ISymbolModifier and TypeClassDescriptionclassUses the symbol and scope management to traverse back up stack to determine if the outer parent is a generic type or not and also if this symbol passed in is a generic type.final classTHE test for a generic's bare type parameterTitself, as opposed to a generic that HAS type parameters.classTHE common-type deduction - for collections (List/Dict literals, ranges, stream 'cat') and for the operators that SELECT one of their operands (?:, <? >?, the ternary).classGiven a list of symbols (normally variables), this code will get the type from each of those symbols.classGiven a list of symbols (normally variables), this code will get the type from each of those symbols.classYou may think why this mapping.classYou may think why this mapping.classYou may think why this mapping.classYou may think why this mapping.classUsed to see if it is possible to resolve types, both simple and parametric.classGiven some sort of generic type a function or a type with a set of 'type parameters', create a unique internal name for that combination.final classPredicate to determine if a symbol is a function delegate.final classPredicate that returns true iff the symbol IS theorg.ek9.lang::MutexKeygeneric function itself, or a parameterised form of it (e.g.final classPredicate that returns true iff the symbol IS theorg.ek9.lang::MutexLockgeneric type itself, or a parameterised form of it (e.g.classTHE location of a symbol for a message: "on line 6 in 'filename.ek9'".final classTHE check that a construct being defined in a user module does not take the name of a built-in construct (E01090).classChecks that a name being defined at module scope does not differ ONLY by case from a name already defined in that same module (across every construct kind - class, record, trait, function, component, service, text, program, application and constant).classChecks that a name being defined at module scope does not differ ONLY by case from a name already defined in that same module (across every construct kind - class, record, trait, function, component, service, text, program, application and constant).classDesigned to check if variable name and method names collide with Type/Function names.classTHE single predicate for "does this super type need an EK9-style super-init call emitted by the IR?".final classCreate a new parameterised symbol from a generic type and a set of type arguments.classThis will just create an Aggregate/Function 'parameterized type' of the 'generic type' with the 'type arguments' But note it will have not - repeat NOT have - traversed the 'generic type' and cloned over the methods and altered all the 'T', 'K', 'V' - 'type parameters' for each of the 'type arguments' There is a separate function (TypeSubstitution) that does that.classYou may think why this mapping.classYou may think why this mapping.classCheck if this type being supplied to the test can be used as a program argument.classRather than just check if the actual ISymbols are the same, this code checks if two symbols actually refer to the same source token from the same source file.classRather than just check if the actual ISymbols are the same, this code checks if two symbols actually refer to the same source token from the same source file.classThe bulk of the processing is in the abstract base.classThe bulk of the processing is in the abstract base.classThe bulk of the processing is in the abstract base.classget the appropriate return type from functions, methods and function delegates and constructors.classget the appropriate return type from functions, methods and function delegates and constructors.(package private) classChecks to see if the type parameters are the same as the generic arguments.(package private) classChecks to see if the type parameters are the same as the generic arguments.classGiven a list of arguments (ISymbols), go through and extract the types out.classConverts a list of symbol using their friendly names in to a comma separated list.classGiven a Symbol that is some form of type, check that it could receive some piped data.classChecks that the symbols in list one and list two are each the same for the corresponding position in the list.oclassChecks that the symbols in list one and list two are each the same for the corresponding position in the list.oMethods in org.ek9lang.compiler.support that return ISymbolModifier and TypeMethodDescriptionConceptualTypeReplacement.apply(PositionalConceptualLookupMapping.Mapping typeMapping, ISymbol forType, IToken triggeredByToken) The concrete counterpart of a type, which may be conceptual, parameterised with conceptual arguments, or already concrete (in which case it is returned unchanged).ParameterisedTypeData.genericTypeSymbol()Returns the value of thegenericTypeSymbolrecord component.static ISymbolConstrainedBase.of(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).Sameness.UnorderedProperty.property()Returns the value of thepropertyrecord component.SelfReferenceStore.CaptureAssignment.property()Returns the value of thepropertyrecord component.ConceptualTypeReplacement.rebuild(PositionalConceptualLookupMapping.Mapping typeMapping, PossibleGenericSymbol forType, IToken triggeredByToken) Rebuild a parameterised type against concrete type arguments, unconditionally.ObjectSharing.Use.sharedWith()Returns the value of thesharedWithrecord component.RecordedSymbols.Reference.symbol()Returns the value of thesymbolrecord component.ReferenceAssignment.target()Returns the value of thetargetrecord component.ConceptualAccess.OrderingUse.type()Returns the value of thetyperecord component.ConstructTypeReferences.TypeReference.type()Returns the value of thetyperecord component.Methods in org.ek9lang.compiler.support that return types with arguments of type ISymbolModifier and TypeMethodDescriptionRecordedSymbols.aliasesOf(ParsedModule parsedModule, org.antlr.v4.runtime.tree.ParseTree within, ISymbol symbol) symboland every captured copy of it made by a dynamic function or class insidewithin(transitively: a capture of a capture), as an identity set.DispatcherReachableTypes.all(ISymbol baseType, List<MethodSymbol> handlers, int paramIndex, ConcreteSubtypeFinder finder) AsDispatcherReachableTypes.concrete(ISymbol, List, int, ConcreteSubtypeFinder), but keeping abstract types.CommonTypeOrError.apply(CommonTypeDeterminationDetails details) GeneralTypeResolver.apply(SymbolSearchConfiguration toResolve) ParameterisedLocator.apply(ParameterisedTypeData details) ResolveOrDefineExplicitParameterizedType.apply(EK9Parser.ParameterisedTypeContext ctx) ResolveOrDefineIdentifierReference.apply(EK9Parser.IdentifierReferenceContext ctx) ResolveOrDefineTypeDef.apply(EK9Parser.TypeDefContext ctx) CommonTypeDeterminationDetails.argumentSymbols()Returns the value of theargumentSymbolsrecord component.CommonTypeDeterminationDetails.argumentTypes()Returns the value of theargumentTypesrecord component.RecordedSymbols.capturedCopy(Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded, EK9Parser.ExpressionParamContext param) The copy a dynamic function or class makes from one argument of its capture list -(acc)and(total: acc)both make a copy, namedaccandtotal- which shares the object the argument refers to.SelfReferenceStore.capturedInto(EK9Parser.AssignmentStatementContext ctx, SymbolsAndScopes symbolsAndScopes) The property of this object that the assignment statement gives a dynamic function or class capturing 'this' itself (child :=? (owner: this) with trait of Child as class ...), if it does.CloseSteps.Steps.closed()Returns the value of theclosedrecord component.CloseSteps.closedProperties(IAggregateSymbol aggregate) The fields the type's close closes, in acquisition order: owned captures, then own closeable properties.DispatcherReachableTypes.concrete(ISymbol baseType, List<MethodSymbol> handlers, int paramIndex, ConcreteSubtypeFinder finder) The types a value at this parameter could actually HAVE at runtime.GenericTypeInfo.concreteTypeArguments(ISymbol symbol) Recursively resolve a type reference to the leaf CONCRETE type symbols it actually couples to, skipping conceptualTs.NaturalOrderQueue.elementTypeNeedingOrder(EK9Parser.CallContext ctx, CallSymbol callSymbol, Ek9Types ek9Types) The element type of the queue this written call constructs, when the construction needs a natural order: the call resolved to a constructor of a parameterisation ofPriorityQueue, and it is not directly the receiver of.withComparator(...).NaturalOrderQueue.elementTypeOfQueue(ISymbol queueType, Ek9Types ek9Types) The element type whenqueueTypeis a parameterisation ofPriorityQueue.GenericTypeInfo.genericTemplate(ISymbol symbol) The generic template a parameterised type was produced from (List,Dict, a userCache), or empty when the symbol is not a parameterised type.CommonFactory.getDefaultOperatorInitializer(IToken startToken) THE types a reference to this type couples to, in order: the generic template it was produced from (empty for a plain type: a built-in container, or a user generic's own module) and then every leaf concrete type argument (GenericTypeInfo.concreteTypeArguments(ISymbol)).THE leaf walk of a type's arguments: descend through every parameterisation (List of (Dict of (K, V))) and collect the leavesisLeafaccepts, in order.ObjectSharing.Reach.named()Returns the value of thenamedrecord component.OverriddenDeclarations.narrowedReturnTypes(FunctionSymbol function) The same for a function: the super function's return type, when this function narrows it.OverriddenDeclarations.narrowedReturnTypes(IAggregateSymbol aggregate, MethodSymbol method) The return types of the (non-private) parent declarations this method overrides with a NARROWER - covariant - return, one per distinct type.AssignmentTarget.of(SymbolsAndScopes symbolsAndScopes, EK9Parser.AssignmentExpressionContext assignmentExpression) The declared type the assignment expression is given to, if it has one.GeneratedOperatorFields.of(AggregateSymbol aggregateSymbol) The aggregate's own properties followed by its captured variables, in declaration order.CloseSteps.ownedCaptures(IAggregateSymbol aggregate) The captures a dynamic class owns: each one PRE_IR_CHECKS marked as a fresh closeable (R-E).ReturnRetention.parametersOf(ScopedSymbol callee) The declared parameters of a method, operator or function; none for anything else.TypeCoercions.promotionOperator(ISymbol from) The#^operator itself that this 'from' type promotes through, or empty if it has none - for a caller that must read the operator, not only its type (what its RETAINS say it does with the object it is called on: the closeable ownership decision, where an argument reaching a callee as its promotion is not the argument itself).TypeCoercions.promotionTarget(ISymbol from) The single type this 'from' type promotes to via its#^operator, or empty if it has none.SelfReferenceStore.propertiesStoredIn(EK9Parser.MethodDeclarationContext constructor, SymbolsAndScopes symbolsAndScopes) The properties a constructor body stores 'this' into - directly (me: this) or in a dynamic function or class it gives them (child :=? (owner: this) ...) - not counting code that runs later (a dynamic function's body, a dynamic class's methods), where 'this' is a different object or the construction is over.AggregateManipulator.resolveAny(IScope scope) THE search for the built-in Any through a scope: the fully qualified name, of category ANY - a category onlyAnyTypeSymbolhas, so nothing a user declares can answer it.AggregateManipulator.resolveBits(IScope scope) Resolve Bits from cached ek9 types or full scope hierarchy resolution.AggregateManipulator.resolveBoolean(IScope scope) Resolve Boolean from cached ek9 types of full scope hierarchy resolution.AggregateManipulator.resolveInteger(IScope scope) Resolve Integer from cached ek9 types of full scope hierarchy resolution.AggregateManipulator.resolveJson(IScope scope) Resolve JSON from cached ek9 types of full scope hierarchy resolution.ResolverOrDefiner.resolveOrDefine(ParameterisedTypeData details) Attempts to resolve the parameterised type first and return that, else returns a new symbol.ResolveOrDefineTypes.resolveSimpleTypeByIdentifierReference(EK9Parser.IdentifierReferenceContext ctx) AggregateManipulator.resolveString(IScope scope) Resolve String from cached ek9 types of full scope hierarchy resolution.ResolveOrDefineTypes.resolveTypeByIdentifierReference(EK9Parser.IdentifierReferenceContext ctx) ResolveOrDefineTypes.resolveTypeByParameterizedType(IToken triggerToken, EK9Parser.ParameterisedTypeContext ctx) ResolveOrDefineTypes.resolveTypeByTypeDef(IToken triggerToken, EK9Parser.TypeDefContext ctx) Resolves the type for a type def, can trigger recursion.AggregateManipulator.resolveVoid(IScope scope) Resolve Void from cached ek9 types of full scope hierarchy resolution.PolymorphicCopy.singleParameterType(MethodSymbol copy) The single parameter type of a:=:, if it has exactly one.SelfReferenceStore.storedProperty(EK9Parser.AssignmentStatementContext ctx, SymbolsAndScopes symbolsAndScopes) The property of this object that the assignment statement re-points at 'this', if it does.BooleanTruthGuard.targetOf(EK9Parser.PreFlowStatementContext preFlow, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recordedSymbol, ISymbol ek9Boolean) The target of a Boolean truth guard, if this pre-flow is one.ParameterisedTypeData.typeArguments()Returns the value of thetypeArgumentsrecord component.PositionalConceptualLookupMapping.Mapping.typeArguments()Returns the value of thetypeArgumentsrecord component.PositionalConceptualLookupMapping.Mapping.typeParameters()Returns the value of thetypeParametersrecord component.GenericTypeInfo.typeParametersOrArguments(ISymbol symbol) The single level of type parameters (for a template) or type arguments (for a parameterisation) exactly as declared — for display/inspection.Sameness.unorderedDictEntryKey(ISymbol type, ISymbol ek9Any) The key type that stops aDictEntry of (K, V)being ordered (Steve, 2026-10-21): a DictEntry orders by its KEY's<=>, then by its VALUE's when the keys are the same (the entries of one Dict have unique keys), so a key type that cannot be ordered (Sameness.isOrderable(IAggregateSymbol, ISymbol); a function never can) leaves the entry unordered, and a comparator-lesssort,<?, range or natural-order queue over it is E07620 - not the run-time "Sort cannot order" Exception it was.Methods in org.ek9lang.compiler.support with parameters of type ISymbolModifier and TypeMethodDescriptionstatic Optional<HttpAccess> The access kind stored on this parameter, or empty if none has been stored yet.AggregateManipulator.addConstructor(AggregateSymbol t, ISymbol s) Add a constructor to the type aggregate with a particular parameter.RecordedSymbols.aliasesOf(ParsedModule parsedModule, org.antlr.v4.runtime.tree.ParseTree within, ISymbol symbol) symboland every captured copy of it made by a dynamic function or class insidewithin(transitively: a capture of a capture), as an identity set.DispatcherReachableTypes.all(ISymbol baseType, List<MethodSymbol> handlers, int paramIndex, ConcreteSubtypeFinder finder) AsDispatcherReachableTypes.concrete(ISymbol, List, int, ConcreteSubtypeFinder), but keeping abstract types.static List<MethodSymbol> InheritedOperators.allAbove(IAggregateSymbol aggregate, String operatorName, ISymbol ek9Any) EVERY operator calledoperatorNamedeclared ABOVE the aggregate - each level's own overloads, nearest level first, neverAny's.static booleanSameness.allPropertiesOrderable(IAggregateSymbol aggregate, ISymbol ek9Any) THE "can every property of this type be ordered?" (Sameness.isOrderable(IAggregateSymbol, ISymbol)for each property's type) - what a baredefault operator's<=>needs of its own fields.ConceptualTypeReplacement.apply(PositionalConceptualLookupMapping.Mapping typeMapping, ISymbol forType, IToken triggeredByToken) The concrete counterpart of a type, which may be conceptual, parameterised with conceptual arguments, or already concrete (in which case it is returned unchanged).static booleanSameness.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 throughSameness.orderingSurvives(MethodSymbol, ISymbol); without one (the ordering family alone, beside a hand-written<=>) the type's own properties decide.static Optional<MethodSymbol> The body method of a program - empty when the symbol is not a program.static Optional<ScopedSymbol> The method or function a recorded symbol CALLS, when it is a call that hands back a value made elsewhere: a method, operator or function call - never a constructor, whose result is always fresh.static booleanObjectSharing.compoundTargetMayKeep(ISymbol type, ISymbol operandType) May a compound assignment (target += item,target :~: item) to a value of this type keep its operand? A container (a parameterised type, a bareT) does; so does a type of the program's own, whose operator is written in EK9 and may store it - as any call of the program's own may keep its argument (ObjectSharing.keepsArgument(ISymbol, int); the verifier, 2026-10-21:registry += item,Registry's+=adding to its list, was read as keeping nothing, so a loaned closeable was closed by its statement and then used).DispatcherReachableTypes.concrete(ISymbol baseType, List<MethodSymbol> handlers, int paramIndex, ConcreteSubtypeFinder finder) The types a value at this parameter could actually HAVE at runtime.GenericTypeInfo.concreteTypeArguments(ISymbol symbol) Recursively resolve a type reference to the leaf CONCRETE type symbols it actually couples to, skipping conceptualTs.protected voidCommonFactory.configureSymbol(ISymbol symbol, IToken start) protected List<AggregateSymbol> CommonFactory.createAndRegisterParameterisedSymbols(EK9Parser.ParameterisedParamsContext ctx, ISymbol functionOrClass, IScope scope) static Optional<IAggregateSymbol> InheritedOperators.declarationSiteFor(IAggregateSymbol aggregate, ISymbol ek9Any) Where a missing operator belongs when NOTHING above the 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).voidVoidAsTypeOrError.declaredTypeOrError(ISymbol variable) A variable, property, parameter or returning variable declared with typeVoid.booleanTrue if this property is declared in the same aggregate body as the initialiser.static voidHttpAccess.defaultOnto(ISymbol param) THE defaulting of a service parameter that declares no access: it is a PATH parameter bound to the placeholder of its own name.ConstructDisplayName.distinctOf(ISymbol symbol) ConstructDisplayName.of(ISymbol)with a dynamic construct among the type arguments left as its mangled name, so two parameterisations over two different dynamic classes never share it (both areBox of clsinConstructDisplayName.of(ISymbol)).NaturalOrderQueue.elementTypeOfQueue(ISymbol queueType, Ek9Types ek9Types) The element type whenqueueTypeis a parameterisation ofPriorityQueue.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).booleanSymbolChecker.errorsIfNameDiffersOnlyByCase(List<ISymbol> alreadyDefined, ISymbol symbol) Check whether the symbol being defined differs ONLY by case from one already defined in the same module.booleanSymbolChecker.errorsIfNameIsBuiltIn(IScope moduleScope, ISymbol symbol) Check the symbol about to be defined in a user module does not take the name of a built-in construct (E01090).booleanNoNameCollisionOrError.errorsIfResolved(IScope inScope, ISymbol symbol, SymbolSearch search, ErrorListener.SemanticClassification classificationError) If a symbol is resolved then this will emit an error.booleanSymbolChecker.errorsIfSymbolAlreadyDefined(IScope inScope, ISymbol symbol, boolean limitVarSearchToBlockScope) Check for exising symbol in the scope.DefaultedComparisonDelegate.forAggregate(IAggregateSymbol aggregate, ISymbol ek9Any) DefaultedComparisonDelegate.of(IAggregateSymbol, MethodSymbol, ISymbol)for the operators of ONE aggregate, for a caller that asks about each of them in turn: the type's facts - whether it has its own comparator or a hand-written==, and which<=>and==serve it - are worked out at most once, not once per operator.static Optional<PossibleGenericSymbol> TargetTypedConstruction.forCall(SymbolsAndScopes symbolsAndScopes, EK9Parser.CallContext call, ISymbol generic) The parameterisation a bareG()at this call is completed to from its declared target, if it has one.static Optional<DispatcherWinner.Selection> DispatcherWinner.forParam(ISymbol concreteType, int paramIndex, List<MethodSymbol> handlers) The winning handler for a concrete type at one parameter position.static Optional<DispatcherWinner.Selection> DispatcherWinner.forParamPair(ISymbol type0, ISymbol type1, List<MethodSymbol> handlers) The winning handler for a pair of concrete types across the first two parameters.static StringThe call-graph identity for a callable symbol.GenericTypeInfo.genericTemplate(ISymbol symbol) The generic template a parameterised type was produced from (List,Dict, a userCache), or empty when the symbol is not a parameterised type.static booleanDefaultedComparisonDelegate.hasOwnComparator(IAggregateSymbol aggregate, ISymbol ek9Any) True when the aggregate has its own REAL<=>that takes itself - hand-written, or defaulted (and not retracted) over fields that can all really be ordered.static intThe slot offieldNamein an object ofowner: the nearest declaration of that property in the chain, at its declaring type's inherited slot count plus its position there.static Optional<MethodSymbol> Sameness.inheritedSameness(IAggregateSymbol aggregate, ISymbol ek9Any) The sameness this 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.static List<MethodSymbol> PolymorphicCopy.inheritedSignatures(IAggregateSymbol owner, ISymbol ek9Any) The inherited:=:(Super)signatures a GENERATED owner overrides: every:=:declared up its super CLASS chain (InheritedOperators.allAbove(IAggregateSymbol, String, ISymbol)) 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.static booleanConceptualAccess.isBuiltOnTypeParameters(ISymbol type) True when the type is built on conceptual type parameters without being one: a parameterisation with a bareTamong its leaves (DictEntry of (K, Integer),List of (OrderedBox of T)), or a generic template named in its own body (this < otherinsideOrderedBox of type T, which isOrderedBox of T).static booleanCapturedVariables.isCaptureOf(ISymbol candidate, ICanCaptureVariables capturer) True whencandidateis, by identity, one of the variablescapturercaptured.static booleanCloseSteps.isCloseableType(ISymbol type) True when values of this TYPE have a close the compiler must see run (CloseableResourceToBeChecked.isManagedCloseableType(ISymbol)) - THE question for a type that is not a field, for example the component an application registers (the application closes it at program end).static booleanTypeCoercions.isCoercible(ISymbol from, ISymbol to) Can the 'from' token type be coerced to the 'to' type.static booleanTrue when the method's input-variety floor counts its receiver.booleanPropertyInitialiser.isDeclaredBefore(ISymbol candidate) True if this property is declared before the property whose initialiser this is - so its own initialiser, if it has one, has already run.static booleanSameness.isDegenerateDefaultedOrdering(MethodSymbol operator, ISymbol ek9Any) A defaulted ordering operator on a type whose<=>degenerates because a field cannot be ordered - the case a generic instantiation reaches without any retraction marker:Box of List(its template'sdefault operator <=>is over aTthat became a List).static booleanGenericBodyReference.isDependentOf(PossibleGenericSymbol generic, ISymbol symbol) True when the symbol is a dependent reference of the generic - see the class description.static booleanExternSymbols.isExternallyProvided(ISymbol symbol) Is this symbol externally provided, so its source token must NOT be shown as a location?static booleanEk9LiteralTypes.isExtractableLiteral(ISymbol symbol) Whethersymbolis a literal value that may be lifted into a module constant — the symbol-side companion toEk9LiteralTypes.typeNameOf(EK9Parser.LiteralContext)(the parse-context side).static booleanGenericTypeInfo.isGenericTemplate(ISymbol symbol) True when the symbol is a generic TEMPLATE (e.g.static booleanTrue if the symbol has been marked as a concurrent entry point.static booleanWas this call completed from its declared target.static booleanRangeProgressCheck.isNeededFor(ISymbol counterType, ISymbol ek9Time, ISymbol ek9Float, ISymbol ek9Dimension) True when a for-range counted incounterType(already resolved to the concrete type, the base of a constrained one) carries a progress check.static booleanSameness.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 (Sameness.orderingSurvives(MethodSymbol, ISymbol)).static booleanStreamStages.isOutputChannel(ISymbol sinkType) THE test of a built-in OUTPUT CHANNEL (Steve, 2026-10-27: "> udpConnectionand> stdout,> stderrall feel normal"): the type IS-Aorg.ek9.lang::IO- Stdout, Stderr, a file output, a UDP or TCP connection, a StringOutput, and a user type taking those traits.static booleanStatementOwnership.isOwnedByItsStatement(ISymbol recorded) Isrecordeda call whose result its statement owns (and closes).static booleanCloseSteps.isOwnedCapture(ISymbol capture) True when the capture was marked as owned by the dynamic class that made it.static booleanGenericTypeInfo.isParameterised(ISymbol symbol) True when the symbol is a concrete PARAMETERISATION of a generic (e.g.static booleanTHE test of whether a<=>of this type can be unset for two SET values of it: a partial built-in, or a type whose values may be of different run-time types under a per-type sameness.static booleanPartialOrdering.isPartialBuiltIn(ISymbol type) True when the type is a core built-in whose runtime class declares a comparison group.static booleanOwnProperty.isPropertyOf(ISymbol candidate, IAggregateSymbol aggregate) True whencandidateis one ofaggregate's own declared properties - by identity, never by name.static booleanReferenceTypeChecker.isReferenceType(ISymbol type, Ek9Types ek9Types) Determines if the given ISymbol represents a reference-counted type.static booleanSanitizedRequired.isRequiredOn(ISymbol symbol) True when the symbol is a parameter declaredas sanitized, or an expression derived from one.static booleanSameness.isRetractedOrdering(MethodSymbol operator, ISymbol ek9Any) Is this operator a BARE ordering operator that phase 5 retracts (Sameness.bareOrderingRetracted(IAggregateSymbol, ISymbol)of its owner)? Order-independent, so usable from POST_RESOLUTION_CHECKS on: a generic's body that uses<=>or<onT, parameterised with a type whose ordering is retracted, is E07620 at the parameterisation (D58, Steve 2026-10-21).static booleanSelfReferenceStore.isSelfReference(org.antlr.v4.runtime.tree.ParseTree node, ISymbol symbol, SymbolsAndScopes symbolsAndScopes) True when the symbol is a property that the constructor this node is in stores 'this' into - so, in that constructor, the property is 'this' under another name.static booleanSameness.isUnavailableOrdering(MethodSymbol operator, ISymbol ek9Any) THE verdict on a call of an ordering operator written as an operator (first < second, acase < x): the operator it resolved to is one phase 5 retracts (Sameness.isRetractedOrdering(MethodSymbol, ISymbol)) or one that degenerates (Sameness.isDegenerateDefaultedOrdering(MethodSymbol, ISymbol)).static booleanStreamStages.isWriteThroughSink(ISymbol sinkType) A sink is write-through - it never accumulates what it is given - only when its type IS-Aorg.ek9.lang::StringOutput(Stdout, Stderr, a StringOutput).static booleanObjectSharing.iterationRunsProgramCode(ISymbol type) D66 gap (Steve, 2026-10-21): does afor ... inloop over a value of this type run code of the program's own? THE test: the loop callsiterator()and thenhasNext()/next()(or those two on the value itself), so it is a call that is not pure when the type - or the iterator itsiterator()declares to return - has one of those methods that is notpureand is supplied by the program: a method written in EK9, or an abstract one of a built-in trait or abstract type (Iterator,Iterable) a program implements.static Optional<MethodSymbol> UnsetKeepingOperator.keepingUnset(ISymbol receiverType, String operator, Optional<ISymbol> argumentType) AsUnsetKeepingOperator.resolve(ISymbol, String, Optional)thenUnsetKeepingOperator.keepsUnset(MethodSymbol): the resolved operator, only when it keeps an unset receiver unset.static booleanStreamStages.keepsUnsetIntoList(ISymbol ek9List, ISymbol target) True when a TERMINAL's target is aList(the built-in, any parameterisation):collect as List of X,> list,>> listand atee ... in listtarget append each element with the List's+=(_addAss), which keeps an unset element, never with its|(_pipe), which drops it (Steve, 2026-10-21: "keep them through+=").THE types a reference to this type couples to, in order: the generic template it was produced from (empty for a plain type: a built-in container, or a user generic's own module) and then every leaf concrete type argument (GenericTypeInfo.concreteTypeArguments(ISymbol)).THE leaf walk of a type's arguments: descend through every parameterisation (List of (Dict of (K, V))) and collect the leavesisLeafaccepts, in order.static booleanPropertyCycles.leavesOutOfHash(IAggregateSymbol owner, ISymbol field) Must a generated#?on this type leave this field out? True for a field of a cyclic type that can lead back to an object of that type; the hash is then a subset of what==compares, so equal graphs (even co-inductively equal cycles) hash alike, and it never recurses round the loop.static voidMark the symbol as a concurrent entry point.static voidRecord that this call was completed from its declared target.static voidInputVarietyReceiver.markCounted(ISymbol method) Record that the floor counts the receiver of this method.static voidSanitizedRequired.markRequiredOn(ISymbol symbol) Mark the symbol as one the receiver must clean.static booleanMay a value ofreturnType(null: unknown) hold a borrowed view?static booleanTHE test of whether a holder - a container variable, a stream's target, a call's result - can keep an object of a given type at all (D80 follow-up, 2026-10-21): the same walk asBorrowedViewReturn.mayHold(ISymbol), asked about an object of one ofheldTypesinstead of about a closeable.static booleanSameness.mayMixRuntimeTypes(IAggregateSymbol type, ISymbol ek9Any) THE 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).static Optional<MethodSymbol> InheritedOperators.nearestAbove(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.static Optional<MethodSymbol> Sameness.nearestSamenessAbove(IAggregateSymbol owner, ISymbol ek9Any) THE 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 (InheritedOperators.nearestSelfComparisonAbove(IAggregateSymbol, String, ISymbol)) - the super is ORDERED - else the nearest such==- the super is EQUATABLE only.static Optional<MethodSymbol> InheritedOperators.nearestSelfComparisonAbove(IAggregateSymbol aggregate, String operatorName, ISymbol ek9Any) THE nearest SAMENESS operator above the aggregate (D19, Steve 2026-10-20): the nearestoperatorName(==or<=>) declared above it that compares the level declaring it with ITSELF (Sameness.isSelfComparison(IAggregateSymbol, MethodSymbol)) - matched by SIGNATURE, never by name, neverAny's.static Optional<MethodSymbol> Sameness.nearestSurvivingSamenessAbove(IAggregateSymbol owner, ISymbol ek9Any) The sameness a type that declares none of its own gets from its super CLASS chain once PRE_IR_CHECKS has run (D55):Sameness.nearestSamenessAbove(IAggregateSymbol, ISymbol), but a<=>that does not survive (Sameness.orderingSurvives(MethodSymbol, ISymbol)) is passed over for the nearest==- the super is EQUATABLE only.static booleanPolymorphicCopy.needsCopyAccepts(IAggregateSymbol owner, ISymbol ek9Any) Does the owner get a_copyAccepts? Only where one can be asked.static booleanStreamStages.needsFreshValueError(int terminationOp, Ek9Types ek9Types, ISymbol target) True when a>would have to replace its target but the target cannot make a fresh value (E08278): it is abstract or a trait, has no accessible no-argument constructor, or has no:=:to swap the fresh value in.SymbolFactory.newExpressionSymbol(ISymbol fromSymbol) Create a new expression around a symbol.static voidConceptualAccess.noteNaturalOrderQueue(ISymbol elementType) Note a natural-orderPriorityQueueof this element type, when it is built on a conceptual parameter without being one (PriorityQueue of (OrderedBox of T)).The fully qualified display name (module::Holder of String) of a monomorphised generic, else empty.Enumerate the signature-level type references of a construct.static Optional<MethodSymbol> DefaultedComparisonDelegate.of(IAggregateSymbol aggregate, MethodSymbol operator, ISymbol ek9Any) The operator a generated comparison delegates to, resolved on the type (its own, a super's or a trait's).static HttpAccessThe access kind of this parameter: what was stored, else PATH - the kind an unqualified service parameter is assumed to be (seeHttpAccess.defaultOnto(ISymbol)), so a check that runs without having asked for the default first still gets the answer the default would have given.static intThe symbol's measured complexity, or 0 when it was never measured (or is unparseable).static StringThe name of the module the type belongs to; empty text when it cannot be told.static ErrorListenerOwningErrorListener.of(ISymbol symbol, ErrorListener fallback) The error listener of the source that declaressymbol, orfallbackif it has none.static booleanSameness.orderingSurvives(MethodSymbol comparison, ISymbol ek9Any) THE "does this<=>still order values once PRE_IR_CHECKS has run?" (D55, Steve 2026-10-20).static booleanSameness.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<=>(Sameness.withdrawnOrdering(IAggregateSymbol, ISymbol)) or aDictEntrywhose key cannot be ordered (Sameness.unorderedDictEntryKey(ISymbol, ISymbol))? THE test of phase 5'sRetractedComparatorUseOrError;Sameness.whyNotOrderable(IAggregateSymbol, ISymbol)words it.static StreamStages.OutputStepStreamStages.outputStepFor(int terminationOp, ISymbol sinkType) THE decision of whichStreamStages.OutputStepa termination gives its sink:>into an output channel clears,>>appends, anything that is not a channel (a collection, a fold, a user type) gets none.static List<MethodSymbol> Sameness.overriddenSignatures(IAggregateSymbol owner, ISymbol ek9Any) THE 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 (InheritedOperators.allAbove(IAggregateSymbol, String, ISymbol)) that takes a type the owner is assignable to and that the owner does not declare itself.static Optional<MethodSymbol> Sameness.ownOperatorTaking(IAggregateSymbol owner, String name, ISymbol parameterType) The owner's own non-abstract operator of this name taking exactly that one type, if any.static Optional<PossibleGenericSymbol> GenericTypeInfo.parameterisationOf(ISymbol generic, ISymbol target) THE strict test:targetis a parameterisation of EXACTLY this generic - not a sub type or a super type of it - and so the parameterisation itself (List of Stringfor the genericList), else empty.NaturalOrderQueue.problemWith(ISymbol elementType, ISymbol ek9Any) E07620's wording for an element type that cannot be ordered, or empty when it can.static Optional<IAggregateSymbol> The program whose body this symbol is - empty for anything else.TypeCoercions.promotionOperator(ISymbol from) The#^operator itself that this 'from' type promotes through, or empty if it has none - for a caller that must read the operator, not only its type (what its RETAINS say it does with the object it is called on: the closeable ownership decision, where an argument reaching a callee as its promotion is not the argument itself).TypeCoercions.promotionTarget(ISymbol from) The single type this 'from' type promotes to via its#^operator, or empty if it has none.voidStore this access kind on the parameter, as the one writer of theHTTP_ACCESSsquirrel.static booleanObjectSharing.rangeRunsProgramCode(ISymbol type) D66 gap (verifier, 2026-10-21): does aforrange over values of this type run code of the program's own? The range builds its counter and each loop value with the type's copy constructor and moves the counter with++/--(or+=/-=by a step), comparing with<=>: a program type with any of those notpureruns that code, which may change what it can reach (a copy shares its fields).static Optional<ObjectSharing.Reach> ObjectSharing.reachOfInPlaceWrite(org.antlr.v4.runtime.ParserRuleContext occurrence, ISymbol written, ISymbol type, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) THE reading of an in-place write as a call (D66, Steve 2026-10-21): when the operator that makes it is the program's own code (ObjectSharing.inPlaceWriteRunsProgramCode(ISymbol, String)), it is a call that is not pure, given the object written and whatever the right-hand side gives it (other -= amount), or - for a stream target - every element of the stream.static StringTHE name a GENERATED operator shows for a type in its text (D65, Contract 21 rule 5): a parameterised type by its friendly name (Holder of String), every other type by its simple name, and in either case a compiler-made name by whatFriendlyInternalNamegives it - a dynamic class iscls, never its_Class_<digest>.static StringConstructDisplayName.readableFriendly(ISymbol symbol) The friendly name of a type as the symbol gives it, with a compiler-made name made readable (D65): the form a generated refusal message uses for the types it names.static voidRecord a complexity against a symbol that phase 5 will never visit.static booleanStreamStages.replacesTargetOnCompletion(int terminationOp, Ek9Types ek9Types, ISymbol target) True when a stream statement's>REPLACES its target when the pipeline completes (Steve, 2026-10-21: ">'clobbers' and>>'appends'", the Unix shell meaning; made ALL-OR-NOTHING the same day, and extended to a PriorityQueue and a JSON: ">always means REPLACE"; to a scalar 2026-10-26; and finally to EVERY target, no type list, 2026-10-27: "let's make>consistent"): the termination is>(never>>) and the target is anything but an output channel (StreamStages.isOutputChannel(ISymbol)).static Optional<MethodSymbol> The operatoroperatorresolves to onreceiverTypegiven an argument ofargumentType(empty for++and--), when it resolves to exactly one.static booleanSameness.retractWithdrawnBareOrdering(IAggregateSymbol aggregate, ISymbol ek9Any) THE retraction step (D55/D58/D62): whenSameness.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.static voidClonedMemberRetyping.retypeOne(ISymbol value, UnaryOperator<ISymbol> replacement) Re-type a single symbol, in place, when it has a type.static Optional<MethodSymbol> Sameness.sealedSameness(IAggregateSymbol aggregate, ISymbol ek9Any) The SEALED sameness this type inherits - one written by hand on an abstract base or a trait above it (Sameness.isHierarchyWide(IAggregateSymbol)) - if any.static StreamStages.SinkBufferStreamStages.sinkBufferFor(Ek9Types ek9Types, ISymbol target) THE decision ofStreamStages.SinkBufferfor a target type (asked besideStreamStages.replacesTargetOnCompletion(int, Ek9Types, ISymbol), which is defined by it).static booleanExactSingleParameter.takes(MethodSymbol method, ISymbol type) True whenmethodtakes exactly one parameter whose type is exactlytype.BooleanTruthGuard.targetOf(EK9Parser.PreFlowStatementContext preFlow, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recordedSymbol, ISymbol ek9Boolean) The target of a Boolean truth guard, if this pre-flow is one.booleanbooleanbooleanbooleanbooleanCheck the symbol about to be defined in the module scope given.booleanCheck the symbol being defined against those already defined in the same module.booleanCheck for exising symbol in the scope.booleanbooleanbooleanbooleanbooleanGenericTypeInfo.typeParametersOrArguments(ISymbol symbol) The single level of type parameters (for a template) or type arguments (for a parameterisation) exactly as declared — for display/inspection.static List<IAggregateSymbol> ConceptualAccess.typeParametersUnder(ISymbol type) The conceptual parameters a (non-bare) parameterisation is built on, each once; for a generic template (named in its own body) its own type parameters.Sameness.unorderedDictEntryKey(ISymbol type, ISymbol ek9Any) The key type that stops aDictEntry of (K, V)being ordered (Steve, 2026-10-21): a DictEntry orders by its KEY's<=>, then by its VALUE's when the keys are the same (the entries of one Dict have unique keys), so a key type that cannot be ordered (Sameness.isOrderable(IAggregateSymbol, ISymbol); a function never can) leaves the entry unordered, and a comparator-lesssort,<?, range or natural-order queue over it is E07620 - not the run-time "Sort cannot order" Exception it was.static Optional<Sameness.UnorderedProperty> Sameness.unorderedPropertyBehind(MethodSymbol comparison, ISymbol ek9Any) THE reason a bare<=>does not survive: the first property, from the owner ofcomparisonupward through the<=>s each bare one builds on (read as DECLARED, so it answers the same after the retraction), whose type cannot be ordered (Sameness.isOrderable(IAggregateSymbol, ISymbol)).static List<RecordedSymbols.Reference> RecordedSymbols.usesOf(ParsedModule parsedModule, org.antlr.v4.runtime.tree.ParseTree within, ISymbol symbol) The references inwithintosymbol- that INSTANCE, never another symbol with the same name - plus the references to the copies of it that dynamic functions and classes insidewithincaptured (a capture is a copy symbol; a+=on it mutates the same object).static StringSameness.whyNotOrderable(IAggregateSymbol type, ISymbol ek9Any) THE 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.PartialOrdering.whyPartial(ISymbol type, ISymbol ek9Any) THE wording of why a type's<=>is partial (PartialOrdering.isPartial(ISymbol, ISymbol)), to follow "'X' ...", or empty when it is total.static Optional<MethodSymbol> Sameness.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 (Sameness.orderingSurvives(MethodSymbol, ISymbol)).static List<SymbolWrites.Write> SymbolWrites.writesOf(ParsedModule parsedModule, org.antlr.v4.runtime.tree.ParseTree region, ISymbol symbol) Every write tosymbol(or to a captured copy of it) inregion, in source order.Method parameters in org.ek9lang.compiler.support with type arguments of type ISymbolModifier and TypeMethodDescriptionAggregateManipulator.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(AggregateSymbol t, Optional<ISymbol> s) Add another constructor to type t, but passing in an s as the value in the construction.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.AggregateManipulator.addPublicMethod(AggregateSymbol aggregate, String methodName, List<ISymbol> methodParameters, Optional<ISymbol> returnType) Just add a method to an aggregate with the name and parameters and return type.AggregateManipulator.addPublicMethod(AggregateSymbol aggregate, String methodName, List<ISymbol> methodParameters, Optional<ISymbol> returnType) Just add a method to an aggregate with the name and parameters and return type.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, List<ISymbol> constructorArguments) Add a synthetic constructor, if a constructor is not present.static List<ObjectSharing.Use> ObjectSharing.all(EK9Parser.IdentifierContext occurrence, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) EVERY effect of one occurrence: whatObjectSharing.of(EK9Parser.IdentifierContext, Function)says, plus what the occurrence RETAINS (D61) - the object put in a collection literal, a Dict value, given to a call or constructor that keeps its argument, added with a compound assignment, or iterated by afor: whatever holds it afterwards shares the object, so an in-place change through the holder (a loop variable, an element, a field) changes it too.static List<ObjectSharing.Use> ObjectSharing.allOfSelf(EK9Parser.PrimaryReferenceContext self, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) Whatthisorsuper- the object a method runs on, whose name is no identifier - does to that object, read exactly as the occurrence of a variable is (ObjectSharing.all(EK9Parser.IdentifierContext, Function)): kept where the whole expression is kept (items += this,box <- Box(this),(this) is ...), or the start of a call chain that may return a view of it (this.me()).InternalNameFor.apply(PossibleGenericSymbol possibleGenericSymbol, List<ISymbol> typeArguments) ParameterizedSymbolCreator.apply(PossibleGenericSymbol possibleGenericSymbol, List<ISymbol> typeArguments) static Optional<ScopedSymbol> ReturnRetention.calleeOf(EK9Parser.ExpressionContext expression, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) The method, operator or function an expression CALLS when the whole expression is that call -a.get(k),first(),a + b,(a.get(k))- so its value is whatever the call handed back.RecordedSymbols.capturedCopy(Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded, EK9Parser.ExpressionParamContext param) The copy a dynamic function or class makes from one argument of its capture list -(acc)and(total: acc)both make a copy, namedaccandtotal- which shares the object the argument refers to.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.createPurePublicSimpleOperator(IAggregateSymbol aggregateSymbol, String methodName, Optional<ISymbol> returnType) Just creates a public operator with the name specified.booleanSymbolChecker.errorsIfNameDiffersOnlyByCase(List<ISymbol> alreadyDefined, ISymbol symbol) Check whether the symbol being defined differs ONLY by case from one already defined in the same module.static IsFreshValueExpressionIsFreshValueExpression.forCloseableReturns(Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) The closeable-return reading (R5): also a call whose callee DECLARES a closeable return type and does not declare (or have derived) a result that may alias.doubleSymbolMatcher.getCostOfMatch(Optional<ISymbol> fromSymbol, Optional<ISymbol> toSymbol) Calculates the cost of matching two symbols, which may or may not be present.doubleSymbolMatcher.getCostOfParameterMatch(List<ISymbol> fromSymbols, List<ISymbol> toSymbols) Calculates the percentage of matching these two lists of parameters.protected Consumer<MethodSymbol> CommonFactory.getDefaultOperatorSymbolInitializer(Consumer<ISymbol> initialise) static booleanTypeCoercions.isCoercible(Optional<ISymbol> from, Optional<ISymbol> to) Can the 'from' token type be coerced to the 'to' type.static booleanSymbolWrites.isWrittenBetween(ParsedModule parsedModule, org.antlr.v4.runtime.tree.ParseTree region, Set<ISymbol> symbols, int afterTokenIndex, int beforeTokenIndex) Is any ofsymbolswritten inregionstrictly between two token positions (token indexes in the compiled token stream: passfirst.getStop().getTokenIndex()andsecond.getStart().getTokenIndex()to ask "does anything change these between the two occurrences?").static booleanSymbolWrites.isWrittenIn(ParsedModule parsedModule, org.antlr.v4.runtime.tree.ParseTree region, Set<ISymbol> symbols) Is any ofsymbolswritten anywhere inregion.static Optional<MethodSymbol> UnsetKeepingOperator.keepingUnset(ISymbol receiverType, String operator, Optional<ISymbol> argumentType) AsUnsetKeepingOperator.resolve(ISymbol, String, Optional)thenUnsetKeepingOperator.keepsUnset(MethodSymbol): the resolved operator, only when it keeps an unset receiver unset.THE leaf walk of a type's arguments: descend through every parameterisation (List of (Dict of (K, V))) and collect the leavesisLeafaccepts, in order.static booleanObjectSharing.mayBeExistingObject(EK9Parser.ExpressionContext expression, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) May the value of this expression BE an object that exists already - rather than a fresh one: a variable (not a constant, which is read as a copy),this/super, a call whose RETAINS says its result may be its receiver's interior or an argument (ReturnRetention.mayAlias(ScopedSymbol)), or a coalescing operator's result or a ternary's when EITHER operand may be (the result is one of them: the same routeObjectSharing.all(EK9Parser.IdentifierContext, Function)follows for the operand itself).static booleanObjectSharing.mayBeExistingObjectByShape(EK9Parser.ExpressionContext expression, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) Is the expression, looking through parentheses, of a SHAPE whose value may be an object that already exists - a variable,this/super, a call, or a coalescing operator or ternary (whose result IS one of its operands) - so onlyObjectSharing.mayBeExistingObject(EK9Parser.ExpressionContext, Function), once phase 5 has derived the RETAINS of the program's own callables, can say whether it is.static booleanObjectSharing.mayBeObjectFromOutside(org.antlr.v4.runtime.tree.ParseTree value, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) May the value given to a name be, or hold, an object from OUTSIDE the code being analysed (D66) that the name is not recorded as sharing with:this- itself, or held by a list, a Dict, a constructor's or call's arguments or a dynamic function's or class's capture list (box <- Box(this)) - or a result a call, a coalescing operator or a ternary hands back that may be an existing object.static booleanTHE test of whether a holder - a container variable, a stream's target, a call's result - can keep an object of a given type at all (D80 follow-up, 2026-10-21): the same walk asBorrowedViewReturn.mayHold(ISymbol), asked about an object of one ofheldTypesinstead of about a closeable.static booleanObjectSharing.mayRunProgramCode(org.antlr.v4.runtime.tree.ParseTree call, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) May the call (or stream stage operand)callrun code of the program's own - something that is notpureand not a concrete built-in? Such code may change any object it can reach, an object kept where the caller cannot name it included.SymbolFactory.newExpressionSymbol(IToken token, String name, Optional<ISymbol> ofType) Create a new expression symbol place-holder.SymbolFactory.newParameterisedSymbol(PossibleGenericSymbol genericType, List<ISymbol> typeArguments) static Optional<ObjectSharing.Use> ObjectSharing.of(EK9Parser.IdentifierContext occurrence, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) Whatoccurrence- an identifier the compiler bound to a symbol - does to the object it names; empty when it only reads it, or stores a new object in it.static List<ConceptualAccess.OrderingUse> ConceptualAccess.orderingUsesOf(List<? extends ISymbol> typeParameters) The orderings of types built on any of these conceptual parameters that the generic's body uses, each once (a type built on several parameters is recorded on each).static ObjectSharing.ReachObjectSharing.reachOf(org.antlr.v4.runtime.tree.ParseTree call, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) THE reading of what a call that may run the program's own code can change: everything reachable fromObjectSharing.Reach, which the value tracker turns into what it forgets (ValueTrackingAnalyzer.recordCallThatMayChange).static Optional<ObjectSharing.Reach> ObjectSharing.reachOfInPlaceWrite(org.antlr.v4.runtime.ParserRuleContext occurrence, ISymbol written, ISymbol type, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) THE reading of an in-place write as a call (D66, Steve 2026-10-21): when the operator that makes it is the program's own code (ObjectSharing.inPlaceWriteRunsProgramCode(ISymbol, String)), it is a call that is not pure, given the object written and whatever the right-hand side gives it (other -= amount), or - for a stream target - every element of the stream.static ObjectSharing.ReachObjectSharing.reachOfIteration(EK9Parser.ExpressionContext iterated, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recorded) What aforloop overiteratedcan reach (D66, the same reading asObjectSharing.reachOf(ParseTree, Function)gives a call): the value iterated - a name,this, or something no name is given to - and what it is made from.static Optional<MethodSymbol> The operatoroperatorresolves to onreceiverTypegiven an argument ofargumentType(empty for++and--), when it resolves to exactly one.static voidClonedMemberRetyping.retype(IScopedSymbol newOwner, List<ISymbol> clonedMembers, UnaryOperator<ISymbol> replacement) Re-type the members, in place.static voidClonedMemberRetyping.retype(IScopedSymbol newOwner, List<ISymbol> clonedMembers, UnaryOperator<ISymbol> replacement) Re-type the members, in place.static voidClonedMemberRetyping.retypeOne(ISymbol value, UnaryOperator<ISymbol> replacement) Re-type a single symbol, in place, when it has a type.BooleanTruthGuard.targetOf(EK9Parser.PreFlowStatementContext preFlow, Function<org.antlr.v4.runtime.tree.ParseTree, ISymbol> recordedSymbol, ISymbol ek9Boolean) The target of a Boolean truth guard, if this pre-flow is one.booleanCheck the symbol being defined against those already defined in the same module.booleanbooleanConstructors in org.ek9lang.compiler.support with parameters of type ISymbolModifierConstructorDescriptionCaptureAssignment(EK9Parser.AssignmentStatementContext statement, ISymbol property) Creates an instance of aCaptureAssignmentrecord class.IsMutexKeyType(ISymbol ek9MutexKey) IsMutexLockType(ISymbol ek9MutexLock) IsThreadSpawningCall(ISymbol ek9Tcp, ISymbol ek9Signals) OrderingUse(ISymbol type, ConceptualAccess.OrderingKind kind, MethodSymbol operator) Creates an instance of aOrderingUserecord class.ParameterisedTypeData(IToken location, ISymbol genericTypeSymbol, List<ISymbol> typeArguments) Creates an instance of aParameterisedTypeDatarecord class.Creates an instance of aReferencerecord class.ReferenceAssignment(ISymbol target, EK9Parser.ExpressionContext source) Creates an instance of aReferenceAssignmentrecord class.ToCommaSeparated(ISymbol fromType, boolean includeParenthesis) TypeReference(String kind, ISymbol type) Creates an instance of aTypeReferencerecord class.UnorderedProperty(IAggregateSymbol owner, ISymbol property) Creates an instance of aUnorderedPropertyrecord class.Use(ObjectSharing.Kind kind, ISymbol sharedWith) Creates an instance of aUserecord class.Constructor parameters in org.ek9lang.compiler.support with type arguments of type ISymbolModifierConstructorDescriptionCommonTypeDeterminationDetails(IToken lineToken, List<ISymbol> argumentSymbols, List<ISymbol> argumentTypes) Creates an instance of aCommonTypeDeterminationDetailsrecord class.ConceptualTypeReplacement(BiFunction<PossibleGenericSymbol, IToken, ISymbol> onParameterisedType) Construct the replacement with the action to apply to each rebuilt parameterised type.Creates an instance of aMappingrecord class.ParameterisedTypeData(IToken location, ISymbol genericTypeSymbol, List<ISymbol> typeArguments) Creates an instance of aParameterisedTypeDatarecord class.ParameterizedSymbolCreator(BiFunction<PossibleGenericSymbol, List<ISymbol>, String> internalNameFor) Creates an instance of aReachrecord class.Steps(List<ISymbol> closed, Optional<MethodSymbol> parentClose) Creates an instance of aStepsrecord class. -
Uses of ISymbol in org.ek9lang.compiler.support.inputvariety
Methods in org.ek9lang.compiler.support.inputvariety that return ISymbolModifier and TypeMethodDescriptionLeafPath.leafType()Returns the value of theleafTyperecord component.Methods in org.ek9lang.compiler.support.inputvariety with parameters of type ISymbolModifier and TypeMethodDescriptionInputVarietyDenominatorCalculator.forInstanceMethod(ISymbol receiverType, List<ISymbol> parameterTypes) The figures for an instance method / operator, treating the receiver type as an implicit parameterp0(design §4.5): its leaf dimensions are prepended to the argument leaves, so a no-arg instance method (e.g.booleanEquivalenceClassModel.isEnumeration(ISymbol typeSymbol) True when this type's value-classes ARE its enumeration members — i.e.EquivalenceClassModel.leafPathsOf(ISymbol typeSymbol) The same leaf dimensionsEquivalenceClassModel.leavesOf(ISymbol)counts, but asLeafPaths — each carrying the field steps walked to reach it.The scalar LEAF dimensions a type contributes to a callable's input space (design §4.5 v3.2 / §4.6) — the composition primitive.The variety of a resolved type symbol;EquivalenceClassModel.FLOORfor a null type (a parameter always has a resolved type by phase 5, so null is only a defensive guard).Method parameters in org.ek9lang.compiler.support.inputvariety with type arguments of type ISymbolModifier and TypeMethodDescriptionInputVarietyDenominatorCalculator.forInstanceMethod(ISymbol receiverType, List<ISymbol> parameterTypes) The figures for an instance method / operator, treating the receiver type as an implicit parameterp0(design §4.5): its leaf dimensions are prepended to the argument leaves, so a no-arg instance method (e.g.InputVarietyDenominatorCalculator.forParameterTypes(List<ISymbol> parameterTypes) The denominator for a construct whose parameters have the given resolved type symbols, in declaration order.Constructors in org.ek9lang.compiler.support.inputvariety with parameters of type ISymbol -
Uses of ISymbol in org.ek9lang.compiler.symbolic
Method parameters in org.ek9lang.compiler.symbolic with type arguments of type ISymbolModifier and TypeMethodDescriptionGuardCouplingReader.read(org.antlr.v4.runtime.tree.ParseTree constructCtx, List<ISymbol> callParameters, ParsedModule module) Read every coupling expressed by a control condition inconstructCtx.RequirePredicateReader.read(org.antlr.v4.runtime.tree.ParseTree constructCtx, List<ISymbol> callParameters, ParsedModule module) Read every modellablerequireprecondition inconstructCtx. -
Uses of ISymbol in org.ek9lang.compiler.symbols
Subinterfaces of ISymbol in org.ek9lang.compiler.symbolsModifier and TypeInterfaceDescriptioninterfaceInterface for an aggregate, typically a class or something like that.interfaceReally a Marker interface for generic classes and generic functions.interfaceInterface to abstract FunctionSymbol away as concrete implementation.interfaceFor symbols that are both a pure symbol but can also define a scope.Classes in org.ek9lang.compiler.symbols that implement ISymbolModifier 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).classEK9 assertDoesNotThrow expression - validates that an expression does not throw.classEK9 assertPanic expression - asserts that the wrapped expression fires anorg.ek9.lang::Panic.classEK9 assertThrows expression - captures an expected exception type and expression.classJust re-uses the bulk of method symbol for when we want to make a symbol that is a call to an actual method.classJust focuses on the ability to possible capture variables from an enclosing scope.classA very simple type that holds a single distinct value.classEK9 switch/try control type symbol - this can effectively return a value if it is configured with returning part.classWhile we don't add these in the scoped structures when compiling.classEK9 'for' type symbol - we need a scope because we declare a new variable as the loop variable.classScope for functions that are part of a module.classRepresents some type of method that exists on an aggregate type scope.classWhile we don't add these in the scoped structures when compiling.classAdded as a common symbol type for both Functions and Aggregates that could possibly be generic in nature and also be a parameterised type.classRepresents a symbol that also has a scope.classScope for callable methods (operations) that are part of a Service.classUsed when duplicate symbols are found, where we need to add a placeholder.classJust re-uses the bulk of method symbol.classIntended to model the pipeline flow in a streaming of cat or for loop though | and map etc.classEK9 switch statement - this can effectively return a value if it is configured with returning part.classA bit of a beast.classEK9 try statement - this can effectively return a value if it is configured with returning part.classModels a variable.classEK9 'while' or 'do/while' type symbol - we need a scope because we can declare new variables as part of the pre-flow semantics.Methods in org.ek9lang.compiler.symbols that return ISymbolModifier and TypeMethodDescriptionClone the symbol and re-parent if this symbol like a method should have a parent.Ek9Types.ek9Bits()Returns the value of theek9Bitsrecord component.Ek9Types.ek9Boolean()Returns the value of theek9Booleanrecord component.Ek9Types.ek9Character()Returns the value of theek9Characterrecord component.Ek9Types.ek9Comparator()Returns the value of theek9Comparatorrecord component.Ek9Types.ek9Consumer()Returns the value of theek9Consumerrecord component.Ek9Types.ek9Date()Returns the value of theek9Daterecord component.Ek9Types.ek9DateTime()Returns the value of theek9DateTimerecord component.Ek9Types.ek9Dictionary()Returns the value of theek9Dictionaryrecord component.Ek9Types.ek9DictionaryEntry()Returns the value of theek9DictionaryEntryrecord component.Ek9Types.ek9Duration()Returns the value of theek9Durationrecord component.Ek9Types.ek9Exception()Returns the value of theek9Exceptionrecord component.Ek9Types.ek9Float()Returns the value of theek9Floatrecord component.Ek9Types.ek9Function()Returns the value of theek9Functionrecord component.Ek9Types.ek9HttpContext()Returns the value of theek9HttpContextrecord component.Ek9Types.ek9HttpRequest()Returns the value of theek9HttpRequestrecord component.Ek9Types.ek9HttpResponse()Returns the value of theek9HttpResponserecord component.Ek9Types.ek9Integer()Returns the value of theek9Integerrecord component.Ek9Types.ek9IO()Returns the value of theek9IOrecord component.Ek9Types.ek9Iterator()Returns the value of theek9Iteratorrecord component.Ek9Types.ek9Json()Returns the value of theek9Jsonrecord component.Ek9Types.ek9List()Returns the value of theek9Listrecord component.Ek9Types.ek9Locale()Returns the value of theek9Localerecord component.Ek9Types.ek9Millisecond()Returns the value of theek9Millisecondrecord component.Ek9Types.ek9MutexKey()Returns the value of theek9MutexKeyrecord component.Ek9Types.ek9MutexLock()Returns the value of theek9MutexLockrecord component.Ek9Types.ek9Optional()Returns the value of theek9Optionalrecord component.Ek9Types.ek9Panic()Returns the value of theek9Panicrecord component.Ek9Types.ek9Path()Returns the value of theek9Pathrecord component.Ek9Types.ek9Predicate()Returns the value of theek9Predicaterecord component.Ek9Types.ek9PriorityQueue()Returns the value of theek9PriorityQueuerecord component.Ek9Types.ek9Privileged()Returns the value of theek9Privilegedrecord component.Ek9Types.ek9Result()Returns the value of theek9Resultrecord component.Ek9Types.ek9Routine()Returns the value of theek9Routinerecord component.Ek9Types.ek9Sensitive()Returns the value of theek9Sensitiverecord component.Ek9Types.ek9Set()Returns the value of theek9Setrecord component.Ek9Types.ek9Signals()Returns the value of theek9Signalsrecord component.Ek9Types.ek9Stderr()Returns the value of theek9Stderrrecord component.Ek9Types.ek9Stdin()Returns the value of theek9Stdinrecord component.Ek9Types.ek9Stdout()Returns the value of theek9Stdoutrecord component.Ek9Types.ek9String()Returns the value of theek9Stringrecord component.Ek9Types.ek9Supplier()Returns the value of theek9Supplierrecord component.Ek9Types.ek9Tcp()Returns the value of theek9Tcprecord component.Ek9Types.ek9TcpConnection()Returns the value of theek9TcpConnectionrecord component.Ek9Types.ek9Time()Returns the value of theek9Timerecord component.Ek9Types.ek9Udp()Returns the value of theek9Udprecord component.Ek9Types.ek9UnaryOperator()Returns the value of theek9UnaryOperatorrecord component.Ek9Types.ek9Version()Returns the value of theek9Versionrecord component.Ek9Types.ek9Void()Returns the value of theek9Voidrecord component.StreamCallSymbol.getConsumesSymbolType()StreamCallSymbol.getProducesSymbolType()RegistrationData.implementationSymbol()Returns the value of theimplementationSymbolrecord component.RegistrationData.interfaceSymbol()Returns the value of theinterfaceSymbolrecord component.default ISymbolMethods in org.ek9lang.compiler.symbols that return types with arguments of type ISymbolModifier and TypeMethodDescriptionRegistrationData.aspectSymbols()Returns the value of theaspectSymbolsrecord component.AggregateSymbol.getAllSymbolsMatchingName(String symbolName) AggregateWithTraitsSymbol.getAllSymbolsMatchingName(String symbolName) IScope.getAllSymbolsMatchingName(String symbolName) Return a list of all the symbols that match the name.ScopedSymbol.getAllSymbolsMatchingName(String symbolName) SymbolTable.getAllSymbolsMatchingName(String symbolName) ICanBeGeneric.getAnyConceptualTypeParameters()PossibleGenericSymbol.getAnyConceptualTypeParameters()If this scope has been parameterised, then go through those parameters and return a list of all those that are generic 'T' in nature and not actually concrete types.FunctionSymbol.getCallParameters()Added convenience method to make the parameters a bit more obvious.IFunctionSymbol.getCallParameters()MethodSymbol.getCallParameters()Added convenience method to make the parameters a bit more obvious.AggregateSymbol.getInjectionFields()Get all fields marked for injection on this aggregate.ParamExpressionSymbol.getParameters()AggregateSymbol.getProperties()Provides access to the properties on this aggregate - but only this aggregate.IAggregateSymbol.getProperties()Just access to the properties in this aggregate - no supers.ModuleScope.getReferencedSymbols()The declaredreferencesmanifest of this module scope — the short-name to resolved-symbol map for every reference entry.ModuleScope.getSymbolsAcrossModule()THE symbols defined in this module across ALL of its source files - use this, neverSymbolTable.getSymbolsForThisScope(), for any question about the whole module.IScope.getSymbolsForThisScope()Provide a list of all the parameters held in this scope and only this scope.ScopedSymbol.getSymbolsForThisScope()SymbolTable.getSymbolsForThisScope()Get all the symbols in this table.SymbolTable.getSymbolsForThisScopeOfCategory(SymbolCategory category) Find symbols in a specific category.AggregateSymbol.getType()FunctionSymbol.getType()ISymbol.getType()Symbol.getType()ICanBeGeneric.getTypeParameterOrArguments()PossibleGenericSymbol.getTypeParameterOrArguments()ModuleScope.referencedByModule(String moduleName, String shortName) DIAGNOSTIC ONLY - never a resolution route: a qualified name resolves only to what its module defines.IScope.resolve(SymbolSearch search) Find the nearest symbol of that name up the scope tree.MethodSymbol.resolve(SymbolSearch search) ModuleScope.resolve(SymbolSearch search) PossibleGenericSymbol.resolve(SymbolSearch search) So this is where we alter the mechanism of normal symbol resolution.ScopedSymbol.resolve(SymbolSearch search) StackConsistencyScope.resolve(SymbolSearch search) SymbolTable.resolve(SymbolSearch search) Search and resolve from a symbol search.SymbolTable.resolveByShortName(SymbolSearch search, String shortName) SymbolTable.resolveInThisScopeOnly(SymbolSearch)for a caller that has ALREADY established the search is for this scope and holds its unqualified name -ModuleScope, which otherwise had both re-derived on every module-scope hop.CaptureScopedSymbol.resolveExcludingCapturedVariables(SymbolSearch search) ICanCaptureVariables.resolveExcludingCapturedVariables(SymbolSearch search) Try and resolve a symbol but exclude looking in captured variables.StackConsistencyScope.resolveExcludingCapturedVariables(SymbolSearch search) PossibleGenericSymbol.resolveFromParameterTypes(SymbolSearch search) Used when the type/function is one that is generic/template.ModuleScope.resolveInThisModuleOnly(SymbolSearch search) Looks to resolve search in either the references held or the symbols in all the scopes for this module.CaptureScopedSymbol.resolveInThisScopeOnly(SymbolSearch search) FunctionSymbol.resolveInThisScopeOnly(SymbolSearch search) IScope.resolveInThisScopeOnly(SymbolSearch search) Just look in own scope.MethodSymbol.resolveInThisScopeOnly(SymbolSearch search) ModuleScope.resolveInThisScopeOnly(SymbolSearch search) Just does a search in this particular module scope.PossibleGenericSymbol.resolveInThisScopeOnly(SymbolSearch search) ScopedSymbol.resolveInThisScopeOnly(SymbolSearch search) StackConsistencyScope.resolveInThisScopeOnly(SymbolSearch search) SymbolTable.resolveInThisScopeOnly(SymbolSearch search) Resolve a symbol in this symbol table only.AggregateSymbol.resolveMember(SymbolSearch search) Just try and resolve a member in this or super scopes.AggregateWithTraitsSymbol.resolveMember(SymbolSearch search) IAggregateSymbol.resolveMember(SymbolSearch search) Just try and resolve a member in this or super scopes.IScope.resolveMember(SymbolSearch search) Just resolve on this or supers/traits - but not anything outside of the class hierarchy.ScopedSymbol.resolveMember(SymbolSearch search) SymbolTable.resolveMember(SymbolSearch search) ModuleScope.resolveOrDefine(PossibleGenericSymbol parameterisedSymbol, SemanticErrorReporter errorListener) Used when resolving or needing to define a parameterised type, like 'List of String' for example.ModuleScope.resolveReferenceInThisScopeOnly(SymbolSearch search) Does a check if there is a references of that symbol already held in this module scope.CaptureScope.resolveWithEnclosingScope(SymbolSearch search) LocalScope.resolveWithEnclosingScope(SymbolSearch search) ModuleScope.resolveWithEnclosingScope(SymbolSearch search) SymbolTable.resolveWithEnclosingScope(SymbolSearch search) This class is the root and so there is no enclosing scope.AggregateWithTraitsSymbol.resolveWithParentScope(SymbolSearch search) Resolve using super aggregate and or any traits we have.FunctionSymbol.resolveWithParentScope(SymbolSearch search) A function's body never resolves names through its super function - only through its enclosing scope.ScopedSymbol.resolveWithParentScope(SymbolSearch search) Resolve with super type/function or via enclosing scope.Methods in org.ek9lang.compiler.symbols with parameters of type ISymbolModifier and TypeMethodDescriptionvoidAggregateSymbol.addInjectionField(ISymbol field) Record that a field on this aggregate is marked for injection.voidParamExpressionSymbol.addParameter(ISymbol symbol) voidICanBeGeneric.addTypeParameterOrArgument(ISymbol typeParameterOrArgument) voidPossibleGenericSymbol.addTypeParameterOrArgument(ISymbol typeParameterOrArgument) Add a parameter type to this scope.voidvoidvoidDefine a Symbol in this scope.voidEvery module-level define invalidates any memoised "absent" that was answered from this module.voidvoidbooleanModuleScope.defineOrError(ISymbol symbol, SymbolChecker symbolChecker) Defines a new symbol and returns true if all when OK But if there were errors created then false is returned.voidModuleScope.defineReference(IToken token, ISymbol symbol) Add a reference to another construct in another module, so it can be used in shorthand form in this module.booleanModuleScope.errorsIfNameDiffersOnlyByCase(ISymbol symbol, SymbolChecker symbolChecker) THE case-variant name check for module scope - call this from every path that defines a module-level construct, including any that bypassesModuleScope.defineOrError(ISymbol, SymbolChecker)with a rawdefine.doubleAggregateWithTraitsSymbol.getAssignableCostTo(ISymbol s) doubleFunctionSymbol.getAssignableCostTo(ISymbol s) doubleISymbol.getAssignableCostTo(ISymbol s) doubleSymbol.getAssignableCostTo(ISymbol s) doubleAggregateSymbol.getUnCoercedAssignableCostTo(ISymbol s) doubleAggregateWithTraitsSymbol.getUnCoercedAssignableCostTo(ISymbol s) doubleFunctionSymbol.getUnCoercedAssignableCostTo(ISymbol s) doubleISymbol.getUnCoercedAssignableCostTo(ISymbol s) doubleSymbol.getUnCoercedAssignableCostTo(ISymbol s) booleanISymbol.isAssignableTo(ISymbol s) booleanSymbol.isAssignableTo(ISymbol s) booleanISymbol.isExactSameType(ISymbol symbolType) If is the symbol is an exact match.booleanSymbol.isExactSameType(ISymbol symbolType) Checks if the type match exactly.booleanISymbol.isPromotionSupported(ISymbol s) For some symbols we might support the _promote method via coercion.booleanSymbol.isPromotionSupported(ISymbol s) voidStreamCallSymbol.setConsumesSymbolType(ISymbol consumesSymbolType) This sets the type of symbol that stream can consume.voidStreamCallSymbol.setProducesSymbolType(ISymbol producesSymbolType) This sets the type of symbol that stream can produce.default ISymbolMethod parameters in org.ek9lang.compiler.symbols with type arguments of type ISymbolModifier and TypeMethodDescriptionprotected StringFunctionSymbol.doGetFriendlyName(String withName, Optional<ISymbol> theType) protected StringMethodSymbol.doGetFriendlyName(String withName, Optional<ISymbol> theType) doubleISymbol.getAssignableCostTo(Optional<ISymbol> s) doubleSymbol.getAssignableCostTo(Optional<ISymbol> s) protected StringSymbol.getSymbolTypeAsString(Optional<ISymbol> type) booleanISymbol.isAssignableTo(Optional<ISymbol> s) booleanSymbol.isAssignableTo(Optional<ISymbol> s) booleanMethodSymbol.isParameterSignatureMatchTo(List<ISymbol> params) Very important method; that checks if the parameter list provided can match the parameters declared for this method.booleanFunctionSymbol.isSignatureMatchTo(Optional<ISymbol> theirReturnType, List<ISymbol> theirParams) Check if the parameter types and return types match.booleanFunctionSymbol.isSignatureMatchTo(Optional<ISymbol> theirReturnType, List<ISymbol> theirParams) Check if the parameter types and return types match.voidMethodSymbol.setCallParameters(List<ISymbol> params) Typically used when making synthetic methods you want to add in all the params from another method or something.Constructors in org.ek9lang.compiler.symbols with parameters of type ISymbolModifierConstructorDescriptionConstantSymbol(String name, ISymbol type) ConstantSymbol(String name, ISymbol type, boolean fromLiteral) Ek9Types(AnyTypeSymbol ek9Any, ISymbol ek9Void, ISymbol ek9Boolean, ISymbol ek9Integer, ISymbol ek9Float, ISymbol ek9String, ISymbol ek9Character, ISymbol ek9Bits, ISymbol ek9Date, ISymbol ek9DateTime, ISymbol ek9Time, ISymbol ek9Duration, ISymbol ek9Json, ISymbol ek9Millisecond, ISymbol ek9Path, ISymbol ek9Version, ISymbol ek9HttpRequest, ISymbol ek9HttpResponse, ISymbol ek9HttpContext, ISymbol ek9Exception, ISymbol ek9Panic, ISymbol ek9List, ISymbol ek9Set, ISymbol ek9PriorityQueue, ISymbol ek9MutexLock, ISymbol ek9MutexKey, ISymbol ek9Tcp, ISymbol ek9Signals, ISymbol ek9Iterator, ISymbol ek9Optional, ISymbol ek9Dictionary, ISymbol ek9DictionaryEntry, ISymbol ek9Result, ISymbol ek9Supplier, ISymbol ek9Consumer, ISymbol ek9Function, ISymbol ek9Routine, ISymbol ek9UnaryOperator, ISymbol ek9Predicate, ISymbol ek9Comparator, ISymbol ek9IO, ISymbol ek9Sensitive, ISymbol ek9Privileged, ISymbol ek9Stdin, ISymbol ek9Stdout, ISymbol ek9Stderr, ISymbol ek9Udp, ISymbol ek9TcpConnection, ISymbol ek9Locale) Creates an instance of aEk9Typesrecord class.ExpressionSymbol(ISymbol symbol) Create a new expression based around an existing symbol.MethodSymbol(String name, ISymbol type, IScope enclosingScope) Typically used for cloning constructors.RegistrationData(ISymbol implementationSymbol, ISymbol interfaceSymbol, List<ISymbol> aspectSymbols, IToken sourceToken) Creates an instance of aRegistrationDatarecord class.VariableSymbol(String name, ISymbol type) Constructor parameters in org.ek9lang.compiler.symbols with type arguments of type ISymbolModifierConstructorDescriptionAggregateSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) A simple straight forward aggregate type, like a class or record.AggregateSymbol(String name, IScope enclosingScope, List<ISymbol> typeParameterOrArguments) An aggregate that can be parameterised, i.e.AggregateWithTraitsSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) CaptureScopedSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) ConstantSymbol(String name, Optional<ISymbol> type) ConstantSymbol(String name, Optional<ISymbol> type, boolean fromLiteral) Construction of a Constant.MethodSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) Create new method symbol of a specific name with an enclosing scope (i.e.PossibleGenericSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) RegistrationData(ISymbol implementationSymbol, ISymbol interfaceSymbol, List<ISymbol> aspectSymbols, IToken sourceToken) Creates an instance of aRegistrationDatarecord class.ScopedSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) ServiceOperationSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) VariableSymbol(String name, Optional<ISymbol> type)