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

Unified Diff: pkg/analyzer/lib/src/summary/summary_sdk.dart

Issue 2037693002: Make SummaryTypeProvider lazy. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/summary/summary_sdk.dart
diff --git a/pkg/analyzer/lib/src/summary/summary_sdk.dart b/pkg/analyzer/lib/src/summary/summary_sdk.dart
index ec9c9889adec44f1e79a11247ab50ccc7d41b3ae..a36a638453fb24e5011fe755adfb406e72f53bde 100644
--- a/pkg/analyzer/lib/src/summary/summary_sdk.dart
+++ b/pkg/analyzer/lib/src/summary/summary_sdk.dart
@@ -280,8 +280,8 @@ abstract class SummaryResultProvider extends ResultProvider {
* `dart:core` and `dart:async` libraries.
*/
class SummaryTypeProvider implements TypeProvider {
- bool _isCoreInitialized = false;
- bool _isAsyncInitialized = false;
+ LibraryElement _coreLibrary;
+ LibraryElement _asyncLibrary;
InterfaceType _boolType;
InterfaceType _deprecatedType;
@@ -308,7 +308,8 @@ class SummaryTypeProvider implements TypeProvider {
@override
InterfaceType get boolType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _boolType ??= _getType(_coreLibrary, "bool");
return _boolType;
}
@@ -317,13 +318,15 @@ class SummaryTypeProvider implements TypeProvider {
@override
InterfaceType get deprecatedType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _deprecatedType ??= _getType(_coreLibrary, "Deprecated");
return _deprecatedType;
}
@override
InterfaceType get doubleType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _doubleType ??= _getType(_coreLibrary, "double");
return _doubleType;
}
@@ -332,55 +335,64 @@ class SummaryTypeProvider implements TypeProvider {
@override
InterfaceType get functionType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _functionType ??= _getType(_coreLibrary, "Function");
return _functionType;
}
@override
InterfaceType get futureDynamicType {
- assert(_isAsyncInitialized);
+ assert(_asyncLibrary != null);
+ _futureDynamicType ??= futureType.instantiate(<DartType>[dynamicType]);
return _futureDynamicType;
}
@override
InterfaceType get futureNullType {
- assert(_isAsyncInitialized);
+ assert(_asyncLibrary != null);
+ _futureNullType ??= futureType.instantiate(<DartType>[_nullType]);
return _futureNullType;
}
@override
InterfaceType get futureType {
- assert(_isAsyncInitialized);
+ assert(_asyncLibrary != null);
+ _futureType ??= _getType(_asyncLibrary, "Future");
return _futureType;
}
@override
InterfaceType get intType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _intType ??= _getType(_coreLibrary, "int");
return _intType;
}
@override
InterfaceType get iterableDynamicType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _iterableDynamicType ??= iterableType.instantiate(<DartType>[dynamicType]);
return _iterableDynamicType;
}
@override
InterfaceType get iterableType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _iterableType ??= _getType(_coreLibrary, "Iterable");
return _iterableType;
}
@override
InterfaceType get listType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _listType ??= _getType(_coreLibrary, "List");
return _listType;
}
@override
InterfaceType get mapType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _mapType ??= _getType(_coreLibrary, "Map");
return _mapType;
}
@@ -404,55 +416,64 @@ class SummaryTypeProvider implements TypeProvider {
@override
InterfaceType get nullType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _nullType ??= _getType(_coreLibrary, "Null");
return _nullType;
}
@override
InterfaceType get numType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _numType ??= _getType(_coreLibrary, "num");
return _numType;
}
@override
InterfaceType get objectType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _objectType ??= _getType(_coreLibrary, "Object");
return _objectType;
}
@override
InterfaceType get stackTraceType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _stackTraceType ??= _getType(_coreLibrary, "StackTrace");
return _stackTraceType;
}
@override
InterfaceType get streamDynamicType {
- assert(_isAsyncInitialized);
+ assert(_asyncLibrary != null);
+ _streamDynamicType ??= streamType.instantiate(<DartType>[dynamicType]);
return _streamDynamicType;
}
@override
InterfaceType get streamType {
- assert(_isAsyncInitialized);
+ assert(_asyncLibrary != null);
+ _streamType ??= _getType(_asyncLibrary, "Stream");
return _streamType;
}
@override
InterfaceType get stringType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _stringType ??= _getType(_coreLibrary, "String");
return _stringType;
}
@override
InterfaceType get symbolType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _symbolType ??= _getType(_coreLibrary, "Symbol");
return _symbolType;
}
@override
InterfaceType get typeType {
- assert(_isCoreInitialized);
+ assert(_coreLibrary != null);
+ _typeType ??= _getType(_coreLibrary, "Type");
return _typeType;
}
@@ -463,39 +484,18 @@ class SummaryTypeProvider implements TypeProvider {
* Initialize the `dart:async` types provided by this type provider.
*/
void initializeAsync(LibraryElement library) {
- assert(_isCoreInitialized);
- assert(!_isAsyncInitialized);
- _isAsyncInitialized = true;
- _futureType = _getType(library, "Future");
- _streamType = _getType(library, "Stream");
- _futureDynamicType = _futureType.instantiate(<DartType>[dynamicType]);
- _futureNullType = _futureType.instantiate(<DartType>[_nullType]);
- _streamDynamicType = _streamType.instantiate(<DartType>[dynamicType]);
+ assert(_coreLibrary != null);
+ assert(_asyncLibrary == null);
+ _asyncLibrary = library;
}
/**
* Initialize the `dart:core` types provided by this type provider.
*/
void initializeCore(LibraryElement library) {
- assert(!_isCoreInitialized);
- assert(!_isAsyncInitialized);
- _isCoreInitialized = true;
- _boolType = _getType(library, "bool");
- _deprecatedType = _getType(library, "Deprecated");
- _doubleType = _getType(library, "double");
- _functionType = _getType(library, "Function");
- _intType = _getType(library, "int");
- _iterableType = _getType(library, "Iterable");
- _listType = _getType(library, "List");
- _mapType = _getType(library, "Map");
- _nullType = _getType(library, "Null");
- _numType = _getType(library, "num");
- _objectType = _getType(library, "Object");
- _stackTraceType = _getType(library, "StackTrace");
- _stringType = _getType(library, "String");
- _symbolType = _getType(library, "Symbol");
- _typeType = _getType(library, "Type");
- _iterableDynamicType = _iterableType.instantiate(<DartType>[dynamicType]);
+ assert(_coreLibrary == null);
+ assert(_asyncLibrary == null);
+ _coreLibrary = library;
}
/**
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698