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

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

Issue 135803003: Translate index. (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/processor/GuavaSemanticProcessor.java
diff --git a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/GuavaSemanticProcessor.java b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/GuavaSemanticProcessor.java
index e4d3026238b3a53410f87ef42b4ca7137c25d884..3e6936b9851efed6bb85df59f8249b9f007b45e6 100644
--- a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/GuavaSemanticProcessor.java
+++ b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/GuavaSemanticProcessor.java
@@ -14,19 +14,23 @@
package com.google.dart.java2dart.processor;
+import com.google.dart.engine.ast.ASTNode;
import com.google.dart.engine.ast.CompilationUnit;
import com.google.dart.engine.ast.Expression;
import com.google.dart.engine.ast.MethodInvocation;
+import com.google.dart.engine.ast.PrefixExpression;
import com.google.dart.engine.ast.visitor.GeneralizingASTVisitor;
import com.google.dart.engine.scanner.Keyword;
import com.google.dart.engine.scanner.TokenType;
import com.google.dart.java2dart.Context;
import static com.google.dart.java2dart.util.ASTFactory.binaryExpression;
+import static com.google.dart.java2dart.util.ASTFactory.identifier;
import static com.google.dart.java2dart.util.ASTFactory.instanceCreationExpression;
import static com.google.dart.java2dart.util.ASTFactory.listLiteral;
import static com.google.dart.java2dart.util.ASTFactory.mapLiteral;
import static com.google.dart.java2dart.util.ASTFactory.typeName;
+import static com.google.dart.java2dart.util.TokenFactory.token;
import java.util.List;
@@ -34,6 +38,14 @@ import java.util.List;
* {@link SemanticProcessor} for Google Guava.
*/
public class GuavaSemanticProcessor extends SemanticProcessor {
+ private static boolean isNegationParent(ASTNode node) {
+ if (node.getParent() instanceof PrefixExpression) {
+ PrefixExpression prefixExpression = (PrefixExpression) node.getParent();
+ return prefixExpression.getOperator().getType() == TokenType.BANG;
+ }
+ return false;
+ }
+
public GuavaSemanticProcessor(Context context) {
super(context);
}
@@ -46,7 +58,18 @@ public class GuavaSemanticProcessor extends SemanticProcessor {
super.visitMethodInvocation(node);
List<Expression> args = node.getArgumentList().getArguments();
if (isMethodInClass(node, "equal", "com.google.common.base.Objects")) {
- replaceNode(node, binaryExpression(args.get(0), TokenType.EQ_EQ, args.get(1)));
+ ASTNode toReplace = node;
+ TokenType operator = TokenType.EQ_EQ;
+ if (isNegationParent(node)) {
+ operator = TokenType.BANG_EQ;
+ toReplace = node.getParent();
+ }
+ replaceNode(toReplace, binaryExpression(args.get(0), operator, args.get(1)));
+ return null;
+ }
+ if (isMethodInClass(node, "hashCode", "com.google.common.base.Objects")) {
+ replaceNode(node.getTarget(), identifier("JavaArrays"));
+ node.getMethodName().setToken(token("makeHashCode"));
return null;
}
if (isMethodInClass(node, "of", "com.google.common.collect.ImmutableMap")) {
@@ -57,10 +80,19 @@ public class GuavaSemanticProcessor extends SemanticProcessor {
replaceNode(node, listLiteral());
return null;
}
+ if (isMethodInClass(node, "newLinkedList", "com.google.common.collect.Lists")) {
+ replaceNode(node, instanceCreationExpression(Keyword.NEW, typeName("Queue")));
+ return null;
+ }
if (isMethodInClass(node, "newHashMap", "com.google.common.collect.Maps")) {
replaceNode(node, mapLiteral());
return null;
}
+ if (isMethodInClass(node, "difference", "com.google.common.collect.Sets")) {
+ node.setTarget(args.get(0));
+ args.remove(0);
+ return null;
+ }
if (isMethodInClass(node, "newHashSet", "com.google.common.collect.Sets")) {
replaceNode(node, instanceCreationExpression(Keyword.NEW, typeName("Set")));
return null;

Powered by Google App Engine
This is Rietveld 408576698