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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user