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

Side by Side Diff: pkg/analyzer/test/generated/resolver_test.dart

Issue 1445273002: Revert "Use FunctionElementImpl for inline function type parameters" (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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/lib/src/generated/resolver.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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library engine.resolver_test; 5 library engine.resolver_test;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/src/context/context.dart' as newContext; 9 import 'package:analyzer/src/context/context.dart' as newContext;
10 import 'package:analyzer/src/generated/ast.dart'; 10 import 'package:analyzer/src/generated/ast.dart';
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 futureConstructor.parameters = <ParameterElement>[ 200 futureConstructor.parameters = <ParameterElement>[
201 ElementFactory.positionalParameter2("value", provider.dynamicType) 201 ElementFactory.positionalParameter2("value", provider.dynamicType)
202 ]; 202 ];
203 futureConstructor.factory = true; 203 futureConstructor.factory = true;
204 futureElement.constructors = <ConstructorElement>[futureConstructor]; 204 futureElement.constructors = <ConstructorElement>[futureConstructor];
205 // Future then(onValue(T value), { Function onError }); 205 // Future then(onValue(T value), { Function onError });
206 List<ParameterElement> parameters = <ParameterElement>[ 206 List<ParameterElement> parameters = <ParameterElement>[
207 ElementFactory.requiredParameter2( 207 ElementFactory.requiredParameter2(
208 "value", futureElement.typeParameters[0].type) 208 "value", futureElement.typeParameters[0].type)
209 ]; 209 ];
210 FunctionElementImpl onValueFunction = new FunctionElementImpl.forNode(null); 210 FunctionTypeAliasElementImpl aliasElement =
211 onValueFunction.synthetic = true; 211 new FunctionTypeAliasElementImpl.forNode(null);
212 onValueFunction.parameters = parameters; 212 aliasElement.synthetic = true;
213 onValueFunction.returnType = provider.dynamicType; 213 aliasElement.parameters = parameters;
214 onValueFunction.enclosingElement = futureElement; 214 aliasElement.returnType = provider.dynamicType;
215 onValueFunction.type = new FunctionTypeImpl(onValueFunction); 215 aliasElement.enclosingElement = asyncUnit;
216 aliasElement.shareTypeParameters(futureElement.typeParameters);
217 FunctionTypeImpl aliasType = new FunctionTypeImpl.forTypedef(aliasElement);
218 aliasElement.type = aliasType;
216 DartType futureDynamicType = 219 DartType futureDynamicType =
217 futureElement.type.substitute4([provider.dynamicType]); 220 futureElement.type.substitute4([provider.dynamicType]);
218 MethodElement thenMethod = ElementFactory.methodElementWithParameters( 221 MethodElement thenMethod = ElementFactory.methodElementWithParameters(
219 futureElement, "then", futureDynamicType, [ 222 futureElement, "then", futureDynamicType, [
220 ElementFactory.requiredParameter2("onValue", onValueFunction.type), 223 ElementFactory.requiredParameter2("onValue", aliasType),
221 ElementFactory.namedParameter2("onError", provider.functionType) 224 ElementFactory.namedParameter2("onError", provider.functionType)
222 ]); 225 ]);
223 futureElement.methods = <MethodElement>[thenMethod]; 226 futureElement.methods = <MethodElement>[thenMethod];
224 // Completer 227 // Completer
225 ClassElementImpl completerElement = 228 ClassElementImpl completerElement =
226 ElementFactory.classElement2("Completer", ["T"]); 229 ElementFactory.classElement2("Completer", ["T"]);
227 ConstructorElementImpl completerConstructor = 230 ConstructorElementImpl completerConstructor =
228 ElementFactory.constructorElement2(completerElement, null); 231 ElementFactory.constructorElement2(completerElement, null);
229 completerElement.constructors = <ConstructorElement>[completerConstructor]; 232 completerElement.constructors = <ConstructorElement>[completerConstructor];
230 // StreamSubscription 233 // StreamSubscription
(...skipping 11974 matching lines...) Expand 10 before | Expand all | Expand 10 after
12205 expect(e.type.toString(), '(E) → List<T>'); 12208 expect(e.type.toString(), '(E) → List<T>');
12206 12209
12207 SimpleIdentifier c = _findIdentifier('cOfString'); 12210 SimpleIdentifier c = _findIdentifier('cOfString');
12208 FunctionType ft = (c.staticType as InterfaceType).getMethod('f').type; 12211 FunctionType ft = (c.staticType as InterfaceType).getMethod('f').type;
12209 expect(ft.toString(), '(String) → List<T>'); 12212 expect(ft.toString(), '(String) → List<T>');
12210 DartType t = e.typeParameters[0].type; 12213 DartType t = e.typeParameters[0].type;
12211 ft = ft.substitute2([typeProvider.intType], [t]); 12214 ft = ft.substitute2([typeProvider.intType], [t]);
12212 expect(ft.toString(), '(String) → List<int>'); 12215 expect(ft.toString(), '(String) → List<int>');
12213 } 12216 }
12214 12217
12215 void test_genericMethod_functionTypedParameter() {
12216 _resolveTestUnit(r'''
12217 class C<E> {
12218 List/*<T>*/ f/*<T>*/(/*=T*/ f(E e)) => null;
12219 }
12220 main() {
12221 C<String> cOfString;
12222 }
12223 ''');
12224 SimpleIdentifier f = _findIdentifier('f');
12225 MethodElementImpl e = f.staticElement;
12226 expect(e.typeParameters.toString(), '[T]');
12227 expect(e.type.typeParameters.toString(), '[T, E]');
12228 expect(e.type.typeArguments.toString(), '[T, E]');
12229 expect(e.type.toString(), '((E) → T) → List<T>');
12230
12231 SimpleIdentifier c = _findIdentifier('cOfString');
12232 FunctionType ft = (c.staticType as InterfaceType).getMethod('f').type;
12233 expect(ft.toString(), '((String) → T) → List<T>');
12234 DartType t = e.typeParameters[0].type;
12235 ft = ft.substitute2([typeProvider.intType], [t]);
12236 expect(ft.toString(), '((String) → int) → List<int>');
12237 }
12238
12239 void test_pseudoGeneric_max_doubleDouble() { 12218 void test_pseudoGeneric_max_doubleDouble() {
12240 String code = r''' 12219 String code = r'''
12241 import 'dart:math'; 12220 import 'dart:math';
12242 main() { 12221 main() {
12243 var foo = max(1.0, 2.0); 12222 var foo = max(1.0, 2.0);
12244 } 12223 }
12245 '''; 12224 ''';
12246 _resolveTestUnit(code); 12225 _resolveTestUnit(code);
12247 12226
12248 SimpleIdentifier identifier = _findIdentifier('foo'); 12227 SimpleIdentifier identifier = _findIdentifier('foo');
(...skipping 2935 matching lines...) Expand 10 before | Expand all | Expand 10 after
15184 15163
15185 void _resolveTestUnit(String code) { 15164 void _resolveTestUnit(String code) {
15186 testCode = code; 15165 testCode = code;
15187 testSource = addSource(testCode); 15166 testSource = addSource(testCode);
15188 LibraryElement library = resolve2(testSource); 15167 LibraryElement library = resolve2(testSource);
15189 assertNoErrors(testSource); 15168 assertNoErrors(testSource);
15190 verify([testSource]); 15169 verify([testSource]);
15191 testUnit = resolveCompilationUnit(testSource, library); 15170 testUnit = resolveCompilationUnit(testSource, library);
15192 } 15171 }
15193 } 15172 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/resolver.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698