| Index: tests/language/label_test.dart
|
| diff --git a/tests/language/label_test.dart b/tests/language/label_test.dart
|
| index 2d524e154c657b16d74777acb17d02cd320862c1..3c7cd77241d6330f79b28404fa025b8a7402eac2 100644
|
| --- a/tests/language/label_test.dart
|
| +++ b/tests/language/label_test.dart
|
| @@ -5,9 +5,7 @@
|
|
|
| import "package:expect/expect.dart";
|
|
|
| -
|
| class Helper {
|
| -
|
| static int ticks;
|
|
|
| // Helper function to prevent endless loops in case labels or
|
| @@ -33,7 +31,9 @@ class Helper {
|
| static test2() {
|
| // Make sure we break out to default label.
|
| var i = 1;
|
| - L: while (doAgain()) { // unused label
|
| + L:
|
| + while (doAgain()) {
|
| + // unused label
|
| if (i > 0) break;
|
| return 0;
|
| }
|
| @@ -43,7 +43,8 @@ class Helper {
|
| static test3() {
|
| // Make sure we break out of outer loop.
|
| var i = 1;
|
| - L: while (doAgain()) {
|
| + L:
|
| + while (doAgain()) {
|
| while (doAgain()) {
|
| if (i > 0) break L;
|
| return 0;
|
| @@ -56,7 +57,9 @@ class Helper {
|
| static test4() {
|
| // Make sure we break out of inner loop.
|
| var i = 100;
|
| - L: while (doAgain()) { // unused label
|
| + L:
|
| + while (doAgain()) {
|
| + // unused label
|
| while (doAgain()) {
|
| if (i > 0) break;
|
| return 0;
|
| @@ -79,14 +82,18 @@ class Helper {
|
|
|
| static test6() {
|
| // Make sure we jump to loop condition.
|
| - L: for (int i = 10; i > 0; i--) { // unreferenced label, should warn
|
| + L:
|
| + for (int i = 10; i > 0; i--) {
|
| + // unreferenced label, should warn
|
| if (true) continue; // without the if the following return is dead code.
|
| return 0;
|
| }
|
| // Make sure this L does not conflict with previous L.
|
| var k = 20;
|
| - L: while (doAgain()) {
|
| - L0: while (doAgain()) break L; // unreferenced label L0, should warn
|
| + L:
|
| + while (doAgain()) {
|
| + L0:
|
| + while (doAgain()) break L; // unreferenced label L0, should warn
|
| return 1;
|
| }
|
| return 111;
|
| @@ -95,8 +102,10 @@ class Helper {
|
| static test7() {
|
| // Just weird stuff.
|
| var i = 10;
|
| - L: do {
|
| - L: while (doAgain()) {
|
| + L:
|
| + do {
|
| + L:
|
| + while (doAgain()) {
|
| if (true) break L; // without the if the following line is dead code.
|
| continue L;
|
| }
|
| @@ -107,7 +116,8 @@ class Helper {
|
| }
|
|
|
| static test8() {
|
| - L: while (false) {
|
| + L:
|
| + while (false) {
|
| var L = 33; // OK, shouldn't collide with label.
|
| if (true) break L;
|
| }
|
| @@ -116,16 +126,20 @@ class Helper {
|
|
|
| static test9() {
|
| var i = 111;
|
| - L1: if (i == 0) { // unreferenced label, should warn
|
| + L1:
|
| + if (i == 0) {
|
| + // unreferenced label, should warn
|
| return 0;
|
| }
|
|
|
| - L2: while (i == 0) { // unreferenced label, should warn
|
| + L2:
|
| + while (i == 0) {
|
| + // unreferenced label, should warn
|
| return 0;
|
| }
|
|
|
| L3: // useless label, should warn
|
| - return i;
|
| + return i;
|
| }
|
|
|
| // Labels should be allowed on block/if/for/switch/while/do stmts.
|
| @@ -133,7 +147,8 @@ class Helper {
|
| int i = 111;
|
| // block
|
| while (doAgain()) {
|
| - L: {
|
| + L:
|
| + {
|
| while (doAgain()) {
|
| break L;
|
| }
|
| @@ -143,9 +158,10 @@ class Helper {
|
| }
|
| Expect.equals(111, i);
|
|
|
| - while(doAgain()) {
|
| - L: if (doAgain()) {
|
| - while(doAgain()) {
|
| + while (doAgain()) {
|
| + L:
|
| + if (doAgain()) {
|
| + while (doAgain()) {
|
| break L;
|
| }
|
| i--;
|
| @@ -154,8 +170,9 @@ class Helper {
|
| }
|
| Expect.equals(111, i);
|
|
|
| - while(doAgain()) {
|
| - L: for (;doAgain();) {
|
| + while (doAgain()) {
|
| + L:
|
| + for (; doAgain();) {
|
| while (doAgain()) {
|
| break L;
|
| }
|
| @@ -165,40 +182,44 @@ class Helper {
|
| }
|
| Expect.equals(111, i);
|
|
|
| - L: for (i in [111]) {
|
| - while(doAgain()) {
|
| - break L;
|
| - }
|
| - i--;
|
| - break;
|
| + L:
|
| + for (i in [111]) {
|
| + while (doAgain()) {
|
| + break L;
|
| + }
|
| + i--;
|
| + break;
|
| }
|
| Expect.equals(111, i);
|
|
|
| - L: for (var j in [111]) {
|
| - while(doAgain()) {
|
| - break L;
|
| - }
|
| - i--;
|
| + L:
|
| + for (var j in [111]) {
|
| + while (doAgain()) {
|
| + break L;
|
| + }
|
| + i--;
|
| break;
|
| }
|
| Expect.equals(111, i);
|
|
|
| - while(doAgain()) {
|
| - L: switch (i) {
|
| + while (doAgain()) {
|
| + L:
|
| + switch (i) {
|
| case 111:
|
| - while(doAgain()) {
|
| - break L;
|
| - }
|
| + while (doAgain()) {
|
| + break L;
|
| + }
|
| default:
|
| - i--;
|
| + i--;
|
| }
|
| break;
|
| }
|
| Expect.equals(111, i);
|
|
|
| - while(doAgain()) {
|
| - L: do {
|
| - while(doAgain()) {
|
| + while (doAgain()) {
|
| + L:
|
| + do {
|
| + while (doAgain()) {
|
| break L;
|
| }
|
| i--;
|
| @@ -207,14 +228,14 @@ class Helper {
|
| }
|
| Expect.equals(111, i);
|
|
|
| - while(doAgain()) {
|
| - L: try {
|
| - while(doAgain()) {
|
| + while (doAgain()) {
|
| + L:
|
| + try {
|
| + while (doAgain()) {
|
| break L;
|
| }
|
| i--;
|
| - } finally {
|
| - }
|
| + } finally {}
|
| break;
|
| }
|
| Expect.equals(111, i);
|
| @@ -222,77 +243,89 @@ class Helper {
|
| return i;
|
| }
|
|
|
| - static test11() {
|
| - // Kind of odd, but is valid and shouldn't be flagged as useless either.
|
| - L: break L;
|
| - return 111;
|
| - }
|
| -
|
| - static test12() {
|
| - int i = 111;
|
| -
|
| - // label the inner block on compound stmts
|
| - if (true) L: {
|
| - while (doAgain()) {
|
| - break L;
|
| - }
|
| - i--;
|
| - }
|
| - Expect.equals(111, i);
|
| -
|
| - // loop will execute each time, but won't execute code below the break
|
| - var forCount = 0;
|
| - for (forCount = 0 ; forCount < 2 ; forCount++) L: {
|
| - while(doAgain()) {
|
| - break L;
|
| - }
|
| - i--;
|
| - break;
|
| - }
|
| - Expect.equals(111, i);
|
| - Expect.equals(forCount, 2);
|
| -
|
| - for (i in [111]) L: {
|
| - while(doAgain()) {
|
| - break L;
|
| - }
|
| - i--;
|
| - break;
|
| - }
|
| - Expect.equals(111, i);
|
| -
|
| - for (var j in [111]) L: {
|
| - while(doAgain()) {
|
| - break L;
|
| - }
|
| - i--;
|
| - break;
|
| - }
|
| - Expect.equals(111, i);
|
| -
|
| - if (false) {
|
| - } else L: {
|
| - while (doAgain()) {
|
| - break L;
|
| - }
|
| - i--;
|
| - }
|
| - Expect.equals(111, i);
|
| -
|
| - int whileCount = 0;
|
| - while (whileCount < 2) L: {
|
| + static test11() {
|
| + // Kind of odd, but is valid and shouldn't be flagged as useless either.
|
| + L:
|
| + break L;
|
| + return 111;
|
| + }
|
| +
|
| + static test12() {
|
| + int i = 111;
|
| +
|
| + // label the inner block on compound stmts
|
| + if (true)
|
| + L:
|
| + {
|
| + while (doAgain()) {
|
| + break L;
|
| + }
|
| + i--;
|
| + }
|
| + Expect.equals(111, i);
|
| +
|
| + // loop will execute each time, but won't execute code below the break
|
| + var forCount = 0;
|
| + for (forCount = 0; forCount < 2; forCount++)
|
| + L:
|
| + {
|
| + while (doAgain()) {
|
| + break L;
|
| + }
|
| + i--;
|
| + break;
|
| + }
|
| + Expect.equals(111, i);
|
| + Expect.equals(forCount, 2);
|
| +
|
| + for (i in [111])
|
| + L:
|
| + {
|
| + while (doAgain()) {
|
| + break L;
|
| + }
|
| + i--;
|
| + break;
|
| + }
|
| + Expect.equals(111, i);
|
| +
|
| + for (var j in [111])
|
| + L:
|
| + {
|
| + while (doAgain()) {
|
| + break L;
|
| + }
|
| + i--;
|
| + break;
|
| + }
|
| + Expect.equals(111, i);
|
| +
|
| + if (false) {} else
|
| + L:
|
| + {
|
| + while (doAgain()) {
|
| + break L;
|
| + }
|
| + i--;
|
| + }
|
| + Expect.equals(111, i);
|
| +
|
| + int whileCount = 0;
|
| + while (whileCount < 2)
|
| + L:
|
| + {
|
| whileCount++;
|
| - while(doAgain()) {
|
| - break L;
|
| + while (doAgain()) {
|
| + break L;
|
| }
|
| i--;
|
| break;
|
| - }
|
| - Expect.equals(111, i);
|
| - Expect.equals(2, whileCount);
|
| + }
|
| + Expect.equals(111, i);
|
| + Expect.equals(2, whileCount);
|
|
|
| - return i;
|
| - }
|
| + return i;
|
| + }
|
| }
|
|
|
| class LabelTest {
|
|
|