diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties
index e9a61a2311a..28085aed503 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties
@@ -344,6 +344,10 @@ convert.function.to.property.intention=Convert function to property
convert.function.to.property.intention.family=Convert Function to Property
convert.property.to.function.intention=Convert property to function
convert.property.to.function.intention.family=Convert Property to Function
+convert.receiver.to.parameter.intention=Convert receiver to parameter
+convert.receiver.to.parameter.intention.family=Convert Receiver to Parameter
+convert.parameter.to.receiver.intention=Convert parameter to receiver
+convert.parameter.to.receiver.intention.family=Convert Parameter to Receiver
property.is.implemented.too.many=Has implementations
property.is.overridden.too.many=Is overridden in subclasses
diff --git a/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/after.kt.template b/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/after.kt.template
new file mode 100644
index 00000000000..efb340ac830
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/after.kt.template
@@ -0,0 +1,7 @@
+fun String.foo(n: Int): Int {
+ return length() - n
+}
+
+fun test() {
+ "1".foo(2)
+}
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/before.kt.template b/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/before.kt.template
new file mode 100644
index 00000000000..649473588c3
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/before.kt.template
@@ -0,0 +1,7 @@
+fun foo(s: String, n: Int): Int {
+ return s.length() - n
+}
+
+fun test() {
+ foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/description.html b/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/description.html
new file mode 100644
index 00000000000..c56a035e578
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertParameterToReceiverIntention/description.html
@@ -0,0 +1,5 @@
+
+
+This intention converts function parameter to extension receiver.
+
+
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/after.kt.template b/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/after.kt.template
new file mode 100644
index 00000000000..649473588c3
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/after.kt.template
@@ -0,0 +1,7 @@
+fun foo(s: String, n: Int): Int {
+ return s.length() - n
+}
+
+fun test() {
+ foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/before.kt.template b/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/before.kt.template
new file mode 100644
index 00000000000..efb340ac830
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/before.kt.template
@@ -0,0 +1,7 @@
+fun String.foo(n: Int): Int {
+ return length() - n
+}
+
+fun test() {
+ "1".foo(2)
+}
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/description.html b/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/description.html
new file mode 100644
index 00000000000..85ab498b0b7
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertReceiverToParameterIntention/description.html
@@ -0,0 +1,5 @@
+
+
+This intention converts extension function receiver to its parameter.
+
+
\ No newline at end of file
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 1c5ff96787d..a969b4d9b82 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -795,12 +795,22 @@
- org.jetbrains.kotlin.idea.intentions.ConvertFunctionToPropertyIntention
+ org.jetbrains.kotlin.idea.intentions.ConvertFunctionToPropertyIntention
+ Kotlin
+
+
+
+ org.jetbrains.kotlin.idea.intentions.ConvertPropertyToFunctionIntention
+ Kotlin
+
+
+
+ org.jetbrains.kotlin.idea.intentions.ConvertReceiverToParameterIntention
Kotlin
- org.jetbrains.kotlin.idea.intentions.ConvertPropertyToFunctionIntention
+ org.jetbrains.kotlin.idea.intentions.ConvertParameterToReceiverIntention
Kotlin
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertParameterToReceiverIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertParameterToReceiverIntention.kt
new file mode 100644
index 00000000000..cabe7bd591f
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertParameterToReceiverIntention.kt
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2010-2015 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.idea.intentions
+
+import org.jetbrains.kotlin.psi.JetNamedFunction
+import com.intellij.openapi.editor.Editor
+import org.jetbrains.kotlin.idea.caches.resolve.analyze
+import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature
+import org.jetbrains.kotlin.resolve.BindingContext
+import org.jetbrains.kotlin.descriptors.FunctionDescriptor
+import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetChangeSignatureConfiguration
+import org.jetbrains.kotlin.psi.JetParameter
+import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
+import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor
+import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
+import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
+
+public class ConvertParameterToReceiverIntention: JetSelfTargetingIntention("convert.parameter.to.receiver.intention", javaClass()) {
+ override fun isApplicableTo(element: JetParameter): Boolean {
+ val function = element.getStrictParentOfType() ?: return false
+ return function.getValueParameterList() == element.getParent() && function.getReceiverTypeReference() == null
+ }
+
+ private fun configureChangeSignature(parameterIndex: Int): JetChangeSignatureConfiguration {
+ return object: JetChangeSignatureConfiguration {
+ override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
+ return originalDescriptor.modify { receiver = originalDescriptor.getParameters()[parameterIndex] }
+ }
+ }
+ }
+
+ override fun applyTo(element: JetParameter, editor: Editor) {
+ val function = element.getStrictParentOfType() ?: return
+ val parameterIndex = function.getValueParameters().indexOf(element)
+ val context = function.analyze()
+ val descriptor = context[BindingContext.DECLARATION_TO_DESCRIPTOR, function] as? FunctionDescriptor ?: return
+ runChangeSignature(element.getProject(), descriptor, configureChangeSignature(parameterIndex), context, element, getText())
+ }
+}
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertReceiverToParameterIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertReceiverToParameterIntention.kt
new file mode 100644
index 00000000000..7fe69b29adf
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertReceiverToParameterIntention.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2010-2015 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.idea.intentions
+
+import org.jetbrains.kotlin.psi.JetNamedFunction
+import com.intellij.openapi.editor.Editor
+import org.jetbrains.kotlin.psi.JetTypeReference
+import org.jetbrains.kotlin.idea.caches.resolve.analyze
+import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature
+import org.jetbrains.kotlin.resolve.BindingContext
+import org.jetbrains.kotlin.descriptors.FunctionDescriptor
+import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetChangeSignatureConfiguration
+import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor
+import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
+
+public class ConvertReceiverToParameterIntention: JetSelfTargetingIntention("convert.receiver.to.parameter.intention", javaClass()) {
+ override fun isApplicableTo(element: JetTypeReference): Boolean {
+ return (element.getParent() as? JetNamedFunction)?.getReceiverTypeReference() == element
+ }
+
+ private fun configureChangeSignature(): JetChangeSignatureConfiguration {
+ return object: JetChangeSignatureConfiguration {
+ override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
+ return originalDescriptor.modify { receiver = null }
+ }
+ }
+ }
+
+ override fun applyTo(element: JetTypeReference, editor: Editor) {
+ val function = element.getParent() as? JetNamedFunction ?: return
+ val context = function.analyze()
+ val descriptor = context[BindingContext.DECLARATION_TO_DESCRIPTOR, function] as? FunctionDescriptor ?: return
+ runChangeSignature(element.getProject(), descriptor, configureChangeSignature(), context, element, getText())
+ }
+}
diff --git a/idea/testData/intentions/convertParameterToReceiver/.intention b/idea/testData/intentions/convertParameterToReceiver/.intention
new file mode 100644
index 00000000000..b235efdfa9c
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/.intention
@@ -0,0 +1 @@
+org.jetbrains.kotlin.idea.intentions.ConvertParameterToReceiverIntention
diff --git a/idea/testData/intentions/convertParameterToReceiver/classParameter.kt b/idea/testData/intentions/convertParameterToReceiver/classParameter.kt
new file mode 100644
index 00000000000..80d2482351b
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/classParameter.kt
@@ -0,0 +1,8 @@
+// IS_APPLICABLE: false
+class Foo(s: String, n: Int) {
+
+}
+
+fun test() {
+ Foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/lambdaParameter.kt b/idea/testData/intentions/convertParameterToReceiver/lambdaParameter.kt
new file mode 100644
index 00000000000..820d55976ee
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/lambdaParameter.kt
@@ -0,0 +1,7 @@
+// IS_APPLICABLE: false
+
+val foo = {(s: String, n: Int) -> s.length() - n/2 > 1 }
+
+fun test() {
+ foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/localFun.kt b/idea/testData/intentions/convertParameterToReceiver/localFun.kt
new file mode 100644
index 00000000000..ac59fbf3138
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/localFun.kt
@@ -0,0 +1,7 @@
+fun test() {
+ fun foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+ }
+
+ foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/localFun.kt.after b/idea/testData/intentions/convertParameterToReceiver/localFun.kt.after
new file mode 100644
index 00000000000..3c912f74b77
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/localFun.kt.after
@@ -0,0 +1,7 @@
+fun test() {
+ fun String.foo(n: Int): Boolean {
+ return length() - n/2 > 1
+ }
+
+ "1".foo(2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/memberFun.kt b/idea/testData/intentions/convertParameterToReceiver/memberFun.kt
new file mode 100644
index 00000000000..e88dfdf486c
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/memberFun.kt
@@ -0,0 +1,16 @@
+// WITH_RUNTIME
+class A {
+ fun foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+ }
+
+ fun test() {
+ foo("1", 2)
+ }
+}
+
+fun test() {
+ with(A()) {
+ foo("1", 2)
+ }
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/memberFun.kt.after b/idea/testData/intentions/convertParameterToReceiver/memberFun.kt.after
new file mode 100644
index 00000000000..c4834b73373
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/memberFun.kt.after
@@ -0,0 +1,16 @@
+// WITH_RUNTIME
+class A {
+ fun String.foo(n: Int): Boolean {
+ return length() - n/2 > 1
+ }
+
+ fun test() {
+ "1".foo(2)
+ }
+}
+
+fun test() {
+ with(A()) {
+ "1".foo(2)
+ }
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/noParameterUnderCaret.kt b/idea/testData/intentions/convertParameterToReceiver/noParameterUnderCaret.kt
new file mode 100644
index 00000000000..b067c5c9de5
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/noParameterUnderCaret.kt
@@ -0,0 +1,8 @@
+// IS_APPLICABLE: false
+fun foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+}
+
+fun test() {
+ foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/topLevelFun.kt b/idea/testData/intentions/convertParameterToReceiver/topLevelFun.kt
new file mode 100644
index 00000000000..a8fe21ca2c3
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/topLevelFun.kt
@@ -0,0 +1,7 @@
+fun foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+}
+
+fun test() {
+ foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/topLevelFun.kt.after b/idea/testData/intentions/convertParameterToReceiver/topLevelFun.kt.after
new file mode 100644
index 00000000000..76ee33f66b6
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/topLevelFun.kt.after
@@ -0,0 +1,7 @@
+fun String.foo(n: Int): Boolean {
+ return length() - n/2 > 1
+}
+
+fun test() {
+ "1".foo(2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertParameterToReceiver/withExtensionReceiver.kt b/idea/testData/intentions/convertParameterToReceiver/withExtensionReceiver.kt
new file mode 100644
index 00000000000..58e0cbfb09f
--- /dev/null
+++ b/idea/testData/intentions/convertParameterToReceiver/withExtensionReceiver.kt
@@ -0,0 +1,8 @@
+// IS_APPLICABLE: false
+fun Any.foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+}
+
+fun test() {
+ "0".foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertReceiverToParameter/.intention b/idea/testData/intentions/convertReceiverToParameter/.intention
new file mode 100644
index 00000000000..8610bd1747a
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/.intention
@@ -0,0 +1 @@
+org.jetbrains.kotlin.idea.intentions.ConvertReceiverToParameterIntention
diff --git a/idea/testData/intentions/convertReceiverToParameter/localFun.kt b/idea/testData/intentions/convertReceiverToParameter/localFun.kt
new file mode 100644
index 00000000000..76455bc1dbe
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/localFun.kt
@@ -0,0 +1,7 @@
+fun test() {
+ fun String.foo(n: Int): Boolean {
+ return length() - n/2 > 1
+ }
+
+ "1".foo(2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertReceiverToParameter/localFun.kt.after b/idea/testData/intentions/convertReceiverToParameter/localFun.kt.after
new file mode 100644
index 00000000000..a4a6689d831
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/localFun.kt.after
@@ -0,0 +1,7 @@
+fun test() {
+ fun foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+ }
+
+ foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertReceiverToParameter/memberFun.kt b/idea/testData/intentions/convertReceiverToParameter/memberFun.kt
new file mode 100644
index 00000000000..1878dfd71c4
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/memberFun.kt
@@ -0,0 +1,16 @@
+// WITH_RUNTIME
+class A {
+ fun String.foo(n: Int): Boolean {
+ return length() - n/2 > 1
+ }
+
+ fun test() {
+ "1".foo(2)
+ }
+}
+
+fun test() {
+ with(A()) {
+ "1".foo(2)
+ }
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertReceiverToParameter/memberFun.kt.after b/idea/testData/intentions/convertReceiverToParameter/memberFun.kt.after
new file mode 100644
index 00000000000..da4e19acea5
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/memberFun.kt.after
@@ -0,0 +1,16 @@
+// WITH_RUNTIME
+class A {
+ fun foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+ }
+
+ fun test() {
+ foo("1", 2)
+ }
+}
+
+fun test() {
+ with(A()) {
+ foo("1", 2)
+ }
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertReceiverToParameter/noReceiverUnderCaret.kt b/idea/testData/intentions/convertReceiverToParameter/noReceiverUnderCaret.kt
new file mode 100644
index 00000000000..6c4040d0ff8
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/noReceiverUnderCaret.kt
@@ -0,0 +1,4 @@
+// IS_APPLICABLE: false
+fun String.foo(n: Int): Boolean {
+ return length() - n/2 > 1
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertReceiverToParameter/notExtension.kt b/idea/testData/intentions/convertReceiverToParameter/notExtension.kt
new file mode 100644
index 00000000000..1a51f8fdf44
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/notExtension.kt
@@ -0,0 +1,4 @@
+// IS_APPLICABLE: false
+fun foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertReceiverToParameter/topLevelFun.kt b/idea/testData/intentions/convertReceiverToParameter/topLevelFun.kt
new file mode 100644
index 00000000000..5ae8846e73c
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/topLevelFun.kt
@@ -0,0 +1,7 @@
+fun String.foo(n: Int): Boolean {
+ return length() - n/2 > 1
+}
+
+fun test() {
+ "1".foo(2)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertReceiverToParameter/topLevelFun.kt.after b/idea/testData/intentions/convertReceiverToParameter/topLevelFun.kt.after
new file mode 100644
index 00000000000..ad8a5f2bcf4
--- /dev/null
+++ b/idea/testData/intentions/convertReceiverToParameter/topLevelFun.kt.after
@@ -0,0 +1,7 @@
+fun foo(s: String, n: Int): Boolean {
+ return s.length() - n/2 > 1
+}
+
+fun test() {
+ foo("1", 2)
+}
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
index 14f90fc40ea..82880440263 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
@@ -30,7 +30,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all")
@TestMetadata("idea/testData/intentions")
@TestDataPath("$PROJECT_ROOT")
-@InnerTestClasses({IntentionTestGenerated.AddBraces.class, IntentionTestGenerated.AttributeCallReplacements.class, IntentionTestGenerated.Branched.class, IntentionTestGenerated.ConvertAssertToIf.class, IntentionTestGenerated.ConvertFunctionToProperty.class, IntentionTestGenerated.ConvertIfToAssert.class, IntentionTestGenerated.ConvertNegatedBooleanSequence.class, IntentionTestGenerated.ConvertNegatedExpressionWithDemorgansLaw.class, IntentionTestGenerated.ConvertPropertyToFunction.class, IntentionTestGenerated.ConvertToBlockBody.class, IntentionTestGenerated.ConvertToConcatenatedStringIntention.class, IntentionTestGenerated.ConvertToExpressionBody.class, IntentionTestGenerated.ConvertToForEachFunctionCall.class, IntentionTestGenerated.ConvertToForEachLoop.class, IntentionTestGenerated.ConvertToStringTemplateIntention.class, IntentionTestGenerated.Declarations.class, IntentionTestGenerated.InsertCurlyBracesToTemplate.class, IntentionTestGenerated.InsertExplicitTypeArguments.class, IntentionTestGenerated.InvertIfCondition.class, IntentionTestGenerated.MakeTypeExplicitInLambda.class, IntentionTestGenerated.MakeTypeImplicitInLambda.class, IntentionTestGenerated.MoveLambdaInsideParentheses.class, IntentionTestGenerated.MoveLambdaOutsideParentheses.class, IntentionTestGenerated.OperatorToFunction.class, IntentionTestGenerated.ReconstructedType.class, IntentionTestGenerated.RemoveBraces.class, IntentionTestGenerated.RemoveCurlyBracesFromTemplate.class, IntentionTestGenerated.RemoveExplicitTypeArguments.class, IntentionTestGenerated.RemoveUnnecessaryParentheses.class, IntentionTestGenerated.ReplaceExplicitFunctionLiteralParamWithIt.class, IntentionTestGenerated.ReplaceItWithExplicitFunctionLiteralParam.class, IntentionTestGenerated.ReplaceWithDotQualifiedMethodCall.class, IntentionTestGenerated.ReplaceWithInfixFunctionCall.class, IntentionTestGenerated.ReplaceWithOperatorAssign.class, IntentionTestGenerated.ReplaceWithTraditionalAssignment.class, IntentionTestGenerated.SimplifyBooleanWithConstants.class, IntentionTestGenerated.SimplifyNegatedBinaryExpressionIntention.class, IntentionTestGenerated.SpecifyType.class, IntentionTestGenerated.SplitIf.class, IntentionTestGenerated.SwapBinaryExpression.class})
+@InnerTestClasses({IntentionTestGenerated.AddBraces.class, IntentionTestGenerated.AttributeCallReplacements.class, IntentionTestGenerated.Branched.class, IntentionTestGenerated.ConvertAssertToIf.class, IntentionTestGenerated.ConvertFunctionToProperty.class, IntentionTestGenerated.ConvertIfToAssert.class, IntentionTestGenerated.ConvertNegatedBooleanSequence.class, IntentionTestGenerated.ConvertNegatedExpressionWithDemorgansLaw.class, IntentionTestGenerated.ConvertParameterToReceiver.class, IntentionTestGenerated.ConvertPropertyToFunction.class, IntentionTestGenerated.ConvertReceiverToParameter.class, IntentionTestGenerated.ConvertToBlockBody.class, IntentionTestGenerated.ConvertToConcatenatedStringIntention.class, IntentionTestGenerated.ConvertToExpressionBody.class, IntentionTestGenerated.ConvertToForEachFunctionCall.class, IntentionTestGenerated.ConvertToForEachLoop.class, IntentionTestGenerated.ConvertToStringTemplateIntention.class, IntentionTestGenerated.Declarations.class, IntentionTestGenerated.InsertCurlyBracesToTemplate.class, IntentionTestGenerated.InsertExplicitTypeArguments.class, IntentionTestGenerated.InvertIfCondition.class, IntentionTestGenerated.MakeTypeExplicitInLambda.class, IntentionTestGenerated.MakeTypeImplicitInLambda.class, IntentionTestGenerated.MoveLambdaInsideParentheses.class, IntentionTestGenerated.MoveLambdaOutsideParentheses.class, IntentionTestGenerated.OperatorToFunction.class, IntentionTestGenerated.ReconstructedType.class, IntentionTestGenerated.RemoveBraces.class, IntentionTestGenerated.RemoveCurlyBracesFromTemplate.class, IntentionTestGenerated.RemoveExplicitTypeArguments.class, IntentionTestGenerated.RemoveUnnecessaryParentheses.class, IntentionTestGenerated.ReplaceExplicitFunctionLiteralParamWithIt.class, IntentionTestGenerated.ReplaceItWithExplicitFunctionLiteralParam.class, IntentionTestGenerated.ReplaceWithDotQualifiedMethodCall.class, IntentionTestGenerated.ReplaceWithInfixFunctionCall.class, IntentionTestGenerated.ReplaceWithOperatorAssign.class, IntentionTestGenerated.ReplaceWithTraditionalAssignment.class, IntentionTestGenerated.SimplifyBooleanWithConstants.class, IntentionTestGenerated.SimplifyNegatedBinaryExpressionIntention.class, IntentionTestGenerated.SpecifyType.class, IntentionTestGenerated.SplitIf.class, IntentionTestGenerated.SwapBinaryExpression.class})
@RunWith(JUnit3RunnerWithInners.class)
public class IntentionTestGenerated extends AbstractIntentionTest {
public void testAllFilesPresentInIntentions() throws Exception {
@@ -2929,6 +2929,57 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
}
}
+ @TestMetadata("idea/testData/intentions/convertParameterToReceiver")
+ @TestDataPath("$PROJECT_ROOT")
+ @RunWith(JUnit3RunnerWithInners.class)
+ public static class ConvertParameterToReceiver extends AbstractIntentionTest {
+ public void testAllFilesPresentInConvertParameterToReceiver() throws Exception {
+ JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/convertParameterToReceiver"), Pattern.compile("^(.+)\\.kt$"), true);
+ }
+
+ @TestMetadata("classParameter.kt")
+ public void testClassParameter() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/classParameter.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("lambdaParameter.kt")
+ public void testLambdaParameter() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/lambdaParameter.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("localFun.kt")
+ public void testLocalFun() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/localFun.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("memberFun.kt")
+ public void testMemberFun() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/memberFun.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("noParameterUnderCaret.kt")
+ public void testNoParameterUnderCaret() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/noParameterUnderCaret.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("topLevelFun.kt")
+ public void testTopLevelFun() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/topLevelFun.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("withExtensionReceiver.kt")
+ public void testWithExtensionReceiver() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertParameterToReceiver/withExtensionReceiver.kt");
+ doTest(fileName);
+ }
+ }
+
@TestMetadata("idea/testData/intentions/convertPropertyToFunction")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@@ -3022,6 +3073,45 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
}
}
+ @TestMetadata("idea/testData/intentions/convertReceiverToParameter")
+ @TestDataPath("$PROJECT_ROOT")
+ @RunWith(JUnit3RunnerWithInners.class)
+ public static class ConvertReceiverToParameter extends AbstractIntentionTest {
+ public void testAllFilesPresentInConvertReceiverToParameter() throws Exception {
+ JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/convertReceiverToParameter"), Pattern.compile("^(.+)\\.kt$"), true);
+ }
+
+ @TestMetadata("localFun.kt")
+ public void testLocalFun() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertReceiverToParameter/localFun.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("memberFun.kt")
+ public void testMemberFun() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertReceiverToParameter/memberFun.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("noReceiverUnderCaret.kt")
+ public void testNoReceiverUnderCaret() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertReceiverToParameter/noReceiverUnderCaret.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("notExtension.kt")
+ public void testNotExtension() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertReceiverToParameter/notExtension.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("topLevelFun.kt")
+ public void testTopLevelFun() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertReceiverToParameter/topLevelFun.kt");
+ doTest(fileName);
+ }
+ }
+
@TestMetadata("idea/testData/intentions/convertToBlockBody")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)