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

Side by Side Diff: pkg/compiler/lib/src/constants/expressions.dart

Issue 1043723002: Handle NewExpression in SemanticSendVisitor. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased+fix modely.dart Created 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/compile_time_constants.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698