fix "enclosingThis" bug
This commit is contained in:
@@ -14,7 +14,6 @@ import org.jetbrains.k2js.translate.general.AbstractTranslator;
|
|||||||
import org.jetbrains.k2js.translate.intrinsic.FunctionIntrinsic;
|
import org.jetbrains.k2js.translate.intrinsic.FunctionIntrinsic;
|
||||||
import org.jetbrains.k2js.translate.utils.TranslationUtils;
|
import org.jetbrains.k2js.translate.utils.TranslationUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -116,12 +115,12 @@ public final class CallTranslator extends AbstractTranslator {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private JsExpression calleeReference() {
|
private JsExpression calleeReference() {
|
||||||
//TODO: refactor
|
//TODO: refactor
|
||||||
|
//TODO: write tests on this cases
|
||||||
if (descriptor instanceof VariableAsFunctionDescriptor) {
|
if (descriptor instanceof VariableAsFunctionDescriptor) {
|
||||||
VariableDescriptor variableDescriptor = ((VariableAsFunctionDescriptor) descriptor).getVariableDescriptor();
|
VariableDescriptor variableDescriptor = ((VariableAsFunctionDescriptor) descriptor).getVariableDescriptor();
|
||||||
if (variableDescriptor instanceof PropertyDescriptor) {
|
if (variableDescriptor instanceof PropertyDescriptor) {
|
||||||
PropertyGetterDescriptor getter = ((PropertyDescriptor) variableDescriptor).getGetter();
|
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) variableDescriptor;
|
||||||
assert getter != null;
|
return PropertyAccessTranslator.translateAsPropertyGetterCall(propertyDescriptor, context());
|
||||||
return (new CallTranslator(null, new ArrayList<JsExpression>(), getter, context())).translate();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (context().isDeclared(descriptor)) {
|
if (context().isDeclared(descriptor)) {
|
||||||
|
|||||||
@@ -35,6 +35,14 @@ public final class PropertyAccessTranslator extends AccessTranslator {
|
|||||||
.translateAsGet();
|
.translateAsGet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static JsExpression translateAsPropertyGetterCall(@NotNull PropertyDescriptor descriptor,
|
||||||
|
@NotNull TranslationContext context) {
|
||||||
|
return (new PropertyAccessTranslator(descriptor, context))
|
||||||
|
.translateAsGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static PropertyAccessTranslator newInstance(@NotNull JetQualifiedExpression expression,
|
public static PropertyAccessTranslator newInstance(@NotNull JetQualifiedExpression expression,
|
||||||
@NotNull TranslationContext context) {
|
@NotNull TranslationContext context) {
|
||||||
@@ -115,6 +123,13 @@ public final class PropertyAccessTranslator extends AccessTranslator {
|
|||||||
this.propertyDescriptor = getPropertyDescriptor(getNotNullSelector(qualifiedExpression));
|
this.propertyDescriptor = getPropertyDescriptor(getNotNullSelector(qualifiedExpression));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PropertyAccessTranslator(@NotNull PropertyDescriptor descriptor,
|
||||||
|
@NotNull TranslationContext context) {
|
||||||
|
super(context);
|
||||||
|
this.qualifier = null;
|
||||||
|
this.propertyDescriptor = descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public JsExpression translateAsGet() {
|
public JsExpression translateAsGet() {
|
||||||
|
|||||||
Reference in New Issue
Block a user