Class WithinTypeBasicSymbolsResolver

  • Direct Known Subclasses:
    OOWithinTypeBasicSymbolsResolver

    public class WithinTypeBasicSymbolsResolver
    extends java.lang.Object
    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.
    • Constructor Detail

      • WithinTypeBasicSymbolsResolver

        public WithinTypeBasicSymbolsResolver()
    • 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
      • 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()
      • _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()
      • init

        public static void init()
      • reset

        public static void reset()