Chromium Code Reviews| Index: editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/Context.java |
| diff --git a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/Context.java b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/Context.java |
| index f56567d3ab75dc32d932050c4d70e9937acff199..1b69b7b227443697b093ed129658339cb48278b0 100644 |
| --- a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/Context.java |
| +++ b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/Context.java |
| @@ -101,6 +101,7 @@ public class Context { |
| public final List<SuperConstructorInvocation> superInvocations = Lists.newArrayList(); |
| public final List<InstanceCreationExpression> instanceCreations = Lists.newArrayList(); |
| public boolean isEnum; |
| + public boolean insertEnclosingTypeRef; |
| String declName; |
| public ConstructorDescription(IMethodBinding binding) { |
| @@ -553,6 +554,14 @@ public class Context { |
| /** |
| * @return the not <code>null</code> {@link ConstructorDescription}, may be just added. |
| */ |
| + public ConstructorDescription getConstructorDescription(ConstructorDeclaration node) { |
| + IMethodBinding binding = constructorToBinding.get(node); |
| + return getConstructorDescription(binding); |
| + } |
| + |
| + /** |
| + * @return the not <code>null</code> {@link ConstructorDescription}, may be just added. |
| + */ |
| public ConstructorDescription getConstructorDescription(IMethodBinding binding) { |
| ConstructorDescription description = bindingToConstructor.get(binding); |
| if (description == null) { |
| @@ -690,6 +699,7 @@ public class Context { |
| ensureMethodParameterDoesNotHide(dartUniverse); |
| new ConstructorSemanticProcessor(this).process(dartUniverse); |
| renameConstructors(dartUniverse); |
| + insertEnclosingTypeForInstanceCreationArguments(dartUniverse); |
| } |
| // done |
| return dartUniverse; |
| @@ -1018,6 +1028,21 @@ public class Context { |
| }); |
| } |
| + // XXX |
|
Brian Wilkerson
2013/08/07 20:31:29
Remove?
|
| + private void insertEnclosingTypeForInstanceCreationArguments(CompilationUnit unit) { |
| + unit.accept(new RecursiveASTVisitor<Void>() { |
| + @Override |
| + public Void visitInstanceCreationExpression(InstanceCreationExpression node) { |
| + IMethodBinding binding = (IMethodBinding) getNodeBinding(node); |
| + ConstructorDescription constructorDescription = getConstructorDescription(binding); |
| + if (constructorDescription.insertEnclosingTypeRef) { |
| + node.getArgumentList().getArguments().add(0, thisExpression()); |
| + } |
| + return super.visitInstanceCreationExpression(node); |
| + } |
| + }); |
| + } |
| + |
| private void replaceInnerClassReferences(CompilationUnit unit) { |
| for (SimpleIdentifier identifier : innerClassNames) { |
| renameIdentifier(identifier, identifier.getName()); |