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

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

Issue 2832013002: Issue 29393. Consider 'v ??= doSomething()' as usage of 'v'. (Closed)
Patch Set: Created 3 years, 8 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
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/error/error.dart'; 7 import 'package:analyzer/error/error.dart';
8 import 'package:analyzer/src/error/codes.dart'; 8 import 'package:analyzer/src/error/codes.dart';
9 import 'package:analyzer/src/generated/engine.dart'; 9 import 'package:analyzer/src/generated/engine.dart';
10 import 'package:analyzer/src/generated/parser.dart'; 10 import 'package:analyzer/src/generated/parser.dart';
(...skipping 1989 matching lines...) Expand 10 before | Expand all | Expand 10 after
2000 @immutable 2000 @immutable
2001 class A { 2001 class A {
2002 int x; 2002 int x;
2003 } 2003 }
2004 '''); 2004 ''');
2005 await computeAnalysisResult(source); 2005 await computeAnalysisResult(source);
2006 assertErrors(source, [HintCode.MUST_BE_IMMUTABLE]); 2006 assertErrors(source, [HintCode.MUST_BE_IMMUTABLE]);
2007 verify([source]); 2007 verify([source]);
2008 } 2008 }
2009 2009
2010 test_mustBeImmutable_instance() async {
2011 Source source = addSource(r'''
2012 import 'package:meta/meta.dart';
2013 @immutable
2014 class A {
2015 static int x;
2016 }
2017 ''');
2018 await computeAnalysisResult(source);
2019 assertErrors(source, []);
2020 verify([source]);
2021 }
2022
2023 test_mustBeImmutable_extends() async { 2010 test_mustBeImmutable_extends() async {
2024 Source source = addSource(r''' 2011 Source source = addSource(r'''
2025 import 'package:meta/meta.dart'; 2012 import 'package:meta/meta.dart';
2026 @immutable 2013 @immutable
2027 class A {} 2014 class A {}
2028 class B extends A { 2015 class B extends A {
2029 int x; 2016 int x;
2030 } 2017 }
2031 '''); 2018 ''');
2032 await computeAnalysisResult(source); 2019 await computeAnalysisResult(source);
2033 assertErrors(source, [HintCode.MUST_BE_IMMUTABLE]); 2020 assertErrors(source, [HintCode.MUST_BE_IMMUTABLE]);
2034 verify([source]); 2021 verify([source]);
2035 } 2022 }
2036 2023
2037 test_mustBeImmutable_fromMixin() async { 2024 test_mustBeImmutable_fromMixin() async {
2038 Source source = addSource(r''' 2025 Source source = addSource(r'''
2039 import 'package:meta/meta.dart'; 2026 import 'package:meta/meta.dart';
2040 @immutable 2027 @immutable
2041 class A {} 2028 class A {}
2042 class B { 2029 class B {
2043 int x; 2030 int x;
2044 } 2031 }
2045 class C extends A with B {} 2032 class C extends A with B {}
2046 '''); 2033 ''');
2047 await computeAnalysisResult(source); 2034 await computeAnalysisResult(source);
2048 assertErrors(source, [HintCode.MUST_BE_IMMUTABLE]); 2035 assertErrors(source, [HintCode.MUST_BE_IMMUTABLE]);
2049 verify([source]); 2036 verify([source]);
2050 } 2037 }
2051 2038
2039 test_mustBeImmutable_instance() async {
2040 Source source = addSource(r'''
2041 import 'package:meta/meta.dart';
2042 @immutable
2043 class A {
2044 static int x;
2045 }
2046 ''');
2047 await computeAnalysisResult(source);
2048 assertErrors(source, []);
2049 verify([source]);
2050 }
2051
2052 test_mustCallSuper() async { 2052 test_mustCallSuper() async {
2053 Source source = addSource(r''' 2053 Source source = addSource(r'''
2054 import 'package:meta/meta.dart'; 2054 import 'package:meta/meta.dart';
2055 class A { 2055 class A {
2056 @mustCallSuper 2056 @mustCallSuper
2057 void a() {} 2057 void a() {}
2058 } 2058 }
2059 class B extends A { 2059 class B extends A {
2060 @override 2060 @override
2061 void a() 2061 void a()
(...skipping 1673 matching lines...) Expand 10 before | Expand all | Expand 10 after
3735 Source source = addSource(r''' 3735 Source source = addSource(r'''
3736 class A { 3736 class A {
3737 int _f; 3737 int _f;
3738 } 3738 }
3739 '''); 3739 ''');
3740 await computeAnalysisResult(source); 3740 await computeAnalysisResult(source);
3741 assertErrors(source, [HintCode.UNUSED_FIELD]); 3741 assertErrors(source, [HintCode.UNUSED_FIELD]);
3742 verify([source]); 3742 verify([source]);
3743 } 3743 }
3744 3744
3745 test_unusedField_notUsed_nullAssign() async {
3746 enableUnusedElement = true;
3747 Source source = addSource(r'''
3748 class A {
3749 var _f;
3750 m() {
3751 _f ??= doSomething();
3752 }
3753 }
3754 doSomething() => 0;
3755 ''');
3756 await computeAnalysisResult(source);
3757 assertNoErrors(source);
3758 verify([source]);
3759 }
3760
3745 test_unusedField_notUsed_postfixExpr() async { 3761 test_unusedField_notUsed_postfixExpr() async {
3746 enableUnusedElement = true; 3762 enableUnusedElement = true;
3747 Source source = addSource(r''' 3763 Source source = addSource(r'''
3748 class A { 3764 class A {
3749 int _f = 0; 3765 int _f = 0;
3750 main() { 3766 main() {
3751 _f++; 3767 _f++;
3752 } 3768 }
3753 }'''); 3769 }''');
3754 await computeAnalysisResult(source); 3770 await computeAnalysisResult(source);
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
4007 typedef Foo(); 4023 typedef Foo();
4008 main() { 4024 main() {
4009 Foo foo; 4025 Foo foo;
4010 foo(); 4026 foo();
4011 }'''); 4027 }''');
4012 await computeAnalysisResult(source); 4028 await computeAnalysisResult(source);
4013 assertErrors(source); 4029 assertErrors(source);
4014 verify([source]); 4030 verify([source]);
4015 } 4031 }
4016 4032
4033 test_unusedLocalVariable_isNullAssigned() async {
4034 enableUnusedLocalVariable = true;
4035 Source source = addSource(r'''
4036 typedef Foo();
4037 main() {
4038 var v;
4039 v ??= doSomething();
4040 }
4041 doSomething() => 42;
4042 ''');
4043 await computeAnalysisResult(source);
4044 assertErrors(source);
4045 verify([source]);
4046 }
4047
4017 test_unusedLocalVariable_isRead_notUsed_compoundAssign() async { 4048 test_unusedLocalVariable_isRead_notUsed_compoundAssign() async {
4018 enableUnusedLocalVariable = true; 4049 enableUnusedLocalVariable = true;
4019 Source source = addSource(r''' 4050 Source source = addSource(r'''
4020 main() { 4051 main() {
4021 var v = 1; 4052 var v = 1;
4022 v += 2; 4053 v += 2;
4023 }'''); 4054 }''');
4024 await computeAnalysisResult(source); 4055 await computeAnalysisResult(source);
4025 assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]); 4056 assertErrors(source, [HintCode.UNUSED_LOCAL_VARIABLE]);
4026 verify([source]); 4057 verify([source]);
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
4235 n() { 4266 n() {
4236 var a = m(), b = m(); 4267 var a = m(), b = m();
4237 } 4268 }
4238 }'''); 4269 }''');
4239 await computeAnalysisResult(source); 4270 await computeAnalysisResult(source);
4240 assertErrors( 4271 assertErrors(
4241 source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]); 4272 source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]);
4242 verify([source]); 4273 verify([source]);
4243 } 4274 }
4244 } 4275 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698