diff --git a/core/descriptors/src/org/jetbrains/kotlin/util/OperatorChecker.kt b/core/descriptors/src/org/jetbrains/kotlin/util/OperatorChecker.kt index 5bcba37dd16..aa1070e8604 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/util/OperatorChecker.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/util/OperatorChecker.kt @@ -26,29 +26,30 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.descriptorUtil.hasDefaultValue import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension import org.jetbrains.kotlin.resolve.descriptorUtil.module -import org.jetbrains.kotlin.types.typeUtil.* -import org.jetbrains.kotlin.util.OperatorNameConventions.GET -import org.jetbrains.kotlin.util.OperatorNameConventions.SET -import org.jetbrains.kotlin.util.OperatorNameConventions.INVOKE -import org.jetbrains.kotlin.util.OperatorNameConventions.CONTAINS -import org.jetbrains.kotlin.util.OperatorNameConventions.ITERATOR -import org.jetbrains.kotlin.util.OperatorNameConventions.NEXT -import org.jetbrains.kotlin.util.OperatorNameConventions.HAS_NEXT -import org.jetbrains.kotlin.util.OperatorNameConventions.EQUALS -import org.jetbrains.kotlin.util.OperatorNameConventions.COMPARE_TO -import org.jetbrains.kotlin.util.OperatorNameConventions.BINARY_OPERATION_NAMES +import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf +import org.jetbrains.kotlin.types.typeUtil.makeNotNullable import org.jetbrains.kotlin.util.OperatorNameConventions.ASSIGNMENT_OPERATIONS +import org.jetbrains.kotlin.util.OperatorNameConventions.BINARY_OPERATION_NAMES +import org.jetbrains.kotlin.util.OperatorNameConventions.COMPARE_TO import org.jetbrains.kotlin.util.OperatorNameConventions.COMPONENT_REGEX -import org.jetbrains.kotlin.util.OperatorNameConventions.PLUS -import org.jetbrains.kotlin.util.OperatorNameConventions.MINUS -import org.jetbrains.kotlin.util.OperatorNameConventions.RANGE_TO -import org.jetbrains.kotlin.util.OperatorNameConventions.UNARY_PLUS -import org.jetbrains.kotlin.util.OperatorNameConventions.UNARY_MINUS -import org.jetbrains.kotlin.util.OperatorNameConventions.NOT -import org.jetbrains.kotlin.util.OperatorNameConventions.INC +import org.jetbrains.kotlin.util.OperatorNameConventions.CONTAINS import org.jetbrains.kotlin.util.OperatorNameConventions.DEC +import org.jetbrains.kotlin.util.OperatorNameConventions.EQUALS +import org.jetbrains.kotlin.util.OperatorNameConventions.GET import org.jetbrains.kotlin.util.OperatorNameConventions.GET_VALUE +import org.jetbrains.kotlin.util.OperatorNameConventions.HAS_NEXT +import org.jetbrains.kotlin.util.OperatorNameConventions.INC +import org.jetbrains.kotlin.util.OperatorNameConventions.INVOKE +import org.jetbrains.kotlin.util.OperatorNameConventions.ITERATOR +import org.jetbrains.kotlin.util.OperatorNameConventions.MINUS +import org.jetbrains.kotlin.util.OperatorNameConventions.NEXT +import org.jetbrains.kotlin.util.OperatorNameConventions.NOT +import org.jetbrains.kotlin.util.OperatorNameConventions.PLUS +import org.jetbrains.kotlin.util.OperatorNameConventions.RANGE_TO +import org.jetbrains.kotlin.util.OperatorNameConventions.SET import org.jetbrains.kotlin.util.OperatorNameConventions.SET_VALUE +import org.jetbrains.kotlin.util.OperatorNameConventions.UNARY_MINUS +import org.jetbrains.kotlin.util.OperatorNameConventions.UNARY_PLUS object OperatorChecks { fun canBeOperator(functionDescriptor: FunctionDescriptor): Boolean { @@ -127,4 +128,6 @@ object OperatorChecks { private val FunctionDescriptor.noDefaultsAndVarargs: Boolean get() = valueParameters.all { !it.hasDefaultValue() && it.varargElementType == null } -} \ No newline at end of file +} + +fun FunctionDescriptor.isValidOperator() = isOperator && OperatorChecks.canBeOperator(this) \ No newline at end of file diff --git a/idea/resources/inspectionDescriptions/ReplaceGetOrSet.html b/idea/resources/inspectionDescriptions/ReplaceGetOrSet.html index 4dae55e30fa..23d7d9f8698 100644 --- a/idea/resources/inspectionDescriptions/ReplaceGetOrSet.html +++ b/idea/resources/inspectionDescriptions/ReplaceGetOrSet.html @@ -1,5 +1,5 @@
-This inspection reports any explicit calls of 'get' or 'set' functions which can be replaced by indexing operator [] +This inspection reports any explicit calls ofget or set functions which can be replaced by indexing operator []
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetOrSetIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetOrSetIntention.kt
index 9b8fbfceca3..c2379cc03da 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetOrSetIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetOrSetIntention.kt
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.util.OperatorNameConventions
+import org.jetbrains.kotlin.util.isValidOperator
public class ReplaceGetOrSetInspection : IntentionBasedInspection