Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(423)

Side by Side Diff: pkg/analyzer/test/generated/hint_code_test.dart

Issue 1943443002: If an if or do statement always exits, following statements are dead. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: test_ prefixes Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.test.generated.hint_code_test; 5 library analyzer.test.generated.hint_code_test;
6 6
7 import 'package:analyzer/src/generated/engine.dart'; 7 import 'package:analyzer/src/generated/engine.dart';
8 import 'package:analyzer/src/generated/error.dart'; 8 import 'package:analyzer/src/generated/error.dart';
9 import 'package:analyzer/src/generated/source_io.dart'; 9 import 'package:analyzer/src/generated/source_io.dart';
10 import 'package:unittest/unittest.dart'; 10 import 'package:unittest/unittest.dart';
11 11
12 import '../reflective_tests.dart'; 12 import '../reflective_tests.dart';
13 import '../utils.dart'; 13 import '../utils.dart';
14 import 'analysis_context_factory.dart'; 14 import 'analysis_context_factory.dart';
15 import 'resolver_test_case.dart'; 15 import 'resolver_test_case.dart';
16 16
17 main() { 17 main() {
18 initializeTestEnvironment(); 18 initializeTestEnvironment();
19 runReflectiveTests(HintCodeTest); 19 runReflectiveTests(HintCodeTest);
20 } 20 }
21 21
22 @reflectiveTest 22 @reflectiveTest
23 class HintCodeTest extends ResolverTestCase { 23 class HintCodeTest extends ResolverTestCase {
24 void fail_deadCode_statementAfterRehrow() { 24 void test_deadCode_statementAfterRethrow() {
25 Source source = addSource(r''' 25 Source source = addSource(r'''
26 f() { 26 f() {
27 try { 27 try {
28 var one = 1; 28 var one = 1;
29 } catch (e) { 29 } catch (e) {
30 rethrow; 30 rethrow;
31 var two = 2; 31 var two = 2;
32 } 32 }
33 }'''); 33 }''');
34 computeLibrarySourceErrors(source); 34 computeLibrarySourceErrors(source);
35 assertErrors(source, [HintCode.DEAD_CODE]); 35 assertErrors(source, [HintCode.DEAD_CODE]);
36 verify([source]); 36 verify([source]);
37 } 37 }
38 38
39 void fail_deadCode_statementAfterThrow() { 39 void test_deadCode_statementAfterThrow() {
40 Source source = addSource(r''' 40 Source source = addSource(r'''
41 f() { 41 f() {
42 var one = 1; 42 var one = 1;
43 throw 'Stop here'; 43 throw 'Stop here';
44 var two = 2; 44 var two = 2;
45 }'''); 45 }''');
46 computeLibrarySourceErrors(source); 46 computeLibrarySourceErrors(source);
47 assertErrors(source, [HintCode.DEAD_CODE]); 47 assertErrors(source, [HintCode.DEAD_CODE]);
48 verify([source]); 48 verify([source]);
49 } 49 }
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 return; 612 return;
613 var two = 2; 613 var two = 2;
614 return; 614 return;
615 var three = 3; 615 var three = 3;
616 }'''); 616 }''');
617 computeLibrarySourceErrors(source); 617 computeLibrarySourceErrors(source);
618 assertErrors(source, [HintCode.DEAD_CODE]); 618 assertErrors(source, [HintCode.DEAD_CODE]);
619 verify([source]); 619 verify([source]);
620 } 620 }
621 621
622 void test_deadCode_statementAfterExitingIf_returns() {
623 Source source = addSource(r'''
624 f() {
625 if (1 > 2) {
626 return;
627 } else {
628 return;
629 }
630 var one = 1;
631 }''');
632 computeLibrarySourceErrors(source);
633 assertErrors(source, [HintCode.DEAD_CODE]);
634 verify([source]);
635 }
636
622 void test_deprecatedAnnotationUse_assignment() { 637 void test_deprecatedAnnotationUse_assignment() {
623 Source source = addSource(r''' 638 Source source = addSource(r'''
624 class A { 639 class A {
625 @deprecated 640 @deprecated
626 A operator+(A a) { return a; } 641 A operator+(A a) { return a; }
627 } 642 }
628 f(A a) { 643 f(A a) {
629 A b; 644 A b;
630 a += b; 645 a += b;
631 }'''); 646 }''');
(...skipping 2723 matching lines...) Expand 10 before | Expand all | Expand 10 after
3355 n() { 3370 n() {
3356 var a = m(), b = m(); 3371 var a = m(), b = m();
3357 } 3372 }
3358 }'''); 3373 }''');
3359 computeLibrarySourceErrors(source); 3374 computeLibrarySourceErrors(source);
3360 assertErrors( 3375 assertErrors(
3361 source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]); 3376 source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]);
3362 verify([source]); 3377 verify([source]);
3363 } 3378 }
3364 } 3379 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | pkg/analyzer/test/generated/non_hint_code_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698