| 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 library analyzer.test.src.summary.summary_common; | 5 library analyzer.test.src.summary.summary_common; |
| 6 | 6 |
| 7 import 'package:analyzer/analyzer.dart'; | 7 import 'package:analyzer/analyzer.dart'; |
| 8 import 'package:analyzer/dart/ast/ast.dart'; | 8 import 'package:analyzer/dart/ast/ast.dart'; |
| 9 import 'package:analyzer/error/listener.dart'; | 9 import 'package:analyzer/error/listener.dart'; |
| 10 import 'package:analyzer/src/dart/scanner/reader.dart'; | 10 import 'package:analyzer/src/dart/scanner/reader.dart'; |
| (...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1005 EntityRef xInitializerReturnType = | 1005 EntityRef xInitializerReturnType = |
| 1006 getTypeRefForSlot(findVariable('x').initializer.inferredReturnTypeSlot); | 1006 getTypeRefForSlot(findVariable('x').initializer.inferredReturnTypeSlot); |
| 1007 EntityRef yInitializerReturnType = | 1007 EntityRef yInitializerReturnType = |
| 1008 getTypeRefForSlot(findVariable('y').initializer.inferredReturnTypeSlot); | 1008 getTypeRefForSlot(findVariable('y').initializer.inferredReturnTypeSlot); |
| 1009 expect(xInitializerReturnType.reference, yInitializerReturnType.reference); | 1009 expect(xInitializerReturnType.reference, yInitializerReturnType.reference); |
| 1010 } | 1010 } |
| 1011 | 1011 |
| 1012 test_cascaded_export_hide_hide() { | 1012 test_cascaded_export_hide_hide() { |
| 1013 addNamedSource('/lib1.dart', 'export "lib2.dart" hide C hide B, C;'); | 1013 addNamedSource('/lib1.dart', 'export "lib2.dart" hide C hide B, C;'); |
| 1014 addNamedSource('/lib2.dart', 'class A {} class B {} class C {}'); | 1014 addNamedSource('/lib2.dart', 'class A {} class B {} class C {}'); |
| 1015 serializeLibraryText( | 1015 serializeLibraryText(''' |
| 1016 ''' | |
| 1017 import 'lib1.dart'; | 1016 import 'lib1.dart'; |
| 1018 A a; | 1017 A a; |
| 1019 B b; | 1018 B b; |
| 1020 C c; | 1019 C c; |
| 1021 ''', | 1020 ''', allowErrors: true); |
| 1022 allowErrors: true); | |
| 1023 checkTypeRef(findVariable('a').type, absUri('/lib2.dart'), 'A'); | 1021 checkTypeRef(findVariable('a').type, absUri('/lib2.dart'), 'A'); |
| 1024 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); | 1022 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); |
| 1025 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); | 1023 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); |
| 1026 } | 1024 } |
| 1027 | 1025 |
| 1028 test_cascaded_export_hide_show() { | 1026 test_cascaded_export_hide_show() { |
| 1029 addNamedSource('/lib1.dart', 'export "lib2.dart" hide C show A, C;'); | 1027 addNamedSource('/lib1.dart', 'export "lib2.dart" hide C show A, C;'); |
| 1030 addNamedSource('/lib2.dart', 'class A {} class B {} class C {}'); | 1028 addNamedSource('/lib2.dart', 'class A {} class B {} class C {}'); |
| 1031 serializeLibraryText( | 1029 serializeLibraryText(''' |
| 1032 ''' | |
| 1033 import 'lib1.dart'; | 1030 import 'lib1.dart'; |
| 1034 A a; | 1031 A a; |
| 1035 B b; | 1032 B b; |
| 1036 C c; | 1033 C c; |
| 1037 ''', | 1034 ''', allowErrors: true); |
| 1038 allowErrors: true); | |
| 1039 checkTypeRef(findVariable('a').type, absUri('/lib2.dart'), 'A'); | 1035 checkTypeRef(findVariable('a').type, absUri('/lib2.dart'), 'A'); |
| 1040 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); | 1036 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); |
| 1041 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); | 1037 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); |
| 1042 } | 1038 } |
| 1043 | 1039 |
| 1044 test_cascaded_export_show_hide() { | 1040 test_cascaded_export_show_hide() { |
| 1045 addNamedSource('/lib1.dart', 'export "lib2.dart" show A, B hide B, C;'); | 1041 addNamedSource('/lib1.dart', 'export "lib2.dart" show A, B hide B, C;'); |
| 1046 addNamedSource('/lib2.dart', 'class A {} class B {} class C {}'); | 1042 addNamedSource('/lib2.dart', 'class A {} class B {} class C {}'); |
| 1047 serializeLibraryText( | 1043 serializeLibraryText(''' |
| 1048 ''' | |
| 1049 import 'lib1.dart'; | 1044 import 'lib1.dart'; |
| 1050 A a; | 1045 A a; |
| 1051 B b; | 1046 B b; |
| 1052 C c; | 1047 C c; |
| 1053 ''', | 1048 ''', allowErrors: true); |
| 1054 allowErrors: true); | |
| 1055 checkTypeRef(findVariable('a').type, absUri('/lib2.dart'), 'A'); | 1049 checkTypeRef(findVariable('a').type, absUri('/lib2.dart'), 'A'); |
| 1056 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); | 1050 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); |
| 1057 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); | 1051 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); |
| 1058 } | 1052 } |
| 1059 | 1053 |
| 1060 test_cascaded_export_show_show() { | 1054 test_cascaded_export_show_show() { |
| 1061 addNamedSource('/lib1.dart', 'export "lib2.dart" show A, B show A, C;'); | 1055 addNamedSource('/lib1.dart', 'export "lib2.dart" show A, B show A, C;'); |
| 1062 addNamedSource('/lib2.dart', 'class A {} class B {} class C {}'); | 1056 addNamedSource('/lib2.dart', 'class A {} class B {} class C {}'); |
| 1063 serializeLibraryText( | 1057 serializeLibraryText(''' |
| 1064 ''' | |
| 1065 import 'lib1.dart'; | 1058 import 'lib1.dart'; |
| 1066 A a; | 1059 A a; |
| 1067 B b; | 1060 B b; |
| 1068 C c; | 1061 C c; |
| 1069 ''', | 1062 ''', allowErrors: true); |
| 1070 allowErrors: true); | |
| 1071 checkTypeRef(findVariable('a').type, absUri('/lib2.dart'), 'A'); | 1063 checkTypeRef(findVariable('a').type, absUri('/lib2.dart'), 'A'); |
| 1072 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); | 1064 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); |
| 1073 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); | 1065 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); |
| 1074 } | 1066 } |
| 1075 | 1067 |
| 1076 test_cascaded_import_hide_hide() { | 1068 test_cascaded_import_hide_hide() { |
| 1077 addNamedSource('/lib.dart', 'class A {} class B {} class C {}'); | 1069 addNamedSource('/lib.dart', 'class A {} class B {} class C {}'); |
| 1078 serializeLibraryText( | 1070 serializeLibraryText(''' |
| 1079 ''' | |
| 1080 import 'lib.dart' hide C hide B, C; | 1071 import 'lib.dart' hide C hide B, C; |
| 1081 A a; | 1072 A a; |
| 1082 B b; | 1073 B b; |
| 1083 C c; | 1074 C c; |
| 1084 ''', | 1075 ''', allowErrors: true); |
| 1085 allowErrors: true); | |
| 1086 checkTypeRef(findVariable('a').type, absUri('/lib.dart'), 'A'); | 1076 checkTypeRef(findVariable('a').type, absUri('/lib.dart'), 'A'); |
| 1087 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); | 1077 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); |
| 1088 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); | 1078 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); |
| 1089 } | 1079 } |
| 1090 | 1080 |
| 1091 test_cascaded_import_hide_show() { | 1081 test_cascaded_import_hide_show() { |
| 1092 addNamedSource('/lib.dart', 'class A {} class B {} class C {}'); | 1082 addNamedSource('/lib.dart', 'class A {} class B {} class C {}'); |
| 1093 serializeLibraryText( | 1083 serializeLibraryText(''' |
| 1094 ''' | |
| 1095 import 'lib.dart' hide C show A, C; | 1084 import 'lib.dart' hide C show A, C; |
| 1096 A a; | 1085 A a; |
| 1097 B b; | 1086 B b; |
| 1098 C c; | 1087 C c; |
| 1099 ''', | 1088 ''', allowErrors: true); |
| 1100 allowErrors: true); | |
| 1101 checkTypeRef(findVariable('a').type, absUri('/lib.dart'), 'A'); | 1089 checkTypeRef(findVariable('a').type, absUri('/lib.dart'), 'A'); |
| 1102 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); | 1090 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); |
| 1103 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); | 1091 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); |
| 1104 } | 1092 } |
| 1105 | 1093 |
| 1106 test_cascaded_import_show_hide() { | 1094 test_cascaded_import_show_hide() { |
| 1107 addNamedSource('/lib.dart', 'class A {} class B {} class C {}'); | 1095 addNamedSource('/lib.dart', 'class A {} class B {} class C {}'); |
| 1108 serializeLibraryText( | 1096 serializeLibraryText(''' |
| 1109 ''' | |
| 1110 import 'lib.dart' show A, B hide B, C; | 1097 import 'lib.dart' show A, B hide B, C; |
| 1111 A a; | 1098 A a; |
| 1112 B b; | 1099 B b; |
| 1113 C c; | 1100 C c; |
| 1114 ''', | 1101 ''', allowErrors: true); |
| 1115 allowErrors: true); | |
| 1116 checkTypeRef(findVariable('a').type, absUri('/lib.dart'), 'A'); | 1102 checkTypeRef(findVariable('a').type, absUri('/lib.dart'), 'A'); |
| 1117 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); | 1103 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); |
| 1118 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); | 1104 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); |
| 1119 } | 1105 } |
| 1120 | 1106 |
| 1121 test_cascaded_import_show_show() { | 1107 test_cascaded_import_show_show() { |
| 1122 addNamedSource('/lib.dart', 'class A {} class B {} class C {}'); | 1108 addNamedSource('/lib.dart', 'class A {} class B {} class C {}'); |
| 1123 serializeLibraryText( | 1109 serializeLibraryText(''' |
| 1124 ''' | |
| 1125 import 'lib.dart' show A, B show A, C; | 1110 import 'lib.dart' show A, B show A, C; |
| 1126 A a; | 1111 A a; |
| 1127 B b; | 1112 B b; |
| 1128 C c; | 1113 C c; |
| 1129 ''', | 1114 ''', allowErrors: true); |
| 1130 allowErrors: true); | |
| 1131 checkTypeRef(findVariable('a').type, absUri('/lib.dart'), 'A'); | 1115 checkTypeRef(findVariable('a').type, absUri('/lib.dart'), 'A'); |
| 1132 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); | 1116 checkUnresolvedTypeRef(findVariable('b').type, null, 'B'); |
| 1133 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); | 1117 checkUnresolvedTypeRef(findVariable('c').type, null, 'C'); |
| 1134 } | 1118 } |
| 1135 | 1119 |
| 1136 test_class_abstract() { | 1120 test_class_abstract() { |
| 1137 UnlinkedClass cls = serializeClassText('abstract class C {}'); | 1121 UnlinkedClass cls = serializeClassText('abstract class C {}'); |
| 1138 expect(cls.isAbstract, true); | 1122 expect(cls.isAbstract, true); |
| 1139 } | 1123 } |
| 1140 | 1124 |
| (...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2025 numTypeParameters: 2) | 2009 numTypeParameters: 2) |
| 2026 ], | 2010 ], |
| 2027 numTypeArguments: 2); | 2011 numTypeArguments: 2); |
| 2028 checkTypeRef(r.typeArguments[0], 'dart:core', 'int'); | 2012 checkTypeRef(r.typeArguments[0], 'dart:core', 'int'); |
| 2029 checkTypeRef(r.typeArguments[1], 'dart:core', 'String'); | 2013 checkTypeRef(r.typeArguments[1], 'dart:core', 'String'); |
| 2030 } | 2014 } |
| 2031 ]); | 2015 ]); |
| 2032 } | 2016 } |
| 2033 | 2017 |
| 2034 test_constExpr_invokeConstructor_generic_named_imported() { | 2018 test_constExpr_invokeConstructor_generic_named_imported() { |
| 2035 addNamedSource( | 2019 addNamedSource('/a.dart', ''' |
| 2036 '/a.dart', | |
| 2037 ''' | |
| 2038 class C<K, V> { | 2020 class C<K, V> { |
| 2039 const C.named(); | 2021 const C.named(); |
| 2040 } | 2022 } |
| 2041 '''); | 2023 '''); |
| 2042 UnlinkedVariable variable = serializeVariableText(''' | 2024 UnlinkedVariable variable = serializeVariableText(''' |
| 2043 import 'a.dart'; | 2025 import 'a.dart'; |
| 2044 const v = const C<int, String>.named(); | 2026 const v = const C<int, String>.named(); |
| 2045 '''); | 2027 '''); |
| 2046 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2028 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2047 UnlinkedExprOperation.invokeConstructor, | 2029 UnlinkedExprOperation.invokeConstructor, |
| 2048 ], ints: [ | 2030 ], ints: [ |
| 2049 0, | 2031 0, |
| 2050 0 | 2032 0 |
| 2051 ], referenceValidators: [ | 2033 ], referenceValidators: [ |
| 2052 (EntityRef r) { | 2034 (EntityRef r) { |
| 2053 checkTypeRef(r, null, 'named', | 2035 checkTypeRef(r, null, 'named', |
| 2054 expectedKind: ReferenceKind.constructor, | 2036 expectedKind: ReferenceKind.constructor, |
| 2055 prefixExpectations: [ | 2037 prefixExpectations: [ |
| 2056 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2038 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
| 2057 absoluteUri: absUri('/a.dart'), numTypeParameters: 2) | 2039 absoluteUri: absUri('/a.dart'), numTypeParameters: 2) |
| 2058 ], | 2040 ], |
| 2059 numTypeArguments: 2); | 2041 numTypeArguments: 2); |
| 2060 checkTypeRef(r.typeArguments[0], 'dart:core', 'int'); | 2042 checkTypeRef(r.typeArguments[0], 'dart:core', 'int'); |
| 2061 checkTypeRef(r.typeArguments[1], 'dart:core', 'String'); | 2043 checkTypeRef(r.typeArguments[1], 'dart:core', 'String'); |
| 2062 } | 2044 } |
| 2063 ]); | 2045 ]); |
| 2064 } | 2046 } |
| 2065 | 2047 |
| 2066 test_constExpr_invokeConstructor_generic_named_imported_withPrefix() { | 2048 test_constExpr_invokeConstructor_generic_named_imported_withPrefix() { |
| 2067 addNamedSource( | 2049 addNamedSource('/a.dart', ''' |
| 2068 '/a.dart', | |
| 2069 ''' | |
| 2070 class C<K, V> { | 2050 class C<K, V> { |
| 2071 const C.named(); | 2051 const C.named(); |
| 2072 } | 2052 } |
| 2073 '''); | 2053 '''); |
| 2074 UnlinkedVariable variable = serializeVariableText(''' | 2054 UnlinkedVariable variable = serializeVariableText(''' |
| 2075 import 'a.dart' as p; | 2055 import 'a.dart' as p; |
| 2076 const v = const p.C<int, String>.named(); | 2056 const v = const p.C<int, String>.named(); |
| 2077 '''); | 2057 '''); |
| 2078 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2058 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2079 UnlinkedExprOperation.invokeConstructor, | 2059 UnlinkedExprOperation.invokeConstructor, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2114 expectedKind: ReferenceKind.classOrEnum, | 2094 expectedKind: ReferenceKind.classOrEnum, |
| 2115 numTypeParameters: 2, | 2095 numTypeParameters: 2, |
| 2116 numTypeArguments: 2); | 2096 numTypeArguments: 2); |
| 2117 checkTypeRef(r.typeArguments[0], 'dart:core', 'int'); | 2097 checkTypeRef(r.typeArguments[0], 'dart:core', 'int'); |
| 2118 checkTypeRef(r.typeArguments[1], 'dart:core', 'String'); | 2098 checkTypeRef(r.typeArguments[1], 'dart:core', 'String'); |
| 2119 } | 2099 } |
| 2120 ]); | 2100 ]); |
| 2121 } | 2101 } |
| 2122 | 2102 |
| 2123 test_constExpr_invokeConstructor_generic_unnamed_imported() { | 2103 test_constExpr_invokeConstructor_generic_unnamed_imported() { |
| 2124 addNamedSource( | 2104 addNamedSource('/a.dart', ''' |
| 2125 '/a.dart', | |
| 2126 ''' | |
| 2127 class C<K, V> { | 2105 class C<K, V> { |
| 2128 const C(); | 2106 const C(); |
| 2129 } | 2107 } |
| 2130 '''); | 2108 '''); |
| 2131 UnlinkedVariable variable = serializeVariableText(''' | 2109 UnlinkedVariable variable = serializeVariableText(''' |
| 2132 import 'a.dart'; | 2110 import 'a.dart'; |
| 2133 const v = const C<int, String>(); | 2111 const v = const C<int, String>(); |
| 2134 '''); | 2112 '''); |
| 2135 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2113 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2136 UnlinkedExprOperation.invokeConstructor, | 2114 UnlinkedExprOperation.invokeConstructor, |
| 2137 ], ints: [ | 2115 ], ints: [ |
| 2138 0, | 2116 0, |
| 2139 0 | 2117 0 |
| 2140 ], referenceValidators: [ | 2118 ], referenceValidators: [ |
| 2141 (EntityRef r) { | 2119 (EntityRef r) { |
| 2142 checkTypeRef(r, absUri('/a.dart'), 'C', | 2120 checkTypeRef(r, absUri('/a.dart'), 'C', |
| 2143 expectedKind: ReferenceKind.classOrEnum, | 2121 expectedKind: ReferenceKind.classOrEnum, |
| 2144 numTypeParameters: 2, | 2122 numTypeParameters: 2, |
| 2145 numTypeArguments: 2); | 2123 numTypeArguments: 2); |
| 2146 checkTypeRef(r.typeArguments[0], 'dart:core', 'int'); | 2124 checkTypeRef(r.typeArguments[0], 'dart:core', 'int'); |
| 2147 checkTypeRef(r.typeArguments[1], 'dart:core', 'String'); | 2125 checkTypeRef(r.typeArguments[1], 'dart:core', 'String'); |
| 2148 } | 2126 } |
| 2149 ]); | 2127 ]); |
| 2150 } | 2128 } |
| 2151 | 2129 |
| 2152 test_constExpr_invokeConstructor_generic_unnamed_imported_withPrefix() { | 2130 test_constExpr_invokeConstructor_generic_unnamed_imported_withPrefix() { |
| 2153 addNamedSource( | 2131 addNamedSource('/a.dart', ''' |
| 2154 '/a.dart', | |
| 2155 ''' | |
| 2156 class C<K, V> { | 2132 class C<K, V> { |
| 2157 const C(); | 2133 const C(); |
| 2158 } | 2134 } |
| 2159 '''); | 2135 '''); |
| 2160 UnlinkedVariable variable = serializeVariableText(''' | 2136 UnlinkedVariable variable = serializeVariableText(''' |
| 2161 import 'a.dart' as p; | 2137 import 'a.dart' as p; |
| 2162 const v = const p.C<int, String>(); | 2138 const v = const p.C<int, String>(); |
| 2163 '''); | 2139 '''); |
| 2164 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2140 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2165 UnlinkedExprOperation.invokeConstructor, | 2141 UnlinkedExprOperation.invokeConstructor, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2196 ], referenceValidators: [ | 2172 ], referenceValidators: [ |
| 2197 (EntityRef r) => checkTypeRef(r, null, 'named', | 2173 (EntityRef r) => checkTypeRef(r, null, 'named', |
| 2198 expectedKind: ReferenceKind.constructor, | 2174 expectedKind: ReferenceKind.constructor, |
| 2199 prefixExpectations: [ | 2175 prefixExpectations: [ |
| 2200 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2176 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 2201 ]) | 2177 ]) |
| 2202 ]); | 2178 ]); |
| 2203 } | 2179 } |
| 2204 | 2180 |
| 2205 test_constExpr_invokeConstructor_named_imported() { | 2181 test_constExpr_invokeConstructor_named_imported() { |
| 2206 addNamedSource( | 2182 addNamedSource('/a.dart', ''' |
| 2207 '/a.dart', | |
| 2208 ''' | |
| 2209 class C { | 2183 class C { |
| 2210 const C.named(); | 2184 const C.named(); |
| 2211 } | 2185 } |
| 2212 '''); | 2186 '''); |
| 2213 UnlinkedVariable variable = serializeVariableText(''' | 2187 UnlinkedVariable variable = serializeVariableText(''' |
| 2214 import 'a.dart'; | 2188 import 'a.dart'; |
| 2215 const v = const C.named(); | 2189 const v = const C.named(); |
| 2216 '''); | 2190 '''); |
| 2217 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2191 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2218 UnlinkedExprOperation.invokeConstructor, | 2192 UnlinkedExprOperation.invokeConstructor, |
| 2219 ], ints: [ | 2193 ], ints: [ |
| 2220 0, | 2194 0, |
| 2221 0 | 2195 0 |
| 2222 ], referenceValidators: [ | 2196 ], referenceValidators: [ |
| 2223 (EntityRef r) => checkTypeRef(r, null, 'named', | 2197 (EntityRef r) => checkTypeRef(r, null, 'named', |
| 2224 expectedKind: ReferenceKind.constructor, | 2198 expectedKind: ReferenceKind.constructor, |
| 2225 prefixExpectations: [ | 2199 prefixExpectations: [ |
| 2226 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2200 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
| 2227 absoluteUri: absUri('/a.dart')) | 2201 absoluteUri: absUri('/a.dart')) |
| 2228 ]) | 2202 ]) |
| 2229 ]); | 2203 ]); |
| 2230 } | 2204 } |
| 2231 | 2205 |
| 2232 test_constExpr_invokeConstructor_named_imported_withPrefix() { | 2206 test_constExpr_invokeConstructor_named_imported_withPrefix() { |
| 2233 addNamedSource( | 2207 addNamedSource('/a.dart', ''' |
| 2234 '/a.dart', | |
| 2235 ''' | |
| 2236 class C { | 2208 class C { |
| 2237 const C.named(); | 2209 const C.named(); |
| 2238 } | 2210 } |
| 2239 '''); | 2211 '''); |
| 2240 UnlinkedVariable variable = serializeVariableText(''' | 2212 UnlinkedVariable variable = serializeVariableText(''' |
| 2241 import 'a.dart' as p; | 2213 import 'a.dart' as p; |
| 2242 const v = const p.C.named(); | 2214 const v = const p.C.named(); |
| 2243 '''); | 2215 '''); |
| 2244 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2216 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2245 UnlinkedExprOperation.invokeConstructor, | 2217 UnlinkedExprOperation.invokeConstructor, |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2292 'e', | 2264 'e', |
| 2293 'g', | 2265 'g', |
| 2294 'f' | 2266 'f' |
| 2295 ], referenceValidators: [ | 2267 ], referenceValidators: [ |
| 2296 (EntityRef r) => | 2268 (EntityRef r) => |
| 2297 checkTypeRef(r, null, 'C', expectedKind: ReferenceKind.classOrEnum) | 2269 checkTypeRef(r, null, 'C', expectedKind: ReferenceKind.classOrEnum) |
| 2298 ]); | 2270 ]); |
| 2299 } | 2271 } |
| 2300 | 2272 |
| 2301 test_constExpr_invokeConstructor_unnamed_imported() { | 2273 test_constExpr_invokeConstructor_unnamed_imported() { |
| 2302 addNamedSource( | 2274 addNamedSource('/a.dart', ''' |
| 2303 '/a.dart', | |
| 2304 ''' | |
| 2305 class C { | 2275 class C { |
| 2306 const C(); | 2276 const C(); |
| 2307 } | 2277 } |
| 2308 '''); | 2278 '''); |
| 2309 UnlinkedVariable variable = serializeVariableText(''' | 2279 UnlinkedVariable variable = serializeVariableText(''' |
| 2310 import 'a.dart'; | 2280 import 'a.dart'; |
| 2311 const v = const C(); | 2281 const v = const C(); |
| 2312 '''); | 2282 '''); |
| 2313 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2283 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2314 UnlinkedExprOperation.invokeConstructor, | 2284 UnlinkedExprOperation.invokeConstructor, |
| 2315 ], ints: [ | 2285 ], ints: [ |
| 2316 0, | 2286 0, |
| 2317 0 | 2287 0 |
| 2318 ], referenceValidators: [ | 2288 ], referenceValidators: [ |
| 2319 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'C', | 2289 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'C', |
| 2320 expectedKind: ReferenceKind.classOrEnum) | 2290 expectedKind: ReferenceKind.classOrEnum) |
| 2321 ]); | 2291 ]); |
| 2322 } | 2292 } |
| 2323 | 2293 |
| 2324 test_constExpr_invokeConstructor_unnamed_imported_withPrefix() { | 2294 test_constExpr_invokeConstructor_unnamed_imported_withPrefix() { |
| 2325 addNamedSource( | 2295 addNamedSource('/a.dart', ''' |
| 2326 '/a.dart', | |
| 2327 ''' | |
| 2328 class C { | 2296 class C { |
| 2329 const C(); | 2297 const C(); |
| 2330 } | 2298 } |
| 2331 '''); | 2299 '''); |
| 2332 UnlinkedVariable variable = serializeVariableText(''' | 2300 UnlinkedVariable variable = serializeVariableText(''' |
| 2333 import 'a.dart' as p; | 2301 import 'a.dart' as p; |
| 2334 const v = const p.C(); | 2302 const v = const p.C(); |
| 2335 '''); | 2303 '''); |
| 2336 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2304 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2337 UnlinkedExprOperation.invokeConstructor, | 2305 UnlinkedExprOperation.invokeConstructor, |
| 2338 ], ints: [ | 2306 ], ints: [ |
| 2339 0, | 2307 0, |
| 2340 0 | 2308 0 |
| 2341 ], referenceValidators: [ | 2309 ], referenceValidators: [ |
| 2342 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'C', | 2310 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'C', |
| 2343 expectedKind: ReferenceKind.classOrEnum, | 2311 expectedKind: ReferenceKind.classOrEnum, |
| 2344 prefixExpectations: [ | 2312 prefixExpectations: [ |
| 2345 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2313 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
| 2346 ]) | 2314 ]) |
| 2347 ]); | 2315 ]); |
| 2348 } | 2316 } |
| 2349 | 2317 |
| 2350 test_constExpr_invokeConstructor_unresolved_named() { | 2318 test_constExpr_invokeConstructor_unresolved_named() { |
| 2351 UnlinkedVariable variable = serializeVariableText( | 2319 UnlinkedVariable variable = serializeVariableText(''' |
| 2352 ''' | |
| 2353 class C {} | 2320 class C {} |
| 2354 const v = const C.foo(); | 2321 const v = const C.foo(); |
| 2355 ''', | 2322 ''', allowErrors: true); |
| 2356 allowErrors: true); | |
| 2357 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2323 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2358 UnlinkedExprOperation.invokeConstructor, | 2324 UnlinkedExprOperation.invokeConstructor, |
| 2359 ], ints: [ | 2325 ], ints: [ |
| 2360 0, | 2326 0, |
| 2361 0 | 2327 0 |
| 2362 ], referenceValidators: [ | 2328 ], referenceValidators: [ |
| 2363 (EntityRef r) => checkTypeRef(r, null, 'foo', | 2329 (EntityRef r) => checkTypeRef(r, null, 'foo', |
| 2364 expectedKind: ReferenceKind.unresolved, | 2330 expectedKind: ReferenceKind.unresolved, |
| 2365 prefixExpectations: [ | 2331 prefixExpectations: [ |
| 2366 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2332 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 2367 ]) | 2333 ]) |
| 2368 ]); | 2334 ]); |
| 2369 } | 2335 } |
| 2370 | 2336 |
| 2371 test_constExpr_invokeConstructor_unresolved_named2() { | 2337 test_constExpr_invokeConstructor_unresolved_named2() { |
| 2372 UnlinkedVariable variable = serializeVariableText( | 2338 UnlinkedVariable variable = serializeVariableText(''' |
| 2373 ''' | |
| 2374 const v = const C.foo(); | 2339 const v = const C.foo(); |
| 2375 ''', | 2340 ''', allowErrors: true); |
| 2376 allowErrors: true); | |
| 2377 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2341 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2378 UnlinkedExprOperation.invokeConstructor, | 2342 UnlinkedExprOperation.invokeConstructor, |
| 2379 ], ints: [ | 2343 ], ints: [ |
| 2380 0, | 2344 0, |
| 2381 0 | 2345 0 |
| 2382 ], referenceValidators: [ | 2346 ], referenceValidators: [ |
| 2383 (EntityRef r) => checkTypeRef(r, null, 'foo', | 2347 (EntityRef r) => checkTypeRef(r, null, 'foo', |
| 2384 expectedKind: ReferenceKind.unresolved, | 2348 expectedKind: ReferenceKind.unresolved, |
| 2385 prefixExpectations: [ | 2349 prefixExpectations: [ |
| 2386 new _PrefixExpectation(ReferenceKind.unresolved, 'C') | 2350 new _PrefixExpectation(ReferenceKind.unresolved, 'C') |
| 2387 ]) | 2351 ]) |
| 2388 ]); | 2352 ]); |
| 2389 } | 2353 } |
| 2390 | 2354 |
| 2391 test_constExpr_invokeConstructor_unresolved_named_prefixed() { | 2355 test_constExpr_invokeConstructor_unresolved_named_prefixed() { |
| 2392 addNamedSource( | 2356 addNamedSource('/a.dart', ''' |
| 2393 '/a.dart', | |
| 2394 ''' | |
| 2395 class C { | 2357 class C { |
| 2396 } | 2358 } |
| 2397 '''); | 2359 '''); |
| 2398 UnlinkedVariable variable = serializeVariableText( | 2360 UnlinkedVariable variable = serializeVariableText(''' |
| 2399 ''' | |
| 2400 import 'a.dart' as p; | 2361 import 'a.dart' as p; |
| 2401 const v = const p.C.foo(); | 2362 const v = const p.C.foo(); |
| 2402 ''', | 2363 ''', allowErrors: true); |
| 2403 allowErrors: true); | |
| 2404 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2364 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2405 UnlinkedExprOperation.invokeConstructor, | 2365 UnlinkedExprOperation.invokeConstructor, |
| 2406 ], ints: [ | 2366 ], ints: [ |
| 2407 0, | 2367 0, |
| 2408 0 | 2368 0 |
| 2409 ], referenceValidators: [ | 2369 ], referenceValidators: [ |
| 2410 (EntityRef r) => checkTypeRef(r, null, 'foo', | 2370 (EntityRef r) => checkTypeRef(r, null, 'foo', |
| 2411 expectedKind: ReferenceKind.unresolved, | 2371 expectedKind: ReferenceKind.unresolved, |
| 2412 prefixExpectations: [ | 2372 prefixExpectations: [ |
| 2413 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2373 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
| 2414 absoluteUri: absUri('/a.dart')), | 2374 absoluteUri: absUri('/a.dart')), |
| 2415 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2375 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
| 2416 ]) | 2376 ]) |
| 2417 ]); | 2377 ]); |
| 2418 } | 2378 } |
| 2419 | 2379 |
| 2420 test_constExpr_invokeConstructor_unresolved_named_prefixed2() { | 2380 test_constExpr_invokeConstructor_unresolved_named_prefixed2() { |
| 2421 addNamedSource('/a.dart', ''); | 2381 addNamedSource('/a.dart', ''); |
| 2422 UnlinkedVariable variable = serializeVariableText( | 2382 UnlinkedVariable variable = serializeVariableText(''' |
| 2423 ''' | |
| 2424 import 'a.dart' as p; | 2383 import 'a.dart' as p; |
| 2425 const v = const p.C.foo(); | 2384 const v = const p.C.foo(); |
| 2426 ''', | 2385 ''', allowErrors: true); |
| 2427 allowErrors: true); | |
| 2428 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2386 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2429 UnlinkedExprOperation.invokeConstructor, | 2387 UnlinkedExprOperation.invokeConstructor, |
| 2430 ], ints: [ | 2388 ], ints: [ |
| 2431 0, | 2389 0, |
| 2432 0 | 2390 0 |
| 2433 ], referenceValidators: [ | 2391 ], referenceValidators: [ |
| 2434 (EntityRef r) => checkTypeRef(r, null, 'foo', | 2392 (EntityRef r) => checkTypeRef(r, null, 'foo', |
| 2435 expectedKind: ReferenceKind.unresolved, | 2393 expectedKind: ReferenceKind.unresolved, |
| 2436 prefixExpectations: [ | 2394 prefixExpectations: [ |
| 2437 new _PrefixExpectation(ReferenceKind.unresolved, 'C'), | 2395 new _PrefixExpectation(ReferenceKind.unresolved, 'C'), |
| 2438 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2396 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
| 2439 ]) | 2397 ]) |
| 2440 ]); | 2398 ]); |
| 2441 } | 2399 } |
| 2442 | 2400 |
| 2443 test_constExpr_invokeConstructor_unresolved_unnamed() { | 2401 test_constExpr_invokeConstructor_unresolved_unnamed() { |
| 2444 UnlinkedVariable variable = serializeVariableText( | 2402 UnlinkedVariable variable = serializeVariableText(''' |
| 2445 ''' | |
| 2446 const v = const Foo(); | 2403 const v = const Foo(); |
| 2447 ''', | 2404 ''', allowErrors: true); |
| 2448 allowErrors: true); | |
| 2449 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2405 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2450 UnlinkedExprOperation.invokeConstructor, | 2406 UnlinkedExprOperation.invokeConstructor, |
| 2451 ], ints: [ | 2407 ], ints: [ |
| 2452 0, | 2408 0, |
| 2453 0 | 2409 0 |
| 2454 ], referenceValidators: [ | 2410 ], referenceValidators: [ |
| 2455 (EntityRef r) => | 2411 (EntityRef r) => |
| 2456 checkTypeRef(r, null, 'Foo', expectedKind: ReferenceKind.unresolved) | 2412 checkTypeRef(r, null, 'Foo', expectedKind: ReferenceKind.unresolved) |
| 2457 ]); | 2413 ]); |
| 2458 } | 2414 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2489 ], referenceValidators: [ | 2445 ], referenceValidators: [ |
| 2490 (EntityRef r) => checkTypeRef(r, null, 'length', | 2446 (EntityRef r) => checkTypeRef(r, null, 'length', |
| 2491 expectedKind: ReferenceKind.propertyAccessor, | 2447 expectedKind: ReferenceKind.propertyAccessor, |
| 2492 prefixExpectations: [ | 2448 prefixExpectations: [ |
| 2493 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2449 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 2494 ]) | 2450 ]) |
| 2495 ]); | 2451 ]); |
| 2496 } | 2452 } |
| 2497 | 2453 |
| 2498 test_constExpr_length_classConstField_imported_withPrefix() { | 2454 test_constExpr_length_classConstField_imported_withPrefix() { |
| 2499 addNamedSource( | 2455 addNamedSource('/a.dart', ''' |
| 2500 '/a.dart', | |
| 2501 ''' | |
| 2502 class C { | 2456 class C { |
| 2503 static const int length = 0; | 2457 static const int length = 0; |
| 2504 } | 2458 } |
| 2505 '''); | 2459 '''); |
| 2506 UnlinkedVariable variable = serializeVariableText(''' | 2460 UnlinkedVariable variable = serializeVariableText(''' |
| 2507 import 'a.dart' as p; | 2461 import 'a.dart' as p; |
| 2508 const int v = p.C.length; | 2462 const int v = p.C.length; |
| 2509 '''); | 2463 '''); |
| 2510 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2464 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2511 UnlinkedExprOperation.pushReference | 2465 UnlinkedExprOperation.pushReference |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2552 expectedKind: ReferenceKind.unresolved, | 2506 expectedKind: ReferenceKind.unresolved, |
| 2553 unresolvedHasName: true, | 2507 unresolvedHasName: true, |
| 2554 prefixExpectations: [ | 2508 prefixExpectations: [ |
| 2555 new _PrefixExpectation(ReferenceKind.propertyAccessor, 'F'), | 2509 new _PrefixExpectation(ReferenceKind.propertyAccessor, 'F'), |
| 2556 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C'), | 2510 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C'), |
| 2557 ]) | 2511 ]) |
| 2558 ]); | 2512 ]); |
| 2559 } | 2513 } |
| 2560 | 2514 |
| 2561 test_constExpr_length_identifierTarget_imported() { | 2515 test_constExpr_length_identifierTarget_imported() { |
| 2562 addNamedSource( | 2516 addNamedSource('/a.dart', ''' |
| 2563 '/a.dart', | |
| 2564 ''' | |
| 2565 const String a = 'aaa'; | 2517 const String a = 'aaa'; |
| 2566 '''); | 2518 '''); |
| 2567 UnlinkedVariable variable = serializeVariableText(''' | 2519 UnlinkedVariable variable = serializeVariableText(''' |
| 2568 import 'a.dart'; | 2520 import 'a.dart'; |
| 2569 const int v = a.length; | 2521 const int v = a.length; |
| 2570 '''); | 2522 '''); |
| 2571 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2523 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2572 UnlinkedExprOperation.pushReference | 2524 UnlinkedExprOperation.pushReference |
| 2573 ], referenceValidators: [ | 2525 ], referenceValidators: [ |
| 2574 (EntityRef r) => checkTypeRef(r, null, 'length', | 2526 (EntityRef r) => checkTypeRef(r, null, 'length', |
| 2575 expectedKind: ReferenceKind.unresolved, | 2527 expectedKind: ReferenceKind.unresolved, |
| 2576 unresolvedHasName: true, | 2528 unresolvedHasName: true, |
| 2577 prefixExpectations: [ | 2529 prefixExpectations: [ |
| 2578 new _PrefixExpectation( | 2530 new _PrefixExpectation( |
| 2579 ReferenceKind.topLevelPropertyAccessor, 'a', | 2531 ReferenceKind.topLevelPropertyAccessor, 'a', |
| 2580 absoluteUri: absUri('/a.dart')) | 2532 absoluteUri: absUri('/a.dart')) |
| 2581 ]) | 2533 ]) |
| 2582 ]); | 2534 ]); |
| 2583 } | 2535 } |
| 2584 | 2536 |
| 2585 test_constExpr_length_identifierTarget_imported_withPrefix() { | 2537 test_constExpr_length_identifierTarget_imported_withPrefix() { |
| 2586 addNamedSource( | 2538 addNamedSource('/a.dart', ''' |
| 2587 '/a.dart', | |
| 2588 ''' | |
| 2589 const String a = 'aaa'; | 2539 const String a = 'aaa'; |
| 2590 '''); | 2540 '''); |
| 2591 UnlinkedVariable variable = serializeVariableText(''' | 2541 UnlinkedVariable variable = serializeVariableText(''' |
| 2592 import 'a.dart' as p; | 2542 import 'a.dart' as p; |
| 2593 const int v = p.a.length; | 2543 const int v = p.a.length; |
| 2594 '''); | 2544 '''); |
| 2595 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2545 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2596 UnlinkedExprOperation.pushReference | 2546 UnlinkedExprOperation.pushReference |
| 2597 ], referenceValidators: [ | 2547 ], referenceValidators: [ |
| 2598 (EntityRef r) => checkTypeRef(r, null, 'length', | 2548 (EntityRef r) => checkTypeRef(r, null, 'length', |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2934 ], referenceValidators: [ | 2884 ], referenceValidators: [ |
| 2935 (EntityRef r) => checkTypeRef(r, null, 'V1', | 2885 (EntityRef r) => checkTypeRef(r, null, 'V1', |
| 2936 expectedKind: ReferenceKind.propertyAccessor, | 2886 expectedKind: ReferenceKind.propertyAccessor, |
| 2937 prefixExpectations: [ | 2887 prefixExpectations: [ |
| 2938 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2888 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 2939 ]) | 2889 ]) |
| 2940 ]); | 2890 ]); |
| 2941 } | 2891 } |
| 2942 | 2892 |
| 2943 test_constExpr_pushReference_enumValue_viaImport() { | 2893 test_constExpr_pushReference_enumValue_viaImport() { |
| 2944 addNamedSource( | 2894 addNamedSource('/a.dart', ''' |
| 2945 '/a.dart', | |
| 2946 ''' | |
| 2947 enum C {V1, V2, V3} | 2895 enum C {V1, V2, V3} |
| 2948 '''); | 2896 '''); |
| 2949 UnlinkedVariable variable = serializeVariableText(''' | 2897 UnlinkedVariable variable = serializeVariableText(''' |
| 2950 import 'a.dart'; | 2898 import 'a.dart'; |
| 2951 const v = C.V1; | 2899 const v = C.V1; |
| 2952 '''); | 2900 '''); |
| 2953 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2901 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2954 UnlinkedExprOperation.pushReference | 2902 UnlinkedExprOperation.pushReference |
| 2955 ], referenceValidators: [ | 2903 ], referenceValidators: [ |
| 2956 (EntityRef r) => checkTypeRef(r, null, 'V1', | 2904 (EntityRef r) => checkTypeRef(r, null, 'V1', |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2972 ], referenceValidators: [ | 2920 ], referenceValidators: [ |
| 2973 (EntityRef r) => checkTypeRef(r, null, 'values', | 2921 (EntityRef r) => checkTypeRef(r, null, 'values', |
| 2974 expectedKind: ReferenceKind.propertyAccessor, | 2922 expectedKind: ReferenceKind.propertyAccessor, |
| 2975 prefixExpectations: [ | 2923 prefixExpectations: [ |
| 2976 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2924 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 2977 ]) | 2925 ]) |
| 2978 ]); | 2926 ]); |
| 2979 } | 2927 } |
| 2980 | 2928 |
| 2981 test_constExpr_pushReference_enumValues_viaImport() { | 2929 test_constExpr_pushReference_enumValues_viaImport() { |
| 2982 addNamedSource( | 2930 addNamedSource('/a.dart', ''' |
| 2983 '/a.dart', | |
| 2984 ''' | |
| 2985 enum C {V1, V2, V3} | 2931 enum C {V1, V2, V3} |
| 2986 '''); | 2932 '''); |
| 2987 UnlinkedVariable variable = serializeVariableText(''' | 2933 UnlinkedVariable variable = serializeVariableText(''' |
| 2988 import 'a.dart'; | 2934 import 'a.dart'; |
| 2989 const v = C.values; | 2935 const v = C.values; |
| 2990 '''); | 2936 '''); |
| 2991 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2937 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 2992 UnlinkedExprOperation.pushReference | 2938 UnlinkedExprOperation.pushReference |
| 2993 ], referenceValidators: [ | 2939 ], referenceValidators: [ |
| 2994 (EntityRef r) => checkTypeRef(r, null, 'values', | 2940 (EntityRef r) => checkTypeRef(r, null, 'values', |
| (...skipping 17 matching lines...) Expand all Loading... |
| 3012 ], referenceValidators: [ | 2958 ], referenceValidators: [ |
| 3013 (EntityRef r) => checkTypeRef(r, null, 'F', | 2959 (EntityRef r) => checkTypeRef(r, null, 'F', |
| 3014 expectedKind: ReferenceKind.propertyAccessor, | 2960 expectedKind: ReferenceKind.propertyAccessor, |
| 3015 prefixExpectations: [ | 2961 prefixExpectations: [ |
| 3016 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2962 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 3017 ]) | 2963 ]) |
| 3018 ]); | 2964 ]); |
| 3019 } | 2965 } |
| 3020 | 2966 |
| 3021 test_constExpr_pushReference_field_imported() { | 2967 test_constExpr_pushReference_field_imported() { |
| 3022 addNamedSource( | 2968 addNamedSource('/a.dart', ''' |
| 3023 '/a.dart', | |
| 3024 ''' | |
| 3025 class C { | 2969 class C { |
| 3026 static const int F = 1; | 2970 static const int F = 1; |
| 3027 } | 2971 } |
| 3028 '''); | 2972 '''); |
| 3029 UnlinkedVariable variable = serializeVariableText(''' | 2973 UnlinkedVariable variable = serializeVariableText(''' |
| 3030 import 'a.dart'; | 2974 import 'a.dart'; |
| 3031 const v = C.F; | 2975 const v = C.F; |
| 3032 '''); | 2976 '''); |
| 3033 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2977 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3034 UnlinkedExprOperation.pushReference | 2978 UnlinkedExprOperation.pushReference |
| 3035 ], referenceValidators: [ | 2979 ], referenceValidators: [ |
| 3036 (EntityRef r) => checkTypeRef(r, null, 'F', | 2980 (EntityRef r) => checkTypeRef(r, null, 'F', |
| 3037 expectedKind: ReferenceKind.propertyAccessor, | 2981 expectedKind: ReferenceKind.propertyAccessor, |
| 3038 prefixExpectations: [ | 2982 prefixExpectations: [ |
| 3039 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2983 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
| 3040 absoluteUri: absUri('/a.dart')) | 2984 absoluteUri: absUri('/a.dart')) |
| 3041 ]) | 2985 ]) |
| 3042 ]); | 2986 ]); |
| 3043 } | 2987 } |
| 3044 | 2988 |
| 3045 test_constExpr_pushReference_field_imported_withPrefix() { | 2989 test_constExpr_pushReference_field_imported_withPrefix() { |
| 3046 addNamedSource( | 2990 addNamedSource('/a.dart', ''' |
| 3047 '/a.dart', | |
| 3048 ''' | |
| 3049 class C { | 2991 class C { |
| 3050 static const int F = 1; | 2992 static const int F = 1; |
| 3051 } | 2993 } |
| 3052 '''); | 2994 '''); |
| 3053 UnlinkedVariable variable = serializeVariableText(''' | 2995 UnlinkedVariable variable = serializeVariableText(''' |
| 3054 import 'a.dart' as p; | 2996 import 'a.dart' as p; |
| 3055 const v = p.C.F; | 2997 const v = p.C.F; |
| 3056 '''); | 2998 '''); |
| 3057 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 2999 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3058 UnlinkedExprOperation.pushReference | 3000 UnlinkedExprOperation.pushReference |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3097 ], referenceValidators: [ | 3039 ], referenceValidators: [ |
| 3098 (EntityRef r) => checkTypeRef(r, null, 'x', | 3040 (EntityRef r) => checkTypeRef(r, null, 'x', |
| 3099 expectedKind: ReferenceKind.propertyAccessor, | 3041 expectedKind: ReferenceKind.propertyAccessor, |
| 3100 prefixExpectations: [ | 3042 prefixExpectations: [ |
| 3101 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 3043 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 3102 ]) | 3044 ]) |
| 3103 ]); | 3045 ]); |
| 3104 } | 3046 } |
| 3105 | 3047 |
| 3106 test_constExpr_pushReference_staticGetter_imported() { | 3048 test_constExpr_pushReference_staticGetter_imported() { |
| 3107 addNamedSource( | 3049 addNamedSource('/a.dart', ''' |
| 3108 '/a.dart', | |
| 3109 ''' | |
| 3110 class C { | 3050 class C { |
| 3111 static int get x => null; | 3051 static int get x => null; |
| 3112 } | 3052 } |
| 3113 '''); | 3053 '''); |
| 3114 UnlinkedVariable variable = serializeVariableText(''' | 3054 UnlinkedVariable variable = serializeVariableText(''' |
| 3115 import 'a.dart'; | 3055 import 'a.dart'; |
| 3116 const v = C.x; | 3056 const v = C.x; |
| 3117 '''); | 3057 '''); |
| 3118 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3058 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3119 UnlinkedExprOperation.pushReference | 3059 UnlinkedExprOperation.pushReference |
| 3120 ], referenceValidators: [ | 3060 ], referenceValidators: [ |
| 3121 (EntityRef r) => checkTypeRef(r, null, 'x', | 3061 (EntityRef r) => checkTypeRef(r, null, 'x', |
| 3122 expectedKind: ReferenceKind.propertyAccessor, | 3062 expectedKind: ReferenceKind.propertyAccessor, |
| 3123 prefixExpectations: [ | 3063 prefixExpectations: [ |
| 3124 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 3064 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
| 3125 absoluteUri: absUri('/a.dart')) | 3065 absoluteUri: absUri('/a.dart')) |
| 3126 ]) | 3066 ]) |
| 3127 ]); | 3067 ]); |
| 3128 } | 3068 } |
| 3129 | 3069 |
| 3130 test_constExpr_pushReference_staticGetter_imported_withPrefix() { | 3070 test_constExpr_pushReference_staticGetter_imported_withPrefix() { |
| 3131 addNamedSource( | 3071 addNamedSource('/a.dart', ''' |
| 3132 '/a.dart', | |
| 3133 ''' | |
| 3134 class C { | 3072 class C { |
| 3135 static int get x => null; | 3073 static int get x => null; |
| 3136 } | 3074 } |
| 3137 '''); | 3075 '''); |
| 3138 UnlinkedVariable variable = serializeVariableText(''' | 3076 UnlinkedVariable variable = serializeVariableText(''' |
| 3139 import 'a.dart' as p; | 3077 import 'a.dart' as p; |
| 3140 const v = p.C.x; | 3078 const v = p.C.x; |
| 3141 '''); | 3079 '''); |
| 3142 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3080 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3143 UnlinkedExprOperation.pushReference | 3081 UnlinkedExprOperation.pushReference |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3164 ], referenceValidators: [ | 3102 ], referenceValidators: [ |
| 3165 (EntityRef r) => checkTypeRef(r, null, 'm', | 3103 (EntityRef r) => checkTypeRef(r, null, 'm', |
| 3166 expectedKind: ReferenceKind.method, | 3104 expectedKind: ReferenceKind.method, |
| 3167 prefixExpectations: [ | 3105 prefixExpectations: [ |
| 3168 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 3106 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 3169 ]) | 3107 ]) |
| 3170 ]); | 3108 ]); |
| 3171 } | 3109 } |
| 3172 | 3110 |
| 3173 test_constExpr_pushReference_staticMethod_imported() { | 3111 test_constExpr_pushReference_staticMethod_imported() { |
| 3174 addNamedSource( | 3112 addNamedSource('/a.dart', ''' |
| 3175 '/a.dart', | |
| 3176 ''' | |
| 3177 class C { | 3113 class C { |
| 3178 static m() {} | 3114 static m() {} |
| 3179 } | 3115 } |
| 3180 '''); | 3116 '''); |
| 3181 UnlinkedVariable variable = serializeVariableText(''' | 3117 UnlinkedVariable variable = serializeVariableText(''' |
| 3182 import 'a.dart'; | 3118 import 'a.dart'; |
| 3183 const v = C.m; | 3119 const v = C.m; |
| 3184 '''); | 3120 '''); |
| 3185 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3121 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3186 UnlinkedExprOperation.pushReference | 3122 UnlinkedExprOperation.pushReference |
| 3187 ], referenceValidators: [ | 3123 ], referenceValidators: [ |
| 3188 (EntityRef r) => checkTypeRef(r, null, 'm', | 3124 (EntityRef r) => checkTypeRef(r, null, 'm', |
| 3189 expectedKind: ReferenceKind.method, | 3125 expectedKind: ReferenceKind.method, |
| 3190 prefixExpectations: [ | 3126 prefixExpectations: [ |
| 3191 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 3127 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
| 3192 absoluteUri: absUri('/a.dart')) | 3128 absoluteUri: absUri('/a.dart')) |
| 3193 ]) | 3129 ]) |
| 3194 ]); | 3130 ]); |
| 3195 } | 3131 } |
| 3196 | 3132 |
| 3197 test_constExpr_pushReference_staticMethod_imported_withPrefix() { | 3133 test_constExpr_pushReference_staticMethod_imported_withPrefix() { |
| 3198 addNamedSource( | 3134 addNamedSource('/a.dart', ''' |
| 3199 '/a.dart', | |
| 3200 ''' | |
| 3201 class C { | 3135 class C { |
| 3202 static m() {} | 3136 static m() {} |
| 3203 } | 3137 } |
| 3204 '''); | 3138 '''); |
| 3205 UnlinkedVariable variable = serializeVariableText(''' | 3139 UnlinkedVariable variable = serializeVariableText(''' |
| 3206 import 'a.dart' as p; | 3140 import 'a.dart' as p; |
| 3207 const v = p.C.m; | 3141 const v = p.C.m; |
| 3208 '''); | 3142 '''); |
| 3209 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3143 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3210 UnlinkedExprOperation.pushReference | 3144 UnlinkedExprOperation.pushReference |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3244 '''); | 3178 '''); |
| 3245 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3179 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3246 UnlinkedExprOperation.pushReference | 3180 UnlinkedExprOperation.pushReference |
| 3247 ], referenceValidators: [ | 3181 ], referenceValidators: [ |
| 3248 (EntityRef r) => checkTypeRef(r, null, 'f', | 3182 (EntityRef r) => checkTypeRef(r, null, 'f', |
| 3249 expectedKind: ReferenceKind.topLevelFunction) | 3183 expectedKind: ReferenceKind.topLevelFunction) |
| 3250 ]); | 3184 ]); |
| 3251 } | 3185 } |
| 3252 | 3186 |
| 3253 test_constExpr_pushReference_topLevelFunction_imported() { | 3187 test_constExpr_pushReference_topLevelFunction_imported() { |
| 3254 addNamedSource( | 3188 addNamedSource('/a.dart', ''' |
| 3255 '/a.dart', | |
| 3256 ''' | |
| 3257 f() {} | 3189 f() {} |
| 3258 '''); | 3190 '''); |
| 3259 UnlinkedVariable variable = serializeVariableText(''' | 3191 UnlinkedVariable variable = serializeVariableText(''' |
| 3260 import 'a.dart'; | 3192 import 'a.dart'; |
| 3261 const v = f; | 3193 const v = f; |
| 3262 '''); | 3194 '''); |
| 3263 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3195 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3264 UnlinkedExprOperation.pushReference | 3196 UnlinkedExprOperation.pushReference |
| 3265 ], referenceValidators: [ | 3197 ], referenceValidators: [ |
| 3266 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'f', | 3198 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'f', |
| 3267 expectedKind: ReferenceKind.topLevelFunction) | 3199 expectedKind: ReferenceKind.topLevelFunction) |
| 3268 ]); | 3200 ]); |
| 3269 } | 3201 } |
| 3270 | 3202 |
| 3271 test_constExpr_pushReference_topLevelFunction_imported_withPrefix() { | 3203 test_constExpr_pushReference_topLevelFunction_imported_withPrefix() { |
| 3272 addNamedSource( | 3204 addNamedSource('/a.dart', ''' |
| 3273 '/a.dart', | |
| 3274 ''' | |
| 3275 f() {} | 3205 f() {} |
| 3276 '''); | 3206 '''); |
| 3277 UnlinkedVariable variable = serializeVariableText(''' | 3207 UnlinkedVariable variable = serializeVariableText(''' |
| 3278 import 'a.dart' as p; | 3208 import 'a.dart' as p; |
| 3279 const v = p.f; | 3209 const v = p.f; |
| 3280 '''); | 3210 '''); |
| 3281 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3211 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3282 UnlinkedExprOperation.pushReference | 3212 UnlinkedExprOperation.pushReference |
| 3283 ], referenceValidators: [ | 3213 ], referenceValidators: [ |
| 3284 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'f', | 3214 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'f', |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3386 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3316 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3387 UnlinkedExprOperation.pushReference | 3317 UnlinkedExprOperation.pushReference |
| 3388 ], referenceValidators: [ | 3318 ], referenceValidators: [ |
| 3389 (EntityRef r) { | 3319 (EntityRef r) { |
| 3390 return checkParamTypeRef(r, 1); | 3320 return checkParamTypeRef(r, 1); |
| 3391 } | 3321 } |
| 3392 ]); | 3322 ]); |
| 3393 } | 3323 } |
| 3394 | 3324 |
| 3395 test_constExpr_pushReference_unresolved_prefix0() { | 3325 test_constExpr_pushReference_unresolved_prefix0() { |
| 3396 UnlinkedVariable variable = serializeVariableText( | 3326 UnlinkedVariable variable = serializeVariableText(''' |
| 3397 ''' | |
| 3398 const v = foo; | 3327 const v = foo; |
| 3399 ''', | 3328 ''', allowErrors: true); |
| 3400 allowErrors: true); | |
| 3401 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3329 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3402 UnlinkedExprOperation.pushReference | 3330 UnlinkedExprOperation.pushReference |
| 3403 ], referenceValidators: [ | 3331 ], referenceValidators: [ |
| 3404 (EntityRef r) => | 3332 (EntityRef r) => |
| 3405 checkTypeRef(r, null, 'foo', expectedKind: ReferenceKind.unresolved) | 3333 checkTypeRef(r, null, 'foo', expectedKind: ReferenceKind.unresolved) |
| 3406 ]); | 3334 ]); |
| 3407 } | 3335 } |
| 3408 | 3336 |
| 3409 test_constExpr_pushReference_unresolved_prefix1() { | 3337 test_constExpr_pushReference_unresolved_prefix1() { |
| 3410 UnlinkedVariable variable = serializeVariableText( | 3338 UnlinkedVariable variable = serializeVariableText(''' |
| 3411 ''' | |
| 3412 class C {} | 3339 class C {} |
| 3413 const v = C.foo; | 3340 const v = C.foo; |
| 3414 ''', | 3341 ''', allowErrors: true); |
| 3415 allowErrors: true); | |
| 3416 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3342 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3417 UnlinkedExprOperation.pushReference | 3343 UnlinkedExprOperation.pushReference |
| 3418 ], referenceValidators: [ | 3344 ], referenceValidators: [ |
| 3419 (EntityRef r) => checkTypeRef(r, null, 'foo', | 3345 (EntityRef r) => checkTypeRef(r, null, 'foo', |
| 3420 expectedKind: ReferenceKind.unresolved, | 3346 expectedKind: ReferenceKind.unresolved, |
| 3421 prefixExpectations: [ | 3347 prefixExpectations: [ |
| 3422 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 3348 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 3423 ]) | 3349 ]) |
| 3424 ]); | 3350 ]); |
| 3425 } | 3351 } |
| 3426 | 3352 |
| 3427 test_constExpr_pushReference_unresolved_prefix2() { | 3353 test_constExpr_pushReference_unresolved_prefix2() { |
| 3428 addNamedSource( | 3354 addNamedSource('/a.dart', ''' |
| 3429 '/a.dart', | |
| 3430 ''' | |
| 3431 class C {} | 3355 class C {} |
| 3432 '''); | 3356 '''); |
| 3433 UnlinkedVariable variable = serializeVariableText( | 3357 UnlinkedVariable variable = serializeVariableText(''' |
| 3434 ''' | |
| 3435 import 'a.dart' as p; | 3358 import 'a.dart' as p; |
| 3436 const v = p.C.foo; | 3359 const v = p.C.foo; |
| 3437 ''', | 3360 ''', allowErrors: true); |
| 3438 allowErrors: true); | |
| 3439 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ | 3361 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
| 3440 UnlinkedExprOperation.pushReference | 3362 UnlinkedExprOperation.pushReference |
| 3441 ], referenceValidators: [ | 3363 ], referenceValidators: [ |
| 3442 (EntityRef r) => checkTypeRef(r, null, 'foo', | 3364 (EntityRef r) => checkTypeRef(r, null, 'foo', |
| 3443 expectedKind: ReferenceKind.unresolved, | 3365 expectedKind: ReferenceKind.unresolved, |
| 3444 prefixExpectations: [ | 3366 prefixExpectations: [ |
| 3445 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 3367 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
| 3446 absoluteUri: absUri('/a.dart')), | 3368 absoluteUri: absUri('/a.dart')), |
| 3447 new _PrefixExpectation(ReferenceKind.prefix, 'p'), | 3369 new _PrefixExpectation(ReferenceKind.prefix, 'p'), |
| 3448 ]) | 3370 ]) |
| (...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4109 prefixExpectations: [ | 4031 prefixExpectations: [ |
| 4110 new _PrefixExpectation(ReferenceKind.classOrEnum, 'D', | 4032 new _PrefixExpectation(ReferenceKind.classOrEnum, 'D', |
| 4111 numTypeParameters: 2) | 4033 numTypeParameters: 2) |
| 4112 ], | 4034 ], |
| 4113 numTypeArguments: 2); | 4035 numTypeArguments: 2); |
| 4114 checkParamTypeRef(executable.redirectedConstructor.typeArguments[0], 1); | 4036 checkParamTypeRef(executable.redirectedConstructor.typeArguments[0], 1); |
| 4115 checkParamTypeRef(executable.redirectedConstructor.typeArguments[1], 2); | 4037 checkParamTypeRef(executable.redirectedConstructor.typeArguments[1], 2); |
| 4116 } | 4038 } |
| 4117 | 4039 |
| 4118 test_constructor_redirected_factory_named_imported() { | 4040 test_constructor_redirected_factory_named_imported() { |
| 4119 addNamedSource( | 4041 addNamedSource('/foo.dart', ''' |
| 4120 '/foo.dart', | |
| 4121 ''' | |
| 4122 import 'test.dart'; | 4042 import 'test.dart'; |
| 4123 class D extends C { | 4043 class D extends C { |
| 4124 D.named() : super._(); | 4044 D.named() : super._(); |
| 4125 } | 4045 } |
| 4126 '''); | 4046 '''); |
| 4127 String text = ''' | 4047 String text = ''' |
| 4128 import 'foo.dart'; | 4048 import 'foo.dart'; |
| 4129 class C { | 4049 class C { |
| 4130 factory C() = D.named; | 4050 factory C() = D.named; |
| 4131 C._(); | 4051 C._(); |
| 4132 } | 4052 } |
| 4133 '''; | 4053 '''; |
| 4134 UnlinkedExecutable executable = | 4054 UnlinkedExecutable executable = |
| 4135 serializeClassText(text, className: 'C').executables[0]; | 4055 serializeClassText(text, className: 'C').executables[0]; |
| 4136 expect(executable.isRedirectedConstructor, isTrue); | 4056 expect(executable.isRedirectedConstructor, isTrue); |
| 4137 expect(executable.isFactory, isTrue); | 4057 expect(executable.isFactory, isTrue); |
| 4138 expect(executable.redirectedConstructorName, isEmpty); | 4058 expect(executable.redirectedConstructorName, isEmpty); |
| 4139 checkTypeRef(executable.redirectedConstructor, null, 'named', | 4059 checkTypeRef(executable.redirectedConstructor, null, 'named', |
| 4140 expectedKind: ReferenceKind.constructor, | 4060 expectedKind: ReferenceKind.constructor, |
| 4141 prefixExpectations: [ | 4061 prefixExpectations: [ |
| 4142 new _PrefixExpectation( | 4062 new _PrefixExpectation( |
| 4143 ReferenceKind.classOrEnum, | 4063 ReferenceKind.classOrEnum, |
| 4144 'D', | 4064 'D', |
| 4145 absoluteUri: absUri('/foo.dart'), | 4065 absoluteUri: absUri('/foo.dart'), |
| 4146 ) | 4066 ) |
| 4147 ]); | 4067 ]); |
| 4148 } | 4068 } |
| 4149 | 4069 |
| 4150 test_constructor_redirected_factory_named_imported_generic() { | 4070 test_constructor_redirected_factory_named_imported_generic() { |
| 4151 addNamedSource( | 4071 addNamedSource('/foo.dart', ''' |
| 4152 '/foo.dart', | |
| 4153 ''' | |
| 4154 import 'test.dart'; | 4072 import 'test.dart'; |
| 4155 class D<T, U> extends C<U, T> { | 4073 class D<T, U> extends C<U, T> { |
| 4156 D.named() : super._(); | 4074 D.named() : super._(); |
| 4157 } | 4075 } |
| 4158 '''); | 4076 '''); |
| 4159 String text = ''' | 4077 String text = ''' |
| 4160 import 'foo.dart'; | 4078 import 'foo.dart'; |
| 4161 class C<T, U> { | 4079 class C<T, U> { |
| 4162 factory C() = D<U, T>.named; | 4080 factory C() = D<U, T>.named; |
| 4163 C._(); | 4081 C._(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 4177 numTypeParameters: 2, | 4095 numTypeParameters: 2, |
| 4178 absoluteUri: absUri('/foo.dart'), | 4096 absoluteUri: absUri('/foo.dart'), |
| 4179 ) | 4097 ) |
| 4180 ], | 4098 ], |
| 4181 numTypeArguments: 2); | 4099 numTypeArguments: 2); |
| 4182 checkParamTypeRef(executable.redirectedConstructor.typeArguments[0], 1); | 4100 checkParamTypeRef(executable.redirectedConstructor.typeArguments[0], 1); |
| 4183 checkParamTypeRef(executable.redirectedConstructor.typeArguments[1], 2); | 4101 checkParamTypeRef(executable.redirectedConstructor.typeArguments[1], 2); |
| 4184 } | 4102 } |
| 4185 | 4103 |
| 4186 test_constructor_redirected_factory_named_prefixed() { | 4104 test_constructor_redirected_factory_named_prefixed() { |
| 4187 addNamedSource( | 4105 addNamedSource('/foo.dart', ''' |
| 4188 '/foo.dart', | |
| 4189 ''' | |
| 4190 import 'test.dart'; | 4106 import 'test.dart'; |
| 4191 class D extends C { | 4107 class D extends C { |
| 4192 D.named() : super._(); | 4108 D.named() : super._(); |
| 4193 } | 4109 } |
| 4194 '''); | 4110 '''); |
| 4195 String text = ''' | 4111 String text = ''' |
| 4196 import 'foo.dart' as foo; | 4112 import 'foo.dart' as foo; |
| 4197 class C { | 4113 class C { |
| 4198 factory C() = foo.D.named; | 4114 factory C() = foo.D.named; |
| 4199 C._(); | 4115 C._(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 4210 new _PrefixExpectation( | 4126 new _PrefixExpectation( |
| 4211 ReferenceKind.classOrEnum, | 4127 ReferenceKind.classOrEnum, |
| 4212 'D', | 4128 'D', |
| 4213 absoluteUri: absUri('/foo.dart'), | 4129 absoluteUri: absUri('/foo.dart'), |
| 4214 ), | 4130 ), |
| 4215 new _PrefixExpectation(ReferenceKind.prefix, 'foo') | 4131 new _PrefixExpectation(ReferenceKind.prefix, 'foo') |
| 4216 ]); | 4132 ]); |
| 4217 } | 4133 } |
| 4218 | 4134 |
| 4219 test_constructor_redirected_factory_named_prefixed_generic() { | 4135 test_constructor_redirected_factory_named_prefixed_generic() { |
| 4220 addNamedSource( | 4136 addNamedSource('/foo.dart', ''' |
| 4221 '/foo.dart', | |
| 4222 ''' | |
| 4223 import 'test.dart'; | 4137 import 'test.dart'; |
| 4224 class D<T, U> extends C<U, T> { | 4138 class D<T, U> extends C<U, T> { |
| 4225 D.named() : super._(); | 4139 D.named() : super._(); |
| 4226 } | 4140 } |
| 4227 '''); | 4141 '''); |
| 4228 String text = ''' | 4142 String text = ''' |
| 4229 import 'foo.dart' as foo; | 4143 import 'foo.dart' as foo; |
| 4230 class C<T, U> { | 4144 class C<T, U> { |
| 4231 factory C() = foo.D<U, T>.named; | 4145 factory C() = foo.D<U, T>.named; |
| 4232 C._(); | 4146 C._(); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4286 expect(executable.isRedirectedConstructor, isTrue); | 4200 expect(executable.isRedirectedConstructor, isTrue); |
| 4287 expect(executable.isFactory, isTrue); | 4201 expect(executable.isFactory, isTrue); |
| 4288 expect(executable.redirectedConstructorName, isEmpty); | 4202 expect(executable.redirectedConstructorName, isEmpty); |
| 4289 checkTypeRef(executable.redirectedConstructor, null, 'D', | 4203 checkTypeRef(executable.redirectedConstructor, null, 'D', |
| 4290 numTypeParameters: 2, numTypeArguments: 2); | 4204 numTypeParameters: 2, numTypeArguments: 2); |
| 4291 checkParamTypeRef(executable.redirectedConstructor.typeArguments[0], 1); | 4205 checkParamTypeRef(executable.redirectedConstructor.typeArguments[0], 1); |
| 4292 checkParamTypeRef(executable.redirectedConstructor.typeArguments[1], 2); | 4206 checkParamTypeRef(executable.redirectedConstructor.typeArguments[1], 2); |
| 4293 } | 4207 } |
| 4294 | 4208 |
| 4295 test_constructor_redirected_factory_unnamed_imported() { | 4209 test_constructor_redirected_factory_unnamed_imported() { |
| 4296 addNamedSource( | 4210 addNamedSource('/foo.dart', ''' |
| 4297 '/foo.dart', | |
| 4298 ''' | |
| 4299 import 'test.dart'; | 4211 import 'test.dart'; |
| 4300 class D extends C { | 4212 class D extends C { |
| 4301 D() : super._(); | 4213 D() : super._(); |
| 4302 } | 4214 } |
| 4303 '''); | 4215 '''); |
| 4304 String text = ''' | 4216 String text = ''' |
| 4305 import 'foo.dart'; | 4217 import 'foo.dart'; |
| 4306 class C { | 4218 class C { |
| 4307 factory C() = D; | 4219 factory C() = D; |
| 4308 C._(); | 4220 C._(); |
| 4309 } | 4221 } |
| 4310 '''; | 4222 '''; |
| 4311 UnlinkedExecutable executable = | 4223 UnlinkedExecutable executable = |
| 4312 serializeClassText(text, className: 'C').executables[0]; | 4224 serializeClassText(text, className: 'C').executables[0]; |
| 4313 expect(executable.isRedirectedConstructor, isTrue); | 4225 expect(executable.isRedirectedConstructor, isTrue); |
| 4314 expect(executable.isFactory, isTrue); | 4226 expect(executable.isFactory, isTrue); |
| 4315 expect(executable.redirectedConstructorName, isEmpty); | 4227 expect(executable.redirectedConstructorName, isEmpty); |
| 4316 checkTypeRef(executable.redirectedConstructor, absUri('/foo.dart'), 'D'); | 4228 checkTypeRef(executable.redirectedConstructor, absUri('/foo.dart'), 'D'); |
| 4317 } | 4229 } |
| 4318 | 4230 |
| 4319 test_constructor_redirected_factory_unnamed_imported_generic() { | 4231 test_constructor_redirected_factory_unnamed_imported_generic() { |
| 4320 addNamedSource( | 4232 addNamedSource('/foo.dart', ''' |
| 4321 '/foo.dart', | |
| 4322 ''' | |
| 4323 import 'test.dart'; | 4233 import 'test.dart'; |
| 4324 class D<T, U> extends C<U, T> { | 4234 class D<T, U> extends C<U, T> { |
| 4325 D() : super._(); | 4235 D() : super._(); |
| 4326 } | 4236 } |
| 4327 '''); | 4237 '''); |
| 4328 String text = ''' | 4238 String text = ''' |
| 4329 import 'foo.dart'; | 4239 import 'foo.dart'; |
| 4330 class C<T, U> { | 4240 class C<T, U> { |
| 4331 factory C() = D<U, T>; | 4241 factory C() = D<U, T>; |
| 4332 C._(); | 4242 C._(); |
| 4333 } | 4243 } |
| 4334 '''; | 4244 '''; |
| 4335 UnlinkedExecutable executable = | 4245 UnlinkedExecutable executable = |
| 4336 serializeClassText(text, className: 'C').executables[0]; | 4246 serializeClassText(text, className: 'C').executables[0]; |
| 4337 expect(executable.isRedirectedConstructor, isTrue); | 4247 expect(executable.isRedirectedConstructor, isTrue); |
| 4338 expect(executable.isFactory, isTrue); | 4248 expect(executable.isFactory, isTrue); |
| 4339 expect(executable.redirectedConstructorName, isEmpty); | 4249 expect(executable.redirectedConstructorName, isEmpty); |
| 4340 checkTypeRef(executable.redirectedConstructor, absUri('/foo.dart'), 'D', | 4250 checkTypeRef(executable.redirectedConstructor, absUri('/foo.dart'), 'D', |
| 4341 numTypeParameters: 2, numTypeArguments: 2); | 4251 numTypeParameters: 2, numTypeArguments: 2); |
| 4342 checkParamTypeRef(executable.redirectedConstructor.typeArguments[0], 1); | 4252 checkParamTypeRef(executable.redirectedConstructor.typeArguments[0], 1); |
| 4343 checkParamTypeRef(executable.redirectedConstructor.typeArguments[1], 2); | 4253 checkParamTypeRef(executable.redirectedConstructor.typeArguments[1], 2); |
| 4344 } | 4254 } |
| 4345 | 4255 |
| 4346 test_constructor_redirected_factory_unnamed_prefixed() { | 4256 test_constructor_redirected_factory_unnamed_prefixed() { |
| 4347 addNamedSource( | 4257 addNamedSource('/foo.dart', ''' |
| 4348 '/foo.dart', | |
| 4349 ''' | |
| 4350 import 'test.dart'; | 4258 import 'test.dart'; |
| 4351 class D extends C { | 4259 class D extends C { |
| 4352 D() : super._(); | 4260 D() : super._(); |
| 4353 } | 4261 } |
| 4354 '''); | 4262 '''); |
| 4355 String text = ''' | 4263 String text = ''' |
| 4356 import 'foo.dart' as foo; | 4264 import 'foo.dart' as foo; |
| 4357 class C { | 4265 class C { |
| 4358 factory C() = foo.D; | 4266 factory C() = foo.D; |
| 4359 C._(); | 4267 C._(); |
| 4360 } | 4268 } |
| 4361 '''; | 4269 '''; |
| 4362 UnlinkedExecutable executable = | 4270 UnlinkedExecutable executable = |
| 4363 serializeClassText(text, className: 'C').executables[0]; | 4271 serializeClassText(text, className: 'C').executables[0]; |
| 4364 expect(executable.isRedirectedConstructor, isTrue); | 4272 expect(executable.isRedirectedConstructor, isTrue); |
| 4365 expect(executable.isFactory, isTrue); | 4273 expect(executable.isFactory, isTrue); |
| 4366 expect(executable.redirectedConstructorName, isEmpty); | 4274 expect(executable.redirectedConstructorName, isEmpty); |
| 4367 checkTypeRef(executable.redirectedConstructor, absUri('/foo.dart'), 'D', | 4275 checkTypeRef(executable.redirectedConstructor, absUri('/foo.dart'), 'D', |
| 4368 expectedPrefix: 'foo'); | 4276 expectedPrefix: 'foo'); |
| 4369 } | 4277 } |
| 4370 | 4278 |
| 4371 test_constructor_redirected_factory_unnamed_prefixed_generic() { | 4279 test_constructor_redirected_factory_unnamed_prefixed_generic() { |
| 4372 addNamedSource( | 4280 addNamedSource('/foo.dart', ''' |
| 4373 '/foo.dart', | |
| 4374 ''' | |
| 4375 import 'test.dart'; | 4281 import 'test.dart'; |
| 4376 class D<T, U> extends C<U, T> { | 4282 class D<T, U> extends C<U, T> { |
| 4377 D() : super._(); | 4283 D() : super._(); |
| 4378 } | 4284 } |
| 4379 '''); | 4285 '''); |
| 4380 String text = ''' | 4286 String text = ''' |
| 4381 import 'foo.dart' as foo; | 4287 import 'foo.dart' as foo; |
| 4382 class C<T, U> { | 4288 class C<T, U> { |
| 4383 factory C() = foo.D<U, T>; | 4289 factory C() = foo.D<U, T>; |
| 4384 C._(); | 4290 C._(); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4466 class D { | 4372 class D { |
| 4467 final x; | 4373 final x; |
| 4468 D() : x = new C(); | 4374 D() : x = new C(); |
| 4469 } | 4375 } |
| 4470 '''); | 4376 '''); |
| 4471 expect(findClass('C').executables[0].constCycleSlot, 0); | 4377 expect(findClass('C').executables[0].constCycleSlot, 0); |
| 4472 expect(findClass('D').executables[0].constCycleSlot, 0); | 4378 expect(findClass('D').executables[0].constCycleSlot, 0); |
| 4473 } | 4379 } |
| 4474 | 4380 |
| 4475 test_constructorCycle_redirectToImplicitConstructor() { | 4381 test_constructorCycle_redirectToImplicitConstructor() { |
| 4476 serializeLibraryText( | 4382 serializeLibraryText(''' |
| 4477 ''' | |
| 4478 class C { | 4383 class C { |
| 4479 const factory C() = D; | 4384 const factory C() = D; |
| 4480 } | 4385 } |
| 4481 class D extends C {} | 4386 class D extends C {} |
| 4482 ''', | 4387 ''', allowErrors: true); |
| 4483 allowErrors: true); | |
| 4484 checkConstCycle('C', hasCycle: false); | 4388 checkConstCycle('C', hasCycle: false); |
| 4485 } | 4389 } |
| 4486 | 4390 |
| 4487 test_constructorCycle_redirectToNonConstConstructor() { | 4391 test_constructorCycle_redirectToNonConstConstructor() { |
| 4488 // It's not valid Dart but we need to make sure it doesn't crash | 4392 // It's not valid Dart but we need to make sure it doesn't crash |
| 4489 // summary generation. | 4393 // summary generation. |
| 4490 serializeLibraryText( | 4394 serializeLibraryText(''' |
| 4491 ''' | |
| 4492 class C { | 4395 class C { |
| 4493 const factory C() = D; | 4396 const factory C() = D; |
| 4494 } | 4397 } |
| 4495 class D extends C { | 4398 class D extends C { |
| 4496 D(); | 4399 D(); |
| 4497 } | 4400 } |
| 4498 ''', | 4401 ''', allowErrors: true); |
| 4499 allowErrors: true); | |
| 4500 checkConstCycle('C', hasCycle: false); | 4402 checkConstCycle('C', hasCycle: false); |
| 4501 } | 4403 } |
| 4502 | 4404 |
| 4503 test_constructorCycle_redirectToSymbolConstructor() { | 4405 test_constructorCycle_redirectToSymbolConstructor() { |
| 4504 // The symbol constructor has some special case behaviors in analyzer. | 4406 // The symbol constructor has some special case behaviors in analyzer. |
| 4505 // Make sure those special case behaviors don't cause problems. | 4407 // Make sure those special case behaviors don't cause problems. |
| 4506 serializeLibraryText( | 4408 serializeLibraryText(''' |
| 4507 ''' | |
| 4508 class C { | 4409 class C { |
| 4509 const factory C(String name) = Symbol; | 4410 const factory C(String name) = Symbol; |
| 4510 } | 4411 } |
| 4511 ''', | 4412 ''', allowErrors: true); |
| 4512 allowErrors: true); | |
| 4513 checkConstCycle('C', hasCycle: false); | 4413 checkConstCycle('C', hasCycle: false); |
| 4514 } | 4414 } |
| 4515 | 4415 |
| 4516 test_constructorCycle_referenceToClass() { | 4416 test_constructorCycle_referenceToClass() { |
| 4517 serializeLibraryText(''' | 4417 serializeLibraryText(''' |
| 4518 class C { | 4418 class C { |
| 4519 final x; | 4419 final x; |
| 4520 const C() : x = C; | 4420 const C() : x = C; |
| 4521 } | 4421 } |
| 4522 '''); | 4422 '''); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 4552 final x; | 4452 final x; |
| 4553 const C() : x = E.values; | 4453 const C() : x = E.values; |
| 4554 } | 4454 } |
| 4555 '''); | 4455 '''); |
| 4556 checkConstCycle('C', hasCycle: false); | 4456 checkConstCycle('C', hasCycle: false); |
| 4557 } | 4457 } |
| 4558 | 4458 |
| 4559 test_constructorCycle_referenceToGenericParameter() { | 4459 test_constructorCycle_referenceToGenericParameter() { |
| 4560 // It's not valid Dart but we need to make sure it doesn't crash | 4460 // It's not valid Dart but we need to make sure it doesn't crash |
| 4561 // summary generation. | 4461 // summary generation. |
| 4562 serializeLibraryText( | 4462 serializeLibraryText(''' |
| 4563 ''' | |
| 4564 class C<T> { | 4463 class C<T> { |
| 4565 final x; | 4464 final x; |
| 4566 const C() : x = T; | 4465 const C() : x = T; |
| 4567 } | 4466 } |
| 4568 ''', | 4467 ''', allowErrors: true); |
| 4569 allowErrors: true); | |
| 4570 checkConstCycle('C', hasCycle: false); | 4468 checkConstCycle('C', hasCycle: false); |
| 4571 } | 4469 } |
| 4572 | 4470 |
| 4573 test_constructorCycle_referenceToGenericParameter_asSupertype() { | 4471 test_constructorCycle_referenceToGenericParameter_asSupertype() { |
| 4574 // It's not valid Dart but we need to make sure it doesn't crash | 4472 // It's not valid Dart but we need to make sure it doesn't crash |
| 4575 // summary generation. | 4473 // summary generation. |
| 4576 serializeLibraryText( | 4474 serializeLibraryText(''' |
| 4577 ''' | |
| 4578 class C<T> extends T { | 4475 class C<T> extends T { |
| 4579 const C(); | 4476 const C(); |
| 4580 } | 4477 } |
| 4581 ''', | 4478 ''', allowErrors: true); |
| 4582 allowErrors: true); | |
| 4583 checkConstCycle('C', hasCycle: false); | 4479 checkConstCycle('C', hasCycle: false); |
| 4584 } | 4480 } |
| 4585 | 4481 |
| 4586 test_constructorCycle_referenceToStaticMethod_inOtherClass() { | 4482 test_constructorCycle_referenceToStaticMethod_inOtherClass() { |
| 4587 serializeLibraryText(''' | 4483 serializeLibraryText(''' |
| 4588 class C { | 4484 class C { |
| 4589 final x; | 4485 final x; |
| 4590 const C() : x = D.f; | 4486 const C() : x = D.f; |
| 4591 } | 4487 } |
| 4592 class D { | 4488 class D { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4625 final x; | 4521 final x; |
| 4626 const C() : x = F; | 4522 const C() : x = F; |
| 4627 } | 4523 } |
| 4628 '''); | 4524 '''); |
| 4629 checkConstCycle('C', hasCycle: false); | 4525 checkConstCycle('C', hasCycle: false); |
| 4630 } | 4526 } |
| 4631 | 4527 |
| 4632 test_constructorCycle_referenceToUndefinedName() { | 4528 test_constructorCycle_referenceToUndefinedName() { |
| 4633 // It's not valid Dart but we need to make sure it doesn't crash | 4529 // It's not valid Dart but we need to make sure it doesn't crash |
| 4634 // summary generation. | 4530 // summary generation. |
| 4635 serializeLibraryText( | 4531 serializeLibraryText(''' |
| 4636 ''' | |
| 4637 class C { | 4532 class C { |
| 4638 final x; | 4533 final x; |
| 4639 const C() : x = foo; | 4534 const C() : x = foo; |
| 4640 } | 4535 } |
| 4641 ''', | 4536 ''', allowErrors: true); |
| 4642 allowErrors: true); | |
| 4643 checkConstCycle('C', hasCycle: false); | 4537 checkConstCycle('C', hasCycle: false); |
| 4644 } | 4538 } |
| 4645 | 4539 |
| 4646 test_constructorCycle_referenceToUndefinedName_viaPrefix() { | 4540 test_constructorCycle_referenceToUndefinedName_viaPrefix() { |
| 4647 // It's not valid Dart but we need to make sure it doesn't crash | 4541 // It's not valid Dart but we need to make sure it doesn't crash |
| 4648 // summary generation. | 4542 // summary generation. |
| 4649 addNamedSource('/a.dart', ''); | 4543 addNamedSource('/a.dart', ''); |
| 4650 serializeLibraryText( | 4544 serializeLibraryText(''' |
| 4651 ''' | |
| 4652 import 'a.dart' as a; | 4545 import 'a.dart' as a; |
| 4653 class C { | 4546 class C { |
| 4654 final x; | 4547 final x; |
| 4655 const C() : x = a.foo; | 4548 const C() : x = a.foo; |
| 4656 } | 4549 } |
| 4657 ''', | 4550 ''', allowErrors: true); |
| 4658 allowErrors: true); | |
| 4659 checkConstCycle('C', hasCycle: false); | 4551 checkConstCycle('C', hasCycle: false); |
| 4660 } | 4552 } |
| 4661 | 4553 |
| 4662 test_constructorCycle_referenceToUndefinedName_viaPrefix_nonExistentFile() { | 4554 test_constructorCycle_referenceToUndefinedName_viaPrefix_nonExistentFile() { |
| 4663 // It's not valid Dart but we need to make sure it doesn't crash | 4555 // It's not valid Dart but we need to make sure it doesn't crash |
| 4664 // summary generation. | 4556 // summary generation. |
| 4665 allowMissingFiles = true; | 4557 allowMissingFiles = true; |
| 4666 serializeLibraryText( | 4558 serializeLibraryText(''' |
| 4667 ''' | |
| 4668 import 'a.dart' as a; | 4559 import 'a.dart' as a; |
| 4669 class C { | 4560 class C { |
| 4670 final x; | 4561 final x; |
| 4671 const C() : x = a.foo; | 4562 const C() : x = a.foo; |
| 4672 } | 4563 } |
| 4673 ''', | 4564 ''', allowErrors: true); |
| 4674 allowErrors: true); | |
| 4675 checkConstCycle('C', hasCycle: false); | 4565 checkConstCycle('C', hasCycle: false); |
| 4676 } | 4566 } |
| 4677 | 4567 |
| 4678 test_constructorCycle_trivial() { | 4568 test_constructorCycle_trivial() { |
| 4679 serializeLibraryText( | 4569 serializeLibraryText(''' |
| 4680 ''' | |
| 4681 class C { | 4570 class C { |
| 4682 const C() : this(); | 4571 const C() : this(); |
| 4683 } | 4572 } |
| 4684 ''', | 4573 ''', allowErrors: true); |
| 4685 allowErrors: true); | |
| 4686 checkConstCycle('C'); | 4574 checkConstCycle('C'); |
| 4687 } | 4575 } |
| 4688 | 4576 |
| 4689 test_constructorCycle_viaFactoryRedirect() { | 4577 test_constructorCycle_viaFactoryRedirect() { |
| 4690 serializeLibraryText( | 4578 serializeLibraryText(''' |
| 4691 ''' | |
| 4692 class C { | 4579 class C { |
| 4693 const C(); | 4580 const C(); |
| 4694 const factory C.named() = D; | 4581 const factory C.named() = D; |
| 4695 } | 4582 } |
| 4696 class D extends C { | 4583 class D extends C { |
| 4697 final x; | 4584 final x; |
| 4698 const D() : x = y; | 4585 const D() : x = y; |
| 4699 } | 4586 } |
| 4700 const y = const C.named(); | 4587 const y = const C.named(); |
| 4701 ''', | 4588 ''', allowErrors: true); |
| 4702 allowErrors: true); | |
| 4703 checkConstCycle('C', hasCycle: false); | 4589 checkConstCycle('C', hasCycle: false); |
| 4704 checkConstCycle('C', name: 'named'); | 4590 checkConstCycle('C', name: 'named'); |
| 4705 checkConstCycle('D'); | 4591 checkConstCycle('D'); |
| 4706 } | 4592 } |
| 4707 | 4593 |
| 4708 test_constructorCycle_viaFinalField() { | 4594 test_constructorCycle_viaFinalField() { |
| 4709 serializeLibraryText( | 4595 serializeLibraryText(''' |
| 4710 ''' | |
| 4711 class C { | 4596 class C { |
| 4712 final x = const C(); | 4597 final x = const C(); |
| 4713 const C(); | 4598 const C(); |
| 4714 } | 4599 } |
| 4715 ''', | 4600 ''', allowErrors: true); |
| 4716 allowErrors: true); | |
| 4717 checkConstCycle('C'); | 4601 checkConstCycle('C'); |
| 4718 } | 4602 } |
| 4719 | 4603 |
| 4720 test_constructorCycle_viaLength() { | 4604 test_constructorCycle_viaLength() { |
| 4721 // It's not valid Dart but we need to make sure it doesn't crash | 4605 // It's not valid Dart but we need to make sure it doesn't crash |
| 4722 // summary generation. | 4606 // summary generation. |
| 4723 serializeLibraryText( | 4607 serializeLibraryText(''' |
| 4724 ''' | |
| 4725 class C { | 4608 class C { |
| 4726 final x; | 4609 final x; |
| 4727 const C() : x = y.length; | 4610 const C() : x = y.length; |
| 4728 } | 4611 } |
| 4729 const y = const C(); | 4612 const y = const C(); |
| 4730 ''', | 4613 ''', allowErrors: true); |
| 4731 allowErrors: true); | |
| 4732 checkConstCycle('C'); | 4614 checkConstCycle('C'); |
| 4733 } | 4615 } |
| 4734 | 4616 |
| 4735 test_constructorCycle_viaNamedConstructor() { | 4617 test_constructorCycle_viaNamedConstructor() { |
| 4736 serializeLibraryText(''' | 4618 serializeLibraryText(''' |
| 4737 class C { | 4619 class C { |
| 4738 final x; | 4620 final x; |
| 4739 const C() : x = const D.named(); | 4621 const C() : x = const D.named(); |
| 4740 } | 4622 } |
| 4741 class D { | 4623 class D { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4773 const C.named() : super.named(); | 4655 const C.named() : super.named(); |
| 4774 } | 4656 } |
| 4775 '''); | 4657 '''); |
| 4776 checkConstCycle('B', hasCycle: false); | 4658 checkConstCycle('B', hasCycle: false); |
| 4777 checkConstCycle('B', name: 'named', hasCycle: false); | 4659 checkConstCycle('B', name: 'named', hasCycle: false); |
| 4778 checkConstCycle('C', hasCycle: false); | 4660 checkConstCycle('C', hasCycle: false); |
| 4779 checkConstCycle('C', name: 'named', hasCycle: false); | 4661 checkConstCycle('C', name: 'named', hasCycle: false); |
| 4780 } | 4662 } |
| 4781 | 4663 |
| 4782 test_constructorCycle_viaRedirectArgument() { | 4664 test_constructorCycle_viaRedirectArgument() { |
| 4783 serializeLibraryText( | 4665 serializeLibraryText(''' |
| 4784 ''' | |
| 4785 class C { | 4666 class C { |
| 4786 final x; | 4667 final x; |
| 4787 const C() : this.named(y); | 4668 const C() : this.named(y); |
| 4788 const C.named(this.x); | 4669 const C.named(this.x); |
| 4789 } | 4670 } |
| 4790 const y = const C(); | 4671 const y = const C(); |
| 4791 ''', | 4672 ''', allowErrors: true); |
| 4792 allowErrors: true); | |
| 4793 checkConstCycle('C'); | 4673 checkConstCycle('C'); |
| 4794 checkConstCycle('C', name: 'named', hasCycle: false); | 4674 checkConstCycle('C', name: 'named', hasCycle: false); |
| 4795 } | 4675 } |
| 4796 | 4676 |
| 4797 test_constructorCycle_viaStaticField_inOtherClass() { | 4677 test_constructorCycle_viaStaticField_inOtherClass() { |
| 4798 serializeLibraryText( | 4678 serializeLibraryText(''' |
| 4799 ''' | |
| 4800 class C { | 4679 class C { |
| 4801 final x; | 4680 final x; |
| 4802 const C() : x = D.y; | 4681 const C() : x = D.y; |
| 4803 } | 4682 } |
| 4804 class D { | 4683 class D { |
| 4805 static const y = const C(); | 4684 static const y = const C(); |
| 4806 } | 4685 } |
| 4807 ''', | 4686 ''', allowErrors: true); |
| 4808 allowErrors: true); | |
| 4809 checkConstCycle('C'); | 4687 checkConstCycle('C'); |
| 4810 } | 4688 } |
| 4811 | 4689 |
| 4812 test_constructorCycle_viaStaticField_inSameClass() { | 4690 test_constructorCycle_viaStaticField_inSameClass() { |
| 4813 serializeLibraryText( | 4691 serializeLibraryText(''' |
| 4814 ''' | |
| 4815 class C { | 4692 class C { |
| 4816 final x; | 4693 final x; |
| 4817 static const y = const C(); | 4694 static const y = const C(); |
| 4818 const C() : x = y; | 4695 const C() : x = y; |
| 4819 } | 4696 } |
| 4820 ''', | 4697 ''', allowErrors: true); |
| 4821 allowErrors: true); | |
| 4822 checkConstCycle('C'); | 4698 checkConstCycle('C'); |
| 4823 } | 4699 } |
| 4824 | 4700 |
| 4825 test_constructorCycle_viaSuperArgument() { | 4701 test_constructorCycle_viaSuperArgument() { |
| 4826 serializeLibraryText( | 4702 serializeLibraryText(''' |
| 4827 ''' | |
| 4828 class B { | 4703 class B { |
| 4829 final x; | 4704 final x; |
| 4830 const B(this.x); | 4705 const B(this.x); |
| 4831 } | 4706 } |
| 4832 class C extends B { | 4707 class C extends B { |
| 4833 const C() : super(y); | 4708 const C() : super(y); |
| 4834 } | 4709 } |
| 4835 const y = const C(); | 4710 const y = const C(); |
| 4836 ''', | 4711 ''', allowErrors: true); |
| 4837 allowErrors: true); | |
| 4838 checkConstCycle('B', hasCycle: false); | 4712 checkConstCycle('B', hasCycle: false); |
| 4839 checkConstCycle('C'); | 4713 checkConstCycle('C'); |
| 4840 } | 4714 } |
| 4841 | 4715 |
| 4842 test_constructorCycle_viaSupertype() { | 4716 test_constructorCycle_viaSupertype() { |
| 4843 serializeLibraryText(''' | 4717 serializeLibraryText(''' |
| 4844 class C { | 4718 class C { |
| 4845 final x; | 4719 final x; |
| 4846 const C() : x = const D(); | 4720 const C() : x = const D(); |
| 4847 } | 4721 } |
| 4848 class D extends C { | 4722 class D extends C { |
| 4849 const D(); | 4723 const D(); |
| 4850 } | 4724 } |
| 4851 '''); | 4725 '''); |
| 4852 checkConstCycle('C'); | 4726 checkConstCycle('C'); |
| 4853 checkConstCycle('D'); | 4727 checkConstCycle('D'); |
| 4854 } | 4728 } |
| 4855 | 4729 |
| 4856 test_constructorCycle_viaSupertype_Enum() { | 4730 test_constructorCycle_viaSupertype_Enum() { |
| 4857 // It's not valid Dart but we need to make sure it doesn't crash | 4731 // It's not valid Dart but we need to make sure it doesn't crash |
| 4858 // summary generation. | 4732 // summary generation. |
| 4859 serializeLibraryText( | 4733 serializeLibraryText(''' |
| 4860 ''' | |
| 4861 enum E { v } | 4734 enum E { v } |
| 4862 class C extends E { | 4735 class C extends E { |
| 4863 const C(); | 4736 const C(); |
| 4864 } | 4737 } |
| 4865 ''', | 4738 ''', allowErrors: true); |
| 4866 allowErrors: true); | |
| 4867 checkConstCycle('C', hasCycle: false); | 4739 checkConstCycle('C', hasCycle: false); |
| 4868 } | 4740 } |
| 4869 | 4741 |
| 4870 test_constructorCycle_viaSupertype_explicit() { | 4742 test_constructorCycle_viaSupertype_explicit() { |
| 4871 serializeLibraryText(''' | 4743 serializeLibraryText(''' |
| 4872 class C { | 4744 class C { |
| 4873 final x; | 4745 final x; |
| 4874 const C() : x = const D(); | 4746 const C() : x = const D(); |
| 4875 const C.named() : x = const D.named(); | 4747 const C.named() : x = const D.named(); |
| 4876 } | 4748 } |
| 4877 class D extends C { | 4749 class D extends C { |
| 4878 const D() : super(); | 4750 const D() : super(); |
| 4879 const D.named() : super.named(); | 4751 const D.named() : super.named(); |
| 4880 } | 4752 } |
| 4881 '''); | 4753 '''); |
| 4882 checkConstCycle('C'); | 4754 checkConstCycle('C'); |
| 4883 checkConstCycle('C', name: 'named'); | 4755 checkConstCycle('C', name: 'named'); |
| 4884 checkConstCycle('D'); | 4756 checkConstCycle('D'); |
| 4885 checkConstCycle('D', name: 'named'); | 4757 checkConstCycle('D', name: 'named'); |
| 4886 } | 4758 } |
| 4887 | 4759 |
| 4888 test_constructorCycle_viaSupertype_explicit_undefined() { | 4760 test_constructorCycle_viaSupertype_explicit_undefined() { |
| 4889 // It's not valid Dart but we need to make sure it doesn't crash | 4761 // It's not valid Dart but we need to make sure it doesn't crash |
| 4890 // summary generation. | 4762 // summary generation. |
| 4891 serializeLibraryText( | 4763 serializeLibraryText(''' |
| 4892 ''' | |
| 4893 class C { | 4764 class C { |
| 4894 final x; | 4765 final x; |
| 4895 const C() : x = const D(); | 4766 const C() : x = const D(); |
| 4896 } | 4767 } |
| 4897 class D extends C { | 4768 class D extends C { |
| 4898 const D() : super.named(); | 4769 const D() : super.named(); |
| 4899 } | 4770 } |
| 4900 ''', | 4771 ''', allowErrors: true); |
| 4901 allowErrors: true); | |
| 4902 checkConstCycle('C', hasCycle: false); | 4772 checkConstCycle('C', hasCycle: false); |
| 4903 checkConstCycle('D', hasCycle: false); | 4773 checkConstCycle('D', hasCycle: false); |
| 4904 } | 4774 } |
| 4905 | 4775 |
| 4906 test_constructorCycle_viaSupertype_withDefaultTypeArgument() { | 4776 test_constructorCycle_viaSupertype_withDefaultTypeArgument() { |
| 4907 serializeLibraryText(''' | 4777 serializeLibraryText(''' |
| 4908 class C<T> { | 4778 class C<T> { |
| 4909 final x; | 4779 final x; |
| 4910 const C() : x = const D(); | 4780 const C() : x = const D(); |
| 4911 } | 4781 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 4925 } | 4795 } |
| 4926 class D extends C<int> { | 4796 class D extends C<int> { |
| 4927 const D(); | 4797 const D(); |
| 4928 } | 4798 } |
| 4929 '''); | 4799 '''); |
| 4930 checkConstCycle('C'); | 4800 checkConstCycle('C'); |
| 4931 checkConstCycle('D'); | 4801 checkConstCycle('D'); |
| 4932 } | 4802 } |
| 4933 | 4803 |
| 4934 test_constructorCycle_viaTopLevelVariable() { | 4804 test_constructorCycle_viaTopLevelVariable() { |
| 4935 serializeLibraryText( | 4805 serializeLibraryText(''' |
| 4936 ''' | |
| 4937 class C { | 4806 class C { |
| 4938 final x; | 4807 final x; |
| 4939 const C() : x = y; | 4808 const C() : x = y; |
| 4940 } | 4809 } |
| 4941 const y = const C(); | 4810 const y = const C(); |
| 4942 ''', | 4811 ''', allowErrors: true); |
| 4943 allowErrors: true); | |
| 4944 checkConstCycle('C'); | 4812 checkConstCycle('C'); |
| 4945 } | 4813 } |
| 4946 | 4814 |
| 4947 test_constructorCycle_viaTopLevelVariable_imported() { | 4815 test_constructorCycle_viaTopLevelVariable_imported() { |
| 4948 addNamedSource( | 4816 addNamedSource('/a.dart', ''' |
| 4949 '/a.dart', | |
| 4950 ''' | |
| 4951 import 'test.dart'; | 4817 import 'test.dart'; |
| 4952 const y = const C(); | 4818 const y = const C(); |
| 4953 '''); | 4819 '''); |
| 4954 serializeLibraryText( | 4820 serializeLibraryText(''' |
| 4955 ''' | |
| 4956 import 'a.dart'; | 4821 import 'a.dart'; |
| 4957 class C { | 4822 class C { |
| 4958 final x; | 4823 final x; |
| 4959 const C() : x = y; | 4824 const C() : x = y; |
| 4960 } | 4825 } |
| 4961 ''', | 4826 ''', allowErrors: true); |
| 4962 allowErrors: true); | |
| 4963 checkConstCycle('C'); | 4827 checkConstCycle('C'); |
| 4964 } | 4828 } |
| 4965 | 4829 |
| 4966 test_constructorCycle_viaTopLevelVariable_importedViaPrefix() { | 4830 test_constructorCycle_viaTopLevelVariable_importedViaPrefix() { |
| 4967 addNamedSource( | 4831 addNamedSource('/a.dart', ''' |
| 4968 '/a.dart', | |
| 4969 ''' | |
| 4970 import 'test.dart'; | 4832 import 'test.dart'; |
| 4971 const y = const C(); | 4833 const y = const C(); |
| 4972 '''); | 4834 '''); |
| 4973 serializeLibraryText( | 4835 serializeLibraryText(''' |
| 4974 ''' | |
| 4975 import 'a.dart' as a; | 4836 import 'a.dart' as a; |
| 4976 class C { | 4837 class C { |
| 4977 final x; | 4838 final x; |
| 4978 const C() : x = a.y; | 4839 const C() : x = a.y; |
| 4979 } | 4840 } |
| 4980 ''', | 4841 ''', allowErrors: true); |
| 4981 allowErrors: true); | |
| 4982 checkConstCycle('C'); | 4842 checkConstCycle('C'); |
| 4983 } | 4843 } |
| 4984 | 4844 |
| 4985 test_dependencies_export_to_export_unused() { | 4845 test_dependencies_export_to_export_unused() { |
| 4986 addNamedSource('/a.dart', 'export "b.dart";'); | 4846 addNamedSource('/a.dart', 'export "b.dart";'); |
| 4987 addNamedSource('/b.dart', ''); | 4847 addNamedSource('/b.dart', ''); |
| 4988 serializeLibraryText('export "a.dart";'); | 4848 serializeLibraryText('export "a.dart";'); |
| 4989 // The main test library depends on b.dart, even though it doesn't | 4849 // The main test library depends on b.dart, even though it doesn't |
| 4990 // re-export any names defined in b.dart, because a change to b.dart might | 4850 // re-export any names defined in b.dart, because a change to b.dart might |
| 4991 // cause it to start exporting a name that the main test library *does* | 4851 // cause it to start exporting a name that the main test library *does* |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5112 'library d; part "e/f.dart"; part "g/h.dart"; class D {}'); | 4972 'library d; part "e/f.dart"; part "g/h.dart"; class D {}'); |
| 5113 addNamedSource('/a/c/e/f.dart', 'part of d;'); | 4973 addNamedSource('/a/c/e/f.dart', 'part of d;'); |
| 5114 addNamedSource('/a/c/g/h.dart', 'part of d;'); | 4974 addNamedSource('/a/c/g/h.dart', 'part of d;'); |
| 5115 serializeLibraryText('import "a/b.dart"; D d;'); | 4975 serializeLibraryText('import "a/b.dart"; D d;'); |
| 5116 int dep = checkHasDependency(absUri('/a/c/d.dart')); | 4976 int dep = checkHasDependency(absUri('/a/c/d.dart')); |
| 5117 checkDependencyParts(linked.dependencies[dep], | 4977 checkDependencyParts(linked.dependencies[dep], |
| 5118 [absUri('/a/c/e/f.dart'), absUri('/a/c/g/h.dart')]); | 4978 [absUri('/a/c/e/f.dart'), absUri('/a/c/g/h.dart')]); |
| 5119 } | 4979 } |
| 5120 | 4980 |
| 5121 test_elements_in_part() { | 4981 test_elements_in_part() { |
| 5122 addNamedSource( | 4982 addNamedSource('/part1.dart', ''' |
| 5123 '/part1.dart', | |
| 5124 ''' | |
| 5125 part of my.lib; | 4983 part of my.lib; |
| 5126 | 4984 |
| 5127 class C {} | 4985 class C {} |
| 5128 enum E { v } | 4986 enum E { v } |
| 5129 var v; | 4987 var v; |
| 5130 f() {} | 4988 f() {} |
| 5131 typedef F(); | 4989 typedef F(); |
| 5132 '''); | 4990 '''); |
| 5133 serializeLibraryText('library my.lib; part "part1.dart";'); | 4991 serializeLibraryText('library my.lib; part "part1.dart";'); |
| 5134 UnlinkedUnit unit = unlinkedUnits[1]; | 4992 UnlinkedUnit unit = unlinkedUnits[1]; |
| (...skipping 1432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6567 referenceValidators: [ | 6425 referenceValidators: [ |
| 6568 (EntityRef r) => checkTypeRef(r, null, 'a', | 6426 (EntityRef r) => checkTypeRef(r, null, 'a', |
| 6569 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 6427 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
| 6570 ]); | 6428 ]); |
| 6571 } | 6429 } |
| 6572 | 6430 |
| 6573 test_expr_assignToRef_topLevelVariable_imported() { | 6431 test_expr_assignToRef_topLevelVariable_imported() { |
| 6574 if (skipNonConstInitializers) { | 6432 if (skipNonConstInitializers) { |
| 6575 return; | 6433 return; |
| 6576 } | 6434 } |
| 6577 addNamedSource( | 6435 addNamedSource('/a.dart', ''' |
| 6578 '/a.dart', | |
| 6579 ''' | |
| 6580 int a = 0; | 6436 int a = 0; |
| 6581 '''); | 6437 '''); |
| 6582 UnlinkedVariable variable = serializeVariableText(''' | 6438 UnlinkedVariable variable = serializeVariableText(''' |
| 6583 import 'a.dart'; | 6439 import 'a.dart'; |
| 6584 final v = (a = 1); | 6440 final v = (a = 1); |
| 6585 '''); | 6441 '''); |
| 6586 assertUnlinkedConst(variable.initializer.bodyExpr, | 6442 assertUnlinkedConst(variable.initializer.bodyExpr, |
| 6587 isValidConst: false, | 6443 isValidConst: false, |
| 6588 operators: [ | 6444 operators: [ |
| 6589 UnlinkedExprOperation.pushInt, | 6445 UnlinkedExprOperation.pushInt, |
| 6590 UnlinkedExprOperation.assignToRef, | 6446 UnlinkedExprOperation.assignToRef, |
| 6591 ], | 6447 ], |
| 6592 assignmentOperators: [ | 6448 assignmentOperators: [ |
| 6593 (UnlinkedExprAssignOperator.assign) | 6449 (UnlinkedExprAssignOperator.assign) |
| 6594 ], | 6450 ], |
| 6595 ints: [ | 6451 ints: [ |
| 6596 1, | 6452 1, |
| 6597 ], | 6453 ], |
| 6598 strings: [], | 6454 strings: [], |
| 6599 referenceValidators: [ | 6455 referenceValidators: [ |
| 6600 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a', | 6456 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a', |
| 6601 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 6457 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
| 6602 ]); | 6458 ]); |
| 6603 } | 6459 } |
| 6604 | 6460 |
| 6605 test_expr_assignToRef_topLevelVariable_imported_withPrefix() { | 6461 test_expr_assignToRef_topLevelVariable_imported_withPrefix() { |
| 6606 if (skipNonConstInitializers) { | 6462 if (skipNonConstInitializers) { |
| 6607 return; | 6463 return; |
| 6608 } | 6464 } |
| 6609 addNamedSource( | 6465 addNamedSource('/a.dart', ''' |
| 6610 '/a.dart', | |
| 6611 ''' | |
| 6612 int a = 0; | 6466 int a = 0; |
| 6613 '''); | 6467 '''); |
| 6614 UnlinkedVariable variable = serializeVariableText(''' | 6468 UnlinkedVariable variable = serializeVariableText(''' |
| 6615 import 'a.dart' as p; | 6469 import 'a.dart' as p; |
| 6616 final v = (p.a = 1); | 6470 final v = (p.a = 1); |
| 6617 '''); | 6471 '''); |
| 6618 assertUnlinkedConst(variable.initializer.bodyExpr, | 6472 assertUnlinkedConst(variable.initializer.bodyExpr, |
| 6619 isValidConst: false, | 6473 isValidConst: false, |
| 6620 operators: [ | 6474 operators: [ |
| 6621 UnlinkedExprOperation.pushInt, | 6475 UnlinkedExprOperation.pushInt, |
| (...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7207 new _PrefixExpectation( | 7061 new _PrefixExpectation( |
| 7208 ReferenceKind.topLevelPropertyAccessor, 'a') | 7062 ReferenceKind.topLevelPropertyAccessor, 'a') |
| 7209 ]) | 7063 ]) |
| 7210 ]); | 7064 ]); |
| 7211 } | 7065 } |
| 7212 | 7066 |
| 7213 test_expr_invokeMethodRef_static_importedWithPrefix() { | 7067 test_expr_invokeMethodRef_static_importedWithPrefix() { |
| 7214 if (skipNonConstInitializers) { | 7068 if (skipNonConstInitializers) { |
| 7215 return; | 7069 return; |
| 7216 } | 7070 } |
| 7217 addNamedSource( | 7071 addNamedSource('/a.dart', ''' |
| 7218 '/a.dart', | |
| 7219 ''' | |
| 7220 class C { | 7072 class C { |
| 7221 static int m() => 42; | 7073 static int m() => 42; |
| 7222 } | 7074 } |
| 7223 '''); | 7075 '''); |
| 7224 UnlinkedVariable variable = serializeVariableText(''' | 7076 UnlinkedVariable variable = serializeVariableText(''' |
| 7225 import 'a.dart' as p; | 7077 import 'a.dart' as p; |
| 7226 final v = p.C.m(); | 7078 final v = p.C.m(); |
| 7227 '''); | 7079 '''); |
| 7228 assertUnlinkedConst(variable.initializer.bodyExpr, | 7080 assertUnlinkedConst(variable.initializer.bodyExpr, |
| 7229 isValidConst: false, | 7081 isValidConst: false, |
| (...skipping 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8388 } | 8240 } |
| 8389 | 8241 |
| 8390 test_initializer_executable_with_return_type_from_closure_field() { | 8242 test_initializer_executable_with_return_type_from_closure_field() { |
| 8391 if (skipFullyLinkedData) { | 8243 if (skipFullyLinkedData) { |
| 8392 return; | 8244 return; |
| 8393 } | 8245 } |
| 8394 // The synthetic executable for `v` has type `() => () => int`, where the | 8246 // The synthetic executable for `v` has type `() => () => int`, where the |
| 8395 // `() => int` part refers to the closure declared inside the initializer | 8247 // `() => int` part refers to the closure declared inside the initializer |
| 8396 // for v. Note: `v` is mis-typed as `int` to prevent type propagation, | 8248 // for v. Note: `v` is mis-typed as `int` to prevent type propagation, |
| 8397 // which would complicate the test. | 8249 // which would complicate the test. |
| 8398 UnlinkedClass cls = serializeClassText( | 8250 UnlinkedClass cls = serializeClassText(''' |
| 8399 ''' | |
| 8400 class C { | 8251 class C { |
| 8401 int v = () => 0; | 8252 int v = () => 0; |
| 8402 } | 8253 } |
| 8403 ''', | 8254 ''', allowErrors: true); |
| 8404 allowErrors: true); | |
| 8405 UnlinkedVariable variable = cls.fields[0]; | 8255 UnlinkedVariable variable = cls.fields[0]; |
| 8406 EntityRef closureType = | 8256 EntityRef closureType = |
| 8407 getTypeRefForSlot(variable.initializer.inferredReturnTypeSlot); | 8257 getTypeRefForSlot(variable.initializer.inferredReturnTypeSlot); |
| 8408 checkLinkedTypeRef(closureType, null, '', | 8258 checkLinkedTypeRef(closureType, null, '', |
| 8409 expectedKind: ReferenceKind.function); | 8259 expectedKind: ReferenceKind.function); |
| 8410 int initializerIndex = | 8260 int initializerIndex = |
| 8411 definingUnit.references[closureType.reference].containingReference; | 8261 definingUnit.references[closureType.reference].containingReference; |
| 8412 checkReferenceIndex(initializerIndex, null, '', | 8262 checkReferenceIndex(initializerIndex, null, '', |
| 8413 expectedKind: ReferenceKind.function); | 8263 expectedKind: ReferenceKind.function); |
| 8414 int variableIndex = | 8264 int variableIndex = |
| (...skipping 1884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10299 */ | 10149 */ |
| 10300 class _PrefixExpectation { | 10150 class _PrefixExpectation { |
| 10301 final ReferenceKind kind; | 10151 final ReferenceKind kind; |
| 10302 final String name; | 10152 final String name; |
| 10303 final String absoluteUri; | 10153 final String absoluteUri; |
| 10304 final int numTypeParameters; | 10154 final int numTypeParameters; |
| 10305 | 10155 |
| 10306 _PrefixExpectation(this.kind, this.name, | 10156 _PrefixExpectation(this.kind, this.name, |
| 10307 {this.absoluteUri, this.numTypeParameters: 0}); | 10157 {this.absoluteUri, this.numTypeParameters: 0}); |
| 10308 } | 10158 } |
| OLD | NEW |