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

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

Issue 56933002: Version 0.8.10.1 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, the Dart project authors. 2 * Copyright (c) 2013, the Dart project authors.
3 * 3 *
4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u se this file except 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u se this file except
5 * in compliance with the License. You may obtain a copy of the License at 5 * in compliance with the License. You may obtain a copy of the License at
6 * 6 *
7 * http://www.eclipse.org/legal/epl-v10.html 7 * http://www.eclipse.org/legal/epl-v10.html
8 * 8 *
9 * Unless required by applicable law or agreed to in writing, software distribut ed under the License 9 * Unless required by applicable law or agreed to in writing, software distribut ed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K IND, either express 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K IND, either express
(...skipping 24 matching lines...) Expand all
35 import com.google.dart.engine.ast.StringInterpolation; 35 import com.google.dart.engine.ast.StringInterpolation;
36 import com.google.dart.engine.ast.SuperConstructorInvocation; 36 import com.google.dart.engine.ast.SuperConstructorInvocation;
37 import com.google.dart.engine.ast.TypeName; 37 import com.google.dart.engine.ast.TypeName;
38 import com.google.dart.engine.ast.VariableDeclaration; 38 import com.google.dart.engine.ast.VariableDeclaration;
39 import com.google.dart.engine.ast.visitor.GeneralizingASTVisitor; 39 import com.google.dart.engine.ast.visitor.GeneralizingASTVisitor;
40 import com.google.dart.engine.scanner.Keyword; 40 import com.google.dart.engine.scanner.Keyword;
41 import com.google.dart.engine.scanner.TokenType; 41 import com.google.dart.engine.scanner.TokenType;
42 import com.google.dart.java2dart.Context; 42 import com.google.dart.java2dart.Context;
43 import com.google.dart.java2dart.util.JavaUtils; 43 import com.google.dart.java2dart.util.JavaUtils;
44 44
45 import static com.google.dart.java2dart.util.ASTFactory.argumentList;
45 import static com.google.dart.java2dart.util.ASTFactory.assignmentExpression; 46 import static com.google.dart.java2dart.util.ASTFactory.assignmentExpression;
46 import static com.google.dart.java2dart.util.ASTFactory.binaryExpression; 47 import static com.google.dart.java2dart.util.ASTFactory.binaryExpression;
47 import static com.google.dart.java2dart.util.ASTFactory.booleanLiteral; 48 import static com.google.dart.java2dart.util.ASTFactory.booleanLiteral;
48 import static com.google.dart.java2dart.util.ASTFactory.identifier; 49 import static com.google.dart.java2dart.util.ASTFactory.identifier;
49 import static com.google.dart.java2dart.util.ASTFactory.instanceCreationExpressi on; 50 import static com.google.dart.java2dart.util.ASTFactory.instanceCreationExpressi on;
50 import static com.google.dart.java2dart.util.ASTFactory.integer; 51 import static com.google.dart.java2dart.util.ASTFactory.integer;
51 import static com.google.dart.java2dart.util.ASTFactory.interpolationExpression; 52 import static com.google.dart.java2dart.util.ASTFactory.interpolationExpression;
52 import static com.google.dart.java2dart.util.ASTFactory.interpolationString; 53 import static com.google.dart.java2dart.util.ASTFactory.interpolationString;
53 import static com.google.dart.java2dart.util.ASTFactory.methodInvocation; 54 import static com.google.dart.java2dart.util.ASTFactory.methodInvocation;
54 import static com.google.dart.java2dart.util.ASTFactory.namedExpression; 55 import static com.google.dart.java2dart.util.ASTFactory.namedExpression;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 Expression rightExpr = node.getRightHandSide(); 150 Expression rightExpr = node.getRightHandSide();
150 replaceNode( 151 replaceNode(
151 node, 152 node,
152 assignmentExpression( 153 assignmentExpression(
153 leftExpr, 154 leftExpr,
154 TokenType.EQ, 155 TokenType.EQ,
155 methodInvocation("javaBooleanOr", leftExpr, rightExpr))); 156 methodInvocation("javaBooleanOr", leftExpr, rightExpr)));
156 return null; 157 return null;
157 } 158 }
158 } 159 }
160 // Dart has no "bool &=" operator
161 if (node.getOperator().getType() == TokenType.AMPERSAND_EQ) {
162 Expression leftExpr = node.getLeftHandSide();
163 ITypeBinding argTypeBinding = context.getNodeTypeBinding(leftExpr);
164 if (JavaUtils.isTypeNamed(argTypeBinding, "boolean")) {
165 Expression rightExpr = node.getRightHandSide();
166 replaceNode(
167 node,
168 assignmentExpression(
169 leftExpr,
170 TokenType.EQ,
171 methodInvocation("javaBooleanAnd", leftExpr, rightExpr)));
172 return null;
173 }
174 }
159 // String += 'c' 175 // String += 'c'
160 if (node.getOperator().getType() == TokenType.PLUS_EQ) { 176 if (node.getOperator().getType() == TokenType.PLUS_EQ) {
161 Expression leftExpr = node.getLeftHandSide(); 177 Expression leftExpr = node.getLeftHandSide();
162 ITypeBinding argTypeBinding = context.getNodeTypeBinding(leftExpr); 178 ITypeBinding argTypeBinding = context.getNodeTypeBinding(leftExpr);
163 if (JavaUtils.isTypeNamed(argTypeBinding, "java.lang.String")) { 179 if (JavaUtils.isTypeNamed(argTypeBinding, "java.lang.String")) {
164 Expression rightExpr = node.getRightHandSide(); 180 Expression rightExpr = node.getRightHandSide();
165 replaceCharWithString(rightExpr); 181 replaceCharWithString(rightExpr);
166 return null; 182 return null;
167 } 183 }
168 } 184 }
(...skipping 26 matching lines...) Expand all
195 } else { 211 } else {
196 elements.add(interpolationExpression(expression)); 212 elements.add(interpolationExpression(expression));
197 } 213 }
198 } 214 }
199 elements.add(interpolationString("\"", "")); 215 elements.add(interpolationString("\"", ""));
200 StringInterpolation interpolation = string(elements); 216 StringInterpolation interpolation = string(elements);
201 replaceNode(node, interpolation); 217 replaceNode(node, interpolation);
202 return null; 218 return null;
203 } 219 }
204 } 220 }
221 // in Java "true | false" will compute both operands
222 if (node.getOperator().getType() == TokenType.BAR) {
223 ITypeBinding argTypeBinding = context.getNodeTypeBinding(node.getLeftO perand());
224 super.visitBinaryExpression(node);
225 if (JavaUtils.isTypeNamed(argTypeBinding, "boolean")) {
226 replaceNode(
227 node,
228 methodInvocation("javaBooleanOr", node.getLeftOperand(), node.ge tRightOperand()));
229 return null;
230 }
231 }
232 // in Java "true & false" will compute both operands
233 if (node.getOperator().getType() == TokenType.AMPERSAND) {
234 ITypeBinding argTypeBinding = context.getNodeTypeBinding(node.getLeftO perand());
235 super.visitBinaryExpression(node);
236 if (JavaUtils.isTypeNamed(argTypeBinding, "boolean")) {
237 replaceNode(
238 node,
239 methodInvocation("javaBooleanAnd", node.getLeftOperand(), node.g etRightOperand()));
240 return null;
241 }
242 }
205 // super 243 // super
206 super.visitBinaryExpression(node); 244 super.visitBinaryExpression(node);
207 // in Java "true | false" will compute both operands
208 if (node.getOperator().getType() == TokenType.BAR) {
209 Expression leftOperand = node.getLeftOperand();
210 ITypeBinding argTypeBinding = context.getNodeTypeBinding(leftOperand);
211 if (JavaUtils.isTypeNamed(argTypeBinding, "boolean")) {
212 replaceNode(
213 node,
214 methodInvocation("javaBooleanOr", leftOperand, node.getRightOper and()));
215 return null;
216 }
217 }
218 // done 245 // done
219 return null; 246 return null;
220 } 247 }
221 248
222 @Override 249 @Override
223 public Void visitInstanceCreationExpression(InstanceCreationExpression nod e) { 250 public Void visitInstanceCreationExpression(InstanceCreationExpression nod e) {
224 super.visitInstanceCreationExpression(node); 251 super.visitInstanceCreationExpression(node);
225 ITypeBinding typeBinding = context.getNodeTypeBinding(node); 252 ITypeBinding typeBinding = context.getNodeTypeBinding(node);
226 IMethodBinding binding = (IMethodBinding) context.getNodeBinding(node); 253 IMethodBinding binding = (IMethodBinding) context.getNodeBinding(node);
227 List<Expression> args = node.getArgumentList().getArguments(); 254 List<Expression> args = node.getArgumentList().getArguments();
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 return null; 603 return null;
577 } 604 }
578 } 605 }
579 } 606 }
580 return super.visitPropertyAccess(node); 607 return super.visitPropertyAccess(node);
581 } 608 }
582 609
583 @Override 610 @Override
584 public Void visitSuperConstructorInvocation(SuperConstructorInvocation nod e) { 611 public Void visitSuperConstructorInvocation(SuperConstructorInvocation nod e) {
585 super.visitSuperConstructorInvocation(node); 612 super.visitSuperConstructorInvocation(node);
613 NodeList<Expression> args = node.getArgumentList().getArguments();
586 IMethodBinding binding = (IMethodBinding) context.getNodeBinding(node); 614 IMethodBinding binding = (IMethodBinding) context.getNodeBinding(node);
587 if (isMethodInClass2(binding, "<init>(java.lang.Throwable)", "java.lang. Exception")) { 615 if (isMethodInExactClass(binding, "<init>(java.lang.Throwable)", "java.l ang.Exception")) {
588 node.setConstructorName(identifier("withCause")); 616 node.setConstructorName(identifier("withCause"));
589 } 617 }
618 if (isMethodInExactClass(
619 binding,
620 "<init>(java.lang.Throwable)",
621 "java.lang.RuntimeException")) {
622 node.setArgumentList(argumentList(namedExpression("cause", args.get(0) )));
623 }
624 if (isMethodInExactClass(binding, "<init>(java.lang.String)", "java.lang .RuntimeException")) {
625 node.setArgumentList(argumentList(namedExpression("message", args.get( 0))));
626 }
627 if (isMethodInExactClass(
628 binding,
629 "<init>(java.lang.String,java.lang.Throwable)",
630 "java.lang.RuntimeException")) {
631 node.setArgumentList(argumentList(
632 namedExpression("message", args.get(0)),
633 namedExpression("cause", args.get(0))));
634 }
590 return null; 635 return null;
591 } 636 }
592 637
593 @Override 638 @Override
594 public Void visitTypeName(TypeName node) { 639 public Void visitTypeName(TypeName node) {
595 ITypeBinding typeBinding = (ITypeBinding) context.getNodeBinding(node); 640 ITypeBinding typeBinding = (ITypeBinding) context.getNodeBinding(node);
596 // replace by name 641 // replace by name
597 if (node.getName() instanceof SimpleIdentifier) { 642 if (node.getName() instanceof SimpleIdentifier) {
598 SimpleIdentifier nameNode = (SimpleIdentifier) node.getName(); 643 SimpleIdentifier nameNode = (SimpleIdentifier) node.getName();
599 String name = nameNode.getName(); 644 String name = nameNode.getName();
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 ITypeBinding leftBinding = parameterType; 728 ITypeBinding leftBinding = parameterType;
684 ITypeBinding rightBinding = context.getNodeTypeBinding(arg); 729 ITypeBinding rightBinding = context.getNodeTypeBinding(arg);
685 if (JavaUtils.isTypeNamed(leftBinding, "java.lang.CharSequence") 730 if (JavaUtils.isTypeNamed(leftBinding, "java.lang.CharSequence")
686 && JavaUtils.isTypeNamed(rightBinding, "java.lang.String")) { 731 && JavaUtils.isTypeNamed(rightBinding, "java.lang.String")) {
687 arg = instanceCreationExpression(Keyword.NEW, typeName("CharSequence"), arg); 732 arg = instanceCreationExpression(Keyword.NEW, typeName("CharSequence"), arg);
688 args.set(i, arg); 733 args.set(i, arg);
689 } 734 }
690 } 735 }
691 } 736 }
692 } 737 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698