| 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 390d973a2f0ccfae467f46857d82e1d07460e8ba..7e48c067a62271f5fdea46d901dfc2e04e0c94ce 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
|
| @@ -93,7 +93,6 @@ import static com.google.dart.java2dart.util.ASTFactory.doStatement;
|
| import static com.google.dart.java2dart.util.ASTFactory.doubleLiteral;
|
| import static com.google.dart.java2dart.util.ASTFactory.emptyFunctionBody;
|
| import static com.google.dart.java2dart.util.ASTFactory.emptyStatement;
|
| -import static com.google.dart.java2dart.util.ASTFactory.eolDocComment;
|
| import static com.google.dart.java2dart.util.ASTFactory.expressionFunctionBody;
|
| import static com.google.dart.java2dart.util.ASTFactory.expressionStatement;
|
| import static com.google.dart.java2dart.util.ASTFactory.extendsClause;
|
| @@ -163,13 +162,6 @@ import java.util.regex.Pattern;
|
| * Translates Java AST to Dart AST.
|
| */
|
| public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
|
| -
|
| - public static final String ENUM_NAME_FIELD_NAME = "name";
|
| - public static final String ENUM_ORDINAL_FIELD_NAME = "ordinal";
|
| -
|
| - private static final String ENUM_NAME_FIELD_COMMENT = "/// The name of this enum constant, as declared in the enum declaration.";
|
| - private static final String ENUM_ORDINAL_FIELD_COMMENT = "/// The position in the enum declaration.";
|
| -
|
| private static final Pattern JAVADOC_CODE_PATTERN = Pattern.compile("\\{@code ([^\\}]*)\\}");
|
| private static final Pattern JAVADOC_LINK_PATTERN = Pattern.compile("\\{@link ([^\\}]*)\\}");
|
|
|
| @@ -657,7 +649,7 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
|
| if (anoClassDeclaration != null) {
|
| innerClassName = enumTypeName + "_" + fieldName;
|
| declareInnerClass(constructorBinding, anoClassDeclaration, innerClassName, new String[] {
|
| - "String", ENUM_NAME_FIELD_NAME, "int", ENUM_ORDINAL_FIELD_NAME});
|
| + "String", "name", "int", "ordinal"});
|
| }
|
| }
|
| // prepare field type
|
| @@ -687,20 +679,18 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
|
| @SuppressWarnings("unchecked")
|
| public boolean visit(org.eclipse.jdt.core.dom.EnumDeclaration node) {
|
| SimpleIdentifier name = translateSimpleName(node.getName());
|
| + // extends
|
| + ExtendsClause extendsClause = extendsClause(typeName("Enum", typeName(name)));
|
| // implements
|
| - ImplementsClause implementsClause;
|
| + ImplementsClause implementsClause = null;
|
| {
|
| List<TypeName> interfaces = Lists.newArrayList();
|
| - // add Comparable
|
| - interfaces.add(typeName("Enum", typeName(name)));
|
| - // add declared interfaces
|
| if (!node.superInterfaceTypes().isEmpty()) {
|
| for (Object javaInterface : node.superInterfaceTypes()) {
|
| interfaces.add((TypeName) translate((org.eclipse.jdt.core.dom.ASTNode) javaInterface));
|
| }
|
| + implementsClause = new ImplementsClause(null, interfaces);
|
| }
|
| - // create ImplementsClause
|
| - implementsClause = new ImplementsClause(null, interfaces);
|
| }
|
| // members
|
| List<ClassMember> members = Lists.newArrayList();
|
| @@ -719,18 +709,6 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
|
| listType(typeName(name), 1),
|
| variableDeclaration("values", listLiteral(valuesList))));
|
| // body declarations
|
| - members.add(fieldDeclaration(
|
| - eolDocComment(ENUM_NAME_FIELD_COMMENT),
|
| - false,
|
| - Keyword.FINAL,
|
| - typeName("String"),
|
| - variableDeclaration(ENUM_NAME_FIELD_NAME)));
|
| - members.add(fieldDeclaration(
|
| - eolDocComment(ENUM_ORDINAL_FIELD_COMMENT),
|
| - false,
|
| - Keyword.FINAL,
|
| - typeName("int"),
|
| - variableDeclaration(ENUM_ORDINAL_FIELD_NAME)));
|
| boolean hasConstructor = false;
|
| for (Iterator<?> I = node.bodyDeclarations().iterator(); I.hasNext();) {
|
| org.eclipse.jdt.core.dom.BodyDeclaration javaBodyDecl = (org.eclipse.jdt.core.dom.BodyDeclaration) I.next();
|
| @@ -763,35 +741,11 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
|
| node.bodyDeclarations().remove(ac);
|
| }
|
| }
|
| - // compareTo()
|
| - members.add(methodDeclaration(
|
| - typeName("int"),
|
| - identifier("compareTo"),
|
| - formalParameterList(simpleFormalParameter(typeName(name), "other")),
|
| - expressionFunctionBody(binaryExpression(
|
| - identifier(ENUM_ORDINAL_FIELD_NAME),
|
| - TokenType.MINUS,
|
| - propertyAccess(identifier("other"), identifier(ENUM_ORDINAL_FIELD_NAME))))));
|
| - // get hashCode
|
| - members.add(methodDeclaration(
|
| - null,
|
| - typeName("int"),
|
| - null,
|
| - null,
|
| - identifier("hashCode"),
|
| - null,
|
| - expressionFunctionBody(identifier(ENUM_ORDINAL_FIELD_NAME))));
|
| - // toString()
|
| - members.add(methodDeclaration(
|
| - typeName("String"),
|
| - identifier("toString"),
|
| - formalParameterList(),
|
| - expressionFunctionBody(identifier(ENUM_NAME_FIELD_NAME))));
|
| }
|
| return done(classDeclaration(
|
| translateJavadoc(node),
|
| name,
|
| - null,
|
| + extendsClause,
|
| null,
|
| implementsClause,
|
| members));
|
| @@ -1102,6 +1056,17 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
|
| typeArguments = translateTypeNames(javaTypeArguments);
|
| }
|
| }
|
| + // may be all dynamic type arguments
|
| + if (typeArguments != null) {
|
| + boolean allDynamicTypeArgs = true;
|
| + for (TypeName typeName : typeArguments) {
|
| + allDynamicTypeArgs &= typeName.getName().getName().equals("dynamic");
|
| + }
|
| + if (allDynamicTypeArgs) {
|
| + typeArguments = null;
|
| + }
|
| + }
|
| + // continue
|
| ITypeBinding binding = node.resolveBinding();
|
| TypeName typeName = typeName(((TypeName) translate(node.getType())).getName(), typeArguments);
|
| context.putNodeBinding(typeName, binding);
|
| @@ -1561,7 +1526,7 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
|
| public boolean visit(org.eclipse.jdt.core.dom.WildcardType node) {
|
| org.eclipse.jdt.core.dom.Type javaBoundType = node.getBound();
|
| if (javaBoundType == null) {
|
| - return done(typeName("Object"));
|
| + return done(typeName("dynamic"));
|
| } else {
|
| return done(translate(javaBoundType));
|
| }
|
| @@ -1900,10 +1865,13 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
|
| if (isEnumConstructor) {
|
| context.getConstructorDescription(binding).isEnum = true;
|
| List<FormalParameter> parameters = Lists.newArrayList();
|
| - parameters.add(fieldFormalParameter(null, null, ENUM_NAME_FIELD_NAME));
|
| - parameters.add(fieldFormalParameter(null, null, ENUM_ORDINAL_FIELD_NAME));
|
| + parameters.add(simpleFormalParameter(typeName("String"), "name"));
|
| + parameters.add(simpleFormalParameter(typeName("int"), "ordinal"));
|
| parameters.addAll(parameterList.getParameters());
|
| parameterList = formalParameterList(parameters);
|
| + initializers = Lists.<ConstructorInitializer> newArrayList(superConstructorInvocation(
|
| + identifier("name"),
|
| + identifier("ordinal")));
|
| }
|
| // done
|
| ConstructorDeclaration constructor = constructorDeclaration(
|
|
|