diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/OperatorModifierInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/OperatorModifierInspection.kt index 450649871d3..f47271a413a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/OperatorModifierInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/OperatorModifierInspection.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.psi.JetModifierListOwner import org.jetbrains.kotlin.psi.JetNamedFunction import org.jetbrains.kotlin.psi.JetVisitorVoid import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType +import org.jetbrains.kotlin.resolve.dataClassUtils.isComponentLike import org.jetbrains.kotlin.types.expressions.OperatorConventions public class OperatorModifierInspection : AbstractKotlinInspection(), CleanupLocalInspectionTool { @@ -41,25 +42,27 @@ public class OperatorModifierInspection : AbstractKotlinInspection(), CleanupLoc } private fun JetNamedFunction.isOperator(): Boolean { + val name = nameAsName ?: return false val arity = valueParameters.size() if (arity == 0 && - (nameAsName in OperatorConventions.UNARY_OPERATION_NAMES.values() || - nameAsName == OperatorConventions.ITERATOR)) { + (name in OperatorConventions.UNARY_OPERATION_NAMES.values() || + name == OperatorConventions.ITERATOR || + isComponentLike(name))) { return true } - if (arity == 1 && (nameAsName in OperatorConventions.BINARY_OPERATION_NAMES.values() || - nameAsName in OperatorConventions.ASSIGNMENT_OPERATIONS.values () || - nameAsName == OperatorConventions.CONTAINS || - nameAsName == OperatorConventions.COMPARE_TO)) { + if (arity == 1 && (name in OperatorConventions.BINARY_OPERATION_NAMES.values() || + name in OperatorConventions.ASSIGNMENT_OPERATIONS.values () || + name == OperatorConventions.CONTAINS || + name == OperatorConventions.COMPARE_TO)) { return true } - if (nameAsName == OperatorConventions.INVOKE) { + if (name == OperatorConventions.INVOKE) { return true } - if (arity >= 1 && nameAsName == OperatorConventions.GET) { + if (arity >= 1 && name == OperatorConventions.GET) { return true } - if (arity >= 2 && nameAsName == OperatorConventions.SET) { + if (arity >= 2 && name == OperatorConventions.SET) { return true } return false 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 25a9f406c35..8d12189e7dd 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 @@ -467,8 +467,9 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { containingElement is JetClass && containingElement.isInterface() && !config.isExtension -> "" else -> "{}" } - if (callableInfo.kind == CallableKind.FUNCTION) { - psiFactory.createFunction("${modifiers}fun<> $header $body") + if (callableInfo is FunctionInfo) { + val operatorModifier = if (callableInfo.isOperator) "operator " else "" + psiFactory.createFunction("${modifiers}${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 2c6809f95a6..c61780f73b8 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 @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.typeUtil.makeNotNullable import org.jetbrains.kotlin.types.typeUtil.supertypes -import java.util.Collections +import java.util.* /** * Represents a concrete type or a set of types yet to be inferred from an expression. @@ -143,7 +143,8 @@ class FunctionInfo(name: String, returnTypeInfo: TypeInfo, possibleContainers: List = Collections.emptyList(), override val parameterInfos: List = Collections.emptyList(), - typeParameterInfos: List = Collections.emptyList() + typeParameterInfos: List = Collections.emptyList(), + val isOperator: 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 54e14ac077b..939943be162 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 @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.psi.JetBinaryExpression import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.expressions.OperatorConventions -import java.util.Collections +import java.util.* public object CreateBinaryOperationActionFactory: CreateCallableMemberFromUsageFactory() { override fun getElementOfInterest(diagnostic: Diagnostic): JetBinaryExpression? { @@ -54,6 +54,7 @@ public object CreateBinaryOperationActionFactory: CreateCallableMemberFromUsageF else -> TypeInfo(element, Variance.OUT_VARIANCE) } val parameters = Collections.singletonList(ParameterInfo(TypeInfo(argumentExpr, Variance.IN_VARIANCE))) - return FunctionInfo(operationName, receiverType, returnType, Collections.emptyList(), parameters) + return FunctionInfo(operationName, receiverType, returnType, parameterInfos = parameters, + isOperator = token != JetTokens.IDENTIFIER) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateComponentFunctionActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateComponentFunctionActionFactory.kt index ab6c3208115..61934c89fb8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateComponentFunctionActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateComponentFunctionActionFactory.kt @@ -49,6 +49,6 @@ object CreateComponentFunctionActionFactory : CreateCallableMemberFromUsageFacto val entry = entries[componentNumber] val returnType = TypeInfo(entry, Variance.OUT_VARIANCE) - return FunctionInfo(name.identifier, ownerType, returnType) + return FunctionInfo(name.identifier, ownerType, returnType, isOperator = true) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateInvokeFunctionActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateInvokeFunctionActionFactory.kt index 9913ddaed19..dd8b9abd607 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateInvokeFunctionActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateInvokeFunctionActionFactory.kt @@ -47,6 +47,6 @@ object CreateInvokeFunctionActionFactory : CreateCallableMemberFromUsageFactory< } val returnType = TypeInfo(element, Variance.OUT_VARIANCE) - return FunctionInfo(OperatorConventions.INVOKE.asString(), receiverType, returnType, emptyList(), parameters) + return FunctionInfo(OperatorConventions.INVOKE.asString(), receiverType, returnType, parameterInfos = parameters, isOperator = true) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt index 23582d098a2..38c15f8bef8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt @@ -30,7 +30,8 @@ import org.jetbrains.kotlin.psi.JetForExpression import org.jetbrains.kotlin.types.JetTypeImpl import org.jetbrains.kotlin.types.TypeProjectionImpl import org.jetbrains.kotlin.types.Variance -import java.util.Collections +import org.jetbrains.kotlin.types.expressions.OperatorConventions +import java.util.* object CreateIteratorFunctionActionFactory : CreateCallableMemberFromUsageFactory() { override fun getElementOfInterest(diagnostic: Diagnostic): JetForExpression? { @@ -56,6 +57,6 @@ object CreateIteratorFunctionActionFactory : CreateCallableMemberFromUsageFactor returnJetTypeArguments, returnJetType.memberScope) val returnType = TypeInfo(newReturnJetType, Variance.OUT_VARIANCE) - return FunctionInfo("iterator", iterableType, returnType) + return FunctionInfo(OperatorConventions.ITERATOR.asString(), iterableType, returnType, isOperator = true) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateUnaryOperationActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateUnaryOperationActionFactory.kt index 1bc1b84fbb7..febe102e4e6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateUnaryOperationActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateUnaryOperationActionFactory.kt @@ -39,6 +39,6 @@ public object CreateUnaryOperationActionFactory: CreateCallableMemberFromUsageFa val receiverType = TypeInfo(receiverExpr, Variance.IN_VARIANCE) val returnType = if (incDec) TypeInfo.ByReceiverType(Variance.OUT_VARIANCE) else TypeInfo(element, Variance.OUT_VARIANCE) - return FunctionInfo(operationName.asString(), receiverType, returnType) + return FunctionInfo(operationName.asString(), receiverType, returnType, isOperator = true) } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/greaterOrEqualOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/greaterOrEqualOnUserType.kt.after index cfda24639c6..fedc6ba8e0f 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) { - fun compareTo(t: T): Int { + 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 9fd49250920..5419c988b61 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) { - fun contains(t: T): Boolean { + 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 ed005d576f1..fe242f192fa 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) { - fun compareTo(t: T): Int { + 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 7c10e2cb431..89efc24489e 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) { - fun contains(t: T): Boolean { + 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 f42305cfb1a..7aaaf04a434 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) { - fun plusAssign(t: T) { + 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 0a98529c3ba..c9c1d52a8ca 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) { fun plus(): A = throw Exception() - fun plus(t: T): A { + 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 82cfdb7ddbb..d80b5a3d605 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) { - fun plus(t: T): A { + 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 213cb041d58..048064799bf 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() - fun plus(t: T): A { + 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 74166b2a503..b8cb7708b8d 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) } -fun Int.plus(a: A): A { +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 81d07aacdb7..9ccd6a7d674 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) { - fun plus(t: T): A { + 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 3ee0a79abd5..9b629ea7fd2 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) { - fun plus(i: Int): A { + 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/whenInOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/binaryOperations/whenInOnUserType.kt.after index a573b7ff4a8..7621d07c5dc 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) { - fun contains(t: T): Boolean { + 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 eb02d13b8ba..09284e40dd0 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) { - fun contains(t: T): Boolean { + 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/component/createComponentFromUsage1.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage1.kt.after index 33cd9890af7..64ec1b49dc6 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage1.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage1.kt.after @@ -3,7 +3,7 @@ class Foo { fun component1(): Int { return 0 } fun component2(): Int { return 0 } - fun component3(): Any { + operator fun component3(): Any { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage2.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage2.kt.after index a3eed3d407c..936d15b4238 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage2.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage2.kt.after @@ -3,7 +3,7 @@ class Foo { fun component1(): Int { return 0 } fun component2(): Int { return 0 } - fun component3(): String { + operator fun component3(): String { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage3.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage3.kt.after index 09ccf0bbba3..f4fbe37ee2e 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage3.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/component/createComponentFromUsage3.kt.after @@ -17,6 +17,6 @@ fun foo() { for ((i: Int, j: Int) in Foo()) { } } -fun Any.component2(): Int { +operator fun Any.component2(): Int { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnLibType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnLibType.kt.after index f0a5b0bea28..1bb62af108e 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnLibType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnLibType.kt.after @@ -6,6 +6,6 @@ fun test(): A { return 1(2, "2") } -fun Int.invoke(i: Int, s: String): A { +operator fun Int.invoke(i: Int, s: String): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnUserType.kt.after index 92100282ebe..d5035c23ea2 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'invoke'" "true" class A(val n: T) { - fun invoke(t: T, s: String): B { + operator fun invoke(t: T, s: String): B { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnUserTypeWithTypeParams.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnUserTypeWithTypeParams.kt.after index eddc7387094..c8cc9441f92 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnUserTypeWithTypeParams.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeOnUserTypeWithTypeParams.kt.after @@ -1,7 +1,7 @@ // "Create member function 'invoke'" "true" class A(val n: T) { - fun invoke(u: T, s: String): B { + operator fun invoke(u: T, s: String): B { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeWithExplicitParamNamesOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeWithExplicitParamNamesOnUserType.kt.after index e1a5d3e9adb..51dc478854d 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeWithExplicitParamNamesOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/invoke/invokeWithExplicitParamNamesOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'invoke'" "true" class A(val n: T) { - fun invoke(abc: T, ghi: A, def: String): A { + operator fun invoke(abc: T, ghi: A, def: String): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/iterator/createIteratorFromUsage1.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/iterator/createIteratorFromUsage1.kt.after index b213b592500..428bac8173f 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/iterator/createIteratorFromUsage1.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/iterator/createIteratorFromUsage1.kt.after @@ -1,6 +1,6 @@ // "Create member function 'iterator'" "true" class Foo { - fun iterator(): Iterator { + operator fun iterator(): Iterator { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/iterator/createIteratorFromUsage2.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/iterator/createIteratorFromUsage2.kt.after index 1400681f322..8a2d4be62ec 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/iterator/createIteratorFromUsage2.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/iterator/createIteratorFromUsage2.kt.after @@ -1,6 +1,6 @@ // "Create member function 'iterator'" "true" class Foo { - fun iterator(): Iterator { + operator fun iterator(): Iterator { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/incOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/incOnUserType.kt.after index a2c460cf097..e42c3cc1bab 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/incOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/incOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'inc'" "true" class A(val n: T) { - fun inc(): A { + operator fun inc(): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusMissingArgs.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusMissingArgs.kt.after index 6f3f0c68e4c..56839f80ed1 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusMissingArgs.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusMissingArgs.kt.after @@ -3,7 +3,7 @@ class A(val n: T) { fun minus(n: Int): A = throw Exception() - fun minus(): A { + operator fun minus(): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnLibType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnLibType.kt.after index d0e4f8caf91..ef9f3ab7ea6 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnLibType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnLibType.kt.after @@ -4,6 +4,6 @@ fun test() { val a = -false } -fun Boolean.minus(): Any { +operator fun Boolean.minus(): Any { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnUserType.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnUserType.kt.after index a7cf648c9cf..6c45679ef95 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnUserType.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnUserType.kt.after @@ -1,7 +1,7 @@ // "Create member function 'minus'" "true" class A(val n: T) { - fun minus(): Any { + operator fun minus(): Any { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } } diff --git a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnUserTypeWithTypeParams.kt.after b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnUserTypeWithTypeParams.kt.after index aebc4947a0a..7058a7c8731 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnUserTypeWithTypeParams.kt.after +++ b/idea/testData/quickfix/createFromUsage/createFunction/unaryOperations/minusOnUserTypeWithTypeParams.kt.after @@ -1,7 +1,7 @@ // "Create member function 'minus'" "true" class A(val n: T) { - fun minus(): A { + operator fun minus(): A { throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. } }