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

Unified Diff: pkg/compiler/lib/src/compile_time_constants.dart

Issue 1383483006: Extract DiagnosticReporter implementation from Compiler. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fixes after rebase. Created 5 years, 2 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 | « pkg/compiler/lib/src/common/tasks.dart ('k') | pkg/compiler/lib/src/compiler.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/compile_time_constants.dart
diff --git a/pkg/compiler/lib/src/compile_time_constants.dart b/pkg/compiler/lib/src/compile_time_constants.dart
index a9776490f4b075942d463503bc298f84a9d4827a..a9a97ca399831289ca3673a894c0900738a1e91e 100644
--- a/pkg/compiler/lib/src/compile_time_constants.dart
+++ b/pkg/compiler/lib/src/compile_time_constants.dart
@@ -16,6 +16,8 @@ import 'constants/evaluation.dart';
import 'constants/expressions.dart';
import 'constants/values.dart';
import 'dart_types.dart';
+import 'diagnostics/diagnostic_listener.dart' show
+ DiagnosticReporter;
import 'diagnostics/invariant.dart' show
invariant;
import 'diagnostics/messages.dart' show
@@ -163,6 +165,8 @@ abstract class ConstantCompilerBase implements ConstantCompiler {
ConstantCompilerBase(this.compiler, this.constantSystem);
+ DiagnosticReporter get reporter => compiler.reporter;
+
@override
ConstantValue getConstantValueForVariable(VariableElement element) {
return getConstantValue(initialVariableValues[element.declaration]);
@@ -200,7 +204,7 @@ abstract class ConstantCompilerBase implements ConstantCompiler {
return result;
}
AstElement currentElement = element.analyzableElement;
- return compiler.withCurrentElement(currentElement, () {
+ return reporter.withCurrentElement(currentElement, () {
// TODO(johnniwinther): Avoid this eager analysis.
_analyzeElementEagerly(compiler, currentElement);
@@ -223,7 +227,7 @@ abstract class ConstantCompilerBase implements ConstantCompiler {
Node node = element.node;
if (pendingVariables.contains(element)) {
if (isConst) {
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
node, MessageKind.CYCLIC_COMPILE_TIME_CONSTANTS);
ConstantExpression expression = new ErroneousConstantExpression();
constantValueMap[expression] = constantSystem.createNull();
@@ -251,7 +255,7 @@ abstract class ConstantCompilerBase implements ConstantCompiler {
if (elementType.isMalformed && !value.isNull) {
if (isConst) {
ErroneousElement element = elementType.element;
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
node, element.messageKind, element.messageArguments);
} else {
// We need to throw an exception at runtime.
@@ -262,7 +266,7 @@ abstract class ConstantCompilerBase implements ConstantCompiler {
if (!constantSystem.isSubtype(
compiler.types, constantType, elementType)) {
if (isConst) {
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
node,
MessageKind.NOT_ASSIGNABLE,
{'fromType': constantType,
@@ -370,6 +374,8 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
ConstantSystem get constantSystem => handler.constantSystem;
Resolution get resolution => compiler.resolution;
+ DiagnosticReporter get reporter => compiler.reporter;
+
AstConstant evaluate(Node node) {
// TODO(johnniwinther): should there be a visitErrorNode?
if (node is ErrorNode) return new ErroneousAstConstant(context, node);
@@ -451,7 +457,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (!map.containsKey(key.value)) {
keyValues.add(key.value);
} else {
- compiler.reportWarningMessage(
+ reporter.reportWarningMessage(
entry.key, MessageKind.EQUAL_MAP_ENTRY_KEY);
}
keyExpressions.add(key.expression);
@@ -626,7 +632,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
}
if (isDeferredUse(send)) {
if (isEvaluatingConstant) {
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
send, MessageKind.DEFERRED_COMPILE_TIME_CONSTANT);
}
PrefixElement prefix =
@@ -663,7 +669,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
UnaryOperator operator = UnaryOperator.parse(node.source);
UnaryOperation operation = constantSystem.lookupUnary(operator);
if (operation == null) {
- compiler.internalError(send.selector, "Unexpected operator.");
+ reporter.internalError(send.selector, "Unexpected operator.");
}
ConstantValue folded = operation.fold(receiverConstant.value);
if (folded == null) {
@@ -726,7 +732,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
} else if (!condition.value.isBool) {
DartType conditionType = condition.value.getType(compiler.coreTypes);
if (isEvaluatingConstant) {
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
node.condition,
MessageKind.NOT_ASSIGNABLE,
{'fromType': conditionType,
@@ -775,7 +781,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (!callStructure.signatureApplies(signature)) {
String name = Elements.constructorNameForDiagnostics(
target.enclosingClass.name, target.name);
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
node, MessageKind.INVALID_CONSTRUCTOR_ARGUMENTS,
{'constructorName': name});
@@ -879,14 +885,14 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
ConstantValue defaultValue = normalizedArguments[1].value;
if (firstArgument.isNull) {
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
normalizedArguments[0].node, MessageKind.NULL_NOT_ALLOWED);
return null;
}
if (!firstArgument.isString) {
DartType type = defaultValue.getType(compiler.coreTypes);
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
normalizedArguments[0].node,
MessageKind.NOT_ASSIGNABLE,
{'fromType': type,
@@ -897,7 +903,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (constructor == compiler.intEnvironment &&
!(defaultValue.isNull || defaultValue.isInt)) {
DartType type = defaultValue.getType(compiler.coreTypes);
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
normalizedArguments[1].node,
MessageKind.NOT_ASSIGNABLE,
{'fromType': type,
@@ -908,7 +914,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (constructor == compiler.boolEnvironment &&
!(defaultValue.isNull || defaultValue.isBool)) {
DartType type = defaultValue.getType(compiler.coreTypes);
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
normalizedArguments[1].node,
MessageKind.NOT_ASSIGNABLE,
{'fromType': type,
@@ -919,7 +925,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (constructor == compiler.stringEnvironment &&
!(defaultValue.isNull || defaultValue.isString)) {
DartType type = defaultValue.getType(compiler.coreTypes);
- compiler.reportErrorMessage(
+ reporter.reportErrorMessage(
normalizedArguments[1].node,
MessageKind.NOT_ASSIGNABLE,
{'fromType': type,
@@ -1013,7 +1019,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
AstConstant signalNotCompileTimeConstant(Node node,
{MessageKind message: MessageKind.NOT_A_COMPILE_TIME_CONSTANT}) {
if (isEvaluatingConstant) {
- compiler.reportErrorMessage(node, message);
+ reporter.reportErrorMessage(node, message);
return new AstConstant(context, node, new ErroneousConstantExpression(),
new NullConstantValue());
@@ -1053,7 +1059,7 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
if (Elements.isLocal(element)) {
AstConstant constant = definitions[element];
if (constant == null) {
- compiler.internalError(send, "Local variable without value.");
+ reporter.internalError(send, "Local variable without value.");
}
return constant;
}
@@ -1066,8 +1072,8 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
DartType constantType = constant.value.getType(compiler.coreTypes);
if (!constantSystem.isSubtype(
compiler.types, constantType, elementType)) {
- compiler.withCurrentElement(constant.element, () {
- compiler.reportErrorMessage(
+ reporter.withCurrentElement(constant.element, () {
+ reporter.reportErrorMessage(
constant.node,
MessageKind.NOT_ASSIGNABLE,
{'fromType': constantType,
@@ -1193,7 +1199,7 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
*/
void evaluateConstructorFieldValues(List<AstConstant> arguments) {
if (constructor.isErroneous) return;
- compiler.withCurrentElement(constructor, () {
+ reporter.withCurrentElement(constructor, () {
assignArgumentsToParameters(arguments);
evaluateConstructorInitializers();
});
« no previous file with comments | « pkg/compiler/lib/src/common/tasks.dart ('k') | pkg/compiler/lib/src/compiler.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698