From db40a5a3d850b892edfe0b6e9b94ba4a9d097369 Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Mon, 22 Dec 2014 15:24:26 +0300 Subject: [PATCH] Skip local declarations in visibility publicity checking --- .../lang/resolve/calls/InlineCallResolverExtension.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java index 5ba382b529c..f3e72b29917 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java @@ -16,6 +16,7 @@ package org.jetbrains.jet.lang.resolve.calls; +import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; @@ -247,10 +248,14 @@ public class InlineCallResolverExtension implements CallResolverExtension { } } - private static boolean isEffectivelyPublicApi(DeclarationDescriptorWithVisibility descriptor) { - DeclarationDescriptorWithVisibility parent = descriptor; + private boolean isEffectivelyPublicApi(@NotNull DeclarationDescriptorWithVisibility startDescriptor) { + DeclarationDescriptorWithVisibility parent = startDescriptor; while (parent != null) { if (!parent.getVisibility().isPublicAPI()) { + if (parent.getContainingDeclaration() == descriptor) { + //skip all defined in inline function + return true; + } return false; } parent = DescriptorUtils.getParentOfType(parent, DeclarationDescriptorWithVisibility.class);