From 0e37d92bc0f01e777f284d76cc1991fc72ffc02a Mon Sep 17 00:00:00 2001 From: ignatov Date: Fri, 30 Dec 2011 15:48:40 +0400 Subject: [PATCH] KT-893 Need to support another form of for loop --- src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java | 7 +++++-- testData/ast/issues/file/kt-893.jav | 9 +++++++++ testData/ast/issues/file/kt-893.kt | 8 ++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 testData/ast/issues/file/kt-893.jav create mode 100644 testData/ast/issues/file/kt-893.kt diff --git a/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java b/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java index be46b12fae8..48ef77f5e86 100644 --- a/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java @@ -128,8 +128,7 @@ public class StatementVisitor extends ElementVisitor { && condition != null && update != null && update.getChildren().length == 1 - && update.getChildren()[0] instanceof PsiPostfixExpression - && ((PsiPostfixExpression) update.getChildren()[0]).getOperationTokenType() == JavaTokenType.PLUSPLUS + && isPlusPlusExpression(update.getChildren()[0]) && operationTokenType != null && (operationTokenType == JavaTokenType.LT || operationTokenType == JavaTokenType.LE) && initialization.getFirstChild() != null @@ -160,6 +159,10 @@ public class StatementVisitor extends ElementVisitor { } } + private static boolean isPlusPlusExpression(@NotNull PsiElement psiElement) { + return (psiElement instanceof PsiPostfixExpression && ((PsiPostfixExpression) psiElement).getOperationTokenType() == JavaTokenType.PLUSPLUS) + || (psiElement instanceof PsiPrefixExpression && ((PsiPrefixExpression) psiElement).getOperationTokenType() == JavaTokenType.PLUSPLUS); + } @Override public void visitForeachStatement(@NotNull PsiForeachStatement statement) { diff --git a/testData/ast/issues/file/kt-893.jav b/testData/ast/issues/file/kt-893.jav new file mode 100644 index 00000000000..8637f952b7e --- /dev/null +++ b/testData/ast/issues/file/kt-893.jav @@ -0,0 +1,9 @@ +package demo; + +class Test { + void test() { + for(int i = 0; i < 10; ++i) { + System.out.println(i) + } + } +} \ No newline at end of file diff --git a/testData/ast/issues/file/kt-893.kt b/testData/ast/issues/file/kt-893.kt new file mode 100644 index 00000000000..af7dceb91c2 --- /dev/null +++ b/testData/ast/issues/file/kt-893.kt @@ -0,0 +1,8 @@ +package demo +open class Test() { +open fun test() : Unit { +for (i in 0..(10 - 1)) { +System.out?.println(i) +} +} +} \ No newline at end of file