diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/JetVisibilityChecker.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/JetVisibilityChecker.java deleted file mode 100644 index aa3d597f9a7..00000000000 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/JetVisibilityChecker.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.resolve; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; - -public class JetVisibilityChecker { - /** - * @param locationOwner owner of the call site - * @param subject the descriptor whose visibility is being checked - * @return true iff subject is visible locationOwner - */ - public static boolean isVisible(@NotNull DeclarationDescriptor locationOwner, @NotNull DeclarationDescriptor subject) { - // TODO : stub implementation - return true; - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/JetFunctionParameterInfoHandler.java b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/JetFunctionParameterInfoHandler.java index 89606052d28..c0ce8301b09 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/JetFunctionParameterInfoHandler.java +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/JetFunctionParameterInfoHandler.java @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade; import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage; import org.jetbrains.kotlin.idea.codeInsight.ReferenceVariantsHelper; +import org.jetbrains.kotlin.idea.core.CorePackage; import org.jetbrains.kotlin.lexer.JetTokens; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.*; @@ -45,7 +46,6 @@ import org.jetbrains.kotlin.psi.psiUtil.PsiUtilPackage; import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils; -import org.jetbrains.kotlin.resolve.JetVisibilityChecker; import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; @@ -373,7 +373,7 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith return null; } - JetSimpleNameExpression callNameExpression = getCallSimpleNameExpression(argumentList); + final JetSimpleNameExpression callNameExpression = getCallSimpleNameExpression(argumentList); if (callNameExpression == null) { return null; } @@ -384,7 +384,7 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith } ResolutionFacade resolutionFacade = ResolvePackage.getResolutionFacade(callNameExpression.getContainingJetFile()); - BindingContext bindingContext = resolutionFacade.analyze(callNameExpression, BodyResolveMode.FULL); + final BindingContext bindingContext = resolutionFacade.analyze(callNameExpression, BodyResolveMode.FULL); ModuleDescriptor moduleDescriptor = resolutionFacade.findModuleDescriptor(callNameExpression); JetScope scope = bindingContext.get(BindingContext.RESOLUTION_SCOPE, callNameExpression); @@ -398,7 +398,9 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith Function1 visibilityFilter = new Function1() { @Override public Boolean invoke(DeclarationDescriptor descriptor) { - return placeDescriptor == null || JetVisibilityChecker.isVisible(placeDescriptor, descriptor); + if (placeDescriptor == null) return true; + if (!(descriptor instanceof DeclarationDescriptorWithVisibility)) return true; + return CorePackage.isVisible((DeclarationDescriptorWithVisibility) descriptor, placeDescriptor, bindingContext, callNameExpression); } }; diff --git a/idea/testData/parameterInfo/functionParameterInfo/NotAccessible.kt b/idea/testData/parameterInfo/functionParameterInfo/NotAccessible.kt new file mode 100644 index 00000000000..d479deb45d2 --- /dev/null +++ b/idea/testData/parameterInfo/functionParameterInfo/NotAccessible.kt @@ -0,0 +1,11 @@ +class C { + fun foo(){} + protected fun foo(p: Int){} +} + +fun f(c: C) { + c.foo(1) +} +/* +Text: (), Disabled: true, Strikeout: false, Green: true +*/ \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/FunctionParameterInfoTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/FunctionParameterInfoTestGenerated.java index e23191fe321..4df942d70a3 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/FunctionParameterInfoTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/FunctionParameterInfoTestGenerated.java @@ -77,6 +77,12 @@ public class FunctionParameterInfoTestGenerated extends AbstractFunctionParamete doTest(fileName); } + @TestMetadata("NotAccessible.kt") + public void testNotAccessible() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/parameterInfo/functionParameterInfo/NotAccessible.kt"); + doTest(fileName); + } + @TestMetadata("NotGreen.kt") public void testNotGreen() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/parameterInfo/functionParameterInfo/NotGreen.kt");