Unused symbol: fix false positives on inline class constructors

#KT-27434 Fixed
This commit is contained in:
Mikhail Glukhikh
2018-10-26 16:44:02 +03:00
parent 506f7aaa68
commit 700bcb5984
3 changed files with 13 additions and 2 deletions
@@ -327,11 +327,10 @@ class UnusedSymbolInspection : AbstractKotlinInspection() {
private fun KtCallableDeclaration.canBeHandledByLightMethods(descriptor: DeclarationDescriptor?): Boolean {
return when {
hasModifier(KtTokens.INTERNAL_KEYWORD) -> false
this !is KtNamedFunction -> true
descriptor !is FunctionDescriptor -> true
descriptor is ConstructorDescriptor -> !descriptor.constructedClass.isInline
else -> !descriptor.hasInlineClassParameters()
}
}
private fun FunctionDescriptor.hasInlineClassParameters(): Boolean {
@@ -0,0 +1,7 @@
// PROBLEM: none
inline class InlineClass(val x: Int) {
<caret>constructor() : this(42)
}
val call = InlineClass()
@@ -6613,6 +6613,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
runTest("idea/testData/inspectionsLocal/unusedSymbol/inAnonymousRunWrapped.kt");
}
@TestMetadata("inlineClassConstructor.kt")
public void testInlineClassConstructor() throws Exception {
runTest("idea/testData/inspectionsLocal/unusedSymbol/inlineClassConstructor.kt");
}
@TestMetadata("inlineClassMemberFunction.kt")
public void testInlineClassMemberFunction() throws Exception {
runTest("idea/testData/inspectionsLocal/unusedSymbol/inlineClassMemberFunction.kt");