New J2K: Move equals operator conversion from post processing to AST conversion
This commit is contained in:
committed by
Ilya Kirillov
parent
70c700f07a
commit
fbcf2e1bcd
@@ -37,7 +37,6 @@ import org.jetbrains.kotlin.idea.core.replaced
|
|||||||
import org.jetbrains.kotlin.idea.core.setVisibility
|
import org.jetbrains.kotlin.idea.core.setVisibility
|
||||||
import org.jetbrains.kotlin.idea.inspections.*
|
import org.jetbrains.kotlin.idea.inspections.*
|
||||||
import org.jetbrains.kotlin.idea.inspections.branchedTransformations.IfThenToSafeAccessInspection
|
import org.jetbrains.kotlin.idea.inspections.branchedTransformations.IfThenToSafeAccessInspection
|
||||||
import org.jetbrains.kotlin.idea.inspections.conventionNameCalls.ReplaceCallWithBinaryOperatorInspection
|
|
||||||
import org.jetbrains.kotlin.idea.inspections.conventionNameCalls.ReplaceGetOrSetInspection
|
import org.jetbrains.kotlin.idea.inspections.conventionNameCalls.ReplaceGetOrSetInspection
|
||||||
import org.jetbrains.kotlin.idea.intentions.*
|
import org.jetbrains.kotlin.idea.intentions.*
|
||||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions.FoldIfToReturnAsymmetricallyIntention
|
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions.FoldIfToReturnAsymmetricallyIntention
|
||||||
@@ -138,7 +137,6 @@ object NewJ2KPostProcessingRegistrarImpl : J2KPostProcessingRegistrar {
|
|||||||
registerInspectionBasedProcessing(SimplifyAssertNotNullInspection()),
|
registerInspectionBasedProcessing(SimplifyAssertNotNullInspection()),
|
||||||
registerIntentionBasedProcessing(RemoveRedundantCallsOfConversionMethodsIntention()),
|
registerIntentionBasedProcessing(RemoveRedundantCallsOfConversionMethodsIntention()),
|
||||||
registerGeneralInspectionBasedProcessing(LiftReturnOrAssignmentInspection()),
|
registerGeneralInspectionBasedProcessing(LiftReturnOrAssignmentInspection()),
|
||||||
registerGeneralInspectionBasedProcessing(ReplaceCallWithBinaryOperatorInspection()),
|
|
||||||
registerGeneralInspectionBasedProcessing(MayBeConstantInspection()),
|
registerGeneralInspectionBasedProcessing(MayBeConstantInspection()),
|
||||||
registerIntentionBasedProcessing(RemoveEmptyPrimaryConstructorIntention()),
|
registerIntentionBasedProcessing(RemoveEmptyPrimaryConstructorIntention()),
|
||||||
registerDiagnosticBasedProcessing(Errors.PLATFORM_CLASS_MAPPED_TO_KOTLIN) { element: KtDotQualifiedExpression, diagnostic ->
|
registerDiagnosticBasedProcessing(Errors.PLATFORM_CLASS_MAPPED_TO_KOTLIN) { element: KtDotQualifiedExpression, diagnostic ->
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.j2k.conversions
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
||||||
|
import org.jetbrains.kotlin.j2k.ConversionContext
|
||||||
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
|
import org.jetbrains.kotlin.j2k.equalsExpression
|
||||||
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
|
import org.jetbrains.kotlin.j2k.tree.impl.*
|
||||||
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
|
|
||||||
|
class EqualsOperatorConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
||||||
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
|
if (element !is JKQualifiedExpression) return recurse(element)
|
||||||
|
if (element.receiver is JKSuperExpression) return recurse(element)
|
||||||
|
val selector = element.selector as? JKMethodCallExpression ?: return (element)
|
||||||
|
val argument = selector.arguments.expressions.singleOrNull() ?: return recurse(element)
|
||||||
|
if (selector.identifier.deepestFqName() == "java.lang.Object.equals") {
|
||||||
|
return recurse(
|
||||||
|
JKParenthesizedExpressionImpl(
|
||||||
|
equalsExpression(
|
||||||
|
element::receiver.detached(),
|
||||||
|
argument.detached(selector.arguments),
|
||||||
|
context.symbolProvider
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return recurse(element)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -394,4 +394,12 @@ private fun convertIntegerLiteral(element: JKLiteralExpression): JKKtLiteralExpr
|
|||||||
text,
|
text,
|
||||||
element.type
|
element.type
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun equalsExpression(left: JKExpression, right: JKExpression, symbolProvider: JKSymbolProvider) =
|
||||||
|
kotlinBinaryExpression(
|
||||||
|
left,
|
||||||
|
right,
|
||||||
|
KtTokens.EQEQ,
|
||||||
|
symbolProvider
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user