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

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

Issue 16337007: Version 0.5.13.1 . (Closed) Base URL: http://dart.googlecode.com/svn/trunk/dart/
Patch Set: Created 7 years, 7 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
===================================================================
--- editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/ObjectSemanticProcessor.java (revision 23549)
+++ editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/processor/ObjectSemanticProcessor.java (working copy)
@@ -117,6 +117,31 @@
return null;
}
}
+ // Dart has no "bool |=" operator
+ if (node.getOperator().getType() == TokenType.BAR_EQ) {
+ Expression leftExpr = node.getLeftHandSide();
+ ITypeBinding argTypeBinding = context.getNodeTypeBinding(leftExpr);
+ if (JavaUtils.isTypeNamed(argTypeBinding, "boolean")) {
+ Expression rightExpr = node.getRightHandSide();
+ replaceNode(
+ node,
+ assignmentExpression(
+ leftExpr,
+ TokenType.EQ,
+ methodInvocation("javaBooleanOr", leftExpr, rightExpr)));
+ return null;
+ }
+ }
+ // String += 'c'
+ if (node.getOperator().getType() == TokenType.PLUS_EQ) {
+ Expression leftExpr = node.getLeftHandSide();
+ ITypeBinding argTypeBinding = context.getNodeTypeBinding(leftExpr);
+ if (JavaUtils.isTypeNamed(argTypeBinding, "java.lang.String")) {
+ Expression rightExpr = node.getRightHandSide();
+ replaceCharLiteralWithStringliteral(rightExpr);
+ return null;
+ }
+ }
return null;
}
@@ -258,6 +283,10 @@
}
return null;
}
+ if (isMethodInClass(node, "getMessage", "java.lang.Throwable")) {
+ nameNode.setToken(token("toString"));
+ return null;
+ }
if (isMethodInClass(node, "printStackTrace", "java.lang.Throwable")) {
replaceNode(node, methodInvocation("print", node.getTarget()));
return null;
@@ -270,10 +299,19 @@
nameNode.setToken(token("codeUnitAt"));
return null;
}
- if (isMethodInClass(node, "replace", "java.lang.String")) {
+ if (isMethodInClass2(node, "replace(char,char)", "java.lang.String")) {
nameNode.setToken(token("replaceAll"));
+ replaceCharLiteralWithStringliteral(args.get(0));
+ replaceCharLiteralWithStringliteral(args.get(1));
return null;
}
+ if (isMethodInClass2(
+ node,
+ "replace(java.lang.CharSequence,java.lang.CharSequence)",
+ "java.lang.String")) {
+ nameNode.setToken(token("replaceAll"));
+ return null;
+ }
if (isMethodInClass(node, "equalsIgnoreCase", "java.lang.String")) {
replaceNode(
node,
@@ -373,6 +411,10 @@
replaceNode(node, node.getTarget());
return null;
}
+ if (isMethodInClass(node, "intValue", "java.lang.Number")) {
+ nameNode.setToken(token("toInt"));
+ return null;
+ }
if (isMethodInClass(node, "doubleValue", "java.math.BigInteger")) {
nameNode.setToken(token("toDouble"));
return null;
@@ -523,6 +565,16 @@
}
return null;
}
+
+ private void replaceCharLiteralWithStringliteral(Expression x) {
+ if (x instanceof IntegerLiteral) {
+ IntegerLiteral literal = (IntegerLiteral) x;
+ ITypeBinding typeBinding = context.getNodeTypeBinding(x);
+ if (JavaUtils.isTypeNamed(typeBinding, "char")) {
+ replaceNode(literal, string(String.valueOf((char) literal.getValue().intValue())));
+ }
+ }
+ }
});
}
}

Powered by Google App Engine
This is Rietveld 408576698