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 b935c5d24641007c2ca9c0065af40cd4230b14c0..1b07c9c0db49dfce56741ca7268c904831f0cd54 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 |
@@ -150,7 +150,6 @@ import org.eclipse.jdt.core.dom.IMethodBinding; |
import org.eclipse.jdt.core.dom.ITypeBinding; |
import org.eclipse.jdt.core.dom.IVariableBinding; |
import org.eclipse.jdt.core.dom.SimpleName; |
-import org.eclipse.jdt.core.dom.TagElement; |
import org.eclipse.jdt.core.dom.Type; |
import org.eclipse.jdt.core.dom.TypeDeclaration; |
@@ -260,8 +259,8 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor { |
* Translates given Java AST into Dart AST. |
*/ |
public static CompilationUnit translate(Context context, |
- org.eclipse.jdt.core.dom.CompilationUnit javaUnit) { |
- SyntaxTranslator translator = new SyntaxTranslator(context); |
+ org.eclipse.jdt.core.dom.CompilationUnit javaUnit, String javaSource) { |
+ SyntaxTranslator translator = new SyntaxTranslator(context, javaSource); |
javaUnit.accept(translator); |
return (CompilationUnit) translator.result; |
} |
@@ -396,6 +395,7 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor { |
} |
private final Context context; |
+ private final String javaSource; |
private ASTNode result; |
@@ -403,8 +403,9 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor { |
private MethodDeclaration constructorImpl; |
- private SyntaxTranslator(Context context) { |
+ private SyntaxTranslator(Context context, String javaSource) { |
this.context = context; |
+ this.javaSource = javaSource; |
} |
@Override |
@@ -1078,21 +1079,13 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor { |
@Override |
public boolean visit(org.eclipse.jdt.core.dom.Javadoc node) { |
- StringBuilder buffer = new StringBuilder(); |
- { |
- buffer.append("/**"); |
- for (Object javaTag : node.tags()) { |
- String javaTagString = tagElementToString((TagElement) javaTag); |
- String dartDocString = StringUtils.replace(javaTagString, "[", "\\[");; |
- dartDocString = StringUtils.replace(dartDocString, "]", "\\]");; |
- // TODO(scheglov) improve JavaDoc translation |
-// String dartDocString = escapeDartDoc(javaTagString); |
- dartDocString = convertJavaDoc(dartDocString); |
- buffer.append(dartDocString); |
- } |
- buffer.append("\n */\n"); |
- } |
- StringToken commentToken = new StringToken(TokenType.STRING, buffer.toString(), 0); |
+ String javaDocString = getJavaSource(node); |
+ // there is some one-off sometimes, probably bug in JDT |
+ if (!javaDocString.startsWith("/**") && javaDocString.startsWith("**")) { |
+ javaDocString = "/" + javaDocString; |
+ } |
+ String dartDocString = convertJavaDoc(javaDocString); |
+ StringToken commentToken = new StringToken(TokenType.STRING, dartDocString, 0); |
return done(Comment.createDocumentationComment(new Token[] {commentToken})); |
} |
@@ -1857,6 +1850,11 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor { |
return ref; |
} |
+ private String getJavaSource(org.eclipse.jdt.core.dom.ASTNode node) { |
+ int offset = node.getStartPosition(); |
+ return javaSource.substring(offset, offset + node.getLength()); |
+ } |
+ |
private boolean isNumberOrNull(Expression expression) { |
if (expression instanceof IntegerLiteral || expression instanceof DoubleLiteral |
|| expression instanceof NullLiteral) { |
@@ -1879,27 +1877,6 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor { |
} |
} |
- private String tagElementToString(TagElement tag) { |
- StringBuilder builder = new StringBuilder(); |
- |
- List<?> fragments = tag.fragments(); |
- |
- for (int i = 0; i < fragments.size(); i++) { |
- Object fragment = fragments.get(i); |
- |
- builder.append("\n * "); |
- |
- if (i == 0 && tag.getTagName() != null) { |
- builder.append(tag.getTagName()); |
- builder.append(" "); |
- } |
- |
- builder.append(fragment.toString()); |
- } |
- |
- return builder.toString(); |
- } |
- |
/** |
* Recursively translates given {@link org.eclipse.jdt.core.dom.ASTNode} to Dart {@link ASTNode}. |
* |