mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] Move ConvertIllegalEscapeToUnicodeEscapeFix to frontend independent module
^KTIJ-29491 GitOrigin-RevId: 7dcf1cebc67502c5d5d97b44f87b9a6f18fb2186
This commit is contained in:
committed by
intellij-monorepo-bot
parent
050afe0e86
commit
2eccac6137
+30
@@ -0,0 +1,30 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.quickfix
|
||||
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.classic.quickfixes.KotlinQuickFixAction
|
||||
import org.jetbrains.kotlin.psi.KtConstantExpression
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtEscapeStringTemplateEntry
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
|
||||
class ConvertIllegalEscapeToUnicodeEscapeFix(
|
||||
element: KtElement,
|
||||
private val unicodeEscape: String
|
||||
) : KotlinQuickFixAction<KtElement>(element) {
|
||||
override fun getText(): String = KotlinBundle.message("convert.to.unicode.escape")
|
||||
|
||||
override fun getFamilyName(): String = text
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
|
||||
val element = this.element ?: return
|
||||
val psiFactory = KtPsiFactory(project)
|
||||
when (element) {
|
||||
is KtConstantExpression -> element.replace(psiFactory.createExpression("'$unicodeEscape'"))
|
||||
is KtEscapeStringTemplateEntry -> element.replace(psiFactory.createStringTemplate(unicodeEscape).entries.first())
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
-33
@@ -2,42 +2,20 @@
|
||||
package org.jetbrains.kotlin.idea.quickfix
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.classic.quickfixes.KotlinQuickFixAction
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
|
||||
class ConvertIllegalEscapeToUnicodeEscapeFix(
|
||||
element: KtElement,
|
||||
private val unicodeEscape: String
|
||||
) : KotlinQuickFixAction<KtElement>(element) {
|
||||
override fun getText(): String = KotlinBundle.message("convert.to.unicode.escape")
|
||||
|
||||
override fun getFamilyName(): String = text
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
|
||||
val element = this.element ?: return
|
||||
val psiFactory = KtPsiFactory(project)
|
||||
when (element) {
|
||||
is KtConstantExpression -> element.replace(psiFactory.createExpression("'$unicodeEscape'"))
|
||||
is KtEscapeStringTemplateEntry -> element.replace(psiFactory.createStringTemplate(unicodeEscape).entries.first())
|
||||
}
|
||||
internal object ConvertIllegalEscapeToUnicodeEscapeFixFactory : KotlinSingleIntentionActionFactory() {
|
||||
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
||||
val element = diagnostic.psiElement as? KtElement ?: return null
|
||||
val illegalEscape = when (element) {
|
||||
is KtConstantExpression -> element.text.takeIf { it.length >= 2 }?.drop(1)?.dropLast(1)
|
||||
is KtEscapeStringTemplateEntry -> element.text
|
||||
else -> null
|
||||
} ?: return null
|
||||
val unicodeEscape = illegalEscapeToUnicodeEscape[illegalEscape] ?: return null
|
||||
return ConvertIllegalEscapeToUnicodeEscapeFix(element, unicodeEscape)
|
||||
}
|
||||
|
||||
companion object : KotlinSingleIntentionActionFactory() {
|
||||
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
||||
val element = diagnostic.psiElement as? KtElement ?: return null
|
||||
val illegalEscape = when (element) {
|
||||
is KtConstantExpression -> element.text.takeIf { it.length >= 2 }?.drop(1)?.dropLast(1)
|
||||
is KtEscapeStringTemplateEntry -> element.text
|
||||
else -> null
|
||||
} ?: return null
|
||||
val unicodeEscape = illegalEscapeToUnicodeEscape[illegalEscape] ?: return null
|
||||
return ConvertIllegalEscapeToUnicodeEscapeFix(element, unicodeEscape)
|
||||
}
|
||||
|
||||
private val illegalEscapeToUnicodeEscape = mapOf("\\f" to "\\u000c")
|
||||
}
|
||||
private val illegalEscapeToUnicodeEscape = mapOf("\\f" to "\\u000c")
|
||||
}
|
||||
|
||||
@@ -767,7 +767,7 @@ class QuickFixRegistrar : QuickFixContributor {
|
||||
|
||||
JAVA_CLASS_ON_COMPANION.registerFactory(JavaClassOnCompanionFixes)
|
||||
|
||||
ILLEGAL_ESCAPE.registerFactory(ConvertIllegalEscapeToUnicodeEscapeFix)
|
||||
ILLEGAL_ESCAPE.registerFactory(ConvertIllegalEscapeToUnicodeEscapeFixFactory)
|
||||
|
||||
MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND.registerFactory(AddEmptyArgumentListFixFactory)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user