diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt index 130d0df2934..2c29d98c0ec 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt @@ -50,6 +50,7 @@ import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.quickfix.RemoveUnusedFunctionParameterFix import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.references.resolveMainReferenceToDescriptors +import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters import org.jetbrains.kotlin.idea.search.isCheapEnoughToSearchConsideringOperators import org.jetbrains.kotlin.idea.search.projectScope @@ -281,7 +282,11 @@ class UnusedSymbolInspection : AbstractKotlinInspection() { return false } - val searchParameters = KotlinReferencesSearchParameters(declaration, useScope) + val searchParameters = KotlinReferencesSearchParameters( + declaration, + useScope, + kotlinOptions = KotlinReferencesSearchOptions(acceptCallableOverrides = declaration.hasActualModifier()) + ) val referenceUsed: Boolean by lazy { !ReferencesSearch.search(searchParameters).forEach(::checkReference) } if (descriptor is FunctionDescriptor && diff --git a/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/common/common.kt b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/common/common.kt new file mode 100644 index 00000000000..62294455a95 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/common/common.kt @@ -0,0 +1,3 @@ +expect class My constructor() { + fun foo() +} diff --git a/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/common/common.kt.after b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/common/common.kt.after new file mode 100644 index 00000000000..62294455a95 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/common/common.kt.after @@ -0,0 +1,3 @@ +expect class My constructor() { + fun foo() +} diff --git a/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/js/js.kt b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/js/js.kt new file mode 100644 index 00000000000..af97a2ea229 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/js/js.kt @@ -0,0 +1,7 @@ +actual class My { + actual fun foo() {} +} + +fun test() { + My().foo() +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/js/js.kt.after b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/js/js.kt.after new file mode 100644 index 00000000000..af97a2ea229 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/js/js.kt.after @@ -0,0 +1,7 @@ +actual class My { + actual fun foo() {} +} + +fun test() { + My().foo() +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/jvm/jvm.kt b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/jvm/jvm.kt new file mode 100644 index 00000000000..6c370b925be --- /dev/null +++ b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/jvm/jvm.kt @@ -0,0 +1,8 @@ +// "Safe delete 'foo'" "false" +// TOOL: org.jetbrains.kotlin.idea.inspections.UnusedSymbolInspection +// ACTION: Convert member to extension +// ACTION: Move to companion object + +actual class My { + actual fun foo() {} +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/jvm/jvm.kt.after b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/jvm/jvm.kt.after new file mode 100644 index 00000000000..9107474115a --- /dev/null +++ b/idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/jvm/jvm.kt.after @@ -0,0 +1,8 @@ +// "Safe delete 'foo'" "false" +// TOOL: org.jetbrains.kotlin.idea.inspections.UnusedSymbolInspection +// ACTION: Convert member to extension +// ACTION: Move to companion object + +actual class My { + actual fun foo() {} +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java index f75cd6cf539..9a6ccdc3066 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java @@ -344,6 +344,11 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul runTest("idea/testData/multiModuleQuickFix/safeDeleteFromActual/"); } + @TestMetadata("safeDeleteUsedInAnotherPlatform") + public void testSafeDeleteUsedInAnotherPlatform() throws Exception { + runTest("idea/testData/multiModuleQuickFix/safeDeleteUsedInAnotherPlatform/"); + } + @TestMetadata("sealed") public void testSealed() throws Exception { runTest("idea/testData/multiModuleQuickFix/sealed/");