KT-39869 Fix review suggestions
- Review: https://jetbrains.team/p/kt/review/1349
This commit is contained in:
committed by
Roman Golyshev
parent
75de352ce2
commit
91fa5d38b3
@@ -1317,13 +1317,11 @@ obsolete.coroutine.usage.in.whole.fix.family.name=Fix experimental coroutines us
|
|||||||
obsolete.kotlin.js.packages.usage.in.whole.fix.family.name=Fix 'kotlin.dom' and 'kotlin.browser' packages usages in the project
|
obsolete.kotlin.js.packages.usage.in.whole.fix.family.name=Fix 'kotlin.dom' and 'kotlin.browser' packages usages in the project
|
||||||
apply.in.the.project.0=Apply in the project: {0}
|
apply.in.the.project.0=Apply in the project: {0}
|
||||||
obsolete.coroutine.usage.fix.family.name=Fix experimental coroutines usage
|
obsolete.coroutine.usage.fix.family.name=Fix experimental coroutines usage
|
||||||
obsolete.kotlin.browser.usage.fix.family.name=Fix 'kotlin.browser' package usage
|
obsolete.package.usage.fix.family.name=Fix ''{0}'' package usage
|
||||||
obsolete.kotlin.dom.usage.fix.family.name=Fix 'kotlin.dom' package usage
|
|
||||||
0.is.expected.to.be.used.since.kotlin.1.3=`{0}` is expected to be used since Kotlin 1.3
|
0.is.expected.to.be.used.since.kotlin.1.3=`{0}` is expected to be used since Kotlin 1.3
|
||||||
methods.are.absent.in.coroutines.class.since.1.3=Methods are absent in coroutines class since 1.3
|
methods.are.absent.in.coroutines.class.since.1.3=Methods are absent in coroutines class since 1.3
|
||||||
experimental.coroutines.usages.are.obsolete.since.1.3=Experimental coroutines usages are obsolete since 1.3
|
experimental.coroutines.usages.are.obsolete.since.1.3=Experimental coroutines usages are obsolete since 1.3
|
||||||
kotlin.browser.usages.are.obsolete.since.1.3='kotlin.browser' package usages are obsolete since 1.4
|
package.usages.are.obsolete.since.1.4=''{0}'' package usages are obsolete since 1.4
|
||||||
kotlin.dom.usages.are.obsolete.since.1.3='kotlin.dom' package usages are obsolete since 1.4
|
|
||||||
replace.substring.call.with.droplast.call=Replace 'substring' call with 'dropLast' call
|
replace.substring.call.with.droplast.call=Replace 'substring' call with 'dropLast' call
|
||||||
replace.substring.call.with.indexing.operation.call=Replace 'substring' call with indexing operation call
|
replace.substring.call.with.indexing.operation.call=Replace 'substring' call with indexing operation call
|
||||||
replace.substring.call.with.substringbefore.call=Replace 'substring' call with 'substringBefore' call
|
replace.substring.call.with.substringbefore.call=Replace 'substring' call with 'substringBefore' call
|
||||||
|
|||||||
+12
-15
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.psi.psiUtil.parents
|
|||||||
internal abstract class ObsoleteCodeMigrationInspection : AbstractKotlinInspection(), CleanupLocalInspectionTool, MigrationFix {
|
internal abstract class ObsoleteCodeMigrationInspection : AbstractKotlinInspection(), CleanupLocalInspectionTool, MigrationFix {
|
||||||
protected abstract val fromVersion: LanguageVersion
|
protected abstract val fromVersion: LanguageVersion
|
||||||
protected abstract val toVersion: LanguageVersion
|
protected abstract val toVersion: LanguageVersion
|
||||||
protected abstract val problems: List<ObsoleteCodeMigrationProblem>
|
protected abstract val problemReporters: List<ObsoleteCodeProblemReporter>
|
||||||
|
|
||||||
final override fun isApplicable(migrationInfo: MigrationInfo): Boolean {
|
final override fun isApplicable(migrationInfo: MigrationInfo): Boolean {
|
||||||
return migrationInfo.isLanguageVersionUpdate(fromVersion, toVersion)
|
return migrationInfo.isLanguageVersionUpdate(fromVersion, toVersion)
|
||||||
@@ -40,15 +40,13 @@ internal abstract class ObsoleteCodeMigrationInspection : AbstractKotlinInspecti
|
|||||||
|
|
||||||
final override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): KtVisitorVoid {
|
final override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): KtVisitorVoid {
|
||||||
return simpleNameExpressionVisitor(fun(simpleNameExpression) {
|
return simpleNameExpressionVisitor(fun(simpleNameExpression) {
|
||||||
run {
|
val versionIsSatisfied = simpleNameExpression.languageVersionSettings.languageVersion >= toVersion
|
||||||
val versionIsSatisfied = simpleNameExpression.languageVersionSettings.languageVersion >= toVersion
|
if (!versionIsSatisfied && !ApplicationManager.getApplication().isUnitTestMode) {
|
||||||
if (!versionIsSatisfied && !ApplicationManager.getApplication().isUnitTestMode) {
|
return
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (registeredProblem in problems) {
|
for (reporter in problemReporters) {
|
||||||
if (registeredProblem.report(holder, isOnTheFly, simpleNameExpression)) {
|
if (reporter.report(holder, isOnTheFly, simpleNameExpression)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,7 +54,7 @@ internal abstract class ObsoleteCodeMigrationInspection : AbstractKotlinInspecti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal interface ObsoleteCodeMigrationProblem {
|
internal interface ObsoleteCodeProblemReporter {
|
||||||
fun report(holder: ProblemsHolder, isOnTheFly: Boolean, simpleNameExpression: KtSimpleNameExpression): Boolean
|
fun report(holder: ProblemsHolder, isOnTheFly: Boolean, simpleNameExpression: KtSimpleNameExpression): Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,7 +107,7 @@ internal abstract class ObsoleteCodeInWholeProjectFix : LocalQuickFix {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* There should be a single fix class with the same family name, this way it can be executed for all found coroutines problems from UI.
|
* There should be a single fix class with the same family name, this way it can be executed for all found problems from UI.
|
||||||
*/
|
*/
|
||||||
internal abstract class ObsoleteCodeFixDelegateQuickFix(private val delegate: ObsoleteCodeFix) : LocalQuickFix {
|
internal abstract class ObsoleteCodeFixDelegateQuickFix(private val delegate: ObsoleteCodeFix) : LocalQuickFix {
|
||||||
final override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
final override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||||
@@ -117,7 +115,7 @@ internal abstract class ObsoleteCodeFixDelegateQuickFix(private val delegate: Ob
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal abstract class ObsoleteImportsUsage : ObsoleteCodeMigrationProblem {
|
internal abstract class ObsoleteImportsUsageReporter : ObsoleteCodeProblemReporter {
|
||||||
/**
|
/**
|
||||||
* Required to report the problem only on one psi element instead of the every single qualifier
|
* Required to report the problem only on one psi element instead of the every single qualifier
|
||||||
* in the import statement.
|
* in the import statement.
|
||||||
@@ -144,7 +142,7 @@ internal abstract class ObsoleteImportsUsage : ObsoleteCodeMigrationProblem {
|
|||||||
reportExpression,
|
reportExpression,
|
||||||
problemMessage(),
|
problemMessage(),
|
||||||
ProblemHighlightType.GENERIC_ERROR_OR_WARNING,
|
ProblemHighlightType.GENERIC_ERROR_OR_WARNING,
|
||||||
*fixesWithWholeProject(isOnTheFly, wrapFix(ObsoleteCoroutineImportFix()), wholeProjectFix)
|
*fixesWithWholeProject(isOnTheFly, wrapFix(ObsoleteImportFix()), wholeProjectFix)
|
||||||
)
|
)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
@@ -170,10 +168,9 @@ internal abstract class ObsoleteImportsUsage : ObsoleteCodeMigrationProblem {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class ObsoleteCoroutineImportFix : ObsoleteCodeFix {
|
private inner class ObsoleteImportFix : ObsoleteCodeFix {
|
||||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||||
val element = descriptor.psiElement
|
val simpleNameExpression = when (val element = descriptor.psiElement) {
|
||||||
val simpleNameExpression = when (element) {
|
|
||||||
is KtSimpleNameExpression -> element
|
is KtSimpleNameExpression -> element
|
||||||
is KtDotQualifiedExpression -> element.selectorExpression as? KtSimpleNameExpression
|
is KtDotQualifiedExpression -> element.selectorExpression as? KtSimpleNameExpression
|
||||||
else -> null
|
else -> null
|
||||||
|
|||||||
+11
-11
@@ -31,28 +31,28 @@ internal class ObsoleteExperimentalCoroutinesInspection : ObsoleteCodeMigrationI
|
|||||||
override val fromVersion: LanguageVersion = LanguageVersion.KOTLIN_1_2
|
override val fromVersion: LanguageVersion = LanguageVersion.KOTLIN_1_2
|
||||||
override val toVersion: LanguageVersion = LanguageVersion.KOTLIN_1_3
|
override val toVersion: LanguageVersion = LanguageVersion.KOTLIN_1_3
|
||||||
|
|
||||||
override val problems = listOf(
|
override val problemReporters = listOf(
|
||||||
ObsoleteTopLevelFunctionUsage(
|
ObsoleteTopLevelFunctionUsageReporter(
|
||||||
"buildSequence",
|
"buildSequence",
|
||||||
"kotlin.coroutines.experimental.buildSequence",
|
"kotlin.coroutines.experimental.buildSequence",
|
||||||
"kotlin.sequences.sequence"
|
"kotlin.sequences.sequence"
|
||||||
),
|
),
|
||||||
ObsoleteTopLevelFunctionUsage(
|
ObsoleteTopLevelFunctionUsageReporter(
|
||||||
"buildIterator",
|
"buildIterator",
|
||||||
"kotlin.coroutines.experimental.buildIterator",
|
"kotlin.coroutines.experimental.buildIterator",
|
||||||
"kotlin.sequences.iterator"
|
"kotlin.sequences.iterator"
|
||||||
),
|
),
|
||||||
ObsoleteExtensionFunctionUsage(
|
ObsoleteExtensionFunctionUsageReporter(
|
||||||
"resume",
|
"resume",
|
||||||
"kotlin.coroutines.experimental.Continuation.resume",
|
"kotlin.coroutines.experimental.Continuation.resume",
|
||||||
"kotlin.coroutines.resume"
|
"kotlin.coroutines.resume"
|
||||||
),
|
),
|
||||||
ObsoleteExtensionFunctionUsage(
|
ObsoleteExtensionFunctionUsageReporter(
|
||||||
"resumeWithException",
|
"resumeWithException",
|
||||||
"kotlin.coroutines.experimental.Continuation.resumeWithException",
|
"kotlin.coroutines.experimental.Continuation.resumeWithException",
|
||||||
"kotlin.coroutines.resumeWithException"
|
"kotlin.coroutines.resumeWithException"
|
||||||
),
|
),
|
||||||
ObsoleteCoroutinesImportsUsage
|
ObsoleteCoroutinesImportsUsageReporter
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,9 +91,9 @@ internal fun fixesWithWholeProject(isOnTheFly: Boolean, fix: LocalQuickFix, whol
|
|||||||
return arrayOf(fix, wholeProjectFix)
|
return arrayOf(fix, wholeProjectFix)
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ObsoleteTopLevelFunctionUsage(
|
private class ObsoleteTopLevelFunctionUsageReporter(
|
||||||
val textMarker: String, val oldFqName: String, val newFqName: String
|
val textMarker: String, val oldFqName: String, val newFqName: String
|
||||||
) : ObsoleteCodeMigrationProblem {
|
) : ObsoleteCodeProblemReporter {
|
||||||
override fun report(holder: ProblemsHolder, isOnTheFly: Boolean, simpleNameExpression: KtSimpleNameExpression): Boolean {
|
override fun report(holder: ProblemsHolder, isOnTheFly: Boolean, simpleNameExpression: KtSimpleNameExpression): Boolean {
|
||||||
if (simpleNameExpression.text != textMarker) return false
|
if (simpleNameExpression.text != textMarker) return false
|
||||||
|
|
||||||
@@ -127,9 +127,9 @@ private class ObsoleteTopLevelFunctionUsage(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ObsoleteExtensionFunctionUsage(
|
private class ObsoleteExtensionFunctionUsageReporter(
|
||||||
val textMarker: String, val oldFqName: String, val newFqName: String
|
val textMarker: String, val oldFqName: String, val newFqName: String
|
||||||
) : ObsoleteCodeMigrationProblem {
|
) : ObsoleteCodeProblemReporter {
|
||||||
override fun report(holder: ProblemsHolder, isOnTheFly: Boolean, simpleNameExpression: KtSimpleNameExpression): Boolean {
|
override fun report(holder: ProblemsHolder, isOnTheFly: Boolean, simpleNameExpression: KtSimpleNameExpression): Boolean {
|
||||||
if (simpleNameExpression.text != textMarker) return false
|
if (simpleNameExpression.text != textMarker) return false
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ private class ObsoleteExtensionFunctionUsage(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private object ObsoleteCoroutinesImportsUsage : ObsoleteImportsUsage() {
|
private object ObsoleteCoroutinesImportsUsageReporter : ObsoleteImportsUsageReporter() {
|
||||||
override val textMarker: String = "experimental"
|
override val textMarker: String = "experimental"
|
||||||
|
|
||||||
override val packageBindings: Map<String, String> = mapOf(
|
override val packageBindings: Map<String, String> = mapOf(
|
||||||
|
|||||||
+14
-11
@@ -13,9 +13,9 @@ internal class ObsoleteKotlinJsPackagesInspection : ObsoleteCodeMigrationInspect
|
|||||||
override val fromVersion: LanguageVersion = LanguageVersion.KOTLIN_1_3
|
override val fromVersion: LanguageVersion = LanguageVersion.KOTLIN_1_3
|
||||||
override val toVersion: LanguageVersion = LanguageVersion.KOTLIN_1_4
|
override val toVersion: LanguageVersion = LanguageVersion.KOTLIN_1_4
|
||||||
|
|
||||||
override val problems: List<ObsoleteCodeMigrationProblem> = listOf(
|
override val problemReporters: List<ObsoleteCodeProblemReporter> = listOf(
|
||||||
KotlinBrowserImportUsageProblem,
|
KotlinBrowserImportUsageReporter,
|
||||||
KotlinDomImportUsageProblem
|
KotlinDomImportUsageReporter
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,30 +24,33 @@ private object ObsoleteKotlinJsPackagesUsagesInWholeProjectFix : ObsoleteCodeInW
|
|||||||
override fun getFamilyName(): String = KotlinBundle.message("obsolete.kotlin.js.packages.usage.in.whole.fix.family.name")
|
override fun getFamilyName(): String = KotlinBundle.message("obsolete.kotlin.js.packages.usage.in.whole.fix.family.name")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private const val KOTLIN_BROWSER_PACKAGE = "kotlin.browser"
|
||||||
|
private const val KOTLIN_DOM_PACKAGE = "kotlin.dom"
|
||||||
|
|
||||||
private class ObsoleteKotlinBrowserUsageFix(delegate: ObsoleteCodeFix) : ObsoleteCodeFixDelegateQuickFix(delegate) {
|
private class ObsoleteKotlinBrowserUsageFix(delegate: ObsoleteCodeFix) : ObsoleteCodeFixDelegateQuickFix(delegate) {
|
||||||
override fun getFamilyName(): String = KotlinBundle.message("obsolete.kotlin.browser.usage.fix.family.name")
|
override fun getFamilyName(): String = KotlinBundle.message("obsolete.package.usage.fix.family.name", KOTLIN_BROWSER_PACKAGE)
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ObsoleteKotlinDomUsageFix(delegate: ObsoleteCodeFix) : ObsoleteCodeFixDelegateQuickFix(delegate) {
|
private class ObsoleteKotlinDomUsageFix(delegate: ObsoleteCodeFix) : ObsoleteCodeFixDelegateQuickFix(delegate) {
|
||||||
override fun getFamilyName(): String = KotlinBundle.message("obsolete.kotlin.dom.usage.fix.family.name")
|
override fun getFamilyName(): String = KotlinBundle.message("obsolete.package.usage.fix.family.name", KOTLIN_DOM_PACKAGE)
|
||||||
}
|
}
|
||||||
|
|
||||||
private object KotlinBrowserImportUsageProblem : ObsoleteImportsUsage() {
|
private object KotlinBrowserImportUsageReporter : ObsoleteImportsUsageReporter() {
|
||||||
override val textMarker: String = "browser"
|
override val textMarker: String = "browser"
|
||||||
override val packageBindings: Map<String, String> = mapOf("kotlin.browser" to "kotlinx.browser")
|
override val packageBindings: Map<String, String> = mapOf(KOTLIN_BROWSER_PACKAGE to "kotlinx.browser")
|
||||||
|
|
||||||
override val wholeProjectFix: LocalQuickFix = ObsoleteKotlinJsPackagesUsagesInWholeProjectFix
|
override val wholeProjectFix: LocalQuickFix = ObsoleteKotlinJsPackagesUsagesInWholeProjectFix
|
||||||
override fun problemMessage(): String = KotlinBundle.message("kotlin.browser.usages.are.obsolete.since.1.3")
|
override fun problemMessage(): String = KotlinBundle.message("package.usages.are.obsolete.since.1.4", KOTLIN_BROWSER_PACKAGE)
|
||||||
|
|
||||||
override fun wrapFix(fix: ObsoleteCodeFix): LocalQuickFix = ObsoleteKotlinBrowserUsageFix(fix)
|
override fun wrapFix(fix: ObsoleteCodeFix): LocalQuickFix = ObsoleteKotlinBrowserUsageFix(fix)
|
||||||
}
|
}
|
||||||
|
|
||||||
private object KotlinDomImportUsageProblem : ObsoleteImportsUsage() {
|
private object KotlinDomImportUsageReporter : ObsoleteImportsUsageReporter() {
|
||||||
override val textMarker: String = "dom"
|
override val textMarker: String = "dom"
|
||||||
override val packageBindings: Map<String, String> = mapOf("kotlin.dom" to "kotlinx.dom")
|
override val packageBindings: Map<String, String> = mapOf(KOTLIN_DOM_PACKAGE to "kotlinx.dom")
|
||||||
|
|
||||||
override val wholeProjectFix: LocalQuickFix = ObsoleteKotlinJsPackagesUsagesInWholeProjectFix
|
override val wholeProjectFix: LocalQuickFix = ObsoleteKotlinJsPackagesUsagesInWholeProjectFix
|
||||||
override fun problemMessage(): String = KotlinBundle.message("kotlin.dom.usages.are.obsolete.since.1.3")
|
override fun problemMessage(): String = KotlinBundle.message("package.usages.are.obsolete.since.1.4", KOTLIN_DOM_PACKAGE)
|
||||||
|
|
||||||
override fun wrapFix(fix: ObsoleteCodeFix): LocalQuickFix = ObsoleteKotlinDomUsageFix(fix)
|
override fun wrapFix(fix: ObsoleteCodeFix): LocalQuickFix = ObsoleteKotlinDomUsageFix(fix)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user