diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt index 1cbee1058f6..c85fe29ff7c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt @@ -326,9 +326,9 @@ class UnusedSymbolInspection : AbstractKotlinInspection() { private fun KtCallableDeclaration.canBeHandledByLightMethods(descriptor: DeclarationDescriptor?): Boolean { return when { + descriptor is ConstructorDescriptor -> !descriptor.constructedClass.isInline hasModifier(KtTokens.INTERNAL_KEYWORD) -> false descriptor !is FunctionDescriptor -> true - descriptor is ConstructorDescriptor -> !descriptor.constructedClass.isInline else -> !descriptor.hasInlineClassParameters() } } diff --git a/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/after/User.java b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/after/User.java new file mode 100644 index 00000000000..1aa69cb66ab --- /dev/null +++ b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/after/User.java @@ -0,0 +1,5 @@ +public class User { + public static void main(String[] args) { + new WithInternalConstructor(); + } +} \ No newline at end of file diff --git a/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/after/test.kt b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/after/test.kt new file mode 100644 index 00000000000..d83e62eebc3 --- /dev/null +++ b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/after/test.kt @@ -0,0 +1,3 @@ +class WithInternalConstructor(val x: Int) { + internal constructor() : this(42) +} \ No newline at end of file diff --git a/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/before/User.java b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/before/User.java new file mode 100644 index 00000000000..1aa69cb66ab --- /dev/null +++ b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/before/User.java @@ -0,0 +1,5 @@ +public class User { + public static void main(String[] args) { + new WithInternalConstructor(); + } +} \ No newline at end of file diff --git a/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/before/test.kt b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/before/test.kt new file mode 100644 index 00000000000..ea960d4c955 --- /dev/null +++ b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/before/test.kt @@ -0,0 +1,3 @@ +class WithInternalConstructor(val x: Int) { + internal constructor() : this(42) +} \ No newline at end of file diff --git a/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/internalConstructorUsedInJava.test b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/internalConstructorUsedInJava.test new file mode 100644 index 00000000000..c2bdad89914 --- /dev/null +++ b/idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/internalConstructorUsedInJava.test @@ -0,0 +1,5 @@ +{ + "inspectionClass": "org.jetbrains.kotlin.idea.inspections.UnusedSymbolInspection", + "problem": "none", + "mainFile": "test.kt" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/MultiFileLocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/MultiFileLocalInspectionTestGenerated.java index c0f6c7c16e3..4e52d8d49f9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/MultiFileLocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/MultiFileLocalInspectionTestGenerated.java @@ -93,4 +93,9 @@ public class MultiFileLocalInspectionTestGenerated extends AbstractMultiFileLoca public void testUnusedSymbol_inlineClassesImplInterface_InlineClassesImplInterface() throws Exception { runTest("idea/testData/multiFileLocalInspections/unusedSymbol/inlineClassesImplInterface/inlineClassesImplInterface.test"); } + + @TestMetadata("unusedSymbol/internalConstructorUsedInJava/internalConstructorUsedInJava.test") + public void testUnusedSymbol_internalConstructorUsedInJava_InternalConstructorUsedInJava() throws Exception { + runTest("idea/testData/multiFileLocalInspections/unusedSymbol/internalConstructorUsedInJava/internalConstructorUsedInJava.test"); + } }