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

Side by Side Diff: pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart

Issue 2984153002: Start marking @_fastaProblem, fix for unresolved mixin, fix for type parameter context. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/analyzer/test/src/summary/resynthesize_common.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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.resynthesize_kernel_test; 5 library analyzer.test.src.summary.resynthesize_kernel_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; 10 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
(...skipping 22 matching lines...) Expand all
33 33
34 import '../context/mock_sdk.dart'; 34 import '../context/mock_sdk.dart';
35 import 'resynthesize_common.dart'; 35 import 'resynthesize_common.dart';
36 36
37 main() { 37 main() {
38 defineReflectiveSuite(() { 38 defineReflectiveSuite(() {
39 defineReflectiveTests(ResynthesizeKernelStrongTest); 39 defineReflectiveTests(ResynthesizeKernelStrongTest);
40 }); 40 });
41 } 41 }
42 42
43 /// Tests marked with this annotation fail because of a Fasta problem.
44 const _fastaProblem = const Object();
45
43 @reflectiveTest 46 @reflectiveTest
44 class ResynthesizeKernelStrongTest extends ResynthesizeTest { 47 class ResynthesizeKernelStrongTest extends ResynthesizeTest {
45 final resourceProvider = new MemoryResourceProvider(context: pathos.posix); 48 final resourceProvider = new MemoryResourceProvider(context: pathos.posix);
46 49
47 @override 50 @override
48 bool get isSharedFrontEnd => true; 51 bool get isSharedFrontEnd => true;
49 52
50 @override 53 @override
51 bool get isStrongMode => true; 54 bool get isStrongMode => true;
52 55
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 // TODO(scheglov): implement encodeDecodeLibrarySource 110 // TODO(scheglov): implement encodeDecodeLibrarySource
108 throw new UnimplementedError(); 111 throw new UnimplementedError();
109 } 112 }
110 113
111 @failingTest 114 @failingTest
112 test_class_alias_documented() async { 115 test_class_alias_documented() async {
113 await super.test_class_alias_documented(); 116 await super.test_class_alias_documented();
114 } 117 }
115 118
116 @failingTest 119 @failingTest
117 test_class_alias_with_forwarding_constructors_type_substitution() async { 120 @_fastaProblem
118 await super
119 .test_class_alias_with_forwarding_constructors_type_substitution();
120 }
121
122 @failingTest
123 test_class_alias_with_forwarding_constructors_type_substitution_complex() asyn c {
124 await super
125 .test_class_alias_with_forwarding_constructors_type_substitution_complex ();
126 }
127
128 @failingTest
129 test_class_constructor_field_formal_multiple_matching_fields() async { 121 test_class_constructor_field_formal_multiple_matching_fields() async {
130 // Fasta does not generate the class. 122 // Fasta does not generate the class.
131 // main() with a fatal error is generated instead. 123 // main() with a fatal error is generated instead.
132 await super.test_class_constructor_field_formal_multiple_matching_fields(); 124 await super.test_class_constructor_field_formal_multiple_matching_fields();
133 } 125 }
134 126
135 @failingTest 127 @failingTest
136 test_class_documented_tripleSlash() async { 128 test_class_documented_tripleSlash() async {
137 await super.test_class_documented_tripleSlash(); 129 await super.test_class_documented_tripleSlash();
138 } 130 }
139 131
140 @failingTest 132 @failingTest
141 test_class_documented_withLeadingNotDocumentation() async { 133 test_class_documented_withLeadingNotDocumentation() async {
142 await super.test_class_documented_withLeadingNotDocumentation(); 134 await super.test_class_documented_withLeadingNotDocumentation();
143 } 135 }
144 136
145 @failingTest 137 @failingTest
138 @_fastaProblem
146 test_class_interfaces_unresolved() async { 139 test_class_interfaces_unresolved() async {
140 // Fasta generates additional `#errors` top-level variable.
147 await super.test_class_interfaces_unresolved(); 141 await super.test_class_interfaces_unresolved();
148 } 142 }
149 143
150 @failingTest 144 @failingTest
145 @_fastaProblem
151 test_class_mixins_unresolved() async { 146 test_class_mixins_unresolved() async {
147 // Fasta generates additional `#errors` top-level variable.
152 await super.test_class_mixins_unresolved(); 148 await super.test_class_mixins_unresolved();
153 } 149 }
154 150
155 @failingTest 151 @failingTest
152 @_fastaProblem
156 test_class_supertype_unresolved() async { 153 test_class_supertype_unresolved() async {
154 // Fasta generates additional `#errors` top-level variable.
157 await super.test_class_supertype_unresolved(); 155 await super.test_class_supertype_unresolved();
158 } 156 }
159 157
160 @failingTest 158 @failingTest
159 @_fastaProblem
161 test_class_type_parameters_bound() async { 160 test_class_type_parameters_bound() async {
161 // Fasta does not provide a flag for explicit vs. implicit Object bound.
162 await super.test_class_type_parameters_bound(); 162 await super.test_class_type_parameters_bound();
163 } 163 }
164 164
165 @failingTest 165 @failingTest
166 test_class_type_parameters_f_bound_complex() async {
167 await super.test_class_type_parameters_f_bound_complex();
168 }
169
170 @failingTest
171 test_closure_generic() async { 166 test_closure_generic() async {
172 await super.test_closure_generic(); 167 await super.test_closure_generic();
173 } 168 }
174 169
175 @failingTest 170 @failingTest
176 test_closure_in_variable_declaration_in_part() async { 171 test_closure_in_variable_declaration_in_part() async {
177 await super.test_closure_in_variable_declaration_in_part(); 172 await super.test_closure_in_variable_declaration_in_part();
178 } 173 }
179 174
180 @failingTest 175 @failingTest
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 await super 950 await super
956 .test_inferred_function_type_in_generic_class_in_generic_method(); 951 .test_inferred_function_type_in_generic_class_in_generic_method();
957 } 952 }
958 953
959 @failingTest 954 @failingTest
960 test_inferred_type_is_typedef() async { 955 test_inferred_type_is_typedef() async {
961 await super.test_inferred_type_is_typedef(); 956 await super.test_inferred_type_is_typedef();
962 } 957 }
963 958
964 @failingTest 959 @failingTest
965 test_inferred_type_refers_to_bound_type_param() async {
966 await super.test_inferred_type_refers_to_bound_type_param();
967 }
968
969 @failingTest
970 test_inferred_type_refers_to_function_typed_param_of_typedef() async { 960 test_inferred_type_refers_to_function_typed_param_of_typedef() async {
971 await super.test_inferred_type_refers_to_function_typed_param_of_typedef(); 961 await super.test_inferred_type_refers_to_function_typed_param_of_typedef();
972 } 962 }
973 963
974 @failingTest 964 @failingTest
975 test_inferred_type_refers_to_function_typed_parameter_type_generic_class() asy nc { 965 test_inferred_type_refers_to_function_typed_parameter_type_generic_class() asy nc {
976 await super 966 await super
977 .test_inferred_type_refers_to_function_typed_parameter_type_generic_clas s(); 967 .test_inferred_type_refers_to_function_typed_parameter_type_generic_clas s();
978 } 968 }
979 969
(...skipping 1131 matching lines...) Expand 10 before | Expand all | Expand 10 after
2111 2101
2112 @override 2102 @override
2113 Expression getExpression(kernel.Expression expression) { 2103 Expression getExpression(kernel.Expression expression) {
2114 return new _ExprBuilder(this).build(expression); 2104 return new _ExprBuilder(this).build(expression);
2115 } 2105 }
2116 2106
2117 @override 2107 @override
2118 InterfaceType getInterfaceType( 2108 InterfaceType getInterfaceType(
2119 ElementImpl context, kernel.Supertype kernelType) { 2109 ElementImpl context, kernel.Supertype kernelType) {
2120 return _getInterfaceType( 2110 return _getInterfaceType(
2121 kernelType.className.canonicalName, kernelType.typeArguments); 2111 context, kernelType.className.canonicalName, kernelType.typeArguments);
2122 } 2112 }
2123 2113
2124 @override 2114 @override
2125 LibraryElement getLibrary(String uriStr) { 2115 LibraryElement getLibrary(String uriStr) {
2126 return _resynthesizer.getLibrary(uriStr); 2116 return _resynthesizer.getLibrary(uriStr);
2127 } 2117 }
2128 2118
2129 DartType getType(ElementImpl context, kernel.DartType kernelType) { 2119 DartType getType(ElementImpl context, kernel.DartType kernelType) {
2130 if (kernelType is kernel.DynamicType) return DynamicTypeImpl.instance; 2120 if (kernelType is kernel.DynamicType) return DynamicTypeImpl.instance;
2131 if (kernelType is kernel.VoidType) return VoidTypeImpl.instance; 2121 if (kernelType is kernel.VoidType) return VoidTypeImpl.instance;
2132 if (kernelType is kernel.InterfaceType) { 2122 if (kernelType is kernel.InterfaceType) {
2133 return _getInterfaceType( 2123 return _getInterfaceType(context, kernelType.className.canonicalName,
2134 kernelType.className.canonicalName, kernelType.typeArguments); 2124 kernelType.typeArguments);
2135 } 2125 }
2136 if (kernelType is kernel.TypeParameterType) { 2126 if (kernelType is kernel.TypeParameterType) {
2137 kernel.TypeParameter kTypeParameter = kernelType.parameter; 2127 kernel.TypeParameter kTypeParameter = kernelType.parameter;
2138 return _getTypeParameter(context, kTypeParameter).type; 2128 return _getTypeParameter(context, kTypeParameter).type;
2139 } 2129 }
2140 // TODO(scheglov) Support other kernel types. 2130 // TODO(scheglov) Support other kernel types.
2141 throw new UnimplementedError('For ${kernelType.runtimeType}'); 2131 throw new UnimplementedError('For ${kernelType.runtimeType}');
2142 } 2132 }
2143 2133
2144 /** 2134 /**
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2207 return parentElement.getNamedConstructor(name.name) as ElementImpl; 2197 return parentElement.getNamedConstructor(name.name) as ElementImpl;
2208 } else if (isMethod) { 2198 } else if (isMethod) {
2209 return parentElement.getMethod(name.name) as ElementImpl; 2199 return parentElement.getMethod(name.name) as ElementImpl;
2210 } 2200 }
2211 return null; 2201 return null;
2212 } 2202 }
2213 2203
2214 throw new UnimplementedError('Should not be reached.'); 2204 throw new UnimplementedError('Should not be reached.');
2215 } 2205 }
2216 2206
2217 InterfaceType _getInterfaceType( 2207 InterfaceType _getInterfaceType(ElementImpl context,
2218 kernel.CanonicalName className, List<kernel.DartType> kernelArguments) { 2208 kernel.CanonicalName className, List<kernel.DartType> kernelArguments) {
2219 var libraryName = className.parent; 2209 var libraryName = className.parent;
2220 var libraryElement = _resynthesizer.getLibrary(libraryName.name); 2210 var libraryElement = _resynthesizer.getLibrary(libraryName.name);
2221 ClassElementImpl classElement = libraryElement.getType(className.name); 2211 ClassElementImpl classElement = libraryElement.getType(className.name);
2222 2212
2223 if (kernelArguments.isEmpty) { 2213 if (kernelArguments.isEmpty) {
2224 return classElement.type; 2214 return classElement.type;
2225 } 2215 }
2226 2216
2227 return new InterfaceTypeImpl.elementWithNameAndArgs( 2217 return new InterfaceTypeImpl.elementWithNameAndArgs(
2228 classElement, classElement.name, () { 2218 classElement, classElement.name, () {
2229 List<DartType> arguments = kernelArguments 2219 List<DartType> arguments = kernelArguments
2230 .map((kernel.DartType k) => getType(classElement, k)) 2220 .map((kernel.DartType k) => getType(context, k))
2231 .toList(growable: false); 2221 .toList(growable: false);
2232 return arguments; 2222 return arguments;
2233 }); 2223 });
2234 } 2224 }
2235 2225
2236 /// Return the [TypeParameterElement] for the given [kernelTypeParameter]. 2226 /// Return the [TypeParameterElement] for the given [kernelTypeParameter].
2237 TypeParameterElement _getTypeParameter( 2227 TypeParameterElement _getTypeParameter(
2238 ElementImpl context, kernel.TypeParameter kernelTypeParameter) { 2228 ElementImpl context, kernel.TypeParameter kernelTypeParameter) {
2239 String name = kernelTypeParameter.name; 2229 String name = kernelTypeParameter.name;
2240 for (var ctx = context; ctx != null; ctx = ctx.enclosingElement) { 2230 for (var ctx = context; ctx != null; ctx = ctx.enclosingElement) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2282 } 2272 }
2283 2273
2284 /** 2274 /**
2285 * Get the [Source] object for the given [uri]. 2275 * Get the [Source] object for the given [uri].
2286 */ 2276 */
2287 Source _getSource(String uri) { 2277 Source _getSource(String uri) {
2288 return _sources.putIfAbsent( 2278 return _sources.putIfAbsent(
2289 uri, () => _analysisContext.sourceFactory.forUri(uri)); 2279 uri, () => _analysisContext.sourceFactory.forUri(uri));
2290 } 2280 }
2291 } 2281 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/summary/resynthesize_common.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698