Uses of Interface
org.ek9lang.compiler.symbols.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 phase1 processing should have defined
most of the explicitly defined symbols, so they should be resolvable.
G - Full Symbol Resolution can now take place.
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
Modifier 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.Modifier 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.Modifier and TypeMethodDescriptionvoid
ParsedModule.recordSymbol
(org.antlr.v4.runtime.tree.ParseTree node, ISymbol symbol) Record a particular node context with a particular symbol.void
ParsedModuleTransientData.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
Modifier and TypeMethodDescriptionTypedSymbolAccess.getRecordedAndTypedSymbol
(org.antlr.v4.runtime.tree.ParseTree node) Gets any symbol associated with this node.SymbolsAndScopes.getRecordedSymbol
(org.antlr.v4.runtime.tree.ParseTree node) Modifier 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).Modifier and TypeMethodDescriptionboolean
CodeFlowAnalyzer.doesSymbolMeetAcceptableCriteria
(ISymbol identifierSymbol, IScope inScope) boolean
CodeFlowMap.doesSymbolMeetAcceptableCriteria
(ISymbol identifierSymbol, IScope inScope) Check if a variable meets the criteria of being acceptable.void
SymbolsAndScopes.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.void
SymbolsAndScopes.enterNewLiteral
(ISymbol symbol, org.antlr.v4.runtime.tree.ParseTree node) For literals, we only record in the parsedModule.void
SymbolsAndScopes.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.boolean
SymbolsAndScopes.isSymbolAccessSafe
(ISymbol identifierSymbol, IScope inScope) true if identifier is safe to access.boolean
SymbolsAndScopes.isVariableInitialised
(ISymbol identifierSymbol) boolean
SymbolsAndScopes.isVariableInitialised
(ISymbol identifierSymbol, IScope inScope) void
SymbolsAndScopes.markSymbolAccessSafe
(ISymbol identifierSymbol, IScope inScope) Record an identifier as being safe to access.void
SymbolsAndScopes.markSymbolAsInitialised
(ISymbol identifierSymbol, IScope inScope) Record an identifier was initialised.void
CodeFlowAnalyzer.markSymbolAsMeetingAcceptableCriteria
(ISymbol identifierSymbol, IScope inScope) void
CodeFlowMap.markSymbolAsMeetingAcceptableCriteria
(ISymbol identifierSymbol, IScope inScope) Ensures that an identifier symbol is now marked as meeting the criteria of being acceptable.void
TypedSymbolAccess.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.void
CodeFlowAnalyzer.recordSymbol
(ISymbol identifierSymbol, IScope inScope) void
CodeFlowMap.recordSymbol
(ISymbol identifierSymbol, IScope inScope) Records a symbol against the specific scope if it a variable to be analysed.void
SymbolsAndScopes.recordSymbol
(ISymbol symbol, org.antlr.v4.runtime.tree.ParseTree node) Record a symbol against a specific node (so it can be looked up later).void
SymbolsAndScopes.recordSymbolAssignment
(ISymbol identifierSymbol) Record an identifier was assigned and therefore initialised.void
SymbolsAndScopes.recordSymbolDeclaration
(ISymbol identifierSymbol) Records a variable against the appropriate scope.void
SymbolsAndScopes.recordSymbolDeclaration
(ISymbol identifierSymbol, IScope inScope) Record variable declaration against a specific scope.boolean
boolean
boolean
ModifierConstructorDescriptionprotected
CodeFlowMap
(Predicate<ISymbol> isVariableToBeChecked, Predicate<SymbolAccess> meetsCriteria, Consumer<SymbolAccess> markAsMeetingCriteria) -
Uses of ISymbol in org.ek9lang.compiler.directives
Modifier and TypeMethodDescriptionprotected void
GenusDirectiveListener.symbolMatch
(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected void
ImplementsDirectiveListener.symbolMatch
(CompilationEvent compilationEvent, ResolutionDirective resolutionDirective, ISymbol symbol) protected void
NotResolvedDirectiveListener.symbolMatch
(CompilationEvent compilationEvent, ResolutionDirective directive, ISymbol symbol) protected abstract void
ResolutionDirectiveListener.symbolMatch
(CompilationEvent compilationEvent, ResolutionDirective directive, ISymbol symbol) protected void
ResolvedDirectiveListener.symbolMatch
(CompilationEvent compilationEvent, ResolutionDirective directive, ISymbol symbol) -
Uses of ISymbol in org.ek9lang.compiler.phase1
Modifier and TypeMethodDescriptionConflictingTokens.symbol()
Returns the value of thesymbol
record component.ModifierConstructorDescription(package private)
ConflictingTokens
(IToken tokenInError, IToken firstUse, ISymbol symbol) Creates an instance of aConflictingTokens
record class. -
Uses of ISymbol in org.ek9lang.compiler.phase2
Modifier and TypeMethodDescriptionSuitableGenusOrError.apply
(org.antlr.v4.runtime.ParserRuleContext ctx) SuitableToExtendOrError.apply
(org.antlr.v4.runtime.ParserRuleContext ctx) Modifier and TypeMethodDescriptionvoid
void
void
PopulateConstrainedTypeOrError.accept
(AggregateSymbol newType, ISymbol constrainedType) boolean
boolean
ValidPathParameterOrError.test
(ServiceOperationSymbol operation, ISymbol param) -
Uses of ISymbol in org.ek9lang.compiler.phase3
Modifier 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 thecurrentStreamType
record component.DelegateFunctionData.delegateSymbol()
Returns the value of thedelegateSymbol
record component.CovarianceData.fromVar()
Returns the value of thefromVar
record component.ExprLeftAndRightData.left()
Returns the value of theleft
record component.TypeCompatibilityData.lhs()
Returns the value of thelhs
record component.TypeCompatibilityData.rhs()
Returns the value of therhs
record component.ExprLeftAndRightData.right()
Returns the value of theright
record component.CheckOperatorData.symbol()
Returns the value of thesymbol
record component.SymbolAccessData.symbol()
Returns the value of thesymbol
record component.StreamAggregateCheckData.symbolType()
Returns the value of thesymbolType
record component.CovarianceData.toVar()
Returns the value of thetoVar
record component.Modifier and TypeMethodDescriptionGetIteratorType.apply
(IAggregateSymbol aggregate) IdentifierReferenceOrError.apply
(EK9Parser.IdentifierReferenceContext ctx) RequiredOperatorPresentOrError.apply
(CheckOperatorData checkOperatorData) SymbolsFromParamExpression.apply
(EK9Parser.ParamExpressionContext ctx) DelegateFunctionData.callArgumentTypes()
Returns the value of thecallArgumentTypes
record component.FunctionData.callArgumentTypes()
Returns the value of thecallArgumentTypes
record component.ParametersData.from()
Returns the value of thefrom
record component.OperatorTest.getSymbolType
(ISymbol symbol) ParametersData.to()
Returns the value of theto
record component.Modifier and TypeMethodDescriptionvoid
void
void
void
void
void
void
SetTypeFromReturningParam.accept
(ISymbol symbol, EK9Parser.ReturningParamContext ctx) void
protected MethodSymbolSearch
ComparatorPresentOrError.getMethodSymbolSearch
(ISymbol symbolType) protected MethodSymbolSearch
DecrementPresentOrError.getMethodSymbolSearch
(ISymbol symbolType) protected MethodSymbolSearch
HashCodePresentOrError.getMethodSymbolSearch
(ISymbol symbolType) protected MethodSymbolSearch
IncrementPresentOrError.getMethodSymbolSearch
(ISymbol symbolType) protected MethodSymbolSearch
IsSetPresentOrError.getMethodSymbolSearch
(ISymbol symbolType) protected abstract MethodSymbolSearch
OperatorTest.getMethodSymbolSearch
(ISymbol symbolType) OperatorTest.getSymbolType
(ISymbol symbol) boolean
IsPropertyOfAggregate.test
(IAggregateSymbol aggregate, ISymbol possibleProperty) boolean
boolean
ModifierConstructorDescription(package private)
CheckOperatorData
(ISymbol symbol, IToken operatorUseToken, MethodSymbolSearch search) Creates an instance of aCheckOperatorData
record class.(package private)
CovarianceData
(IToken token, String errorMessage, ISymbol fromVar, ISymbol toVar) Creates an instance of aCovarianceData
record class.(package private)
DelegateFunctionData
(IToken token, ISymbol delegateSymbol, List<ISymbol> callArgumentTypes) Creates an instance of aDelegateFunctionData
record class.(package private)
ExprLeftAndRightData
(ISymbol left, ISymbol right) Creates an instance of aExprLeftAndRightData
record class.(package private)
StreamAggregateCheckData
(org.antlr.v4.runtime.Token errorLocation, IAggregateSymbol aggregateSymbol, ISymbol symbolType) Creates an instance of aStreamAggregateCheckData
record class.(package private)
StreamFunctionCheckData
(org.antlr.v4.runtime.Token errorLocation, FunctionSymbol functionSymbol, ISymbol currentStreamType) Creates an instance of aStreamFunctionCheckData
record class.(package private)
Creates an instance of aSymbolAccessData
record class.(package private)
TypeCompatibilityData
(IToken location, ISymbol lhs, ISymbol rhs) Creates an instance of aTypeCompatibilityData
record class.ModifierConstructorDescription(package private)
DelegateFunctionData
(IToken token, ISymbol delegateSymbol, List<ISymbol> callArgumentTypes) Creates an instance of aDelegateFunctionData
record class.(package private)
FunctionData
(IToken token, FunctionSymbol function, List<ISymbol> callArgumentTypes) Creates an instance of aFunctionData
record class.(package private)
Creates an instance of aParametersData
record class. -
Uses of ISymbol in org.ek9lang.compiler.phase5
Modifier and TypeMethodDescriptionGetGuardVariable.apply
(EK9Parser.PreFlowStatementContext ctx) PossibleExpressionConstruct.getGuardExpressionVariable
(EK9Parser.PreFlowAndControlContext ctx) PossibleExpressionConstruct.getGuardExpressionVariable
(EK9Parser.PreFlowStatementContext ctx) Modifier and TypeMethodDescriptionprotected boolean
PossibleExpressionConstruct.isVariableInitialisedInScopes
(CodeFlowAnalyzer analyzer, ISymbol variable, List<IScope> scopes) protected void
PossibleExpressionConstruct.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. -
Uses of ISymbol in org.ek9lang.compiler.search
Modifier 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.Modifier 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) Modifier 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.ModifierConstructorDescriptionMatchResult
(int costOfMatch, ISymbol symbol) Create a new match result of a cost to match for a symbol.MethodSymbolSearch
(String name, ISymbol ofTypeOrReturn) protected
SymbolSearch
(String name, ISymbol ofTypeOrReturn) SymbolSearch
(ISymbol exampleSymbolToMatch) Use a symbol to populate the search.ModifierConstructorDescriptionMethodSymbolSearch
(String name, Optional<ISymbol> ofTypeOrReturn) protected
SymbolSearch
(String name, Optional<ISymbol> ofTypeOrReturn) -
Uses of ISymbol in org.ek9lang.compiler.support
Modifier and TypeMethodDescriptionParameterisedTypeData.genericTypeSymbol()
Returns the value of thegenericTypeSymbol
record component.Modifier 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 theargumentSymbols
record component.CommonTypeDeterminationDetails.argumentTypes()
Returns the value of theargumentTypes
record component.AggregateFactory.resolveBoolean
(IScope scope) Resolve Boolean from cached ek9 types of full scope hierarchy resolution.AggregateFactory.resolveInteger
(IScope scope) Resolve Integer from cached ek9 types of full scope hierarchy resolution.AggregateFactory.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) AggregateFactory.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.AggregateFactory.resolveVoid
(IScope scope) Resolve Void from cached ek9 types of full scope hierarchy resolution.ParameterisedTypeData.typeArguments()
Returns the value of thetypeArguments
record component.Modifier and TypeMethodDescriptionAggregateFactory.addConstructor
(AggregateSymbol t, ISymbol s) Add a constructor to the type aggregate with a particular parameter.boolean
NoNameCollisionOrError.errorsIfResolved
(IScope inScope, ISymbol symbol, SymbolSearch search, ErrorListener.SemanticClassification classificationError) If a symbol is resolved then this will emit an error.boolean
SymbolChecker.errorsIfSymbolAlreadyDefined
(IScope inScope, ISymbol symbol, boolean limitVarSearchToBlockScope) Check for exising symbol in the scope.boolean
TypeCoercions.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.boolean
Check for exising symbol in the scope.boolean
boolean
boolean
Modifier and TypeMethodDescriptionAggregateFactory.addComparatorOperator
(IAggregateSymbol aggregateSymbol, String comparatorType, Optional<ISymbol> returnType) Adds a form of a comparison operator.void
AggregateFactory.addComparatorOperator
(IAggregateSymbol aggregateSymbol, IAggregateSymbol arg0, String comparatorType, Optional<ISymbol> returnType) Adds a form of a comparison operator.AggregateFactory.addConstructor
(AggregateSymbol t, Optional<ISymbol> s) Add another constructor to type t, but passing in an s as the value in the construction.void
AggregateFactory.addConstructorIfRequired
(IAggregateSymbol aggregateSymbol, List<ISymbol> constructorArguments, boolean synthetic) Add a new constructor if not present, marked as synthetic.AggregateFactory.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.AggregateFactory.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.AggregateFactory.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.void
AggregateFactory.addSyntheticConstructorIfRequired
(IAggregateSymbol aggregateSymbol, List<ISymbol> constructorArguments) Add a synthetic constructor, if a constructor is not present.InternalNameFor.apply
(PossibleGenericSymbol possibleGenericSymbol, List<ISymbol> typeArguments) NameForParameterisedType.apply
(PossibleGenericSymbol possibleGenericSymbol, List<ISymbol> typeArguments) ParameterizedSymbolCreator.apply
(PossibleGenericSymbol possibleGenericSymbol, List<ISymbol> typeArguments) AggregateFactory.createPureAcceptSameTypeOperatorAndReturnType
(IAggregateSymbol aggregateSymbol, String comparatorType, Optional<ISymbol> returnType) Creates a pure method with an argument the same as the main type.AggregateFactory.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.AggregateFactory.createPurePublicSimpleOperator
(IAggregateSymbol aggregateSymbol, String methodName, Optional<ISymbol> returnType) Just creates a public operator with the name specified.double
SymbolMatcher.getWeightOfMatch
(Optional<ISymbol> fromSymbol, Optional<ISymbol> toSymbol) Calculates te weight of matching two symbols, which may or may not be present.double
SymbolMatcher.getWeightOfParameterMatch
(List<ISymbol> fromSymbols, List<ISymbol> toSymbols) Calculates the weight of matching these two lists of parameters.boolean
TypeCoercions.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) boolean
ModifierConstructorDescriptionParameterisedTypeData
(IToken location, ISymbol genericTypeSymbol, List<ISymbol> typeArguments) Creates an instance of aParameterisedTypeData
record class.ToCommaSeparated
(ISymbol fromType, boolean includeParenthesis) ModifierConstructorDescriptionCommonTypeDeterminationDetails
(IToken lineToken, List<ISymbol> argumentSymbols, List<ISymbol> argumentTypes) Creates an instance of aCommonTypeDeterminationDetails
record class.ParameterisedTypeData
(IToken location, ISymbol genericTypeSymbol, List<ISymbol> typeArguments) Creates an instance of aParameterisedTypeData
record class.ParameterizedSymbolCreator
(BiFunction<PossibleGenericSymbol, List<ISymbol>, String> internalNameFor) -
Uses of ISymbol in org.ek9lang.compiler.symbols
Modifier and TypeInterfaceDescriptioninterface
Interface for an aggregate, typically a class or something like that.interface
Really a Marker interface for generic classes and generic functions.interface
For symbols that are both a pure symbol but can also define a scope.Modifier and TypeClassDescriptionclass
This is typically a 'class' or an interface type where it can include the definitions of new properties.class
An aggregate, but one that can have zero or more traits (like interfaces).class
Just re-uses the bulk of method symbol for when we want to make a symbol that is a call to an actual method.class
Just focuses on the ability to possible capture variables from an enclosing scope.class
A very simple type that holds a single distinct value.class
EK9 switch/try control type symbol - this can effectively return a value if it is configured with returning part.class
While we don't add these in the scoped structures when compiling.class
EK9 'for' type symbol - we need a scope because we declare a new variable as the loop variable.class
Scope for functions that are part of a module.class
Represents some type of method that exists on an aggregate type scope.class
While we don't add these in the scoped structures when compiling.class
Added as a common symbol type for both Functions and Aggregates that could possibly be generic in nature and also be a parameterised type.class
Represents a symbol that also has a scope.class
Scope for callable methods (operations) that are part of a Service.class
Used when duplicate symbols are found, where we need to add a placeholder.class
Just re-uses the bulk of method symbol.class
Intended to model the pipeline flow in a streaming of cat or for loop though | and map etc.class
EK9 switch statement - this can effectively return a value if it is configured with returning part.class
A bit of a beast.class
EK9 try statement - this can effectively return a value if it is configured with returning part.class
Models a variable.class
EK9 'while' or 'do/while' type symbol - we need a scope because we can declare new variables as part of the pre-flow semantics.Modifier and TypeMethodDescriptionClone the symbol and re-parent if this symbol like a method should have a parent.Ek9Types.ek9Boolean()
Returns the value of theek9Boolean
record component.Ek9Types.ek9Character()
Returns the value of theek9Character
record component.Ek9Types.ek9Comparator()
Returns the value of theek9Comparator
record component.Ek9Types.ek9Consumer()
Returns the value of theek9Consumer
record component.Ek9Types.ek9Date()
Returns the value of theek9Date
record component.Ek9Types.ek9DateTime()
Returns the value of theek9DateTime
record component.Ek9Types.ek9Dictionary()
Returns the value of theek9Dictionary
record component.Ek9Types.ek9DictionaryEntry()
Returns the value of theek9DictionaryEntry
record component.Ek9Types.ek9Duration()
Returns the value of theek9Duration
record component.Ek9Types.ek9Exception()
Returns the value of theek9Exception
record component.Ek9Types.ek9Float()
Returns the value of theek9Float
record component.Ek9Types.ek9Function()
Returns the value of theek9Function
record component.Ek9Types.ek9HttpRequest()
Returns the value of theek9HttpRequest
record component.Ek9Types.ek9HttpResponse()
Returns the value of theek9HttpResponse
record component.Ek9Types.ek9Integer()
Returns the value of theek9Integer
record component.Ek9Types.ek9Iterator()
Returns the value of theek9Iterator
record component.Ek9Types.ek9Json()
Returns the value of theek9Json
record component.Ek9Types.ek9List()
Returns the value of theek9List
record component.Ek9Types.ek9Millisecond()
Returns the value of theek9Millisecond
record component.Ek9Types.ek9Optional()
Returns the value of theek9Optional
record component.Ek9Types.ek9Path()
Returns the value of theek9Path
record component.Ek9Types.ek9Predicate()
Returns the value of theek9Predicate
record component.Ek9Types.ek9Result()
Returns the value of theek9Result
record component.Ek9Types.ek9String()
Returns the value of theek9String
record component.Ek9Types.ek9Supplier()
Returns the value of theek9Supplier
record component.Ek9Types.ek9Time()
Returns the value of theek9Time
record component.Ek9Types.ek9UnaryOperator()
Returns the value of theek9UnaryOperator
record component.Ek9Types.ek9Version()
Returns the value of theek9Version
record component.Ek9Types.ek9Void()
Returns the value of theek9Void
record component.StreamCallSymbol.getConsumesSymbolType()
StreamCallSymbol.getProducesSymbolType()
CallSymbol.getReturningSymbol()
IMayReturnSymbol.getReturningSymbol()
MethodSymbol.getReturningSymbol()
Provide a symbol that is returned from this method.default ISymbol
Modifier 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.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
(ISymbol.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.Modifier and TypeMethodDescriptionvoid
ParamExpressionSymbol.addParameter
(ISymbol symbol) void
ICanBeGeneric.addTypeParameterOrArgument
(ISymbol typeParameterOrArgument) void
PossibleGenericSymbol.addTypeParameterOrArgument
(ISymbol typeParameterOrArgument) Add a parameter type to this scope.void
void
void
Define a Symbol in this scope.void
void
boolean
ModuleScope.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.void
ModuleScope.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.double
AggregateWithTraitsSymbol.getAssignableWeightTo
(ISymbol s) double
FunctionSymbol.getAssignableWeightTo
(ISymbol s) double
ISymbol.getAssignableWeightTo
(ISymbol s) double
Symbol.getAssignableWeightTo
(ISymbol s) double
AggregateSymbol.getUnCoercedAssignableWeightTo
(ISymbol s) double
AggregateWithTraitsSymbol.getUnCoercedAssignableWeightTo
(ISymbol s) double
FunctionSymbol.getUnCoercedAssignableWeightTo
(ISymbol s) double
ISymbol.getUnCoercedAssignableWeightTo
(ISymbol s) double
Symbol.getUnCoercedAssignableWeightTo
(ISymbol s) boolean
ISymbol.isAssignableTo
(ISymbol s) boolean
Symbol.isAssignableTo
(ISymbol s) boolean
ISymbol.isExactSameType
(ISymbol symbolType) If is the symbol is an exact match.boolean
Symbol.isExactSameType
(ISymbol symbolType) Checks if the type match exactly.boolean
ISymbol.isPromotionSupported
(ISymbol s) For some symbols we might support the _promote method via coercion.boolean
Symbol.isPromotionSupported
(ISymbol s) protected void
MethodSymbol.justSetReturningSymbol
(ISymbol returningSymbol) void
StreamCallSymbol.setConsumesSymbolType
(ISymbol consumesSymbolType) This sets the type of symbol that stream can consume.void
StreamCallSymbol.setProducesSymbolType
(ISymbol producesSymbolType) This sets the type of symbol that stream can produce.default ISymbol
Modifier and TypeMethodDescriptionprotected String
FunctionSymbol.doGetFriendlyName
(String withName, Optional<ISymbol> theType) protected String
MethodSymbol.doGetFriendlyName
(String withName, Optional<ISymbol> theType) double
ISymbol.getAssignableWeightTo
(Optional<ISymbol> s) double
Symbol.getAssignableWeightTo
(Optional<ISymbol> s) protected String
Symbol.getSymbolTypeAsString
(Optional<ISymbol> type) boolean
ISymbol.isAssignableTo
(Optional<ISymbol> s) boolean
Symbol.isAssignableTo
(Optional<ISymbol> s) boolean
MethodSymbol.isParameterSignatureMatchTo
(List<ISymbol> params) Very important method; that checks if the parameter list provided can match the parameters declared for this method.boolean
FunctionSymbol.isSignatureMatchTo
(Optional<ISymbol> theirReturnType, List<ISymbol> theirParams) Check if the parameter types and return types match.boolean
FunctionSymbol.isSignatureMatchTo
(Optional<ISymbol> theirReturnType, List<ISymbol> theirParams) Check if the parameter types and return types match.void
MethodSymbol.setCallParameters
(List<ISymbol> params) Typically used when making synthetic methods you want to add in all the params from another method or something.ModifierConstructorDescriptionConstantSymbol
(String name, ISymbol type) ConstantSymbol
(String name, ISymbol type, boolean fromLiteral) Ek9Types
(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 ek9UnaryOperator, ISymbol ek9Predicate, ISymbol ek9Comparator) Creates an instance of aEk9Types
record 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) ModifierConstructorDescriptionAggregateSymbol
(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)