src/share/classes/com/sun/tools/javac/tree/TreeInfo.java

changeset 1138
7375d4979bd3
parent 1127
ca49d50318dc
child 1143
ec59a2ce9114
     1.1 --- a/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Mon Nov 14 08:09:47 2011 -0800
     1.2 +++ b/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Mon Nov 14 15:11:10 2011 -0800
     1.3 @@ -28,10 +28,10 @@
     1.4  import com.sun.source.tree.Tree;
     1.5  import com.sun.tools.javac.comp.AttrContext;
     1.6  import com.sun.tools.javac.comp.Env;
     1.7 -import java.util.Map;
     1.8  import com.sun.tools.javac.util.*;
     1.9  import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
    1.10  import com.sun.tools.javac.code.*;
    1.11 +import com.sun.tools.javac.parser.EndPosTable;
    1.12  import com.sun.tools.javac.tree.JCTree.*;
    1.13  
    1.14  import static com.sun.tools.javac.code.Flags.*;
    1.15 @@ -346,17 +346,17 @@
    1.16  
    1.17      /** The end position of given tree, given  a table of end positions generated by the parser
    1.18       */
    1.19 -    public static int getEndPos(JCTree tree, Map<JCTree, Integer> endPositions) {
    1.20 +    public static int getEndPos(JCTree tree, EndPosTable endPosTable) {
    1.21          if (tree == null)
    1.22              return Position.NOPOS;
    1.23  
    1.24 -        if (endPositions == null) {
    1.25 +        if (endPosTable == null) {
    1.26              // fall back on limited info in the tree
    1.27              return endPos(tree);
    1.28          }
    1.29  
    1.30 -        Integer mapPos = endPositions.get(tree);
    1.31 -        if (mapPos != null)
    1.32 +        int mapPos = endPosTable.getEndPos(tree);
    1.33 +        if (mapPos != Position.NOPOS)
    1.34              return mapPos;
    1.35  
    1.36          switch(tree.getTag()) {
    1.37 @@ -364,7 +364,7 @@
    1.38              case SL_ASG: case SR_ASG: case USR_ASG:
    1.39              case PLUS_ASG: case MINUS_ASG: case MUL_ASG:
    1.40              case DIV_ASG: case MOD_ASG:
    1.41 -                return getEndPos(((JCAssignOp) tree).rhs, endPositions);
    1.42 +                return getEndPos(((JCAssignOp) tree).rhs, endPosTable);
    1.43              case OR: case AND: case BITOR:
    1.44              case BITXOR: case BITAND: case EQ:
    1.45              case NE: case LT: case GT:
    1.46 @@ -372,62 +372,62 @@
    1.47              case SR: case USR: case PLUS:
    1.48              case MINUS: case MUL: case DIV:
    1.49              case MOD:
    1.50 -                return getEndPos(((JCBinary) tree).rhs, endPositions);
    1.51 +                return getEndPos(((JCBinary) tree).rhs, endPosTable);
    1.52              case CASE:
    1.53 -                return getEndPos(((JCCase) tree).stats.last(), endPositions);
    1.54 +                return getEndPos(((JCCase) tree).stats.last(), endPosTable);
    1.55              case CATCH:
    1.56 -                return getEndPos(((JCCatch) tree).body, endPositions);
    1.57 +                return getEndPos(((JCCatch) tree).body, endPosTable);
    1.58              case CONDEXPR:
    1.59 -                return getEndPos(((JCConditional) tree).falsepart, endPositions);
    1.60 +                return getEndPos(((JCConditional) tree).falsepart, endPosTable);
    1.61              case FORLOOP:
    1.62 -                return getEndPos(((JCForLoop) tree).body, endPositions);
    1.63 +                return getEndPos(((JCForLoop) tree).body, endPosTable);
    1.64              case FOREACHLOOP:
    1.65 -                return getEndPos(((JCEnhancedForLoop) tree).body, endPositions);
    1.66 +                return getEndPos(((JCEnhancedForLoop) tree).body, endPosTable);
    1.67              case IF: {
    1.68                  JCIf node = (JCIf)tree;
    1.69                  if (node.elsepart == null) {
    1.70 -                    return getEndPos(node.thenpart, endPositions);
    1.71 +                    return getEndPos(node.thenpart, endPosTable);
    1.72                  } else {
    1.73 -                    return getEndPos(node.elsepart, endPositions);
    1.74 +                    return getEndPos(node.elsepart, endPosTable);
    1.75                  }
    1.76              }
    1.77              case LABELLED:
    1.78 -                return getEndPos(((JCLabeledStatement) tree).body, endPositions);
    1.79 +                return getEndPos(((JCLabeledStatement) tree).body, endPosTable);
    1.80              case MODIFIERS:
    1.81 -                return getEndPos(((JCModifiers) tree).annotations.last(), endPositions);
    1.82 +                return getEndPos(((JCModifiers) tree).annotations.last(), endPosTable);
    1.83              case SYNCHRONIZED:
    1.84 -                return getEndPos(((JCSynchronized) tree).body, endPositions);
    1.85 +                return getEndPos(((JCSynchronized) tree).body, endPosTable);
    1.86              case TOPLEVEL:
    1.87 -                return getEndPos(((JCCompilationUnit) tree).defs.last(), endPositions);
    1.88 +                return getEndPos(((JCCompilationUnit) tree).defs.last(), endPosTable);
    1.89              case TRY: {
    1.90                  JCTry node = (JCTry)tree;
    1.91                  if (node.finalizer != null) {
    1.92 -                    return getEndPos(node.finalizer, endPositions);
    1.93 +                    return getEndPos(node.finalizer, endPosTable);
    1.94                  } else if (!node.catchers.isEmpty()) {
    1.95 -                    return getEndPos(node.catchers.last(), endPositions);
    1.96 +                    return getEndPos(node.catchers.last(), endPosTable);
    1.97                  } else {
    1.98 -                    return getEndPos(node.body, endPositions);
    1.99 +                    return getEndPos(node.body, endPosTable);
   1.100                  }
   1.101              }
   1.102              case WILDCARD:
   1.103 -                return getEndPos(((JCWildcard) tree).inner, endPositions);
   1.104 +                return getEndPos(((JCWildcard) tree).inner, endPosTable);
   1.105              case TYPECAST:
   1.106 -                return getEndPos(((JCTypeCast) tree).expr, endPositions);
   1.107 +                return getEndPos(((JCTypeCast) tree).expr, endPosTable);
   1.108              case TYPETEST:
   1.109 -                return getEndPos(((JCInstanceOf) tree).clazz, endPositions);
   1.110 +                return getEndPos(((JCInstanceOf) tree).clazz, endPosTable);
   1.111              case POS:
   1.112              case NEG:
   1.113              case NOT:
   1.114              case COMPL:
   1.115              case PREINC:
   1.116              case PREDEC:
   1.117 -                return getEndPos(((JCUnary) tree).arg, endPositions);
   1.118 +                return getEndPos(((JCUnary) tree).arg, endPosTable);
   1.119              case WHILELOOP:
   1.120 -                return getEndPos(((JCWhileLoop) tree).body, endPositions);
   1.121 +                return getEndPos(((JCWhileLoop) tree).body, endPosTable);
   1.122              case ERRONEOUS: {
   1.123                  JCErroneous node = (JCErroneous)tree;
   1.124                  if (node.errs != null && node.errs.nonEmpty())
   1.125 -                    return getEndPos(node.errs.last(), endPositions);
   1.126 +                    return getEndPos(node.errs.last(), endPosTable);
   1.127              }
   1.128          }
   1.129          return Position.NOPOS;
   1.130 @@ -444,7 +444,7 @@
   1.131              public JCTree getTree() { return tree; }
   1.132              public int getStartPosition() { return TreeInfo.getStartPos(tree); }
   1.133              public int getPreferredPosition() { return endPos; }
   1.134 -            public int getEndPosition(Map<JCTree, Integer> endPosTable) {
   1.135 +            public int getEndPosition(EndPosTable endPosTable) {
   1.136                  return TreeInfo.getEndPos(tree, endPosTable);
   1.137              }
   1.138          };

mercurial