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

Unified Diff: editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java

Issue 136223002: Generate names for anonymous Java classes using enclosing classes and members. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java
diff --git a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java
index 0d779ee4d39432cc6595c41b292c822d9f55aa1e..3ae66dae90d220a9839b141f49deaa223b463b40 100644
--- a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java
+++ b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java
@@ -498,13 +498,15 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
name = name + "_" + context.generateTechnicalAnonymousClassIndex();
innerClass = declareInnerClass(binding, anoDeclaration, name, ArrayUtils.EMPTY_STRING_ARRAY);
typeNameNode = typeName(name);
+ final SimpleIdentifier typeNameIdentifier = (SimpleIdentifier) typeNameNode.getName();
+ putReference(binding, typeNameIdentifier);
+ putReference(binding, innerClass.getName());
// prepare enclosing type
final ITypeBinding enclosingTypeBinding = getEnclosingTypeBinding(node);
final SimpleIdentifier enclosingTypeRef = replaceEnclosingClassMemberReferences(
innerClass,
enclosingTypeBinding);
// declare referenced final variables
- final String finalName = name;
anoDeclaration.accept(new ASTVisitor() {
final Set<org.eclipse.jdt.core.dom.IVariableBinding> addedParameters = Sets.newHashSet();
final List<FormalParameter> constructorParameters = Lists.newArrayList();
@@ -525,7 +527,7 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
innerClass.getMembers().add(
index,
constructorDeclaration(
- identifier(finalName),
+ typeNameIdentifier,
null,
formalParameterList(constructorParameters),
null));
@@ -573,6 +575,13 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
return super.visit(node);
}
});
+ // replace constructor type with shared (and tracked) identifier
+ for (ClassMember classMember : innerClass.getMembers()) {
+ if (classMember instanceof ConstructorDeclaration) {
+ ConstructorDeclaration cd = (ConstructorDeclaration) classMember;
+ cd.setReturnType(typeNameIdentifier);
+ }
+ }
} else {
innerClass = null;
}

Powered by Google App Engine
This is Rietveld 408576698