Refactor: Move 'isIdentifier' and 'quoteIfNeeded' functions to frontend

This commit is contained in:
Alexey Sedunov
2018-02-06 19:28:07 +03:00
parent fddfbf225f
commit 428b086458
36 changed files with 100 additions and 103 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.lexer.KotlinLexer
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getOutermostParenthesizerOrThis
import org.jetbrains.kotlin.psi.psiUtil.isIdentifier
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getParentResolvedCall
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
@@ -313,20 +314,10 @@ object KotlinNameSuggester {
private fun MutableCollection<String>.addName(name: String?, validator: (String) -> Boolean) {
if (name == null) return
val correctedName = when {
isIdentifier(name) -> name
name.isIdentifier() -> name
name == "class" -> "clazz"
else -> return
}
add(suggestNameByName(correctedName, validator))
}
fun isIdentifier(name: String?): Boolean {
if (name == null || name.isEmpty()) return false
val lexer = KotlinLexer()
lexer.start(name, 0, name.length)
if (lexer.tokenType !== KtTokens.IDENTIFIER) return false
lexer.advance()
return lexer.tokenType == null
}
}
@@ -30,9 +30,7 @@ import org.jetbrains.kotlin.idea.util.getImplicitReceiversWithInstanceToExpressi
import org.jetbrains.kotlin.idea.util.getResolutionScope
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelectorOrThis
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore
@@ -163,8 +161,6 @@ fun KtCallableDeclaration.canOmitDeclaredType(initializerOrBodyExpression: KtExp
return canChangeTypeToSubtype && expressionType.isSubtypeOf(declaredType)
}
fun String.quoteIfNeeded(): String = if (KotlinNameSuggester.isIdentifier(this)) this else "`$this`"
fun String.unquote(): String = KtPsiUtil.unquoteIdentifier(this)
fun FqName.quoteSegmentsIfNeeded(): String {