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

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

Issue 42863002: New analyzer_experimental snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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/ObjectSemanticProcessor.java
diff --git a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/ObjectSemanticProcessor.java b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/ObjectSemanticProcessor.java
index fd5c32c57c19f8d5ee1c467c913869daa4e4eb53..98066a359060f8a3720656c295552500c1a7477d 100644
--- a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/ObjectSemanticProcessor.java
+++ b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/ObjectSemanticProcessor.java
@@ -223,6 +223,7 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
public Void visitInstanceCreationExpression(InstanceCreationExpression node) {
super.visitInstanceCreationExpression(node);
ITypeBinding typeBinding = context.getNodeTypeBinding(node);
+ IMethodBinding binding = (IMethodBinding) context.getNodeBinding(node);
List<Expression> args = node.getArgumentList().getArguments();
String typeSimpleName = node.getConstructorName().getType().getName().getName();
if (JavaUtils.isTypeNamed(typeBinding, "java.lang.StringBuilder")) {
@@ -242,6 +243,7 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
namedExpression("radix", args.get(1))));
}
}
+ replaceStringWithCharSequence(binding, args);
return null;
}
@@ -309,6 +311,9 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
}
return null;
}
+ // prepare binding
+ IMethodBinding binding = (IMethodBinding) context.getNodeBinding(node);
+ // analyze invocations
if (isMethodInClass(node, "getMessage", "java.lang.Throwable")) {
nameNode.setToken(token("toString"));
return null;
@@ -342,10 +347,25 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
nameNode.setToken(token("replaceAll"));
return null;
}
+ if (isMethodInClass2(node, "contains(java.lang.CharSequence)", "java.lang.String")) {
+ return null;
+ }
if (isMethodInClass(node, "equalsIgnoreCase", "java.lang.String")) {
replaceNode(node, methodInvocation("javaStringEqualsIgnoreCase", target, args.get(0)));
return null;
}
+ if (isMethodInClass(node, "regionMatches", "java.lang.String")) {
+ replaceNode(
+ node,
+ methodInvocation(
+ "javaStringRegionMatches",
+ target,
+ args.get(0),
+ args.get(1),
+ args.get(2),
+ args.get(3)));
+ return null;
+ }
if (isMethodInClass(node, "indexOf", "java.lang.String")
|| isMethodInClass(node, "lastIndexOf", "java.lang.String")) {
replaceCharWithString(args.get(0));
@@ -361,7 +381,6 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
return null;
}
if (isMethodInClass(node, "print", "java.io.PrintWriter")) {
- IMethodBinding binding = (IMethodBinding) context.getNodeBinding(node);
if (binding != null && binding.getParameterTypes().length >= 1
&& binding.getParameterTypes()[0].getName().equals("char")) {
char c = (char) ((IntegerLiteral) args.get(0)).getValue().intValue();
@@ -526,6 +545,7 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
assignmentExpression(propertyAccess(target, nameNode), TokenType.EQ, args.get(0)));
return null;
}
+ replaceStringWithCharSequence(binding, args);
return null;
}
@@ -651,4 +671,22 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
}
});
}
+
+ private void replaceStringWithCharSequence(IMethodBinding methodBinding, List<Expression> args) {
+ if (methodBinding == null) {
+ return;
+ }
+ ITypeBinding[] parameterTypes = methodBinding.getParameterTypes();
+ for (int i = 0; i < parameterTypes.length; i++) {
+ ITypeBinding parameterType = parameterTypes[i];
+ Expression arg = args.get(i);
+ ITypeBinding leftBinding = parameterType;
+ ITypeBinding rightBinding = context.getNodeTypeBinding(arg);
+ if (JavaUtils.isTypeNamed(leftBinding, "java.lang.CharSequence")
+ && JavaUtils.isTypeNamed(rightBinding, "java.lang.String")) {
+ arg = instanceCreationExpression(Keyword.NEW, typeName("CharSequence"), arg);
+ args.set(i, arg);
+ }
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698