22// for details. All rights reserved. Use of this source code is governed by a
33// BSD-style license that can be found in the LICENSE file.
44
5+ import 'package:analyzer/src/error/codes.dart' ;
56import 'package:test_reflective_loader/test_reflective_loader.dart' ;
67
78import '../driver_resolution.dart' ;
@@ -17,9 +18,11 @@ main() {
1718@reflectiveTest
1819class ListLiteralTest extends DriverResolutionTest {
1920 test_context_noTypeArgs_expression_conflict () async {
20- await resolveTestCode ('''
21+ await assertErrorsInCode ('''
2122List<int> a = ['a'];
22- ''' );
23+ ''' , [
24+ error (StaticWarningCode .LIST_ELEMENT_TYPE_NOT_ASSIGNABLE , 15 , 3 ),
25+ ]);
2326 assertType (findNode.listLiteral ('[' ), 'List<int>' );
2427 }
2528
@@ -38,34 +41,54 @@ List<String> a = [];
3841 }
3942
4043 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 ('''
4253class A<E extends List<int>> {
4354 E a = [];
4455}
45- ''' );
56+ ''' , expectedErrors );
4657 assertType (findNode.listLiteral ('[' ), 'List<dynamic>' );
4758 }
4859
4960 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 ('''
5170class A<E extends List<dynamic>> {
5271 E a = [];
5372}
54- ''' );
73+ ''' , expectedErrors );
5574 assertType (findNode.listLiteral ('[' ), 'List<dynamic>' );
5675 }
5776
5877 test_context_typeArgs_expression_conflictingContext () async {
59- await resolveTestCode ('''
78+ await assertErrorsInCode ('''
6079List<String> a = <int>[0];
61- ''' );
80+ ''' , [
81+ error (StaticTypeWarningCode .INVALID_ASSIGNMENT , 17 , 8 ),
82+ ]);
6283 assertType (findNode.listLiteral ('[' ), 'List<int>' );
6384 }
6485
6586 test_context_typeArgs_expression_conflictingExpression () async {
66- await resolveTestCode ('''
87+ await assertErrorsInCode ('''
6788List<String> a = <String>[0];
68- ''' );
89+ ''' , [
90+ error (StaticWarningCode .LIST_ELEMENT_TYPE_NOT_ASSIGNABLE , 26 , 1 ),
91+ ]);
6992 assertType (findNode.listLiteral ('[' ), 'List<String>' );
7093 }
7194
@@ -87,9 +110,11 @@ List<String> a = <String>['a'];
87110 }
88111
89112 test_context_typeArgs_noElements_conflict () async {
90- await resolveTestCode ('''
113+ await assertErrorsInCode ('''
91114List<String> a = <int>[];
92- ''' );
115+ ''' , [
116+ error (StaticTypeWarningCode .INVALID_ASSIGNMENT , 17 , 7 ),
117+ ]);
93118 assertType (findNode.listLiteral ('[' ), 'List<int>' );
94119 }
95120
@@ -122,16 +147,20 @@ var a = [1, '2', 3];
122147 }
123148
124149 test_noContext_noTypeArgs_expressions_unresolved () async {
125- await resolveTestCode ('''
150+ await assertErrorsInCode ('''
126151var a = [x];
127- ''' );
152+ ''' , [
153+ error (StaticWarningCode .UNDEFINED_IDENTIFIER , 9 , 1 ),
154+ ]);
128155 assertType (findNode.listLiteral ('[' ), 'List<dynamic>' );
129156 }
130157
131158 test_noContext_noTypeArgs_expressions_unresolved_multiple () async {
132- await resolveTestCode ('''
159+ await assertErrorsInCode ('''
133160var a = [0, x, 2];
134- ''' );
161+ ''' , [
162+ error (StaticWarningCode .UNDEFINED_IDENTIFIER , 12 , 1 ),
163+ ]);
135164 assertType (findNode.listLiteral ('[' ), 'List<dynamic>' );
136165 }
137166
@@ -254,7 +283,7 @@ main(L l1) {
254283 }
255284
256285 test_noContext_noTypeArgs_spread_nestedInIf_oneAmbiguous () async {
257- await resolveTestCode ('''
286+ await assertNoErrorsInCode ('''
258287List<int> c = [];
259288dynamic d;
260289var a = [if (0 < 1) ...c else ...d];
@@ -264,7 +293,7 @@ var a = [if (0 < 1) ...c else ...d];
264293
265294 test_noContext_noTypeArgs_spread_nullAware_null () async {
266295 await assertNoErrorsInCode ('''
267- void f(Null a) async {
296+ void f(Null a) {
268297 // ignore:unused_local_variable
269298 var v = [...?a];
270299}
@@ -280,27 +309,27 @@ void f(Null a) async {
280309
281310 test_noContext_noTypeArgs_spread_nullAware_null2 () async {
282311 await assertNoErrorsInCode ('''
283- void f(Null a) async {
312+ void f(Null a) {
284313 // ignore:unused_local_variable
285314 var v = [1, ...?a, 2];
286315}
287316''' );
288- assertType (
289- findNode.listLiteral ('[' ),
290- typeStringByNullability (
291- nullable: 'List<int>' ,
292- legacy: 'List<int>' ,
293- ),
294- );
317+ assertType (findNode.listLiteral ('[' ), 'List<int>' );
295318 }
296319
297320 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 ('''
299328void f<T extends Null>(T a) async {
300329 // ignore:unused_local_variable
301330 var v = [...?a];
302331}
303- ''' );
332+ ''' , expectedErrors );
304333 assertType (
305334 findNode.listLiteral ('[' ),
306335 typeStringByNullability (
@@ -311,7 +340,7 @@ void f<T extends Null>(T a) async {
311340 }
312341
313342 test_noContext_noTypeArgs_spread_typeParameter_implementsIterable () async {
314- await resolveTestCode ('''
343+ await assertNoErrorsInCode ('''
315344void f<T extends List<int>>(T a) {
316345 // ignore:unused_local_variable
317346 var v = [...a];
@@ -321,29 +350,35 @@ void f<T extends List<int>>(T a) {
321350 }
322351
323352 test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable () async {
324- await resolveTestCode ('''
353+ await assertErrorsInCode ('''
325354void f<T extends num>(T a) {
326355 // ignore:unused_local_variable
327356 var v = [...a];
328357}
329- ''' );
358+ ''' , [
359+ error (CompileTimeErrorCode .NOT_ITERABLE_SPREAD , 77 , 1 ),
360+ ]);
330361 assertType (findNode.listLiteral ('[...' ), 'List<dynamic>' );
331362 }
332363
333364 test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable2 () async {
334- await resolveTestCode ('''
365+ await assertErrorsInCode ('''
335366void f<T extends num>(T a) {
336367 // ignore:unused_local_variable
337368 var v = [...a, 0];
338369}
339- ''' );
370+ ''' , [
371+ error (CompileTimeErrorCode .NOT_ITERABLE_SPREAD , 77 , 1 ),
372+ ]);
340373 assertType (findNode.listLiteral ('[...' ), 'List<dynamic>' );
341374 }
342375
343376 test_noContext_typeArgs_expression_conflict () async {
344- await resolveTestCode ('''
377+ await assertErrorsInCode ('''
345378var a = <String>[1];
346- ''' );
379+ ''' , [
380+ error (StaticWarningCode .LIST_ELEMENT_TYPE_NOT_ASSIGNABLE , 17 , 1 ),
381+ ]);
347382 assertType (findNode.listLiteral ('[' ), 'List<String>' );
348383 }
349384
@@ -423,22 +458,26 @@ void f(Never a) async {
423458 }
424459
425460 test_noContext_noTypeArgs_spread_nullAware_never () async {
426- await assertNoErrorsInCode ('''
461+ await assertErrorsInCode ('''
427462void f(Never a) async {
428463 // ignore:unused_local_variable
429- var v = [...a];
464+ var v = [...? a];
430465}
431- ''' );
466+ ''' , [
467+ error (StaticWarningCode .INVALID_NULL_AWARE_OPERATOR , 69 , 4 ),
468+ ]);
432469 assertType (findNode.listLiteral ('[' ), 'List<Never>' );
433470 }
434471
435472 test_noContext_noTypeArgs_spread_nullAware_typeParameter_implementsNever () async {
436- await resolveTestCode ('''
473+ await assertErrorsInCode ('''
437474void f<T extends Never>(T a) async {
438475 // ignore:unused_local_variable
439476 var v = [...?a];
440477}
441- ''' );
478+ ''' , [
479+ error (StaticWarningCode .INVALID_NULL_AWARE_OPERATOR , 82 , 4 ),
480+ ]);
442481 assertType (findNode.listLiteral ('[' ), 'List<Never>' );
443482 }
444483
0 commit comments