New J2K: Escape name of declaration in convert data class
This commit is contained in:
committed by
Ilya Kirillov
parent
b411e8e18e
commit
1dd0a42298
@@ -23,12 +23,13 @@ import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
|
||||
class ConvertDataClass : NewJ2kPostProcessing {
|
||||
override val writeActionNeeded: Boolean = true
|
||||
|
||||
fun KtCallableDeclaration.rename(newName: String) {
|
||||
private fun KtCallableDeclaration.rename(newName: String) {
|
||||
val factory = KtPsiFactory(this)
|
||||
val escapedName = newName.escaped()
|
||||
ReferencesSearch.search(this, LocalSearchScope(containingKtFile)).forEach {
|
||||
it.element.replace(factory.createExpression(newName))
|
||||
it.element.replace(factory.createExpression(escapedName))
|
||||
}
|
||||
setName(newName)
|
||||
setName(escapedName)
|
||||
}
|
||||
|
||||
private data class DataClassInfo(
|
||||
|
||||
-5
@@ -126,11 +126,6 @@ class ConvertGettersAndSetters : NewJ2kPostProcessing {
|
||||
)
|
||||
}
|
||||
|
||||
private val keywords = KtTokens.KEYWORDS.types.map { (it as KtKeywordToken).value }.toSet()
|
||||
|
||||
private fun String.escaped() =
|
||||
if (this in keywords) "`$this`"
|
||||
else this
|
||||
|
||||
private fun KtFunction.getterName() =
|
||||
name?.takeIf { JvmAbi.isGetterName(it) }
|
||||
|
||||
@@ -11,6 +11,8 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.lexer.KtKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
||||
@@ -77,3 +79,9 @@ fun KtElement.hasUsagesOutsideOf(inElement: KtElement, outsideElements: List<KtE
|
||||
ReferencesSearch.search(this, LocalSearchScope(inElement)).any { reference ->
|
||||
outsideElements.none { it.isAncestor(reference.element) }
|
||||
}
|
||||
|
||||
fun String.escaped() =
|
||||
if (this in keywords || '$' in this) "`$this`"
|
||||
else this
|
||||
|
||||
private val keywords = KtTokens.KEYWORDS.types.map { (it as KtKeywordToken).value }.toSet()
|
||||
|
||||
Reference in New Issue
Block a user