Constructors for enum entries and class objects have private visibility in frontend.
Introduce DescriptorUtils#getDefaultConstructorVisibility. DescriptorResolver: remove exception wrapping. Hardcode package-private visibility for enum entries in JetTypeMapper. Refactoring: DescriptorResolver: rename createPrimaryConstructorForObject -> createAndRecordPrimaryConstructorForObject, createPrimaryConstructorForObject now a separate method. JavaDescriptorResolver: extract containingDeclaration variable. JetTypeMapper: rename variable declaration -> containingDeclaration.
This commit is contained in:
@@ -44,6 +44,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jetbrains.asm4.Opcodes.*;
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isClassObject;
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isEnumEntry;
|
||||
import static org.jetbrains.jet.codegen.context.CodegenBinding.*;
|
||||
import static org.jetbrains.jet.lang.resolve.BindingContextUtils.descriptorToDeclaration;
|
||||
|
||||
@@ -980,8 +982,8 @@ public class JetTypeMapper {
|
||||
|
||||
|
||||
public static int getAccessModifiers(@NotNull MemberDescriptor p, int defaultFlags) {
|
||||
DeclarationDescriptor declaration = p.getContainingDeclaration();
|
||||
if (CodegenUtil.isInterface(declaration)) {
|
||||
DeclarationDescriptor containingDeclaration = p.getContainingDeclaration();
|
||||
if (CodegenUtil.isInterface(containingDeclaration)) {
|
||||
return ACC_PUBLIC;
|
||||
}
|
||||
if (p.getVisibility() == Visibilities.PUBLIC) {
|
||||
@@ -991,10 +993,13 @@ public class JetTypeMapper {
|
||||
return ACC_PROTECTED;
|
||||
}
|
||||
else if (p.getVisibility() == Visibilities.PRIVATE) {
|
||||
if (DescriptorUtils.isClassObject(declaration)) {
|
||||
if (isClassObject(containingDeclaration)) {
|
||||
return defaultFlags;
|
||||
}
|
||||
if (p.getContainingDeclaration() instanceof NamespaceDescriptor) {
|
||||
if (p instanceof ConstructorDescriptor && isEnumEntry(containingDeclaration)) {
|
||||
return 0;
|
||||
}
|
||||
if (containingDeclaration instanceof NamespaceDescriptor) {
|
||||
return 0;
|
||||
}
|
||||
return ACC_PRIVATE;
|
||||
|
||||
Reference in New Issue
Block a user