diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index d8f656fc65a..93e213e9882 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -463,7 +463,8 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { } if (callableInfo is FunctionInfo) { val operatorModifier = if (callableInfo.isOperator) "operator " else "" - psiFactory.createFunction("${modifiers}${operatorModifier}fun<> $header $body") + val infixModifier = if (callableInfo.isInfix) "infix " else "" + psiFactory.createFunction("$modifiers$infixModifier${operatorModifier}fun<> $header $body") } else { psiFactory.createSecondaryConstructor("${modifiers}constructor$paramList $body") diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt index c3e1bc1851d..10213b5f78c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt @@ -146,7 +146,8 @@ class FunctionInfo(name: String, possibleContainers: List = Collections.emptyList(), override val parameterInfos: List = Collections.emptyList(), typeParameterInfos: List = Collections.emptyList(), - val isOperator: Boolean = false + val isOperator: Boolean = false, + val isInfix: Boolean = false ) : CallableInfo(name, receiverTypeInfo, returnTypeInfo, possibleContainers, typeParameterInfos) { override val kind: CallableKind get() = CallableKind.FUNCTION } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateBinaryOperationActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateBinaryOperationActionFactory.kt index 7a5e440e11e..7ba22e27c0f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateBinaryOperationActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateBinaryOperationActionFactory.kt @@ -55,6 +55,7 @@ public object CreateBinaryOperationActionFactory: CreateCallableMemberFromUsageF } val parameters = Collections.singletonList(ParameterInfo(TypeInfo(argumentExpr, Variance.IN_VARIANCE))) return FunctionInfo(operationName, receiverType, returnType, parameterInfos = parameters, - isOperator = token != KtTokens.IDENTIFIER) + isOperator = token != KtTokens.IDENTIFIER, + isInfix = true) } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/customOperationOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/customOperationOnUserType.kt.after index 40fa26e2d2a..dc372ba6573 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/customOperationOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/customOperationOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'foo'" "true" class A(val n: T) { - fun foo(t: T): A { + infix fun foo(t: T): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/greaterOrEqualOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/greaterOrEqualOnUserType.kt.after index fedc6ba8e0f..b41076df9f4 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/greaterOrEqualOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/greaterOrEqualOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'compareTo'" "true" class A(val n: T) { - operator fun compareTo(t: T): Int { + infix operator fun compareTo(t: T): Int { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/inOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/inOnUserType.kt.after index 5419c988b61..a1bf1065bcd 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/inOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/inOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'contains'" "true" class A(val n: T) { - operator fun contains(t: T): Boolean { + infix operator fun contains(t: T): Boolean { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/lessOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/lessOnUserType.kt.after index fe242f192fa..b2e396aa10f 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/lessOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/lessOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'compareTo'" "true" class A(val n: T) { - operator fun compareTo(t: T): Int { + infix operator fun compareTo(t: T): Int { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/notInOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/notInOnUserType.kt.after index 89efc24489e..7105cac3dfe 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/notInOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/notInOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'contains'" "true" class A(val n: T) { - operator fun contains(t: T): Boolean { + infix operator fun contains(t: T): Boolean { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusAssignOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusAssignOnUserType.kt.after index 7aaaf04a434..ce83ac5a910 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusAssignOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusAssignOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'plusAssign'" "true" class A(val n: T) { - operator fun plusAssign(t: T) { + infix operator fun plusAssign(t: T) { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusExtraArgs.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusExtraArgs.kt.after index fea4dc07535..632014c66d1 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusExtraArgs.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusExtraArgs.kt.after @@ -3,7 +3,7 @@ class A(val n: T) { operator fun unaryPlus(): A = throw Exception() - operator fun plus(t: T): A { + infix operator fun plus(t: T): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusForAssignmentOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusForAssignmentOnUserType.kt.after index d80b5a3d605..a44675acfb6 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusForAssignmentOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusForAssignmentOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'plus'" "true" class A(val n: T) { - operator fun plus(t: T): A { + infix operator fun plus(t: T): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusMissingArgs.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusMissingArgs.kt.after index 048064799bf..fa1aa908b34 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusMissingArgs.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusMissingArgs.kt.after @@ -3,7 +3,7 @@ class A(val n: T) { fun plus(i: Int, s: String): A = throw Exception() - operator fun plus(t: T): A { + infix operator fun plus(t: T): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnLibType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnLibType.kt.after index b8cb7708b8d..f9193e54dd4 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnLibType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnLibType.kt.after @@ -6,6 +6,6 @@ fun test() { val a: A = 2 + A(1) } -operator fun Int.plus(a: A): A { +infix operator fun Int.plus(a: A): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnUserType.kt.after index 9ccd6a7d674..1cc7258a9eb 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'plus'" "true" class A(val n: T) { - operator fun plus(t: T): A { + infix operator fun plus(t: T): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnUserTypeWithTypeParams.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnUserTypeWithTypeParams.kt.after index 9b629ea7fd2..df90572e063 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnUserTypeWithTypeParams.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/plusOnUserTypeWithTypeParams.kt.after @@ -1,7 +1,7 @@ // "Create member function 'plus'" "true" class A(val n: T) { - operator fun plus(i: Int): A { + infix operator fun plus(i: Int): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/quotedName.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/quotedName.kt.after index ff0afe7ad79..21b79767789 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/quotedName.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/quotedName.kt.after @@ -3,6 +3,6 @@ fun test() { val t: Int = 1 `!u00A0` 2 } -fun Int.`!u00A0`(i: Int): Int { +infix fun Int.`!u00A0`(i: Int): Int { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenInOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenInOnUserType.kt.after index 7621d07c5dc..e4946707d39 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenInOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenInOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'contains'" "true" class A(val n: T) { - operator fun contains(t: T): Boolean { + infix operator fun contains(t: T): Boolean { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenNotInOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenNotInOnUserType.kt.after index 09284e40dd0..0ec49c1ccfe 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenNotInOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenNotInOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'contains'" "true" class A(val n: T) { - operator fun contains(t: T): Boolean { + infix operator fun contains(t: T): Boolean { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } }