Class NameLogic


  • public class NameLogic
    extends java.lang.Object
    NameLogic contains a set of static methods to implement the abstraction of a "Name" as defined in Chapter 6 of the JLS. This code could be moved to an interface or base class in a successive version of JavaParser.
    • Constructor Detail

      • NameLogic

        public NameLogic()
    • Method Detail

      • isSimpleName

        public static boolean isSimpleName​(Node node)
        Is the given node a non-qualified name?
        Throws:
        java.lang.IllegalArgumentException - if the node is not a name
      • isQualifiedName

        public static boolean isQualifiedName​(Node node)
        Is the given node a qualified name?
        Throws:
        java.lang.IllegalArgumentException - if the node is not a name
      • isAName

        public static boolean isAName​(Node node)
        Does the Node represent a Name?

        Note that while most specific AST classes either always represent names or never represent names there are exceptions as the FieldAccessExpr

      • getQualifier

        private static Node getQualifier​(Node node)
      • getRightMostName

        private static Node getRightMostName​(Node node)
      • classifyRole

        public static NameRole classifyRole​(Node name)
        What is the Role of the given name? Does it represent a Declaration or a Reference?

        This classification is purely syntactical, i.e., it does not require symbol resolution. For this reason in the future this could be moved to the core module of JavaParser.

      • reclassificationOfContextuallyAmbiguousNames

        private static NameCategory reclassificationOfContextuallyAmbiguousNames​(Node name,
                                                                                 NameCategory ambiguousCategory,
                                                                                 TypeSolver typeSolver)
        JLS 6.5.2. Reclassification of Contextually Ambiguous Names
      • reclassificationOfContextuallyAmbiguousPackageOrTypeName

        private static NameCategory reclassificationOfContextuallyAmbiguousPackageOrTypeName​(Node name,
                                                                                             TypeSolver typeSolver)
      • reclassificationOfContextuallyAmbiguousQualifiedAmbiguousName

        private static NameCategory reclassificationOfContextuallyAmbiguousQualifiedAmbiguousName​(Node nameNode,
                                                                                                  TypeSolver typeSolver)
      • reclassificationOfContextuallyAmbiguousSimpleAmbiguousName

        private static NameCategory reclassificationOfContextuallyAmbiguousSimpleAmbiguousName​(Node nameNode,
                                                                                               TypeSolver typeSolver)
      • syntacticClassificationAccordingToContext

        public static NameCategory syntacticClassificationAccordingToContext​(Node name)
        See JLS 6.5.1 Syntactic Classification of a Name According to Context.

        Most users do not want to call directly this method but call classifyReference instead.

      • isSyntacticallyAAmbiguousName

        private static boolean isSyntacticallyAAmbiguousName​(Node name)
      • isSyntacticallyAPackageOrTypeName

        private static boolean isSyntacticallyAPackageOrTypeName​(Node name)
      • isSyntacticallyAMethodName

        private static boolean isSyntacticallyAMethodName​(Node name)
      • isSyntacticallyAModuleName

        private static boolean isSyntacticallyAModuleName​(Node name)
      • isSyntacticallyAPackageName

        private static boolean isSyntacticallyAPackageName​(Node name)
      • isSyntacticallyATypeName

        private static boolean isSyntacticallyATypeName​(Node name)
      • isSyntacticallyAnExpressionName

        private static boolean isSyntacticallyAnExpressionName​(Node name)
      • nameAsString

        public static java.lang.String nameAsString​(Node name)
        Return the string representation of the name
      • whenParentIs

        private static <P extends Node,​C extends Node> boolean whenParentIs​(java.lang.Class<P> parentClass,
                                                                                  C child)