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).
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.
K - Intermediate Representation Generation.
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
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 TypeMethodDescriptionCompilableProgram.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 externally implemented.final classTest if a symbol is externally implemented.final classAccess the Symbol for the lhs of the preflow statement.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) Methods in org.ek9lang.compiler.common that return types with arguments of type ISymbolModifier and TypeMethodDescriptionCodeFlowAnalyzer.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, ErrorListener errorListener) 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 TypeMethodDescriptionbooleanCodeFlowAnalyzer.doesSymbolMeetAcceptableCriteria(ISymbol identifierSymbol, IScope inScope) booleanCodeFlowMap.doesSymbolMeetAcceptableCriteria(ISymbol identifierSymbol, IScope inScope) Check if a variable meets the criteria of being acceptable.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.booleanSymbolsAndScopes.isErrorResultAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isGetOptionalAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isNextIteratorAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isOkResultAccessSafe(ISymbol identifierSymbol) booleanSymbolsAndScopes.isSymbolAccessSafe(ISymbol identifierSymbol) true if identifier is safe to access.booleanSymbolsAndScopes.isVariableInitialised(ISymbol identifierSymbol) booleanSymbolsAndScopes.isVariableInitialised(ISymbol identifierSymbol, IScope inScope) 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.booleanbooleanbooleanConstructor parameters in org.ek9lang.compiler.common with type arguments of type ISymbolModifierConstructorDescriptionprotectedCodeFlowMap(Predicate<ISymbol> isVariableToBeChecked, Predicate<SymbolAccess> meetsCriteria, Consumer<SymbolAccess> markAsMeetingCriteria) -
Uses of ISymbol in org.ek9lang.compiler.directives
Methods in org.ek9lang.compiler.directives with parameters of type ISymbolModifier and TypeMethodDescriptionprotected voidByteCodeDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidComplexityDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidGenusDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected voidImplementsDirectiveListener.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 abstract voidResolutionDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective directive, ISymbol symbol) protected voidResolvedDirectiveListener.symbolMatch(CompilationEvent compilationEvent, ResolutionDirective directive, 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 with parameters of type ISymbolConstructors 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 methods are 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 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 classChecks for a type is resolved and is suitable genus and category.(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 TypeMethodDescriptionSuitableGenusOrError.apply(org.antlr.v4.runtime.ParserRuleContext ctx) SuitableToExtendOrError.apply(org.antlr.v4.runtime.ParserRuleContext ctx) Methods in org.ek9lang.compiler.phase2 with parameters of type ISymbolModifier and TypeMethodDescriptionvoidvoidvoidPopulateConstrainedTypeOrError.accept(AggregateSymbol newType, ISymbol constrainedType) booleanbooleanValidPathParameterOrError.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) 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 classTypically used when a direct call is being bad on the symbol.(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.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.CovarianceData.fromVar()Returns the value of thefromVarrecord component.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) DelegateFunctionData.callArgumentTypes()Returns the value of thecallArgumentTypesrecord component.FunctionData.callArgumentTypes()Returns the value of thecallArgumentTypesrecord component.ParametersData.from()Returns the value of thefromrecord component.OperatorTest.getSymbolType(ISymbol symbol) ParametersData.to()Returns the value of thetorecord component.Methods in org.ek9lang.compiler.phase3 with parameters of type ISymbolModifier and TypeMethodDescriptionvoidvoidvoidvoidvoidvoidvoidSetTypeFromReturningParam.accept(ISymbol symbol, EK9Parser.ReturningParamContext ctx) voidvoidprotected 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) booleanbooleanIsPropertyOfAggregate.test(IAggregateSymbol aggregate, ISymbol possibleProperty) booleanbooleanMethod 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) Creates an instance of aCheckOperatorDatarecord class.(package private)CovarianceData(IToken token, String errorMessage, ISymbol fromVar, ISymbol toVar) 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)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)Creates an instance of aParametersDatarecord 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) -
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 classExtracts the guard variable if there is a guard expression.(package private) final class(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 types with arguments of type ISymbolModifier and TypeMethodDescriptionGetGuardVariable.apply(EK9Parser.PreFlowStatementContext ctx) PossibleExpressionConstruct.getGuardExpressionVariable(EK9Parser.PreFlowAndControlContext ctx) PossibleExpressionConstruct.getGuardExpressionVariable(EK9Parser.PreFlowStatementContext ctx) Methods in org.ek9lang.compiler.phase5 with parameters of type ISymbolModifier and TypeMethodDescriptionvoidvoidprotected voidAbstractSafeSymbolMarker.assessIsSetCall(ISymbol toBeAssessed, IScope scopeMadeSafe) protected booleanSafeSymbolAccess.isAccessUnSafe(ISymbol calledFromSymbol, String methodName) protected booleanPossibleExpressionConstruct.isVariableInitialisedInScopes(CodeFlowAnalyzer analyzer, ISymbol variable, List<IScope> scopes) 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.booleanbooleanConstructors in org.ek9lang.compiler.phase5 with parameters of type ISymbolModifierConstructorDescription(package private)HasTypeOfGeneric(ISymbol matchType) Constructor to check if symbol has a type that matches the use of the match generic type. -
Uses of ISymbol in org.ek9lang.compiler.phase7
Methods in org.ek9lang.compiler.phase7 with parameters of type ISymbolModifier and TypeMethodDescriptionprotected voidAbstractDfnGenerator.createInitOperation(IRConstruct construct, IScope aggregateSymbol, ISymbol superType) Create c_init operation for class/static initialization.protected voidAbstractDfnGenerator.processAsMethodOrOperator(IRConstruct construct, ISymbol symbol, EK9Parser.OperationDetailsContext ctx) -
Uses of ISymbol in org.ek9lang.compiler.phase7.calls
Methods in org.ek9lang.compiler.phase7.calls that return ISymbolModifier and TypeMethodDescriptionCallContext.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.Methods in org.ek9lang.compiler.phase7.calls with parameters of type ISymbolModifier and TypeMethodDescriptionstatic 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)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.forUnaryOperation(ISymbol targetType, String methodName, String targetVariable, ISymbol returnType, String scopeId) Create context for unary operation: target.method()Method parameters in org.ek9lang.compiler.phase7.calls with type arguments of type ISymbolModifier and TypeMethodDescriptionstatic 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...)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) 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) Creates an instance of aCallContextrecord class. -
Uses of ISymbol in org.ek9lang.compiler.phase7.generation
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. -
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 TypeMethodDescriptionprotected ISymbolAbstractGenerator.extractReturnType(org.antlr.v4.runtime.tree.ParseTree ctx, ISymbol fallbackSymbol) Extract return type from a CallSymbol's resolved method.protected ISymbolAbstractGenerator.getRecordedSymbolOrException(org.antlr.v4.runtime.tree.ParseTree node) Safely retrieve the recorded symbol for a parse tree node with automatic validation.SwitchStatementGenerator.EvalVariable.typeSymbol()Returns the value of thetypeSymbolrecord component.Methods in org.ek9lang.compiler.phase7.generator with parameters of type ISymbolModifier and TypeMethodDescriptionAssignExpressionToSymbol.apply(ISymbol lhsSymbol, EK9Parser.AssignmentExpressionContext ctx) protected ISymbolAbstractGenerator.extractReturnType(org.antlr.v4.runtime.tree.ParseTree ctx, ISymbol fallbackSymbol) Extract return type from a CallSymbol's resolved method.ControlFlowChainGenerator.generateGuardedAssignment(ISymbol lhsSymbol, List<IRInstr> assignmentEvaluation, String assignmentResult, DebugInfo debugInfo) Generate SWITCH_CHAIN_BLOCK for guarded assignment (:=?).ControlFlowChainGenerator.generateQuestionOperatorForVariable(ISymbol variableSymbol, String resultVariable, DebugInfo debugInfo) Generate SWITCH_CHAIN_BLOCK for Question operator applied to a variable.Constructors in org.ek9lang.compiler.phase7.generator with parameters of type ISymbolModifierConstructorDescriptionEvalVariable(String name, String type, ISymbol typeSymbol) Creates an instance of aEvalVariablerecord 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.classChecks if the ISymbol as a type passed in is deemed to be an implicit super.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.DirectionCheckParams.integerType()Returns the value of theintegerTyperecord component.BinaryOperatorParams.leftType()Returns the value of theleftTyperecord component.ComparisonParams.leftType()Returns the value of theleftTyperecord component.GuardedAssignmentDetails.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.Methods in org.ek9lang.compiler.phase7.support that return types with arguments of type ISymbolModifier and TypeMethodDescriptionArgumentDetails.argumentSymbols()Returns the value of theargumentSymbolsrecord component.Methods in org.ek9lang.compiler.phase7.support with parameters of type ISymbolModifier and TypeMethodDescriptionvoidbooleanConstructors in org.ek9lang.compiler.phase7.support with parameters of type ISymbolModifierConstructorDescriptionBinaryOperatorParams(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.GuardedAssignmentDetails(ISymbol lhsSymbol, EK9Parser.AssignmentExpressionContext assignmentExpression) Creates an instance of aGuardedAssignmentDetailsrecord class.IncrementParams(String counterVar, String operator, ISymbol counterType, String incrementResultTemp, 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.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.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.classAttempts to find a common type from the CommonTypeDeterminationDetails or issues errors.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.classExtracts a string for the form "on line 6 in 'filename.ek9'".classDesigned to check if variable name and method names collide with Type/Function names.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 TypeMethodDescriptionParameterisedTypeData.genericTypeSymbol()Returns the value of thegenericTypeSymbolrecord component.Methods in org.ek9lang.compiler.support that return types with arguments of type ISymbolModifier and TypeMethodDescriptionCommonTypeOrError.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.CommonFactory.getDefaultOperatorInitializer(IToken startToken) 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.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.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.protected voidCommonFactory.configureSymbol(ISymbol symbol, IToken start) protected List<AggregateSymbol> CommonFactory.createAndRegisterParameterisedSymbols(EK9Parser.ParameterisedParamsContext ctx, ISymbol functionOrClass, IScope scope) 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.static booleanTypeCoercions.isCoercible(ISymbol from, ISymbol to) Can the 'from' token type be coerced to the 'to' type.SymbolFactory.newExpressionSymbol(ISymbol fromSymbol) Create a new expression around a symbol.booleanCheck for exising symbol in the scope.booleanbooleanbooleanbooleanMethod 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) 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.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.SymbolFactory.newExpressionSymbol(IToken token, String name, Optional<ISymbol> ofType) Create a new expression symbol place-holder.SymbolFactory.newParameterisedSymbol(PossibleGenericSymbol genericType, List<ISymbol> typeArguments) booleanbooleanConstructors in org.ek9lang.compiler.support with parameters of type ISymbolModifierConstructorDescriptionParameterisedTypeData(IToken location, ISymbol genericTypeSymbol, List<ISymbol> typeArguments) Creates an instance of aParameterisedTypeDatarecord class.ToCommaSeparated(ISymbol fromType, boolean includeParenthesis) 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.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) -
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).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.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.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.ek9Millisecond()Returns the value of theek9Millisecondrecord component.Ek9Types.ek9Optional()Returns the value of theek9Optionalrecord component.Ek9Types.ek9Path()Returns the value of theek9Pathrecord component.Ek9Types.ek9Predicate()Returns the value of theek9Predicaterecord component.Ek9Types.ek9Result()Returns the value of theek9Resultrecord component.Ek9Types.ek9Routine()Returns the value of theek9Routinerecord component.Ek9Types.ek9String()Returns the value of theek9Stringrecord component.Ek9Types.ek9Supplier()Returns the value of theek9Supplierrecord component.Ek9Types.ek9Time()Returns the value of theek9Timerecord 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()default ISymbolMethods in org.ek9lang.compiler.symbols that return types with arguments of type ISymbolModifier and TypeMethodDescriptionAggregateSymbol.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.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.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()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.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, ErrorListener 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.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 TypeMethodDescriptionvoidParamExpressionSymbol.addParameter(ISymbol symbol) voidICanBeGeneric.addTypeParameterOrArgument(ISymbol typeParameterOrArgument) voidPossibleGenericSymbol.addTypeParameterOrArgument(ISymbol typeParameterOrArgument) Add a parameter type to this scope.voidvoidvoidDefine a Symbol in this scope.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.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 ek9Date, ISymbol ek9DateTime, ISymbol ek9Time, ISymbol ek9Duration, ISymbol ek9Json, ISymbol ek9Millisecond, ISymbol ek9Path, ISymbol ek9Version, ISymbol ek9HttpRequest, ISymbol ek9HttpResponse, ISymbol ek9Exception, ISymbol ek9List, 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) 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.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) ScopedSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) ServiceOperationSymbol(String name, Optional<ISymbol> type, IScope enclosingScope) VariableSymbol(String name, Optional<ISymbol> type)