diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java index 01b986f62f3..6a5c86ba58b 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/Visibilities.java @@ -173,6 +173,22 @@ public class Visibilities { } }; + // Currently used as default visibility of FunctionDescriptor + // It's needed to prevent NPE when requesting non-nullable visibility of descriptor before `initialize` has been called + public static final Visibility UNKNOWN = new Visibility("unknown", false) { + @Override + public boolean mustCheckInImports() { + throw new IllegalStateException("This method shouldn't be invoked for UNKNOWN visibility"); + } + + @Override + protected boolean isVisible( + @NotNull ReceiverValue receiver, @NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from + ) { + return false; + } + }; + public static final Set INVISIBLE_FROM_OTHER_MODULES = Collections.unmodifiableSet(KotlinPackage.setOf(PRIVATE, PRIVATE_TO_THIS, INTERNAL, LOCAL)); diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/FunctionDescriptorImpl.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/FunctionDescriptorImpl.java index 860481ec584..3ce0941e14b 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/FunctionDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/FunctionDescriptorImpl.java @@ -40,7 +40,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo private ReceiverParameterDescriptor extensionReceiverParameter; private ReceiverParameterDescriptor dispatchReceiverParameter; private Modality modality; - private Visibility visibility; + private Visibility visibility = Visibilities.UNKNOWN; private final Set overriddenFunctions = new LinkedHashSet(); // LinkedHashSet is essential here private final FunctionDescriptor original; private final Kind kind;