Index: pkg/analyzer/test/generated/all_the_rest_test.dart |
diff --git a/pkg/analyzer/test/generated/all_the_rest_test.dart b/pkg/analyzer/test/generated/all_the_rest_test.dart |
index c01ed0b03b5f083b124ead1acd302bc892ba0ed1..9445d72b08eedd4c524fc3f9efee7015eca2f02f 100644 |
--- a/pkg/analyzer/test/generated/all_the_rest_test.dart |
+++ b/pkg/analyzer/test/generated/all_the_rest_test.dart |
@@ -3856,6 +3856,20 @@ class ExitDetectorTest extends ParserTestCase { |
*/ |
@reflectiveTest |
class ExitDetectorTest2 extends ResolverTestCase { |
+ void test_forStatement_implicitTrue_breakWithLabel() { |
+ Source source = addSource(r''' |
+void f() { |
+ x: for (;;) { |
+ if (1 < 2) { |
+ break x; |
+ } |
+ return; |
+ } |
+} |
+'''); |
+ _assertNthStatementDoesNotExit(source, 0); |
+ } |
+ |
void test_switch_withEnum_false_noDefault() { |
Source source = addSource(r''' |
enum E { A, B } |
@@ -3870,12 +3884,7 @@ String f(E e) { |
return x; |
} |
'''); |
- LibraryElement element = resolve2(source); |
- CompilationUnit unit = resolveCompilationUnit(source, element); |
- FunctionDeclaration function = unit.declarations.last; |
- BlockFunctionBody body = function.functionExpression.body; |
- Statement statement = body.block.statements[1]; |
- expect(ExitDetector.exits(statement), false); |
+ _assertNthStatementDoesNotExit(source, 1); |
} |
void test_switch_withEnum_false_withDefault() { |
@@ -3892,12 +3901,7 @@ String f(E e) { |
return x; |
} |
'''); |
- LibraryElement element = resolve2(source); |
- CompilationUnit unit = resolveCompilationUnit(source, element); |
- FunctionDeclaration function = unit.declarations.last; |
- BlockFunctionBody body = function.functionExpression.body; |
- Statement statement = body.block.statements[1]; |
- expect(ExitDetector.exits(statement), false); |
+ _assertNthStatementDoesNotExit(source, 1); |
} |
void test_switch_withEnum_true_noDefault() { |
@@ -3912,12 +3916,7 @@ String f(E e) { |
} |
} |
'''); |
- LibraryElement element = resolve2(source); |
- CompilationUnit unit = resolveCompilationUnit(source, element); |
- FunctionDeclaration function = unit.declarations.last; |
- BlockFunctionBody body = function.functionExpression.body; |
- Statement statement = body.block.statements[0]; |
- expect(ExitDetector.exits(statement), true); |
+ _assertNthStatementExits(source, 0); |
} |
void test_switch_withEnum_true_withDefault() { |
@@ -3932,12 +3931,56 @@ String f(E e) { |
} |
} |
'''); |
+ _assertNthStatementExits(source, 0); |
+ } |
+ |
+ void test_whileStatement_breakWithLabel() { |
+ Source source = addSource(r''' |
+void f() { |
+ x: while (true) { |
+ if (1 < 2) { |
+ break x; |
+ } |
+ return; |
+ } |
+} |
+'''); |
+ _assertNthStatementDoesNotExit(source, 0); |
+ } |
+ |
+ void test_whileStatement_breakWithLabel_afterExting() { |
+ Source source = addSource(r''' |
+void f() { |
+ x: while (true) { |
+ return; |
+ if (1 < 2) { |
+ break x; |
+ } |
+ } |
+} |
+'''); |
+ _assertNthStatementExits(source, 0); |
+ } |
+ |
+ void _assertHasReturn(bool expectedResult, String source, int n) { |
LibraryElement element = resolve2(source); |
CompilationUnit unit = resolveCompilationUnit(source, element); |
FunctionDeclaration function = unit.declarations.last; |
BlockFunctionBody body = function.functionExpression.body; |
- Statement statement = body.block.statements[0]; |
- expect(ExitDetector.exits(statement), true); |
+ Statement statement = body.block.statements[n]; |
+ expect(ExitDetector.exits(statement), expectedResult); |
+ } |
+ |
+ // Assert that the [n]th statement in the last function declaration of |
+ // [source] exits. |
+ void _assertNthStatementExits(String source, int n) { |
+ _assertHasReturn(true, source, n); |
+ } |
+ |
+ // Assert that the [n]th statement in the last function declaration of |
+ // [source] does not exit. |
+ void _assertNthStatementDoesNotExit(String source, int n) { |
+ _assertHasReturn(false, source, n); |
} |
} |