| 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 dart_codegen; | 5 library dart_codegen; |
| 6 | 6 |
| 7 import 'dart_tree.dart' as tree; | 7 import 'dart_tree.dart' as tree; |
| 8 import 'dart_printer.dart'; | 8 import 'dart_printer.dart'; |
| 9 import 'dart_tree_printer.dart' show TreePrinter; | 9 import 'dart_tree_printer.dart' show TreePrinter; |
| 10 import '../tree/tree.dart' as frontend; | 10 import '../tree/tree.dart' as frontend; |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 typeArgument: emitOptionalType(exp.type.typeArguments.single)); | 402 typeArgument: emitOptionalType(exp.type.typeArguments.single)); |
| 403 } | 403 } |
| 404 | 404 |
| 405 Expression visitLiteralMap(tree.LiteralMap exp) { | 405 Expression visitLiteralMap(tree.LiteralMap exp) { |
| 406 List<LiteralMapEntry> entries = new List<LiteralMapEntry>.generate( | 406 List<LiteralMapEntry> entries = new List<LiteralMapEntry>.generate( |
| 407 exp.values.length, | 407 exp.values.length, |
| 408 (i) => new LiteralMapEntry(visitExpression(exp.keys[i]), | 408 (i) => new LiteralMapEntry(visitExpression(exp.keys[i]), |
| 409 visitExpression(exp.values[i]))); | 409 visitExpression(exp.values[i]))); |
| 410 List<TypeAnnotation> typeArguments = exp.type.treatAsRaw | 410 List<TypeAnnotation> typeArguments = exp.type.treatAsRaw |
| 411 ? null | 411 ? null |
| 412 : exp.type.typeArguments.mapToList(emitType); | 412 : exp.type.typeArguments.map(emitType).toList(growable: false); |
| 413 return new LiteralMap(entries, typeArguments: typeArguments); | 413 return new LiteralMap(entries, typeArguments: typeArguments); |
| 414 } | 414 } |
| 415 | 415 |
| 416 Expression visitTypeOperator(tree.TypeOperator exp) { | 416 Expression visitTypeOperator(tree.TypeOperator exp) { |
| 417 return new TypeOperator(visitExpression(exp.receiver), | 417 return new TypeOperator(visitExpression(exp.receiver), |
| 418 exp.operator, | 418 exp.operator, |
| 419 emitType(exp.type)); | 419 emitType(exp.type)); |
| 420 } | 420 } |
| 421 | 421 |
| 422 List<Argument> emitArguments(tree.Invoke exp) { | 422 List<Argument> emitArguments(tree.Invoke exp) { |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 | 535 |
| 536 Expression visitVariable(tree.Variable exp) { | 536 Expression visitVariable(tree.Variable exp) { |
| 537 return new Identifier(getVariableName(exp)) | 537 return new Identifier(getVariableName(exp)) |
| 538 ..element = exp.element; | 538 ..element = exp.element; |
| 539 } | 539 } |
| 540 | 540 |
| 541 TypeAnnotation emitType(DartType type) { | 541 TypeAnnotation emitType(DartType type) { |
| 542 if (type is GenericType) { | 542 if (type is GenericType) { |
| 543 return new TypeAnnotation( | 543 return new TypeAnnotation( |
| 544 type.element.name, | 544 type.element.name, |
| 545 type.typeArguments.mapToList(emitType, growable:false)) | 545 type.typeArguments.map(emitType).toList(growable:false)) |
| 546 ..dartType = type; | 546 ..dartType = type; |
| 547 } else if (type is VoidType) { | 547 } else if (type is VoidType) { |
| 548 return new TypeAnnotation('void') | 548 return new TypeAnnotation('void') |
| 549 ..dartType = type; | 549 ..dartType = type; |
| 550 } else if (type is TypeVariableType) { | 550 } else if (type is TypeVariableType) { |
| 551 return new TypeAnnotation(type.name) | 551 return new TypeAnnotation(type.name) |
| 552 ..dartType = type; | 552 ..dartType = type; |
| 553 } else if (type is DynamicType) { | 553 } else if (type is DynamicType) { |
| 554 return new TypeAnnotation("dynamic") | 554 return new TypeAnnotation("dynamic") |
| 555 ..dartType = type; | 555 ..dartType = type; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 590 typeArgument: parent.emitOptionalType(exp.type.typeArguments.single)); | 590 typeArgument: parent.emitOptionalType(exp.type.typeArguments.single)); |
| 591 } | 591 } |
| 592 | 592 |
| 593 Expression visitMap(MapConstExp exp) { | 593 Expression visitMap(MapConstExp exp) { |
| 594 List<LiteralMapEntry> entries = new List<LiteralMapEntry>.generate( | 594 List<LiteralMapEntry> entries = new List<LiteralMapEntry>.generate( |
| 595 exp.values.length, | 595 exp.values.length, |
| 596 (i) => new LiteralMapEntry(visit(exp.keys[i]), | 596 (i) => new LiteralMapEntry(visit(exp.keys[i]), |
| 597 visit(exp.values[i]))); | 597 visit(exp.values[i]))); |
| 598 List<TypeAnnotation> typeArguments = exp.type.treatAsRaw | 598 List<TypeAnnotation> typeArguments = exp.type.treatAsRaw |
| 599 ? null | 599 ? null |
| 600 : exp.type.typeArguments.mapToList(parent.emitType); | 600 : exp.type.typeArguments.map(parent.emitType).toList(); |
| 601 return new LiteralMap(entries, isConst: true, typeArguments: typeArguments); | 601 return new LiteralMap(entries, isConst: true, typeArguments: typeArguments); |
| 602 } | 602 } |
| 603 | 603 |
| 604 Expression visitConstructor(ConstructorConstExp exp) { | 604 Expression visitConstructor(ConstructorConstExp exp) { |
| 605 int positionalArgumentCount = exp.selector.positionalArgumentCount; | 605 int positionalArgumentCount = exp.selector.positionalArgumentCount; |
| 606 List<Argument> args = new List<Argument>.generate( | 606 List<Argument> args = new List<Argument>.generate( |
| 607 positionalArgumentCount, | 607 positionalArgumentCount, |
| 608 (i) => visit(exp.arguments[i])); | 608 (i) => visit(exp.arguments[i])); |
| 609 for (int i = 0; i < exp.selector.namedArgumentCount; ++i) { | 609 for (int i = 0; i < exp.selector.namedArgumentCount; ++i) { |
| 610 args.add(new NamedArgument(exp.selector.namedArguments[i], | 610 args.add(new NamedArgument(exp.selector.namedArguments[i], |
| (...skipping 28 matching lines...) Expand all Loading... |
| 639 return new Identifier(name) | 639 return new Identifier(name) |
| 640 ..element = exp.element; | 640 ..element = exp.element; |
| 641 } | 641 } |
| 642 | 642 |
| 643 Expression visitFunction(FunctionConstExp exp) { | 643 Expression visitFunction(FunctionConstExp exp) { |
| 644 return new Identifier(exp.element.name) | 644 return new Identifier(exp.element.name) |
| 645 ..element = exp.element; | 645 ..element = exp.element; |
| 646 } | 646 } |
| 647 | 647 |
| 648 } | 648 } |
| OLD | NEW |