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

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

Issue 185403018: Unroll 'synchronized {}' in java2dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Include fix from Java Created 6 years, 10 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
« no previous file with comments | « no previous file | editor/util/plugins/com.google.dart.java2dart_test/src/com/google/dart/java2dart/SyntaxTranslatorTest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java
diff --git a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java
index d88d0c4371d5d4d9c6abef0f581ab2aa6d710cc7..9c83b0c68fe60e85db0ebf3fa47d9da31cd552a9 100644
--- a/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java
+++ b/editor/util/plugins/com.google.dart.java2dart/src/com/google/dart/java2dart/SyntaxTranslator.java
@@ -17,10 +17,10 @@ package com.google.dart.java2dart;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import com.google.dart.engine.ast.AstNode;
import com.google.dart.engine.ast.ArgumentList;
import com.google.dart.engine.ast.AsExpression;
import com.google.dart.engine.ast.AssignmentExpression;
+import com.google.dart.engine.ast.AstNode;
import com.google.dart.engine.ast.BinaryExpression;
import com.google.dart.engine.ast.Block;
import com.google.dart.engine.ast.BlockFunctionBody;
@@ -148,6 +148,7 @@ import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.IVariableBinding;
import org.eclipse.jdt.core.dom.SimpleName;
+import org.eclipse.jdt.core.dom.SynchronizedStatement;
import org.eclipse.jdt.core.dom.Type;
import org.eclipse.jdt.core.dom.TypeDeclaration;
@@ -435,11 +436,9 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
@Override
public boolean visit(org.eclipse.jdt.core.dom.Block node) {
List<Statement> statements = Lists.newArrayList();
- for (Iterator<?> I = node.statements().iterator(); I.hasNext();) {
- org.eclipse.jdt.core.dom.Statement javaStatement = (org.eclipse.jdt.core.dom.Statement) I.next();
- if (javaStatement instanceof org.eclipse.jdt.core.dom.SuperConstructorInvocation) {
- continue;
- }
+ List<org.eclipse.jdt.core.dom.Statement> javaStatements = Lists.newArrayList();
+ addJavaStatements(javaStatements, node);
+ for (org.eclipse.jdt.core.dom.Statement javaStatement : javaStatements) {
statements.add((Statement) translate(javaStatement));
}
return done(block(statements));
@@ -1372,11 +1371,6 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
}
@Override
- public boolean visit(org.eclipse.jdt.core.dom.SynchronizedStatement node) {
- return visit(node.getBody());
- }
-
- @Override
public boolean visit(org.eclipse.jdt.core.dom.ThisExpression node) {
ITypeBinding binding = node.resolveTypeBinding();
ThisExpression thisExpression = thisExpression();
@@ -1635,6 +1629,26 @@ public class SyntaxTranslator extends org.eclipse.jdt.core.dom.ASTVisitor {
return str;
}
+ /**
+ * Adds Java statements of the given Java block. Unrolls {@link SynchronizedStatement}s.
+ */
+ private void addJavaStatements(List<org.eclipse.jdt.core.dom.Statement> statements,
+ org.eclipse.jdt.core.dom.Block block) {
+ for (Iterator<?> I = block.statements().iterator(); I.hasNext();) {
+ org.eclipse.jdt.core.dom.Statement javaStatement = (org.eclipse.jdt.core.dom.Statement) I.next();
+ if (javaStatement instanceof org.eclipse.jdt.core.dom.SuperConstructorInvocation) {
+ continue;
+ }
+ if (javaStatement instanceof org.eclipse.jdt.core.dom.SynchronizedStatement) {
+ addJavaStatements(
+ statements,
+ ((org.eclipse.jdt.core.dom.SynchronizedStatement) javaStatement).getBody());
+ continue;
+ }
+ statements.add(javaStatement);
+ }
+ }
+
private int backupOverBlankLine(String string, int first) {
int index = first - 1;
if (string.charAt(index) == '\r' && string.charAt(first) == '\n') {
« no previous file with comments | « no previous file | editor/util/plugins/com.google.dart.java2dart_test/src/com/google/dart/java2dart/SyntaxTranslatorTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698