fix "enclosingThis" bug

This commit is contained in:
Pavel Talanov
2011-12-05 17:47:20 +04:00
parent 677c1a5ad3
commit c7a4d724a0
2 changed files with 18 additions and 4 deletions
@@ -14,7 +14,6 @@ import org.jetbrains.k2js.translate.general.AbstractTranslator;
import org.jetbrains.k2js.translate.intrinsic.FunctionIntrinsic;
import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -116,12 +115,12 @@ public final class CallTranslator extends AbstractTranslator {
@NotNull
private JsExpression calleeReference() {
//TODO: refactor
//TODO: write tests on this cases
if (descriptor instanceof VariableAsFunctionDescriptor) {
VariableDescriptor variableDescriptor = ((VariableAsFunctionDescriptor) descriptor).getVariableDescriptor();
if (variableDescriptor instanceof PropertyDescriptor) {
PropertyGetterDescriptor getter = ((PropertyDescriptor) variableDescriptor).getGetter();
assert getter != null;
return (new CallTranslator(null, new ArrayList<JsExpression>(), getter, context())).translate();
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) variableDescriptor;
return PropertyAccessTranslator.translateAsPropertyGetterCall(propertyDescriptor, context());
}
}
if (context().isDeclared(descriptor)) {
@@ -35,6 +35,14 @@ public final class PropertyAccessTranslator extends AccessTranslator {
.translateAsGet();
}
@NotNull
public static JsExpression translateAsPropertyGetterCall(@NotNull PropertyDescriptor descriptor,
@NotNull TranslationContext context) {
return (new PropertyAccessTranslator(descriptor, context))
.translateAsGet();
}
@NotNull
public static PropertyAccessTranslator newInstance(@NotNull JetQualifiedExpression expression,
@NotNull TranslationContext context) {
@@ -115,6 +123,13 @@ public final class PropertyAccessTranslator extends AccessTranslator {
this.propertyDescriptor = getPropertyDescriptor(getNotNullSelector(qualifiedExpression));
}
private PropertyAccessTranslator(@NotNull PropertyDescriptor descriptor,
@NotNull TranslationContext context) {
super(context);
this.qualifier = null;
this.propertyDescriptor = descriptor;
}
@Override
@NotNull
public JsExpression translateAsGet() {