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

Unified Diff: pkg/analyzer/lib/src/generated/testing/test_type_provider.dart

Issue 1609093003: fixes #25482, flatten Futures in strong mode so Future.then works (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/lib/src/generated/testing/test_type_provider.dart
diff --git a/pkg/analyzer/lib/src/generated/testing/test_type_provider.dart b/pkg/analyzer/lib/src/generated/testing/test_type_provider.dart
index 3281405605957433d957b3f0a4ae3b30fcbc5563..4bf5cc99f157621bf166556c7a464fbc97ec3ce3 100644
--- a/pkg/analyzer/lib/src/generated/testing/test_type_provider.dart
+++ b/pkg/analyzer/lib/src/generated/testing/test_type_provider.dart
@@ -10,8 +10,11 @@ import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/generated/constant.dart';
+import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/scanner.dart';
+import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
+import 'package:analyzer/src/generated/source.dart' show Source;
import 'package:analyzer/src/generated/testing/ast_factory.dart';
import 'package:analyzer/src/generated/testing/element_factory.dart';
@@ -150,6 +153,14 @@ class TestTypeProvider implements TypeProvider {
*/
DartType _undefinedType;
+ /**
+ * The analysis context, if any. Used to create an appropriate 'dart:async'
+ * library to back `Future<T>`.
+ */
+ AnalysisContext _context;
+
+ TestTypeProvider([this._context]);
+
@override
InterfaceType get boolType {
if (_boolType == null) {
@@ -240,7 +251,18 @@ class TestTypeProvider implements TypeProvider {
@override
InterfaceType get futureType {
if (_futureType == null) {
- _futureType = ElementFactory.classElement2("Future", ["T"]).type;
+ Source asyncSource = _context.sourceFactory.forUri(DartSdk.DART_ASYNC);
+ _context.setContents(asyncSource, "");
+ CompilationUnitElementImpl asyncUnit =
+ new CompilationUnitElementImpl("async.dart");
+ LibraryElementImpl asyncLibrary = new LibraryElementImpl.forNode(
+ _context, AstFactory.libraryIdentifier2(["dart.async"]));
+ asyncLibrary.definingCompilationUnit = asyncUnit;
+ asyncUnit.librarySource = asyncUnit.source = asyncSource;
+
+ ClassElementImpl future = ElementFactory.classElement2("Future", ["T"]);
+ _futureType = future.type;
+ asyncUnit.types = <ClassElement>[future];
}
return _futureType;
}

Powered by Google App Engine
This is Rietveld 408576698