Package org.ek9lang.compiler.symbols
Class StackConsistencyScope
java.lang.Object
org.ek9lang.compiler.symbols.Symbol
org.ek9lang.compiler.symbols.ScopedSymbol
org.ek9lang.compiler.symbols.StackConsistencyScope
- All Implemented Interfaces:
Serializable
,ICanCaptureVariables
,IScope
,IScopedSymbol
,ISymbol
,ITokenReference
Used when duplicate symbols are found, where we need to add a placeholder.
So the result of the listening and processing can take place, symbols can still be
put into some sort of scope; so they don't mess up other valid scopes.
The phase will fail compilation with duplicate errors, but we will have ensured that
other symbols and processing has been put somewhere.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.ek9lang.compiler.symbols.IScope
IScope.ScopeType
Nested classes/interfaces inherited from interface org.ek9lang.compiler.symbols.ISymbol
ISymbol.SymbolCategory, ISymbol.SymbolGenus
-
Field Summary
Fields inherited from interface org.ek9lang.compiler.symbols.ISymbol
NOT_ASSIGNABLE
-
Constructor Summary
ConstructorDescriptionStackConsistencyScope
(IScope enclosingScope) StackConsistencyScope
(IScope enclosingScope, IScope.ScopeType scopeType) -
Method Summary
Modifier and TypeMethodDescriptionClone the symbol and re-parent if this symbol like a method should have a parent.Clones the content of this into the new copy.boolean
Make the scope that holds the captured variables (if any accessible).int
hashCode()
resolve
(SymbolSearch search) Find the nearest symbol of that name up the scope tree.Try and resolve a symbol but exclude looking in captured variables.resolveInThisScopeOnly
(SymbolSearch search) Just look in own scope.void
setCapturedVariables
(CaptureScope capturedVariables) So that a number of variables can be captured when a new dynamic type is defined.Methods inherited from class org.ek9lang.compiler.symbols.ScopedSymbol
cloneIntoScopeSymbol, copyScopedSymbolProperties, define, findNearestDynamicBlockScopeInEnclosingScopes, findNearestNonBlockScopeInEnclosingScopes, getActualScope, getAllSymbolsMatchingName, getAnySuperTypeOrFunction, getEnclosingScope, getEncounteredExceptionToken, getFriendlyScopeName, getOuterMostTypeOrFunction, getScopeName, getScopeType, getSymbolsForThisScope, isMarkedPure, isMutable, isNotMarkedPure, isScopeAMatchForEnclosingScope, isTerminatedNormally, resolveMatchingMethods, resolveMatchingMethodsInThisScopeOnly, resolveMember, resolveWithParentScope, setEncounteredExceptionToken, setMarkedPure, setOuterMostTypeOrFunction, setScopeType
Methods inherited from class org.ek9lang.compiler.symbols.Symbol
clearInitialisedBy, cloneIntoSymbol, copySymbolProperties, getAssignableWeightTo, getAssignableWeightTo, getCategory, getFriendlyName, getFullyQualifiedName, getGenus, getInitialisedBy, getName, getParsedModule, getProduceFullyQualifiedName, getSourceToken, getSquirrelledData, getSymbolTypeAsString, getType, getUnCoercedAssignableWeightTo, isAssignableTo, isAssignableTo, isDevSource, isEk9Core, isExactSameType, isInjectionExpected, isLibSource, isNullAllowed, isPromotionSupported, isReferenced, putSquirrelledData, setCategory, setEk9Core, setGenus, setInitialisedBy, setInjectionExpected, setName, setNotMutable, setNullAllowed, setParsedModule, setProduceFullyQualifiedName, setReferenced, setSourceToken, setType, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.ek9lang.compiler.symbols.ISymbol
clearInitialisedBy, getAssignableWeightTo, getAssignableWeightTo, getCategory, getFriendlyName, getFullyQualifiedName, getGenus, getInitialisedBy, getName, getParsedModule, getSourceToken, getSquirrelledData, getType, getUnCoercedAssignableWeightTo, isApplication, isAssignableTo, isAssignableTo, isConceptualTypeParameter, isConstant, isControl, isDeclaredAsConstant, isDevSource, isEk9Core, isExactSameType, isExtensionOfInjectable, isFromLiteral, isFunction, isGenericInNature, isIncomingParameter, isInitialised, isInjectable, isInjectionExpected, isLibSource, isLoopVariable, isMarkedAbstract, isMethod, isNullAllowed, isParameterisedType, isPrimitiveType, isPrivate, isPromotionSupported, isPropertyField, isProtected, isPublic, isReferenced, isReturningParameter, isTemplateFunction, isTemplateType, isType, isVariable, putSquirrelledData, setGenus, setInitialisedBy, setInjectionExpected, setName, setNotMutable, setNullAllowed, setParsedModule, setReferenced, setType, setType
Methods inherited from interface org.ek9lang.compiler.symbols.ITokenReference
setSourceToken
-
Constructor Details
-
StackConsistencyScope
-
StackConsistencyScope
-
-
Method Details
-
getCapturedVariables
Description copied from interface:ICanCaptureVariables
Make the scope that holds the captured variables (if any accessible).- Specified by:
getCapturedVariables
in interfaceICanCaptureVariables
- Returns:
- The scope holding the captured variables.
-
setCapturedVariables
Description copied from interface:ICanCaptureVariables
So that a number of variables can be captured when a new dynamic type is defined.- Specified by:
setCapturedVariables
in interfaceICanCaptureVariables
- Parameters:
capturedVariables
- The variables to capture.
-
resolveInThisScopeOnly
Description copied from interface:IScope
Just look in own scope.- Specified by:
resolveInThisScopeOnly
in interfaceIScope
- Overrides:
resolveInThisScopeOnly
in classScopedSymbol
-
resolveExcludingCapturedVariables
Description copied from interface:ICanCaptureVariables
Try and resolve a symbol but exclude looking in captured variables.- Specified by:
resolveExcludingCapturedVariables
in interfaceICanCaptureVariables
-
resolve
Description copied from interface:IScope
Find the nearest symbol of that name up the scope tree.- Specified by:
resolve
in interfaceIScope
- Overrides:
resolve
in classScopedSymbol
-
clone
Description copied from interface:ISymbol
Clone the symbol and re-parent if this symbol like a method should have a parent. Other symbols like VariableSymbols are un-parented- Specified by:
clone
in interfaceIScope
- Specified by:
clone
in interfaceIScopedSymbol
- Specified by:
clone
in interfaceISymbol
- Overrides:
clone
in classScopedSymbol
-
cloneIntoStackConsistencyScope
Clones the content of this into the new copy. -
equals
- Overrides:
equals
in classScopedSymbol
-
hashCode
public int hashCode()- Overrides:
hashCode
in classScopedSymbol
-