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

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

Issue 14050010: New analyzer_experimental 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/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 c3b8955cac2eebe7b1f9e5dac295995181bdc0db..0b91f2cf8299b7c06417a5168a600a7882786e78 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
@@ -16,6 +16,7 @@ package com.google.dart.java2dart.processor;
import com.google.common.collect.Lists;
import com.google.dart.engine.ast.ASTNode;
+import com.google.dart.engine.ast.AssignmentExpression;
import com.google.dart.engine.ast.BinaryExpression;
import com.google.dart.engine.ast.CompilationUnit;
import com.google.dart.engine.ast.Expression;
@@ -32,6 +33,7 @@ import com.google.dart.engine.ast.SimpleStringLiteral;
import com.google.dart.engine.ast.StringInterpolation;
import com.google.dart.engine.ast.SuperConstructorInvocation;
import com.google.dart.engine.ast.TypeName;
+import com.google.dart.engine.ast.VariableDeclaration;
import com.google.dart.engine.ast.visitor.GeneralizingASTVisitor;
import com.google.dart.engine.scanner.Keyword;
import com.google.dart.engine.scanner.TokenType;
@@ -42,6 +44,7 @@ import static com.google.dart.java2dart.util.ASTFactory.assignmentExpression;
import static com.google.dart.java2dart.util.ASTFactory.binaryExpression;
import static com.google.dart.java2dart.util.ASTFactory.booleanLiteral;
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.integer;
import static com.google.dart.java2dart.util.ASTFactory.interpolationExpression;
import static com.google.dart.java2dart.util.ASTFactory.interpolationString;
@@ -98,6 +101,26 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
public void process(CompilationUnit unit) {
unit.accept(new GeneralizingASTVisitor<Void>() {
@Override
+ public Void visitAssignmentExpression(AssignmentExpression node) {
+ super.visitAssignmentExpression(node);
+ if (node.getOperator().getType() == TokenType.EQ) {
+ Expression leftExpr = node.getLeftHandSide();
+ Expression rightExpr = node.getRightHandSide();
+ ITypeBinding leftBinding = context.getNodeTypeBinding(leftExpr);
+ ITypeBinding rightBinding = context.getNodeTypeBinding(rightExpr);
+ if (JavaUtils.isTypeNamed(leftBinding, "java.lang.CharSequence")
+ && JavaUtils.isTypeNamed(rightBinding, "java.lang.String")) {
+ node.setRightHandSide(instanceCreationExpression(
+ Keyword.NEW,
+ typeName("CharSequence"),
+ rightExpr));
+ return null;
+ }
+ }
+ return null;
+ }
+
+ @Override
public Void visitBinaryExpression(BinaryExpression node) {
if (node.getOperator().getType() == TokenType.PLUS) {
List<Expression> expressions = gatherBinaryExpressions(node);
@@ -283,6 +306,17 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
nameNode.setToken(token("println"));
return null;
}
+ if (isMethodInClass2(node, "startsWith(java.lang.String,int)", "java.lang.String")) {
+ replaceNode(
+ node,
+ methodInvocation(
+ identifier("JavaString"),
+ "startsWithBefore",
+ node.getTarget(),
+ args.get(0),
+ args.get(1)));
+ return null;
+ }
if (isMethodInClass(node, "format", "java.lang.String")) {
replaceNode(node.getTarget(), identifier("JavaString"));
return null;
@@ -472,6 +506,23 @@ public class ObjectSemanticProcessor extends SemanticProcessor {
// done
return super.visitTypeName(node);
}
+
+ @Override
+ public Void visitVariableDeclaration(VariableDeclaration node) {
+ super.visitVariableDeclaration(node);
+ Expression initializer = node.getInitializer();
+ ITypeBinding leftBinding = context.getNodeTypeBinding(node);
+ ITypeBinding rightBinding = context.getNodeTypeBinding(initializer);
+ if (JavaUtils.isTypeNamed(leftBinding, "java.lang.CharSequence")
+ && JavaUtils.isTypeNamed(rightBinding, "java.lang.String")) {
+ node.setInitializer(instanceCreationExpression(
+ Keyword.NEW,
+ typeName("CharSequence"),
+ initializer));
+ return null;
+ }
+ return null;
+ }
});
}
}

Powered by Google App Engine
This is Rietveld 408576698