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 classTest if a symbol is externally implemented.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 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) 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.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.booleanSymbolsAndScopes.isErrorResultAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isGetOptionalAccessSafe(ISymbol identifierSymbol) 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.booleanSymbolsAndScopes.isNextIteratorAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isOkResultAccessSafe(ISymbol identifierSymbol) 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) 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.booleanbooleanbooleanbooleanbooleanbooleanTypeNameOrException.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) 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 an aggregate and a symbol, this predicate checks if the symbol is a property/field of that aggregate.(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 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.voidConstructorThisEscapeOrError.accept(EK9Parser.ParamExpressionContext paramExpression, ISymbol resolvedTarget) voidvoidvoidvoidvoidvoidSetTypeFromReturningParam.accept(ISymbol symbol, EK9Parser.ReturningParamContext ctx) voidvoid(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) booleanCaptureEvaluationScope.isAccessibleWhereEvaluated(org.antlr.v4.runtime.tree.ParseTree node, ISymbol propertyField) True when the code that evaluatesnodeholds the property field (a capture or an own property).(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 '#^'.(package private) voidConstructorThisEscapeOrError.recordDynamicClass(ISymbol target, EK9Parser.AssignmentExpressionContext assignment) Inside a constructor, mark a local that is given a dynamic class capturing 'this'.booleanbooleanIsPropertyOfAggregate.test(IAggregateSymbol aggregate, ISymbol possibleProperty) booleanbooleanbooleanTest if the symbol has a Void type.(package private) booleanIsConvertableToStringOrError.testAndSetFlags(IToken errorReportingLocation, ISymbol typeSymbol, ExpressionSymbol expressionSymbol) Test if the type can be converted to String and optionally set flags on the expression symbol.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) 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
Constructors in org.ek9lang.compiler.phase4 with parameters of type ISymbolModifierConstructorDescription(package private)ParameterisedTypeOrError(ISymbol ek9Any, ErrorListener errorListener, Map<IAggregateSymbol, List<MethodSymbol>> accessedMethodsByT) 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.ConstrainedConstructionResolver.Site.constructorParamType()Returns the value of theconstructorParamTyperecord component.SafeAccessConjuncts.Proof.symbol()Returns the value of thesymbolrecord component.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.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.voidvoidintInheritanceDepthCalculator.applyAsInt(ISymbol symbol) Calculate the inheritance depth for a symbol.protected voidAbstractSafeSymbolMarker.assessIsSetCall(ISymbol toBeAssessed, IScope scopeMadeSafe) (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.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).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) 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) 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.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) 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.(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)HasTypeOfGeneric(ISymbol matchType) Constructor to check if symbol has a type that matches the use of the match generic type.(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 ISymbol -
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 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.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.recordMayValues(ISymbol symbol, Set<Object> values) Record thatsymbol's value is not known exactly, but is one ofvalues.voidValueTrackingAnalyzer.recordUnknownAssignment(ISymbol symbol) voidValueTrackingAnalyzer.registerModuleConstant(ISymbol symbol, AbstractValue abstractValue) Register a module-level constant (from defines constant blocks).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.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. -
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.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 and manage memory.(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) StringScenario2WrapperHelper.generateVirtualCall(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 on a target and manage its result as a BORROW (RETAIN + SCOPE_REGISTER).(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) 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. -
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.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.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.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.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).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.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 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.TerminalSetup.consumesType()Returns the value of theconsumesTyperecord component.(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) 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, 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).RangeIterationHelper.generateBodySetup(String loopVariableName, String currentTemp, ISymbol rangeType, DebugInfo debugInfo) Generate body setup: loopVariable becomes a FRESH per-iteration value copied from the counter.(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.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) UniqStageWrapper.wrap(StageWrapParams params, String pipelineItemVar, ISymbol elementType, StageState stageState) (package private) StageWrapResultStreamStageDispatcher.wrapWithStages(List<EK9Parser.StreamPartContext> stages, List<IRInstr> innerBody, String pipelineItemVar, ISymbol elementType, DebugInfo debugInfo, List<StageState> stageStates) Wrap inner body instructions with intermediate pipeline stages in reverse order.(package private) StageWrapResultStreamStageDispatcher.wrapWithStages(List<EK9Parser.StreamPartContext> stages, 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, 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, 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 startTemp, String endTemp, String byTemp, String directionTemp, String currentTemp, ISymbol rangeType, ISymbol byType) 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, boolean promotionRequired) 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?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.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.Method parameters in org.ek9lang.compiler.phase7.support with type arguments of type ISymbolModifier and TypeMethodDescriptionSanitizedParameterPrologue.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.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.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. -
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).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.RecordedSymbols.Reference.symbol()Returns the value of thesymbolrecord component.ReferenceAssignment.target()Returns the value of thetargetrecord 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.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.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) 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).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.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.Methods in org.ek9lang.compiler.support with parameters of type ISymbolModifier and TypeMethodDescriptionAggregateManipulator.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.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 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.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.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 Optional<MethodSymbol> Sameness.inheritedSameness(IAggregateSymbol aggregate, ISymbol ek9Any) The concrete 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.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 booleanCapturedVariables.isCaptureOf(ISymbol candidate, ICanCaptureVariables capturer) True whencandidateis, by identity, one of the variablescapturercaptured.static booleanTypeCoercions.isCoercible(ISymbol from, ISymbol to) Can the 'from' token type be coerced to the 'to' type.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 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 booleanWas this call completed from its declared target.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 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 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 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 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 voidRecord that this call was completed from its declared target.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 booleanPolymorphicCopy.needsCopyAccepts(IAggregateSymbol owner, ISymbol ek9Any) Does the owner get a_copyAccepts? Only where one can be asked.SymbolFactory.newExpressionSymbol(ISymbol fromSymbol) Create a new expression around a symbol.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 intThe symbol's measured complexity, or 0 when it was never measured (or is unparseable).static ErrorListenerOwningErrorListener.of(ISymbol symbol, ErrorListener fallback) The error listener of the source that declaressymbol, orfallbackif it has none.static Optional<PossibleGenericSymbol> TargetTypedConstruction.parameterisationOf(ISymbol generic, ISymbol target) THE strict condition: the target type is a parameterisation of exactly this generic (not a sub or super type).TypeCoercions.promotionTarget(ISymbol from) The single type this 'from' type promotes to via its#^operator, or empty if it has none.static voidRecord a complexity against a symbol that phase 5 will never visit.static voidClonedMemberRetyping.retypeOne(ISymbol value, UnaryOperator<ISymbol> replacement) Re-type a single symbol, in place, when it has a type.static booleanCopyConstructor.takesExactlyOne(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<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 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.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.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.SymbolFactory.newExpressionSymbol(IToken token, String name, Optional<ISymbol> ofType) Create a new expression symbol place-holder.SymbolFactory.newParameterisedSymbol(PossibleGenericSymbol genericType, List<ISymbol> typeArguments) 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) 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.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) 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)