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

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

Issue 2647833002: fix #28008, fix #28009 implement FutureOr<T> (Closed)
Patch Set: add test Created 3 years, 10 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
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 analyzer.test.generated.resolver_test; 5 library analyzer.test.generated.resolver_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 2382 matching lines...) Expand 10 before | Expand all | Expand 10 after
2393 // We cannot use either ElementFactory or TestTypeProvider (which uses 2393 // We cannot use either ElementFactory or TestTypeProvider (which uses
2394 // ElementFactory) because we side-effect the elements in ways that would 2394 // ElementFactory) because we side-effect the elements in ways that would
2395 // break other tests. 2395 // break other tests.
2396 // 2396 //
2397 InterfaceType objectType = _classElement("Object", null).type; 2397 InterfaceType objectType = _classElement("Object", null).type;
2398 InterfaceType boolType = _classElement("bool", objectType).type; 2398 InterfaceType boolType = _classElement("bool", objectType).type;
2399 InterfaceType numType = _classElement("num", objectType).type; 2399 InterfaceType numType = _classElement("num", objectType).type;
2400 InterfaceType doubleType = _classElement("double", numType).type; 2400 InterfaceType doubleType = _classElement("double", numType).type;
2401 InterfaceType functionType = _classElement("Function", objectType).type; 2401 InterfaceType functionType = _classElement("Function", objectType).type;
2402 InterfaceType futureType = _classElement("Future", objectType, ["T"]).type; 2402 InterfaceType futureType = _classElement("Future", objectType, ["T"]).type;
2403 InterfaceType futureOrType = _classElement("FutureOr", objectType, ["T"]).ty pe;
2403 InterfaceType intType = _classElement("int", numType).type; 2404 InterfaceType intType = _classElement("int", numType).type;
2404 InterfaceType iterableType = 2405 InterfaceType iterableType =
2405 _classElement("Iterable", objectType, ["T"]).type; 2406 _classElement("Iterable", objectType, ["T"]).type;
2406 InterfaceType listType = _classElement("List", objectType, ["E"]).type; 2407 InterfaceType listType = _classElement("List", objectType, ["E"]).type;
2407 InterfaceType mapType = _classElement("Map", objectType, ["K", "V"]).type; 2408 InterfaceType mapType = _classElement("Map", objectType, ["K", "V"]).type;
2408 InterfaceType stackTraceType = _classElement("StackTrace", objectType).type; 2409 InterfaceType stackTraceType = _classElement("StackTrace", objectType).type;
2409 InterfaceType streamType = _classElement("Stream", objectType, ["T"]).type; 2410 InterfaceType streamType = _classElement("Stream", objectType, ["T"]).type;
2410 InterfaceType stringType = _classElement("String", objectType).type; 2411 InterfaceType stringType = _classElement("String", objectType).type;
2411 InterfaceType symbolType = _classElement("Symbol", objectType).type; 2412 InterfaceType symbolType = _classElement("Symbol", objectType).type;
2412 InterfaceType typeType = _classElement("Type", objectType).type; 2413 InterfaceType typeType = _classElement("Type", objectType).type;
2413 CompilationUnitElementImpl coreUnit = 2414 CompilationUnitElementImpl coreUnit =
2414 new CompilationUnitElementImpl("core.dart"); 2415 new CompilationUnitElementImpl("core.dart");
2415 coreUnit.types = <ClassElement>[ 2416 coreUnit.types = <ClassElement>[
2416 boolType.element, 2417 boolType.element,
2417 doubleType.element, 2418 doubleType.element,
2418 functionType.element, 2419 functionType.element,
2419 intType.element, 2420 intType.element,
2420 iterableType.element, 2421 iterableType.element,
2421 listType.element, 2422 listType.element,
2422 mapType.element, 2423 mapType.element,
2423 objectType.element, 2424 objectType.element,
2424 stackTraceType.element, 2425 stackTraceType.element,
2425 stringType.element, 2426 stringType.element,
2426 symbolType.element, 2427 symbolType.element,
2427 typeType.element 2428 typeType.element
2428 ]; 2429 ];
2429 CompilationUnitElementImpl asyncUnit = 2430 CompilationUnitElementImpl asyncUnit =
2430 new CompilationUnitElementImpl("async.dart"); 2431 new CompilationUnitElementImpl("async.dart");
2431 asyncUnit.types = <ClassElement>[futureType.element, streamType.element]; 2432 asyncUnit.types = <ClassElement>[futureType.element, futureOrType.element, s treamType.element];
2432 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext(); 2433 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
2433 LibraryElementImpl coreLibrary = new LibraryElementImpl.forNode( 2434 LibraryElementImpl coreLibrary = new LibraryElementImpl.forNode(
2434 context, AstTestFactory.libraryIdentifier2(["dart.core"])); 2435 context, AstTestFactory.libraryIdentifier2(["dart.core"]));
2435 coreLibrary.definingCompilationUnit = coreUnit; 2436 coreLibrary.definingCompilationUnit = coreUnit;
2436 LibraryElementImpl asyncLibrary = new LibraryElementImpl.forNode( 2437 LibraryElementImpl asyncLibrary = new LibraryElementImpl.forNode(
2437 context, AstTestFactory.libraryIdentifier2(["dart.async"])); 2438 context, AstTestFactory.libraryIdentifier2(["dart.async"]));
2438 asyncLibrary.definingCompilationUnit = asyncUnit; 2439 asyncLibrary.definingCompilationUnit = asyncUnit;
2439 // 2440 //
2440 // Create a type provider and ensure that it can return the expected types. 2441 // Create a type provider and ensure that it can return the expected types.
2441 // 2442 //
2442 TypeProviderImpl provider = new TypeProviderImpl(coreLibrary, asyncLibrary); 2443 TypeProviderImpl provider = new TypeProviderImpl(coreLibrary, asyncLibrary);
2443 expect(provider.boolType, same(boolType)); 2444 expect(provider.boolType, same(boolType));
2444 expect(provider.bottomType, isNotNull); 2445 expect(provider.bottomType, isNotNull);
2445 expect(provider.doubleType, same(doubleType)); 2446 expect(provider.doubleType, same(doubleType));
2446 expect(provider.dynamicType, isNotNull); 2447 expect(provider.dynamicType, isNotNull);
2447 expect(provider.functionType, same(functionType)); 2448 expect(provider.functionType, same(functionType));
2448 expect(provider.futureType, same(futureType)); 2449 expect(provider.futureType, same(futureType));
2450 expect(provider.futureOrType, same(futureOrType));
2449 expect(provider.intType, same(intType)); 2451 expect(provider.intType, same(intType));
2450 expect(provider.listType, same(listType)); 2452 expect(provider.listType, same(listType));
2451 expect(provider.mapType, same(mapType)); 2453 expect(provider.mapType, same(mapType));
2452 expect(provider.objectType, same(objectType)); 2454 expect(provider.objectType, same(objectType));
2453 expect(provider.stackTraceType, same(stackTraceType)); 2455 expect(provider.stackTraceType, same(stackTraceType));
2454 expect(provider.streamType, same(streamType)); 2456 expect(provider.streamType, same(streamType));
2455 expect(provider.stringType, same(stringType)); 2457 expect(provider.stringType, same(stringType));
2456 expect(provider.symbolType, same(symbolType)); 2458 expect(provider.symbolType, same(symbolType));
2457 expect(provider.typeType, same(typeType)); 2459 expect(provider.typeType, same(typeType));
2458 } 2460 }
(...skipping 1130 matching lines...) Expand 10 before | Expand all | Expand 10 after
3589 */ 3591 */
3590 class _StaleElement extends ElementImpl { 3592 class _StaleElement extends ElementImpl {
3591 _StaleElement() : super("_StaleElement", -1); 3593 _StaleElement() : super("_StaleElement", -1);
3592 3594
3593 @override 3595 @override
3594 get kind => throw "_StaleElement's kind shouldn't be accessed"; 3596 get kind => throw "_StaleElement's kind shouldn't be accessed";
3595 3597
3596 @override 3598 @override
3597 /*=T*/ accept/*<T>*/(_) => throw "_StaleElement shouldn't be visited"; 3599 /*=T*/ accept/*<T>*/(_) => throw "_StaleElement shouldn't be visited";
3598 } 3600 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698