< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java

Print this page
rev 51291 : imported patch switch
rev 51292 : [mq]: switch.02


1889                             log.error(tree.pos(), Errors.BreakAmbiguousTarget(label));
1890                             if (jumpTarget.snd == null) {
1891                                 tree.target = jumpTarget.fst;
1892                                 attribute = false;
1893                             } else {
1894                                 //nothing
1895                             }
1896                         } else {
1897                             if (jumpTarget.snd != null) {
1898                                 log.error(tree.pos(), jumpTarget.snd);
1899                             }
1900                             tree.target = jumpTarget.fst;
1901                             attribute = false;
1902                         }
1903                     }
1904                 }
1905                 if (attribute) {
1906                     attribTree(tree.value, env, env.info.breakResult);
1907                     JCTree immediateTarget = findJumpTarget(tree.pos(), tree.getTag(), null, env);
1908                     if (immediateTarget.getTag() != SWITCH_EXPRESSION) {
1909                         log.error(tree.pos(), Errors.BreakExprNotImmediate);
1910                         Env<AttrContext> env1 = env;
1911                         while (env1 != null && env1.tree.getTag() != SWITCH_EXPRESSION) {
1912                             env1 = env1.next;
1913                         }
1914                         Assert.checkNonNull(env1);
1915                         tree.target = env1.tree;
1916                     } else {
1917                         tree.target = immediateTarget;
1918                     }
1919                 }
1920             }
1921         } else {
1922             if (tree.value == null || tree.value.hasTag(IDENT)) {
1923                 Name label = tree.value != null ? ((JCIdent) tree.value).name : null;
1924                 tree.target = findJumpTarget(tree.pos(), tree.getTag(), label, env);
1925             } else {
1926                 log.error(tree.pos(), Errors.BreakComplexValueNoSwitchExpression);
1927                 attribTree(tree.value, env, unknownExprInfo);
1928             }
1929         }




1889                             log.error(tree.pos(), Errors.BreakAmbiguousTarget(label));
1890                             if (jumpTarget.snd == null) {
1891                                 tree.target = jumpTarget.fst;
1892                                 attribute = false;
1893                             } else {
1894                                 //nothing
1895                             }
1896                         } else {
1897                             if (jumpTarget.snd != null) {
1898                                 log.error(tree.pos(), jumpTarget.snd);
1899                             }
1900                             tree.target = jumpTarget.fst;
1901                             attribute = false;
1902                         }
1903                     }
1904                 }
1905                 if (attribute) {
1906                     attribTree(tree.value, env, env.info.breakResult);
1907                     JCTree immediateTarget = findJumpTarget(tree.pos(), tree.getTag(), null, env);
1908                     if (immediateTarget.getTag() != SWITCH_EXPRESSION) {
1909                         log.error(tree.pos(), Errors.BreakExprNotImmediate(immediateTarget.getTag()));
1910                         Env<AttrContext> env1 = env;
1911                         while (env1 != null && env1.tree.getTag() != SWITCH_EXPRESSION) {
1912                             env1 = env1.next;
1913                         }
1914                         Assert.checkNonNull(env1);
1915                         tree.target = env1.tree;
1916                     } else {
1917                         tree.target = immediateTarget;
1918                     }
1919                 }
1920             }
1921         } else {
1922             if (tree.value == null || tree.value.hasTag(IDENT)) {
1923                 Name label = tree.value != null ? ((JCIdent) tree.value).name : null;
1924                 tree.target = findJumpTarget(tree.pos(), tree.getTag(), label, env);
1925             } else {
1926                 log.error(tree.pos(), Errors.BreakComplexValueNoSwitchExpression);
1927                 attribTree(tree.value, env, unknownExprInfo);
1928             }
1929         }


< prev index next >