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

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

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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/work.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 1eabdf3ef2c6fc7fe9a88adaa8749023c90812ee..825176c0fbf10e57c32de81c7d585ca782223919 100644
--- a/pkg/compiler/lib/src/compile_time_constants.dart
+++ b/pkg/compiler/lib/src/compile_time_constants.dart
@@ -5,31 +5,23 @@
library dart2js.compile_time_constant_evaluator;
import 'common.dart';
-import 'common/resolution.dart' show
- Resolution;
-import 'common/tasks.dart' show
- CompilerTask;
-import 'compiler.dart' show
- Compiler;
+import 'common/resolution.dart' show Resolution;
+import 'common/tasks.dart' show CompilerTask;
+import 'compiler.dart' show Compiler;
import 'constant_system_dart.dart';
import 'constants/constant_system.dart';
import 'constants/evaluation.dart';
import 'constants/expressions.dart';
import 'constants/values.dart';
-import 'core_types.dart' show
- CoreTypes;
+import 'core_types.dart' show CoreTypes;
import 'dart_types.dart';
import 'elements/elements.dart';
-import 'elements/modelx.dart' show
- FunctionElementX;
-import 'resolution/tree_elements.dart' show
- TreeElements;
+import 'elements/modelx.dart' show FunctionElementX;
+import 'resolution/tree_elements.dart' show TreeElements;
import 'resolution/operators.dart';
import 'tree/tree.dart';
-import 'util/util.dart' show
- Link;
-import 'universe/call_structure.dart' show
- CallStructure;
+import 'util/util.dart' show Link;
+import 'universe/call_structure.dart' show CallStructure;
/// A [ConstantEnvironment] provides access for constants compiled for variable
/// initializers.
@@ -87,9 +79,8 @@ abstract class ConstantCompiler extends ConstantEnvironment {
/// the compile-time constant for the backend interpretation of constants.
///
/// The returned constant is always of the frontend interpretation.
- ConstantExpression compileMetadata(MetadataAnnotation metadata,
- Node node,
- TreeElements elements);
+ ConstantExpression compileMetadata(
+ MetadataAnnotation metadata, Node node, TreeElements elements);
/// Evaluates [constant] and caches the result.
// TODO(johnniwinther): Remove when all constants are evaluated.
@@ -182,8 +173,7 @@ abstract class ConstantCompilerBase implements ConstantCompiler {
void evaluate(ConstantExpression constant) {
constantValueMap.putIfAbsent(constant, () {
return constant.evaluate(
- new _CompilerEnvironment(compiler),
- constantSystem);
+ new _CompilerEnvironment(compiler), constantSystem);
});
}
@@ -263,11 +253,8 @@ abstract class ConstantCompilerBase implements ConstantCompiler {
if (!constantSystem.isSubtype(
compiler.types, constantType, elementType)) {
if (isConst) {
- reporter.reportErrorMessage(
- node,
- MessageKind.NOT_ASSIGNABLE,
- {'fromType': constantType,
- 'toType': elementType});
+ reporter.reportErrorMessage(node, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': constantType, 'toType': elementType});
} else {
// If the field cannot be lazily initialized, we will throw
// the exception at runtime.
@@ -292,10 +279,12 @@ abstract class ConstantCompilerBase implements ConstantCompiler {
}
ConstantExpression compileNodeWithDefinitions(
- Node node, TreeElements definitions, {bool isConst: true}) {
+ Node node, TreeElements definitions,
+ {bool isConst: true}) {
assert(node != null);
CompileTimeConstantEvaluator evaluator = new CompileTimeConstantEvaluator(
- this, definitions, compiler, isConst: isConst);
+ this, definitions, compiler,
+ isConst: isConst);
AstConstant constant = evaluator.evaluate(node);
if (constant != null) {
cacheConstantValue(constant.expression, constant.value);
@@ -340,7 +329,8 @@ class DartConstantCompiler extends ConstantCompilerBase {
}
ConstantExpression compileNodeWithDefinitions(
- Node node, TreeElements definitions, {bool isConst: true}) {
+ Node node, TreeElements definitions,
+ {bool isConst: true}) {
ConstantExpression constant = definitions.getConstant(node);
if (constant != null && getConstantValue(constant) != null) {
return constant;
@@ -393,13 +383,17 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
}
AstConstant visitLiteralBool(LiteralBool node) {
- return new AstConstant(context, node,
+ return new AstConstant(
+ context,
+ node,
new BoolConstantExpression(node.value),
constantSystem.createBool(node.value));
}
AstConstant visitLiteralDouble(LiteralDouble node) {
- return new AstConstant(context, node,
+ return new AstConstant(
+ context,
+ node,
new DoubleConstantExpression(node.value),
constantSystem.createDouble(node.value));
}
@@ -426,7 +420,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
argumentValues.add(argument.value);
}
DartType type = elements.getType(node);
- return new AstConstant(context, node,
+ return new AstConstant(
+ context,
+ node,
new ListConstantExpression(type, argumentExpressions),
constantSystem.createList(type, argumentValues));
}
@@ -462,7 +458,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
map[key.value] = value.value;
}
InterfaceType type = elements.getType(node);
- return new AstConstant(context, node,
+ return new AstConstant(
+ context,
+ node,
new MapConstantExpression(type, keyExpressions, valueExpressions),
constantSystem.createMap(
compiler, type, keyValues, map.values.toList()));
@@ -474,7 +472,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
}
AstConstant visitLiteralString(LiteralString node) {
- return new AstConstant(context, node,
+ return new AstConstant(
+ context,
+ node,
new StringConstantExpression(node.dartString.slowToString()),
constantSystem.createString(node.dartString));
}
@@ -485,7 +485,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (left == null || right == null) return null;
StringConstantValue leftValue = left.value;
StringConstantValue rightValue = right.value;
- return new AstConstant(context, node,
+ return new AstConstant(
+ context,
+ node,
new ConcatenateConstantExpression([left.expression, right.expression]),
constantSystem.createString(new DartString.concat(
leftValue.primitiveValue, rightValue.primitiveValue)));
@@ -529,7 +531,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
new DartString.concat(accumulator, partStringValue.primitiveValue);
}
;
- return new AstConstant(context, node,
+ return new AstConstant(
+ context,
+ node,
new ConcatenateConstantExpression(subexpressions),
constantSystem.createString(accumulator));
}
@@ -580,7 +584,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (Elements.isStaticOrTopLevelFunction(element)) {
FunctionElementX function = element;
function.computeType(resolution);
- result = new AstConstant(context, send,
+ result = new AstConstant(
+ context,
+ send,
new FunctionConstantExpression(function),
new FunctionConstantValue(function));
} else if (Elements.isStaticOrTopLevelField(element)) {
@@ -591,14 +597,18 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
elementExpression = handler.compileVariable(element);
}
if (elementExpression != null) {
- result = new AstConstant(context, send,
+ result = new AstConstant(
+ context,
+ send,
new VariableConstantExpression(element),
handler.getConstantValue(elementExpression));
}
} else if (Elements.isClass(element) || Elements.isTypedef(element)) {
assert(elements.isTypeLiteral(send));
DartType elementType = elements.getTypeLiteralType(send);
- result = new AstConstant(context, send,
+ result = new AstConstant(
+ context,
+ send,
new TypeConstantExpression(elementType),
makeTypeConstant(elementType));
} else if (send.receiver != null) {
@@ -619,7 +629,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
ConstantExpression variableExpression =
handler.compileConstant(element);
if (variableExpression != null) {
- result = new AstConstant(context, send,
+ result = new AstConstant(
+ context,
+ send,
new VariableConstantExpression(element),
handler.getConstantValue(variableExpression));
}
@@ -634,11 +646,13 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
}
PrefixElement prefix =
compiler.deferredLoadTask.deferredPrefixElement(send, elements);
- result = new AstConstant(context, send,
+ result = new AstConstant(
+ context,
+ send,
new DeferredConstantExpression(result.expression, prefix),
new DeferredConstantValue(result.value, prefix));
- compiler.deferredLoadTask.registerConstantDeferredUse(
- result.value, prefix);
+ compiler.deferredLoadTask
+ .registerConstantDeferredUse(result.value, prefix);
}
return result;
} else if (send.isCall) {
@@ -651,8 +665,12 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
ConstantValue result =
constantSystem.identity.fold(left.value, right.value);
if (result != null) {
- return new AstConstant(context, send, new IdenticalConstantExpression(
- left.expression, right.expression), result);
+ return new AstConstant(
+ context,
+ send,
+ new IdenticalConstantExpression(
+ left.expression, right.expression),
+ result);
}
}
return signalNotCompileTimeConstant(send);
@@ -672,7 +690,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (folded == null) {
return signalNotCompileTimeConstant(send);
}
- return new AstConstant(context, send,
+ return new AstConstant(
+ context,
+ send,
new UnaryConstantExpression(operator, receiverConstant.expression),
folded);
} else if (send.isOperator && !send.isPostfix) {
@@ -716,8 +736,12 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (folded == null) {
return signalNotCompileTimeConstant(send);
}
- return new AstConstant(context, send, new BinaryConstantExpression(
- left.expression, operator, right.expression), folded);
+ return new AstConstant(
+ context,
+ send,
+ new BinaryConstantExpression(
+ left.expression, operator, right.expression),
+ folded);
}
return signalNotCompileTimeConstant(send);
}
@@ -729,11 +753,8 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
} else if (!condition.value.isBool) {
DartType conditionType = condition.value.getType(coreTypes);
if (isEvaluatingConstant) {
- reporter.reportErrorMessage(
- node.condition,
- MessageKind.NOT_ASSIGNABLE,
- {'fromType': conditionType,
- 'toType': coreTypes.boolType});
+ reporter.reportErrorMessage(node.condition, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': conditionType, 'toType': coreTypes.boolType});
return new ErroneousAstConstant(context, node);
}
return null;
@@ -744,11 +765,14 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
return null;
}
BoolConstantValue boolCondition = condition.value;
- return new AstConstant(context, node, new ConditionalConstantExpression(
- condition.expression, thenExpression.expression,
- elseExpression.expression), boolCondition.primitiveValue
- ? thenExpression.value
- : elseExpression.value);
+ return new AstConstant(
+ context,
+ node,
+ new ConditionalConstantExpression(condition.expression,
+ thenExpression.expression, elseExpression.expression),
+ boolCondition.primitiveValue
+ ? thenExpression.value
+ : elseExpression.value);
}
AstConstant visitSendSet(SendSet node) {
@@ -762,9 +786,12 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
*
* Invariant: [target] must be an implementation element.
*/
- List<AstConstant> evaluateArgumentsToConstructor(Node node,
- CallStructure callStructure, Link<Node> arguments,
- ConstructorElement target, {AstConstant compileArgument(Node node)}) {
+ List<AstConstant> evaluateArgumentsToConstructor(
+ Node node,
+ CallStructure callStructure,
+ Link<Node> arguments,
+ ConstructorElement target,
+ {AstConstant compileArgument(Node node)}) {
assert(invariant(node, target.isImplementation));
AstConstant compileDefaultValue(VariableElement element) {
@@ -778,9 +805,8 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (!callStructure.signatureApplies(signature)) {
String name = Elements.constructorNameForDiagnostics(
target.enclosingClass.name, target.name);
- reporter.reportErrorMessage(
- node, MessageKind.INVALID_CONSTRUCTOR_ARGUMENTS,
- {'constructorName': name});
+ reporter.reportErrorMessage(node,
+ MessageKind.INVALID_CONSTRUCTOR_ARGUMENTS, {'constructorName': name});
return new List<AstConstant>.filled(
target.functionSignature.parameterCount,
@@ -834,8 +860,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
if (constructor.isEffectiveTargetMalformed) {
isInvalid = true;
} else {
- constructedType =
- constructor.computeEffectiveTargetType(type);
+ constructedType = constructor.computeEffectiveTargetType(type);
ConstructorElement target = constructor.effectiveTarget;
// The constructor must be an implementation to ensure that field
// initializers are handled correctly.
@@ -882,14 +907,26 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
return createFromEnvironmentConstant(node, constructedType, constructor,
callStructure, normalizedArguments, concreteArguments);
} else {
- return makeConstructedConstant(compiler, handler, context, node, type,
- constructor, constructedType, implementation, callStructure,
- concreteArguments, normalizedArguments);
+ return makeConstructedConstant(
+ compiler,
+ handler,
+ context,
+ node,
+ type,
+ constructor,
+ constructedType,
+ implementation,
+ callStructure,
+ concreteArguments,
+ normalizedArguments);
}
}
- AstConstant createFromEnvironmentConstant(Node node, InterfaceType type,
- ConstructorElement constructor, CallStructure callStructure,
+ AstConstant createFromEnvironmentConstant(
+ Node node,
+ InterfaceType type,
+ ConstructorElement constructor,
+ CallStructure callStructure,
List<AstConstant> normalizedArguments,
List<AstConstant> concreteArguments) {
var firstArgument = normalizedArguments[0].value;
@@ -906,8 +943,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
reporter.reportErrorMessage(
normalizedArguments[0].node,
MessageKind.NOT_ASSIGNABLE,
- {'fromType': type,
- 'toType': coreTypes.stringType});
+ {'fromType': type, 'toType': coreTypes.stringType});
return null;
}
@@ -917,8 +953,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
reporter.reportErrorMessage(
normalizedArguments[1].node,
MessageKind.NOT_ASSIGNABLE,
- {'fromType': type,
- 'toType': coreTypes.intType});
+ {'fromType': type, 'toType': coreTypes.intType});
return null;
}
@@ -928,8 +963,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
reporter.reportErrorMessage(
normalizedArguments[1].node,
MessageKind.NOT_ASSIGNABLE,
- {'fromType': type,
- 'toType': coreTypes.boolType});
+ {'fromType': type, 'toType': coreTypes.boolType});
return null;
}
@@ -939,8 +973,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
reporter.reportErrorMessage(
normalizedArguments[1].node,
MessageKind.NOT_ASSIGNABLE,
- {'fromType': type,
- 'toType': coreTypes.stringType});
+ {'fromType': type, 'toType': coreTypes.stringType});
return null;
}
@@ -989,24 +1022,31 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
}
}
- static AstConstant makeConstructedConstant(Compiler compiler,
- ConstantCompilerBase handler, Element context, Node node,
- InterfaceType type, ConstructorElement constructor,
- InterfaceType constructedType, ConstructorElement target,
- CallStructure callStructure, List<AstConstant> concreteArguments,
+ static AstConstant makeConstructedConstant(
+ Compiler compiler,
+ ConstantCompilerBase handler,
+ Element context,
+ Node node,
+ InterfaceType type,
+ ConstructorElement constructor,
+ InterfaceType constructedType,
+ ConstructorElement target,
+ CallStructure callStructure,
+ List<AstConstant> concreteArguments,
List<AstConstant> normalizedArguments) {
if (target.isRedirectingFactory) {
// This happens is case of cyclic redirection.
assert(invariant(node, compiler.compilationFailed,
message: "makeConstructedConstant can only be called with the "
- "effective target: $constructor"));
+ "effective target: $constructor"));
return new ErroneousAstConstant(context, node);
}
- assert(invariant(node,
+ assert(invariant(
+ node,
callStructure.signatureApplies(constructor.functionSignature) ||
compiler.compilationFailed,
message: "Call structure $callStructure does not apply to constructor "
- "$constructor."));
+ "$constructor."));
ConstructorEvaluator evaluator =
new ConstructorEvaluator(constructedType, target, handler, compiler);
@@ -1018,8 +1058,10 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
fieldConstants.forEach((FieldElement field, AstConstant astConstant) {
fieldValues[field] = astConstant.value;
});
- return new AstConstant(context, node, new ConstructedConstantExpression(
- type, constructor, callStructure,
+ return new AstConstant(
+ context,
+ node,
+ new ConstructedConstantExpression(type, constructor, callStructure,
concreteArguments.map((e) => e.expression).toList()),
new ConstructedConstantValue(constructedType, fieldValues));
}
@@ -1085,11 +1127,8 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
if (!constantSystem.isSubtype(
compiler.types, constantType, elementType)) {
reporter.withCurrentElement(constant.element, () {
- reporter.reportErrorMessage(
- constant.node,
- MessageKind.NOT_ASSIGNABLE,
- {'fromType': constantType,
- 'toType': elementType});
+ reporter.reportErrorMessage(constant.node, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': constantType, 'toType': elementType});
});
}
}
@@ -1127,7 +1166,9 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
List<AstConstant> compiledArguments, FunctionElement targetConstructor) {
ConstructorEvaluator evaluator = new ConstructorEvaluator(
constructedType.asInstanceOf(targetConstructor.enclosingClass),
- targetConstructor, handler, compiler);
+ targetConstructor,
+ handler,
+ compiler);
evaluator.evaluateConstructorFieldValues(compiledArguments);
// Copy over the fieldValues from the super/redirect-constructor.
// No need to go through [updateFieldValue] because the
@@ -1168,11 +1209,11 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
if (!target.isMalformed) {
List<AstConstant> compiledArguments =
evaluateArgumentsToConstructor(
- call,
- elements.getSelector(call).callStructure,
- call.arguments,
- target,
- compileArgument: evaluateConstant);
+ call,
+ elements.getSelector(call).callStructure,
+ call.arguments,
+ target,
+ compileArgument: evaluateConstant);
evaluateSuperOrRedirectSend(compiledArguments, target);
}
foundSuperOrRedirect = true;
@@ -1202,7 +1243,9 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
// already and compilation will fail anyway. So just ignore that case.
if (targetConstructor != null) {
List<AstConstant> compiledArguments = evaluateArgumentsToConstructor(
- functionNode, CallStructure.NO_ARGS, const Link<Node>(),
+ functionNode,
+ CallStructure.NO_ARGS,
+ const Link<Node>(),
targetConstructor);
evaluateSuperOrRedirectSend(compiledArguments, targetConstructor);
}
@@ -1227,10 +1270,10 @@ class ConstructorEvaluator extends CompileTimeConstantEvaluator {
/// inheritance chain of [classElement].
Map<FieldElement, AstConstant> buildFieldConstants(
ClassElement classElement) {
- Map<FieldElement, AstConstant> fieldConstants = <FieldElement, AstConstant>{
- };
- classElement.implementation
- .forEachInstanceField((ClassElement enclosing, FieldElement field) {
+ Map<FieldElement, AstConstant> fieldConstants =
+ <FieldElement, AstConstant>{};
+ classElement.implementation.forEachInstanceField(
+ (ClassElement enclosing, FieldElement field) {
AstConstant fieldValue = fieldValues[field];
if (fieldValue == null) {
// Use the default value.
@@ -1268,9 +1311,11 @@ class AstConstant {
factory AstConstant.fromDefaultValue(VariableElement element,
ConstantExpression constant, ConstantValue value) {
- return new AstConstant(element, element.initializer != null
- ? element.initializer
- : element.node, constant, value);
+ return new AstConstant(
+ element,
+ element.initializer != null ? element.initializer : element.node,
+ constant,
+ value);
}
String toString() => expression.toString();
@@ -1278,9 +1323,13 @@ class AstConstant {
/// A synthetic constant used to recover from errors.
class ErroneousAstConstant extends AstConstant {
- ErroneousAstConstant(Element element, Node node) : super(element, node,
- // TODO(johnniwinther): Return a [NonConstantValue] instead.
- new ErroneousConstantExpression(), new NullConstantValue());
+ ErroneousAstConstant(Element element, Node node)
+ : super(
+ element,
+ node,
+ // TODO(johnniwinther): Return a [NonConstantValue] instead.
+ new ErroneousConstantExpression(),
+ new NullConstantValue());
}
// TODO(johnniwinther): Clean this up.
« no previous file with comments | « pkg/compiler/lib/src/common/work.dart ('k') | pkg/compiler/lib/src/compiler.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698