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

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

Issue 1037313002: Issue 23010. Compute constant and report related errors during incremental resolution. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 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 | pkg/analyzer/test/generated/incremental_resolver_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/generated/incremental_resolver.dart
diff --git a/pkg/analyzer/lib/src/generated/incremental_resolver.dart b/pkg/analyzer/lib/src/generated/incremental_resolver.dart
index ea6aac756d505d21ec7899938dbe1227ef36478a..a4ff1f77084387695a7f8fadfbd3c43cd263ed04 100644
--- a/pkg/analyzer/lib/src/generated/incremental_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/incremental_resolver.dart
@@ -7,6 +7,7 @@ library engine.incremental_resolver;
import 'dart:collection';
import 'dart:math' as math;
+import 'package:analyzer/src/generated/constant.dart';
import 'package:analyzer/src/services/lint.dart';
import 'ast.dart';
@@ -883,6 +884,8 @@ class IncrementalResolver {
}
// resolve
_resolveReferences(rootNode);
+ _computeConstants(rootNode);
+ _resolveErrors = errorListener.getErrorsForSource(_source);
// verify
_verify(rootNode);
_context.invalidateLibraryHints(_librarySource);
@@ -958,6 +961,27 @@ class IncrementalResolver {
node is TopLevelVariableDeclaration;
/**
+ * Compute a value for all of the constants in the given [node].
+ */
+ void _computeConstants(AstNode node) {
+ // compute values
+ {
+ CompilationUnit unit = node.getAncestor((n) => n is CompilationUnit);
+ ConstantValueComputer computer =
+ new ConstantValueComputer(_typeProvider, _context.declaredVariables);
+ computer.add(unit);
+ computer.computeValues();
+ }
+ // validate
+ {
+ ErrorReporter errorReporter = new ErrorReporter(errorListener, _source);
+ ConstantVerifier constantVerifier =
+ new ConstantVerifier(errorReporter, _definingLibrary, _typeProvider);
+ node.accept(constantVerifier);
+ }
+ }
+
+ /**
* Starting at [node], find the smallest AST node that can be resolved
* independently of any other nodes. Return the node that was found.
*
@@ -1041,8 +1065,6 @@ class IncrementalResolver {
visitor.initForIncrementalResolution();
node.accept(visitor);
}
- // remember errors
- _resolveErrors = errorListener.getErrorsForSource(_source);
} finally {
timer.stop('resolve references');
}
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/incremental_resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698