Package de.monticore.types3.util
Class WithinTypeBasicSymbolsResolver
java.lang.Object
de.monticore.types3.util.WithinTypeBasicSymbolsResolver
- Direct Known Subclasses:
OOWithinTypeBasicSymbolsResolver
resolves 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
FieldsModifier and TypeFieldDescriptionprotected static WithinTypeBasicSymbolsResolverprotected static final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean_canResolveIn(SymTypeExpression thisType) protected Map<String, List<SymTypeOfFunction>> _getAllFunctions(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) protected Map<String, SymTypeExpression> _getAllTypes(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) protected Map<String, SymTypeExpression> _getAllVariables(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) _internal_getMemberNames(SymTypeExpression thisType) internal; gets all member names, does not filter in any way, thus not generally applicableprotected List<SymTypeOfFunction> _resolveFunctions(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) protected Optional<SymTypeExpression> _resolveType(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) protected Optional<SymTypeExpression> _resolveVariable(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) protected voidassertTypeVarsAreIncluded(SymTypeExpression type, 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 Map<String, List<SymTypeOfFunction>> getAllFunctions(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) resolves all functions within the type including supertypesstatic Map<String, SymTypeExpression> getAllTypes(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) resolves all types within the type including supertypesstatic Map<String, SymTypeExpression> getAllVariables(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) resolves all variables within the type including supertypesprotected static WithinTypeBasicSymbolsResolverprotected 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 Predicate<TypeSymbol> protected Optional<IBasicSymbolsScope> protected List<SymTypeExpression> getSuperTypes(SymTypeExpression thisType) protected IBasicSymbolsTypeDispatcherprotected Map<SymTypeVariable, SymTypeInferenceVariable> getUnboundVariableReplaceMap(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 List<SymTypeOfFunction> resolvedFunctionsInSuperTypes(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) protected List<FunctionSymbol> resolveFunctionLocally(IBasicSymbolsScope scope, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) Deprecated, for removal: This API element is subject to removal in a future version.protected List<FunctionSymbol> resolveFunctionLocallyMany(IBasicSymbolsScope scope, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) Resolves locally, EXCLUDING supertypes.static List<SymTypeOfFunction> resolveFunctions(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) resolves within a type including supertypesprotected List<SymTypeOfFunction> resolveFunctionsInThisType(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) protected List<SymTypeOfFunction> resolveFunctionsRecursive(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) static Optional<SymTypeExpression> resolveType(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) resolves within a type including supertypesprotected Optional<TypeSymbol> resolveTypeLocally(IBasicSymbolsScope scope, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) Resolves locally, EXCLUDING supertypes.protected Optional<SymTypeExpression> resolveTypeRecursive(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) static Optional<SymTypeExpression> resolveVariable(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) resolves within a type including supertypesprotected Optional<VariableSymbol> resolveVariableLocally(IBasicSymbolsScope scope, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) Resolves locally, EXCLUDING supertypes.protected Optional<SymTypeExpression> resolveVariableRecursive(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) protected static voidsetDelegate(WithinTypeBasicSymbolsResolver newDelegate)
-
Field Details
-
LOG_NAME
- See Also:
-
delegate
-
-
Constructor Details
-
WithinTypeBasicSymbolsResolver
public WithinTypeBasicSymbolsResolver()
-
-
Method Details
-
resolveVariable
public static Optional<SymTypeExpression> resolveVariable(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) resolves within a type including supertypes -
_resolveVariable
protected Optional<SymTypeExpression> _resolveVariable(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) -
resolveVariableRecursive
protected Optional<SymTypeExpression> resolveVariableRecursive(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) -
getAllVariables
public static Map<String,SymTypeExpression> getAllVariables(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) resolves all variables within the type including supertypes -
_getAllVariables
protected Map<String,SymTypeExpression> _getAllVariables(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) -
resolveFunctions
public static List<SymTypeOfFunction> resolveFunctions(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) resolves within a type including supertypes -
_resolveFunctions
protected List<SymTypeOfFunction> _resolveFunctions(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) -
resolveFunctionsRecursive
protected List<SymTypeOfFunction> resolveFunctionsRecursive(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) -
resolveFunctionsInThisType
protected List<SymTypeOfFunction> resolveFunctionsInThisType(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) -
resolvedFunctionsInSuperTypes
protected List<SymTypeOfFunction> resolvedFunctionsInSuperTypes(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) -
getAllFunctions
public static Map<String,List<SymTypeOfFunction>> getAllFunctions(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) resolves all functions within the type including supertypes -
_getAllFunctions
protected Map<String,List<SymTypeOfFunction>> _getAllFunctions(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) -
resolveType
public static Optional<SymTypeExpression> resolveType(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) resolves within a type including supertypes -
_resolveType
protected Optional<SymTypeExpression> _resolveType(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) -
resolveTypeRecursive
protected Optional<SymTypeExpression> resolveTypeRecursive(SymTypeExpression thisType, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) -
getAllTypes
public static Map<String,SymTypeExpression> getAllTypes(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) resolves all types within the type including supertypes -
_getAllTypes
protected Map<String,SymTypeExpression> _getAllTypes(SymTypeExpression thisType, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) -
canResolveIn
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
-
resolveVariableLocally
protected Optional<VariableSymbol> resolveVariableLocally(IBasicSymbolsScope scope, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<VariableSymbol> predicate) Resolves locally, EXCLUDING supertypes. This can be used as an extension point. S.a.WithinScopeBasicSymbolsResolver.resolveType(IBasicSymbolsScope, String, AccessModifier, Predicate) -
resolveFunctionLocallyMany
protected List<FunctionSymbol> resolveFunctionLocallyMany(IBasicSymbolsScope scope, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) Resolves locally, EXCLUDING supertypes. This can be used as an extension point. -
resolveFunctionLocally
@Deprecated(forRemoval=true) protected List<FunctionSymbol> resolveFunctionLocally(IBasicSymbolsScope scope, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<FunctionSymbol> predicate) Deprecated, for removal: This API element is subject to removal in a future version. -
resolveTypeLocally
protected Optional<TypeSymbol> resolveTypeLocally(IBasicSymbolsScope scope, String name, de.monticore.symboltable.modifiers.AccessModifier accessModifier, Predicate<TypeSymbol> predicate) Resolves locally, EXCLUDING supertypes. This can be used as an extension point. S.a.WithinScopeBasicSymbolsResolver.resolveType(IBasicSymbolsScope, String, AccessModifier, Predicate) -
getIsLocalSymbolPredicate
protected 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
-
getTypeDispatcher
-
replaceVariablesIfNecessary
protected SymTypeExpression replaceVariablesIfNecessary(SymTypeExpression dependencyType, SymTypeExpression dependentType) -
getSpannedScope
-
getSuperTypes
-
_internal_getMemberNames
internal; gets all member names, does not filter in any way, thus not generally applicable -
_internal_getMemberNamesLocally
-
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 Map<SymTypeVariable,SymTypeInferenceVariable> getUnboundVariableReplaceMap(List<SymTypeVariable> varsNotToReplace, SymTypeExpression type) -
replaceFreeTypeVariables
protected SymTypeExpression replaceFreeTypeVariables(SymTypeExpression thisType, SymTypeExpression type) -
assertTypeVarsAreIncluded
protected void assertTypeVarsAreIncluded(SymTypeExpression type, Collection<SymTypeVariable> freeTypeVars) -
init
public static void init() -
reset
public static void reset() -
setDelegate
-
getDelegate
-
resolveFunctionLocallyMany(IBasicSymbolsScope, String, AccessModifier, Predicate)