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

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

Issue 1129563002: Create a class for evaluating const instance creation expressions. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 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/analyzer/lib/src/generated/resolver.dart
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 4da9b42aedd25bf0d1d9d40ef426bded9f720c66..62941051349c5e236da13a399f6fa8d83866d3bc 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -824,6 +824,11 @@ class ConstantVerifier extends RecursiveAstVisitor<Object> {
final TypeProvider _typeProvider;
/**
+ * The set of variables declared using '-D' on the command line.
+ */
+ final DeclaredVariables declaredVariables;
+
+ /**
* The type representing the type 'bool'.
*/
InterfaceType _boolType;
@@ -853,8 +858,8 @@ class ConstantVerifier extends RecursiveAstVisitor<Object> {
*
* @param errorReporter the error reporter by which errors will be reported
*/
- ConstantVerifier(
- this._errorReporter, this._currentLibrary, this._typeProvider) {
+ ConstantVerifier(this._errorReporter, this._currentLibrary,
+ this._typeProvider, this.declaredVariables) {
this._boolType = _typeProvider.boolType;
this._intType = _typeProvider.intType;
this._numType = _typeProvider.numType;
@@ -975,8 +980,9 @@ class ConstantVerifier extends RecursiveAstVisitor<Object> {
AnalysisErrorListener.NULL_LISTENER;
ErrorReporter subErrorReporter =
new ErrorReporter(errorListener, _errorReporter.source);
- DartObjectImpl result =
- key.accept(new ConstantVisitor(_typeProvider, subErrorReporter));
+ DartObjectImpl result = key.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(_typeProvider, declaredVariables),
+ subErrorReporter));
if (result != null) {
if (keys.contains(result)) {
invalidKeys.add(key);
@@ -1179,8 +1185,9 @@ class ConstantVerifier extends RecursiveAstVisitor<Object> {
RecordingErrorListener errorListener = new RecordingErrorListener();
ErrorReporter subErrorReporter =
new ErrorReporter(errorListener, _errorReporter.source);
- DartObjectImpl result =
- expression.accept(new ConstantVisitor(_typeProvider, subErrorReporter));
+ DartObjectImpl result = expression.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(_typeProvider, declaredVariables),
+ subErrorReporter));
_reportErrors(errorListener.errors, errorCode);
return result;
}
@@ -1286,8 +1293,9 @@ class ConstantVerifier extends RecursiveAstVisitor<Object> {
AnalysisErrorListener.NULL_LISTENER;
ErrorReporter subErrorReporter =
new ErrorReporter(errorListener, _errorReporter.source);
- DartObjectImpl result = initializer
- .accept(new ConstantVisitor(_typeProvider, subErrorReporter));
+ DartObjectImpl result = initializer.accept(new ConstantVisitor(
+ new ConstantEvaluationEngine(
+ _typeProvider, declaredVariables), subErrorReporter));
if (result == null) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST,
@@ -1313,8 +1321,8 @@ class ConstantVerifier extends RecursiveAstVisitor<Object> {
ErrorReporter subErrorReporter =
new ErrorReporter(errorListener, _errorReporter.source);
DartObjectImpl result = expression.accept(
- new _ConstantVerifier_validateInitializerExpression(
- _typeProvider, subErrorReporter, this, parameterElements));
+ new _ConstantVerifier_validateInitializerExpression(_typeProvider,
+ subErrorReporter, this, parameterElements, declaredVariables));
_reportErrors(errorListener.errors,
CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER);
if (result != null) {
@@ -8471,7 +8479,8 @@ class LibraryResolver {
ErrorReporter errorReporter =
new ErrorReporter(_errorListener, source);
ConstantVerifier constantVerifier = new ConstantVerifier(
- errorReporter, library.libraryElement, _typeProvider);
+ errorReporter, library.libraryElement, _typeProvider,
+ analysisContext.declaredVariables);
unit.accept(constantVerifier);
} on AnalysisException catch (exception, stackTrace) {
AnalysisEngine.instance.logger.logError(
@@ -8995,7 +9004,8 @@ class LibraryResolver2 {
ErrorReporter errorReporter =
new ErrorReporter(_errorListener, unit.source);
ConstantVerifier constantVerifier = new ConstantVerifier(
- errorReporter, library.libraryElement, _typeProvider);
+ errorReporter, library.libraryElement, _typeProvider,
+ analysisContext.declaredVariables);
ast.accept(constantVerifier);
}
}
@@ -15274,9 +15284,11 @@ class _ConstantVerifier_validateInitializerExpression extends ConstantVisitor {
List<ParameterElement> parameterElements;
- _ConstantVerifier_validateInitializerExpression(TypeProvider arg0,
- ErrorReporter arg1, this.verifier, this.parameterElements)
- : super(arg0, arg1);
+ _ConstantVerifier_validateInitializerExpression(TypeProvider typeProvider,
+ ErrorReporter errorReporter, this.verifier, this.parameterElements,
+ DeclaredVariables declaredVariables)
+ : super(new ConstantEvaluationEngine(typeProvider, declaredVariables),
+ errorReporter);
@override
DartObjectImpl visitSimpleIdentifier(SimpleIdentifier node) {
« no previous file with comments | « pkg/analyzer/lib/src/generated/incremental_resolver.dart ('k') | pkg/analyzer/test/generated/all_the_rest_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698