Remove VariableDescriptor#isObjectDeclaration and usages.

Replace with BindingContext trace slice OBJECT_DECLARATION_CLASS.
Remove corresponding field from constructor.
Introduce hack in JavaDescriptorResolver which creates dummy class descriptors for enum entry objects.
This commit is contained in:
Pavel V. Talanov
2012-08-22 18:03:50 +04:00
parent ebef32e0f7
commit 0a044b18d5
16 changed files with 53 additions and 47 deletions
@@ -40,6 +40,7 @@ import org.jetbrains.k2js.translate.utils.PredefinedAnnotation;
import java.util.Map;
import static org.jetbrains.k2js.translate.utils.AnnotationsUtils.*;
import static org.jetbrains.k2js.translate.utils.BindingUtils.isObjectDeclaration;
import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.*;
/**
@@ -226,7 +227,7 @@ public final class StaticContext {
PropertyAccessorDescriptor accessorDescriptor = (PropertyAccessorDescriptor) descriptor;
String propertyName = accessorDescriptor.getCorrespondingProperty().getName().getName();
if (accessorDescriptor.getCorrespondingProperty().isObjectDeclaration()) {
if (isObjectDeclaration(bindingContext, accessorDescriptor.getCorrespondingProperty())) {
return declareName(descriptor, propertyName);
}
@@ -33,6 +33,7 @@ import java.util.ArrayList;
import java.util.List;
import static org.jetbrains.k2js.translate.reference.CallParametersResolver.resolveCallParameters;
import static org.jetbrains.k2js.translate.utils.BindingUtils.isObjectDeclaration;
import static org.jetbrains.k2js.translate.utils.JsAstUtils.assignment;
import static org.jetbrains.k2js.translate.utils.JsAstUtils.setQualifier;
import static org.jetbrains.k2js.translate.utils.JsDescriptorUtils.isConstructorDescriptor;
@@ -267,7 +268,12 @@ public final class CallTranslator extends AbstractTranslator {
private boolean isDirectPropertyAccess() {
return descriptor instanceof PropertyAccessorDescriptor &&
(context().isEcma5() || ((PropertyAccessorDescriptor) descriptor).getCorrespondingProperty().isObjectDeclaration());
(context().isEcma5() || isObjectAccessor((PropertyAccessorDescriptor) descriptor));
}
private boolean isObjectAccessor(@NotNull PropertyAccessorDescriptor propertyAccessorDescriptor) {
PropertyDescriptor correspondingProperty = propertyAccessorDescriptor.getCorrespondingProperty();
return isObjectDeclaration(bindingContext(), correspondingProperty);
}
@NotNull
@@ -298,4 +298,11 @@ public final class BindingUtils {
@NotNull JetNamedFunction function) {
return bindingContext.get(BindingContext.FUNCTION, function);
}
public static boolean isObjectDeclaration(
@NotNull BindingContext bindingContext,
@NotNull PropertyDescriptor propertyDescriptor
) {
return bindingContext.get(BindingContext.OBJECT_DECLARATION_CLASS, propertyDescriptor) != null;
}
}