diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/expectActualUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/expectActualUtil.kt index 7c6b0a69400..cab04b43631 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/expectActualUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/expectActualUtil.kt @@ -133,7 +133,7 @@ fun KtDeclaration.isEffectivelyActual(checkConstructor: Boolean = true): Boolean else -> false } -fun KtDeclaration.runOnExpectAndAllActuals(checkExpect: Boolean = true, f: (KtDeclaration) -> Unit) { +fun KtDeclaration.runOnExpectAndAllActuals(checkExpect: Boolean = true, useOnSelf: Boolean = false, f: (KtDeclaration) -> Unit) { if (hasActualModifier()) { val expectElement = liftToExpected() expectElement?.actualsForExpected()?.forEach { @@ -145,6 +145,8 @@ fun KtDeclaration.runOnExpectAndAllActuals(checkExpect: Boolean = true, f: (KtDe } else if (!checkExpect || isExpectDeclaration()) { actualsForExpected().forEach { f(it) } } + + if (useOnSelf) f(this) } fun KtDeclaration.collectAllExpectAndActualDeclaration(): Set = when { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt index c9aaa188825..9abc8056152 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt @@ -71,9 +71,10 @@ open class AddModifierFix( override fun invokeImpl(project: Project, editor: Editor?, file: PsiFile) { val originalElement = element if (originalElement is KtDeclaration && modifier.isMultiplatformPersistent()) { - originalElement.runOnExpectAndAllActuals { invokeOnElement(it) } + originalElement.runOnExpectAndAllActuals(useOnSelf = true) { invokeOnElement(it) } + } else { + invokeOnElement(originalElement) } - invokeOnElement(originalElement) } override fun isAvailableImpl(project: Project, editor: Editor?, file: PsiFile): Boolean { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityFix.kt index e50ce44b1ff..9492d1a232d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityFix.kt @@ -52,11 +52,11 @@ open class ChangeVisibilityFix( val pointer = element?.createSmartPointer() val originalElement = pointer?.element if (originalElement is KtDeclaration) { - originalElement.runOnExpectAndAllActuals { it.setVisibility(visibilityModifier) } + originalElement.runOnExpectAndAllActuals(useOnSelf = true) { it.setVisibility(visibilityModifier) } + } else { + originalElement?.setVisibility(visibilityModifier) } - pointer?.element?.setVisibility(visibilityModifier) - val propertyAccessor = pointer?.element as? KtPropertyAccessor if (propertyAccessor?.isRedundantSetter() == true) { RemoveRedundantSetterFix.removeRedundantSetter(propertyAccessor)