| Index: pkg/analyzer2dart/lib/src/cps_generator.dart
|
| diff --git a/pkg/analyzer2dart/lib/src/cps_generator.dart b/pkg/analyzer2dart/lib/src/cps_generator.dart
|
| index a1739f32df775475229c287b43b8c0714cec9bff..d22d3aca17ca13566d3b91f5b37454a844a06e8d 100644
|
| --- a/pkg/analyzer2dart/lib/src/cps_generator.dart
|
| +++ b/pkg/analyzer2dart/lib/src/cps_generator.dart
|
| @@ -6,6 +6,7 @@ library analyzer2dart.cps_generator;
|
|
|
| import 'package:analyzer/analyzer.dart';
|
|
|
| +import 'package:compiler/implementation/dart_types.dart' as dart2js;
|
| import 'package:compiler/implementation/elements/elements.dart' as dart2js;
|
| import 'package:analyzer/src/generated/source.dart';
|
| import 'package:analyzer/src/generated/element.dart' as analyzer;
|
| @@ -82,7 +83,8 @@ class CpsGeneratingVisitor extends SemanticVisitor<ir.Node>
|
| List<ir.Definition> arguments = visitArguments(node.argumentList);
|
| return irBuilder.buildDynamicInvocation(
|
| receiver,
|
| - createSelectorFromMethodInvocation(node, node.methodName.name),
|
| + createSelectorFromMethodInvocation(
|
| + node.argumentList, node.methodName.name),
|
| arguments);
|
| }
|
|
|
| @@ -94,11 +96,33 @@ class CpsGeneratingVisitor extends SemanticVisitor<ir.Node>
|
| List<ir.Definition> arguments = visitArguments(node.argumentList);
|
| return irBuilder.buildStaticInvocation(
|
| element,
|
| - createSelectorFromMethodInvocation(node, node.methodName.name),
|
| + createSelectorFromMethodInvocation(
|
| + node.argumentList, node.methodName.name),
|
| arguments);
|
| }
|
|
|
| @override
|
| + ir.Primitive visitInstanceCreationExpression(
|
| + InstanceCreationExpression node) {
|
| + analyzer.Element staticElement = node.staticElement;
|
| + if (staticElement != null) {
|
| + dart2js.Element element = converter.convertElement(staticElement);
|
| + dart2js.DartType type = converter.convertType(node.staticType);
|
| + List<ir.Definition> arguments = visitArguments(node.argumentList);
|
| + String name = '';
|
| + if (node.constructorName.name != null) {
|
| + name = node.constructorName.name.name;
|
| + }
|
| + return irBuilder.buildConstructorInvocation(
|
| + element,
|
| + createSelectorFromMethodInvocation(node.argumentList, name),
|
| + type,
|
| + arguments);
|
| + }
|
| + return giveUp(node, "Unresolved constructor invocation.");
|
| + }
|
| +
|
| + @override
|
| ir.Constant visitNullLiteral(NullLiteral node) {
|
| return irBuilder.buildNullLiteral();
|
| }
|
|
|