diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index 6fe7e23546e..e5bc31a4afd 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -42,6 +42,7 @@ import kotlin.properties.Delegates import org.jetbrains.jet.lang.psi.psiUtil.getStrictParentOfType import org.jetbrains.jet.plugin.util.makeNotNullable import org.jetbrains.jet.plugin.util.CallType +import org.jetbrains.jet.plugin.completion.isVisible class CompletionSessionConfiguration( val completeNonImportedDeclarations: Boolean, @@ -111,7 +112,7 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess if (configuration.completeNonAccessibleDeclarations) return true if (descriptor is DeclarationDescriptorWithVisibility && inDescriptor != null) { - return Visibilities.isVisible(descriptor, inDescriptor) + return descriptor.isVisible(inDescriptor, bindingContext, jetReference?.expression) } return true diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt index 7cd8e3a8eb6..fbb95c63625 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt @@ -36,6 +36,14 @@ import com.intellij.codeInsight.completion.InsertionContext import org.jetbrains.jet.plugin.completion.handlers.CastReceiverInsertHandler import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor import org.jetbrains.jet.lang.descriptors.CallableDescriptor +import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorWithVisibility +import org.jetbrains.jet.lang.resolve.BindingContext +import org.jetbrains.jet.lang.psi.JetSimpleNameExpression +import org.jetbrains.jet.lang.descriptors.Visibilities +import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue +import org.jetbrains.jet.lang.psi.psiUtil.getReceiverExpression +import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver +import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils enum class ItemPriority { MULTIPLE_ARGUMENTS_ITEM @@ -134,3 +142,31 @@ fun descriptorsEqualWithSubstitution(descriptor1: DeclarationDescriptor?, descri } return true } + +fun DeclarationDescriptorWithVisibility.isVisible( + from: DeclarationDescriptor, + bindingContext: BindingContext? = null, + element: JetSimpleNameExpression? = null +): Boolean { + if (Visibilities.isVisible(ReceiverValue.IRRELEVANT_RECEIVER, this, from)) return true + if (bindingContext == null || element == null) return false + + val receiver = element.getReceiverExpression() + val type = receiver?.let { bindingContext.get(BindingContext.EXPRESSION_TYPE, it) } + val explicitReceiver = type?.let { ExpressionReceiver(receiver, it) } + + if (explicitReceiver != null) { + val normalizeReceiver = ExpressionTypingUtils.normalizeReceiverValueForVisibility(explicitReceiver, bindingContext) + return Visibilities.isVisible(normalizeReceiver, this, from) + } + + val jetScope = bindingContext[BindingContext.RESOLUTION_SCOPE, element] + val implicitReceivers = jetScope?.getImplicitReceiversHierarchy() + if (implicitReceivers != null) { + for (implicitReceiver in implicitReceivers) { + val normalizeReceiver = ExpressionTypingUtils.normalizeReceiverValueForVisibility(implicitReceiver.getValue(), bindingContext) + if (Visibilities.isVisible(normalizeReceiver, this, from)) return true + } + } + return false +} diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/StaticMembers.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/StaticMembers.kt index 4997e7c9244..7c3e80be0c5 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/StaticMembers.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/StaticMembers.kt @@ -19,14 +19,12 @@ package org.jetbrains.jet.plugin.completion.smart import com.intellij.codeInsight.lookup.LookupElement import org.jetbrains.jet.lang.types.TypeUtils import org.jetbrains.jet.lang.descriptors.* -import org.jetbrains.jet.lang.resolve.scopes.JetScope import org.jetbrains.jet.lang.resolve.DescriptorUtils import com.intellij.codeInsight.lookup.LookupElementDecorator import com.intellij.codeInsight.lookup.LookupElementPresentation import org.jetbrains.jet.renderer.DescriptorRenderer import com.intellij.codeInsight.completion.InsertionContext import org.jetbrains.jet.lang.resolve.BindingContext -import org.jetbrains.jet.lang.psi.JetExpression import org.jetbrains.jet.plugin.completion.ExpectedInfo import org.jetbrains.jet.plugin.completion.qualifiedNameForSourceCode import org.jetbrains.jet.lang.resolve.descriptorUtil.isExtension @@ -35,6 +33,8 @@ import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade import org.jetbrains.jet.plugin.completion.LookupElementFactory import org.jetbrains.jet.lang.types.TypeSubstitutor import org.jetbrains.jet.plugin.util.fuzzyReturnType +import org.jetbrains.jet.lang.psi.JetSimpleNameExpression +import org.jetbrains.jet.plugin.completion.isVisible // adds java static members, enum members and members from class object class StaticMembers( @@ -44,15 +44,13 @@ class StaticMembers( ) { public fun addToCollection(collection: MutableCollection, expectedInfos: Collection, - context: JetExpression, + context: JetSimpleNameExpression, enumEntriesToSkip: Set) { - val scope = bindingContext[BindingContext.RESOLUTION_SCOPE, context] ?: return - val expectedInfosByClass = expectedInfos.groupBy { TypeUtils.getClassDescriptor(it.type) } for ((classDescriptor, expectedInfosForClass) in expectedInfosByClass) { if (classDescriptor != null && !classDescriptor.getName().isSpecial()) { - addToCollection(collection, classDescriptor, expectedInfosForClass, scope, enumEntriesToSkip) + addToCollection(collection, classDescriptor, expectedInfosForClass, context, enumEntriesToSkip) } } } @@ -61,11 +59,13 @@ class StaticMembers( collection: MutableCollection, classDescriptor: ClassDescriptor, expectedInfos: Collection, - scope: JetScope, + context: JetSimpleNameExpression, enumEntriesToSkip: Set) { + val scope = bindingContext[BindingContext.RESOLUTION_SCOPE, context] ?: return + fun processMember(descriptor: DeclarationDescriptor) { - if (descriptor is DeclarationDescriptorWithVisibility && !Visibilities.isVisible(descriptor, scope.getContainingDeclaration())) return + if (descriptor is DeclarationDescriptorWithVisibility && !descriptor.isVisible(scope.getContainingDeclaration(), bindingContext, context)) return val classifier: (ExpectedInfo) -> ExpectedInfoClassification if (descriptor is CallableDescriptor) { diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.kt index d93eec6db15..6e01bcc42f8 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.kt @@ -51,10 +51,10 @@ import org.jetbrains.jet.plugin.util.ProjectRootsUtil import org.jetbrains.jet.asJava.unwrapped import org.jetbrains.jet.lang.resolve.BindingContext import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorWithVisibility -import org.jetbrains.jet.lang.descriptors.Visibilities import org.jetbrains.jet.lang.diagnostics.Errors import com.intellij.psi.util.PsiModificationTracker import org.jetbrains.jet.utils.CachedValueProperty +import org.jetbrains.jet.plugin.completion.isVisible /** * Check possibility and perform fix for unresolved references. @@ -130,7 +130,7 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction { + private val bar: I + + private fun foo(): I = null!! + + + fun test() { + + } +} + +// INVOCATION_COUNT: 1 +// EXIST: bar, foo diff --git a/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructor.kt b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructor.kt new file mode 100644 index 00000000000..77420aed5fe --- /dev/null +++ b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructor.kt @@ -0,0 +1,12 @@ +class A { + private val bar: I + + private fun foo(): I = null!! + + { + + } +} + +// INVOCATION_COUNT: 1 +// EXIST: bar, foo diff --git a/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructorWithThis.kt b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructorWithThis.kt new file mode 100644 index 00000000000..89a0c5c10a7 --- /dev/null +++ b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructorWithThis.kt @@ -0,0 +1,12 @@ +class A { + private val bar: I + + private fun foo(): I = null!! + + { + this. + } +} + +// INVOCATION_COUNT: 1 +// EXIST: bar, foo diff --git a/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInSpecialScope.kt b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInSpecialScope.kt new file mode 100644 index 00000000000..18d6fd2b786 --- /dev/null +++ b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInSpecialScope.kt @@ -0,0 +1,15 @@ +class A { + private val bar: I + + private fun foo(): I = null!! + + + fun test() { + with(A()) { + + } + } +} + +// INVOCATION_COUNT: 1 +// EXIST: bar, foo diff --git a/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver.kt b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver.kt new file mode 100644 index 00000000000..36923b714d8 --- /dev/null +++ b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver.kt @@ -0,0 +1,13 @@ +class A { + private val bar: I + + private fun foo(): I = null!! + + + fun test(a: A) { + a. + } +} + +// INVOCATION_COUNT: 1 +// ABSENT: bar, foo diff --git a/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver2.kt b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver2.kt new file mode 100644 index 00000000000..9ee6e697f97 --- /dev/null +++ b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver2.kt @@ -0,0 +1,13 @@ +class A { + private val bar: I + + private fun foo(): I = null!! + + + fun test(a: A) { + a. + } +} + +// INVOCATION_COUNT: 2 +// EXIST: bar, foo diff --git a/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithThis.kt b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithThis.kt new file mode 100644 index 00000000000..68d4475abed --- /dev/null +++ b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithThis.kt @@ -0,0 +1,15 @@ +class A { + private val bar: I + + private fun foo(): I = null!! + + + fun test() { + with(A()) { + this@A. + } + } +} + +// INVOCATION_COUNT: 1 +// EXIST: bar, foo diff --git a/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithWrongThis.kt b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithWrongThis.kt new file mode 100644 index 00000000000..5f18a7eb519 --- /dev/null +++ b/idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithWrongThis.kt @@ -0,0 +1,15 @@ +class A { + private val bar: I + + private fun foo(): I = null!! + + + fun test() { + with(A()) { + this. + } + } +} + +// INVOCATION_COUNT: 1 +// ABSENT: bar, foo diff --git a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java index a0979168d8b..677a49bca81 100644 --- a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java @@ -33,7 +33,7 @@ import java.util.regex.Pattern; public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTest { @TestMetadata("idea/testData/completion/basic/common") @TestDataPath("$PROJECT_ROOT") - @InnerTestClasses({Common.Extensions.class, Common.NamedParameters.class}) + @InnerTestClasses({Common.Extensions.class, Common.NamedParameters.class, Common.Visibility.class}) @RunWith(JUnit3RunnerWithInners.class) public static class Common extends AbstractJSBasicCompletionTest { @TestMetadata("AfterFloatOnNewLine.kt") @@ -850,30 +850,6 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } - @TestMetadata("VisibilityClassMembersFromExternal.kt") - public void testVisibilityClassMembersFromExternal() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/VisibilityClassMembersFromExternal.kt"); - doTest(fileName); - } - - @TestMetadata("VisibilityClassMembersFromExternalForce.kt") - public void testVisibilityClassMembersFromExternalForce() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/VisibilityClassMembersFromExternalForce.kt"); - doTest(fileName); - } - - @TestMetadata("VisibilityInSubclass.kt") - public void testVisibilityInSubclass() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/VisibilityInSubclass.kt"); - doTest(fileName); - } - - @TestMetadata("VisibilityInSubclassForce.kt") - public void testVisibilityInSubclassForce() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/VisibilityInSubclassForce.kt"); - doTest(fileName); - } - @TestMetadata("idea/testData/completion/basic/common/extensions") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) @@ -1047,6 +1023,87 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } } + + @TestMetadata("idea/testData/completion/basic/common/visibility") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Visibility extends AbstractJSBasicCompletionTest { + public void testAllFilesPresentInVisibility() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/completion/basic/common/visibility"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("VisibilityClassMembersFromExternal.kt") + public void testVisibilityClassMembersFromExternal() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityClassMembersFromExternal.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityClassMembersFromExternalForce.kt") + public void testVisibilityClassMembersFromExternalForce() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityClassMembersFromExternalForce.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityInSubclass.kt") + public void testVisibilityInSubclass() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityInSubclass.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityInSubclassForce.kt") + public void testVisibilityInSubclassForce() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityInSubclassForce.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThis.kt") + public void testVisibilityPrivateToThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThis.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisInConstructor.kt") + public void testVisibilityPrivateToThisInConstructor() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructor.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisInConstructorWithThis.kt") + public void testVisibilityPrivateToThisInConstructorWithThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructorWithThis.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisInSpecialScope.kt") + public void testVisibilityPrivateToThisInSpecialScope() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInSpecialScope.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisWithReceiver.kt") + public void testVisibilityPrivateToThisWithReceiver() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisWithReceiver2.kt") + public void testVisibilityPrivateToThisWithReceiver2() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver2.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisWithThis.kt") + public void testVisibilityPrivateToThisWithThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithThis.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisWithWrongThis.kt") + public void testVisibilityPrivateToThisWithWrongThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithWrongThis.kt"); + doTest(fileName); + } + } } @TestMetadata("idea/testData/completion/basic/js") diff --git a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java index 9049ab38a3d..ca74f6257e5 100644 --- a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java @@ -33,7 +33,7 @@ import java.util.regex.Pattern; public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionTest { @TestMetadata("idea/testData/completion/basic/common") @TestDataPath("$PROJECT_ROOT") - @InnerTestClasses({Common.Extensions.class, Common.NamedParameters.class}) + @InnerTestClasses({Common.Extensions.class, Common.NamedParameters.class, Common.Visibility.class}) @RunWith(JUnit3RunnerWithInners.class) public static class Common extends AbstractJvmBasicCompletionTest { @TestMetadata("AfterFloatOnNewLine.kt") @@ -850,30 +850,6 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } - @TestMetadata("VisibilityClassMembersFromExternal.kt") - public void testVisibilityClassMembersFromExternal() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/VisibilityClassMembersFromExternal.kt"); - doTest(fileName); - } - - @TestMetadata("VisibilityClassMembersFromExternalForce.kt") - public void testVisibilityClassMembersFromExternalForce() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/VisibilityClassMembersFromExternalForce.kt"); - doTest(fileName); - } - - @TestMetadata("VisibilityInSubclass.kt") - public void testVisibilityInSubclass() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/VisibilityInSubclass.kt"); - doTest(fileName); - } - - @TestMetadata("VisibilityInSubclassForce.kt") - public void testVisibilityInSubclassForce() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/VisibilityInSubclassForce.kt"); - doTest(fileName); - } - @TestMetadata("idea/testData/completion/basic/common/extensions") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) @@ -1047,6 +1023,87 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } } + + @TestMetadata("idea/testData/completion/basic/common/visibility") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Visibility extends AbstractJvmBasicCompletionTest { + public void testAllFilesPresentInVisibility() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/completion/basic/common/visibility"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("VisibilityClassMembersFromExternal.kt") + public void testVisibilityClassMembersFromExternal() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityClassMembersFromExternal.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityClassMembersFromExternalForce.kt") + public void testVisibilityClassMembersFromExternalForce() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityClassMembersFromExternalForce.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityInSubclass.kt") + public void testVisibilityInSubclass() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityInSubclass.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityInSubclassForce.kt") + public void testVisibilityInSubclassForce() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityInSubclassForce.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThis.kt") + public void testVisibilityPrivateToThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThis.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisInConstructor.kt") + public void testVisibilityPrivateToThisInConstructor() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructor.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisInConstructorWithThis.kt") + public void testVisibilityPrivateToThisInConstructorWithThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInConstructorWithThis.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisInSpecialScope.kt") + public void testVisibilityPrivateToThisInSpecialScope() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisInSpecialScope.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisWithReceiver.kt") + public void testVisibilityPrivateToThisWithReceiver() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisWithReceiver2.kt") + public void testVisibilityPrivateToThisWithReceiver2() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithReceiver2.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisWithThis.kt") + public void testVisibilityPrivateToThisWithThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithThis.kt"); + doTest(fileName); + } + + @TestMetadata("VisibilityPrivateToThisWithWrongThis.kt") + public void testVisibilityPrivateToThisWithWrongThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/visibility/VisibilityPrivateToThisWithWrongThis.kt"); + doTest(fileName); + } + } } @TestMetadata("idea/testData/completion/basic/java")