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

Unified Diff: pkg/kernel/lib/core_types.dart

Issue 2890933002: Use LibraryIndex in CoreTypes instead of extending it. (Closed)
Patch Set: Make everything lazy in CoreTypes. Created 3 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
Index: pkg/kernel/lib/core_types.dart
diff --git a/pkg/kernel/lib/core_types.dart b/pkg/kernel/lib/core_types.dart
index dada2ee0d7cf17af1d9c12b94dc905aefd5c60de..c80447aeaf127fa41845da4298c9c9a03d19cb0d 100644
--- a/pkg/kernel/lib/core_types.dart
+++ b/pkg/kernel/lib/core_types.dart
@@ -7,27 +7,7 @@ import 'ast.dart';
import 'library_index.dart';
/// Provides access to the classes and libraries in the core libraries.
-class CoreTypes extends LibraryIndex {
- Class objectClass;
- Class nullClass;
- Class boolClass;
- Class intClass;
- Class numClass;
- Class doubleClass;
- Class stringClass;
- Class listClass;
- Class mapClass;
- Class iterableClass;
- Class iteratorClass;
- Class futureClass;
- Class futureOrClass;
- Class streamClass;
- Class symbolClass;
- Class internalSymbolClass;
- Class typeClass;
- Class functionClass;
- Class invocationClass;
-
+class CoreTypes {
static final Map<String, List<String>> requiredClasses = {
'dart:core': [
'Object',
@@ -55,25 +35,216 @@ class CoreTypes extends LibraryIndex {
]
};
- CoreTypes(Program program) : super.coreLibraries(program) {
- objectClass = getClass('dart:core', 'Object');
- nullClass = getClass('dart:core', 'Null');
- boolClass = getClass('dart:core', 'bool');
- intClass = getClass('dart:core', 'int');
- numClass = getClass('dart:core', 'num');
- doubleClass = getClass('dart:core', 'double');
- stringClass = getClass('dart:core', 'String');
- listClass = getClass('dart:core', 'List');
- mapClass = getClass('dart:core', 'Map');
- iterableClass = getClass('dart:core', 'Iterable');
- iteratorClass = getClass('dart:core', 'Iterator');
- symbolClass = getClass('dart:core', 'Symbol');
- typeClass = getClass('dart:core', 'Type');
- functionClass = getClass('dart:core', 'Function');
- invocationClass = getClass('dart:core', 'Invocation');
- futureClass = getClass('dart:async', 'Future');
- futureOrClass = getClass('dart:async', 'FutureOr');
- streamClass = getClass('dart:async', 'Stream');
- internalSymbolClass = getClass('dart:_internal', 'Symbol');
+ final LibraryIndex _index;
+
+ Library _coreLibrary;
+ Class _objectClass;
+ Class _nullClass;
+ Class _boolClass;
+ Class _intClass;
+ Class _numClass;
+ Class _doubleClass;
+ Class _stringClass;
+ Class _listClass;
+ Class _mapClass;
+ Class _iterableClass;
+ Class _iteratorClass;
+ Class _symbolClass;
+ Class _typeClass;
+ Class _functionClass;
+ Class _invocationClass;
+ Constructor _externalNameDefaultConstructor;
+ Class _invocationMirrorClass;
+ Constructor _invocationMirrorDefaultConstructor;
+ Class _noSuchMethodErrorClass;
+ Procedure _listFromConstructor;
+ Procedure _printProcedure;
+ Procedure _identicalProcedure;
+
+ Class _internalSymbolClass;
+
+ Library _asyncLibrary;
+ Class _futureClass;
+ Class _streamClass;
+ Class _completerClass;
+ Class _futureOrClass;
+ Procedure _completerSyncConstructor;
+ Procedure _futureMicrotaskConstructor;
+ Constructor _syncIterableDefaultConstructor;
+ Constructor _streamIteratorDefaultConstructor;
+ Constructor _asyncStarStreamControllerDefaultConstructor;
+ Procedure _asyncThenWrapperHelperProcedure;
+ Procedure _asyncErrorWrapperHelperProcedure;
+ Procedure _awaitHelperProcedure;
+
+ /// The `dart:mirrors` library, or `null` if the program does not use it.
+ Library _mirrorsLibrary;
+
+ CoreTypes(Program program) : _index = new LibraryIndex.coreLibraries(program);
+
+ Procedure get asyncErrorWrapperHelperProcedure {
+ return _asyncErrorWrapperHelperProcedure ??=
+ _index.getTopLevelMember('dart:async', '_asyncErrorWrapperHelper');
+ }
+
+ Library get asyncLibrary {
+ return _asyncLibrary ??= _index.getLibrary('dart:async');
+ }
+
+ Constructor get asyncStarStreamControllerDefaultConstructor {
+ return _asyncStarStreamControllerDefaultConstructor ??=
+ _index.getMember('dart:async', '_AsyncStarStreamController', '');
+ }
+
+ Procedure get asyncThenWrapperHelperProcedure {
+ return _asyncThenWrapperHelperProcedure ??=
+ _index.getTopLevelMember('dart:async', '_asyncThenWrapperHelper');
+ }
+
+ Procedure get awaitHelperProcedure {
+ return _awaitHelperProcedure ??=
+ _index.getTopLevelMember('dart:async', '_awaitHelper');
+ }
+
+ Class get boolClass {
+ return _boolClass ??= _index.getClass('dart:core', 'bool');
+ }
+
+ Class get completerClass {
+ return _completerClass ??= _index.getClass('dart:async', 'Completer');
+ }
+
+ Procedure get completerSyncConstructor {
+ return _completerSyncConstructor ??=
+ _index.getMember('dart:async', 'Completer', 'sync');
+ }
+
+ Library get coreLibrary {
+ return _coreLibrary ??= _index.getLibrary('dart:core');
+ }
+
+ Class get doubleClass {
+ return _doubleClass ??= _index.getClass('dart:core', 'double');
+ }
+
+ Constructor get externalNameDefaultConstructor {
+ return _externalNameDefaultConstructor ??=
+ _index.getMember('dart:_internal', 'ExternalName', '');
+ }
+
+ Class get functionClass {
+ return _functionClass ??= _index.getClass('dart:core', 'Function');
+ }
+
+ Class get futureClass {
+ return _futureClass ??= _index.getClass('dart:async', 'Future');
+ }
+
+ Procedure get futureMicrotaskConstructor {
+ return _futureMicrotaskConstructor ??=
+ _index.getMember('dart:async', 'Future', 'microtask');
+ }
+
+ Class get futureOrClass {
+ return _futureOrClass ??= _index.getClass('dart:async', 'FutureOr');
+ }
+
+ Procedure get identicalProcedure {
+ return _identicalProcedure ??=
+ _index.getTopLevelMember('dart:core', 'identical');
+ }
+
+ Class get intClass {
+ return _intClass ??= _index.getClass('dart:core', 'int');
+ }
+
+ Class get internalSymbolClass {
+ return _internalSymbolClass ??= _index.getClass('dart:_internal', 'Symbol');
+ }
+
+ Class get invocationClass {
+ return _invocationClass ??= _index.getClass('dart:core', 'Invocation');
+ }
+
+ Class get invocationMirrorClass {
+ return _invocationMirrorClass ??=
+ _index.getClass('dart:core', '_InvocationMirror');
+ }
+
+ Constructor get invocationMirrorDefaultConstructor {
+ return _invocationMirrorDefaultConstructor ??=
+ _index.getMember('dart:core', '_InvocationMirror', '');
+ }
+
+ Class get iterableClass {
+ return _iterableClass ??= _index.getClass('dart:core', 'Iterable');
+ }
+
+ Class get iteratorClass {
+ return _iteratorClass ??= _index.getClass('dart:core', 'Iterator');
+ }
+
+ Class get listClass {
+ return _listClass ??= _index.getClass('dart:core', 'List');
+ }
+
+ Procedure get listFromConstructor {
+ return _listFromConstructor ??=
+ _index.getMember('dart:core', 'List', 'from');
+ }
+
+ Class get mapClass {
+ return _mapClass ??= _index.getClass('dart:core', 'Map');
+ }
+
+ Library get mirrorsLibrary {
+ return _mirrorsLibrary ??= _index.tryGetLibrary('dart:mirrors');
+ }
+
+ Class get noSuchMethodErrorClass {
+ return _noSuchMethodErrorClass ??=
+ _index.getClass('dart:core', 'NoSuchMethodError');
+ }
+
+ Class get nullClass {
+ return _nullClass ??= _index.getClass('dart:core', 'Null');
+ }
+
+ Class get numClass {
+ return _numClass ??= _index.getClass('dart:core', 'num');
+ }
+
+ Class get objectClass {
+ return _objectClass ??= _index.getClass('dart:core', 'Object');
+ }
+
+ Procedure get printProcedure {
+ return _printProcedure ??= _index.getTopLevelMember('dart:core', 'print');
+ }
+
+ Class get streamClass {
+ return _streamClass ??= _index.getClass('dart:async', 'Stream');
+ }
+
+ Constructor get streamIteratorDefaultConstructor {
+ return _streamIteratorDefaultConstructor ??=
+ _index.getMember('dart:async', '_StreamIterator', '');
+ }
+
+ Class get stringClass {
+ return _stringClass ??= _index.getClass('dart:core', 'String');
+ }
+
+ Class get symbolClass {
+ return _symbolClass ??= _index.getClass('dart:core', 'Symbol');
+ }
+
+ Constructor get syncIterableDefaultConstructor {
+ return _syncIterableDefaultConstructor ??=
+ _index.getMember('dart:core', '_SyncIterable', '');
+ }
+
+ Class get typeClass {
+ return _typeClass ??= _index.getClass('dart:core', 'Type');
}
}

Powered by Google App Engine
This is Rietveld 408576698