| 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 ff674e2b251e25b6e6484aa7534d1717e5fb2ae6..8882e2aeb5463f3f60805c72897130bb36c1da4a 100644
|
| --- a/pkg/compiler/lib/src/compile_time_constants.dart
|
| +++ b/pkg/compiler/lib/src/compile_time_constants.dart
|
| @@ -515,11 +515,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| }
|
|
|
| AstConstant visitLiteralString(LiteralString node) {
|
| - return new AstConstant(
|
| - context,
|
| - node,
|
| - new StringConstantExpression(node.dartString.slowToString()),
|
| - constantSystem.createString(node.dartString));
|
| + String text = node.dartString.slowToString();
|
| + return new AstConstant(context, node, new StringConstantExpression(text),
|
| + constantSystem.createString(text));
|
| }
|
|
|
| AstConstant visitStringJuxtaposition(StringJuxtaposition node) {
|
| @@ -537,8 +535,8 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| context,
|
| node,
|
| new ConcatenateConstantExpression([left.expression, right.expression]),
|
| - constantSystem.createString(new DartString.concat(
|
| - leftValue.primitiveValue, rightValue.primitiveValue)));
|
| + constantSystem.createString(
|
| + leftValue.primitiveValue + rightValue.primitiveValue));
|
| }
|
|
|
| AstConstant visitStringInterpolation(StringInterpolation node) {
|
| @@ -548,8 +546,9 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| return initialString;
|
| }
|
| subexpressions.add(initialString.expression);
|
| + StringBuffer sb = new StringBuffer();
|
| StringConstantValue initialStringValue = initialString.value;
|
| - DartString accumulator = initialStringValue.primitiveValue;
|
| + sb.write(initialStringValue.primitiveValue);
|
| for (StringInterpolationPart part in node.parts) {
|
| AstConstant subexpression = evaluate(part.expression);
|
| if (subexpression == null || subexpression.isError) {
|
| @@ -557,32 +556,25 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| }
|
| subexpressions.add(subexpression.expression);
|
| ConstantValue expression = subexpression.value;
|
| - DartString expressionString;
|
| - if (expression.isNum || expression.isBool || expression.isNull) {
|
| + if (expression.isPrimitive) {
|
| PrimitiveConstantValue primitive = expression;
|
| - expressionString =
|
| - new DartString.literal(primitive.primitiveValue.toString());
|
| - } else if (expression.isString) {
|
| - PrimitiveConstantValue primitive = expression;
|
| - expressionString = primitive.primitiveValue;
|
| + sb.write(primitive.primitiveValue);
|
| } else {
|
| // TODO(johnniwinther): Specialize message to indicated that the problem
|
| // is not constness but the types of the const expressions.
|
| return signalNotCompileTimeConstant(part.expression);
|
| }
|
| - accumulator = new DartString.concat(accumulator, expressionString);
|
| AstConstant partString = evaluate(part.string);
|
| if (partString == null) return null;
|
| subexpressions.add(partString.expression);
|
| StringConstantValue partStringValue = partString.value;
|
| - accumulator =
|
| - new DartString.concat(accumulator, partStringValue.primitiveValue);
|
| + sb.write(partStringValue.primitiveValue);
|
| }
|
| return new AstConstant(
|
| context,
|
| node,
|
| new ConcatenateConstantExpression(subexpressions),
|
| - constantSystem.createString(accumulator));
|
| + constantSystem.createString(sb.toString()));
|
| }
|
|
|
| AstConstant visitLiteralSymbol(LiteralSymbol node) {
|
| @@ -590,7 +582,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| String text = node.slowNameString;
|
| List<AstConstant> arguments = <AstConstant>[
|
| new AstConstant(context, node, new StringConstantExpression(text),
|
| - constantSystem.createString(new LiteralDartString(text)))
|
| + constantSystem.createString(text))
|
| ];
|
| ConstructorElement constructor =
|
| compiler.commonElements.symbolConstructorTarget;
|
| @@ -668,7 +660,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| AstConstant left = evaluate(send.receiver);
|
| if (left != null && left.value.isString) {
|
| StringConstantValue stringConstantValue = left.value;
|
| - DartString string = stringConstantValue.primitiveValue;
|
| + String string = stringConstantValue.primitiveValue;
|
| IntConstantValue length = constantSystem.createInt(string.length);
|
| result = new AstConstant(context, send,
|
| new StringLengthConstantExpression(left.expression), length);
|
| @@ -1043,7 +1035,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| {'fromType': type, 'toType': commonElements.stringType});
|
| }
|
|
|
| - String name = firstArgument.primitiveValue.slowToString();
|
| + String name = firstArgument.primitiveValue;
|
| String value = compiler.fromEnvironment(name);
|
|
|
| AstConstant createEvaluatedConstant(ConstantValue value) {
|
| @@ -1083,8 +1075,7 @@ class CompileTimeConstantEvaluator extends Visitor<AstConstant> {
|
| }
|
| } else {
|
| assert(constructor.isStringFromEnvironmentConstructor);
|
| - return createEvaluatedConstant(
|
| - constantSystem.createString(new DartString.literal(value)));
|
| + return createEvaluatedConstant(constantSystem.createString(value));
|
| }
|
| }
|
|
|
|
|