| OLD | NEW |
| 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 /// General type checking tests | 5 /// General type checking tests |
| 6 library dev_compiler.test.checker_test; | 6 library dev_compiler.test.checker_test; |
| 7 | 7 |
| 8 import 'package:test/test.dart'; | 8 import 'package:test/test.dart'; |
| 9 | 9 |
| 10 import 'package:dev_compiler/src/testing.dart'; | 10 import 'package:dev_compiler/src/testing.dart'; |
| (...skipping 1905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1916 /*severe:InvalidMethodOverride*/C m2(C value) {} | 1916 /*severe:InvalidMethodOverride*/C m2(C value) {} |
| 1917 /*severe:InvalidMethodOverride*/A m3(C value) {} | 1917 /*severe:InvalidMethodOverride*/A m3(C value) {} |
| 1918 C m4(A value) {} | 1918 C m4(A value) {} |
| 1919 /*severe:InvalidMethodOverride*/m5(value) {} | 1919 /*severe:InvalidMethodOverride*/m5(value) {} |
| 1920 /*severe:InvalidMethodOverride*/dynamic m6(dynamic value) {} | 1920 /*severe:InvalidMethodOverride*/dynamic m6(dynamic value) {} |
| 1921 } | 1921 } |
| 1922 ''' | 1922 ''' |
| 1923 }, inferFromOverrides: true); | 1923 }, inferFromOverrides: true); |
| 1924 }); | 1924 }); |
| 1925 | 1925 |
| 1926 test('binary operators', () { | 1926 test('binary and index operators', () { |
| 1927 testChecker({ | 1927 testChecker({ |
| 1928 '/main.dart': ''' | 1928 '/main.dart': ''' |
| 1929 class A { | 1929 class A { |
| 1930 A operator *(B b) {} | 1930 A operator *(B b) {} |
| 1931 A operator /(B b) {} | 1931 A operator /(B b) {} |
| 1932 A operator ~/(B b) {} | 1932 A operator ~/(B b) {} |
| 1933 A operator %(B b) {} | 1933 A operator %(B b) {} |
| 1934 A operator +(B b) {} | 1934 A operator +(B b) {} |
| 1935 A operator -(B b) {} | 1935 A operator -(B b) {} |
| 1936 A operator <<(B b) {} | 1936 A operator <<(B b) {} |
| 1937 A operator >>(B b) {} | 1937 A operator >>(B b) {} |
| 1938 A operator &(B b) {} | 1938 A operator &(B b) {} |
| 1939 A operator ^(B b) {} | 1939 A operator ^(B b) {} |
| 1940 A operator |(B b) {} | 1940 A operator |(B b) {} |
| 1941 A operator[](B b) {} |
| 1941 } | 1942 } |
| 1942 | 1943 |
| 1943 class B { | 1944 class B { |
| 1944 A operator -(B b) {} | 1945 A operator -(B b) {} |
| 1945 } | 1946 } |
| 1946 | 1947 |
| 1947 foo() => new A(); | 1948 foo() => new A(); |
| 1948 | 1949 |
| 1949 test() { | 1950 test() { |
| 1950 A a = new A(); | 1951 A a = new A(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1972 x = x + /*info:DynamicCast*/c; | 1973 x = x + /*info:DynamicCast*/c; |
| 1973 x = x + /*severe:StaticTypeError*/y; | 1974 x = x + /*severe:StaticTypeError*/y; |
| 1974 | 1975 |
| 1975 bool p = true; | 1976 bool p = true; |
| 1976 p = p && p; | 1977 p = p && p; |
| 1977 p = p && /*info:DynamicCast*/c; | 1978 p = p && /*info:DynamicCast*/c; |
| 1978 p = (/*info:DynamicCast*/c) && p; | 1979 p = (/*info:DynamicCast*/c) && p; |
| 1979 p = (/*info:DynamicCast*/c) && /*info:DynamicCast*/c; | 1980 p = (/*info:DynamicCast*/c) && /*info:DynamicCast*/c; |
| 1980 p = (/*severe:StaticTypeError*/y) && p; | 1981 p = (/*severe:StaticTypeError*/y) && p; |
| 1981 p = c == y; | 1982 p = c == y; |
| 1983 |
| 1984 a = a[b]; |
| 1985 a = a[/*info:DynamicCast*/c]; |
| 1986 c = (/*info:DynamicInvoke*/c[b]); |
| 1987 a[/*severe:StaticTypeError*/y]; |
| 1982 } | 1988 } |
| 1983 ''' | 1989 ''' |
| 1984 }); | 1990 }); |
| 1985 }); | 1991 }); |
| 1986 | 1992 |
| 1987 test('compound assignments', () { | 1993 test('compound assignments', () { |
| 1988 testChecker({ | 1994 testChecker({ |
| 1989 '/main.dart': ''' | 1995 '/main.dart': ''' |
| 1990 class A { | 1996 class A { |
| 1991 A operator *(B b) {} | 1997 A operator *(B b) {} |
| 1992 A operator /(B b) {} | 1998 A operator /(B b) {} |
| 1993 A operator ~/(B b) {} | 1999 A operator ~/(B b) {} |
| 1994 A operator %(B b) {} | 2000 A operator %(B b) {} |
| 1995 A operator +(B b) {} | 2001 A operator +(B b) {} |
| 1996 A operator -(B b) {} | 2002 A operator -(B b) {} |
| 1997 A operator <<(B b) {} | 2003 A operator <<(B b) {} |
| 1998 A operator >>(B b) {} | 2004 A operator >>(B b) {} |
| 1999 A operator &(B b) {} | 2005 A operator &(B b) {} |
| 2000 A operator ^(B b) {} | 2006 A operator ^(B b) {} |
| 2001 A operator |(B b) {} | 2007 A operator |(B b) {} |
| 2008 D operator [](B index) {} |
| 2009 void operator []=(B index, D value) {} |
| 2002 } | 2010 } |
| 2003 | 2011 |
| 2004 class B { | 2012 class B { |
| 2005 A operator -(B b) {} | 2013 A operator -(B b) {} |
| 2006 } | 2014 } |
| 2007 | 2015 |
| 2016 class D { |
| 2017 D operator +(D d) {} |
| 2018 } |
| 2019 |
| 2008 foo() => new A(); | 2020 foo() => new A(); |
| 2009 | 2021 |
| 2010 test() { | 2022 test() { |
| 2011 int x = 0; | 2023 int x = 0; |
| 2012 x += 5; | 2024 x += 5; |
| 2013 (/*severe:StaticTypeError*/x += 3.14); | 2025 (/*severe:StaticTypeError*/x += 3.14); |
| 2014 | 2026 |
| 2015 double y = 0.0; | 2027 double y = 0.0; |
| 2016 y += 5; | 2028 y += 5; |
| 2017 y += 3.14; | 2029 y += 3.14; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 2042 a += b; | 2054 a += b; |
| 2043 a += /*severe:StaticTypeError*/a; | 2055 a += /*severe:StaticTypeError*/a; |
| 2044 a -= b; | 2056 a -= b; |
| 2045 (/*severe:StaticTypeError*/b -= b); | 2057 (/*severe:StaticTypeError*/b -= b); |
| 2046 a <<= b; | 2058 a <<= b; |
| 2047 a >>= b; | 2059 a >>= b; |
| 2048 a &= b; | 2060 a &= b; |
| 2049 a ^= b; | 2061 a ^= b; |
| 2050 a |= b; | 2062 a |= b; |
| 2051 (/*info:DynamicInvoke*/c += b); | 2063 (/*info:DynamicInvoke*/c += b); |
| 2064 |
| 2065 var d = new D(); |
| 2066 a[b] += d; |
| 2067 a[/*info:DynamicCast*/c] += d; |
| 2068 a[/*severe:StaticTypeError*/z] += d; |
| 2069 a[b] += /*info:DynamicCast*/c; |
| 2070 a[b] += /*severe:StaticTypeError*/z; |
| 2071 (/*info:DynamicInvoke*/(/*info:DynamicInvoke*/c[b]) += d); |
| 2052 } | 2072 } |
| 2053 ''' | 2073 ''' |
| 2054 }); | 2074 }); |
| 2055 }); | 2075 }); |
| 2056 | 2076 |
| 2057 test('super call placement', () { | 2077 test('super call placement', () { |
| 2058 testChecker({ | 2078 testChecker({ |
| 2059 '/main.dart': ''' | 2079 '/main.dart': ''' |
| 2060 class Base { | 2080 class Base { |
| 2061 var x; | 2081 var x; |
| (...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2925 f = bar as II2D; | 2945 f = bar as II2D; |
| 2926 f = bar as DD2I; | 2946 f = bar as DD2I; |
| 2927 f = bar as DI2D; | 2947 f = bar as DI2D; |
| 2928 f = bar as ID2D; | 2948 f = bar as ID2D; |
| 2929 f = bar as DD2D; | 2949 f = bar as DD2D; |
| 2930 } | 2950 } |
| 2931 ''' | 2951 ''' |
| 2932 }); | 2952 }); |
| 2933 }); | 2953 }); |
| 2934 } | 2954 } |
| OLD | NEW |