| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library dart2js.constants.expressions; | 5 library dart2js.constants.expressions; |
| 6 | 6 |
| 7 import '../dart2jslib.dart' show assertDebugMode; | 7 import '../dart2jslib.dart' show assertDebugMode; |
| 8 import '../dart_types.dart'; | 8 import '../dart_types.dart'; |
| 9 import '../elements/elements.dart' show | 9 import '../elements/elements.dart' show |
| 10 Element, | 10 Element, |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 final List<ConstantExpression> values; | 90 final List<ConstantExpression> values; |
| 91 | 91 |
| 92 MapConstantExpression(this.value, this.type, this.keys, this.values); | 92 MapConstantExpression(this.value, this.type, this.keys, this.values); |
| 93 | 93 |
| 94 accept(ConstantExpressionVisitor visitor, [context]) { | 94 accept(ConstantExpressionVisitor visitor, [context]) { |
| 95 return visitor.visitMap(this, context); | 95 return visitor.visitMap(this, context); |
| 96 } | 96 } |
| 97 } | 97 } |
| 98 | 98 |
| 99 /// Invocation of a const constructor. | 99 /// Invocation of a const constructor. |
| 100 class ConstructedConstantExpresssion extends ConstantExpression { | 100 class ConstructedConstantExpression extends ConstantExpression { |
| 101 final ConstantValue value; | 101 final ConstantValue value; |
| 102 final InterfaceType type; | 102 final InterfaceType type; |
| 103 final FunctionElement target; | 103 final FunctionElement target; |
| 104 final Selector selector; | 104 final Selector selector; |
| 105 final List<ConstantExpression> arguments; | 105 final List<ConstantExpression> arguments; |
| 106 | 106 |
| 107 ConstructedConstantExpresssion(this.value, | 107 ConstructedConstantExpression(this.value, |
| 108 this.type, | 108 this.type, |
| 109 this.target, | 109 this.target, |
| 110 this.selector, | 110 this.selector, |
| 111 this.arguments) { | 111 this.arguments) { |
| 112 assert(type.element == target.enclosingClass); | 112 assert(type.element == target.enclosingClass); |
| 113 } | 113 } |
| 114 | 114 |
| 115 accept(ConstantExpressionVisitor visitor, [context]) { | 115 accept(ConstantExpressionVisitor visitor, [context]) { |
| 116 return visitor.visitConstructed(this, context); | 116 return visitor.visitConstructed(this, context); |
| 117 } | 117 } |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 abstract class ConstantExpressionVisitor<C, R> { | 267 abstract class ConstantExpressionVisitor<C, R> { |
| 268 const ConstantExpressionVisitor(); | 268 const ConstantExpressionVisitor(); |
| 269 | 269 |
| 270 R visit(ConstantExpression constant, C context) { | 270 R visit(ConstantExpression constant, C context) { |
| 271 return constant.accept(this, context); | 271 return constant.accept(this, context); |
| 272 } | 272 } |
| 273 | 273 |
| 274 R visitPrimitive(PrimitiveConstantExpression exp, C context); | 274 R visitPrimitive(PrimitiveConstantExpression exp, C context); |
| 275 R visitList(ListConstantExpression exp, C context); | 275 R visitList(ListConstantExpression exp, C context); |
| 276 R visitMap(MapConstantExpression exp, C context); | 276 R visitMap(MapConstantExpression exp, C context); |
| 277 R visitConstructed(ConstructedConstantExpresssion exp, C context); | 277 R visitConstructed(ConstructedConstantExpression exp, C context); |
| 278 R visitConcatenate(ConcatenateConstantExpression exp, C context); | 278 R visitConcatenate(ConcatenateConstantExpression exp, C context); |
| 279 R visitSymbol(SymbolConstantExpression exp, C context); | 279 R visitSymbol(SymbolConstantExpression exp, C context); |
| 280 R visitType(TypeConstantExpression exp, C context); | 280 R visitType(TypeConstantExpression exp, C context); |
| 281 R visitVariable(VariableConstantExpression exp, C context); | 281 R visitVariable(VariableConstantExpression exp, C context); |
| 282 R visitFunction(FunctionConstantExpression exp, C context); | 282 R visitFunction(FunctionConstantExpression exp, C context); |
| 283 R visitBinary(BinaryConstantExpression exp, C context); | 283 R visitBinary(BinaryConstantExpression exp, C context); |
| 284 R visitUnary(UnaryConstantExpression exp, C context); | 284 R visitUnary(UnaryConstantExpression exp, C context); |
| 285 R visitConditional(ConditionalConstantExpression exp, C context); | 285 R visitConditional(ConditionalConstantExpression exp, C context); |
| 286 } | 286 } |
| 287 | 287 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 sb.write(', '); | 360 sb.write(', '); |
| 361 } | 361 } |
| 362 visit(exp.keys[index]); | 362 visit(exp.keys[index]); |
| 363 sb.write(': '); | 363 sb.write(': '); |
| 364 visit(exp.values[index]); | 364 visit(exp.values[index]); |
| 365 } | 365 } |
| 366 sb.write('}'); | 366 sb.write('}'); |
| 367 } | 367 } |
| 368 | 368 |
| 369 @override | 369 @override |
| 370 void visitConstructed(ConstructedConstantExpresssion exp, [_]) { | 370 void visitConstructed(ConstructedConstantExpression exp, [_]) { |
| 371 sb.write('const '); | 371 sb.write('const '); |
| 372 sb.write(exp.target.enclosingClass.name); | 372 sb.write(exp.target.enclosingClass.name); |
| 373 if (exp.target.name != '') { | 373 if (exp.target.name != '') { |
| 374 sb.write('.'); | 374 sb.write('.'); |
| 375 sb.write(exp.target.name); | 375 sb.write(exp.target.name); |
| 376 } | 376 } |
| 377 writeTypeArguments(exp.type); | 377 writeTypeArguments(exp.type); |
| 378 sb.write('('); | 378 sb.write('('); |
| 379 bool needsComma = false; | 379 bool needsComma = false; |
| 380 | 380 |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 void visitConditional(ConditionalConstantExpression exp, [_]) { | 459 void visitConditional(ConditionalConstantExpression exp, [_]) { |
| 460 write(exp, exp.condition, leftAssociative: false); | 460 write(exp, exp.condition, leftAssociative: false); |
| 461 sb.write(' ? '); | 461 sb.write(' ? '); |
| 462 write(exp, exp.trueExp); | 462 write(exp, exp.trueExp); |
| 463 sb.write(' : '); | 463 sb.write(' : '); |
| 464 write(exp, exp.falseExp); | 464 write(exp, exp.falseExp); |
| 465 } | 465 } |
| 466 | 466 |
| 467 String toString() => sb.toString(); | 467 String toString() => sb.toString(); |
| 468 } | 468 } |
| OLD | NEW |