--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Flow.java Mon Jul 01 16:36:08 2013 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Flow.java Tue Jul 02 22:49:40 2013 +0100
@@ -1945,10 +1945,17 @@
}
}
+ /* The analysis of each catch should be independent.
+ * Each one should have the same initial values of inits and
+ * uninits.
+ */
+ final Bits initsCatchPrev = new Bits(initsTry);
+ final Bits uninitsCatchPrev = new Bits(uninitsTry);
+
for (List<JCCatch> l = tree.catchers; l.nonEmpty(); l = l.tail) {
JCVariableDecl param = l.head.param;
- inits.assign(initsTry);
- uninits.assign(uninitsTry);
+ inits.assign(initsCatchPrev);
+ uninits.assign(uninitsCatchPrev);
scan(param);
inits.incl(param.sym.adr);
uninits.excl(param.sym.adr);