Unused symbol: handle functions with inline class parameters correctly

#KT-27357 Fixed
This commit is contained in:
Mikhail Glukhikh
2018-10-18 16:34:06 +03:00
parent 0678a56ca4
commit a5e508a083
7 changed files with 71 additions and 1 deletions
@@ -0,0 +1,6 @@
inline class InlineClass(val x: Int)
// Unused
fun foo(arg: InlineClass) {
arg.x.hashCode()
}
@@ -78,4 +78,13 @@
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused symbol</problem_class>
<description>Constructor is never used</description>
</problem>
<problem>
<file>functionWithInlineClassParam.kt</file>
<line>4</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/functionWithInlineClassParam.kt" />
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused symbol</problem_class>
<description>Function &quot;foo&quot; is never used</description>
</problem>
</problems>
@@ -0,0 +1,7 @@
// PROBLEM: none
inline class InlineClass(val x: Int)
fun <caret>takeInline(inlineClass: InlineClass) = 1
val call = takeInline(InlineClass(1))
@@ -0,0 +1,7 @@
// PROBLEM: none
inline class InlineClass(val x: Int)
fun InlineClass.<caret>takeInline() = 1
val call = InlineClass(1).takeInline()
@@ -0,0 +1,7 @@
// PROBLEM: none
inline class InlineClass(val x: Int) {
fun <caret>takeInline() = 1
}
val call = InlineClass(1).takeInline()