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

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

Issue 682553002: Convert most of the EngineTestCase.createSource invocations into multi-line String literals. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 engine.static_warning_code_test; 5 library engine.static_warning_code_test;
6 6
7 import 'package:analyzer/src/generated/java_junit.dart'; 7 import 'package:analyzer/src/generated/java_junit.dart';
8 import 'package:analyzer/src/generated/source_io.dart'; 8 import 'package:analyzer/src/generated/source_io.dart';
9 import 'package:analyzer/src/generated/error.dart'; 9 import 'package:analyzer/src/generated/error.dart';
10 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode; 10 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
11 import 'package:unittest/unittest.dart' as _ut; 11 import 'package:unittest/unittest.dart' as _ut;
12 import 'resolver_test.dart'; 12 import 'resolver_test.dart';
13 import 'test_support.dart'; 13 import 'test_support.dart';
14 import '../reflective_tests.dart'; 14 import '../reflective_tests.dart';
15 15
16 16
17 class StaticWarningCodeTest extends ResolverTestCase { 17 class StaticWarningCodeTest extends ResolverTestCase {
18 void fail_undefinedGetter() { 18 void fail_undefinedGetter() {
19 Source source = addSource(EngineTestCase.createSource([])); 19 Source source = addSource(r'''
20 ''');
20 resolve(source); 21 resolve(source);
21 assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]); 22 assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]);
22 verify([source]); 23 verify([source]);
23 } 24 }
24 25
25 void fail_undefinedIdentifier_commentReference() { 26 void fail_undefinedIdentifier_commentReference() {
26 Source source = addSource(EngineTestCase.createSource(["/** [m] xxx [new B.c ] */", "class A {", "}"])); 27 Source source = addSource(r'''
28 /** [m] xxx [new B.c] */
29 class A {
30 }''');
27 resolve(source); 31 resolve(source);
28 assertErrors(source, [ 32 assertErrors(source, [
29 StaticWarningCode.UNDEFINED_IDENTIFIER, 33 StaticWarningCode.UNDEFINED_IDENTIFIER,
30 StaticWarningCode.UNDEFINED_IDENTIFIER]); 34 StaticWarningCode.UNDEFINED_IDENTIFIER]);
31 } 35 }
32 36
33 void fail_undefinedSetter() { 37 void fail_undefinedSetter() {
34 Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var p) {", " C.m = 0;", "}"])); 38 Source source = addSource(r'''
39 class C {}
40 f(var p) {
41 C.m = 0;
42 }''');
35 resolve(source); 43 resolve(source);
36 assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]); 44 assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]);
37 verify([source]); 45 verify([source]);
38 } 46 }
39 47
40 void test_ambiguousImport_as() { 48 void test_ambiguousImport_as() {
41 Source source = addSource(EngineTestCase.createSource([ 49 Source source = addSource(r'''
42 "import 'lib1.dart';", 50 import 'lib1.dart';
43 "import 'lib2.dart';", 51 import 'lib2.dart';
44 "f(p) {p as N;}"])); 52 f(p) {p as N;}''');
45 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 53 addNamedSource("/lib1.dart", r'''
46 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 54 library lib1;
55 class N {}''');
56 addNamedSource("/lib2.dart", r'''
57 library lib2;
58 class N {}''');
47 resolve(source); 59 resolve(source);
48 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 60 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
49 } 61 }
50 62
51 void test_ambiguousImport_extends() { 63 void test_ambiguousImport_extends() {
52 Source source = addSource(EngineTestCase.createSource([ 64 Source source = addSource(r'''
53 "import 'lib1.dart';", 65 import 'lib1.dart';
54 "import 'lib2.dart';", 66 import 'lib2.dart';
55 "class A extends N {}"])); 67 class A extends N {}''');
56 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 68 addNamedSource("/lib1.dart", r'''
57 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 69 library lib1;
70 class N {}''');
71 addNamedSource("/lib2.dart", r'''
72 library lib2;
73 class N {}''');
58 resolve(source); 74 resolve(source);
59 assertErrors(source, [ 75 assertErrors(source, [
60 StaticWarningCode.AMBIGUOUS_IMPORT, 76 StaticWarningCode.AMBIGUOUS_IMPORT,
61 CompileTimeErrorCode.EXTENDS_NON_CLASS]); 77 CompileTimeErrorCode.EXTENDS_NON_CLASS]);
62 } 78 }
63 79
64 void test_ambiguousImport_implements() { 80 void test_ambiguousImport_implements() {
65 Source source = addSource(EngineTestCase.createSource([ 81 Source source = addSource(r'''
66 "import 'lib1.dart';", 82 import 'lib1.dart';
67 "import 'lib2.dart';", 83 import 'lib2.dart';
68 "class A implements N {}"])); 84 class A implements N {}''');
69 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 85 addNamedSource("/lib1.dart", r'''
70 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 86 library lib1;
87 class N {}''');
88 addNamedSource("/lib2.dart", r'''
89 library lib2;
90 class N {}''');
71 resolve(source); 91 resolve(source);
72 assertErrors(source, [ 92 assertErrors(source, [
73 StaticWarningCode.AMBIGUOUS_IMPORT, 93 StaticWarningCode.AMBIGUOUS_IMPORT,
74 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS]); 94 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS]);
75 } 95 }
76 96
77 void test_ambiguousImport_inPart() { 97 void test_ambiguousImport_inPart() {
78 Source source = addSource(EngineTestCase.createSource([ 98 Source source = addSource(r'''
79 "library lib;", 99 library lib;
80 "import 'lib1.dart';", 100 import 'lib1.dart';
81 "import 'lib2.dart';", 101 import 'lib2.dart';
82 "part 'part.dart';"])); 102 part 'part.dart';''');
83 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 103 addNamedSource("/lib1.dart", r'''
84 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 104 library lib1;
85 Source partSource = addNamedSource("/part.dart", EngineTestCase.createSource (["part of lib;", "class A extends N {}"])); 105 class N {}''');
106 addNamedSource("/lib2.dart", r'''
107 library lib2;
108 class N {}''');
109 Source partSource = addNamedSource("/part.dart", r'''
110 part of lib;
111 class A extends N {}''');
86 resolve(source); 112 resolve(source);
87 assertErrors(partSource, [ 113 assertErrors(partSource, [
88 StaticWarningCode.AMBIGUOUS_IMPORT, 114 StaticWarningCode.AMBIGUOUS_IMPORT,
89 CompileTimeErrorCode.EXTENDS_NON_CLASS]); 115 CompileTimeErrorCode.EXTENDS_NON_CLASS]);
90 } 116 }
91 117
92 void test_ambiguousImport_instanceCreation() { 118 void test_ambiguousImport_instanceCreation() {
93 Source source = addSource(EngineTestCase.createSource([ 119 Source source = addSource(r'''
94 "library L;", 120 library L;
95 "import 'lib1.dart';", 121 import 'lib1.dart';
96 "import 'lib2.dart';", 122 import 'lib2.dart';
97 "f() {new N();}"])); 123 f() {new N();}''');
98 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 124 addNamedSource("/lib1.dart", r'''
99 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 125 library lib1;
126 class N {}''');
127 addNamedSource("/lib2.dart", r'''
128 library lib2;
129 class N {}''');
100 resolve(source); 130 resolve(source);
101 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 131 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
102 } 132 }
103 133
104 void test_ambiguousImport_is() { 134 void test_ambiguousImport_is() {
105 Source source = addSource(EngineTestCase.createSource([ 135 Source source = addSource(r'''
106 "import 'lib1.dart';", 136 import 'lib1.dart';
107 "import 'lib2.dart';", 137 import 'lib2.dart';
108 "f(p) {p is N;}"])); 138 f(p) {p is N;}''');
109 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 139 addNamedSource("/lib1.dart", r'''
110 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 140 library lib1;
141 class N {}''');
142 addNamedSource("/lib2.dart", r'''
143 library lib2;
144 class N {}''');
111 resolve(source); 145 resolve(source);
112 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 146 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
113 } 147 }
114 148
115 void test_ambiguousImport_qualifier() { 149 void test_ambiguousImport_qualifier() {
116 Source source = addSource(EngineTestCase.createSource([ 150 Source source = addSource(r'''
117 "import 'lib1.dart';", 151 import 'lib1.dart';
118 "import 'lib2.dart';", 152 import 'lib2.dart';
119 "g() { N.FOO; }"])); 153 g() { N.FOO; }''');
120 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 154 addNamedSource("/lib1.dart", r'''
121 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 155 library lib1;
156 class N {}''');
157 addNamedSource("/lib2.dart", r'''
158 library lib2;
159 class N {}''');
122 resolve(source); 160 resolve(source);
123 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 161 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
124 } 162 }
125 163
126 void test_ambiguousImport_typeAnnotation() { 164 void test_ambiguousImport_typeAnnotation() {
127 Source source = addSource(EngineTestCase.createSource([ 165 Source source = addSource(r'''
128 "import 'lib1.dart';", 166 import 'lib1.dart';
129 "import 'lib2.dart';", 167 import 'lib2.dart';
130 "typedef N FT(N p);", 168 typedef N FT(N p);
131 "N f(N p) {", 169 N f(N p) {
132 " N v;", 170 N v;
133 " return null;", 171 return null;
134 "}", 172 }
135 "class A {", 173 class A {
136 " N m() { return null; }", 174 N m() { return null; }
137 "}", 175 }
138 "class B<T extends N> {}"])); 176 class B<T extends N> {}''');
139 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 177 addNamedSource("/lib1.dart", r'''
140 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 178 library lib1;
179 class N {}''');
180 addNamedSource("/lib2.dart", r'''
181 library lib2;
182 class N {}''');
141 resolve(source); 183 resolve(source);
142 assertErrors(source, [ 184 assertErrors(source, [
143 StaticWarningCode.AMBIGUOUS_IMPORT, 185 StaticWarningCode.AMBIGUOUS_IMPORT,
144 StaticWarningCode.AMBIGUOUS_IMPORT, 186 StaticWarningCode.AMBIGUOUS_IMPORT,
145 StaticWarningCode.AMBIGUOUS_IMPORT, 187 StaticWarningCode.AMBIGUOUS_IMPORT,
146 StaticWarningCode.AMBIGUOUS_IMPORT, 188 StaticWarningCode.AMBIGUOUS_IMPORT,
147 StaticWarningCode.AMBIGUOUS_IMPORT, 189 StaticWarningCode.AMBIGUOUS_IMPORT,
148 StaticWarningCode.AMBIGUOUS_IMPORT, 190 StaticWarningCode.AMBIGUOUS_IMPORT,
149 StaticWarningCode.AMBIGUOUS_IMPORT]); 191 StaticWarningCode.AMBIGUOUS_IMPORT]);
150 } 192 }
151 193
152 void test_ambiguousImport_typeArgument_annotation() { 194 void test_ambiguousImport_typeArgument_annotation() {
153 Source source = addSource(EngineTestCase.createSource([ 195 Source source = addSource(r'''
154 "import 'lib1.dart';", 196 import 'lib1.dart';
155 "import 'lib2.dart';", 197 import 'lib2.dart';
156 "class A<T> {}", 198 class A<T> {}
157 "A<N> f() { return null; }"])); 199 A<N> f() { return null; }''');
158 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 200 addNamedSource("/lib1.dart", r'''
159 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 201 library lib1;
202 class N {}''');
203 addNamedSource("/lib2.dart", r'''
204 library lib2;
205 class N {}''');
160 resolve(source); 206 resolve(source);
161 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 207 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
162 } 208 }
163 209
164 void test_ambiguousImport_typeArgument_instanceCreation() { 210 void test_ambiguousImport_typeArgument_instanceCreation() {
165 Source source = addSource(EngineTestCase.createSource([ 211 Source source = addSource(r'''
166 "import 'lib1.dart';", 212 import 'lib1.dart';
167 "import 'lib2.dart';", 213 import 'lib2.dart';
168 "class A<T> {}", 214 class A<T> {}
169 "f() {new A<N>();}"])); 215 f() {new A<N>();}''');
170 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " class N {}"])); 216 addNamedSource("/lib1.dart", r'''
171 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class N {}"])); 217 library lib1;
218 class N {}''');
219 addNamedSource("/lib2.dart", r'''
220 library lib2;
221 class N {}''');
172 resolve(source); 222 resolve(source);
173 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 223 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
174 } 224 }
175 225
176 void test_ambiguousImport_varRead() { 226 void test_ambiguousImport_varRead() {
177 Source source = addSource(EngineTestCase.createSource([ 227 Source source = addSource(r'''
178 "import 'lib1.dart';", 228 import 'lib1.dart';
179 "import 'lib2.dart';", 229 import 'lib2.dart';
180 "f() { g(v); }", 230 f() { g(v); }
181 "g(p) {}"])); 231 g(p) {}''');
182 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " var v;"])); 232 addNamedSource("/lib1.dart", r'''
183 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " var v;"])); 233 library lib1;
234 var v;''');
235 addNamedSource("/lib2.dart", r'''
236 library lib2;
237 var v;''');
184 resolve(source); 238 resolve(source);
185 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 239 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
186 } 240 }
187 241
188 void test_ambiguousImport_varWrite() { 242 void test_ambiguousImport_varWrite() {
189 Source source = addSource(EngineTestCase.createSource([ 243 Source source = addSource(r'''
190 "import 'lib1.dart';", 244 import 'lib1.dart';
191 "import 'lib2.dart';", 245 import 'lib2.dart';
192 "f() { v = 0; }"])); 246 f() { v = 0; }''');
193 addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", " var v;"])); 247 addNamedSource("/lib1.dart", r'''
194 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " var v;"])); 248 library lib1;
249 var v;''');
250 addNamedSource("/lib2.dart", r'''
251 library lib2;
252 var v;''');
195 resolve(source); 253 resolve(source);
196 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); 254 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
197 } 255 }
198 256
199 void test_argumentTypeNotAssignable_ambiguousClassName() { 257 void test_argumentTypeNotAssignable_ambiguousClassName() {
200 // See dartbug.com/19624 258 // See dartbug.com/19624
201 Source source = addNamedSource("/lib1.dart", EngineTestCase.createSource([ 259 Source source = addNamedSource("/lib1.dart", r'''
202 "library lib1;", 260 library lib1;
203 "import 'lib2.dart';", 261 import 'lib2.dart';
204 "class _A {}", 262 class _A {}
205 "f() {", 263 f() {
206 " g((_A a) {});", 264 g((_A a) {});
207 "}"])); 265 }''');
208 addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", " class _A {}", "g(h(_A a)) {}"])); 266 addNamedSource("/lib2.dart", r'''
267 library lib2;
268 class _A {}
269 g(h(_A a)) {}''');
209 resolve(source); 270 resolve(source);
210 // The name _A is private to the library it's defined in, so this is a type mismatch. 271 // The name _A is private to the library it's defined in, so this is a type mismatch.
211 // Furthermore, the error message should mention both _A and the filenames 272 // Furthermore, the error message should mention both _A and the filenames
212 // so the user can figure out what's going on. 273 // so the user can figure out what's going on.
213 List<AnalysisError> errors = analysisContext2.computeErrors(source); 274 List<AnalysisError> errors = analysisContext2.computeErrors(source);
214 EngineTestCase.assertLength(1, errors); 275 EngineTestCase.assertLength(1, errors);
215 AnalysisError error = errors[0]; 276 AnalysisError error = errors[0];
216 JUnitTestCase.assertEquals(error.errorCode, StaticWarningCode.ARGUMENT_TYPE_ NOT_ASSIGNABLE); 277 JUnitTestCase.assertEquals(error.errorCode, StaticWarningCode.ARGUMENT_TYPE_ NOT_ASSIGNABLE);
217 String message = error.message; 278 String message = error.message;
218 JUnitTestCase.assertTrue(message.indexOf("_A") != -1); 279 JUnitTestCase.assertTrue(message.indexOf("_A") != -1);
219 JUnitTestCase.assertTrue(message.indexOf("lib1.dart") != -1); 280 JUnitTestCase.assertTrue(message.indexOf("lib1.dart") != -1);
220 JUnitTestCase.assertTrue(message.indexOf("lib2.dart") != -1); 281 JUnitTestCase.assertTrue(message.indexOf("lib2.dart") != -1);
221 } 282 }
222 283
223 void test_argumentTypeNotAssignable_annotation_namedConstructor() { 284 void test_argumentTypeNotAssignable_annotation_namedConstructor() {
224 Source source = addSource(EngineTestCase.createSource([ 285 Source source = addSource(r'''
225 "class A {", 286 class A {
226 " const A.fromInt(int p);", 287 const A.fromInt(int p);
227 "}", 288 }
228 "@A.fromInt('0')", 289 @A.fromInt('0')
229 "main() {", 290 main() {
230 "}"])); 291 }''');
231 resolve(source); 292 resolve(source);
232 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 293 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
233 verify([source]); 294 verify([source]);
234 } 295 }
235 296
236 void test_argumentTypeNotAssignable_annotation_unnamedConstructor() { 297 void test_argumentTypeNotAssignable_annotation_unnamedConstructor() {
237 Source source = addSource(EngineTestCase.createSource([ 298 Source source = addSource(r'''
238 "class A {", 299 class A {
239 " const A(int p);", 300 const A(int p);
240 "}", 301 }
241 "@A('0')", 302 @A('0')
242 "main() {", 303 main() {
243 "}"])); 304 }''');
244 resolve(source); 305 resolve(source);
245 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 306 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
246 verify([source]); 307 verify([source]);
247 } 308 }
248 309
249 void test_argumentTypeNotAssignable_binary() { 310 void test_argumentTypeNotAssignable_binary() {
250 Source source = addSource(EngineTestCase.createSource([ 311 Source source = addSource(r'''
251 "class A {", 312 class A {
252 " operator +(int p) {}", 313 operator +(int p) {}
253 "}", 314 }
254 "f(A a) {", 315 f(A a) {
255 " a + '0';", 316 a + '0';
256 "}"])); 317 }''');
257 resolve(source); 318 resolve(source);
258 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 319 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
259 verify([source]); 320 verify([source]);
260 } 321 }
261 322
262 void test_argumentTypeNotAssignable_cascadeSecond() { 323 void test_argumentTypeNotAssignable_cascadeSecond() {
263 Source source = addSource(EngineTestCase.createSource([ 324 Source source = addSource(r'''
264 "// filler filler filler filler filler filler filler filler filler fille r", 325 // filler filler filler filler filler filler filler filler filler filler
265 "class A {", 326 class A {
266 " B ma() { return new B(); }", 327 B ma() { return new B(); }
267 "}", 328 }
268 "class B {", 329 class B {
269 " mb(String p) {}", 330 mb(String p) {}
270 "}", 331 }
271 "", 332
272 "main() {", 333 main() {
273 " A a = new A();", 334 A a = new A();
274 " a.. ma().mb(0);", 335 a.. ma().mb(0);
275 "}"])); 336 }''');
276 resolve(source); 337 resolve(source);
277 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 338 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
278 verify([source]); 339 verify([source]);
279 } 340 }
280 341
281 void test_argumentTypeNotAssignable_const() { 342 void test_argumentTypeNotAssignable_const() {
282 Source source = addSource(EngineTestCase.createSource([ 343 Source source = addSource(r'''
283 "class A {", 344 class A {
284 " const A(String p);", 345 const A(String p);
285 "}", 346 }
286 "main() {", 347 main() {
287 " const A(42);", 348 const A(42);
288 "}"])); 349 }''');
289 resolve(source); 350 resolve(source);
290 assertErrors(source, [ 351 assertErrors(source, [
291 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 352 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
292 CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]); 353 CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]);
293 verify([source]); 354 verify([source]);
294 } 355 }
295 356
296 void test_argumentTypeNotAssignable_const_super() { 357 void test_argumentTypeNotAssignable_const_super() {
297 Source source = addSource(EngineTestCase.createSource([ 358 Source source = addSource(r'''
298 "class A {", 359 class A {
299 " const A(String p);", 360 const A(String p);
300 "}", 361 }
301 "class B extends A {", 362 class B extends A {
302 " const B() : super(42);", 363 const B() : super(42);
303 "}"])); 364 }''');
304 resolve(source); 365 resolve(source);
305 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 366 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
306 verify([source]); 367 verify([source]);
307 } 368 }
308 369
309 void test_argumentTypeNotAssignable_functionExpressionInvocation_required() { 370 void test_argumentTypeNotAssignable_functionExpressionInvocation_required() {
310 Source source = addSource(EngineTestCase.createSource(["main() {", " (int x ) {} ('');", "}"])); 371 Source source = addSource(r'''
372 main() {
373 (int x) {} ('');
374 }''');
311 resolve(source); 375 resolve(source);
312 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 376 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
313 verify([source]); 377 verify([source]);
314 } 378 }
315 379
316 void test_argumentTypeNotAssignable_index() { 380 void test_argumentTypeNotAssignable_index() {
317 Source source = addSource(EngineTestCase.createSource([ 381 Source source = addSource(r'''
318 "class A {", 382 class A {
319 " operator [](int index) {}", 383 operator [](int index) {}
320 "}", 384 }
321 "f(A a) {", 385 f(A a) {
322 " a['0'];", 386 a['0'];
323 "}"])); 387 }''');
324 resolve(source); 388 resolve(source);
325 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 389 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
326 verify([source]); 390 verify([source]);
327 } 391 }
328 392
329 void test_argumentTypeNotAssignable_invocation_callParameter() { 393 void test_argumentTypeNotAssignable_invocation_callParameter() {
330 Source source = addSource(EngineTestCase.createSource([ 394 Source source = addSource(r'''
331 "class A {", 395 class A {
332 " call(int p) {}", 396 call(int p) {}
333 "}", 397 }
334 "f(A a) {", 398 f(A a) {
335 " a('0');", 399 a('0');
336 "}"])); 400 }''');
337 resolve(source); 401 resolve(source);
338 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 402 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
339 verify([source]); 403 verify([source]);
340 } 404 }
341 405
342 void test_argumentTypeNotAssignable_invocation_callVariable() { 406 void test_argumentTypeNotAssignable_invocation_callVariable() {
343 Source source = addSource(EngineTestCase.createSource([ 407 Source source = addSource(r'''
344 "class A {", 408 class A {
345 " call(int p) {}", 409 call(int p) {}
346 "}", 410 }
347 "main() {", 411 main() {
348 " A a = new A();", 412 A a = new A();
349 " a('0');", 413 a('0');
350 "}"])); 414 }''');
351 resolve(source); 415 resolve(source);
352 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 416 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
353 verify([source]); 417 verify([source]);
354 } 418 }
355 419
356 void test_argumentTypeNotAssignable_invocation_functionParameter() { 420 void test_argumentTypeNotAssignable_invocation_functionParameter() {
357 Source source = addSource(EngineTestCase.createSource(["a(b(int p)) {", " b ('0');", "}"])); 421 Source source = addSource(r'''
422 a(b(int p)) {
423 b('0');
424 }''');
358 resolve(source); 425 resolve(source);
359 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 426 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
360 verify([source]); 427 verify([source]);
361 } 428 }
362 429
363 void test_argumentTypeNotAssignable_invocation_functionParameter_generic() { 430 void test_argumentTypeNotAssignable_invocation_functionParameter_generic() {
364 Source source = addSource(EngineTestCase.createSource([ 431 Source source = addSource(r'''
365 "class A<K, V> {", 432 class A<K, V> {
366 " m(f(K k), V v) {", 433 m(f(K k), V v) {
367 " f(v);", 434 f(v);
368 " }", 435 }
369 "}"])); 436 }''');
370 resolve(source); 437 resolve(source);
371 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 438 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
372 verify([source]); 439 verify([source]);
373 } 440 }
374 441
375 void test_argumentTypeNotAssignable_invocation_functionTypes_optional() { 442 void test_argumentTypeNotAssignable_invocation_functionTypes_optional() {
376 Source source = addSource(EngineTestCase.createSource([ 443 Source source = addSource(r'''
377 "void acceptFunNumOptBool(void funNumOptBool([bool b])) {}", 444 void acceptFunNumOptBool(void funNumOptBool([bool b])) {}
378 "void funNumBool(bool b) {}", 445 void funNumBool(bool b) {}
379 "main() {", 446 main() {
380 " acceptFunNumOptBool(funNumBool);", 447 acceptFunNumOptBool(funNumBool);
381 "}"])); 448 }''');
382 resolve(source); 449 resolve(source);
383 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 450 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
384 verify([source]); 451 verify([source]);
385 } 452 }
386 453
387 void test_argumentTypeNotAssignable_invocation_generic() { 454 void test_argumentTypeNotAssignable_invocation_generic() {
388 Source source = addSource(EngineTestCase.createSource([ 455 Source source = addSource(r'''
389 "class A<T> {", 456 class A<T> {
390 " m(T t) {}", 457 m(T t) {}
391 "}", 458 }
392 "f(A<String> a) {", 459 f(A<String> a) {
393 " a.m(1);", 460 a.m(1);
394 "}"])); 461 }''');
395 resolve(source); 462 resolve(source);
396 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 463 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
397 verify([source]); 464 verify([source]);
398 } 465 }
399 466
400 void test_argumentTypeNotAssignable_invocation_named() { 467 void test_argumentTypeNotAssignable_invocation_named() {
401 Source source = addSource(EngineTestCase.createSource(["f({String p}) {}", " main() {", " f(p: 42);", "}"])); 468 Source source = addSource(r'''
469 f({String p}) {}
470 main() {
471 f(p: 42);
472 }''');
402 resolve(source); 473 resolve(source);
403 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 474 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
404 verify([source]); 475 verify([source]);
405 } 476 }
406 477
407 void test_argumentTypeNotAssignable_invocation_optional() { 478 void test_argumentTypeNotAssignable_invocation_optional() {
408 Source source = addSource(EngineTestCase.createSource(["f([String p]) {}", " main() {", " f(42);", "}"])); 479 Source source = addSource(r'''
480 f([String p]) {}
481 main() {
482 f(42);
483 }''');
409 resolve(source); 484 resolve(source);
410 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 485 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
411 verify([source]); 486 verify([source]);
412 } 487 }
413 488
414 void test_argumentTypeNotAssignable_invocation_required() { 489 void test_argumentTypeNotAssignable_invocation_required() {
415 Source source = addSource(EngineTestCase.createSource(["f(String p) {}", "ma in() {", " f(42);", "}"])); 490 Source source = addSource(r'''
491 f(String p) {}
492 main() {
493 f(42);
494 }''');
416 resolve(source); 495 resolve(source);
417 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 496 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
418 verify([source]); 497 verify([source]);
419 } 498 }
420 499
421 void test_argumentTypeNotAssignable_invocation_typedef_generic() { 500 void test_argumentTypeNotAssignable_invocation_typedef_generic() {
422 Source source = addSource(EngineTestCase.createSource(["typedef A<T>(T p);", "f(A<int> a) {", " a('1');", "}"])); 501 Source source = addSource(r'''
502 typedef A<T>(T p);
503 f(A<int> a) {
504 a('1');
505 }''');
423 resolve(source); 506 resolve(source);
424 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 507 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
425 verify([source]); 508 verify([source]);
426 } 509 }
427 510
428 void test_argumentTypeNotAssignable_invocation_typedef_local() { 511 void test_argumentTypeNotAssignable_invocation_typedef_local() {
429 Source source = addSource(EngineTestCase.createSource([ 512 Source source = addSource(r'''
430 "typedef A(int p);", 513 typedef A(int p);
431 "A getA() => null;", 514 A getA() => null;
432 "main() {", 515 main() {
433 " A a = getA();", 516 A a = getA();
434 " a('1');", 517 a('1');
435 "}"])); 518 }''');
436 resolve(source); 519 resolve(source);
437 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 520 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
438 verify([source]); 521 verify([source]);
439 } 522 }
440 523
441 void test_argumentTypeNotAssignable_invocation_typedef_parameter() { 524 void test_argumentTypeNotAssignable_invocation_typedef_parameter() {
442 Source source = addSource(EngineTestCase.createSource(["typedef A(int p);", "f(A a) {", " a('1');", "}"])); 525 Source source = addSource(r'''
526 typedef A(int p);
527 f(A a) {
528 a('1');
529 }''');
443 resolve(source); 530 resolve(source);
444 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 531 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
445 verify([source]); 532 verify([source]);
446 } 533 }
447 534
448 void test_argumentTypeNotAssignable_new_generic() { 535 void test_argumentTypeNotAssignable_new_generic() {
449 Source source = addSource(EngineTestCase.createSource([ 536 Source source = addSource(r'''
450 "class A<T> {", 537 class A<T> {
451 " A(T p) {}", 538 A(T p) {}
452 "}", 539 }
453 "main() {", 540 main() {
454 " new A<String>(42);", 541 new A<String>(42);
455 "}"])); 542 }''');
456 resolve(source); 543 resolve(source);
457 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 544 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
458 verify([source]); 545 verify([source]);
459 } 546 }
460 547
461 void test_argumentTypeNotAssignable_new_optional() { 548 void test_argumentTypeNotAssignable_new_optional() {
462 Source source = addSource(EngineTestCase.createSource([ 549 Source source = addSource(r'''
463 "class A {", 550 class A {
464 " A([String p]) {}", 551 A([String p]) {}
465 "}", 552 }
466 "main() {", 553 main() {
467 " new A(42);", 554 new A(42);
468 "}"])); 555 }''');
469 resolve(source); 556 resolve(source);
470 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 557 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
471 verify([source]); 558 verify([source]);
472 } 559 }
473 560
474 void test_argumentTypeNotAssignable_new_required() { 561 void test_argumentTypeNotAssignable_new_required() {
475 Source source = addSource(EngineTestCase.createSource([ 562 Source source = addSource(r'''
476 "class A {", 563 class A {
477 " A(String p) {}", 564 A(String p) {}
478 "}", 565 }
479 "main() {", 566 main() {
480 " new A(42);", 567 new A(42);
481 "}"])); 568 }''');
482 resolve(source); 569 resolve(source);
483 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 570 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
484 verify([source]); 571 verify([source]);
485 } 572 }
486 573
487 void test_assignmentToConst_instanceVariable() { 574 void test_assignmentToConst_instanceVariable() {
488 Source source = addSource(EngineTestCase.createSource([ 575 Source source = addSource(r'''
489 "class A {", 576 class A {
490 " static const v = 0;", 577 static const v = 0;
491 "}", 578 }
492 "f() {", 579 f() {
493 " A.v = 1;", 580 A.v = 1;
494 "}"])); 581 }''');
495 resolve(source); 582 resolve(source);
496 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); 583 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
497 verify([source]); 584 verify([source]);
498 } 585 }
499 586
500 void test_assignmentToConst_instanceVariable_plusEq() { 587 void test_assignmentToConst_instanceVariable_plusEq() {
501 Source source = addSource(EngineTestCase.createSource([ 588 Source source = addSource(r'''
502 "class A {", 589 class A {
503 " static const v = 0;", 590 static const v = 0;
504 "}", 591 }
505 "f() {", 592 f() {
506 " A.v += 1;", 593 A.v += 1;
507 "}"])); 594 }''');
508 resolve(source); 595 resolve(source);
509 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); 596 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
510 verify([source]); 597 verify([source]);
511 } 598 }
512 599
513 void test_assignmentToConst_localVariable() { 600 void test_assignmentToConst_localVariable() {
514 Source source = addSource(EngineTestCase.createSource(["f() {", " const x = 0;", " x = 1;", "}"])); 601 Source source = addSource(r'''
602 f() {
603 const x = 0;
604 x = 1;
605 }''');
515 resolve(source); 606 resolve(source);
516 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); 607 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
517 verify([source]); 608 verify([source]);
518 } 609 }
519 610
520 void test_assignmentToConst_localVariable_plusEq() { 611 void test_assignmentToConst_localVariable_plusEq() {
521 Source source = addSource(EngineTestCase.createSource(["f() {", " const x = 0;", " x += 1;", "}"])); 612 Source source = addSource(r'''
613 f() {
614 const x = 0;
615 x += 1;
616 }''');
522 resolve(source); 617 resolve(source);
523 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); 618 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
524 verify([source]); 619 verify([source]);
525 } 620 }
526 621
527 void test_assignmentToFinal_instanceVariable() { 622 void test_assignmentToFinal_instanceVariable() {
528 Source source = addSource(EngineTestCase.createSource([ 623 Source source = addSource(r'''
529 "class A {", 624 class A {
530 " final v = 0;", 625 final v = 0;
531 "}", 626 }
532 "f() {", 627 f() {
533 " A a = new A();", 628 A a = new A();
534 " a.v = 1;", 629 a.v = 1;
535 "}"])); 630 }''');
536 resolve(source); 631 resolve(source);
537 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 632 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
538 verify([source]); 633 verify([source]);
539 } 634 }
540 635
541 void test_assignmentToFinal_instanceVariable_plusEq() { 636 void test_assignmentToFinal_instanceVariable_plusEq() {
542 Source source = addSource(EngineTestCase.createSource([ 637 Source source = addSource(r'''
543 "class A {", 638 class A {
544 " final v = 0;", 639 final v = 0;
545 "}", 640 }
546 "f() {", 641 f() {
547 " A a = new A();", 642 A a = new A();
548 " a.v += 1;", 643 a.v += 1;
549 "}"])); 644 }''');
550 resolve(source); 645 resolve(source);
551 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 646 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
552 verify([source]); 647 verify([source]);
553 } 648 }
554 649
555 void test_assignmentToFinal_localVariable() { 650 void test_assignmentToFinal_localVariable() {
556 Source source = addSource(EngineTestCase.createSource(["f() {", " final x = 0;", " x = 1;", "}"])); 651 Source source = addSource(r'''
652 f() {
653 final x = 0;
654 x = 1;
655 }''');
557 resolve(source); 656 resolve(source);
558 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 657 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
559 verify([source]); 658 verify([source]);
560 } 659 }
561 660
562 void test_assignmentToFinal_localVariable_plusEq() { 661 void test_assignmentToFinal_localVariable_plusEq() {
563 Source source = addSource(EngineTestCase.createSource(["f() {", " final x = 0;", " x += 1;", "}"])); 662 Source source = addSource(r'''
663 f() {
664 final x = 0;
665 x += 1;
666 }''');
564 resolve(source); 667 resolve(source);
565 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 668 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
566 verify([source]); 669 verify([source]);
567 } 670 }
568 671
569 void test_assignmentToFinal_postfixMinusMinus() { 672 void test_assignmentToFinal_postfixMinusMinus() {
570 Source source = addSource(EngineTestCase.createSource(["f() {", " final x = 0;", " x--;", "}"])); 673 Source source = addSource(r'''
674 f() {
675 final x = 0;
676 x--;
677 }''');
571 resolve(source); 678 resolve(source);
572 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 679 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
573 verify([source]); 680 verify([source]);
574 } 681 }
575 682
576 void test_assignmentToFinal_postfixPlusPlus() { 683 void test_assignmentToFinal_postfixPlusPlus() {
577 Source source = addSource(EngineTestCase.createSource(["f() {", " final x = 0;", " x++;", "}"])); 684 Source source = addSource(r'''
685 f() {
686 final x = 0;
687 x++;
688 }''');
578 resolve(source); 689 resolve(source);
579 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 690 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
580 verify([source]); 691 verify([source]);
581 } 692 }
582 693
583 void test_assignmentToFinal_prefixMinusMinus() { 694 void test_assignmentToFinal_prefixMinusMinus() {
584 Source source = addSource(EngineTestCase.createSource(["f() {", " final x = 0;", " --x;", "}"])); 695 Source source = addSource(r'''
696 f() {
697 final x = 0;
698 --x;
699 }''');
585 resolve(source); 700 resolve(source);
586 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 701 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
587 verify([source]); 702 verify([source]);
588 } 703 }
589 704
590 void test_assignmentToFinal_prefixPlusPlus() { 705 void test_assignmentToFinal_prefixPlusPlus() {
591 Source source = addSource(EngineTestCase.createSource(["f() {", " final x = 0;", " ++x;", "}"])); 706 Source source = addSource(r'''
707 f() {
708 final x = 0;
709 ++x;
710 }''');
592 resolve(source); 711 resolve(source);
593 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 712 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
594 verify([source]); 713 verify([source]);
595 } 714 }
596 715
597 void test_assignmentToFinal_suffixMinusMinus() { 716 void test_assignmentToFinal_suffixMinusMinus() {
598 Source source = addSource(EngineTestCase.createSource(["f() {", " final x = 0;", " x--;", "}"])); 717 Source source = addSource(r'''
718 f() {
719 final x = 0;
720 x--;
721 }''');
599 resolve(source); 722 resolve(source);
600 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 723 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
601 verify([source]); 724 verify([source]);
602 } 725 }
603 726
604 void test_assignmentToFinal_suffixPlusPlus() { 727 void test_assignmentToFinal_suffixPlusPlus() {
605 Source source = addSource(EngineTestCase.createSource(["f() {", " final x = 0;", " x++;", "}"])); 728 Source source = addSource(r'''
729 f() {
730 final x = 0;
731 x++;
732 }''');
606 resolve(source); 733 resolve(source);
607 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 734 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
608 verify([source]); 735 verify([source]);
609 } 736 }
610 737
611 void test_assignmentToFinal_topLevelVariable() { 738 void test_assignmentToFinal_topLevelVariable() {
612 Source source = addSource(EngineTestCase.createSource(["final x = 0;", "f() { x = 1; }"])); 739 Source source = addSource(r'''
740 final x = 0;
741 f() { x = 1; }''');
613 resolve(source); 742 resolve(source);
614 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); 743 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
615 verify([source]); 744 verify([source]);
616 } 745 }
617 746
618 void test_assignmentToFinalNoSetter_prefixedIdentifier() { 747 void test_assignmentToFinalNoSetter_prefixedIdentifier() {
619 Source source = addSource(EngineTestCase.createSource([ 748 Source source = addSource(r'''
620 "class A {", 749 class A {
621 " int get x => 0;", 750 int get x => 0;
622 "}", 751 }
623 "main() {", 752 main() {
624 " A a = new A();", 753 A a = new A();
625 " a.x = 0;", 754 a.x = 0;
626 "}"])); 755 }''');
627 resolve(source); 756 resolve(source);
628 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]); 757 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]);
629 verify([source]); 758 verify([source]);
630 } 759 }
631 760
632 void test_assignmentToFinalNoSetter_propertyAccess() { 761 void test_assignmentToFinalNoSetter_propertyAccess() {
633 Source source = addSource(EngineTestCase.createSource([ 762 Source source = addSource(r'''
634 "class A {", 763 class A {
635 " int get x => 0;", 764 int get x => 0;
636 "}", 765 }
637 "class B {", 766 class B {
638 " static A a;", 767 static A a;
639 "}", 768 }
640 "main() {", 769 main() {
641 " B.a.x = 0;", 770 B.a.x = 0;
642 "}"])); 771 }''');
643 resolve(source); 772 resolve(source);
644 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]); 773 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]);
645 verify([source]); 774 verify([source]);
646 } 775 }
647 776
648 void test_assignmentToFunction() { 777 void test_assignmentToFunction() {
649 Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {", " f = null;", "}"])); 778 Source source = addSource(r'''
779 f() {}
780 main() {
781 f = null;
782 }''');
650 resolve(source); 783 resolve(source);
651 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FUNCTION]); 784 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FUNCTION]);
652 verify([source]); 785 verify([source]);
653 } 786 }
654 787
655 void test_assignmentToMethod() { 788 void test_assignmentToMethod() {
656 Source source = addSource(EngineTestCase.createSource([ 789 Source source = addSource(r'''
657 "class A {", 790 class A {
658 " m() {}", 791 m() {}
659 "}", 792 }
660 "f(A a) {", 793 f(A a) {
661 " a.m = () {};", 794 a.m = () {};
662 "}"])); 795 }''');
663 resolve(source); 796 resolve(source);
664 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_METHOD]); 797 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_METHOD]);
665 verify([source]); 798 verify([source]);
666 } 799 }
667 800
668 void test_caseBlockNotTerminated() { 801 void test_caseBlockNotTerminated() {
669 Source source = addSource(EngineTestCase.createSource([ 802 Source source = addSource(r'''
670 "f(int p) {", 803 f(int p) {
671 " switch (p) {", 804 switch (p) {
672 " case 0:", 805 case 0:
673 " f(p);", 806 f(p);
674 " case 1:", 807 case 1:
675 " break;", 808 break;
676 " }", 809 }
677 "}"])); 810 }''');
678 resolve(source); 811 resolve(source);
679 assertErrors(source, [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]); 812 assertErrors(source, [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]);
680 verify([source]); 813 verify([source]);
681 } 814 }
682 815
683 void test_castToNonType() { 816 void test_castToNonType() {
684 Source source = addSource(EngineTestCase.createSource(["var A = 0;", "f(Stri ng s) { var x = s as A; }"])); 817 Source source = addSource(r'''
818 var A = 0;
819 f(String s) { var x = s as A; }''');
685 resolve(source); 820 resolve(source);
686 assertErrors(source, [StaticWarningCode.CAST_TO_NON_TYPE]); 821 assertErrors(source, [StaticWarningCode.CAST_TO_NON_TYPE]);
687 verify([source]); 822 verify([source]);
688 } 823 }
689 824
690 void test_concreteClassWithAbstractMember() { 825 void test_concreteClassWithAbstractMember() {
691 Source source = addSource(EngineTestCase.createSource(["class A {", " m();" , "}"])); 826 Source source = addSource(r'''
827 class A {
828 m();
829 }''');
692 resolve(source); 830 resolve(source);
693 assertErrors(source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER] ); 831 assertErrors(source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER] );
694 verify([source]); 832 verify([source]);
695 } 833 }
696 834
697 void test_conflictingDartImport() { 835 void test_conflictingDartImport() {
698 Source source = addSource(EngineTestCase.createSource([ 836 Source source = addSource(r'''
699 "import 'lib.dart';", 837 import 'lib.dart';
700 "import 'dart:async';", 838 import 'dart:async';
701 "Future f = null;", 839 Future f = null;
702 "Stream s;"])); 840 Stream s;''');
703 addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "cl ass Future {}"])); 841 addNamedSource("/lib.dart", r'''
842 library lib;
843 class Future {}''');
704 resolve(source); 844 resolve(source);
705 assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]); 845 assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]);
706 } 846 }
707 847
708 void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter () { 848 void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter () {
709 Source source = addSource(EngineTestCase.createSource([ 849 Source source = addSource(r'''
710 "class A {", 850 class A {
711 " static set v(x) {}", 851 static set v(x) {}
712 "}", 852 }
713 "class B extends A {", 853 class B extends A {
714 " var v;", 854 var v;
715 "}"])); 855 }''');
716 resolve(source); 856 resolve(source);
717 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]); 857 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]);
718 verify([source]); 858 verify([source]);
719 } 859 }
720 860
721 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_gette r() { 861 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_gette r() {
722 Source source = addSource(EngineTestCase.createSource([ 862 Source source = addSource(r'''
723 "class A {", 863 class A {
724 " static get v => 0;", 864 static get v => 0;
725 "}", 865 }
726 "class B extends A {", 866 class B extends A {
727 " get v => 0;", 867 get v => 0;
728 "}"])); 868 }''');
729 resolve(source); 869 resolve(source);
730 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]); 870 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]);
731 verify([source]); 871 verify([source]);
732 } 872 }
733 873
734 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_metho d() { 874 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_metho d() {
735 Source source = addSource(EngineTestCase.createSource([ 875 Source source = addSource(r'''
736 "class A {", 876 class A {
737 " static v() {}", 877 static v() {}
738 "}", 878 }
739 "class B extends A {", 879 class B extends A {
740 " get v => 0;", 880 get v => 0;
741 "}"])); 881 }''');
742 resolve(source); 882 resolve(source);
743 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]); 883 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]);
744 verify([source]); 884 verify([source]);
745 } 885 }
746 886
747 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_sette r() { 887 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_sette r() {
748 Source source = addSource(EngineTestCase.createSource([ 888 Source source = addSource(r'''
749 "class A {", 889 class A {
750 " static set v(x) {}", 890 static set v(x) {}
751 "}", 891 }
752 "class B extends A {", 892 class B extends A {
753 " get v => 0;", 893 get v => 0;
754 "}"])); 894 }''');
755 resolve(source); 895 resolve(source);
756 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]); 896 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]);
757 verify([source]); 897 verify([source]);
758 } 898 }
759 899
760 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() { 900 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() {
761 Source source = addSource(EngineTestCase.createSource([ 901 Source source = addSource(r'''
762 "class A {", 902 class A {
763 " static int v;", 903 static int v;
764 "}", 904 }
765 "class B extends A {}", 905 class B extends A {}
766 "class C extends B {", 906 class C extends B {
767 " get v => 0;", 907 get v => 0;
768 "}"])); 908 }''');
769 resolve(source); 909 resolve(source);
770 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]); 910 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]);
771 verify([source]); 911 verify([source]);
772 } 912 }
773 913
774 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() { 914 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() {
775 Source source = addSource(EngineTestCase.createSource([ 915 Source source = addSource(r'''
776 "class M {", 916 class M {
777 " static int v;", 917 static int v;
778 "}", 918 }
779 "class B extends Object with M {", 919 class B extends Object with M {
780 " get v => 0;", 920 get v => 0;
781 "}"])); 921 }''');
782 resolve(source); 922 resolve(source);
783 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]); 923 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]);
784 verify([source]); 924 verify([source]);
785 } 925 }
786 926
787 void test_conflictingInstanceGetterAndSuperclassMember_direct_field() { 927 void test_conflictingInstanceGetterAndSuperclassMember_direct_field() {
788 Source source = addSource(EngineTestCase.createSource([ 928 Source source = addSource(r'''
789 "class A {", 929 class A {
790 " static int v;", 930 static int v;
791 "}", 931 }
792 "class B extends A {", 932 class B extends A {
793 " get v => 0;", 933 get v => 0;
794 "}"])); 934 }''');
795 resolve(source); 935 resolve(source);
796 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]); 936 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE RCLASS_MEMBER]);
797 verify([source]); 937 verify([source]);
798 } 938 }
799 939
800 void test_conflictingInstanceMethodSetter_sameClass() { 940 void test_conflictingInstanceMethodSetter_sameClass() {
801 Source source = addSource(EngineTestCase.createSource(["class A {", " set f oo(a) {}", " foo() {}", "}"])); 941 Source source = addSource(r'''
942 class A {
943 set foo(a) {}
944 foo() {}
945 }''');
802 resolve(source); 946 resolve(source);
803 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]) ; 947 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]) ;
804 verify([source]); 948 verify([source]);
805 } 949 }
806 950
807 void test_conflictingInstanceMethodSetter_setterInInterface() { 951 void test_conflictingInstanceMethodSetter_setterInInterface() {
808 Source source = addSource(EngineTestCase.createSource([ 952 Source source = addSource(r'''
809 "abstract class A {", 953 abstract class A {
810 " set foo(a);", 954 set foo(a);
811 "}", 955 }
812 "abstract class B implements A {", 956 abstract class B implements A {
813 " foo() {}", 957 foo() {}
814 "}"])); 958 }''');
815 resolve(source); 959 resolve(source);
816 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]) ; 960 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]) ;
817 verify([source]); 961 verify([source]);
818 } 962 }
819 963
820 void test_conflictingInstanceMethodSetter_setterInSuper() { 964 void test_conflictingInstanceMethodSetter_setterInSuper() {
821 Source source = addSource(EngineTestCase.createSource([ 965 Source source = addSource(r'''
822 "class A {", 966 class A {
823 " set foo(a) {}", 967 set foo(a) {}
824 "}", 968 }
825 "class B extends A {", 969 class B extends A {
826 " foo() {}", 970 foo() {}
827 "}"])); 971 }''');
828 resolve(source); 972 resolve(source);
829 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]) ; 973 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]) ;
830 verify([source]); 974 verify([source]);
831 } 975 }
832 976
833 void test_conflictingInstanceMethodSetter2() { 977 void test_conflictingInstanceMethodSetter2() {
834 Source source = addSource(EngineTestCase.createSource(["class A {", " foo() {}", " set foo(a) {}", "}"])); 978 Source source = addSource(r'''
979 class A {
980 foo() {}
981 set foo(a) {}
982 }''');
835 resolve(source); 983 resolve(source);
836 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2] ); 984 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2] );
837 verify([source]); 985 verify([source]);
838 } 986 }
839 987
840 void test_conflictingInstanceSetterAndSuperclassMember() { 988 void test_conflictingInstanceSetterAndSuperclassMember() {
841 Source source = addSource(EngineTestCase.createSource([ 989 Source source = addSource(r'''
842 "class A {", 990 class A {
843 " static int v;", 991 static int v;
844 "}", 992 }
845 "class B extends A {", 993 class B extends A {
846 " set v(x) {}", 994 set v(x) {}
847 "}"])); 995 }''');
848 resolve(source); 996 resolve(source);
849 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPE RCLASS_MEMBER]); 997 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPE RCLASS_MEMBER]);
850 verify([source]); 998 verify([source]);
851 } 999 }
852 1000
853 void test_conflictingStaticGetterAndInstanceSetter_mixin() { 1001 void test_conflictingStaticGetterAndInstanceSetter_mixin() {
854 Source source = addSource(EngineTestCase.createSource([ 1002 Source source = addSource(r'''
855 "class A {", 1003 class A {
856 " set x(int p) {}", 1004 set x(int p) {}
857 "}", 1005 }
858 "class B extends Object with A {", 1006 class B extends Object with A {
859 " static get x => 0;", 1007 static get x => 0;
860 "}"])); 1008 }''');
861 resolve(source); 1009 resolve(source);
862 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN CE_SETTER]); 1010 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN CE_SETTER]);
863 verify([source]); 1011 verify([source]);
864 } 1012 }
865 1013
866 void test_conflictingStaticGetterAndInstanceSetter_superClass() { 1014 void test_conflictingStaticGetterAndInstanceSetter_superClass() {
867 Source source = addSource(EngineTestCase.createSource([ 1015 Source source = addSource(r'''
868 "class A {", 1016 class A {
869 " set x(int p) {}", 1017 set x(int p) {}
870 "}", 1018 }
871 "class B extends A {", 1019 class B extends A {
872 " static get x => 0;", 1020 static get x => 0;
873 "}"])); 1021 }''');
874 resolve(source); 1022 resolve(source);
875 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN CE_SETTER]); 1023 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN CE_SETTER]);
876 verify([source]); 1024 verify([source]);
877 } 1025 }
878 1026
879 void test_conflictingStaticGetterAndInstanceSetter_thisClass() { 1027 void test_conflictingStaticGetterAndInstanceSetter_thisClass() {
880 Source source = addSource(EngineTestCase.createSource([ 1028 Source source = addSource(r'''
881 "class A {", 1029 class A {
882 " static get x => 0;", 1030 static get x => 0;
883 " set x(int p) {}", 1031 set x(int p) {}
884 "}"])); 1032 }''');
885 resolve(source); 1033 resolve(source);
886 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN CE_SETTER]); 1034 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN CE_SETTER]);
887 verify([source]); 1035 verify([source]);
888 } 1036 }
889 1037
890 void test_conflictingStaticSetterAndInstanceMember_thisClass_getter() { 1038 void test_conflictingStaticSetterAndInstanceMember_thisClass_getter() {
891 Source source = addSource(EngineTestCase.createSource([ 1039 Source source = addSource(r'''
892 "class A {", 1040 class A {
893 " get x => 0;", 1041 get x => 0;
894 " static set x(int p) {}", 1042 static set x(int p) {}
895 "}"])); 1043 }''');
896 resolve(source); 1044 resolve(source);
897 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTAN CE_MEMBER]); 1045 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTAN CE_MEMBER]);
898 verify([source]); 1046 verify([source]);
899 } 1047 }
900 1048
901 void test_conflictingStaticSetterAndInstanceMember_thisClass_method() { 1049 void test_conflictingStaticSetterAndInstanceMember_thisClass_method() {
902 Source source = addSource(EngineTestCase.createSource(["class A {", " x() { }", " static set x(int p) {}", "}"])); 1050 Source source = addSource(r'''
1051 class A {
1052 x() {}
1053 static set x(int p) {}
1054 }''');
903 resolve(source); 1055 resolve(source);
904 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTAN CE_MEMBER]); 1056 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTAN CE_MEMBER]);
905 verify([source]); 1057 verify([source]);
906 } 1058 }
907 1059
908 void test_constWithAbstractClass() { 1060 void test_constWithAbstractClass() {
909 Source source = addSource(EngineTestCase.createSource([ 1061 Source source = addSource(r'''
910 "abstract class A {", 1062 abstract class A {
911 " const A();", 1063 const A();
912 "}", 1064 }
913 "void f() {", 1065 void f() {
914 " A a = const A();", 1066 A a = const A();
915 "}"])); 1067 }''');
916 resolve(source); 1068 resolve(source);
917 assertErrors(source, [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS]); 1069 assertErrors(source, [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS]);
918 verify([source]); 1070 verify([source]);
919 } 1071 }
920 1072
921 void test_equalKeysInMap() { 1073 void test_equalKeysInMap() {
922 Source source = addSource(EngineTestCase.createSource(["var m = {'a' : 0, 'b ' : 1, 'a' : 2};"])); 1074 Source source = addSource("var m = {'a' : 0, 'b' : 1, 'a' : 2};");
923 resolve(source); 1075 resolve(source);
924 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); 1076 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]);
925 verify([source]); 1077 verify([source]);
926 } 1078 }
927 1079
928 void test_equalKeysInMap_withEqualTypeParams() { 1080 void test_equalKeysInMap_withEqualTypeParams() {
929 Source source = addSource(EngineTestCase.createSource([ 1081 Source source = addSource(r'''
930 "class A<T> {", 1082 class A<T> {
931 " const A();", 1083 const A();
932 "}", 1084 }
933 "var m = {const A<int>(): 0, const A<int>(): 1};"])); 1085 var m = {const A<int>(): 0, const A<int>(): 1};''');
934 resolve(source); 1086 resolve(source);
935 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); 1087 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]);
936 verify([source]); 1088 verify([source]);
937 } 1089 }
938 1090
939 void test_equalKeysInMap_withUnequalTypeParams() { 1091 void test_equalKeysInMap_withUnequalTypeParams() {
940 // No error should be produced because A<int> and A<num> are different types . 1092 // No error should be produced because A<int> and A<num> are different types .
941 Source source = addSource(EngineTestCase.createSource([ 1093 Source source = addSource(r'''
942 "class A<T> {", 1094 class A<T> {
943 " const A();", 1095 const A();
944 "}", 1096 }
945 "var m = {const A<int>(): 0, const A<num>(): 1};"])); 1097 var m = {const A<int>(): 0, const A<num>(): 1};''');
946 resolve(source); 1098 resolve(source);
947 assertNoErrors(source); 1099 assertNoErrors(source);
948 verify([source]); 1100 verify([source]);
949 } 1101 }
950 1102
951 void test_exportDuplicatedLibraryName() { 1103 void test_exportDuplicatedLibraryName() {
952 Source source = addSource(EngineTestCase.createSource([ 1104 Source source = addSource(r'''
953 "library test;", 1105 library test;
954 "export 'lib1.dart';", 1106 export 'lib1.dart';
955 "export 'lib2.dart';"])); 1107 export 'lib2.dart';''');
956 addNamedSource("/lib1.dart", "library lib;"); 1108 addNamedSource("/lib1.dart", "library lib;");
957 addNamedSource("/lib2.dart", "library lib;"); 1109 addNamedSource("/lib2.dart", "library lib;");
958 resolve(source); 1110 resolve(source);
959 assertErrors(source, [StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAME]); 1111 assertErrors(source, [StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAME]);
960 verify([source]); 1112 verify([source]);
961 } 1113 }
962 1114
963 void test_extraPositionalArguments() { 1115 void test_extraPositionalArguments() {
964 Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {", " f(0, 1, '2');", "}"])); 1116 Source source = addSource(r'''
1117 f() {}
1118 main() {
1119 f(0, 1, '2');
1120 }''');
965 resolve(source); 1121 resolve(source);
966 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); 1122 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]);
967 verify([source]); 1123 verify([source]);
968 } 1124 }
969 1125
970 void test_extraPositionalArguments_functionExpression() { 1126 void test_extraPositionalArguments_functionExpression() {
971 Source source = addSource(EngineTestCase.createSource(["main() {", " (int x ) {} (0, 1);", "}"])); 1127 Source source = addSource(r'''
1128 main() {
1129 (int x) {} (0, 1);
1130 }''');
972 resolve(source); 1131 resolve(source);
973 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); 1132 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]);
974 verify([source]); 1133 verify([source]);
975 } 1134 }
976 1135
977 void test_fieldInitializedInInitializerAndDeclaration_final() { 1136 void test_fieldInitializedInInitializerAndDeclaration_final() {
978 Source source = addSource(EngineTestCase.createSource([ 1137 Source source = addSource(r'''
979 "class A {", 1138 class A {
980 " final int x = 0;", 1139 final int x = 0;
981 " A() : x = 1 {}", 1140 A() : x = 1 {}
982 "}"])); 1141 }''');
983 resolve(source); 1142 resolve(source);
984 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND _DECLARATION]); 1143 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND _DECLARATION]);
985 verify([source]); 1144 verify([source]);
986 } 1145 }
987 1146
988 void test_fieldInitializerNotAssignable() { 1147 void test_fieldInitializerNotAssignable() {
989 Source source = addSource(EngineTestCase.createSource(["class A {", " int x ;", " A() : x = '';", "}"])); 1148 Source source = addSource(r'''
1149 class A {
1150 int x;
1151 A() : x = '';
1152 }''');
990 resolve(source); 1153 resolve(source);
991 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE]); 1154 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE]);
992 verify([source]); 1155 verify([source]);
993 } 1156 }
994 1157
995 void test_fieldInitializingFormalNotAssignable() { 1158 void test_fieldInitializingFormalNotAssignable() {
996 Source source = addSource(EngineTestCase.createSource(["class A {", " int x ;", " A(String this.x) {}", "}"])); 1159 Source source = addSource(r'''
1160 class A {
1161 int x;
1162 A(String this.x) {}
1163 }''');
997 resolve(source); 1164 resolve(source);
998 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGN ABLE]); 1165 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGN ABLE]);
999 verify([source]); 1166 verify([source]);
1000 } 1167 }
1001 1168
1002 /** 1169 /**
1003 * This test doesn't test the FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR code, but tests the 1170 * This test doesn't test the FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR code, but tests the
1004 * FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION code instead. It is provid ed here to show 1171 * FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION code instead. It is provid ed here to show
1005 * coverage over all of the permutations of initializers in constructor declar ations. 1172 * coverage over all of the permutations of initializers in constructor declar ations.
1006 * 1173 *
1007 * Note: FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION covers a subset of 1174 * Note: FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION covers a subset of
1008 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w e use it instead of 1175 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w e use it instead of
1009 * the broader code 1176 * the broader code
1010 */ 1177 */
1011 void test_finalInitializedInDeclarationAndConstructor_initializers() { 1178 void test_finalInitializedInDeclarationAndConstructor_initializers() {
1012 Source source = addSource(EngineTestCase.createSource(["class A {", " final x = 0;", " A() : x = 0 {}", "}"])); 1179 Source source = addSource(r'''
1180 class A {
1181 final x = 0;
1182 A() : x = 0 {}
1183 }''');
1013 resolve(source); 1184 resolve(source);
1014 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND _DECLARATION]); 1185 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND _DECLARATION]);
1015 verify([source]); 1186 verify([source]);
1016 } 1187 }
1017 1188
1018 void test_finalInitializedInDeclarationAndConstructor_initializingFormal() { 1189 void test_finalInitializedInDeclarationAndConstructor_initializingFormal() {
1019 Source source = addSource(EngineTestCase.createSource(["class A {", " final x = 0;", " A(this.x) {}", "}"])); 1190 Source source = addSource(r'''
1191 class A {
1192 final x = 0;
1193 A(this.x) {}
1194 }''');
1020 resolve(source); 1195 resolve(source);
1021 assertErrors(source, [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND _CONSTRUCTOR]); 1196 assertErrors(source, [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND _CONSTRUCTOR]);
1022 verify([source]); 1197 verify([source]);
1023 } 1198 }
1024 1199
1025 void test_finalNotInitialized_inConstructor() { 1200 void test_finalNotInitialized_inConstructor() {
1026 Source source = addSource(EngineTestCase.createSource(["class A {", " final int x;", " A() {}", "}"])); 1201 Source source = addSource(r'''
1202 class A {
1203 final int x;
1204 A() {}
1205 }''');
1027 resolve(source); 1206 resolve(source);
1028 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1207 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1029 verify([source]); 1208 verify([source]);
1030 } 1209 }
1031 1210
1032 void test_finalNotInitialized_instanceField_final() { 1211 void test_finalNotInitialized_instanceField_final() {
1033 Source source = addSource(EngineTestCase.createSource(["class A {", " final F;", "}"])); 1212 Source source = addSource(r'''
1213 class A {
1214 final F;
1215 }''');
1034 resolve(source); 1216 resolve(source);
1035 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1217 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1036 verify([source]); 1218 verify([source]);
1037 } 1219 }
1038 1220
1039 void test_finalNotInitialized_instanceField_final_static() { 1221 void test_finalNotInitialized_instanceField_final_static() {
1040 Source source = addSource(EngineTestCase.createSource(["class A {", " stati c final F;", "}"])); 1222 Source source = addSource(r'''
1223 class A {
1224 static final F;
1225 }''');
1041 resolve(source); 1226 resolve(source);
1042 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1227 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1043 verify([source]); 1228 verify([source]);
1044 } 1229 }
1045 1230
1046 void test_finalNotInitialized_library_final() { 1231 void test_finalNotInitialized_library_final() {
1047 Source source = addSource(EngineTestCase.createSource(["final F;"])); 1232 Source source = addSource("final F;");
1048 resolve(source); 1233 resolve(source);
1049 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1234 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1050 verify([source]); 1235 verify([source]);
1051 } 1236 }
1052 1237
1053 void test_finalNotInitialized_local_final() { 1238 void test_finalNotInitialized_local_final() {
1054 Source source = addSource(EngineTestCase.createSource(["f() {", " final int x;", "}"])); 1239 Source source = addSource(r'''
1240 f() {
1241 final int x;
1242 }''');
1055 resolve(source); 1243 resolve(source);
1056 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); 1244 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
1057 verify([source]); 1245 verify([source]);
1058 } 1246 }
1059 1247
1060 void test_functionWithoutCall_direct() { 1248 void test_functionWithoutCall_direct() {
1061 Source source = addSource(EngineTestCase.createSource(["class A implements F unction {", "}"])); 1249 Source source = addSource(r'''
1250 class A implements Function {
1251 }''');
1062 resolve(source); 1252 resolve(source);
1063 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); 1253 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
1064 verify([source]); 1254 verify([source]);
1065 } 1255 }
1066 1256
1067 void test_functionWithoutCall_indirect_extends() { 1257 void test_functionWithoutCall_indirect_extends() {
1068 Source source = addSource(EngineTestCase.createSource([ 1258 Source source = addSource(r'''
1069 "abstract class A implements Function {", 1259 abstract class A implements Function {
1070 "}", 1260 }
1071 "class B extends A {", 1261 class B extends A {
1072 "}"])); 1262 }''');
1073 resolve(source); 1263 resolve(source);
1074 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); 1264 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
1075 verify([source]); 1265 verify([source]);
1076 } 1266 }
1077 1267
1078 void test_functionWithoutCall_indirect_implements() { 1268 void test_functionWithoutCall_indirect_implements() {
1079 Source source = addSource(EngineTestCase.createSource([ 1269 Source source = addSource(r'''
1080 "abstract class A implements Function {", 1270 abstract class A implements Function {
1081 "}", 1271 }
1082 "class B implements A {", 1272 class B implements A {
1083 "}"])); 1273 }''');
1084 resolve(source); 1274 resolve(source);
1085 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); 1275 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
1086 verify([source]); 1276 verify([source]);
1087 } 1277 }
1088 1278
1089 void test_importDuplicatedLibraryName() { 1279 void test_importDuplicatedLibraryName() {
1090 Source source = addSource(EngineTestCase.createSource([ 1280 Source source = addSource(r'''
1091 "library test;", 1281 library test;
1092 "import 'lib1.dart';", 1282 import 'lib1.dart';
1093 "import 'lib2.dart';"])); 1283 import 'lib2.dart';''');
1094 addNamedSource("/lib1.dart", "library lib;"); 1284 addNamedSource("/lib1.dart", "library lib;");
1095 addNamedSource("/lib2.dart", "library lib;"); 1285 addNamedSource("/lib2.dart", "library lib;");
1096 resolve(source); 1286 resolve(source);
1097 assertErrors(source, [ 1287 assertErrors(source, [
1098 StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAME, 1288 StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAME,
1099 HintCode.UNUSED_IMPORT, 1289 HintCode.UNUSED_IMPORT,
1100 HintCode.UNUSED_IMPORT]); 1290 HintCode.UNUSED_IMPORT]);
1101 verify([source]); 1291 verify([source]);
1102 } 1292 }
1103 1293
1104 void test_importOfNonLibrary() { 1294 void test_importOfNonLibrary() {
1105 resolveWithAndWithoutExperimental(<String> [ 1295 resolveWithAndWithoutExperimental(<String> [
1106 EngineTestCase.createSource(["part of lib;", "class A {}"]), 1296 r'''
1107 EngineTestCase.createSource([ 1297 part of lib;
1108 "library lib;", 1298 class A {}''',
1109 "import 'lib1.dart' deferred as p;", 1299 r'''
1110 "var a = new p.A();"])], <ErrorCode> [ 1300 library lib;
1301 import 'lib1.dart' deferred as p;
1302 var a = new p.A();'''], <ErrorCode> [
1111 CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY, 1303 CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY,
1112 ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarn ingCode.IMPORT_OF_NON_LIBRARY]); 1304 ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarn ingCode.IMPORT_OF_NON_LIBRARY]);
1113 } 1305 }
1114 1306
1115 void test_inconsistentMethodInheritanceGetterAndMethod() { 1307 void test_inconsistentMethodInheritanceGetterAndMethod() {
1116 Source source = addSource(EngineTestCase.createSource([ 1308 Source source = addSource(r'''
1117 "abstract class A {", 1309 abstract class A {
1118 " int x();", 1310 int x();
1119 "}", 1311 }
1120 "abstract class B {", 1312 abstract class B {
1121 " int get x;", 1313 int get x;
1122 "}", 1314 }
1123 "class C implements A, B {", 1315 class C implements A, B {
1124 "}"])); 1316 }''');
1125 resolve(source); 1317 resolve(source);
1126 assertErrors(source, [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETT ER_AND_METHOD]); 1318 assertErrors(source, [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETT ER_AND_METHOD]);
1127 verify([source]); 1319 verify([source]);
1128 } 1320 }
1129 1321
1130 void test_instanceMethodNameCollidesWithSuperclassStatic_field() { 1322 void test_instanceMethodNameCollidesWithSuperclassStatic_field() {
1131 Source source = addSource(EngineTestCase.createSource([ 1323 Source source = addSource(r'''
1132 "class A {", 1324 class A {
1133 " static var n;", 1325 static var n;
1134 "}", 1326 }
1135 "class B extends A {", 1327 class B extends A {
1136 " void n() {}", 1328 void n() {}
1137 "}"])); 1329 }''');
1138 resolve(source); 1330 resolve(source);
1139 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]); 1331 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]);
1140 verify([source]); 1332 verify([source]);
1141 } 1333 }
1142 1334
1143 void test_instanceMethodNameCollidesWithSuperclassStatic_field2() { 1335 void test_instanceMethodNameCollidesWithSuperclassStatic_field2() {
1144 Source source = addSource(EngineTestCase.createSource([ 1336 Source source = addSource(r'''
1145 "class A {", 1337 class A {
1146 " static var n;", 1338 static var n;
1147 "}", 1339 }
1148 "class B extends A {", 1340 class B extends A {
1149 "}", 1341 }
1150 "class C extends B {", 1342 class C extends B {
1151 " void n() {}", 1343 void n() {}
1152 "}"])); 1344 }''');
1153 resolve(source); 1345 resolve(source);
1154 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]); 1346 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]);
1155 verify([source]); 1347 verify([source]);
1156 } 1348 }
1157 1349
1158 void test_instanceMethodNameCollidesWithSuperclassStatic_getter() { 1350 void test_instanceMethodNameCollidesWithSuperclassStatic_getter() {
1159 Source source = addSource(EngineTestCase.createSource([ 1351 Source source = addSource(r'''
1160 "class A {", 1352 class A {
1161 " static get n {return 0;}", 1353 static get n {return 0;}
1162 "}", 1354 }
1163 "class B extends A {", 1355 class B extends A {
1164 " void n() {}", 1356 void n() {}
1165 "}"])); 1357 }''');
1166 resolve(source); 1358 resolve(source);
1167 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]); 1359 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]);
1168 verify([source]); 1360 verify([source]);
1169 } 1361 }
1170 1362
1171 void test_instanceMethodNameCollidesWithSuperclassStatic_getter2() { 1363 void test_instanceMethodNameCollidesWithSuperclassStatic_getter2() {
1172 Source source = addSource(EngineTestCase.createSource([ 1364 Source source = addSource(r'''
1173 "class A {", 1365 class A {
1174 " static get n {return 0;}", 1366 static get n {return 0;}
1175 "}", 1367 }
1176 "class B extends A {", 1368 class B extends A {
1177 "}", 1369 }
1178 "class C extends B {", 1370 class C extends B {
1179 " void n() {}", 1371 void n() {}
1180 "}"])); 1372 }''');
1181 resolve(source); 1373 resolve(source);
1182 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]); 1374 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]);
1183 verify([source]); 1375 verify([source]);
1184 } 1376 }
1185 1377
1186 void test_instanceMethodNameCollidesWithSuperclassStatic_method() { 1378 void test_instanceMethodNameCollidesWithSuperclassStatic_method() {
1187 Source source = addSource(EngineTestCase.createSource([ 1379 Source source = addSource(r'''
1188 "class A {", 1380 class A {
1189 " static n () {}", 1381 static n () {}
1190 "}", 1382 }
1191 "class B extends A {", 1383 class B extends A {
1192 " void n() {}", 1384 void n() {}
1193 "}"])); 1385 }''');
1194 resolve(source); 1386 resolve(source);
1195 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]); 1387 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]);
1196 verify([source]); 1388 verify([source]);
1197 } 1389 }
1198 1390
1199 void test_instanceMethodNameCollidesWithSuperclassStatic_method2() { 1391 void test_instanceMethodNameCollidesWithSuperclassStatic_method2() {
1200 Source source = addSource(EngineTestCase.createSource([ 1392 Source source = addSource(r'''
1201 "class A {", 1393 class A {
1202 " static n () {}", 1394 static n () {}
1203 "}", 1395 }
1204 "class B extends A {", 1396 class B extends A {
1205 "}", 1397 }
1206 "class C extends B {", 1398 class C extends B {
1207 " void n() {}", 1399 void n() {}
1208 "}"])); 1400 }''');
1209 resolve(source); 1401 resolve(source);
1210 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]); 1402 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]);
1211 verify([source]); 1403 verify([source]);
1212 } 1404 }
1213 1405
1214 void test_instanceMethodNameCollidesWithSuperclassStatic_setter() { 1406 void test_instanceMethodNameCollidesWithSuperclassStatic_setter() {
1215 Source source = addSource(EngineTestCase.createSource([ 1407 Source source = addSource(r'''
1216 "class A {", 1408 class A {
1217 " static set n(int x) {}", 1409 static set n(int x) {}
1218 "}", 1410 }
1219 "class B extends A {", 1411 class B extends A {
1220 " void n() {}", 1412 void n() {}
1221 "}"])); 1413 }''');
1222 resolve(source); 1414 resolve(source);
1223 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]); 1415 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]);
1224 verify([source]); 1416 verify([source]);
1225 } 1417 }
1226 1418
1227 void test_instanceMethodNameCollidesWithSuperclassStatic_setter2() { 1419 void test_instanceMethodNameCollidesWithSuperclassStatic_setter2() {
1228 Source source = addSource(EngineTestCase.createSource([ 1420 Source source = addSource(r'''
1229 "class A {", 1421 class A {
1230 " static set n(int x) {}", 1422 static set n(int x) {}
1231 "}", 1423 }
1232 "class B extends A {", 1424 class B extends A {
1233 "}", 1425 }
1234 "class C extends B {", 1426 class C extends B {
1235 " void n() {}", 1427 void n() {}
1236 "}"])); 1428 }''');
1237 resolve(source); 1429 resolve(source);
1238 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]); 1430 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S UPERCLASS_STATIC]);
1239 verify([source]); 1431 verify([source]);
1240 } 1432 }
1241 1433
1242 void test_invalidGetterOverrideReturnType() { 1434 void test_invalidGetterOverrideReturnType() {
1243 Source source = addSource(EngineTestCase.createSource([ 1435 Source source = addSource(r'''
1244 "class A {", 1436 class A {
1245 " int get g { return 0; }", 1437 int get g { return 0; }
1246 "}", 1438 }
1247 "class B extends A {", 1439 class B extends A {
1248 " String get g { return 'a'; }", 1440 String get g { return 'a'; }
1249 "}"])); 1441 }''');
1250 resolve(source); 1442 resolve(source);
1251 assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE] ); 1443 assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE] );
1252 verify([source]); 1444 verify([source]);
1253 } 1445 }
1254 1446
1255 void test_invalidGetterOverrideReturnType_implicit() { 1447 void test_invalidGetterOverrideReturnType_implicit() {
1256 Source source = addSource(EngineTestCase.createSource([ 1448 Source source = addSource(r'''
1257 "class A {", 1449 class A {
1258 " String f;", 1450 String f;
1259 "}", 1451 }
1260 "class B extends A {", 1452 class B extends A {
1261 " int f;", 1453 int f;
1262 "}"])); 1454 }''');
1263 resolve(source); 1455 resolve(source);
1264 assertErrors(source, [ 1456 assertErrors(source, [
1265 StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE, 1457 StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE,
1266 StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); 1458 StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
1267 verify([source]); 1459 verify([source]);
1268 } 1460 }
1269 1461
1270 void test_invalidGetterOverrideReturnType_twoInterfaces() { 1462 void test_invalidGetterOverrideReturnType_twoInterfaces() {
1271 // test from language/override_inheritance_field_test_11.dart 1463 // test from language/override_inheritance_field_test_11.dart
1272 Source source = addSource(EngineTestCase.createSource([ 1464 Source source = addSource(r'''
1273 "abstract class I {", 1465 abstract class I {
1274 " int get getter => null;", 1466 int get getter => null;
1275 "}", 1467 }
1276 "abstract class J {", 1468 abstract class J {
1277 " num get getter => null;", 1469 num get getter => null;
1278 "}", 1470 }
1279 "abstract class A implements I, J {}", 1471 abstract class A implements I, J {}
1280 "class B extends A {", 1472 class B extends A {
1281 " String get getter => null;", 1473 String get getter => null;
1282 "}"])); 1474 }''');
1283 resolve(source); 1475 resolve(source);
1284 assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE] ); 1476 assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE] );
1285 verify([source]); 1477 verify([source]);
1286 } 1478 }
1287 1479
1288 void test_invalidGetterOverrideReturnType_twoInterfaces_conflicting() { 1480 void test_invalidGetterOverrideReturnType_twoInterfaces_conflicting() {
1289 Source source = addSource(EngineTestCase.createSource([ 1481 Source source = addSource(r'''
1290 "abstract class I<U> {", 1482 abstract class I<U> {
1291 " U get g => null;", 1483 U get g => null;
1292 "}", 1484 }
1293 "abstract class J<V> {", 1485 abstract class J<V> {
1294 " V get g => null;", 1486 V get g => null;
1295 "}", 1487 }
1296 "class B implements I<int>, J<String> {", 1488 class B implements I<int>, J<String> {
1297 " double get g => null;", 1489 double get g => null;
1298 "}"])); 1490 }''');
1299 resolve(source); 1491 resolve(source);
1300 assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE] ); 1492 assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE] );
1301 verify([source]); 1493 verify([source]);
1302 } 1494 }
1303 1495
1304 void test_invalidMethodOverrideNamedParamType() { 1496 void test_invalidMethodOverrideNamedParamType() {
1305 Source source = addSource(EngineTestCase.createSource([ 1497 Source source = addSource(r'''
1306 "class A {", 1498 class A {
1307 " m({int a}) {}", 1499 m({int a}) {}
1308 "}", 1500 }
1309 "class B implements A {", 1501 class B implements A {
1310 " m({String a}) {}", 1502 m({String a}) {}
1311 "}"])); 1503 }''');
1312 resolve(source); 1504 resolve(source);
1313 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_ TYPE]); 1505 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_ TYPE]);
1314 verify([source]); 1506 verify([source]);
1315 } 1507 }
1316 1508
1317 void test_invalidMethodOverrideNormalParamType_interface() { 1509 void test_invalidMethodOverrideNormalParamType_interface() {
1318 Source source = addSource(EngineTestCase.createSource([ 1510 Source source = addSource(r'''
1319 "class A {", 1511 class A {
1320 " m(int a) {}", 1512 m(int a) {}
1321 "}", 1513 }
1322 "class B implements A {", 1514 class B implements A {
1323 " m(String a) {}", 1515 m(String a) {}
1324 "}"])); 1516 }''');
1325 resolve(source); 1517 resolve(source);
1326 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]); 1518 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]);
1327 verify([source]); 1519 verify([source]);
1328 } 1520 }
1329 1521
1330 void test_invalidMethodOverrideNormalParamType_superclass() { 1522 void test_invalidMethodOverrideNormalParamType_superclass() {
1331 Source source = addSource(EngineTestCase.createSource([ 1523 Source source = addSource(r'''
1332 "class A {", 1524 class A {
1333 " m(int a) {}", 1525 m(int a) {}
1334 "}", 1526 }
1335 "class B extends A {", 1527 class B extends A {
1336 " m(String a) {}", 1528 m(String a) {}
1337 "}"])); 1529 }''');
1338 resolve(source); 1530 resolve(source);
1339 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]); 1531 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]);
1340 verify([source]); 1532 verify([source]);
1341 } 1533 }
1342 1534
1343 void test_invalidMethodOverrideNormalParamType_superclass_interface() { 1535 void test_invalidMethodOverrideNormalParamType_superclass_interface() {
1344 Source source = addSource(EngineTestCase.createSource([ 1536 Source source = addSource(r'''
1345 "abstract class I<U> {", 1537 abstract class I<U> {
1346 " m(U u) => null;", 1538 m(U u) => null;
1347 "}", 1539 }
1348 "abstract class J<V> {", 1540 abstract class J<V> {
1349 " m(V v) => null;", 1541 m(V v) => null;
1350 "}", 1542 }
1351 "class B extends I<int> implements J<String> {", 1543 class B extends I<int> implements J<String> {
1352 " m(double d) {}", 1544 m(double d) {}
1353 "}"])); 1545 }''');
1354 resolve(source); 1546 resolve(source);
1355 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]); 1547 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]);
1356 verify([source]); 1548 verify([source]);
1357 } 1549 }
1358 1550
1359 void test_invalidMethodOverrideNormalParamType_twoInterfaces() { 1551 void test_invalidMethodOverrideNormalParamType_twoInterfaces() {
1360 Source source = addSource(EngineTestCase.createSource([ 1552 Source source = addSource(r'''
1361 "abstract class I {", 1553 abstract class I {
1362 " m(int n);", 1554 m(int n);
1363 "}", 1555 }
1364 "abstract class J {", 1556 abstract class J {
1365 " m(num n);", 1557 m(num n);
1366 "}", 1558 }
1367 "abstract class A implements I, J {}", 1559 abstract class A implements I, J {}
1368 "class B extends A {", 1560 class B extends A {
1369 " m(String n) {}", 1561 m(String n) {}
1370 "}"])); 1562 }''');
1371 resolve(source); 1563 resolve(source);
1372 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]); 1564 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]);
1373 verify([source]); 1565 verify([source]);
1374 } 1566 }
1375 1567
1376 void test_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() { 1568 void test_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() {
1377 // language/override_inheritance_generic_test/08 1569 // language/override_inheritance_generic_test/08
1378 Source source = addSource(EngineTestCase.createSource([ 1570 Source source = addSource(r'''
1379 "abstract class I<U> {", 1571 abstract class I<U> {
1380 " m(U u) => null;", 1572 m(U u) => null;
1381 "}", 1573 }
1382 "abstract class J<V> {", 1574 abstract class J<V> {
1383 " m(V v) => null;", 1575 m(V v) => null;
1384 "}", 1576 }
1385 "class B implements I<int>, J<String> {", 1577 class B implements I<int>, J<String> {
1386 " m(double d) {}", 1578 m(double d) {}
1387 "}"])); 1579 }''');
1388 resolve(source); 1580 resolve(source);
1389 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]); 1581 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM _TYPE]);
1390 verify([source]); 1582 verify([source]);
1391 } 1583 }
1392 1584
1393 void test_invalidMethodOverrideOptionalParamType() { 1585 void test_invalidMethodOverrideOptionalParamType() {
1394 Source source = addSource(EngineTestCase.createSource([ 1586 Source source = addSource(r'''
1395 "class A {", 1587 class A {
1396 " m([int a]) {}", 1588 m([int a]) {}
1397 "}", 1589 }
1398 "class B implements A {", 1590 class B implements A {
1399 " m([String a]) {}", 1591 m([String a]) {}
1400 "}"])); 1592 }''');
1401 resolve(source); 1593 resolve(source);
1402 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PAR AM_TYPE]); 1594 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PAR AM_TYPE]);
1403 verify([source]); 1595 verify([source]);
1404 } 1596 }
1405 1597
1406 void test_invalidMethodOverrideOptionalParamType_twoInterfaces() { 1598 void test_invalidMethodOverrideOptionalParamType_twoInterfaces() {
1407 Source source = addSource(EngineTestCase.createSource([ 1599 Source source = addSource(r'''
1408 "abstract class I {", 1600 abstract class I {
1409 " m([int n]);", 1601 m([int n]);
1410 "}", 1602 }
1411 "abstract class J {", 1603 abstract class J {
1412 " m([num n]);", 1604 m([num n]);
1413 "}", 1605 }
1414 "abstract class A implements I, J {}", 1606 abstract class A implements I, J {}
1415 "class B extends A {", 1607 class B extends A {
1416 " m([String n]) {}", 1608 m([String n]) {}
1417 "}"])); 1609 }''');
1418 resolve(source); 1610 resolve(source);
1419 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PAR AM_TYPE]); 1611 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PAR AM_TYPE]);
1420 verify([source]); 1612 verify([source]);
1421 } 1613 }
1422 1614
1423 void test_invalidMethodOverrideReturnType_interface() { 1615 void test_invalidMethodOverrideReturnType_interface() {
1424 Source source = addSource(EngineTestCase.createSource([ 1616 Source source = addSource(r'''
1425 "class A {", 1617 class A {
1426 " int m() { return 0; }", 1618 int m() { return 0; }
1427 "}", 1619 }
1428 "class B implements A {", 1620 class B implements A {
1429 " String m() { return 'a'; }", 1621 String m() { return 'a'; }
1430 "}"])); 1622 }''');
1431 resolve(source); 1623 resolve(source);
1432 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] ); 1624 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] );
1433 verify([source]); 1625 verify([source]);
1434 } 1626 }
1435 1627
1436 void test_invalidMethodOverrideReturnType_interface_grandparent() { 1628 void test_invalidMethodOverrideReturnType_interface_grandparent() {
1437 Source source = addSource(EngineTestCase.createSource([ 1629 Source source = addSource(r'''
1438 "abstract class A {", 1630 abstract class A {
1439 " int m();", 1631 int m();
1440 "}", 1632 }
1441 "abstract class B implements A {", 1633 abstract class B implements A {
1442 "}", 1634 }
1443 "class C implements B {", 1635 class C implements B {
1444 " String m() { return 'a'; }", 1636 String m() { return 'a'; }
1445 "}"])); 1637 }''');
1446 resolve(source); 1638 resolve(source);
1447 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] ); 1639 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] );
1448 verify([source]); 1640 verify([source]);
1449 } 1641 }
1450 1642
1451 void test_invalidMethodOverrideReturnType_mixin() { 1643 void test_invalidMethodOverrideReturnType_mixin() {
1452 Source source = addSource(EngineTestCase.createSource([ 1644 Source source = addSource(r'''
1453 "class A {", 1645 class A {
1454 " int m() { return 0; }", 1646 int m() { return 0; }
1455 "}", 1647 }
1456 "class B extends Object with A {", 1648 class B extends Object with A {
1457 " String m() { return 'a'; }", 1649 String m() { return 'a'; }
1458 "}"])); 1650 }''');
1459 resolve(source); 1651 resolve(source);
1460 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] ); 1652 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] );
1461 verify([source]); 1653 verify([source]);
1462 } 1654 }
1463 1655
1464 void test_invalidMethodOverrideReturnType_superclass() { 1656 void test_invalidMethodOverrideReturnType_superclass() {
1465 Source source = addSource(EngineTestCase.createSource([ 1657 Source source = addSource(r'''
1466 "class A {", 1658 class A {
1467 " int m() { return 0; }", 1659 int m() { return 0; }
1468 "}", 1660 }
1469 "class B extends A {", 1661 class B extends A {
1470 " String m() { return 'a'; }", 1662 String m() { return 'a'; }
1471 "}"])); 1663 }''');
1472 resolve(source); 1664 resolve(source);
1473 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] ); 1665 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] );
1474 verify([source]); 1666 verify([source]);
1475 } 1667 }
1476 1668
1477 void test_invalidMethodOverrideReturnType_superclass_grandparent() { 1669 void test_invalidMethodOverrideReturnType_superclass_grandparent() {
1478 Source source = addSource(EngineTestCase.createSource([ 1670 Source source = addSource(r'''
1479 "class A {", 1671 class A {
1480 " int m() { return 0; }", 1672 int m() { return 0; }
1481 "}", 1673 }
1482 "class B extends A {", 1674 class B extends A {
1483 "}", 1675 }
1484 "class C extends B {", 1676 class C extends B {
1485 " String m() { return 'a'; }", 1677 String m() { return 'a'; }
1486 "}"])); 1678 }''');
1487 resolve(source); 1679 resolve(source);
1488 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] ); 1680 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] );
1489 verify([source]); 1681 verify([source]);
1490 } 1682 }
1491 1683
1492 void test_invalidMethodOverrideReturnType_twoInterfaces() { 1684 void test_invalidMethodOverrideReturnType_twoInterfaces() {
1493 Source source = addSource(EngineTestCase.createSource([ 1685 Source source = addSource(r'''
1494 "abstract class I {", 1686 abstract class I {
1495 " int m();", 1687 int m();
1496 "}", 1688 }
1497 "abstract class J {", 1689 abstract class J {
1498 " num m();", 1690 num m();
1499 "}", 1691 }
1500 "abstract class A implements I, J {}", 1692 abstract class A implements I, J {}
1501 "class B extends A {", 1693 class B extends A {
1502 " String m() => '';", 1694 String m() => '';
1503 "}"])); 1695 }''');
1504 resolve(source); 1696 resolve(source);
1505 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] ); 1697 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] );
1506 verify([source]); 1698 verify([source]);
1507 } 1699 }
1508 1700
1509 void test_invalidMethodOverrideReturnType_void() { 1701 void test_invalidMethodOverrideReturnType_void() {
1510 Source source = addSource(EngineTestCase.createSource([ 1702 Source source = addSource(r'''
1511 "class A {", 1703 class A {
1512 " int m() { return 0; }", 1704 int m() { return 0; }
1513 "}", 1705 }
1514 "class B extends A {", 1706 class B extends A {
1515 " void m() {}", 1707 void m() {}
1516 "}"])); 1708 }''');
1517 resolve(source); 1709 resolve(source);
1518 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] ); 1710 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE] );
1519 verify([source]); 1711 verify([source]);
1520 } 1712 }
1521 1713
1522 void test_invalidOverrideDifferentDefaultValues_named() { 1714 void test_invalidOverrideDifferentDefaultValues_named() {
1523 Source source = addSource(EngineTestCase.createSource([ 1715 Source source = addSource(r'''
1524 "class A {", 1716 class A {
1525 " m({int p : 0}) {}", 1717 m({int p : 0}) {}
1526 "}", 1718 }
1527 "class B extends A {", 1719 class B extends A {
1528 " m({int p : 1}) {}", 1720 m({int p : 1}) {}
1529 "}"])); 1721 }''');
1530 resolve(source); 1722 resolve(source);
1531 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_V ALUES_NAMED]); 1723 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_V ALUES_NAMED]);
1532 verify([source]); 1724 verify([source]);
1533 } 1725 }
1534 1726
1535 void test_invalidOverrideDifferentDefaultValues_positional() { 1727 void test_invalidOverrideDifferentDefaultValues_positional() {
1536 Source source = addSource(EngineTestCase.createSource([ 1728 Source source = addSource(r'''
1537 "class A {", 1729 class A {
1538 " m([int p = 0]) {}", 1730 m([int p = 0]) {}
1539 "}", 1731 }
1540 "class B extends A {", 1732 class B extends A {
1541 " m([int p = 1]) {}", 1733 m([int p = 1]) {}
1542 "}"])); 1734 }''');
1543 resolve(source); 1735 resolve(source);
1544 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_V ALUES_POSITIONAL]); 1736 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_V ALUES_POSITIONAL]);
1545 verify([source]); 1737 verify([source]);
1546 } 1738 }
1547 1739
1548 void test_invalidOverrideNamed_fewerNamedParameters() { 1740 void test_invalidOverrideNamed_fewerNamedParameters() {
1549 Source source = addSource(EngineTestCase.createSource([ 1741 Source source = addSource(r'''
1550 "class A {", 1742 class A {
1551 " m({a, b}) {}", 1743 m({a, b}) {}
1552 "}", 1744 }
1553 "class B extends A {", 1745 class B extends A {
1554 " m({a}) {}", 1746 m({a}) {}
1555 "}"])); 1747 }''');
1556 resolve(source); 1748 resolve(source);
1557 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); 1749 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]);
1558 verify([source]); 1750 verify([source]);
1559 } 1751 }
1560 1752
1561 void test_invalidOverrideNamed_missingNamedParameter() { 1753 void test_invalidOverrideNamed_missingNamedParameter() {
1562 Source source = addSource(EngineTestCase.createSource([ 1754 Source source = addSource(r'''
1563 "class A {", 1755 class A {
1564 " m({a, b}) {}", 1756 m({a, b}) {}
1565 "}", 1757 }
1566 "class B extends A {", 1758 class B extends A {
1567 " m({a, c}) {}", 1759 m({a, c}) {}
1568 "}"])); 1760 }''');
1569 resolve(source); 1761 resolve(source);
1570 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); 1762 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]);
1571 verify([source]); 1763 verify([source]);
1572 } 1764 }
1573 1765
1574 void test_invalidOverridePositional_optional() { 1766 void test_invalidOverridePositional_optional() {
1575 Source source = addSource(EngineTestCase.createSource([ 1767 Source source = addSource(r'''
1576 "class A {", 1768 class A {
1577 " m([a, b]) {}", 1769 m([a, b]) {}
1578 "}", 1770 }
1579 "class B extends A {", 1771 class B extends A {
1580 " m([a]) {}", 1772 m([a]) {}
1581 "}"])); 1773 }''');
1582 resolve(source); 1774 resolve(source);
1583 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); 1775 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
1584 verify([source]); 1776 verify([source]);
1585 } 1777 }
1586 1778
1587 void test_invalidOverridePositional_optionalAndRequired() { 1779 void test_invalidOverridePositional_optionalAndRequired() {
1588 Source source = addSource(EngineTestCase.createSource([ 1780 Source source = addSource(r'''
1589 "class A {", 1781 class A {
1590 " m(a, b, [c, d]) {}", 1782 m(a, b, [c, d]) {}
1591 "}", 1783 }
1592 "class B extends A {", 1784 class B extends A {
1593 " m(a, b, [c]) {}", 1785 m(a, b, [c]) {}
1594 "}"])); 1786 }''');
1595 resolve(source); 1787 resolve(source);
1596 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); 1788 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
1597 verify([source]); 1789 verify([source]);
1598 } 1790 }
1599 1791
1600 void test_invalidOverridePositional_optionalAndRequired2() { 1792 void test_invalidOverridePositional_optionalAndRequired2() {
1601 Source source = addSource(EngineTestCase.createSource([ 1793 Source source = addSource(r'''
1602 "class A {", 1794 class A {
1603 " m(a, b, [c, d]) {}", 1795 m(a, b, [c, d]) {}
1604 "}", 1796 }
1605 "class B extends A {", 1797 class B extends A {
1606 " m(a, [c, d]) {}", 1798 m(a, [c, d]) {}
1607 "}"])); 1799 }''');
1608 resolve(source); 1800 resolve(source);
1609 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); 1801 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
1610 verify([source]); 1802 verify([source]);
1611 } 1803 }
1612 1804
1613 void test_invalidOverrideRequired() { 1805 void test_invalidOverrideRequired() {
1614 Source source = addSource(EngineTestCase.createSource([ 1806 Source source = addSource(r'''
1615 "class A {", 1807 class A {
1616 " m(a) {}", 1808 m(a) {}
1617 "}", 1809 }
1618 "class B extends A {", 1810 class B extends A {
1619 " m(a, b) {}", 1811 m(a, b) {}
1620 "}"])); 1812 }''');
1621 resolve(source); 1813 resolve(source);
1622 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_REQUIRED]); 1814 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_REQUIRED]);
1623 verify([source]); 1815 verify([source]);
1624 } 1816 }
1625 1817
1626 void test_invalidSetterOverrideNormalParamType() { 1818 void test_invalidSetterOverrideNormalParamType() {
1627 Source source = addSource(EngineTestCase.createSource([ 1819 Source source = addSource(r'''
1628 "class A {", 1820 class A {
1629 " void set s(int v) {}", 1821 void set s(int v) {}
1630 "}", 1822 }
1631 "class B extends A {", 1823 class B extends A {
1632 " void set s(String v) {}", 1824 void set s(String v) {}
1633 "}"])); 1825 }''');
1634 resolve(source); 1826 resolve(source);
1635 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM _TYPE]); 1827 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM _TYPE]);
1636 verify([source]); 1828 verify([source]);
1637 } 1829 }
1638 1830
1639 void test_invalidSetterOverrideNormalParamType_superclass_interface() { 1831 void test_invalidSetterOverrideNormalParamType_superclass_interface() {
1640 Source source = addSource(EngineTestCase.createSource([ 1832 Source source = addSource(r'''
1641 "abstract class I {", 1833 abstract class I {
1642 " set setter14(int _) => null;", 1834 set setter14(int _) => null;
1643 "}", 1835 }
1644 "abstract class J {", 1836 abstract class J {
1645 " set setter14(num _) => null;", 1837 set setter14(num _) => null;
1646 "}", 1838 }
1647 "abstract class A extends I implements J {}", 1839 abstract class A extends I implements J {}
1648 "class B extends A {", 1840 class B extends A {
1649 " set setter14(String _) => null;", 1841 set setter14(String _) => null;
1650 "}"])); 1842 }''');
1651 resolve(source); 1843 resolve(source);
1652 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM _TYPE]); 1844 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM _TYPE]);
1653 verify([source]); 1845 verify([source]);
1654 } 1846 }
1655 1847
1656 void test_invalidSetterOverrideNormalParamType_twoInterfaces() { 1848 void test_invalidSetterOverrideNormalParamType_twoInterfaces() {
1657 // test from language/override_inheritance_field_test_34.dart 1849 // test from language/override_inheritance_field_test_34.dart
1658 Source source = addSource(EngineTestCase.createSource([ 1850 Source source = addSource(r'''
1659 "abstract class I {", 1851 abstract class I {
1660 " set setter14(int _) => null;", 1852 set setter14(int _) => null;
1661 "}", 1853 }
1662 "abstract class J {", 1854 abstract class J {
1663 " set setter14(num _) => null;", 1855 set setter14(num _) => null;
1664 "}", 1856 }
1665 "abstract class A implements I, J {}", 1857 abstract class A implements I, J {}
1666 "class B extends A {", 1858 class B extends A {
1667 " set setter14(String _) => null;", 1859 set setter14(String _) => null;
1668 "}"])); 1860 }''');
1669 resolve(source); 1861 resolve(source);
1670 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM _TYPE]); 1862 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM _TYPE]);
1671 verify([source]); 1863 verify([source]);
1672 } 1864 }
1673 1865
1674 void test_invalidSetterOverrideNormalParamType_twoInterfaces_conflicting() { 1866 void test_invalidSetterOverrideNormalParamType_twoInterfaces_conflicting() {
1675 Source source = addSource(EngineTestCase.createSource([ 1867 Source source = addSource(r'''
1676 "abstract class I<U> {", 1868 abstract class I<U> {
1677 " set s(U u) {}", 1869 set s(U u) {}
1678 "}", 1870 }
1679 "abstract class J<V> {", 1871 abstract class J<V> {
1680 " set s(V v) {}", 1872 set s(V v) {}
1681 "}", 1873 }
1682 "class B implements I<int>, J<String> {", 1874 class B implements I<int>, J<String> {
1683 " set s(double d) {}", 1875 set s(double d) {}
1684 "}"])); 1876 }''');
1685 resolve(source); 1877 resolve(source);
1686 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM _TYPE]); 1878 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM _TYPE]);
1687 verify([source]); 1879 verify([source]);
1688 } 1880 }
1689 1881
1690 void test_listElementTypeNotAssignable() { 1882 void test_listElementTypeNotAssignable() {
1691 Source source = addSource(EngineTestCase.createSource(["var v = <String> [42 ];"])); 1883 Source source = addSource("var v = <String> [42];");
1692 resolve(source); 1884 resolve(source);
1693 assertErrors(source, [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]); 1885 assertErrors(source, [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]);
1694 verify([source]); 1886 verify([source]);
1695 } 1887 }
1696 1888
1697 void test_mapKeyTypeNotAssignable() { 1889 void test_mapKeyTypeNotAssignable() {
1698 Source source = addSource(EngineTestCase.createSource(["var v = <String, int > {1 : 2};"])); 1890 Source source = addSource("var v = <String, int > {1 : 2};");
1699 resolve(source); 1891 resolve(source);
1700 assertErrors(source, [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]); 1892 assertErrors(source, [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]);
1701 verify([source]); 1893 verify([source]);
1702 } 1894 }
1703 1895
1704 void test_mapValueTypeNotAssignable() { 1896 void test_mapValueTypeNotAssignable() {
1705 Source source = addSource(EngineTestCase.createSource(["var v = <String, Str ing> {'a' : 2};"])); 1897 Source source = addSource("var v = <String, String> {'a' : 2};");
1706 resolve(source); 1898 resolve(source);
1707 assertErrors(source, [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]); 1899 assertErrors(source, [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]);
1708 verify([source]); 1900 verify([source]);
1709 } 1901 }
1710 1902
1711 void test_mismatchedAccessorTypes_class() { 1903 void test_mismatchedAccessorTypes_class() {
1712 Source source = addSource(EngineTestCase.createSource([ 1904 Source source = addSource(r'''
1713 "class A {", 1905 class A {
1714 " int get g { return 0; }", 1906 int get g { return 0; }
1715 " set g(String v) {}", 1907 set g(String v) {}
1716 "}"])); 1908 }''');
1717 resolve(source); 1909 resolve(source);
1718 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]) ; 1910 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]) ;
1719 verify([source]); 1911 verify([source]);
1720 } 1912 }
1721 1913
1722 void test_mismatchedAccessorTypes_getterAndSuperSetter() { 1914 void test_mismatchedAccessorTypes_getterAndSuperSetter() {
1723 Source source = addSource(EngineTestCase.createSource([ 1915 Source source = addSource(r'''
1724 "class A {", 1916 class A {
1725 " int get g { return 0; }", 1917 int get g { return 0; }
1726 "}", 1918 }
1727 "class B extends A {", 1919 class B extends A {
1728 " set g(String v) {}", 1920 set g(String v) {}
1729 "}"])); 1921 }''');
1730 resolve(source); 1922 resolve(source);
1731 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_F ROM_SUPERTYPE]); 1923 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_F ROM_SUPERTYPE]);
1732 verify([source]); 1924 verify([source]);
1733 } 1925 }
1734 1926
1735 void test_mismatchedAccessorTypes_setterAndSuperGetter() { 1927 void test_mismatchedAccessorTypes_setterAndSuperGetter() {
1736 Source source = addSource(EngineTestCase.createSource([ 1928 Source source = addSource(r'''
1737 "class A {", 1929 class A {
1738 " set g(int v) {}", 1930 set g(int v) {}
1739 "}", 1931 }
1740 "class B extends A {", 1932 class B extends A {
1741 " String get g { return ''; }", 1933 String get g { return ''; }
1742 "}"])); 1934 }''');
1743 resolve(source); 1935 resolve(source);
1744 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_F ROM_SUPERTYPE]); 1936 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_F ROM_SUPERTYPE]);
1745 verify([source]); 1937 verify([source]);
1746 } 1938 }
1747 1939
1748 void test_mismatchedAccessorTypes_topLevel() { 1940 void test_mismatchedAccessorTypes_topLevel() {
1749 Source source = addSource(EngineTestCase.createSource(["int get g { return 0 ; }", "set g(String v) {}"])); 1941 Source source = addSource(r'''
1942 int get g { return 0; }
1943 set g(String v) {}''');
1750 resolve(source); 1944 resolve(source);
1751 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]) ; 1945 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]) ;
1752 verify([source]); 1946 verify([source]);
1753 } 1947 }
1754 1948
1755 void test_mixedReturnTypes_localFunction() { 1949 void test_mixedReturnTypes_localFunction() {
1756 Source source = addSource(EngineTestCase.createSource([ 1950 Source source = addSource(r'''
1757 "class C {", 1951 class C {
1758 " m(int x) {", 1952 m(int x) {
1759 " return (int y) {", 1953 return (int y) {
1760 " if (y < 0) {", 1954 if (y < 0) {
1761 " return;", 1955 return;
1762 " }", 1956 }
1763 " return 0;", 1957 return 0;
1764 " };", 1958 };
1765 " }", 1959 }
1766 "}"])); 1960 }''');
1767 resolve(source); 1961 resolve(source);
1768 assertErrors(source, [ 1962 assertErrors(source, [
1769 StaticWarningCode.MIXED_RETURN_TYPES, 1963 StaticWarningCode.MIXED_RETURN_TYPES,
1770 StaticWarningCode.MIXED_RETURN_TYPES]); 1964 StaticWarningCode.MIXED_RETURN_TYPES]);
1771 verify([source]); 1965 verify([source]);
1772 } 1966 }
1773 1967
1774 void test_mixedReturnTypes_method() { 1968 void test_mixedReturnTypes_method() {
1775 Source source = addSource(EngineTestCase.createSource([ 1969 Source source = addSource(r'''
1776 "class C {", 1970 class C {
1777 " m(int x) {", 1971 m(int x) {
1778 " if (x < 0) {", 1972 if (x < 0) {
1779 " return;", 1973 return;
1780 " }", 1974 }
1781 " return 0;", 1975 return 0;
1782 " }", 1976 }
1783 "}"])); 1977 }''');
1784 resolve(source); 1978 resolve(source);
1785 assertErrors(source, [ 1979 assertErrors(source, [
1786 StaticWarningCode.MIXED_RETURN_TYPES, 1980 StaticWarningCode.MIXED_RETURN_TYPES,
1787 StaticWarningCode.MIXED_RETURN_TYPES]); 1981 StaticWarningCode.MIXED_RETURN_TYPES]);
1788 verify([source]); 1982 verify([source]);
1789 } 1983 }
1790 1984
1791 void test_mixedReturnTypes_topLevelFunction() { 1985 void test_mixedReturnTypes_topLevelFunction() {
1792 Source source = addSource(EngineTestCase.createSource([ 1986 Source source = addSource(r'''
1793 "f(int x) {", 1987 f(int x) {
1794 " if (x < 0) {", 1988 if (x < 0) {
1795 " return;", 1989 return;
1796 " }", 1990 }
1797 " return 0;", 1991 return 0;
1798 "}"])); 1992 }''');
1799 resolve(source); 1993 resolve(source);
1800 assertErrors(source, [ 1994 assertErrors(source, [
1801 StaticWarningCode.MIXED_RETURN_TYPES, 1995 StaticWarningCode.MIXED_RETURN_TYPES,
1802 StaticWarningCode.MIXED_RETURN_TYPES]); 1996 StaticWarningCode.MIXED_RETURN_TYPES]);
1803 verify([source]); 1997 verify([source]);
1804 } 1998 }
1805 1999
1806 void test_newWithAbstractClass() { 2000 void test_newWithAbstractClass() {
1807 Source source = addSource(EngineTestCase.createSource([ 2001 Source source = addSource(r'''
1808 "abstract class A {}", 2002 abstract class A {}
1809 "void f() {", 2003 void f() {
1810 " A a = new A();", 2004 A a = new A();
1811 "}"])); 2005 }''');
1812 resolve(source); 2006 resolve(source);
1813 assertErrors(source, [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS]); 2007 assertErrors(source, [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS]);
1814 verify([source]); 2008 verify([source]);
1815 } 2009 }
1816 2010
1817 void test_newWithInvalidTypeParameters() { 2011 void test_newWithInvalidTypeParameters() {
1818 Source source = addSource(EngineTestCase.createSource(["class A {}", "f() { return new A<A>(); }"])); 2012 Source source = addSource(r'''
2013 class A {}
2014 f() { return new A<A>(); }''');
1819 resolve(source); 2015 resolve(source);
1820 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); 2016 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
1821 verify([source]); 2017 verify([source]);
1822 } 2018 }
1823 2019
1824 void test_newWithInvalidTypeParameters_tooFew() { 2020 void test_newWithInvalidTypeParameters_tooFew() {
1825 Source source = addSource(EngineTestCase.createSource([ 2021 Source source = addSource(r'''
1826 "class A {}", 2022 class A {}
1827 "class C<K, V> {}", 2023 class C<K, V> {}
1828 "f(p) {", 2024 f(p) {
1829 " return new C<A>();", 2025 return new C<A>();
1830 "}"])); 2026 }''');
1831 resolve(source); 2027 resolve(source);
1832 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); 2028 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
1833 verify([source]); 2029 verify([source]);
1834 } 2030 }
1835 2031
1836 void test_newWithInvalidTypeParameters_tooMany() { 2032 void test_newWithInvalidTypeParameters_tooMany() {
1837 Source source = addSource(EngineTestCase.createSource([ 2033 Source source = addSource(r'''
1838 "class A {}", 2034 class A {}
1839 "class C<E> {}", 2035 class C<E> {}
1840 "f(p) {", 2036 f(p) {
1841 " return new C<A, A>();", 2037 return new C<A, A>();
1842 "}"])); 2038 }''');
1843 resolve(source); 2039 resolve(source);
1844 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); 2040 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
1845 verify([source]); 2041 verify([source]);
1846 } 2042 }
1847 2043
1848 void test_newWithNonType() { 2044 void test_newWithNonType() {
1849 Source source = addSource(EngineTestCase.createSource(["var A = 0;", "void f () {", " var a = new A();", "}"])); 2045 Source source = addSource(r'''
2046 var A = 0;
2047 void f() {
2048 var a = new A();
2049 }''');
1850 resolve(source); 2050 resolve(source);
1851 assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]); 2051 assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]);
1852 verify([source]); 2052 verify([source]);
1853 } 2053 }
1854 2054
1855 void test_newWithNonType_fromLibrary() { 2055 void test_newWithNonType_fromLibrary() {
1856 Source source1 = addNamedSource("lib.dart", "class B {}"); 2056 Source source1 = addNamedSource("lib.dart", "class B {}");
1857 Source source2 = addNamedSource("lib2.dart", EngineTestCase.createSource([ 2057 Source source2 = addNamedSource("lib2.dart", r'''
1858 "import 'lib.dart' as lib;", 2058 import 'lib.dart' as lib;
1859 "void f() {", 2059 void f() {
1860 " var a = new lib.A();", 2060 var a = new lib.A();
1861 "}", 2061 }
1862 "lib.B b;"])); 2062 lib.B b;''');
1863 resolve(source1); 2063 resolve(source1);
1864 resolve(source2); 2064 resolve(source2);
1865 assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]); 2065 assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]);
1866 verify([source1]); 2066 verify([source1]);
1867 } 2067 }
1868 2068
1869 void test_newWithUndefinedConstructor() { 2069 void test_newWithUndefinedConstructor() {
1870 Source source = addSource(EngineTestCase.createSource([ 2070 Source source = addSource(r'''
1871 "class A {", 2071 class A {
1872 " A() {}", 2072 A() {}
1873 "}", 2073 }
1874 "f() {", 2074 f() {
1875 " new A.name();", 2075 new A.name();
1876 "}"])); 2076 }''');
1877 resolve(source); 2077 resolve(source);
1878 assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR]); 2078 assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR]);
1879 // no verify(), 'name' is not resolved 2079 // no verify(), 'name' is not resolved
1880 } 2080 }
1881 2081
1882 void test_newWithUndefinedConstructorDefault() { 2082 void test_newWithUndefinedConstructorDefault() {
1883 Source source = addSource(EngineTestCase.createSource([ 2083 Source source = addSource(r'''
1884 "class A {", 2084 class A {
1885 " A.name() {}", 2085 A.name() {}
1886 "}", 2086 }
1887 "f() {", 2087 f() {
1888 " new A();", 2088 new A();
1889 "}"])); 2089 }''');
1890 resolve(source); 2090 resolve(source);
1891 assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAU LT]); 2091 assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAU LT]);
1892 verify([source]); 2092 verify([source]);
1893 } 2093 }
1894 2094
1895 void test_nonAbstractClassInheritsAbstractMemberFivePlus() { 2095 void test_nonAbstractClassInheritsAbstractMemberFivePlus() {
1896 Source source = addSource(EngineTestCase.createSource([ 2096 Source source = addSource(r'''
1897 "abstract class A {", 2097 abstract class A {
1898 " m();", 2098 m();
1899 " n();", 2099 n();
1900 " o();", 2100 o();
1901 " p();", 2101 p();
1902 " q();", 2102 q();
1903 "}", 2103 }
1904 "class C extends A {", 2104 class C extends A {
1905 "}"])); 2105 }''');
1906 resolve(source); 2106 resolve(source);
1907 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_FIVE_PLUS]); 2107 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_FIVE_PLUS]);
1908 verify([source]); 2108 verify([source]);
1909 } 2109 }
1910 2110
1911 void test_nonAbstractClassInheritsAbstractMemberFour() { 2111 void test_nonAbstractClassInheritsAbstractMemberFour() {
1912 Source source = addSource(EngineTestCase.createSource([ 2112 Source source = addSource(r'''
1913 "abstract class A {", 2113 abstract class A {
1914 " m();", 2114 m();
1915 " n();", 2115 n();
1916 " o();", 2116 o();
1917 " p();", 2117 p();
1918 "}", 2118 }
1919 "class C extends A {", 2119 class C extends A {
1920 "}"])); 2120 }''');
1921 resolve(source); 2121 resolve(source);
1922 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_FOUR]); 2122 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_FOUR]);
1923 verify([source]); 2123 verify([source]);
1924 } 2124 }
1925 2125
1926 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() { 2126 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
1927 // 15979 2127 // 15979
1928 Source source = addSource(EngineTestCase.createSource([ 2128 Source source = addSource(r'''
1929 "abstract class M {}", 2129 abstract class M {}
1930 "abstract class A {}", 2130 abstract class A {}
1931 "abstract class I {", 2131 abstract class I {
1932 " m();", 2132 m();
1933 "}", 2133 }
1934 "class B = A with M implements I;"])); 2134 class B = A with M implements I;''');
1935 resolve(source); 2135 resolve(source);
1936 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2136 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
1937 verify([source]); 2137 verify([source]);
1938 } 2138 }
1939 2139
1940 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() { 2140 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() {
1941 // 15979 2141 // 15979
1942 Source source = addSource(EngineTestCase.createSource([ 2142 Source source = addSource(r'''
1943 "abstract class M {", 2143 abstract class M {
1944 " m();", 2144 m();
1945 "}", 2145 }
1946 "abstract class A {}", 2146 abstract class A {}
1947 "class B = A with M;"])); 2147 class B = A with M;''');
1948 resolve(source); 2148 resolve(source);
1949 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2149 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
1950 verify([source]); 2150 verify([source]);
1951 } 2151 }
1952 2152
1953 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass( ) { 2153 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass( ) {
1954 // 15979 2154 // 15979
1955 Source source = addSource(EngineTestCase.createSource([ 2155 Source source = addSource(r'''
1956 "class M {}", 2156 class M {}
1957 "abstract class A {", 2157 abstract class A {
1958 " m();", 2158 m();
1959 "}", 2159 }
1960 "class B = A with M;"])); 2160 class B = A with M;''');
1961 resolve(source); 2161 resolve(source);
1962 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2162 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
1963 verify([source]); 2163 verify([source]);
1964 } 2164 }
1965 2165
1966 void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubty peIsUsedInImplementation() { 2166 void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubty peIsUsedInImplementation() {
1967 // 15028 2167 // 15028
1968 Source source = addSource(EngineTestCase.createSource([ 2168 Source source = addSource(r'''
1969 "class C {", 2169 class C {
1970 " foo(int x) => x;", 2170 foo(int x) => x;
1971 "}", 2171 }
1972 "abstract class D {", 2172 abstract class D {
1973 " foo(x, [y]);", 2173 foo(x, [y]);
1974 "}", 2174 }
1975 "class E extends C implements D {}"])); 2175 class E extends C implements D {}''');
1976 resolve(source); 2176 resolve(source);
1977 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2177 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
1978 verify([source]); 2178 verify([source]);
1979 } 2179 }
1980 2180
1981 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() { 2181 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() {
1982 Source source = addSource(EngineTestCase.createSource([ 2182 Source source = addSource(r'''
1983 "class I {", 2183 class I {
1984 " int get g {return 1;}", 2184 int get g {return 1;}
1985 "}", 2185 }
1986 "class C implements I {", 2186 class C implements I {
1987 "}"])); 2187 }''');
1988 resolve(source); 2188 resolve(source);
1989 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2189 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
1990 verify([source]); 2190 verify([source]);
1991 } 2191 }
1992 2192
1993 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() { 2193 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() {
1994 Source source = addSource(EngineTestCase.createSource([ 2194 Source source = addSource(r'''
1995 "abstract class A {", 2195 abstract class A {
1996 " int get g;", 2196 int get g;
1997 "}", 2197 }
1998 "class C extends A {", 2198 class C extends A {
1999 "}"])); 2199 }''');
2000 resolve(source); 2200 resolve(source);
2001 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2201 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2002 verify([source]); 2202 verify([source]);
2003 } 2203 }
2004 2204
2005 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() { 2205 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() {
2006 Source source = addSource(EngineTestCase.createSource([ 2206 Source source = addSource(r'''
2007 "class I {", 2207 class I {
2008 " m(p) {}", 2208 m(p) {}
2009 "}", 2209 }
2010 "class C implements I {", 2210 class C implements I {
2011 "}"])); 2211 }''');
2012 resolve(source); 2212 resolve(source);
2013 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2213 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2014 verify([source]); 2214 verify([source]);
2015 } 2215 }
2016 2216
2017 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() { 2217 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() {
2018 Source source = addSource(EngineTestCase.createSource([ 2218 Source source = addSource(r'''
2019 "abstract class A {", 2219 abstract class A {
2020 " m(p);", 2220 m(p);
2021 "}", 2221 }
2022 "class C extends A {", 2222 class C extends A {
2023 "}"])); 2223 }''');
2024 resolve(source); 2224 resolve(source);
2025 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2225 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2026 verify([source]); 2226 verify([source]);
2027 } 2227 }
2028 2228
2029 void test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount( ) { 2229 void test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount( ) {
2030 // 7640 2230 // 7640
2031 Source source = addSource(EngineTestCase.createSource([ 2231 Source source = addSource(r'''
2032 "abstract class A {", 2232 abstract class A {
2033 " int x(int a);", 2233 int x(int a);
2034 "}", 2234 }
2035 "abstract class B {", 2235 abstract class B {
2036 " int x(int a, [int b]);", 2236 int x(int a, [int b]);
2037 "}", 2237 }
2038 "class C implements A, B {", 2238 class C implements A, B {
2039 "}"])); 2239 }''');
2040 resolve(source); 2240 resolve(source);
2041 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2241 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2042 verify([source]); 2242 verify([source]);
2043 } 2243 }
2044 2244
2045 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() { 2245 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() {
2046 // 15001 2246 // 15001
2047 Source source = addSource(EngineTestCase.createSource([ 2247 Source source = addSource(r'''
2048 "abstract class A { get g1; get g2; }", 2248 abstract class A { get g1; get g2; }
2049 "abstract class B implements A { get g1 => 1; }", 2249 abstract class B implements A { get g1 => 1; }
2050 "class C extends Object with B {}"])); 2250 class C extends Object with B {}''');
2051 resolve(source); 2251 resolve(source);
2052 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2252 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2053 } 2253 }
2054 2254
2055 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() { 2255 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() {
2056 // 15001 2256 // 15001
2057 Source source = addSource(EngineTestCase.createSource([ 2257 Source source = addSource(r'''
2058 "abstract class A { m1(); m2(); }", 2258 abstract class A { m1(); m2(); }
2059 "abstract class B implements A { m1() => 1; }", 2259 abstract class B implements A { m1() => 1; }
2060 "class C extends Object with B {}"])); 2260 class C extends Object with B {}''');
2061 resolve(source); 2261 resolve(source);
2062 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2262 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2063 } 2263 }
2064 2264
2065 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() { 2265 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() {
2066 // 15001 2266 // 15001
2067 Source source = addSource(EngineTestCase.createSource([ 2267 Source source = addSource(r'''
2068 "abstract class A { set s1(v); set s2(v); }", 2268 abstract class A { set s1(v); set s2(v); }
2069 "abstract class B implements A { set s1(v) {} }", 2269 abstract class B implements A { set s1(v) {} }
2070 "class C extends Object with B {}"])); 2270 class C extends Object with B {}''');
2071 resolve(source); 2271 resolve(source);
2072 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2272 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2073 } 2273 }
2074 2274
2075 void test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter( ) { 2275 void test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter( ) {
2076 // test from language/override_inheritance_abstract_test_14.dart 2276 // test from language/override_inheritance_abstract_test_14.dart
2077 Source source = addSource(EngineTestCase.createSource([ 2277 Source source = addSource(r'''
2078 "abstract class A {", 2278 abstract class A {
2079 " set field(_);", 2279 set field(_);
2080 "}", 2280 }
2081 "abstract class I {", 2281 abstract class I {
2082 " var field;", 2282 var field;
2083 "}", 2283 }
2084 "class B extends A implements I {", 2284 class B extends A implements I {
2085 " get field => 0;", 2285 get field => 0;
2086 "}"])); 2286 }''');
2087 resolve(source); 2287 resolve(source);
2088 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2288 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2089 verify([source]); 2289 verify([source]);
2090 } 2290 }
2091 2291
2092 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() { 2292 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() {
2093 Source source = addSource(EngineTestCase.createSource([ 2293 Source source = addSource(r'''
2094 "class I {", 2294 class I {
2095 " set s(int i) {}", 2295 set s(int i) {}
2096 "}", 2296 }
2097 "class C implements I {", 2297 class C implements I {
2098 "}"])); 2298 }''');
2099 resolve(source); 2299 resolve(source);
2100 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2300 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2101 verify([source]); 2301 verify([source]);
2102 } 2302 }
2103 2303
2104 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() { 2304 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() {
2105 Source source = addSource(EngineTestCase.createSource([ 2305 Source source = addSource(r'''
2106 "abstract class A {", 2306 abstract class A {
2107 " set s(int i);", 2307 set s(int i);
2108 "}", 2308 }
2109 "class C extends A {", 2309 class C extends A {
2110 "}"])); 2310 }''');
2111 resolve(source); 2311 resolve(source);
2112 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2312 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2113 verify([source]); 2313 verify([source]);
2114 } 2314 }
2115 2315
2116 void test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() { 2316 void test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() {
2117 // bug 11154 2317 // bug 11154
2118 Source source = addSource(EngineTestCase.createSource([ 2318 Source source = addSource(r'''
2119 "class A {", 2319 class A {
2120 " get a => 'a';", 2320 get a => 'a';
2121 "}", 2321 }
2122 "abstract class B implements A {", 2322 abstract class B implements A {
2123 " get b => 'b';", 2323 get b => 'b';
2124 "}", 2324 }
2125 "class C extends B {", 2325 class C extends B {
2126 "}"])); 2326 }''');
2127 resolve(source); 2327 resolve(source);
2128 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2328 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2129 verify([source]); 2329 verify([source]);
2130 } 2330 }
2131 2331
2132 void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_mis singGetter() { 2332 void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_mis singGetter() {
2133 // 16133 2333 // 16133
2134 Source source = addSource(EngineTestCase.createSource([ 2334 Source source = addSource(r'''
2135 "class I {", 2335 class I {
2136 " var v;", 2336 var v;
2137 "}", 2337 }
2138 "class C implements I {", 2338 class C implements I {
2139 " set v(_) {}", 2339 set v(_) {}
2140 "}"])); 2340 }''');
2141 resolve(source); 2341 resolve(source);
2142 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2342 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2143 verify([source]); 2343 verify([source]);
2144 } 2344 }
2145 2345
2146 void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_mis singSetter() { 2346 void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_mis singSetter() {
2147 // 16133 2347 // 16133
2148 Source source = addSource(EngineTestCase.createSource([ 2348 Source source = addSource(r'''
2149 "class I {", 2349 class I {
2150 " var v;", 2350 var v;
2151 "}", 2351 }
2152 "class C implements I {", 2352 class C implements I {
2153 " get v => 1;", 2353 get v => 1;
2154 "}"])); 2354 }''');
2155 resolve(source); 2355 resolve(source);
2156 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]); 2356 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_ONE]);
2157 verify([source]); 2357 verify([source]);
2158 } 2358 }
2159 2359
2160 void test_nonAbstractClassInheritsAbstractMemberThree() { 2360 void test_nonAbstractClassInheritsAbstractMemberThree() {
2161 Source source = addSource(EngineTestCase.createSource([ 2361 Source source = addSource(r'''
2162 "abstract class A {", 2362 abstract class A {
2163 " m();", 2363 m();
2164 " n();", 2364 n();
2165 " o();", 2365 o();
2166 "}", 2366 }
2167 "class C extends A {", 2367 class C extends A {
2168 "}"])); 2368 }''');
2169 resolve(source); 2369 resolve(source);
2170 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_THREE]); 2370 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_THREE]);
2171 verify([source]); 2371 verify([source]);
2172 } 2372 }
2173 2373
2174 void test_nonAbstractClassInheritsAbstractMemberTwo() { 2374 void test_nonAbstractClassInheritsAbstractMemberTwo() {
2175 Source source = addSource(EngineTestCase.createSource([ 2375 Source source = addSource(r'''
2176 "abstract class A {", 2376 abstract class A {
2177 " m();", 2377 m();
2178 " n();", 2378 n();
2179 "}", 2379 }
2180 "class C extends A {", 2380 class C extends A {
2181 "}"])); 2381 }''');
2182 resolve(source); 2382 resolve(source);
2183 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_TWO]); 2383 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_TWO]);
2184 verify([source]); 2384 verify([source]);
2185 } 2385 }
2186 2386
2187 void test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_mis singBoth() { 2387 void test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_mis singBoth() {
2188 // 16133 2388 // 16133
2189 Source source = addSource(EngineTestCase.createSource([ 2389 Source source = addSource(r'''
2190 "class I {", 2390 class I {
2191 " var v;", 2391 var v;
2192 "}", 2392 }
2193 "class C implements I {", 2393 class C implements I {
2194 "}"])); 2394 }''');
2195 resolve(source); 2395 resolve(source);
2196 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_TWO]); 2396 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT _MEMBER_TWO]);
2197 verify([source]); 2397 verify([source]);
2198 } 2398 }
2199 2399
2200 void test_nonTypeInCatchClause_noElement() { 2400 void test_nonTypeInCatchClause_noElement() {
2201 Source source = addSource(EngineTestCase.createSource(["f() {", " try {", " } on T catch (e) {", " }", "}"])); 2401 Source source = addSource(r'''
2402 f() {
2403 try {
2404 } on T catch (e) {
2405 }
2406 }''');
2202 resolve(source); 2407 resolve(source);
2203 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); 2408 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]);
2204 verify([source]); 2409 verify([source]);
2205 } 2410 }
2206 2411
2207 void test_nonTypeInCatchClause_notType() { 2412 void test_nonTypeInCatchClause_notType() {
2208 Source source = addSource(EngineTestCase.createSource([ 2413 Source source = addSource(r'''
2209 "var T = 0;", 2414 var T = 0;
2210 "f() {", 2415 f() {
2211 " try {", 2416 try {
2212 " } on T catch (e) {", 2417 } on T catch (e) {
2213 " }", 2418 }
2214 "}"])); 2419 }''');
2215 resolve(source); 2420 resolve(source);
2216 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); 2421 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]);
2217 verify([source]); 2422 verify([source]);
2218 } 2423 }
2219 2424
2220 void test_nonVoidReturnForOperator() { 2425 void test_nonVoidReturnForOperator() {
2221 Source source = addSource(EngineTestCase.createSource([ 2426 Source source = addSource(r'''
2222 "class A {", 2427 class A {
2223 " int operator []=(a, b) { return a; }", 2428 int operator []=(a, b) { return a; }
2224 "}"])); 2429 }''');
2225 resolve(source); 2430 resolve(source);
2226 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]); 2431 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]);
2227 verify([source]); 2432 verify([source]);
2228 } 2433 }
2229 2434
2230 void test_nonVoidReturnForSetter_function() { 2435 void test_nonVoidReturnForSetter_function() {
2231 Source source = addSource(EngineTestCase.createSource(["int set x(int v) {", " return 42;", "}"])); 2436 Source source = addSource(r'''
2437 int set x(int v) {
2438 return 42;
2439 }''');
2232 resolve(source); 2440 resolve(source);
2233 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); 2441 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]);
2234 verify([source]); 2442 verify([source]);
2235 } 2443 }
2236 2444
2237 void test_nonVoidReturnForSetter_method() { 2445 void test_nonVoidReturnForSetter_method() {
2238 Source source = addSource(EngineTestCase.createSource([ 2446 Source source = addSource(r'''
2239 "class A {", 2447 class A {
2240 " int set x(int v) {", 2448 int set x(int v) {
2241 " return 42;", 2449 return 42;
2242 " }", 2450 }
2243 "}"])); 2451 }''');
2244 resolve(source); 2452 resolve(source);
2245 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); 2453 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]);
2246 verify([source]); 2454 verify([source]);
2247 } 2455 }
2248 2456
2249 void test_notAType() { 2457 void test_notAType() {
2250 Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {", " f v = null;", "}"])); 2458 Source source = addSource(r'''
2459 f() {}
2460 main() {
2461 f v = null;
2462 }''');
2251 resolve(source); 2463 resolve(source);
2252 assertErrors(source, [StaticWarningCode.NOT_A_TYPE]); 2464 assertErrors(source, [StaticWarningCode.NOT_A_TYPE]);
2253 verify([source]); 2465 verify([source]);
2254 } 2466 }
2255 2467
2256 void test_notEnoughRequiredArguments() { 2468 void test_notEnoughRequiredArguments() {
2257 Source source = addSource(EngineTestCase.createSource(["f(int a, String b) { }", "main() {", " f();", "}"])); 2469 Source source = addSource(r'''
2470 f(int a, String b) {}
2471 main() {
2472 f();
2473 }''');
2258 resolve(source); 2474 resolve(source);
2259 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); 2475 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
2260 verify([source]); 2476 verify([source]);
2261 } 2477 }
2262 2478
2263 void test_notEnoughRequiredArguments_functionExpression() { 2479 void test_notEnoughRequiredArguments_functionExpression() {
2264 Source source = addSource(EngineTestCase.createSource(["main() {", " (int x ) {} ();", "}"])); 2480 Source source = addSource(r'''
2481 main() {
2482 (int x) {} ();
2483 }''');
2265 resolve(source); 2484 resolve(source);
2266 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); 2485 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
2267 verify([source]); 2486 verify([source]);
2268 } 2487 }
2269 2488
2270 void test_notEnoughRequiredArguments_getterReturningFunction() { 2489 void test_notEnoughRequiredArguments_getterReturningFunction() {
2271 Source source = addSource(EngineTestCase.createSource([ 2490 Source source = addSource(r'''
2272 "typedef Getter(self);", 2491 typedef Getter(self);
2273 "Getter getter = (x) => x;", 2492 Getter getter = (x) => x;
2274 "main() {", 2493 main() {
2275 " getter();", 2494 getter();
2276 "}"])); 2495 }''');
2277 resolve(source); 2496 resolve(source);
2278 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); 2497 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
2279 verify([source]); 2498 verify([source]);
2280 } 2499 }
2281 2500
2282 void test_partOfDifferentLibrary() { 2501 void test_partOfDifferentLibrary() {
2283 Source source = addSource(EngineTestCase.createSource(["library lib;", "part 'part.dart';"])); 2502 Source source = addSource(r'''
2284 addNamedSource("/part.dart", EngineTestCase.createSource(["part of lub;"])); 2503 library lib;
2504 part 'part.dart';''');
2505 addNamedSource("/part.dart", "part of lub;");
2285 resolve(source); 2506 resolve(source);
2286 assertErrors(source, [StaticWarningCode.PART_OF_DIFFERENT_LIBRARY]); 2507 assertErrors(source, [StaticWarningCode.PART_OF_DIFFERENT_LIBRARY]);
2287 verify([source]); 2508 verify([source]);
2288 } 2509 }
2289 2510
2290 void test_redirectToInvalidFunctionType() { 2511 void test_redirectToInvalidFunctionType() {
2291 Source source = addSource(EngineTestCase.createSource([ 2512 Source source = addSource(r'''
2292 "class A implements B {", 2513 class A implements B {
2293 " A(int p) {}", 2514 A(int p) {}
2294 "}", 2515 }
2295 "class B {", 2516 class B {
2296 " factory B() = A;", 2517 factory B() = A;
2297 "}"])); 2518 }''');
2298 resolve(source); 2519 resolve(source);
2299 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE]); 2520 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE]);
2300 verify([source]); 2521 verify([source]);
2301 } 2522 }
2302 2523
2303 void test_redirectToInvalidReturnType() { 2524 void test_redirectToInvalidReturnType() {
2304 Source source = addSource(EngineTestCase.createSource([ 2525 Source source = addSource(r'''
2305 "class A {", 2526 class A {
2306 " A() {}", 2527 A() {}
2307 "}", 2528 }
2308 "class B {", 2529 class B {
2309 " factory B() = A;", 2530 factory B() = A;
2310 "}"])); 2531 }''');
2311 resolve(source); 2532 resolve(source);
2312 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE]); 2533 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE]);
2313 verify([source]); 2534 verify([source]);
2314 } 2535 }
2315 2536
2316 void test_redirectToMissingConstructor_named() { 2537 void test_redirectToMissingConstructor_named() {
2317 Source source = addSource(EngineTestCase.createSource([ 2538 Source source = addSource(r'''
2318 "class A implements B{", 2539 class A implements B{
2319 " A() {}", 2540 A() {}
2320 "}", 2541 }
2321 "class B {", 2542 class B {
2322 " factory B() = A.name;", 2543 factory B() = A.name;
2323 "}"])); 2544 }''');
2324 resolve(source); 2545 resolve(source);
2325 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); 2546 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]);
2326 } 2547 }
2327 2548
2328 void test_redirectToMissingConstructor_unnamed() { 2549 void test_redirectToMissingConstructor_unnamed() {
2329 Source source = addSource(EngineTestCase.createSource([ 2550 Source source = addSource(r'''
2330 "class A implements B{", 2551 class A implements B{
2331 " A.name() {}", 2552 A.name() {}
2332 "}", 2553 }
2333 "class B {", 2554 class B {
2334 " factory B() = A;", 2555 factory B() = A;
2335 "}"])); 2556 }''');
2336 resolve(source); 2557 resolve(source);
2337 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); 2558 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]);
2338 } 2559 }
2339 2560
2340 void test_redirectToNonClass_notAType() { 2561 void test_redirectToNonClass_notAType() {
2341 Source source = addSource(EngineTestCase.createSource(["class B {", " int A ;", " factory B() = A;", "}"])); 2562 Source source = addSource(r'''
2563 class B {
2564 int A;
2565 factory B() = A;
2566 }''');
2342 resolve(source); 2567 resolve(source);
2343 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); 2568 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]);
2344 verify([source]); 2569 verify([source]);
2345 } 2570 }
2346 2571
2347 void test_redirectToNonClass_undefinedIdentifier() { 2572 void test_redirectToNonClass_undefinedIdentifier() {
2348 Source source = addSource(EngineTestCase.createSource(["class B {", " facto ry B() = A;", "}"])); 2573 Source source = addSource(r'''
2574 class B {
2575 factory B() = A;
2576 }''');
2349 resolve(source); 2577 resolve(source);
2350 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); 2578 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]);
2351 verify([source]); 2579 verify([source]);
2352 } 2580 }
2353 2581
2354 void test_returnWithoutValue_factoryConstructor() { 2582 void test_returnWithoutValue_factoryConstructor() {
2355 Source source = addSource(EngineTestCase.createSource(["class A { factory A( ) { return; } }"])); 2583 Source source = addSource("class A { factory A() { return; } }");
2356 resolve(source); 2584 resolve(source);
2357 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 2585 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2358 verify([source]); 2586 verify([source]);
2359 } 2587 }
2360 2588
2361 void test_returnWithoutValue_function() { 2589 void test_returnWithoutValue_function() {
2362 Source source = addSource(EngineTestCase.createSource(["int f() { return; }" ])); 2590 Source source = addSource("int f() { return; }");
2363 resolve(source); 2591 resolve(source);
2364 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 2592 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2365 verify([source]); 2593 verify([source]);
2366 } 2594 }
2367 2595
2368 void test_returnWithoutValue_method() { 2596 void test_returnWithoutValue_method() {
2369 Source source = addSource(EngineTestCase.createSource(["class A { int m() { return; } }"])); 2597 Source source = addSource("class A { int m() { return; } }");
2370 resolve(source); 2598 resolve(source);
2371 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 2599 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2372 verify([source]); 2600 verify([source]);
2373 } 2601 }
2374 2602
2375 void test_returnWithoutValue_mixedReturnTypes_function() { 2603 void test_returnWithoutValue_mixedReturnTypes_function() {
2376 // Tests that only the RETURN_WITHOUT_VALUE warning is created, and no MIXED _RETURN_TYPES are 2604 // Tests that only the RETURN_WITHOUT_VALUE warning is created, and no MIXED _RETURN_TYPES are
2377 // created. 2605 // created.
2378 Source source = addSource(EngineTestCase.createSource([ 2606 Source source = addSource(r'''
2379 "int f(int x) {", 2607 int f(int x) {
2380 " if (x < 0) {", 2608 if (x < 0) {
2381 " return 1;", 2609 return 1;
2382 " }", 2610 }
2383 " return;", 2611 return;
2384 "}"])); 2612 }''');
2385 resolve(source); 2613 resolve(source);
2386 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); 2614 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
2387 verify([source]); 2615 verify([source]);
2388 } 2616 }
2389 2617
2390 void test_staticAccessToInstanceMember_method_invocation() { 2618 void test_staticAccessToInstanceMember_method_invocation() {
2391 Source source = addSource(EngineTestCase.createSource(["class A {", " m() { }", "}", "main() {", " A.m();", "}"])); 2619 Source source = addSource(r'''
2620 class A {
2621 m() {}
2622 }
2623 main() {
2624 A.m();
2625 }''');
2392 resolve(source); 2626 resolve(source);
2393 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 2627 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2394 verify([source]); 2628 verify([source]);
2395 } 2629 }
2396 2630
2397 void test_staticAccessToInstanceMember_method_reference() { 2631 void test_staticAccessToInstanceMember_method_reference() {
2398 Source source = addSource(EngineTestCase.createSource(["class A {", " m() { }", "}", "main() {", " A.m;", "}"])); 2632 Source source = addSource(r'''
2633 class A {
2634 m() {}
2635 }
2636 main() {
2637 A.m;
2638 }''');
2399 resolve(source); 2639 resolve(source);
2400 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 2640 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2401 verify([source]); 2641 verify([source]);
2402 } 2642 }
2403 2643
2404 void test_staticAccessToInstanceMember_propertyAccess_field() { 2644 void test_staticAccessToInstanceMember_propertyAccess_field() {
2405 Source source = addSource(EngineTestCase.createSource(["class A {", " var f ;", "}", "main() {", " A.f;", "}"])); 2645 Source source = addSource(r'''
2646 class A {
2647 var f;
2648 }
2649 main() {
2650 A.f;
2651 }''');
2406 resolve(source); 2652 resolve(source);
2407 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 2653 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2408 verify([source]); 2654 verify([source]);
2409 } 2655 }
2410 2656
2411 void test_staticAccessToInstanceMember_propertyAccess_getter() { 2657 void test_staticAccessToInstanceMember_propertyAccess_getter() {
2412 Source source = addSource(EngineTestCase.createSource([ 2658 Source source = addSource(r'''
2413 "class A {", 2659 class A {
2414 " get f => 42;", 2660 get f => 42;
2415 "}", 2661 }
2416 "main() {", 2662 main() {
2417 " A.f;", 2663 A.f;
2418 "}"])); 2664 }''');
2419 resolve(source); 2665 resolve(source);
2420 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 2666 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2421 verify([source]); 2667 verify([source]);
2422 } 2668 }
2423 2669
2424 void test_staticAccessToInstanceMember_propertyAccess_setter() { 2670 void test_staticAccessToInstanceMember_propertyAccess_setter() {
2425 Source source = addSource(EngineTestCase.createSource([ 2671 Source source = addSource(r'''
2426 "class A {", 2672 class A {
2427 " set f(x) {}", 2673 set f(x) {}
2428 "}", 2674 }
2429 "main() {", 2675 main() {
2430 " A.f = 42;", 2676 A.f = 42;
2431 "}"])); 2677 }''');
2432 resolve(source); 2678 resolve(source);
2433 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); 2679 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
2434 verify([source]); 2680 verify([source]);
2435 } 2681 }
2436 2682
2437 void test_switchExpressionNotAssignable() { 2683 void test_switchExpressionNotAssignable() {
2438 Source source = addSource(EngineTestCase.createSource([ 2684 Source source = addSource(r'''
2439 "f(int p) {", 2685 f(int p) {
2440 " switch (p) {", 2686 switch (p) {
2441 " case 'a': break;", 2687 case 'a': break;
2442 " }", 2688 }
2443 "}"])); 2689 }''');
2444 resolve(source); 2690 resolve(source);
2445 assertErrors(source, [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE]); 2691 assertErrors(source, [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE]);
2446 verify([source]); 2692 verify([source]);
2447 } 2693 }
2448 2694
2449 void test_typeAnnotationDeferredClass_asExpression() { 2695 void test_typeAnnotationDeferredClass_asExpression() {
2450 resolveWithAndWithoutExperimental(<String> [ 2696 resolveWithAndWithoutExperimental(<String> [
2451 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2697 r'''
2452 EngineTestCase.createSource([ 2698 library lib1;
2453 "library root;", 2699 class A {}''',
2454 "import 'lib1.dart' deferred as a;", 2700 r'''
2455 "f(var v) {", 2701 library root;
2456 " v as a.A;", 2702 import 'lib1.dart' deferred as a;
2457 "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <E rrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2703 f(var v) {
2704 v as a.A;
2705 }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2458 } 2706 }
2459 2707
2460 void test_typeAnnotationDeferredClass_catchClause() { 2708 void test_typeAnnotationDeferredClass_catchClause() {
2461 resolveWithAndWithoutExperimental(<String> [ 2709 resolveWithAndWithoutExperimental(<String> [
2462 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2710 r'''
2463 EngineTestCase.createSource([ 2711 library lib1;
2464 "library root;", 2712 class A {}''',
2465 "import 'lib1.dart' deferred as a;", 2713 r'''
2466 "f(var v) {", 2714 library root;
2467 " try {", 2715 import 'lib1.dart' deferred as a;
2468 " } on a.A {", 2716 f(var v) {
2469 " }", 2717 try {
2470 "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <E rrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2718 } on a.A {
2719 }
2720 }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2471 } 2721 }
2472 2722
2473 void test_typeAnnotationDeferredClass_fieldFormalParameter() { 2723 void test_typeAnnotationDeferredClass_fieldFormalParameter() {
2474 resolveWithAndWithoutExperimental(<String> [ 2724 resolveWithAndWithoutExperimental(<String> [
2475 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2725 r'''
2476 EngineTestCase.createSource([ 2726 library lib1;
2477 "library root;", 2727 class A {}''',
2478 "import 'lib1.dart' deferred as a;", 2728 r'''
2479 "class C {", 2729 library root;
2480 " var v;", 2730 import 'lib1.dart' deferred as a;
2481 " C(a.A this.v);", 2731 class C {
2482 "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <E rrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2732 var v;
2733 C(a.A this.v);
2734 }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2483 } 2735 }
2484 2736
2485 void test_typeAnnotationDeferredClass_functionDeclaration_returnType() { 2737 void test_typeAnnotationDeferredClass_functionDeclaration_returnType() {
2486 resolveWithAndWithoutExperimental(<String> [ 2738 resolveWithAndWithoutExperimental(<String> [
2487 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2739 r'''
2488 EngineTestCase.createSource([ 2740 library lib1;
2489 "library root;", 2741 class A {}''',
2490 "import 'lib1.dart' deferred as a;", 2742 r'''
2491 "a.A f() { return null; }"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMP ORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLA SS]); 2743 library root;
2744 import 'lib1.dart' deferred as a;
2745 a.A f() { return null; }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_ SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2492 } 2746 }
2493 2747
2494 void test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType( ) { 2748 void test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType( ) {
2495 resolveWithAndWithoutExperimental(<String> [ 2749 resolveWithAndWithoutExperimental(<String> [
2496 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2750 r'''
2497 EngineTestCase.createSource([ 2751 library lib1;
2498 "library root;", 2752 class A {}''',
2499 "import 'lib1.dart' deferred as a;", 2753 r'''
2500 "f(a.A g()) {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SU PPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2754 library root;
2755 import 'lib1.dart' deferred as a;
2756 f(a.A g()) {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2501 } 2757 }
2502 2758
2503 void test_typeAnnotationDeferredClass_isExpression() { 2759 void test_typeAnnotationDeferredClass_isExpression() {
2504 resolveWithAndWithoutExperimental(<String> [ 2760 resolveWithAndWithoutExperimental(<String> [
2505 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2761 r'''
2506 EngineTestCase.createSource([ 2762 library lib1;
2507 "library root;", 2763 class A {}''',
2508 "import 'lib1.dart' deferred as a;", 2764 r'''
2509 "f(var v) {", 2765 library root;
2510 " bool b = v is a.A;", 2766 import 'lib1.dart' deferred as a;
2511 "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <E rrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2767 f(var v) {
2768 bool b = v is a.A;
2769 }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2512 } 2770 }
2513 2771
2514 void test_typeAnnotationDeferredClass_methodDeclaration_returnType() { 2772 void test_typeAnnotationDeferredClass_methodDeclaration_returnType() {
2515 resolveWithAndWithoutExperimental(<String> [ 2773 resolveWithAndWithoutExperimental(<String> [
2516 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2774 r'''
2517 EngineTestCase.createSource([ 2775 library lib1;
2518 "library root;", 2776 class A {}''',
2519 "import 'lib1.dart' deferred as a;", 2777 r'''
2520 "class C {", 2778 library root;
2521 " a.A m() { return null; }", 2779 import 'lib1.dart' deferred as a;
2522 "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <E rrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2780 class C {
2781 a.A m() { return null; }
2782 }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2523 } 2783 }
2524 2784
2525 void test_typeAnnotationDeferredClass_simpleFormalParameter() { 2785 void test_typeAnnotationDeferredClass_simpleFormalParameter() {
2526 resolveWithAndWithoutExperimental(<String> [ 2786 resolveWithAndWithoutExperimental(<String> [
2527 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2787 r'''
2528 EngineTestCase.createSource([ 2788 library lib1;
2529 "library root;", 2789 class A {}''',
2530 "import 'lib1.dart' deferred as a;", 2790 r'''
2531 "f(a.A v) {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPP ORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2791 library root;
2792 import 'lib1.dart' deferred as a;
2793 f(a.A v) {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], < ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2532 } 2794 }
2533 2795
2534 void test_typeAnnotationDeferredClass_typeArgumentList() { 2796 void test_typeAnnotationDeferredClass_typeArgumentList() {
2535 resolveWithAndWithoutExperimental(<String> [ 2797 resolveWithAndWithoutExperimental(<String> [
2536 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2798 r'''
2537 EngineTestCase.createSource([ 2799 library lib1;
2538 "library root;", 2800 class A {}''',
2539 "import 'lib1.dart' deferred as a;", 2801 r'''
2540 "class C<E> {}", 2802 library root;
2541 "C<a.A> c;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPOR TED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2803 import 'lib1.dart' deferred as a;
2804 class C<E> {}
2805 C<a.A> c;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <Er rorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2542 } 2806 }
2543 2807
2544 void test_typeAnnotationDeferredClass_typeArgumentList2() { 2808 void test_typeAnnotationDeferredClass_typeArgumentList2() {
2545 resolveWithAndWithoutExperimental(<String> [ 2809 resolveWithAndWithoutExperimental(<String> [
2546 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2810 r'''
2547 EngineTestCase.createSource([ 2811 library lib1;
2548 "library root;", 2812 class A {}''',
2549 "import 'lib1.dart' deferred as a;", 2813 r'''
2550 "class C<E, F> {}", 2814 library root;
2551 "C<a.A, a.A> c;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_S UPPORTED], <ErrorCode> [ 2815 import 'lib1.dart' deferred as a;
2816 class C<E, F> {}
2817 C<a.A, a.A> c;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED] , <ErrorCode> [
2552 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, 2818 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS,
2553 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2819 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2554 } 2820 }
2555 2821
2556 void test_typeAnnotationDeferredClass_typeParameter_bound() { 2822 void test_typeAnnotationDeferredClass_typeParameter_bound() {
2557 resolveWithAndWithoutExperimental(<String> [ 2823 resolveWithAndWithoutExperimental(<String> [
2558 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2824 r'''
2559 EngineTestCase.createSource([ 2825 library lib1;
2560 "library root;", 2826 class A {}''',
2561 "import 'lib1.dart' deferred as a;", 2827 r'''
2562 "class C<E extends a.A> {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IM PORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CL ASS]); 2828 library root;
2829 import 'lib1.dart' deferred as a;
2830 class C<E extends a.A> {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT _SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2563 } 2831 }
2564 2832
2565 void test_typeAnnotationDeferredClass_variableDeclarationList() { 2833 void test_typeAnnotationDeferredClass_variableDeclarationList() {
2566 resolveWithAndWithoutExperimental(<String> [ 2834 resolveWithAndWithoutExperimental(<String> [
2567 EngineTestCase.createSource(["library lib1;", "class A {}"]), 2835 r'''
2568 EngineTestCase.createSource([ 2836 library lib1;
2569 "library root;", 2837 class A {}''',
2570 "import 'lib1.dart' deferred as a;", 2838 r'''
2571 "a.A v;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED ], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); 2839 library root;
2840 import 'lib1.dart' deferred as a;
2841 a.A v;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <Error Code> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
2572 } 2842 }
2573 2843
2574 void test_typeParameterReferencedByStatic_field() { 2844 void test_typeParameterReferencedByStatic_field() {
2575 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st atic K k;", "}"])); 2845 Source source = addSource(r'''
2846 class A<K> {
2847 static K k;
2848 }''');
2576 resolve(source); 2849 resolve(source);
2577 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] ); 2850 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] );
2578 verify([source]); 2851 verify([source]);
2579 } 2852 }
2580 2853
2581 void test_typeParameterReferencedByStatic_getter() { 2854 void test_typeParameterReferencedByStatic_getter() {
2582 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st atic K get k => null;", "}"])); 2855 Source source = addSource(r'''
2856 class A<K> {
2857 static K get k => null;
2858 }''');
2583 resolve(source); 2859 resolve(source);
2584 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] ); 2860 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] );
2585 verify([source]); 2861 verify([source]);
2586 } 2862 }
2587 2863
2588 void test_typeParameterReferencedByStatic_methodBodyReference() { 2864 void test_typeParameterReferencedByStatic_methodBodyReference() {
2589 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st atic m() {", " K k;", " }", "}"])); 2865 Source source = addSource(r'''
2866 class A<K> {
2867 static m() {
2868 K k;
2869 }
2870 }''');
2590 resolve(source); 2871 resolve(source);
2591 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] ); 2872 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] );
2592 verify([source]); 2873 verify([source]);
2593 } 2874 }
2594 2875
2595 void test_typeParameterReferencedByStatic_methodParameter() { 2876 void test_typeParameterReferencedByStatic_methodParameter() {
2596 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st atic m(K k) {}", "}"])); 2877 Source source = addSource(r'''
2878 class A<K> {
2879 static m(K k) {}
2880 }''');
2597 resolve(source); 2881 resolve(source);
2598 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] ); 2882 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] );
2599 verify([source]); 2883 verify([source]);
2600 } 2884 }
2601 2885
2602 void test_typeParameterReferencedByStatic_methodReturn() { 2886 void test_typeParameterReferencedByStatic_methodReturn() {
2603 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st atic K m() { return null; }", "}"])); 2887 Source source = addSource(r'''
2888 class A<K> {
2889 static K m() { return null; }
2890 }''');
2604 resolve(source); 2891 resolve(source);
2605 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] ); 2892 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] );
2606 verify([source]); 2893 verify([source]);
2607 } 2894 }
2608 2895
2609 void test_typeParameterReferencedByStatic_setter() { 2896 void test_typeParameterReferencedByStatic_setter() {
2610 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st atic set s(K k) {}", "}"])); 2897 Source source = addSource(r'''
2898 class A<K> {
2899 static set s(K k) {}
2900 }''');
2611 resolve(source); 2901 resolve(source);
2612 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] ); 2902 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC] );
2613 verify([source]); 2903 verify([source]);
2614 } 2904 }
2615 2905
2616 void test_typePromotion_functionType_arg_InterToDyn() { 2906 void test_typePromotion_functionType_arg_InterToDyn() {
2617 Source source = addSource(EngineTestCase.createSource([ 2907 Source source = addSource(r'''
2618 "typedef FuncDyn(x);", 2908 typedef FuncDyn(x);
2619 "typedef FuncA(A a);", 2909 typedef FuncA(A a);
2620 "class A {}", 2910 class A {}
2621 "class B {}", 2911 class B {}
2622 "main(FuncA f) {", 2912 main(FuncA f) {
2623 " if (f is FuncDyn) {", 2913 if (f is FuncDyn) {
2624 " f(new B());", 2914 f(new B());
2625 " }", 2915 }
2626 "}"])); 2916 }''');
2627 resolve(source); 2917 resolve(source);
2628 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); 2918 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
2629 } 2919 }
2630 2920
2631 void test_typeTestNonType() { 2921 void test_typeTestNonType() {
2632 Source source = addSource(EngineTestCase.createSource(["var A = 0;", "f(var p) {", " if (p is A) {", " }", "}"])); 2922 Source source = addSource(r'''
2923 var A = 0;
2924 f(var p) {
2925 if (p is A) {
2926 }
2927 }''');
2633 resolve(source); 2928 resolve(source);
2634 assertErrors(source, [StaticWarningCode.TYPE_TEST_NON_TYPE]); 2929 assertErrors(source, [StaticWarningCode.TYPE_TEST_NON_TYPE]);
2635 verify([source]); 2930 verify([source]);
2636 } 2931 }
2637 2932
2638 void test_undefinedClass_instanceCreation() { 2933 void test_undefinedClass_instanceCreation() {
2639 Source source = addSource(EngineTestCase.createSource(["f() { new C(); }"])) ; 2934 Source source = addSource("f() { new C(); }");
2640 resolve(source); 2935 resolve(source);
2641 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); 2936 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]);
2642 } 2937 }
2643 2938
2644 void test_undefinedClass_variableDeclaration() { 2939 void test_undefinedClass_variableDeclaration() {
2645 Source source = addSource(EngineTestCase.createSource(["f() { C c; }"])); 2940 Source source = addSource("f() { C c; }");
2646 resolve(source); 2941 resolve(source);
2647 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); 2942 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]);
2648 } 2943 }
2649 2944
2650 void test_undefinedClassBoolean_variableDeclaration() { 2945 void test_undefinedClassBoolean_variableDeclaration() {
2651 Source source = addSource(EngineTestCase.createSource(["f() { boolean v; }"] )); 2946 Source source = addSource("f() { boolean v; }");
2652 resolve(source); 2947 resolve(source);
2653 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]); 2948 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]);
2654 } 2949 }
2655 2950
2656 void test_undefinedGetter_fromLibrary() { 2951 void test_undefinedGetter_fromLibrary() {
2657 Source source1 = addNamedSource("lib.dart", ""); 2952 Source source1 = addNamedSource("lib.dart", "");
2658 Source source2 = addNamedSource("lib2.dart", EngineTestCase.createSource([ 2953 Source source2 = addNamedSource("lib2.dart", r'''
2659 "import 'lib.dart' as lib;", 2954 import 'lib.dart' as lib;
2660 "void f() {", 2955 void f() {
2661 " var g = lib.gg;", 2956 var g = lib.gg;
2662 "}"])); 2957 }''');
2663 resolve(source1); 2958 resolve(source1);
2664 resolve(source2); 2959 resolve(source2);
2665 assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]); 2960 assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]);
2666 verify([source1]); 2961 verify([source1]);
2667 } 2962 }
2668 2963
2669 void test_undefinedIdentifier_for() { 2964 void test_undefinedIdentifier_for() {
2670 Source source = addSource(EngineTestCase.createSource(["f(var l) {", " for (e in l) {", " }", "}"])); 2965 Source source = addSource(r'''
2966 f(var l) {
2967 for (e in l) {
2968 }
2969 }''');
2671 resolve(source); 2970 resolve(source);
2672 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 2971 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
2673 } 2972 }
2674 2973
2675 void test_undefinedIdentifier_function() { 2974 void test_undefinedIdentifier_function() {
2676 Source source = addSource(EngineTestCase.createSource(["int a() => b;"])); 2975 Source source = addSource("int a() => b;");
2677 resolve(source); 2976 resolve(source);
2678 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 2977 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
2679 } 2978 }
2680 2979
2681 void test_undefinedIdentifier_function_prefix() { 2980 void test_undefinedIdentifier_function_prefix() {
2682 addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "cl ass C {}"])); 2981 addNamedSource("/lib.dart", r'''
2683 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as b;", "", "int a() => b;", "b.C c;"])); 2982 library lib;
2983 class C {}''');
2984 Source source = addSource(r'''
2985 import 'lib.dart' as b;
2986
2987 int a() => b;
2988 b.C c;''');
2684 resolve(source); 2989 resolve(source);
2685 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 2990 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
2686 verify([source]); 2991 verify([source]);
2687 } 2992 }
2688 2993
2689 void test_undefinedIdentifier_initializer() { 2994 void test_undefinedIdentifier_initializer() {
2690 Source source = addSource(EngineTestCase.createSource(["var a = b;"])); 2995 Source source = addSource("var a = b;");
2691 resolve(source); 2996 resolve(source);
2692 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 2997 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
2693 } 2998 }
2694 2999
2695 void test_undefinedIdentifier_initializer_prefix() { 3000 void test_undefinedIdentifier_initializer_prefix() {
2696 addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "cl ass C {}"])); 3001 addNamedSource("/lib.dart", r'''
2697 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as b;", "", "var a = b;", "b.C c;"])); 3002 library lib;
3003 class C {}''');
3004 Source source = addSource(r'''
3005 import 'lib.dart' as b;
3006
3007 var a = b;
3008 b.C c;''');
2698 resolve(source); 3009 resolve(source);
2699 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3010 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
2700 } 3011 }
2701 3012
2702 void test_undefinedIdentifier_methodInvocation() { 3013 void test_undefinedIdentifier_methodInvocation() {
2703 Source source = addSource(EngineTestCase.createSource(["f() { C.m(); }"])); 3014 Source source = addSource("f() { C.m(); }");
2704 resolve(source); 3015 resolve(source);
2705 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3016 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
2706 } 3017 }
2707 3018
2708 void test_undefinedIdentifier_private_getter() { 3019 void test_undefinedIdentifier_private_getter() {
2709 addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "cl ass A {", " var _foo;", "}"])); 3020 addNamedSource("/lib.dart", r'''
2710 Source source = addSource(EngineTestCase.createSource([ 3021 library lib;
2711 "import 'lib.dart';", 3022 class A {
2712 "class B extends A {", 3023 var _foo;
2713 " test() {", 3024 }''');
2714 " var v = _foo;", 3025 Source source = addSource(r'''
2715 " }", 3026 import 'lib.dart';
2716 "}"])); 3027 class B extends A {
3028 test() {
3029 var v = _foo;
3030 }
3031 }''');
2717 resolve(source); 3032 resolve(source);
2718 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3033 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
2719 } 3034 }
2720 3035
2721 void test_undefinedIdentifier_private_setter() { 3036 void test_undefinedIdentifier_private_setter() {
2722 addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "cl ass A {", " var _foo;", "}"])); 3037 addNamedSource("/lib.dart", r'''
2723 Source source = addSource(EngineTestCase.createSource([ 3038 library lib;
2724 "import 'lib.dart';", 3039 class A {
2725 "class B extends A {", 3040 var _foo;
2726 " test() {", 3041 }''');
2727 " _foo = 42;", 3042 Source source = addSource(r'''
2728 " }", 3043 import 'lib.dart';
2729 "}"])); 3044 class B extends A {
3045 test() {
3046 _foo = 42;
3047 }
3048 }''');
2730 resolve(source); 3049 resolve(source);
2731 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); 3050 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
2732 } 3051 }
2733 3052
2734 void test_undefinedNamedParameter() { 3053 void test_undefinedNamedParameter() {
2735 Source source = addSource(EngineTestCase.createSource(["f({a, b}) {}", "main () {", " f(c: 1);", "}"])); 3054 Source source = addSource(r'''
3055 f({a, b}) {}
3056 main() {
3057 f(c: 1);
3058 }''');
2736 resolve(source); 3059 resolve(source);
2737 assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]); 3060 assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]);
2738 // no verify(), 'c' is not resolved 3061 // no verify(), 'c' is not resolved
2739 } 3062 }
2740 3063
2741 void test_undefinedSetter() { 3064 void test_undefinedSetter() {
2742 Source source1 = addNamedSource("lib.dart", ""); 3065 Source source1 = addNamedSource("lib.dart", "");
2743 Source source2 = addNamedSource("lib2.dart", EngineTestCase.createSource([ 3066 Source source2 = addNamedSource("lib2.dart", r'''
2744 "import 'lib.dart' as lib;", 3067 import 'lib.dart' as lib;
2745 "void f() {", 3068 void f() {
2746 " lib.gg = null;", 3069 lib.gg = null;
2747 "}"])); 3070 }''');
2748 resolve(source1); 3071 resolve(source1);
2749 resolve(source2); 3072 resolve(source2);
2750 assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]); 3073 assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]);
2751 } 3074 }
2752 3075
2753 void test_undefinedStaticMethodOrGetter_getter() { 3076 void test_undefinedStaticMethodOrGetter_getter() {
2754 Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var p) {", " f(C.m);", "}"])); 3077 Source source = addSource(r'''
3078 class C {}
3079 f(var p) {
3080 f(C.m);
3081 }''');
2755 resolve(source); 3082 resolve(source);
2756 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); 3083 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
2757 } 3084 }
2758 3085
2759 void test_undefinedStaticMethodOrGetter_getter_inSuperclass() { 3086 void test_undefinedStaticMethodOrGetter_getter_inSuperclass() {
2760 Source source = addSource(EngineTestCase.createSource([ 3087 Source source = addSource(r'''
2761 "class S {", 3088 class S {
2762 " static int get g => 0;", 3089 static int get g => 0;
2763 "}", 3090 }
2764 "class C extends S {}", 3091 class C extends S {}
2765 "f(var p) {", 3092 f(var p) {
2766 " f(C.g);", 3093 f(C.g);
2767 "}"])); 3094 }''');
2768 resolve(source); 3095 resolve(source);
2769 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); 3096 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
2770 } 3097 }
2771 3098
2772 void test_undefinedStaticMethodOrGetter_method() { 3099 void test_undefinedStaticMethodOrGetter_method() {
2773 Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var p) {", " f(C.m());", "}"])); 3100 Source source = addSource(r'''
3101 class C {}
3102 f(var p) {
3103 f(C.m());
3104 }''');
2774 resolve(source); 3105 resolve(source);
2775 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); 3106 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
2776 } 3107 }
2777 3108
2778 void test_undefinedStaticMethodOrGetter_method_inSuperclass() { 3109 void test_undefinedStaticMethodOrGetter_method_inSuperclass() {
2779 Source source = addSource(EngineTestCase.createSource([ 3110 Source source = addSource(r'''
2780 "class S {", 3111 class S {
2781 " static m() {}", 3112 static m() {}
2782 "}", 3113 }
2783 "class C extends S {}", 3114 class C extends S {}
2784 "f(var p) {", 3115 f(var p) {
2785 " f(C.m());", 3116 f(C.m());
2786 "}"])); 3117 }''');
2787 resolve(source); 3118 resolve(source);
2788 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); 3119 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
2789 } 3120 }
2790 3121
2791 void test_undefinedStaticMethodOrGetter_setter_inSuperclass() { 3122 void test_undefinedStaticMethodOrGetter_setter_inSuperclass() {
2792 Source source = addSource(EngineTestCase.createSource([ 3123 Source source = addSource(r'''
2793 "class S {", 3124 class S {
2794 " static set s(int i) {}", 3125 static set s(int i) {}
2795 "}", 3126 }
2796 "class C extends S {}", 3127 class C extends S {}
2797 "f(var p) {", 3128 f(var p) {
2798 " f(C.s = 1);", 3129 f(C.s = 1);
2799 "}"])); 3130 }''');
2800 resolve(source); 3131 resolve(source);
2801 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); 3132 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]);
2802 } 3133 }
2803 3134
2804 void test_voidReturnForGetter() { 3135 void test_voidReturnForGetter() {
2805 Source source = addSource(EngineTestCase.createSource(["class S {", " void get value {}", "}"])); 3136 Source source = addSource(r'''
3137 class S {
3138 void get value {}
3139 }''');
2806 resolve(source); 3140 resolve(source);
2807 assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]); 3141 assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]);
2808 } 3142 }
2809 } 3143 }
2810 3144
2811 main() { 3145 main() {
2812 _ut.groupSep = ' | '; 3146 _ut.groupSep = ' | ';
2813 runReflectiveTests(StaticWarningCodeTest); 3147 runReflectiveTests(StaticWarningCodeTest);
2814 } 3148 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/static_type_warning_code_test.dart ('k') | pkg/analyzer/test/generated/test_support.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698