Remove hack introduced for in IteratorForTranslator.
This commit is contained in:
+1
-21
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user