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

Side by Side Diff: pkg/analyzer/test/src/task/strong/checker_test.dart

Issue 2391423003: Switch 'analyzer' to 'package:test' and test_reflective_loader ^0.1.0. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.test.src.task.strong.checker_test; 5 library analyzer.test.src.task.strong.checker_test;
6 6
7 import 'package:test_reflective_loader/test_reflective_loader.dart'; 7 import 'package:test_reflective_loader/test_reflective_loader.dart';
8 8
9 import 'strong_test_helper.dart'; 9 import 'strong_test_helper.dart';
10 10
11 void main() { 11 void main() {
12 initStrongModeTests(); 12 defineReflectiveSuite(() {
13 defineReflectiveTests(CheckerTest); 13 defineReflectiveTests(CheckerTest);
14 });
15 }
16
17 void _addMetaLibrary() {
18 addFile(
19 r'''
20 library meta;
21 class _Checked { const _Checked(); }
22 const Object checked = const _Checked();
23
24 class _Virtual { const _Virtual(); }
25 const Object virtual = const _Virtual();
26 ''',
27 name: '/meta.dart');
14 } 28 }
15 29
16 @reflectiveTest 30 @reflectiveTest
17 class CheckerTest { 31 class CheckerTest {
32 void setUp() {
33 doSetUp();
34 }
35
36 void tearDown() {
37 doTearDown();
38 }
39
18 void test_awaitForInCastsStreamElementToVariable() { 40 void test_awaitForInCastsStreamElementToVariable() {
19 checkFile(''' 41 checkFile('''
20 import 'dart:async'; 42 import 'dart:async';
21 main() async { 43 main() async {
22 // Don't choke if sequence is not stream. 44 // Don't choke if sequence is not stream.
23 await for (var i in /*error:FOR_IN_OF_INVALID_TYPE*/1234) {} 45 await for (var i in /*error:FOR_IN_OF_INVALID_TYPE*/1234) {}
24 46
25 // Dynamic cast. 47 // Dynamic cast.
26 await for (String /*info:DYNAMIC_CAST*/s in new Stream<dynamic>()) {} 48 await for (String /*info:DYNAMIC_CAST*/s in new Stream<dynamic>()) {}
27 49
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 m(A a); 254 m(A a);
233 } 255 }
234 abstract class I2 extends I1 {} 256 abstract class I2 extends I1 {}
235 257
236 class T1 implements I2 { 258 class T1 implements I2 {
237 /*error:INVALID_METHOD_OVERRIDE*/m(B a) {} 259 /*error:INVALID_METHOD_OVERRIDE*/m(B a) {}
238 } 260 }
239 '''); 261 ''');
240 } 262 }
241 263
264 void test_compoundAssignment_returnsDynamic() {
265 checkFile(r'''
266 class Foo {
267 operator +(other) => null;
268 }
269
270 main() {
271 var foo = new Foo();
272 foo = /*info:DYNAMIC_CAST*/foo + 1;
273 /*info:DYNAMIC_CAST*/foo += 1;
274 }
275 ''');
276 }
277
242 void test_compoundAssignments() { 278 void test_compoundAssignments() {
243 checkFile(''' 279 checkFile('''
244 class A { 280 class A {
245 A operator *(B b) => null; 281 A operator *(B b) => null;
246 A operator /(B b) => null; 282 A operator /(B b) => null;
247 A operator ~/(B b) => null; 283 A operator ~/(B b) => null;
248 A operator %(B b) => null; 284 A operator %(B b) => null;
249 A operator +(B b) => null; 285 A operator +(B b) => null;
250 A operator -(B b) => null; 286 A operator -(B b) => null;
251 A operator <<(B b) => null; 287 A operator <<(B b) => null;
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 final List<Q> list = /*info:INFERRED_TYPE_LITERAL*/const []; 409 final List<Q> list = /*info:INFERRED_TYPE_LITERAL*/const [];
374 final Map<Q, Iterable<Q>> m = /*info:INFERRED_TYPE_LITERAL*/const {}; 410 final Map<Q, Iterable<Q>> m = /*info:INFERRED_TYPE_LITERAL*/const {};
375 const C(); 411 const C();
376 } 412 }
377 main() { 413 main() {
378 const SetEquality<String>(); 414 const SetEquality<String>();
379 } 415 }
380 '''); 416 ''');
381 } 417 }
382 418
383 void test_compoundAssignment_returnsDynamic() {
384 checkFile(r'''
385 class Foo {
386 operator +(other) => null;
387 }
388
389 main() {
390 var foo = new Foo();
391 foo = /*info:DYNAMIC_CAST*/foo + 1;
392 /*info:DYNAMIC_CAST*/foo += 1;
393 }
394 ''');
395 }
396
397 void test_constructorInvalid() { 419 void test_constructorInvalid() {
398 // Regression test for https://github.com/dart-lang/sdk/issues/26695 420 // Regression test for https://github.com/dart-lang/sdk/issues/26695
399 checkFile(''' 421 checkFile('''
400 class A { 422 class A {
401 B({ /*error:FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR*/this.test: 1.0 }) {} 423 B({ /*error:FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR*/this.test: 1.0 }) {}
402 final double test = 0.0; 424 final double test = 0.0;
403 } 425 }
404 '''); 426 ''');
405 } 427 }
406 428
(...skipping 2761 matching lines...) Expand 10 before | Expand all | Expand 10 after
3168 n(B b); 3190 n(B b);
3169 } 3191 }
3170 abstract class D extends C { 3192 abstract class D extends C {
3171 /*error:INVALID_METHOD_OVERRIDE*/m(B b); 3193 /*error:INVALID_METHOD_OVERRIDE*/m(B b);
3172 n(A a); 3194 n(A a);
3173 } 3195 }
3174 '''); 3196 ''');
3175 check(implicitCasts: false); 3197 check(implicitCasts: false);
3176 } 3198 }
3177 3199
3200 void test_overrideNarrowsType_legalWithChecked() {
3201 // Regression test for https://github.com/dart-lang/sdk/issues/25232
3202 _addMetaLibrary();
3203 checkFile(r'''
3204 import 'meta.dart';
3205 abstract class A { void test(A arg) { } }
3206 abstract class B extends A { void test(@checked B arg) { } }
3207 abstract class X implements A { }
3208 class C extends B with X { }
3209 class D extends B implements A { }
3210 ''');
3211 }
3212
3178 void test_overrideNarrowsType_noDuplicateError() { 3213 void test_overrideNarrowsType_noDuplicateError() {
3179 // Regression test for https://github.com/dart-lang/sdk/issues/25232 3214 // Regression test for https://github.com/dart-lang/sdk/issues/25232
3180 _addMetaLibrary(); 3215 _addMetaLibrary();
3181 checkFile(r''' 3216 checkFile(r'''
3182 import 'meta.dart'; 3217 import 'meta.dart';
3183 abstract class A { void test(A arg) { } } 3218 abstract class A { void test(A arg) { } }
3184 abstract class B extends A { 3219 abstract class B extends A {
3185 /*error:INVALID_METHOD_OVERRIDE*/void test(B arg) { } 3220 /*error:INVALID_METHOD_OVERRIDE*/void test(B arg) { }
3186 } 3221 }
3187 abstract class X implements A { } 3222 abstract class X implements A { }
3188 class C extends B with X { } 3223 class C extends B with X { }
3189 3224
3190 // We treat "implements A" as asking for another check. 3225 // We treat "implements A" as asking for another check.
3191 // This feels inconsistent to me. 3226 // This feels inconsistent to me.
3192 class D /*error:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends B implements A { } 3227 class D /*error:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends B implements A { }
3193 '''); 3228 ''');
3194 } 3229 }
3195 3230
3196 void test_overrideNarrowsType_legalWithChecked() {
3197 // Regression test for https://github.com/dart-lang/sdk/issues/25232
3198 _addMetaLibrary();
3199 checkFile(r'''
3200 import 'meta.dart';
3201 abstract class A { void test(A arg) { } }
3202 abstract class B extends A { void test(@checked B arg) { } }
3203 abstract class X implements A { }
3204 class C extends B with X { }
3205 class D extends B implements A { }
3206 ''');
3207 }
3208
3209 void test_privateOverride() { 3231 void test_privateOverride() {
3210 addFile( 3232 addFile(
3211 ''' 3233 '''
3212 import 'main.dart' as main; 3234 import 'main.dart' as main;
3213 3235
3214 class Base { 3236 class Base {
3215 var f1; 3237 var f1;
3216 var _f2; 3238 var _f2;
3217 var _f3; 3239 var _f3;
3218 get _f4 => null; 3240 get _f4 => null;
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
3938 // Regression test for https://github.com/dart-lang/sdk/issues/25069 3960 // Regression test for https://github.com/dart-lang/sdk/issues/25069
3939 checkFile(''' 3961 checkFile('''
3940 typedef int Foo(); 3962 typedef int Foo();
3941 void foo() {} 3963 void foo() {}
3942 void main () { 3964 void main () {
3943 Foo x = /*error:INVALID_ASSIGNMENT,info:USE_OF_VOID_RESULT*/foo(); 3965 Foo x = /*error:INVALID_ASSIGNMENT,info:USE_OF_VOID_RESULT*/foo();
3944 } 3966 }
3945 '''); 3967 ''');
3946 } 3968 }
3947 } 3969 }
3948
3949 void _addMetaLibrary() {
3950 addFile(r'''
3951 library meta;
3952 class _Checked { const _Checked(); }
3953 const Object checked = const _Checked();
3954
3955 class _Virtual { const _Virtual(); }
3956 const Object virtual = const _Virtual();
3957 ''', name: '/meta.dart');
3958 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698