| Index: pkg/analyzer/test/src/task/strong/checker_test.dart
|
| diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
|
| index 6b1282159d96edcea53843f91b41dbd817d2b62a..2d9475398bf1b3b6264ed3318a2521755977f1bc 100644
|
| --- a/pkg/analyzer/test/src/task/strong/checker_test.dart
|
| +++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
|
| @@ -2,9 +2,6 @@
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| -// TODO(jmesserly): this file needs to be refactored, it's a port from
|
| -// package:dev_compiler's tests
|
| -/// General type checking tests
|
| library analyzer.test.src.task.strong.checker_test;
|
|
|
| import '../../../reflective_tests.dart';
|
| @@ -22,7 +19,7 @@ class CheckerTest {
|
| import 'dart:async';
|
| main() async {
|
| // Don't choke if sequence is not stream.
|
| - await for (var i in /*warning:FOR_IN_OF_INVALID_TYPE*/1234) {}
|
| + await for (var i in /*severe:FOR_IN_OF_INVALID_TYPE*/1234) {}
|
|
|
| // Dynamic cast.
|
| await for (String /*info:DYNAMIC_CAST*/s in new Stream<dynamic>()) {}
|
| @@ -86,7 +83,7 @@ test() {
|
| a = a + b;
|
| a = a + /*warning:ARGUMENT_TYPE_NOT_ASSIGNABLE*/a;
|
| a = a - b;
|
| - b = /*warning:INVALID_ASSIGNMENT*/b - b;
|
| + b = /*severe:INVALID_ASSIGNMENT*/b - b;
|
| a = a << b;
|
| a = a >> b;
|
| a = a & b;
|
| @@ -105,7 +102,7 @@ test() {
|
| p = p && /*info:DYNAMIC_CAST*/c;
|
| p = (/*info:DYNAMIC_CAST*/c) && p;
|
| p = (/*info:DYNAMIC_CAST*/c) && /*info:DYNAMIC_CAST*/c;
|
| - p = /*warning:NON_BOOL_OPERAND*/y && p;
|
| + p = /*severe:NON_BOOL_OPERAND*/y && p;
|
| p = c == y;
|
|
|
| a = a[b];
|
| @@ -299,7 +296,7 @@ test() {
|
| a += b;
|
| a += /*warning:ARGUMENT_TYPE_NOT_ASSIGNABLE*/a;
|
| a -= b;
|
| - /*severe:STATIC_TYPE_ERROR*/b -= /*warning:INVALID_ASSIGNMENT*/b;
|
| + /*severe:STATIC_TYPE_ERROR*/b -= /*severe:INVALID_ASSIGNMENT*/b;
|
| a <<= b;
|
| a >>= b;
|
| a &= b;
|
| @@ -447,8 +444,8 @@ void main() {
|
| int x;
|
| double y;
|
| x = f(3);
|
| - x = /*warning:INVALID_ASSIGNMENT*/f.col(3.0);
|
| - y = /*warning:INVALID_ASSIGNMENT*/f(3);
|
| + x = /*severe:INVALID_ASSIGNMENT*/f.col(3.0);
|
| + y = /*severe:INVALID_ASSIGNMENT*/f(3);
|
| y = f.col(3.0);
|
| f(/*warning:ARGUMENT_TYPE_NOT_ASSIGNABLE*/3.0);
|
| f.col(/*warning:ARGUMENT_TYPE_NOT_ASSIGNABLE*/3);
|
| @@ -483,7 +480,7 @@ void main() {
|
| A f = new B();
|
| /*info:DYNAMIC_INVOKE*/f.col(42.0);
|
| /*info:DYNAMIC_INVOKE*/f.foo(42.0);
|
| - /*info:DYNAMIC_INVOKE*/f./*warning:UNDEFINED_GETTER*/x;
|
| + /*info:DYNAMIC_INVOKE*/f./*severe:UNDEFINED_GETTER*/x;
|
| }
|
| }
|
| ''');
|
| @@ -630,7 +627,7 @@ class Child2 implements Base {
|
| checkFile('''
|
| main() {
|
| // Don't choke if sequence is not iterable.
|
| - for (var i in /*warning:FOR_IN_OF_INVALID_TYPE*/1234) {}
|
| + for (var i in /*severe:FOR_IN_OF_INVALID_TYPE*/1234) {}
|
|
|
| // Dynamic cast.
|
| for (String /*info:DYNAMIC_CAST*/s in <dynamic>[]) {}
|
| @@ -663,7 +660,7 @@ main() {
|
| checkFile('''
|
| foo() {
|
| for (int i = 0; i < 10; i++) {
|
| - i = /*warning:INVALID_ASSIGNMENT*/"hi";
|
| + i = /*severe:INVALID_ASSIGNMENT*/"hi";
|
| }
|
| }
|
| bar() {
|
| @@ -686,14 +683,14 @@ Future foo2() async => x;
|
| Future<int> foo3() async => /*info:DYNAMIC_CAST*/x;
|
| Future<int> foo4() async => new Future<int>.value(/*info:DYNAMIC_CAST*/x);
|
| Future<int> foo5() async =>
|
| - /*warning:RETURN_OF_INVALID_TYPE*/new Future<String>.value(/*info:DYNAMIC_CAST*/x);
|
| + /*severe:RETURN_OF_INVALID_TYPE*/new Future<String>.value(/*info:DYNAMIC_CAST*/x);
|
|
|
| bar1() async { return x; }
|
| Future bar2() async { return x; }
|
| Future<int> bar3() async { return /*info:DYNAMIC_CAST*/x; }
|
| Future<int> bar4() async { return new Future<int>.value(/*info:DYNAMIC_CAST*/x); }
|
| Future<int> bar5() async {
|
| - return /*warning:RETURN_OF_INVALID_TYPE*/new Future<String>.value(/*info:DYNAMIC_CAST*/x);
|
| + return /*severe:RETURN_OF_INVALID_TYPE*/new Future<String>.value(/*info:DYNAMIC_CAST*/x);
|
| }
|
|
|
| int y;
|
| @@ -703,7 +700,7 @@ baz() async {
|
| int a = /*info:DYNAMIC_CAST*/await x;
|
| int b = await y;
|
| int c = await z;
|
| - String d = /*warning:INVALID_ASSIGNMENT*/await z;
|
| + String d = /*severe:INVALID_ASSIGNMENT*/await z;
|
| }
|
|
|
| Future<bool> get issue_264 async {
|
| @@ -726,7 +723,7 @@ dynamic x;
|
| bar1() async* { yield x; }
|
| Stream bar2() async* { yield x; }
|
| Stream<int> bar3() async* { yield /*info:DYNAMIC_CAST*/x; }
|
| -Stream<int> bar4() async* { yield /*warning:YIELD_OF_INVALID_TYPE*/new Stream<int>(); }
|
| +Stream<int> bar4() async* { yield /*severe:YIELD_OF_INVALID_TYPE*/new Stream<int>(); }
|
|
|
| baz1() async* { yield* /*info:DYNAMIC_CAST*/x; }
|
| Stream baz2() async* { yield* /*info:DYNAMIC_CAST*/x; }
|
| @@ -743,7 +740,7 @@ dynamic x;
|
| bar1() sync* { yield x; }
|
| Iterable bar2() sync* { yield x; }
|
| Iterable<int> bar3() sync* { yield /*info:DYNAMIC_CAST*/x; }
|
| -Iterable<int> bar4() sync* { yield /*warning:YIELD_OF_INVALID_TYPE*/bar3(); }
|
| +Iterable<int> bar4() sync* { yield /*severe:YIELD_OF_INVALID_TYPE*/bar3(); }
|
|
|
| baz1() sync* { yield* /*info:DYNAMIC_CAST*/x; }
|
| Iterable baz2() sync* { yield* /*info:DYNAMIC_CAST*/x; }
|
| @@ -1502,91 +1499,91 @@ void main() {
|
|
|
| r = r;
|
| r = o;
|
| - r = /*warning:INVALID_ASSIGNMENT*/n;
|
| - r = /*warning:INVALID_ASSIGNMENT*/rr;
|
| + r = /*severe:INVALID_ASSIGNMENT*/n;
|
| + r = /*severe:INVALID_ASSIGNMENT*/rr;
|
| r = ro;
|
| r = rn;
|
| r = oo;
|
| - r = /*warning:INVALID_ASSIGNMENT*/nn;
|
| - r = /*warning:INVALID_ASSIGNMENT*/nnn;
|
| + r = /*severe:INVALID_ASSIGNMENT*/nn;
|
| + r = /*severe:INVALID_ASSIGNMENT*/nnn;
|
|
|
| o = /*warning:DOWN_CAST_COMPOSITE*/r;
|
| o = o;
|
| - o = /*warning:INVALID_ASSIGNMENT*/n;
|
| - o = /*warning:INVALID_ASSIGNMENT*/rr;
|
| - o = /*warning:INVALID_ASSIGNMENT*/ro;
|
| - o = /*warning:INVALID_ASSIGNMENT*/rn;
|
| + o = /*severe:INVALID_ASSIGNMENT*/n;
|
| + o = /*severe:INVALID_ASSIGNMENT*/rr;
|
| + o = /*severe:INVALID_ASSIGNMENT*/ro;
|
| + o = /*severe:INVALID_ASSIGNMENT*/rn;
|
| o = oo;
|
| - o = /*warning:INVALID_ASSIGNMENT*/nn;
|
| - o = /*warning:INVALID_ASSIGNMENT*/nnn;
|
| + o = /*severe:INVALID_ASSIGNMENT*/nn;
|
| + o = /*severe:INVALID_ASSIGNMENT*/nnn;
|
|
|
| - n = /*warning:INVALID_ASSIGNMENT*/r;
|
| - n = /*warning:INVALID_ASSIGNMENT*/o;
|
| + n = /*severe:INVALID_ASSIGNMENT*/r;
|
| + n = /*severe:INVALID_ASSIGNMENT*/o;
|
| n = n;
|
| - n = /*warning:INVALID_ASSIGNMENT*/rr;
|
| - n = /*warning:INVALID_ASSIGNMENT*/ro;
|
| - n = /*warning:INVALID_ASSIGNMENT*/rn;
|
| - n = /*warning:INVALID_ASSIGNMENT*/oo;
|
| + n = /*severe:INVALID_ASSIGNMENT*/rr;
|
| + n = /*severe:INVALID_ASSIGNMENT*/ro;
|
| + n = /*severe:INVALID_ASSIGNMENT*/rn;
|
| + n = /*severe:INVALID_ASSIGNMENT*/oo;
|
| n = nn;
|
| n = nnn;
|
|
|
| - rr = /*warning:INVALID_ASSIGNMENT*/r;
|
| - rr = /*warning:INVALID_ASSIGNMENT*/o;
|
| - rr = /*warning:INVALID_ASSIGNMENT*/n;
|
| + rr = /*severe:INVALID_ASSIGNMENT*/r;
|
| + rr = /*severe:INVALID_ASSIGNMENT*/o;
|
| + rr = /*severe:INVALID_ASSIGNMENT*/n;
|
| rr = rr;
|
| rr = ro;
|
| - rr = /*warning:INVALID_ASSIGNMENT*/rn;
|
| + rr = /*severe:INVALID_ASSIGNMENT*/rn;
|
| rr = oo;
|
| - rr = /*warning:INVALID_ASSIGNMENT*/nn;
|
| - rr = /*warning:INVALID_ASSIGNMENT*/nnn;
|
| + rr = /*severe:INVALID_ASSIGNMENT*/nn;
|
| + rr = /*severe:INVALID_ASSIGNMENT*/nnn;
|
|
|
| ro = /*warning:DOWN_CAST_COMPOSITE*/r;
|
| - ro = /*warning:INVALID_ASSIGNMENT*/o;
|
| - ro = /*warning:INVALID_ASSIGNMENT*/n;
|
| + ro = /*severe:INVALID_ASSIGNMENT*/o;
|
| + ro = /*severe:INVALID_ASSIGNMENT*/n;
|
| ro = /*warning:DOWN_CAST_COMPOSITE*/rr;
|
| ro = ro;
|
| - ro = /*warning:INVALID_ASSIGNMENT*/rn;
|
| + ro = /*severe:INVALID_ASSIGNMENT*/rn;
|
| ro = oo;
|
| - ro = /*warning:INVALID_ASSIGNMENT*/nn;
|
| - ro = /*warning:INVALID_ASSIGNMENT*/nnn;
|
| + ro = /*severe:INVALID_ASSIGNMENT*/nn;
|
| + ro = /*severe:INVALID_ASSIGNMENT*/nnn;
|
|
|
| rn = /*warning:DOWN_CAST_COMPOSITE*/r;
|
| - rn = /*warning:INVALID_ASSIGNMENT*/o;
|
| - rn = /*warning:INVALID_ASSIGNMENT*/n;
|
| - rn = /*warning:INVALID_ASSIGNMENT*/rr;
|
| - rn = /*warning:INVALID_ASSIGNMENT*/ro;
|
| + rn = /*severe:INVALID_ASSIGNMENT*/o;
|
| + rn = /*severe:INVALID_ASSIGNMENT*/n;
|
| + rn = /*severe:INVALID_ASSIGNMENT*/rr;
|
| + rn = /*severe:INVALID_ASSIGNMENT*/ro;
|
| rn = rn;
|
| - rn = /*warning:INVALID_ASSIGNMENT*/oo;
|
| - rn = /*warning:INVALID_ASSIGNMENT*/nn;
|
| - rn = /*warning:INVALID_ASSIGNMENT*/nnn;
|
| + rn = /*severe:INVALID_ASSIGNMENT*/oo;
|
| + rn = /*severe:INVALID_ASSIGNMENT*/nn;
|
| + rn = /*severe:INVALID_ASSIGNMENT*/nnn;
|
|
|
| oo = /*warning:DOWN_CAST_COMPOSITE*/r;
|
| oo = /*warning:DOWN_CAST_COMPOSITE*/o;
|
| - oo = /*warning:INVALID_ASSIGNMENT*/n;
|
| + oo = /*severe:INVALID_ASSIGNMENT*/n;
|
| oo = /*warning:DOWN_CAST_COMPOSITE*/rr;
|
| oo = /*warning:DOWN_CAST_COMPOSITE*/ro;
|
| - oo = /*warning:INVALID_ASSIGNMENT*/rn;
|
| + oo = /*severe:INVALID_ASSIGNMENT*/rn;
|
| oo = oo;
|
| - oo = /*warning:INVALID_ASSIGNMENT*/nn;
|
| - oo = /*warning:INVALID_ASSIGNMENT*/nnn;
|
| + oo = /*severe:INVALID_ASSIGNMENT*/nn;
|
| + oo = /*severe:INVALID_ASSIGNMENT*/nnn;
|
|
|
| - nn = /*warning:INVALID_ASSIGNMENT*/r;
|
| - nn = /*warning:INVALID_ASSIGNMENT*/o;
|
| + nn = /*severe:INVALID_ASSIGNMENT*/r;
|
| + nn = /*severe:INVALID_ASSIGNMENT*/o;
|
| nn = /*warning:DOWN_CAST_COMPOSITE*/n;
|
| - nn = /*warning:INVALID_ASSIGNMENT*/rr;
|
| - nn = /*warning:INVALID_ASSIGNMENT*/ro;
|
| - nn = /*warning:INVALID_ASSIGNMENT*/rn;
|
| - nn = /*warning:INVALID_ASSIGNMENT*/oo;
|
| + nn = /*severe:INVALID_ASSIGNMENT*/rr;
|
| + nn = /*severe:INVALID_ASSIGNMENT*/ro;
|
| + nn = /*severe:INVALID_ASSIGNMENT*/rn;
|
| + nn = /*severe:INVALID_ASSIGNMENT*/oo;
|
| nn = nn;
|
| nn = nnn;
|
|
|
| - nnn = /*warning:INVALID_ASSIGNMENT*/r;
|
| - nnn = /*warning:INVALID_ASSIGNMENT*/o;
|
| + nnn = /*severe:INVALID_ASSIGNMENT*/r;
|
| + nnn = /*severe:INVALID_ASSIGNMENT*/o;
|
| nnn = /*warning:DOWN_CAST_COMPOSITE*/n;
|
| - nnn = /*warning:INVALID_ASSIGNMENT*/rr;
|
| - nnn = /*warning:INVALID_ASSIGNMENT*/ro;
|
| - nnn = /*warning:INVALID_ASSIGNMENT*/rn;
|
| - nnn = /*warning:INVALID_ASSIGNMENT*/oo;
|
| + nnn = /*severe:INVALID_ASSIGNMENT*/rr;
|
| + nnn = /*severe:INVALID_ASSIGNMENT*/ro;
|
| + nnn = /*severe:INVALID_ASSIGNMENT*/rn;
|
| + nnn = /*severe:INVALID_ASSIGNMENT*/oo;
|
| nnn = /*warning:DOWN_CAST_COMPOSITE*/nn;
|
| nnn = nnn;
|
| }
|
| @@ -1609,7 +1606,7 @@ void main() {
|
| {
|
| I2I f;
|
| f = new A();
|
| - f = /*warning:INVALID_ASSIGNMENT*/new B();
|
| + f = /*severe:INVALID_ASSIGNMENT*/new B();
|
| f = i2i;
|
| f = /*severe:STATIC_TYPE_ERROR*/n2n;
|
| f = /*warning:DOWN_CAST_COMPOSITE*/i2i as Object;
|
| @@ -1617,7 +1614,7 @@ void main() {
|
| }
|
| {
|
| N2N f;
|
| - f = /*warning:INVALID_ASSIGNMENT*/new A();
|
| + f = /*severe:INVALID_ASSIGNMENT*/new A();
|
| f = new B();
|
| f = /*severe:STATIC_TYPE_ERROR*/i2i;
|
| f = n2n;
|
| @@ -1627,18 +1624,18 @@ void main() {
|
| {
|
| A f;
|
| f = new A();
|
| - f = /*warning:INVALID_ASSIGNMENT*/new B();
|
| - f = /*warning:INVALID_ASSIGNMENT*/i2i;
|
| - f = /*warning:INVALID_ASSIGNMENT*/n2n;
|
| + f = /*severe:INVALID_ASSIGNMENT*/new B();
|
| + f = /*severe:INVALID_ASSIGNMENT*/i2i;
|
| + f = /*severe:INVALID_ASSIGNMENT*/n2n;
|
| f = /*info:DOWN_CAST_IMPLICIT*/i2i as Object;
|
| f = /*info:DOWN_CAST_IMPLICIT*/n2n as Function;
|
| }
|
| {
|
| B f;
|
| - f = /*warning:INVALID_ASSIGNMENT*/new A();
|
| + f = /*severe:INVALID_ASSIGNMENT*/new A();
|
| f = new B();
|
| - f = /*warning:INVALID_ASSIGNMENT*/i2i;
|
| - f = /*warning:INVALID_ASSIGNMENT*/n2n;
|
| + f = /*severe:INVALID_ASSIGNMENT*/i2i;
|
| + f = /*severe:INVALID_ASSIGNMENT*/n2n;
|
| f = /*info:DOWN_CAST_IMPLICIT*/i2i as Object;
|
| f = /*info:DOWN_CAST_IMPLICIT*/n2n as Function;
|
| }
|
| @@ -1714,8 +1711,8 @@ void main() {
|
| local = g; // valid
|
|
|
| // Non-generic function cannot subtype a generic one.
|
| - local = /*warning:INVALID_ASSIGNMENT*/(x) => null;
|
| - local = /*warning:INVALID_ASSIGNMENT*/nonGenericFn;
|
| + local = /*severe:INVALID_ASSIGNMENT*/(x) => null;
|
| + local = /*severe:INVALID_ASSIGNMENT*/nonGenericFn;
|
| }
|
| {
|
| Iterable/*<R>*/ f/*<P, R>*/(List/*<P>*/ p) => null;
|
| @@ -1730,8 +1727,8 @@ void main() {
|
| local2 = /*warning:DOWN_CAST_COMPOSITE*/local;
|
|
|
| // Non-generic function cannot subtype a generic one.
|
| - local = /*warning:INVALID_ASSIGNMENT*/(x) => null;
|
| - local = /*warning:INVALID_ASSIGNMENT*/nonGenericFn;
|
| + local = /*severe:INVALID_ASSIGNMENT*/(x) => null;
|
| + local = /*severe:INVALID_ASSIGNMENT*/nonGenericFn;
|
| }
|
| }
|
| ''');
|
| @@ -1880,22 +1877,22 @@ main() {
|
| if (b) {}
|
| if (/*info:DYNAMIC_CAST*/dyn) {}
|
| if (/*info:DOWN_CAST_IMPLICIT*/obj) {}
|
| - if (/*warning:NON_BOOL_CONDITION*/i) {}
|
| + if (/*severe:NON_BOOL_CONDITION*/i) {}
|
|
|
| while (b) {}
|
| while (/*info:DYNAMIC_CAST*/dyn) {}
|
| while (/*info:DOWN_CAST_IMPLICIT*/obj) {}
|
| - while (/*warning:NON_BOOL_CONDITION*/i) {}
|
| + while (/*severe:NON_BOOL_CONDITION*/i) {}
|
|
|
| do {} while (b);
|
| do {} while (/*info:DYNAMIC_CAST*/dyn);
|
| do {} while (/*info:DOWN_CAST_IMPLICIT*/obj);
|
| - do {} while (/*warning:NON_BOOL_CONDITION*/i);
|
| + do {} while (/*severe:NON_BOOL_CONDITION*/i);
|
|
|
| for (;b;) {}
|
| for (;/*info:DYNAMIC_CAST*/dyn;) {}
|
| for (;/*info:DOWN_CAST_IMPLICIT*/obj;) {}
|
| - for (;/*warning:NON_BOOL_CONDITION*/i;) {}
|
| + for (;/*severe:NON_BOOL_CONDITION*/i;) {}
|
| }
|
| ''');
|
| }
|
| @@ -1903,7 +1900,9 @@ main() {
|
| void test_implicitCasts() {
|
| addFile('num n; int i = /*info:ASSIGNMENT_CAST*/n;');
|
| check();
|
| - addFile('num n; int i = /*severe:ASSIGNMENT_CAST*/n;');
|
| + // TODO(jmesserly): should not be emitting the hint as well as the error.
|
| + addFile(
|
| + 'num n; int i = /*info:ASSIGNMENT_CAST,severe:INVALID_ASSIGNMENT*/n;');
|
| check(implicitCasts: false);
|
| }
|
|
|
| @@ -1920,8 +1919,8 @@ class Base {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Base implements I {}
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Base implements I {}
|
| ''');
|
| }
|
|
|
| @@ -2080,8 +2079,8 @@ class M {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - extends Object with /*severe:INVALID_METHOD_OVERRIDE*/M
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + extends Object with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M
|
| implements I {}
|
| ''');
|
| }
|
| @@ -2104,12 +2103,12 @@ class M2 {
|
| int x;
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| - with /*severe:INVALID_METHOD_OVERRIDE*/M1 {}
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T2 extends Base
|
| - with /*severe:INVALID_METHOD_OVERRIDE*/M1, /*severe:INVALID_FIELD_OVERRIDE*/M2 {}
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T3 extends Base
|
| - with /*severe:INVALID_FIELD_OVERRIDE*/M2, /*severe:INVALID_METHOD_OVERRIDE*/M1 {}
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| + with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M1 {}
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T2 extends Base
|
| + with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M1, /*severe:INVALID_FIELD_OVERRIDE*/M2 {}
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T3 extends Base
|
| + with /*severe:INVALID_FIELD_OVERRIDE*/M2, /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M1 {}
|
| ''');
|
| }
|
|
|
| @@ -2131,9 +2130,9 @@ class M2 {
|
| int x;
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| with M1,
|
| - /*severe:INVALID_METHOD_OVERRIDE,severe:INVALID_FIELD_OVERRIDE*/M2 {}
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN,severe:INVALID_FIELD_OVERRIDE*/M2 {}
|
| ''');
|
| }
|
|
|
| @@ -2161,8 +2160,8 @@ class M3 {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| - with M1, /*severe:INVALID_METHOD_OVERRIDE*/M2, M3 {}
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| + with M1, /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M2, M3 {}
|
| ''');
|
| }
|
|
|
| @@ -2182,16 +2181,16 @@ class I1 {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Base
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Base
|
| implements I1 {}
|
|
|
| class T2 extends Base implements I1 {
|
| m(a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T3
|
| - extends Object with /*severe:INVALID_METHOD_OVERRIDE*/Base
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T3
|
| + extends Object with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/Base
|
| implements I1 {}
|
|
|
| class T4 extends Object with Base implements I1 {
|
| @@ -2264,9 +2263,9 @@ class A <S extends Returns<S>, T extends Returns<T>> {
|
| S s;
|
| T t;
|
| if (b) {
|
| - return /*warning:RETURN_OF_INVALID_TYPE*/b ? s : t;
|
| + return /*severe:RETURN_OF_INVALID_TYPE*/b ? s : t;
|
| } else {
|
| - return /*warning:RETURN_OF_INVALID_TYPE*/s ?? t;
|
| + return /*severe:RETURN_OF_INVALID_TYPE*/s ?? t;
|
| }
|
| }
|
| }
|
| @@ -2275,7 +2274,7 @@ class B<S, T extends S> {
|
| T t;
|
| S s;
|
| int test(bool b) {
|
| - return /*warning:RETURN_OF_INVALID_TYPE*/b ? t : s;
|
| + return /*severe:RETURN_OF_INVALID_TYPE*/b ? t : s;
|
| }
|
| }
|
|
|
| @@ -2286,7 +2285,7 @@ class C {
|
| int test1(bool b) {
|
| List<int> li;
|
| List<double> ld;
|
| - return /*warning:RETURN_OF_INVALID_TYPE*/b ? li : ld;
|
| + return /*severe:RETURN_OF_INVALID_TYPE*/b ? li : ld;
|
| }
|
| // TODO(leafp): This case isn't handled yet. This test checks
|
| // the case where two related classes are instantiated with related
|
| @@ -2295,7 +2294,7 @@ class C {
|
| List<int> li;
|
| Iterable<double> id;
|
| int x =
|
| - /*info:ASSIGNMENT_CAST should be warning:INVALID_ASSIGNMENT*/
|
| + /*info:ASSIGNMENT_CAST should be severe:INVALID_ASSIGNMENT*/
|
| b ? li : id;
|
| return /*warning:DOWN_CAST_COMPOSITE should be pass*/b ? li : id;
|
| }
|
| @@ -2378,8 +2377,8 @@ class M {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| - with /*severe:INVALID_METHOD_OVERRIDE*/M {}
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| + with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M {}
|
| ''');
|
| }
|
|
|
| @@ -2399,7 +2398,7 @@ class M {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Base
|
| with M {}
|
| ''');
|
| }
|
| @@ -2418,8 +2417,8 @@ class M {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - extends Object with /*severe:INVALID_METHOD_OVERRIDE*/M
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + extends Object with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M
|
| implements I2 {}
|
| ''');
|
| }
|
| @@ -2438,8 +2437,8 @@ class M {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - extends Object with /*severe:INVALID_METHOD_OVERRIDE*/M
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + extends Object with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M
|
| implements I2 {}
|
| ''');
|
| }
|
| @@ -2458,8 +2457,8 @@ class M {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - extends Object with /*severe:INVALID_METHOD_OVERRIDE*/M
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + extends Object with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M
|
| implements I2 {}
|
| ''');
|
| }
|
| @@ -2485,9 +2484,9 @@ class M {
|
| // Here we want to report both, because the error location is
|
| // different.
|
| // TODO(sigmund): should we merge these as well?
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Base
|
| - with /*severe:INVALID_METHOD_OVERRIDE*/M
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Base
|
| + with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M
|
| implements I1 {}
|
| ''');
|
| }
|
| @@ -2512,11 +2511,11 @@ class Parent1 extends Grandparent {
|
| class Parent2 extends Grandparent {}
|
|
|
| // Note: otherwise both errors would be reported on this line
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Parent1
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Parent1
|
| implements I1 {}
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T2
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Parent2
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T2
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Parent2
|
| implements I1 {}
|
| ''');
|
| }
|
| @@ -2542,9 +2541,9 @@ class M2 {
|
| // Here we want to report both, because the error location is
|
| // different.
|
| // TODO(sigmund): should we merge these as well?
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Object
|
| - with /*severe:INVALID_METHOD_OVERRIDE*/M1,
|
| - /*severe:INVALID_METHOD_OVERRIDE*/M2
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1 extends Object
|
| + with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M1,
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M2
|
| implements I1 {}
|
| ''');
|
| }
|
| @@ -2572,8 +2571,8 @@ class T1 extends Base implements I1 {
|
|
|
| // If there is no error in the class, we do report the error at
|
| // the base class:
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T2
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Base
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T2
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Base
|
| implements I1 {}
|
| ''');
|
| }
|
| @@ -2597,8 +2596,8 @@ class T1 extends Object with M implements I1 {
|
| /*warning:INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE*/B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T2
|
| - extends Object with /*severe:INVALID_METHOD_OVERRIDE*/M
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T2
|
| + extends Object with /*severe:INVALID_METHOD_OVERRIDE_FROM_MIXIN*/M
|
| implements I1 {}
|
| ''');
|
| }
|
| @@ -2732,7 +2731,7 @@ void main() {
|
| }
|
| {
|
| lOfAs = /*warning:DOWN_CAST_COMPOSITE*/mOfDs;
|
| - lOfAs = /*warning:INVALID_ASSIGNMENT*/mOfOs;
|
| + lOfAs = /*severe:INVALID_ASSIGNMENT*/mOfOs;
|
| lOfAs = mOfAs;
|
| lOfAs = /*warning:DOWN_CAST_COMPOSITE*/lOfDs;
|
| lOfAs = /*info:DOWN_CAST_IMPLICIT*/lOfOs;
|
| @@ -2754,7 +2753,7 @@ void main() {
|
| mOfOs = mOfAs;
|
| mOfOs = /*info:DOWN_CAST_IMPLICIT*/lOfDs;
|
| mOfOs = /*info:DOWN_CAST_IMPLICIT*/lOfOs;
|
| - mOfOs = /*warning:INVALID_ASSIGNMENT*/lOfAs;
|
| + mOfOs = /*severe:INVALID_ASSIGNMENT*/lOfAs;
|
| mOfOs = new M<Object>(); // Reset type propagation.
|
| }
|
| {
|
| @@ -2801,13 +2800,13 @@ void voidFn() => null;
|
| class A {
|
| set a(y) => 4;
|
| set b(y) => voidFn();
|
| - void set c(y) => /*warning:RETURN_OF_INVALID_TYPE*/4;
|
| + void set c(y) => /*severe:RETURN_OF_INVALID_TYPE*/4;
|
| void set d(y) => voidFn();
|
| /*warning:NON_VOID_RETURN_FOR_SETTER*/int set e(y) => 4;
|
| /*warning:NON_VOID_RETURN_FOR_SETTER*/int set f(y) =>
|
| - /*warning:RETURN_OF_INVALID_TYPE*/voidFn();
|
| - set g(y) {return /*warning:RETURN_OF_INVALID_TYPE*/4;}
|
| - void set h(y) {return /*warning:RETURN_OF_INVALID_TYPE*/4;}
|
| + /*severe:RETURN_OF_INVALID_TYPE*/voidFn();
|
| + set g(y) {return /*severe:RETURN_OF_INVALID_TYPE*/4;}
|
| + void set h(y) {return /*severe:RETURN_OF_INVALID_TYPE*/4;}
|
| /*warning:NON_VOID_RETURN_FOR_SETTER*/int set i(y) {return 4;}
|
| }
|
| ''');
|
| @@ -2931,8 +2930,8 @@ class Base {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Base implements I2 {}
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Base implements I2 {}
|
| ''');
|
| }
|
|
|
| @@ -2950,8 +2949,8 @@ class Base {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Base
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Base
|
| implements I2 {}
|
| ''');
|
| }
|
| @@ -2970,8 +2969,8 @@ class Base {
|
| m(B a) {}
|
| }
|
|
|
| -class /*warning:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| - /*severe:INVALID_METHOD_OVERRIDE*/extends Base
|
| +class /*severe:INCONSISTENT_METHOD_INHERITANCE*/T1
|
| + /*severe:INVALID_METHOD_OVERRIDE_FROM_BASE*/extends Base
|
| implements I2 {}
|
| ''');
|
| }
|
| @@ -3026,7 +3025,7 @@ void main() {
|
| int i = 42;
|
|
|
| // Check the boolean conversion of the condition.
|
| - print(/*warning:NON_BOOL_CONDITION*/i ? false : true);
|
| + print(/*severe:NON_BOOL_CONDITION*/i ? false : true);
|
| print((/*info:DOWN_CAST_IMPLICIT*/obj) ? false : true);
|
| print((/*info:DYNAMIC_CAST*/dyn) ? false : true);
|
| }
|
| @@ -3084,14 +3083,14 @@ f() {
|
| dynamic x;
|
| if (x is int) {
|
| int y = x;
|
| - String z = /*warning:INVALID_ASSIGNMENT*/x;
|
| + String z = /*severe:INVALID_ASSIGNMENT*/x;
|
| }
|
| }
|
| g() {
|
| Object x;
|
| if (x is int) {
|
| int y = x;
|
| - String z = /*warning:INVALID_ASSIGNMENT*/x;
|
| + String z = /*severe:INVALID_ASSIGNMENT*/x;
|
| }
|
| }
|
| ''');
|
| @@ -3112,9 +3111,9 @@ void main() {
|
| B b;
|
| y = a;
|
| o = a;
|
| - i = /*warning:INVALID_ASSIGNMENT*/a;
|
| - d = /*warning:INVALID_ASSIGNMENT*/a;
|
| - n = /*warning:INVALID_ASSIGNMENT*/a;
|
| + i = /*severe:INVALID_ASSIGNMENT*/a;
|
| + d = /*severe:INVALID_ASSIGNMENT*/a;
|
| + n = /*severe:INVALID_ASSIGNMENT*/a;
|
| a = a;
|
| b = /*info:DOWN_CAST_IMPLICIT*/a;
|
| }
|
| @@ -3138,12 +3137,12 @@ void main() {
|
| C c;
|
| y = b;
|
| o = b;
|
| - i = /*warning:INVALID_ASSIGNMENT*/b;
|
| - d = /*warning:INVALID_ASSIGNMENT*/b;
|
| - n = /*warning:INVALID_ASSIGNMENT*/b;
|
| + i = /*severe:INVALID_ASSIGNMENT*/b;
|
| + d = /*severe:INVALID_ASSIGNMENT*/b;
|
| + n = /*severe:INVALID_ASSIGNMENT*/b;
|
| a = b;
|
| b = b;
|
| - c = /*warning:INVALID_ASSIGNMENT*/b;
|
| + c = /*severe:INVALID_ASSIGNMENT*/b;
|
| }
|
| ''');
|
| }
|
| @@ -3215,12 +3214,12 @@ void main() {
|
| {
|
| left = /*info:DOWN_CAST_IMPLICIT*/top;
|
| left = left;
|
| - left = /*warning:INVALID_ASSIGNMENT*/right;
|
| + left = /*severe:INVALID_ASSIGNMENT*/right;
|
| left = bot;
|
| }
|
| {
|
| right = /*info:DOWN_CAST_IMPLICIT*/top;
|
| - right = /*warning:INVALID_ASSIGNMENT*/left;
|
| + right = /*severe:INVALID_ASSIGNMENT*/left;
|
| right = right;
|
| right = bot;
|
| }
|
| @@ -3253,7 +3252,7 @@ test() {
|
| ~a;
|
| (/*info:DYNAMIC_INVOKE*/~d);
|
|
|
| - !/*warning:NON_BOOL_NEGATION_EXPRESSION*/a;
|
| + !/*severe:NON_BOOL_NEGATION_EXPRESSION*/a;
|
| !/*info:DYNAMIC_CAST*/d;
|
|
|
| -a;
|
| @@ -3302,7 +3301,7 @@ void main() {
|
| typedef int Foo();
|
| void foo() {}
|
| void main () {
|
| - Foo x = /*warning:INVALID_ASSIGNMENT,info:USE_OF_VOID_RESULT*/foo();
|
| + Foo x = /*severe:INVALID_ASSIGNMENT,info:USE_OF_VOID_RESULT*/foo();
|
| }
|
| ''');
|
| }
|
|
|