From 38632c2937665faa55485e15d496e3fdfd560eb2 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 6 Jun 2018 15:50:08 +0300 Subject: [PATCH] Can be private: correct detection of calls inside inline function So #KT-22180 Fixed So #KT-22094 Fixed --- .../MemberVisibilityCanBePrivateInspection.kt | 2 +- .../memberVisibilityCanBePrivate/inline.kt | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 idea/testData/inspections/memberVisibilityCanBePrivate/inline.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanBePrivateInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanBePrivateInspection.kt index a0d10fee0a5..06503dbbf9c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanBePrivateInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanBePrivateInspection.kt @@ -131,7 +131,7 @@ class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() { return@Processor false } } - val function = usage.getParentOfType(false) + val function = usage.getParentOfType(true) val insideInlineFun = function?.modifierList?.let { it.hasModifier(KtTokens.INLINE_KEYWORD) && !function.isPrivate() } ?: false if (insideInlineFun) { otherUsageFound = true diff --git a/idea/testData/inspections/memberVisibilityCanBePrivate/inline.kt b/idea/testData/inspections/memberVisibilityCanBePrivate/inline.kt new file mode 100644 index 00000000000..e072e9e9e7d --- /dev/null +++ b/idea/testData/inspections/memberVisibilityCanBePrivate/inline.kt @@ -0,0 +1,19 @@ +open class AA { + protected inline fun foo() { + val result = bar() + } + protected fun bar() { + } +} + +fun run(f: () -> T): T = f() + +object TT { + inline fun foo(f: () -> String) { + run { + bar(f()) + } + } + + fun bar(s: String) = s +} \ No newline at end of file