OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 engine.non_error_resolver_test; | 5 library engine.non_error_resolver_test; |
6 | 6 |
7 import 'package:analyzer/src/generated/ast.dart'; | 7 import 'package:analyzer/src/generated/ast.dart'; |
8 import 'package:analyzer/src/generated/element.dart'; | 8 import 'package:analyzer/src/generated/element.dart'; |
9 import 'package:analyzer/src/generated/error.dart'; | 9 import 'package:analyzer/src/generated/error.dart'; |
10 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode; | 10 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode; |
11 import 'package:analyzer/src/generated/source_io.dart'; | 11 import 'package:analyzer/src/generated/source_io.dart'; |
12 import 'package:unittest/unittest.dart' as _ut; | 12 import 'package:unittest/unittest.dart' as _ut; |
13 | 13 |
14 import '../reflective_tests.dart'; | 14 import '../reflective_tests.dart'; |
15 import 'resolver_test.dart'; | 15 import 'resolver_test.dart'; |
16 import 'test_support.dart'; | 16 import 'test_support.dart'; |
17 | 17 |
18 | |
19 main() { | 18 main() { |
20 _ut.groupSep = ' | '; | 19 _ut.groupSep = ' | '; |
21 runReflectiveTests(NonErrorResolverTest); | 20 runReflectiveTests(NonErrorResolverTest); |
22 } | 21 } |
23 | 22 |
24 @reflectiveTest | 23 @reflectiveTest |
25 class NonErrorResolverTest extends ResolverTestCase { | 24 class NonErrorResolverTest extends ResolverTestCase { |
26 void fail_undefinedEnumConstant() { | 25 void fail_undefinedEnumConstant() { |
27 Source source = addSource(r''' | 26 Source source = addSource(r''' |
28 enum E { ONE } | 27 enum E { ONE } |
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
756 abstract class A { | 755 abstract class A { |
757 /// [p] | 756 /// [p] |
758 A(int p) {} | 757 A(int p) {} |
759 }'''; | 758 }'''; |
760 Source source = addSource(code); | 759 Source source = addSource(code); |
761 resolve(source); | 760 resolve(source); |
762 assertNoErrors(source); | 761 assertNoErrors(source); |
763 verify([source]); | 762 verify([source]); |
764 CompilationUnit unit = analysisContext.parseCompilationUnit(source); | 763 CompilationUnit unit = analysisContext.parseCompilationUnit(source); |
765 { | 764 { |
766 SimpleIdentifier ref = | 765 SimpleIdentifier ref = EngineTestCase.findNode( |
767 EngineTestCase.findNode(unit, code, "p]", (node) => node is SimpleIden
tifier); | 766 unit, code, "p]", (node) => node is SimpleIdentifier); |
768 EngineTestCase.assertInstanceOf( | 767 EngineTestCase.assertInstanceOf((obj) => obj is ParameterElement, |
769 (obj) => obj is ParameterElement, | 768 ParameterElement, ref.staticElement); |
770 ParameterElement, | |
771 ref.staticElement); | |
772 } | 769 } |
773 } | 770 } |
774 | 771 |
775 void test_commentReference_beforeFunction_blockBody() { | 772 void test_commentReference_beforeFunction_blockBody() { |
776 String code = r''' | 773 String code = r''' |
777 /// [p] | 774 /// [p] |
778 foo(int p) { | 775 foo(int p) { |
779 }'''; | 776 }'''; |
780 Source source = addSource(code); | 777 Source source = addSource(code); |
781 resolve(source); | 778 resolve(source); |
782 assertNoErrors(source); | 779 assertNoErrors(source); |
783 verify([source]); | 780 verify([source]); |
784 CompilationUnit unit = analysisContext.parseCompilationUnit(source); | 781 CompilationUnit unit = analysisContext.parseCompilationUnit(source); |
785 SimpleIdentifier ref = | 782 SimpleIdentifier ref = EngineTestCase.findNode( |
786 EngineTestCase.findNode(unit, code, "p]", (node) => node is SimpleIdenti
fier); | 783 unit, code, "p]", (node) => node is SimpleIdentifier); |
787 EngineTestCase.assertInstanceOf( | 784 EngineTestCase.assertInstanceOf( |
788 (obj) => obj is ParameterElement, | 785 (obj) => obj is ParameterElement, ParameterElement, ref.staticElement); |
789 ParameterElement, | |
790 ref.staticElement); | |
791 } | 786 } |
792 | 787 |
793 void test_commentReference_beforeFunction_expressionBody() { | 788 void test_commentReference_beforeFunction_expressionBody() { |
794 String code = r''' | 789 String code = r''' |
795 /// [p] | 790 /// [p] |
796 foo(int p) => null;'''; | 791 foo(int p) => null;'''; |
797 Source source = addSource(code); | 792 Source source = addSource(code); |
798 resolve(source); | 793 resolve(source); |
799 assertNoErrors(source); | 794 assertNoErrors(source); |
800 verify([source]); | 795 verify([source]); |
801 CompilationUnit unit = analysisContext.parseCompilationUnit(source); | 796 CompilationUnit unit = analysisContext.parseCompilationUnit(source); |
802 SimpleIdentifier ref = | 797 SimpleIdentifier ref = EngineTestCase.findNode( |
803 EngineTestCase.findNode(unit, code, "p]", (node) => node is SimpleIdenti
fier); | 798 unit, code, "p]", (node) => node is SimpleIdentifier); |
804 EngineTestCase.assertInstanceOf( | 799 EngineTestCase.assertInstanceOf( |
805 (obj) => obj is ParameterElement, | 800 (obj) => obj is ParameterElement, ParameterElement, ref.staticElement); |
806 ParameterElement, | |
807 ref.staticElement); | |
808 } | 801 } |
809 | 802 |
810 void test_commentReference_beforeMethod() { | 803 void test_commentReference_beforeMethod() { |
811 String code = r''' | 804 String code = r''' |
812 abstract class A { | 805 abstract class A { |
813 /// [p1] | 806 /// [p1] |
814 ma(int p1) {} | 807 ma(int p1) {} |
815 /// [p2] | 808 /// [p2] |
816 mb(int p2); | 809 mb(int p2); |
817 }'''; | 810 }'''; |
818 Source source = addSource(code); | 811 Source source = addSource(code); |
819 resolve(source); | 812 resolve(source); |
820 assertNoErrors(source); | 813 assertNoErrors(source); |
821 verify([source]); | 814 verify([source]); |
822 CompilationUnit unit = analysisContext.parseCompilationUnit(source); | 815 CompilationUnit unit = analysisContext.parseCompilationUnit(source); |
823 { | 816 { |
824 SimpleIdentifier ref = | 817 SimpleIdentifier ref = EngineTestCase.findNode( |
825 EngineTestCase.findNode(unit, code, "p1]", (node) => node is SimpleIde
ntifier); | 818 unit, code, "p1]", (node) => node is SimpleIdentifier); |
826 EngineTestCase.assertInstanceOf( | 819 EngineTestCase.assertInstanceOf((obj) => obj is ParameterElement, |
827 (obj) => obj is ParameterElement, | 820 ParameterElement, ref.staticElement); |
828 ParameterElement, | |
829 ref.staticElement); | |
830 } | 821 } |
831 { | 822 { |
832 SimpleIdentifier ref = | 823 SimpleIdentifier ref = EngineTestCase.findNode( |
833 EngineTestCase.findNode(unit, code, "p2]", (node) => node is SimpleIde
ntifier); | 824 unit, code, "p2]", (node) => node is SimpleIdentifier); |
834 EngineTestCase.assertInstanceOf( | 825 EngineTestCase.assertInstanceOf((obj) => obj is ParameterElement, |
835 (obj) => obj is ParameterElement, | 826 ParameterElement, ref.staticElement); |
836 ParameterElement, | |
837 ref.staticElement); | |
838 } | 827 } |
839 } | 828 } |
840 | 829 |
841 void test_commentReference_class() { | 830 void test_commentReference_class() { |
842 String code = r''' | 831 String code = r''' |
843 /// [foo] | 832 /// [foo] |
844 class A { | 833 class A { |
845 foo() {} | 834 foo() {} |
846 }'''; | 835 }'''; |
847 Source source = addSource(code); | 836 Source source = addSource(code); |
848 resolve(source); | 837 resolve(source); |
849 assertNoErrors(source); | 838 assertNoErrors(source); |
850 verify([source]); | 839 verify([source]); |
851 CompilationUnit unit = analysisContext.parseCompilationUnit(source); | 840 CompilationUnit unit = analysisContext.parseCompilationUnit(source); |
852 SimpleIdentifier ref = EngineTestCase.findNode( | 841 SimpleIdentifier ref = EngineTestCase.findNode( |
853 unit, | 842 unit, code, "foo]", (node) => node is SimpleIdentifier); |
854 code, | |
855 "foo]", | |
856 (node) => node is SimpleIdentifier); | |
857 EngineTestCase.assertInstanceOf( | 843 EngineTestCase.assertInstanceOf( |
858 (obj) => obj is MethodElement, | 844 (obj) => obj is MethodElement, MethodElement, ref.staticElement); |
859 MethodElement, | |
860 ref.staticElement); | |
861 } | 845 } |
862 | 846 |
863 void test_commentReference_setter() { | 847 void test_commentReference_setter() { |
864 String code = r''' | 848 String code = r''' |
865 class A { | 849 class A { |
866 /// [x] in A | 850 /// [x] in A |
867 mA() {} | 851 mA() {} |
868 set x(value) {} | 852 set x(value) {} |
869 } | 853 } |
870 class B extends A { | 854 class B extends A { |
871 /// [x] in B | 855 /// [x] in B |
872 mB() {} | 856 mB() {} |
873 } | 857 } |
874 '''; | 858 '''; |
875 Source source = addSource(code); | 859 Source source = addSource(code); |
876 resolve(source); | 860 resolve(source); |
877 assertNoErrors(source); | 861 assertNoErrors(source); |
878 verify([source]); | 862 verify([source]); |
879 CompilationUnit unit = analysisContext.parseCompilationUnit(source); | 863 CompilationUnit unit = analysisContext.parseCompilationUnit(source); |
880 { | 864 { |
881 SimpleIdentifier ref = EngineTestCase.findNode( | 865 SimpleIdentifier ref = EngineTestCase.findNode( |
882 unit, | 866 unit, code, "x] in A", (node) => node is SimpleIdentifier); |
883 code, | 867 EngineTestCase.assertInstanceOf((obj) => obj is PropertyAccessorElement, |
884 "x] in A", | 868 PropertyAccessorElement, ref.staticElement); |
885 (node) => node is SimpleIdentifier); | |
886 EngineTestCase.assertInstanceOf( | |
887 (obj) => obj is PropertyAccessorElement, | |
888 PropertyAccessorElement, | |
889 ref.staticElement); | |
890 } | 869 } |
891 { | 870 { |
892 SimpleIdentifier ref = EngineTestCase.findNode( | 871 SimpleIdentifier ref = EngineTestCase.findNode( |
893 unit, | 872 unit, code, "x] in B", (node) => node is SimpleIdentifier); |
894 code, | 873 EngineTestCase.assertInstanceOf((obj) => obj is PropertyAccessorElement, |
895 "x] in B", | 874 PropertyAccessorElement, ref.staticElement); |
896 (node) => node is SimpleIdentifier); | |
897 EngineTestCase.assertInstanceOf( | |
898 (obj) => obj is PropertyAccessorElement, | |
899 PropertyAccessorElement, | |
900 ref.staticElement); | |
901 } | 875 } |
902 } | 876 } |
903 | 877 |
904 void test_concreteClassWithAbstractMember() { | 878 void test_concreteClassWithAbstractMember() { |
905 Source source = addSource(r''' | 879 Source source = addSource(r''' |
906 abstract class A { | 880 abstract class A { |
907 m(); | 881 m(); |
908 }'''); | 882 }'''); |
909 resolve(source); | 883 resolve(source); |
910 assertNoErrors(source); | 884 assertNoErrors(source); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
990 | 964 |
991 void test_constConstructorWithNonConstSuper_unresolved() { | 965 void test_constConstructorWithNonConstSuper_unresolved() { |
992 Source source = addSource(r''' | 966 Source source = addSource(r''' |
993 class A { | 967 class A { |
994 A.a(); | 968 A.a(); |
995 } | 969 } |
996 class B extends A { | 970 class B extends A { |
997 const B(): super(); | 971 const B(): super(); |
998 }'''); | 972 }'''); |
999 resolve(source); | 973 resolve(source); |
1000 assertErrors( | 974 assertErrors(source, [ |
1001 source, | 975 CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT |
1002 [CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT]); | 976 ]); |
1003 verify([source]); | 977 verify([source]); |
1004 } | 978 } |
1005 | 979 |
1006 void test_constConstructorWithNonFinalField_finalInstanceVar() { | 980 void test_constConstructorWithNonFinalField_finalInstanceVar() { |
1007 Source source = addSource(r''' | 981 Source source = addSource(r''' |
1008 class A { | 982 class A { |
1009 final int x = 0; | 983 final int x = 0; |
1010 const A(); | 984 const A(); |
1011 }'''); | 985 }'''); |
1012 resolve(source); | 986 resolve(source); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1044 const A(); | 1018 const A(); |
1045 set x(value) {} | 1019 set x(value) {} |
1046 get x {return 0;} | 1020 get x {return 0;} |
1047 }'''); | 1021 }'''); |
1048 resolve(source); | 1022 resolve(source); |
1049 assertNoErrors(source); | 1023 assertNoErrors(source); |
1050 verify([source]); | 1024 verify([source]); |
1051 } | 1025 } |
1052 | 1026 |
1053 void test_constDeferredClass_new() { | 1027 void test_constDeferredClass_new() { |
1054 resolveWithErrors(<String>[r''' | 1028 resolveWithErrors(<String>[ |
| 1029 r''' |
1055 library lib1; | 1030 library lib1; |
1056 class A { | 1031 class A { |
1057 const A.b(); | 1032 const A.b(); |
1058 }''', r''' | 1033 }''', |
| 1034 r''' |
1059 library root; | 1035 library root; |
1060 import 'lib1.dart' deferred as a; | 1036 import 'lib1.dart' deferred as a; |
1061 main() { | 1037 main() { |
1062 new a.A.b(); | 1038 new a.A.b(); |
1063 }'''], <ErrorCode>[]); | 1039 }''' |
| 1040 ], <ErrorCode>[]); |
1064 } | 1041 } |
1065 | 1042 |
1066 void test_constEval_functionTypeLiteral() { | 1043 void test_constEval_functionTypeLiteral() { |
1067 Source source = addSource(r''' | 1044 Source source = addSource(r''' |
1068 typedef F(); | 1045 typedef F(); |
1069 const C = F;'''); | 1046 const C = F;'''); |
1070 resolve(source); | 1047 resolve(source); |
1071 assertNoErrors(source); | 1048 assertNoErrors(source); |
1072 verify([source]); | 1049 verify([source]); |
1073 } | 1050 } |
(...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1877 verify([source]); | 1854 verify([source]); |
1878 } | 1855 } |
1879 | 1856 |
1880 void test_importDuplicatedLibraryName() { | 1857 void test_importDuplicatedLibraryName() { |
1881 Source source = addSource(r''' | 1858 Source source = addSource(r''' |
1882 library test; | 1859 library test; |
1883 import 'lib.dart'; | 1860 import 'lib.dart'; |
1884 import 'lib.dart';'''); | 1861 import 'lib.dart';'''); |
1885 addNamedSource("/lib.dart", "library lib;"); | 1862 addNamedSource("/lib.dart", "library lib;"); |
1886 resolve(source); | 1863 resolve(source); |
1887 assertErrors( | 1864 assertErrors(source, [ |
1888 source, | 1865 HintCode.UNUSED_IMPORT, |
1889 [HintCode.UNUSED_IMPORT, HintCode.UNUSED_IMPORT, HintCode.DUPLICATE_IMPO
RT]); | 1866 HintCode.UNUSED_IMPORT, |
| 1867 HintCode.DUPLICATE_IMPORT |
| 1868 ]); |
1890 verify([source]); | 1869 verify([source]); |
1891 } | 1870 } |
1892 | 1871 |
1893 void test_importOfNonLibrary_libraryDeclared() { | 1872 void test_importOfNonLibrary_libraryDeclared() { |
1894 Source source = addSource(r''' | 1873 Source source = addSource(r''' |
1895 library lib; | 1874 library lib; |
1896 import 'part.dart'; | 1875 import 'part.dart'; |
1897 A a;'''); | 1876 A a;'''); |
1898 addNamedSource("/part.dart", r''' | 1877 addNamedSource("/part.dart", r''' |
1899 library lib1; | 1878 library lib1; |
(...skipping 914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2814 void test_listElementTypeNotAssignable() { | 2793 void test_listElementTypeNotAssignable() { |
2815 Source source = addSource(r''' | 2794 Source source = addSource(r''' |
2816 var v1 = <int> [42]; | 2795 var v1 = <int> [42]; |
2817 var v2 = const <int> [42];'''); | 2796 var v2 = const <int> [42];'''); |
2818 resolve(source); | 2797 resolve(source); |
2819 assertNoErrors(source); | 2798 assertNoErrors(source); |
2820 verify([source]); | 2799 verify([source]); |
2821 } | 2800 } |
2822 | 2801 |
2823 void test_loadLibraryDefined() { | 2802 void test_loadLibraryDefined() { |
2824 resolveWithErrors(<String>[r''' | 2803 resolveWithErrors(<String>[ |
| 2804 r''' |
2825 library lib1; | 2805 library lib1; |
2826 foo() => 22;''', r''' | 2806 foo() => 22;''', |
| 2807 r''' |
2827 import 'lib1.dart' deferred as other; | 2808 import 'lib1.dart' deferred as other; |
2828 main() { | 2809 main() { |
2829 other.loadLibrary().then((_) => other.foo()); | 2810 other.loadLibrary().then((_) => other.foo()); |
2830 }'''], <ErrorCode>[]); | 2811 }''' |
| 2812 ], <ErrorCode>[]); |
2831 } | 2813 } |
2832 | 2814 |
2833 void test_local_generator_async() { | 2815 void test_local_generator_async() { |
2834 Source source = addSource(''' | 2816 Source source = addSource(''' |
2835 f() { | 2817 f() { |
2836 return () async* { yield 0; }; | 2818 return () async* { yield 0; }; |
2837 } | 2819 } |
2838 '''); | 2820 '''); |
2839 resolve(source); | 2821 resolve(source); |
2840 assertNoErrors(source); | 2822 assertNoErrors(source); |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3136 A() {} | 3118 A() {} |
3137 } | 3119 } |
3138 f() { | 3120 f() { |
3139 new A(); | 3121 new A(); |
3140 }'''); | 3122 }'''); |
3141 resolve(source); | 3123 resolve(source); |
3142 assertNoErrors(source); | 3124 assertNoErrors(source); |
3143 verify([source]); | 3125 verify([source]); |
3144 } | 3126 } |
3145 | 3127 |
3146 void | 3128 void test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcr
etes_getter() { |
3147 test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcre
tes_getter() { | |
3148 Source source = addSource(r''' | 3129 Source source = addSource(r''' |
3149 class A { | 3130 class A { |
3150 int get g => 0; | 3131 int get g => 0; |
3151 } | 3132 } |
3152 abstract class B extends A { | 3133 abstract class B extends A { |
3153 int get g; | 3134 int get g; |
3154 } | 3135 } |
3155 class C extends B {}'''); | 3136 class C extends B {}'''); |
3156 resolve(source); | 3137 resolve(source); |
3157 assertNoErrors(source); | 3138 assertNoErrors(source); |
3158 verify([source]); | 3139 verify([source]); |
3159 } | 3140 } |
3160 | 3141 |
3161 void | 3142 void test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcr
etes_method() { |
3162 test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcre
tes_method() { | |
3163 Source source = addSource(r''' | 3143 Source source = addSource(r''' |
3164 class A { | 3144 class A { |
3165 m(p) {} | 3145 m(p) {} |
3166 } | 3146 } |
3167 abstract class B extends A { | 3147 abstract class B extends A { |
3168 m(p); | 3148 m(p); |
3169 } | 3149 } |
3170 class C extends B {}'''); | 3150 class C extends B {}'''); |
3171 resolve(source); | 3151 resolve(source); |
3172 assertNoErrors(source); | 3152 assertNoErrors(source); |
3173 verify([source]); | 3153 verify([source]); |
3174 } | 3154 } |
3175 | 3155 |
3176 void | 3156 void test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcr
etes_setter() { |
3177 test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcre
tes_setter() { | |
3178 Source source = addSource(r''' | 3157 Source source = addSource(r''' |
3179 class A { | 3158 class A { |
3180 set s(v) {} | 3159 set s(v) {} |
3181 } | 3160 } |
3182 abstract class B extends A { | 3161 abstract class B extends A { |
3183 set s(v); | 3162 set s(v); |
3184 } | 3163 } |
3185 class C extends B {}'''); | 3164 class C extends B {}'''); |
3186 resolve(source); | 3165 resolve(source); |
3187 assertNoErrors(source); | 3166 assertNoErrors(source); |
3188 verify([source]); | 3167 verify([source]); |
3189 } | 3168 } |
3190 | 3169 |
3191 void | 3170 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface()
{ |
3192 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface()
{ | |
3193 // 15979 | 3171 // 15979 |
3194 Source source = addSource(r''' | 3172 Source source = addSource(r''' |
3195 abstract class M {} | 3173 abstract class M {} |
3196 abstract class A {} | 3174 abstract class A {} |
3197 abstract class I { | 3175 abstract class I { |
3198 m(); | 3176 m(); |
3199 } | 3177 } |
3200 abstract class B = A with M implements I;'''); | 3178 abstract class B = A with M implements I;'''); |
3201 resolve(source); | 3179 resolve(source); |
3202 assertNoErrors(source); | 3180 assertNoErrors(source); |
3203 verify([source]); | 3181 verify([source]); |
3204 } | 3182 } |
3205 | 3183 |
3206 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() { | 3184 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() { |
3207 // 15979 | 3185 // 15979 |
3208 Source source = addSource(r''' | 3186 Source source = addSource(r''' |
3209 abstract class M { | 3187 abstract class M { |
3210 m(); | 3188 m(); |
3211 } | 3189 } |
3212 abstract class A {} | 3190 abstract class A {} |
3213 abstract class B = A with M;'''); | 3191 abstract class B = A with M;'''); |
3214 resolve(source); | 3192 resolve(source); |
3215 assertNoErrors(source); | 3193 assertNoErrors(source); |
3216 verify([source]); | 3194 verify([source]); |
3217 } | 3195 } |
3218 | 3196 |
3219 void | 3197 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass(
) { |
3220 test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass()
{ | |
3221 // 15979 | 3198 // 15979 |
3222 Source source = addSource(r''' | 3199 Source source = addSource(r''' |
3223 class M {} | 3200 class M {} |
3224 abstract class A { | 3201 abstract class A { |
3225 m(); | 3202 m(); |
3226 } | 3203 } |
3227 abstract class B = A with M;'''); | 3204 abstract class B = A with M;'''); |
3228 resolve(source); | 3205 resolve(source); |
3229 assertNoErrors(source); | 3206 assertNoErrors(source); |
3230 verify([source]); | 3207 verify([source]); |
(...skipping 1096 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4327 } | 4304 } |
4328 class _InvertedCodec<T2, S2> extends Codec<T2, S2> { | 4305 class _InvertedCodec<T2, S2> extends Codec<T2, S2> { |
4329 _InvertedCodec(Codec<S2, T2> codec); | 4306 _InvertedCodec(Codec<S2, T2> codec); |
4330 }'''); | 4307 }'''); |
4331 resolve(source); | 4308 resolve(source); |
4332 assertNoErrors(source); | 4309 assertNoErrors(source); |
4333 verify([source]); | 4310 verify([source]); |
4334 } | 4311 } |
4335 | 4312 |
4336 void test_sharedDeferredPrefix() { | 4313 void test_sharedDeferredPrefix() { |
4337 resolveWithErrors(<String>[r''' | 4314 resolveWithErrors(<String>[ |
| 4315 r''' |
4338 library lib1; | 4316 library lib1; |
4339 f1() {}''', r''' | 4317 f1() {}''', |
| 4318 r''' |
4340 library lib2; | 4319 library lib2; |
4341 f2() {}''', r''' | 4320 f2() {}''', |
| 4321 r''' |
4342 library lib3; | 4322 library lib3; |
4343 f3() {}''', r''' | 4323 f3() {}''', |
| 4324 r''' |
4344 library root; | 4325 library root; |
4345 import 'lib1.dart' deferred as lib1; | 4326 import 'lib1.dart' deferred as lib1; |
4346 import 'lib2.dart' as lib; | 4327 import 'lib2.dart' as lib; |
4347 import 'lib3.dart' as lib; | 4328 import 'lib3.dart' as lib; |
4348 main() { lib1.f1(); lib.f2(); lib.f3(); }'''], <ErrorCode>[]); | 4329 main() { lib1.f1(); lib.f2(); lib.f3(); }''' |
| 4330 ], <ErrorCode>[]); |
4349 } | 4331 } |
4350 | 4332 |
4351 void test_staticAccessToInstanceMember_annotation() { | 4333 void test_staticAccessToInstanceMember_annotation() { |
4352 Source source = addSource(r''' | 4334 Source source = addSource(r''' |
4353 class A { | 4335 class A { |
4354 const A.name(); | 4336 const A.name(); |
4355 } | 4337 } |
4356 @A.name() | 4338 @A.name() |
4357 main() { | 4339 main() { |
4358 }'''); | 4340 }'''); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4482 void test_typePromotion_booleanAnd_useInRight() { | 4464 void test_typePromotion_booleanAnd_useInRight() { |
4483 Source source = addSource(r''' | 4465 Source source = addSource(r''' |
4484 main(Object p) { | 4466 main(Object p) { |
4485 p is String && p.length != 0; | 4467 p is String && p.length != 0; |
4486 }'''); | 4468 }'''); |
4487 resolve(source); | 4469 resolve(source); |
4488 assertNoErrors(source); | 4470 assertNoErrors(source); |
4489 verify([source]); | 4471 verify([source]); |
4490 } | 4472 } |
4491 | 4473 |
4492 void | 4474 void test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_noAssignm
ent() { |
4493 test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_noAssignme
nt() { | |
4494 Source source = addSource(r''' | 4475 Source source = addSource(r''' |
4495 callMe(f()) { f(); } | 4476 callMe(f()) { f(); } |
4496 main(Object p) { | 4477 main(Object p) { |
4497 (p is String) && callMe(() { p.length; }); | 4478 (p is String) && callMe(() { p.length; }); |
4498 }'''); | 4479 }'''); |
4499 resolve(source); | 4480 resolve(source); |
4500 assertNoErrors(source); | 4481 assertNoErrors(source); |
4501 verify([source]); | 4482 verify([source]); |
4502 } | 4483 } |
4503 | 4484 |
(...skipping 16 matching lines...) Expand all Loading... |
4520 void test_typePromotion_conditional_useInThen() { | 4501 void test_typePromotion_conditional_useInThen() { |
4521 Source source = addSource(r''' | 4502 Source source = addSource(r''' |
4522 main(Object p) { | 4503 main(Object p) { |
4523 p is String ? p.length : 0; | 4504 p is String ? p.length : 0; |
4524 }'''); | 4505 }'''); |
4525 resolve(source); | 4506 resolve(source); |
4526 assertNoErrors(source); | 4507 assertNoErrors(source); |
4527 verify([source]); | 4508 verify([source]); |
4528 } | 4509 } |
4529 | 4510 |
4530 void | 4511 void test_typePromotion_conditional_useInThen_accessedInClosure_noAssignment()
{ |
4531 test_typePromotion_conditional_useInThen_accessedInClosure_noAssignment()
{ | |
4532 Source source = addSource(r''' | 4512 Source source = addSource(r''' |
4533 callMe(f()) { f(); } | 4513 callMe(f()) { f(); } |
4534 main(Object p) { | 4514 main(Object p) { |
4535 p is String ? callMe(() { p.length; }) : 0; | 4515 p is String ? callMe(() { p.length; }) : 0; |
4536 }'''); | 4516 }'''); |
4537 resolve(source); | 4517 resolve(source); |
4538 assertNoErrors(source); | 4518 assertNoErrors(source); |
4539 verify([source]); | 4519 verify([source]); |
4540 } | 4520 } |
4541 | 4521 |
(...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5366 void test_yieldInNonGenerator_syncStar() { | 5346 void test_yieldInNonGenerator_syncStar() { |
5367 Source source = addSource(r''' | 5347 Source source = addSource(r''' |
5368 f() sync* { | 5348 f() sync* { |
5369 yield 0; | 5349 yield 0; |
5370 }'''); | 5350 }'''); |
5371 resolve(source); | 5351 resolve(source); |
5372 assertNoErrors(source); | 5352 assertNoErrors(source); |
5373 verify([source]); | 5353 verify([source]); |
5374 } | 5354 } |
5375 | 5355 |
5376 void _check_wrongNumberOfParametersForOperator(String name, | 5356 void _check_wrongNumberOfParametersForOperator( |
5377 String parameters) { | 5357 String name, String parameters) { |
5378 Source source = addSource(""" | 5358 Source source = addSource(""" |
5379 class A { | 5359 class A { |
5380 operator $name($parameters) {} | 5360 operator $name($parameters) {} |
5381 }"""); | 5361 }"""); |
5382 resolve(source); | 5362 resolve(source); |
5383 assertNoErrors(source); | 5363 assertNoErrors(source); |
5384 verify([source]); | 5364 verify([source]); |
5385 reset(); | 5365 reset(); |
5386 } | 5366 } |
5387 | 5367 |
5388 void _check_wrongNumberOfParametersForOperator1(String name) { | 5368 void _check_wrongNumberOfParametersForOperator1(String name) { |
5389 _check_wrongNumberOfParametersForOperator(name, "a"); | 5369 _check_wrongNumberOfParametersForOperator(name, "a"); |
5390 } | 5370 } |
5391 } | 5371 } |
OLD | NEW |