Package de.monticore.types3.util
Class WithinTypeBasicSymbolsResolver
- java.lang.Object
-
- de.monticore.types3.util.WithinTypeBasicSymbolsResolver
-
- Direct Known Subclasses:
OOWithinTypeBasicSymbolsResolver
public class WithinTypeBasicSymbolsResolver extends java.lang.Objectresolves within a type, but in a more type correct way than our resolve algorithm, as some additions cannot be (simply) added to it. E.g., given generics, the correct type parameters will be set. The results will be in form of SymTypeExpressions.
-
-
Field Summary
Fields Modifier and Type Field Description protected static WithinTypeBasicSymbolsResolverdelegateprotected static java.lang.StringLOG_NAME
-
Constructor Summary
Constructors Constructor Description WithinTypeBasicSymbolsResolver()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean_canResolveIn(SymTypeExpression thisType)protected java.util.Map<java.lang.String,java.util.List<SymTypeOfFunction>>_getAllFunctions(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)protected java.util.Map<java.lang.String,SymTypeExpression>_getAllTypes(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)protected java.util.Map<java.lang.String,SymTypeExpression>_getAllVariables(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)protected java.util.List<java.lang.String>_internal_getMemberNames(SymTypeExpression thisType)internal; gets all member names, does not filter in any way, thus not generally applicableprotected java.util.List<java.lang.String>_internal_getMemberNamesLocally(IBasicSymbolsScope scope)protected java.util.List<SymTypeOfFunction>_resolveFunctions(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)protected java.util.Optional<SymTypeExpression>_resolveType(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)protected java.util.Optional<SymTypeExpression>_resolveVariable(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)protected voidassertTypeVarsAreIncluded(SymTypeExpression type, java.util.Collection<SymTypeVariable> freeTypeVars)static booleancanResolveIn(SymTypeExpression thisType)checks if the symtypeExpression is of a (sym)type to be resolved in, e.g., this includes objects but excludes primitives.static java.util.Map<java.lang.String,java.util.List<SymTypeOfFunction>>getAllFunctions(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)resolves all functions within the type including supertypesstatic java.util.Map<java.lang.String,SymTypeExpression>getAllTypes(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)resolves all types within the type including supertypesstatic java.util.Map<java.lang.String,SymTypeExpression>getAllVariables(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)resolves all variables within the type including supertypesprotected static WithinTypeBasicSymbolsResolvergetDelegate()protected java.util.function.Predicate<de.monticore.symboltable.ISymbol>getIsLocalSymbolPredicate(de.monticore.symboltable.IScope localScope)Even more legacy code workarounds: filter out anything that is not in the exact scope due to questionable resolve strategy overrides in Scope classes...protected java.util.function.Predicate<TypeSymbol>getIsNotTypeVarSymbolPredicate()protected java.util.Optional<IBasicSymbolsScope>getSpannedScope(SymTypeExpression type)protected java.util.List<SymTypeExpression>getSuperTypes(SymTypeExpression thisType)protected IBasicSymbolsTypeDispatchergetTypeDispatcher()protected java.util.Map<SymTypeVariable,SymTypeInferenceVariable>getUnboundVariableReplaceMap(java.util.List<SymTypeVariable> varsNotToReplace, SymTypeExpression type)static voidinit()protected de.monticore.symboltable.modifiers.AccessModifierprivate2Protected(de.monticore.symboltable.modifiers.AccessModifier accessModifier)replaces any private access with protected access this is done to resolve in supertypes if there is no private access, this is id()protected SymTypeExpressionreplaceFreeTypeVariables(SymTypeExpression thisType, SymTypeExpression type)protected SymTypeExpressionreplaceVariablesIfNecessary(SymTypeExpression dependencyType, SymTypeExpression dependentType)static voidreset()protected java.util.List<SymTypeOfFunction>resolvedFunctionsInSuperTypes(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)protected java.util.List<FunctionSymbol>resolveFunctionLocally(IBasicSymbolsScope scope, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)resolves locally, EXCLUDING supertypesstatic java.util.List<SymTypeOfFunction>resolveFunctions(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)resolves within a type including supertypesprotected java.util.List<SymTypeOfFunction>resolveFunctionsInThisType(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)static java.util.Optional<SymTypeExpression>resolveType(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)resolves within a type including supertypesprotected java.util.Optional<TypeSymbol>resolveTypeLocally(IBasicSymbolsScope scope, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)resolves locally, EXCLUDING supertypesstatic java.util.Optional<SymTypeExpression>resolveVariable(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)resolves within a type including supertypesprotected java.util.Optional<VariableSymbol>resolveVariableLocally(IBasicSymbolsScope scope, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)resolves locally, EXCLUDING supertypesprotected static voidsetDelegate(WithinTypeBasicSymbolsResolver newDelegate)
-
-
-
Field Detail
-
LOG_NAME
protected static final java.lang.String LOG_NAME
- See Also:
- Constant Field Values
-
delegate
protected static WithinTypeBasicSymbolsResolver delegate
-
-
Method Detail
-
resolveVariable
public static java.util.Optional<SymTypeExpression> resolveVariable(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)
resolves within a type including supertypes
-
_resolveVariable
protected java.util.Optional<SymTypeExpression> _resolveVariable(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)
-
getAllVariables
public static java.util.Map<java.lang.String,SymTypeExpression> getAllVariables(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)
resolves all variables within the type including supertypes
-
_getAllVariables
protected java.util.Map<java.lang.String,SymTypeExpression> _getAllVariables(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)
-
resolveFunctions
public static java.util.List<SymTypeOfFunction> resolveFunctions(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)
resolves within a type including supertypes
-
_resolveFunctions
protected java.util.List<SymTypeOfFunction> _resolveFunctions(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)
-
resolveFunctionsInThisType
protected java.util.List<SymTypeOfFunction> resolveFunctionsInThisType(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)
-
resolvedFunctionsInSuperTypes
protected java.util.List<SymTypeOfFunction> resolvedFunctionsInSuperTypes(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)
-
getAllFunctions
public static java.util.Map<java.lang.String,java.util.List<SymTypeOfFunction>> getAllFunctions(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)
resolves all functions within the type including supertypes
-
_getAllFunctions
protected java.util.Map<java.lang.String,java.util.List<SymTypeOfFunction>> _getAllFunctions(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)
-
resolveType
public static java.util.Optional<SymTypeExpression> resolveType(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)
resolves within a type including supertypes
-
_resolveType
protected java.util.Optional<SymTypeExpression> _resolveType(SymTypeExpression thisType, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)
-
getAllTypes
public static java.util.Map<java.lang.String,SymTypeExpression> getAllTypes(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)
resolves all types within the type including supertypes
-
_getAllTypes
protected java.util.Map<java.lang.String,SymTypeExpression> _getAllTypes(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)
-
canResolveIn
public static boolean canResolveIn(SymTypeExpression thisType)
checks if the symtypeExpression is of a (sym)type to be resolved in, e.g., this includes objects but excludes primitives. This method is intended to be used to increase the specificity of error messages, it is NOT necessary to check a type with it before calling resolve[...](). s. a.NominalSuperTypeCalculator
-
_canResolveIn
protected boolean _canResolveIn(SymTypeExpression thisType)
-
resolveVariableLocally
protected java.util.Optional<VariableSymbol> resolveVariableLocally(IBasicSymbolsScope scope, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<VariableSymbol> predicate)
resolves locally, EXCLUDING supertypes
-
resolveFunctionLocally
protected java.util.List<FunctionSymbol> resolveFunctionLocally(IBasicSymbolsScope scope, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<FunctionSymbol> predicate)
resolves locally, EXCLUDING supertypes
-
resolveTypeLocally
protected java.util.Optional<TypeSymbol> resolveTypeLocally(IBasicSymbolsScope scope, java.lang.String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, java.util.function.Predicate<TypeSymbol> predicate)
resolves locally, EXCLUDING supertypes
-
getIsLocalSymbolPredicate
protected java.util.function.Predicate<de.monticore.symboltable.ISymbol> getIsLocalSymbolPredicate(de.monticore.symboltable.IScope localScope)
Even more legacy code workarounds: filter out anything that is not in the exact scope due to questionable resolve strategy overrides in Scope classes...
-
getIsNotTypeVarSymbolPredicate
protected java.util.function.Predicate<TypeSymbol> getIsNotTypeVarSymbolPredicate()
-
getTypeDispatcher
protected IBasicSymbolsTypeDispatcher getTypeDispatcher()
-
replaceVariablesIfNecessary
protected SymTypeExpression replaceVariablesIfNecessary(SymTypeExpression dependencyType, SymTypeExpression dependentType)
-
getSpannedScope
protected java.util.Optional<IBasicSymbolsScope> getSpannedScope(SymTypeExpression type)
-
getSuperTypes
protected java.util.List<SymTypeExpression> getSuperTypes(SymTypeExpression thisType)
-
_internal_getMemberNames
protected java.util.List<java.lang.String> _internal_getMemberNames(SymTypeExpression thisType)
internal; gets all member names, does not filter in any way, thus not generally applicable
-
_internal_getMemberNamesLocally
protected java.util.List<java.lang.String> _internal_getMemberNamesLocally(IBasicSymbolsScope scope)
-
private2Protected
protected de.monticore.symboltable.modifiers.AccessModifier private2Protected(de.monticore.symboltable.modifiers.AccessModifier accessModifier)
replaces any private access with protected access this is done to resolve in supertypes if there is no private access, this is id()
-
getUnboundVariableReplaceMap
protected java.util.Map<SymTypeVariable,SymTypeInferenceVariable> getUnboundVariableReplaceMap(java.util.List<SymTypeVariable> varsNotToReplace, SymTypeExpression type)
-
replaceFreeTypeVariables
protected SymTypeExpression replaceFreeTypeVariables(SymTypeExpression thisType, SymTypeExpression type)
-
assertTypeVarsAreIncluded
protected void assertTypeVarsAreIncluded(SymTypeExpression type, java.util.Collection<SymTypeVariable> freeTypeVars)
-
init
public static void init()
-
reset
public static void reset()
-
setDelegate
protected static void setDelegate(WithinTypeBasicSymbolsResolver newDelegate)
-
getDelegate
protected static WithinTypeBasicSymbolsResolver getDelegate()
-
-