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

Unified Diff: pkg/analyzer/lib/src/generated/engine.dart

Issue 1329743005: Abstract over the type system. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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/engine.dart
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 5eccbf7ee5b33c7932856815551ae5e221f02f47..f0be2106509b1c0dbe59b3f4232188acf48f5ecd 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -429,6 +429,11 @@ abstract class AnalysisContext {
TypeProvider get typeProvider;
/**
+ * Return a type system for this context.
+ */
+ TypeSystem get typeSystem;
+
+ /**
* Add the given [listener] to the list of objects that are to be notified
* when various analysis results are produced in this context.
*/
@@ -1040,6 +1045,11 @@ class AnalysisContextImpl implements InternalAnalysisContext {
TypeProvider _typeProvider;
/**
+ * The [TypeSystem] for this context, `null` if not yet created.
+ */
+ TypeSystem _typeSystem;
+
+ /**
* The object used to manage the list of sources that need to be analyzed.
*/
WorkManager _workManager = new WorkManager();
@@ -1550,6 +1560,14 @@ class AnalysisContextImpl implements InternalAnalysisContext {
}
@override
+ TypeSystem get typeSystem {
+ if (_typeSystem == null) {
+ _typeSystem = new TypeSystemImpl(typeProvider);
+ }
+ return _typeSystem;
+ }
+
+ @override
void addListener(AnalysisListener listener) {
if (!_listeners.contains(listener)) {
_listeners.add(listener);
@@ -8472,6 +8490,7 @@ class GenerateDartErrorsTask extends AnalysisTask {
RecordingErrorListener errorListener = new RecordingErrorListener();
ErrorReporter errorReporter = new ErrorReporter(errorListener, source);
TypeProvider typeProvider = context.typeProvider;
+ TypeSystem typeSystem = context.typeSystem;
//
// Validate the directives
//
@@ -8494,6 +8513,7 @@ class GenerateDartErrorsTask extends AnalysisTask {
errorReporter,
libraryElement,
typeProvider,
+ typeSystem,
new InheritanceManager(libraryElement),
context.analysisOptions.enableSuperMixins);
_unit.accept(errorVerifier);
@@ -10912,6 +10932,7 @@ class ResolveDartUnitTask extends AnalysisTask {
@override
void internalPerform() {
TypeProvider typeProvider = _libraryElement.context.typeProvider;
+ TypeSystem typeSystem = _libraryElement.context.typeSystem;
CompilationUnit unit = context.computeResolvableCompilationUnit(source);
if (unit == null) {
throw new AnalysisException(
@@ -10946,6 +10967,7 @@ class ResolveDartUnitTask extends AnalysisTask {
errorReporter,
_libraryElement,
typeProvider,
+ typeSystem,
inheritanceManager,
context.analysisOptions.enableSuperMixins);
unit.accept(errorVerifier);

Powered by Google App Engine
This is Rietveld 408576698