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

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

Issue 14308011: New Analysis Engine snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 8 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 a6938d52e7e5f4de8a46375f67949075fe15792e..8dee9b4454ad09f9f9b99eeeda94ec8a5527aa95 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
@@ -771,12 +771,18 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
public boolean visit(org.eclipse.jdt.core.dom.EnumDeclaration node) {
SimpleIdentifier name = translateSimpleName(node.getName());
// implements
- ImplementsClause implementsClause = null;
- if (!node.superInterfaceTypes().isEmpty()) {
+ ImplementsClause implementsClause;
+ {
List<TypeName> interfaces = Lists.newArrayList();
- for (Object javaInterface : node.superInterfaceTypes()) {
- interfaces.add((TypeName) translate((org.eclipse.jdt.core.dom.ASTNode) javaInterface));
+ // add Comparable
+ interfaces.add(typeName("Comparable", 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));
+ }
}
+ // create ImplementsClause
implementsClause = new ImplementsClause(null, interfaces);
}
// members
@@ -847,6 +853,15 @@ 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("__ordinal"),
+ TokenType.MINUS,
+ propertyAccess(identifier("other"), identifier("__ordinal"))))));
// toString()
members.add(methodDeclaration(
typeName("String"),
@@ -1199,10 +1214,26 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
@Override
public boolean visit(org.eclipse.jdt.core.dom.ParameterizedType node) {
+ List<TypeName> typeArguments;
+ {
+ List<?> javaTypeArguments = node.typeArguments();
+ boolean hasMethodTypeVariable = false;
+ for (Object _javaTypeArgument : javaTypeArguments) {
+ org.eclipse.jdt.core.dom.Type javaTypeArgument = (org.eclipse.jdt.core.dom.Type) _javaTypeArgument;
+ ITypeBinding binding = javaTypeArgument.resolveBinding();
+ if (binding != null && binding.isTypeVariable() && binding.getDeclaringMethod() != null) {
+ hasMethodTypeVariable = true;
+ break;
+ }
+ }
+ if (hasMethodTypeVariable) {
+ typeArguments = null;
+ } else {
+ typeArguments = translateTypeNames(javaTypeArguments);
+ }
+ }
ITypeBinding binding = node.resolveBinding();
- TypeName typeName = typeName(
- ((TypeName) translate(node.getType())).getName(),
- translateTypeNames(node.typeArguments()));
+ TypeName typeName = typeName(((TypeName) translate(node.getType())).getName(), typeArguments);
context.putNodeBinding(typeName, binding);
context.putNodeTypeBinding(typeName, binding);
return done(typeName);
@@ -1344,8 +1375,15 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
@Override
public boolean visit(org.eclipse.jdt.core.dom.SimpleType node) {
- ITypeBinding binding = node.resolveBinding();
String name = node.getName().toString();
+ ITypeBinding binding = node.resolveBinding();
+ // in Dart we cannot use separate type parameters for methods, so we replace
+ // them with type bounds
+ if (binding != null && binding.isTypeVariable() && binding.getDeclaringMethod() != null) {
+ binding = binding.getErasure();
+ name = binding.getName();
+ }
+ // translate name
SimpleIdentifier nameNode = identifier(name);
putReference(binding, nameNode);
{

Powered by Google App Engine
This is Rietveld 408576698