From 48ba63fa27021ded4972ca86ed251a060d07397e Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 29 Apr 2016 15:44:20 +0300 Subject: [PATCH] Can be parameter inspection: usages in all functions are now handled as property usage --- .../kotlin/idea/inspections/CanBeParameterInspection.kt | 4 ++-- idea/testData/inspections/canBeParameter/test.kt | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeParameterInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeParameterInspection.kt index 3703a673a96..b4d8d3db5a6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeParameterInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeParameterInspection.kt @@ -55,13 +55,13 @@ class CanBeParameterInspection : AbstractKotlinInspection() { do { parameterUser = PsiTreeUtil.getParentOfType(parameterUser, KtProperty::class.java, KtPropertyAccessor::class.java, KtClassInitializer::class.java, KtSecondaryConstructor::class.java, - KtFunctionLiteral::class.java, KtObjectDeclaration::class.java) ?: return true + KtFunction::class.java, KtObjectDeclaration::class.java) ?: return true } while (parameterUser is KtProperty && parameterUser.isLocal) return when (parameterUser) { is KtProperty -> parameterUser.containingClassOrObject !== klass is KtClassInitializer -> parameterUser.containingDeclaration !== klass is KtSecondaryConstructor -> parameterUser.getContainingClassOrObject() !== klass - is KtFunctionLiteral, is KtObjectDeclaration, is KtPropertyAccessor -> true + is KtFunction, is KtObjectDeclaration, is KtPropertyAccessor -> true else -> true } } diff --git a/idea/testData/inspections/canBeParameter/test.kt b/idea/testData/inspections/canBeParameter/test.kt index cfb99ab0fe3..22363531aea 100644 --- a/idea/testData/inspections/canBeParameter/test.kt +++ b/idea/testData/inspections/canBeParameter/test.kt @@ -126,4 +126,13 @@ class UsedInObjectLiteral(val x: Int) { val y = object: Any() { fun bar() = x } +} +// NO +class UsedInLocalFunction(val x: Int) { + init { + fun local() { + val y = x + } + local() + } } \ No newline at end of file