6917122: provide utility method to find the inner most type of a type tree

Thu, 14 Jan 2010 17:18:30 -0800

author
jjg
date
Thu, 14 Jan 2010 17:18:30 -0800
changeset 470
b96ad32c004a
parent 469
ccd51af119b4
child 471
2d0f4e7b44b2

6917122: provide utility method to find the inner most type of a type tree
Reviewed-by: darcy, jjg
Contributed-by: mali@csail.mit.edu, mernst@cs.washington.edu

src/share/classes/com/sun/tools/javac/tree/Pretty.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/javac/tree/TreeInfo.java file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/classes/com/sun/tools/javac/tree/Pretty.java	Wed Jan 13 17:39:44 2010 -0800
     1.2 +++ b/src/share/classes/com/sun/tools/javac/tree/Pretty.java	Thu Jan 14 17:18:30 2010 -0800
     1.3 @@ -1152,20 +1152,7 @@
     1.4  
     1.5      // Prints the inner element type of a nested array
     1.6      private void printBaseElementType(JCTree tree) throws IOException {
     1.7 -        switch (tree.getTag()) {
     1.8 -        case JCTree.TYPEARRAY:
     1.9 -            printBaseElementType(((JCArrayTypeTree)tree).elemtype);
    1.10 -            return;
    1.11 -        case JCTree.WILDCARD:
    1.12 -            printBaseElementType(((JCWildcard)tree).inner);
    1.13 -            return;
    1.14 -        case JCTree.ANNOTATED_TYPE:
    1.15 -            printBaseElementType(((JCAnnotatedType)tree).underlyingType);
    1.16 -            return;
    1.17 -        default:
    1.18 -            printExpr(tree);
    1.19 -            return;
    1.20 -        }
    1.21 +        printExpr(TreeInfo.innermostType(tree));
    1.22      }
    1.23  
    1.24      // prints the brackets of a nested array in reverse order
     2.1 --- a/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Wed Jan 13 17:39:44 2010 -0800
     2.2 +++ b/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Thu Jan 14 17:18:30 2010 -0800
     2.3 @@ -891,4 +891,17 @@
     2.4              throw new AssertionError("Unexpected type tree: " + tree);
     2.5          }
     2.6      }
     2.7 +
     2.8 +    public static JCTree innermostType(JCTree type) {
     2.9 +        switch (type.getTag()) {
    2.10 +        case JCTree.TYPEARRAY:
    2.11 +            return innermostType(((JCArrayTypeTree)type).elemtype);
    2.12 +        case JCTree.WILDCARD:
    2.13 +            return innermostType(((JCWildcard)type).inner);
    2.14 +        case JCTree.ANNOTATED_TYPE:
    2.15 +            return innermostType(((JCAnnotatedType)type).underlyingType);
    2.16 +        default:
    2.17 +            return type;
    2.18 +        }
    2.19 +    }
    2.20  }

mercurial