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

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

Issue 12803014: New Analysis Engine translation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 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 8d63070850c04cb4b68ed1af348f64d87c875743..a6938d52e7e5f4de8a46375f67949075fe15792e 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,6 +150,7 @@ 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.Type;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -493,10 +494,17 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
@Override
public boolean visit(org.eclipse.jdt.core.dom.CatchClause node) {
- TypeName exceptionType = translate(node.getException().getType());
SimpleIdentifier exceptionParameter = translateSimpleName(node.getException().getName());
Block block = translate(node.getBody());
- return done(catchClause(exceptionType, exceptionParameter, null, block));
+ // "catch (e) {}" or "on Type catch (e) {}"
+ Type javaExceptionType = node.getException().getType();
+ ITypeBinding javaExceptionBinding = javaExceptionType.resolveBinding();
+ if (JavaUtils.isTypeNamed(javaExceptionBinding, "java.lang.Exception")) {
+ return done(catchClause(null, exceptionParameter, null, block));
+ } else {
+ TypeName exceptionType = translate(javaExceptionType);
+ return done(catchClause(exceptionType, exceptionParameter, null, block));
+ }
}
@Override
@@ -1628,7 +1636,7 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
putReference(superTypeBinding, (SimpleIdentifier) superType.getName());
implementsClause = implementsClause(superType);
} else {
- TypeName superType = typeName(superTypeBinding.getName());
+ TypeName superType = translateTypeName(superTypeBinding);
putReference(superTypeBinding, (SimpleIdentifier) superType.getName());
extendsClause = extendsClause(superType);
}
@@ -1830,10 +1838,21 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
return typeName(identifier("List"), translateTypeName(binding.getComponentType()));
}
String name = binding.getName();
+ name = StringUtils.substringBefore(name, "<");
+ if (JavaUtils.isTypeNamed(binding, "java.util.ArrayList")) {
+ name = "List";
+ }
+ if (JavaUtils.isTypeNamed(binding, "java.lang.Void")) {
+ name = "Object";
+ }
if ("boolean".equals(name)) {
return typeName("bool");
}
- TypeName result = typeName(name);
+ List<TypeName> arguments = Lists.newArrayList();
+ for (ITypeBinding typeArgument : binding.getTypeArguments()) {
+ arguments.add(translateTypeName(typeArgument));
+ }
+ TypeName result = typeName(identifier(name), arguments);
context.putNodeTypeBinding(result, binding);
context.putNodeTypeBinding(result.getName(), binding);
putReference(binding, (SimpleIdentifier) result.getName());

Powered by Google App Engine
This is Rietveld 408576698