diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/IteratorForTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/IteratorForTranslator.java index 7583608e190..c87aa6ff0f8 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/IteratorForTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/foreach/IteratorForTranslator.java @@ -21,11 +21,9 @@ import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.psi.JetForExpression; -import org.jetbrains.k2js.translate.context.Namer; import org.jetbrains.k2js.translate.context.TranslationContext; import org.jetbrains.k2js.translate.general.Translation; import org.jetbrains.k2js.translate.reference.CallBuilder; @@ -64,25 +62,7 @@ public final class IteratorForTranslator extends ForTranslator { @NotNull private JsExpression hasNextMethodInvocation() { CallableDescriptor hasNextFunction = getHasNextCallable(bindingContext(), getLoopRange(expression)); - if (hasNextFunction instanceof FunctionDescriptor && !isJavaUtilIterator(hasNextFunction)) { - return translateMethodInvocation(iterator.second, hasNextFunction); - } - - // develar: I don't know, why hasNext called as function for PropertyDescriptor, our JS side define it as property and all other code translate it as property - JsNameRef hasNext = new JsNameRef(Namer.getNameForAccessor("hasNext", true, context().isEcma5())); - hasNext.setQualifier(iterator.second); - if (context().isEcma5()) { - return hasNext; - } - else { - return new JsInvocation(hasNext); - } - } - - // kotlin iterator define hasNext as property, but java util as function, our js side expects as property - private static boolean isJavaUtilIterator(CallableDescriptor descriptor) { - DeclarationDescriptor declaration = descriptor.getContainingDeclaration(); - return declaration.getName().getName().equals("Iterator"); + return translateMethodInvocation(iterator.second, hasNextFunction); } @NotNull