lambda: break/continue inside lambda body checks

(cherry picked from commit a290c356e646bb8ad9c097664648ad9033adf2a8)
This commit is contained in:
anna
2013-11-20 12:56:07 +01:00
parent f8e74f085c
commit d338bc76df
6 changed files with 84 additions and 4 deletions

View File

@@ -0,0 +1,79 @@
class Test {
static interface I {
void m();
}
I i1 = ()-> { continue <error descr="Undefined label: 'l'">l</error>; };
I i2 = ()-> { break <error descr="Undefined label: 'l'">l</error>; };
I i3 = ()-> {
I i_i1 = ()-> { continue <error descr="Undefined label: 'l'">l</error>; };
I i_i2= ()-> { break <error descr="Undefined label: 'l'">l</error>; };
foo:
while (true) {
if (false) {
break;
}
if (true) {
break <error descr="Undefined label: 'l'">l</error>;
} else {
continue foo;
}
if (false) {
break <error descr="Undefined label: 'l1'">l1</error>;
}
}
};
I i4 = ()-> { <error descr="Continue outside of loop">continue;</error> };
I i5 = ()-> { <error descr="Break outside switch or loop">break;</error> };
{
l:
while (true) {
I i1 = ()-> { continue <error descr="Undefined label: 'l'">l</error>; };
I i2 = ()-> { break <error descr="Undefined label: 'l'">l</error>; };
I i3 = ()-> {
I i_i1 = ()-> { continue <error descr="Undefined label: 'l'">l</error>; };
I i_i2= ()-> { break <error descr="Undefined label: 'l'">l</error>; };
foo:
while (true) {
if (false) {
break;
}
if (true) {
break <error descr="Undefined label: 'l'">l</error>;
} else {
continue foo;
}
if (false) {
break <error descr="Undefined label: 'l1'">l1</error>;
}
}
};
}
while (true) {
I i1 = ()-> { continue <error descr="Undefined label: 'l'">l</error>; };
I i2 = ()-> { break <error descr="Undefined label: 'l'">l</error>; };
I i3 = ()-> {
I i_i1 = ()-> { continue <error descr="Undefined label: 'l'">l</error>; };
I i_i2= ()-> { break <error descr="Undefined label: 'l'">l</error>; };
foo:
while (true) {
if (false) {
break;
}
if (true) {
break <error descr="Undefined label: 'l'">l</error>;
} else {
continue foo;
}
if (false) {
break <error descr="Undefined label: 'l1'">l1</error>;
}
}
};
}
}
}