2
2
// for details. All rights reserved. Use of this source code is governed by a
3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
+ import 'package:analyzer/src/error/codes.dart' ;
5
6
import 'package:test_reflective_loader/test_reflective_loader.dart' ;
6
7
7
8
import '../driver_resolution.dart' ;
@@ -17,9 +18,11 @@ main() {
17
18
@reflectiveTest
18
19
class ListLiteralTest extends DriverResolutionTest {
19
20
test_context_noTypeArgs_expression_conflict () async {
20
- await resolveTestCode ('''
21
+ await assertErrorsInCode ('''
21
22
List<int> a = ['a'];
22
- ''' );
23
+ ''' , [
24
+ error (StaticWarningCode .LIST_ELEMENT_TYPE_NOT_ASSIGNABLE , 15 , 3 ),
25
+ ]);
23
26
assertType (findNode.listLiteral ('[' ), 'List<int>' );
24
27
}
25
28
@@ -38,34 +41,54 @@ List<String> a = [];
38
41
}
39
42
40
43
test_context_noTypeArgs_noElements_typeParameter () async {
41
- await resolveTestCode ('''
44
+ var expectedErrors = expectedErrorsByNullability (
45
+ nullable: [
46
+ error (StaticTypeWarningCode .INVALID_ASSIGNMENT , 39 , 2 ),
47
+ ],
48
+ legacy: [
49
+ error (CompileTimeErrorCode .INVALID_CAST_LITERAL_LIST , 39 , 2 ),
50
+ ],
51
+ );
52
+ await assertErrorsInCode ('''
42
53
class A<E extends List<int>> {
43
54
E a = [];
44
55
}
45
- ''' );
56
+ ''' , expectedErrors );
46
57
assertType (findNode.listLiteral ('[' ), 'List<dynamic>' );
47
58
}
48
59
49
60
test_context_noTypeArgs_noElements_typeParameter_dynamic () async {
50
- await resolveTestCode ('''
61
+ var expectedErrors = expectedErrorsByNullability (
62
+ nullable: [
63
+ error (StaticTypeWarningCode .INVALID_ASSIGNMENT , 43 , 2 ),
64
+ ],
65
+ legacy: [
66
+ error (CompileTimeErrorCode .INVALID_CAST_LITERAL_LIST , 43 , 2 ),
67
+ ],
68
+ );
69
+ await assertErrorsInCode ('''
51
70
class A<E extends List<dynamic>> {
52
71
E a = [];
53
72
}
54
- ''' );
73
+ ''' , expectedErrors );
55
74
assertType (findNode.listLiteral ('[' ), 'List<dynamic>' );
56
75
}
57
76
58
77
test_context_typeArgs_expression_conflictingContext () async {
59
- await resolveTestCode ('''
78
+ await assertErrorsInCode ('''
60
79
List<String> a = <int>[0];
61
- ''' );
80
+ ''' , [
81
+ error (StaticTypeWarningCode .INVALID_ASSIGNMENT , 17 , 8 ),
82
+ ]);
62
83
assertType (findNode.listLiteral ('[' ), 'List<int>' );
63
84
}
64
85
65
86
test_context_typeArgs_expression_conflictingExpression () async {
66
- await resolveTestCode ('''
87
+ await assertErrorsInCode ('''
67
88
List<String> a = <String>[0];
68
- ''' );
89
+ ''' , [
90
+ error (StaticWarningCode .LIST_ELEMENT_TYPE_NOT_ASSIGNABLE , 26 , 1 ),
91
+ ]);
69
92
assertType (findNode.listLiteral ('[' ), 'List<String>' );
70
93
}
71
94
@@ -87,9 +110,11 @@ List<String> a = <String>['a'];
87
110
}
88
111
89
112
test_context_typeArgs_noElements_conflict () async {
90
- await resolveTestCode ('''
113
+ await assertErrorsInCode ('''
91
114
List<String> a = <int>[];
92
- ''' );
115
+ ''' , [
116
+ error (StaticTypeWarningCode .INVALID_ASSIGNMENT , 17 , 7 ),
117
+ ]);
93
118
assertType (findNode.listLiteral ('[' ), 'List<int>' );
94
119
}
95
120
@@ -122,16 +147,20 @@ var a = [1, '2', 3];
122
147
}
123
148
124
149
test_noContext_noTypeArgs_expressions_unresolved () async {
125
- await resolveTestCode ('''
150
+ await assertErrorsInCode ('''
126
151
var a = [x];
127
- ''' );
152
+ ''' , [
153
+ error (StaticWarningCode .UNDEFINED_IDENTIFIER , 9 , 1 ),
154
+ ]);
128
155
assertType (findNode.listLiteral ('[' ), 'List<dynamic>' );
129
156
}
130
157
131
158
test_noContext_noTypeArgs_expressions_unresolved_multiple () async {
132
- await resolveTestCode ('''
159
+ await assertErrorsInCode ('''
133
160
var a = [0, x, 2];
134
- ''' );
161
+ ''' , [
162
+ error (StaticWarningCode .UNDEFINED_IDENTIFIER , 12 , 1 ),
163
+ ]);
135
164
assertType (findNode.listLiteral ('[' ), 'List<dynamic>' );
136
165
}
137
166
@@ -254,7 +283,7 @@ main(L l1) {
254
283
}
255
284
256
285
test_noContext_noTypeArgs_spread_nestedInIf_oneAmbiguous () async {
257
- await resolveTestCode ('''
286
+ await assertNoErrorsInCode ('''
258
287
List<int> c = [];
259
288
dynamic d;
260
289
var a = [if (0 < 1) ...c else ...d];
@@ -264,7 +293,7 @@ var a = [if (0 < 1) ...c else ...d];
264
293
265
294
test_noContext_noTypeArgs_spread_nullAware_null () async {
266
295
await assertNoErrorsInCode ('''
267
- void f(Null a) async {
296
+ void f(Null a) {
268
297
// ignore:unused_local_variable
269
298
var v = [...?a];
270
299
}
@@ -280,27 +309,27 @@ void f(Null a) async {
280
309
281
310
test_noContext_noTypeArgs_spread_nullAware_null2 () async {
282
311
await assertNoErrorsInCode ('''
283
- void f(Null a) async {
312
+ void f(Null a) {
284
313
// ignore:unused_local_variable
285
314
var v = [1, ...?a, 2];
286
315
}
287
316
''' );
288
- assertType (
289
- findNode.listLiteral ('[' ),
290
- typeStringByNullability (
291
- nullable: 'List<int>' ,
292
- legacy: 'List<int>' ,
293
- ),
294
- );
317
+ assertType (findNode.listLiteral ('[' ), 'List<int>' );
295
318
}
296
319
297
320
test_noContext_noTypeArgs_spread_nullAware_typeParameter_implementsNull () async {
298
- await resolveTestCode ('''
321
+ var expectedErrors = expectedErrorsByNullability (
322
+ nullable: [],
323
+ legacy: [
324
+ error (CompileTimeErrorCode .NOT_ITERABLE_SPREAD , 85 , 1 ),
325
+ ],
326
+ );
327
+ await assertErrorsInCode ('''
299
328
void f<T extends Null>(T a) async {
300
329
// ignore:unused_local_variable
301
330
var v = [...?a];
302
331
}
303
- ''' );
332
+ ''' , expectedErrors );
304
333
assertType (
305
334
findNode.listLiteral ('[' ),
306
335
typeStringByNullability (
@@ -311,7 +340,7 @@ void f<T extends Null>(T a) async {
311
340
}
312
341
313
342
test_noContext_noTypeArgs_spread_typeParameter_implementsIterable () async {
314
- await resolveTestCode ('''
343
+ await assertNoErrorsInCode ('''
315
344
void f<T extends List<int>>(T a) {
316
345
// ignore:unused_local_variable
317
346
var v = [...a];
@@ -321,29 +350,35 @@ void f<T extends List<int>>(T a) {
321
350
}
322
351
323
352
test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable () async {
324
- await resolveTestCode ('''
353
+ await assertErrorsInCode ('''
325
354
void f<T extends num>(T a) {
326
355
// ignore:unused_local_variable
327
356
var v = [...a];
328
357
}
329
- ''' );
358
+ ''' , [
359
+ error (CompileTimeErrorCode .NOT_ITERABLE_SPREAD , 77 , 1 ),
360
+ ]);
330
361
assertType (findNode.listLiteral ('[...' ), 'List<dynamic>' );
331
362
}
332
363
333
364
test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable2 () async {
334
- await resolveTestCode ('''
365
+ await assertErrorsInCode ('''
335
366
void f<T extends num>(T a) {
336
367
// ignore:unused_local_variable
337
368
var v = [...a, 0];
338
369
}
339
- ''' );
370
+ ''' , [
371
+ error (CompileTimeErrorCode .NOT_ITERABLE_SPREAD , 77 , 1 ),
372
+ ]);
340
373
assertType (findNode.listLiteral ('[...' ), 'List<dynamic>' );
341
374
}
342
375
343
376
test_noContext_typeArgs_expression_conflict () async {
344
- await resolveTestCode ('''
377
+ await assertErrorsInCode ('''
345
378
var a = <String>[1];
346
- ''' );
379
+ ''' , [
380
+ error (StaticWarningCode .LIST_ELEMENT_TYPE_NOT_ASSIGNABLE , 17 , 1 ),
381
+ ]);
347
382
assertType (findNode.listLiteral ('[' ), 'List<String>' );
348
383
}
349
384
@@ -423,22 +458,26 @@ void f(Never a) async {
423
458
}
424
459
425
460
test_noContext_noTypeArgs_spread_nullAware_never () async {
426
- await assertNoErrorsInCode ('''
461
+ await assertErrorsInCode ('''
427
462
void f(Never a) async {
428
463
// ignore:unused_local_variable
429
- var v = [...a];
464
+ var v = [...? a];
430
465
}
431
- ''' );
466
+ ''' , [
467
+ error (StaticWarningCode .INVALID_NULL_AWARE_OPERATOR , 69 , 4 ),
468
+ ]);
432
469
assertType (findNode.listLiteral ('[' ), 'List<Never>' );
433
470
}
434
471
435
472
test_noContext_noTypeArgs_spread_nullAware_typeParameter_implementsNever () async {
436
- await resolveTestCode ('''
473
+ await assertErrorsInCode ('''
437
474
void f<T extends Never>(T a) async {
438
475
// ignore:unused_local_variable
439
476
var v = [...?a];
440
477
}
441
- ''' );
478
+ ''' , [
479
+ error (StaticWarningCode .INVALID_NULL_AWARE_OPERATOR , 82 , 4 ),
480
+ ]);
442
481
assertType (findNode.listLiteral ('[' ), 'List<Never>' );
443
482
}
444
483
0 commit comments