1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Flow.java Sat Nov 05 00:02:33 2011 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Flow.java Tue Nov 08 11:51:05 2011 -0800 1.3 @@ -40,8 +40,10 @@ 1.4 import com.sun.tools.javac.tree.JCTree.*; 1.5 1.6 import static com.sun.tools.javac.code.Flags.*; 1.7 +import static com.sun.tools.javac.code.Flags.BLOCK; 1.8 import static com.sun.tools.javac.code.Kinds.*; 1.9 import static com.sun.tools.javac.code.TypeTags.*; 1.10 +import static com.sun.tools.javac.tree.JCTree.Tag.*; 1.11 1.12 /** This pass implements dataflow analysis for Java programs. 1.13 * Liveness analysis checks that every statement is reachable. 1.14 @@ -321,7 +323,7 @@ 1.15 log.error(exit.tree.pos(), 1.16 "unreported.exception.default.constructor", 1.17 exit.thrown); 1.18 - } else if (exit.tree.getTag() == JCTree.VARDEF && 1.19 + } else if (exit.tree.hasTag(VARDEF) && 1.20 ((JCVariableDecl)exit.tree).sym.isResourceVariable()) { 1.21 log.error(exit.tree.pos(), 1.22 "unreported.exception.implicit.close", 1.23 @@ -416,7 +418,7 @@ 1.24 */ 1.25 void letInit(JCTree tree) { 1.26 tree = TreeInfo.skipParens(tree); 1.27 - if (tree.getTag() == JCTree.IDENT || tree.getTag() == JCTree.SELECT) { 1.28 + if (tree.hasTag(IDENT) || tree.hasTag(SELECT)) { 1.29 Symbol sym = TreeInfo.symbol(tree); 1.30 if (sym.kind == VAR) { 1.31 letInit(tree.pos(), (VarSymbol)sym); 1.32 @@ -452,7 +454,7 @@ 1.33 pendingExits = oldPendingExits; 1.34 for (; exits.nonEmpty(); exits = exits.tail) { 1.35 PendingExit exit = exits.head; 1.36 - if (exit.tree.getTag() == JCTree.BREAK && 1.37 + if (exit.tree.hasTag(BREAK) && 1.38 ((JCBreak) exit.tree).target == tree) { 1.39 inits.andSet(exit.inits); 1.40 uninits.andSet(exit.uninits); 1.41 @@ -471,7 +473,7 @@ 1.42 pendingExits = new ListBuffer<PendingExit>(); 1.43 for (; exits.nonEmpty(); exits = exits.tail) { 1.44 PendingExit exit = exits.head; 1.45 - if (exit.tree.getTag() == JCTree.CONTINUE && 1.46 + if (exit.tree.hasTag(CONTINUE) && 1.47 ((JCContinue) exit.tree).target == tree) { 1.48 inits.andSet(exit.inits); 1.49 uninits.andSet(exit.uninits); 1.50 @@ -517,7 +519,7 @@ 1.51 */ 1.52 void scanDef(JCTree tree) { 1.53 scanStat(tree); 1.54 - if (tree != null && tree.getTag() == JCTree.BLOCK && !alive) { 1.55 + if (tree != null && tree.hasTag(JCTree.Tag.BLOCK) && !alive) { 1.56 log.error(tree.pos(), 1.57 "initializer.must.be.able.to.complete.normally"); 1.58 } 1.59 @@ -528,7 +530,7 @@ 1.60 void scanStat(JCTree tree) { 1.61 if (!alive && tree != null) { 1.62 log.error(tree.pos(), "unreachable.stmt"); 1.63 - if (tree.getTag() != JCTree.SKIP) alive = true; 1.64 + if (!tree.hasTag(SKIP)) alive = true; 1.65 } 1.66 scan(tree); 1.67 } 1.68 @@ -614,7 +616,7 @@ 1.69 try { 1.70 // define all the static fields 1.71 for (List<JCTree> l = tree.defs; l.nonEmpty(); l = l.tail) { 1.72 - if (l.head.getTag() == JCTree.VARDEF) { 1.73 + if (l.head.hasTag(VARDEF)) { 1.74 JCVariableDecl def = (JCVariableDecl)l.head; 1.75 if ((def.mods.flags & STATIC) != 0) { 1.76 VarSymbol sym = def.sym; 1.77 @@ -626,7 +628,7 @@ 1.78 1.79 // process all the static initializers 1.80 for (List<JCTree> l = tree.defs; l.nonEmpty(); l = l.tail) { 1.81 - if (l.head.getTag() != JCTree.METHODDEF && 1.82 + if (!l.head.hasTag(METHODDEF) && 1.83 (TreeInfo.flags(l.head) & STATIC) != 0) { 1.84 scanDef(l.head); 1.85 errorUncaught(); 1.86 @@ -653,7 +655,7 @@ 1.87 1.88 // define all the instance fields 1.89 for (List<JCTree> l = tree.defs; l.nonEmpty(); l = l.tail) { 1.90 - if (l.head.getTag() == JCTree.VARDEF) { 1.91 + if (l.head.hasTag(VARDEF)) { 1.92 JCVariableDecl def = (JCVariableDecl)l.head; 1.93 if ((def.mods.flags & STATIC) == 0) { 1.94 VarSymbol sym = def.sym; 1.95 @@ -665,7 +667,7 @@ 1.96 1.97 // process all the instance initializers 1.98 for (List<JCTree> l = tree.defs; l.nonEmpty(); l = l.tail) { 1.99 - if (l.head.getTag() != JCTree.METHODDEF && 1.100 + if (!l.head.hasTag(METHODDEF) && 1.101 (TreeInfo.flags(l.head) & STATIC) == 0) { 1.102 scanDef(l.head); 1.103 errorUncaught(); 1.104 @@ -691,7 +693,7 @@ 1.105 1.106 // process all the methods 1.107 for (List<JCTree> l = tree.defs; l.nonEmpty(); l = l.tail) { 1.108 - if (l.head.getTag() == JCTree.METHODDEF) { 1.109 + if (l.head.hasTag(METHODDEF)) { 1.110 scan(l.head); 1.111 errorUncaught(); 1.112 } 1.113 @@ -760,7 +762,7 @@ 1.114 PendingExit exit = exits.head; 1.115 exits = exits.tail; 1.116 if (exit.thrown == null) { 1.117 - Assert.check(exit.tree.getTag() == JCTree.RETURN); 1.118 + Assert.check(exit.tree.hasTag(RETURN)); 1.119 if (isInitialConstructor) { 1.120 inits = exit.inits; 1.121 for (int i = firstadr; i < nextadr; i++) 1.122 @@ -989,7 +991,7 @@ 1.123 Bits uninits) { 1.124 for (;stats.nonEmpty(); stats = stats.tail) { 1.125 JCTree stat = stats.head; 1.126 - if (stat.getTag() == JCTree.VARDEF) { 1.127 + if (stat.hasTag(VARDEF)) { 1.128 int adr = ((JCVariableDecl) stat).sym.adr; 1.129 inits.excl(adr); 1.130 uninits.incl(adr); 1.131 @@ -1346,7 +1348,7 @@ 1.132 1.133 public void visitUnary(JCUnary tree) { 1.134 switch (tree.getTag()) { 1.135 - case JCTree.NOT: 1.136 + case NOT: 1.137 scanCond(tree.arg); 1.138 Bits t = initsWhenFalse; 1.139 initsWhenFalse = initsWhenTrue; 1.140 @@ -1355,8 +1357,8 @@ 1.141 uninitsWhenFalse = uninitsWhenTrue; 1.142 uninitsWhenTrue = t; 1.143 break; 1.144 - case JCTree.PREINC: case JCTree.POSTINC: 1.145 - case JCTree.PREDEC: case JCTree.POSTDEC: 1.146 + case PREINC: case POSTINC: 1.147 + case PREDEC: case POSTDEC: 1.148 scanExpr(tree.arg); 1.149 letInit(tree.arg); 1.150 break; 1.151 @@ -1367,7 +1369,7 @@ 1.152 1.153 public void visitBinary(JCBinary tree) { 1.154 switch (tree.getTag()) { 1.155 - case JCTree.AND: 1.156 + case AND: 1.157 scanCond(tree.lhs); 1.158 Bits initsWhenFalseLeft = initsWhenFalse; 1.159 Bits uninitsWhenFalseLeft = uninitsWhenFalse; 1.160 @@ -1377,7 +1379,7 @@ 1.161 initsWhenFalse.andSet(initsWhenFalseLeft); 1.162 uninitsWhenFalse.andSet(uninitsWhenFalseLeft); 1.163 break; 1.164 - case JCTree.OR: 1.165 + case OR: 1.166 scanCond(tree.lhs); 1.167 Bits initsWhenTrueLeft = initsWhenTrue; 1.168 Bits uninitsWhenTrueLeft = uninitsWhenTrue; 1.169 @@ -1418,7 +1420,7 @@ 1.170 private boolean is292targetTypeCast(JCTypeCast tree) { 1.171 boolean is292targetTypeCast = false; 1.172 JCExpression expr = TreeInfo.skipParens(tree.expr); 1.173 - if (expr.getTag() == JCTree.APPLY) { 1.174 + if (expr.hasTag(APPLY)) { 1.175 JCMethodInvocation apply = (JCMethodInvocation)expr; 1.176 Symbol sym = TreeInfo.symbol(apply.meth); 1.177 is292targetTypeCast = sym != null &&