Intentions: Forbid conversion of vararg parameter to receiver

This commit is contained in:
Alexey Sedunov
2015-02-20 16:09:19 +03:00
parent 2af83c58c9
commit 8e2b0875c2
3 changed files with 15 additions and 0 deletions
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
public class ConvertParameterToReceiverIntention: JetSelfTargetingIntention<JetParameter>("convert.parameter.to.receiver.intention", javaClass()) {
override fun isApplicableTo(element: JetParameter): Boolean {
if (element.isVarArg()) return false
val function = element.getStrictParentOfType<JetNamedFunction>() ?: return false
return function.getValueParameterList() == element.getParent() && function.getReceiverTypeReference() == null
}
@@ -0,0 +1,8 @@
// IS_APPLICABLE: false
fun foo(<caret>vararg s: String): Boolean = true
fun test() {
foo()
foo("1")
foo("1", "2")
}
@@ -2973,6 +2973,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName);
}
@TestMetadata("vararg.kt")
public void testVararg() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/vararg.kt");
doTest(fileName);
}
@TestMetadata("withExtensionReceiver.kt")
public void testWithExtensionReceiver() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/withExtensionReceiver.kt");