diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt index 9160b6cadce..816c4dedc75 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/ktPsiUtil.kt @@ -28,6 +28,7 @@ import com.intellij.psi.tree.TokenSet import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.diagnostics.DiagnosticSink import org.jetbrains.kotlin.diagnostics.Errors +import org.jetbrains.kotlin.lexer.KotlinLexer import org.jetbrains.kotlin.lexer.KtModifierKeywordToken import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.Name @@ -573,4 +574,16 @@ fun KtExpression.getLabeledParent(labelName: String): KtLabeledExpression? { fun PsiElement.astReplace(newElement: PsiElement) = parent.node.replaceChild(node, newElement.node) -var KtElement.parentSubstitute: PsiElement? by UserDataProperty(Key.create("PARENT_SUBSTITUTE")) \ No newline at end of file +var KtElement.parentSubstitute: PsiElement? by UserDataProperty(Key.create("PARENT_SUBSTITUTE")) + +fun String?.isIdentifier(): Boolean { + if (this == null || isEmpty()) return false + + val lexer = KotlinLexer() + lexer.start(this, 0, length) + if (lexer.tokenType !== KtTokens.IDENTIFIER) return false + lexer.advance() + return lexer.tokenType == null +} + +fun String.quoteIfNeeded(): String = if (this.isIdentifier()) this else "`$this`" \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt index e9997690574..4e9469ea002 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt @@ -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.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 - } } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt index 83fda116df9..3395c737dcc 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt @@ -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 { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt index 24345448d6e..a9489dd3fe4 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt @@ -44,7 +44,6 @@ import org.jetbrains.eval4j.jdi.asValue import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.debugger.KotlinEditorTextProvider import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor import org.jetbrains.kotlin.idea.refactoring.j2k @@ -55,6 +54,7 @@ import org.jetbrains.kotlin.idea.versions.getKotlinJvmRuntimeMarkerClass import org.jetbrains.kotlin.j2k.AfterConversionPass import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.typeUtil.makeNullable import java.util.concurrent.atomic.AtomicReference diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt index ad65c55efed..d946f5cccdb 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt @@ -58,7 +58,6 @@ import org.jetbrains.kotlin.diagnostics.Severity import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.caches.resolve.getJavaClassDescriptor -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.core.quoteSegmentsIfNeeded import org.jetbrains.kotlin.idea.debugger.DebuggerUtils import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches.CompiledDataDescriptor @@ -75,6 +74,7 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.codeFragmentUtil.debugTypeInfo import org.jetbrains.kotlin.psi.codeFragmentUtil.suppressDiagnosticsInDebugMode import org.jetbrains.kotlin.psi.psiUtil.getParentOfType +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.resolve.AnalyzingUtils import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingTrace diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/KotlinCreateFromTemplateHandler.kt b/idea/src/org/jetbrains/kotlin/idea/actions/KotlinCreateFromTemplateHandler.kt index 7de979ffac8..2e72d376c66 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/KotlinCreateFromTemplateHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/KotlinCreateFromTemplateHandler.kt @@ -19,7 +19,7 @@ package org.jetbrains.kotlin.idea.actions import com.intellij.ide.fileTemplates.DefaultCreateFromTemplateHandler import com.intellij.ide.fileTemplates.FileTemplate import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.core.quoteIfNeeded +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded class KotlinCreateFromTemplateHandler : DefaultCreateFromTemplateHandler() { override fun handlesTemplate(template: FileTemplate) = template.isTemplateOfType(KotlinFileType.INSTANCE) diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt index 4f7e814232e..4fe68080adb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt @@ -34,7 +34,6 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.core.CollectingNameValidator import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.insertMembersAfter -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.project.platform import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers @@ -42,6 +41,7 @@ import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt index 10554ae92e8..34e7dbebefc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt @@ -42,18 +42,18 @@ import com.intellij.util.IncorrectOperationException import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.insertMember import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject.BodyType import org.jetbrains.kotlin.idea.core.overrideImplement.generateUnsupportedOrSuperCall -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.setupEditorSelection import org.jetbrains.kotlin.idea.refactoring.j2k import org.jetbrains.kotlin.idea.testIntegration.findSuitableFrameworks import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.utils.ifEmpty abstract class KotlinGenerateTestSupportActionBase( @@ -87,7 +87,7 @@ abstract class KotlinGenerateTestSupportActionBase( private val NAME_VAR = "\${NAME}" private val NAME_VALIDATOR = object : InputValidator { - override fun checkInput(inputString: String) = KotlinNameSuggester.isIdentifier(inputString.quoteIfNeeded()) + override fun checkInput(inputString: String) = inputString.quoteIfNeeded().isIdentifier() override fun canClose(inputString: String) = true } } diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt index 66233bb818a..b7708aa22af 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt @@ -33,11 +33,11 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.core.insertMembersAfter -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.core.util.DescriptorMemberChooserObject import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt index 7c59042ad33..70d3edb7495 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt @@ -21,14 +21,14 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.ui.Messages import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject import org.jetbrains.kotlin.idea.core.overrideImplement.generateMember -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny import java.util.* @@ -58,7 +58,7 @@ fun getPropertiesToUseInGeneratedMember(classOrObject: KtClassOrObject): List().map { it.value }.toSet() override fun isKeyword(name: String, project: Project?): Boolean = name in KEYWORD_SET - override fun isIdentifier(name: String, project: Project?): Boolean = KotlinNameSuggester.isIdentifier(name) + override fun isIdentifier(name: String, project: Project?): Boolean = name.isIdentifier() } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinParameterInfo.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinParameterInfo.kt index c8be0ab9f4e..a644c0d5a52 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinParameterInfo.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinParameterInfo.kt @@ -23,13 +23,13 @@ import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.core.compareDescriptors import org.jetbrains.kotlin.idea.core.copied -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.core.setDefaultValue import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallableDefinitionUsage import org.jetbrains.kotlin.idea.references.KtReference import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.addRemoveModifier.setModifierList +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureDialog.kt index 7be25b9bd4c..8788b2a33d0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureDialog.kt @@ -47,12 +47,12 @@ import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle import org.jetbrains.kotlin.idea.refactoring.changeSignature.* import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor.Kind import org.jetbrains.kotlin.idea.refactoring.validateElement import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode @@ -360,7 +360,7 @@ class KotlinChangeSignatureDialog( } override fun canRun() { - if (myNamePanel.isVisible && myMethod.canChangeName() && !KotlinNameSuggester.isIdentifier(methodName)) { + if (myNamePanel.isVisible && myMethod.canChangeName() && !methodName.isIdentifier()) { throw ConfigurationException(KotlinRefactoringBundle.message("function.name.is.invalid")) } @@ -372,7 +372,7 @@ class KotlinChangeSignatureDialog( for (item in parametersTableModel.items) { val parameterName = item.parameter.name - if (item.parameter != parametersTableModel.receiver && !KotlinNameSuggester.isIdentifier(parameterName)) { + if (item.parameter != parametersTableModel.receiver && !parameterName.isIdentifier()) { throw ConfigurationException(KotlinRefactoringBundle.message("parameter.name.is.invalid", parameterName)) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinParameterUsage.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinParameterUsage.kt index 8aefd4ed2ee..c1eea406ee2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinParameterUsage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinParameterUsage.kt @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.refactoring.changeSignature.usages import com.intellij.usageView.UsageInfo import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.codeInsight.shorten.addToShorteningWaitSet -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeInfo import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinParameterInfo import org.jetbrains.kotlin.idea.core.ShortenReferences.Options @@ -27,6 +26,7 @@ import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.psi.KtQualifiedExpression import org.jetbrains.kotlin.psi.KtThisExpression +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier // Explicit reference to function parameter or outer this abstract class KotlinExplicitReferenceUsage(element: T) : KotlinUsageInfo(element) { @@ -59,7 +59,7 @@ class KotlinParameterUsage( if (changeInfo.receiverParameterInfo != parameterInfo) return parameterInfo.getInheritedName(containingCallable) val newName = changeInfo.newName - if (KotlinNameSuggester.isIdentifier(newName)) return "this@$newName" + if (newName.isIdentifier()) return "this@$newName" return "this" } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractKotlinInplaceIntroducer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractKotlinInplaceIntroducer.kt index c1076d48243..562df76e69f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractKotlinInplaceIntroducer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractKotlinInplaceIntroducer.kt @@ -24,13 +24,13 @@ import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer import com.intellij.refactoring.rename.inplace.InplaceRefactoring import com.intellij.util.ui.FormBuilder import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypeAndBranch +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import java.awt.BorderLayout abstract class AbstractKotlinInplaceIntroducer( @@ -66,7 +66,7 @@ abstract class AbstractKotlinInplaceIntroducer( protected fun updateVariableName() { val currentName = inputName.quoteIfNeeded() - if (KotlinNameSuggester.isIdentifier(currentName)) { + if (currentName.isIdentifier()) { localVariable.setName(currentName) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ExtractSuperRefactoring.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ExtractSuperRefactoring.kt index 557f4f54595..e650506f876 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ExtractSuperRefactoring.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ExtractSuperRefactoring.kt @@ -38,7 +38,10 @@ import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.codeInsight.shorten.performDelayedRefactoringRequests -import org.jetbrains.kotlin.idea.core.* +import org.jetbrains.kotlin.idea.core.ShortenReferences +import org.jetbrains.kotlin.idea.core.copied +import org.jetbrains.kotlin.idea.core.getPackage +import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.idea.refactoring.introduce.insertDeclaration import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo import org.jetbrains.kotlin.idea.refactoring.memberInfo.getChildrenToAnalyze @@ -61,6 +64,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ui/KotlinExtractSuperDialogBase.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ui/KotlinExtractSuperDialogBase.kt index e430b9db91f..46b37ea2a07 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ui/KotlinExtractSuperDialogBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractClass/ui/KotlinExtractSuperDialogBase.kt @@ -30,8 +30,6 @@ import com.intellij.util.ui.FormBuilder import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.core.unquote import org.jetbrains.kotlin.idea.refactoring.introduce.extractClass.ExtractSuperInfo import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo @@ -40,6 +38,8 @@ import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinUsesAndInterfacesD import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtNamedDeclaration +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import java.awt.BorderLayout import javax.swing.* import javax.swing.event.DocumentEvent @@ -175,7 +175,7 @@ abstract class KotlinExtractSuperDialogBase( override fun validateName(name: String): String? { return when { - !KotlinNameSuggester.isIdentifier(name.quoteIfNeeded()) -> RefactoringMessageUtil.getIncorrectIdentifierMessage(name) + !name.quoteIfNeeded().isIdentifier() -> RefactoringMessageUtil.getIncorrectIdentifierMessage(name) name.unquote() == mySourceClass.name -> "Different name expected" else -> null } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ui/KotlinExtractFunctionDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ui/KotlinExtractFunctionDialog.java index 9cd8c227efe..de3e1ad5726 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ui/KotlinExtractFunctionDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ui/KotlinExtractFunctionDialog.java @@ -30,22 +30,21 @@ import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinFileType; -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester; -import org.jetbrains.kotlin.idea.core.UtilsKt; -import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKt; import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle; +import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKt; import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.*; import org.jetbrains.kotlin.idea.refactoring.introduce.ui.KotlinSignatureComponent; import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers; import org.jetbrains.kotlin.lexer.KtTokens; +import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt; import org.jetbrains.kotlin.types.KotlinType; import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.util.*; import java.util.List; +import java.util.Map; public class KotlinExtractFunctionDialog extends DialogWrapper { private JPanel contentPane; @@ -92,7 +91,7 @@ public class KotlinExtractFunctionDialog extends DialogWrapper { } private String getFunctionName() { - return UtilsKt.quoteIfNeeded(functionNameField.getEnteredName()); + return KtPsiUtilKt.quoteIfNeeded(functionNameField.getEnteredName()); } private String getVisibility() { @@ -103,9 +102,9 @@ public class KotlinExtractFunctionDialog extends DialogWrapper { } private boolean checkNames() { - if (!KotlinNameSuggester.INSTANCE.isIdentifier(getFunctionName())) return false; + if (!KtPsiUtilKt.isIdentifier(getFunctionName())) return false; for (ExtractFunctionParameterTablePanel.ParameterInfo parameterInfo : parameterTablePanel.getSelectedParameterInfos()) { - if (!KotlinNameSuggester.INSTANCE.isIdentifier(parameterInfo.getName())) return false; + if (!KtPsiUtilKt.isIdentifier(parameterInfo.getName())) return false; } return true; } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt index 234e96cc30c..41565c39a7f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.OutputValue.* @@ -38,10 +37,7 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.lexer.KtKeywordToken import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement -import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector -import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelector -import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType +import org.jetbrains.kotlin.psi.psiUtil.* import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass @@ -87,7 +83,7 @@ class RenameReplacement(override val parameter: Parameter): ParameterReplacement var expressionToReplace = (e.parent as? KtThisExpression ?: e).let { it.getQualifiedExpressionForSelector() ?: it } val parameterName = KtPsiUtil.unquoteIdentifier(parameter.nameForRef) val replacingName = - if (e.text.startsWith('`') || !KotlinNameSuggester.isIdentifier(parameterName)) "`$parameterName`" else parameterName + if (e.text.startsWith('`') || !parameterName.isIdentifier()) "`$parameterName`" else parameterName val psiFactory = KtPsiFactory(e) val replacement = when { parameter == descriptor.receiverParameter -> psiFactory.createExpression("this") diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt index 5855f0e8ead..6a7a364456b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterDialog.kt @@ -27,15 +27,15 @@ import com.intellij.ui.NonFocusableCheckBox import com.intellij.usageView.BaseUsageViewDescriptor import com.intellij.usageView.UsageInfo import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.core.quoteIfNeeded +import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ui.ExtractFunctionParameterTablePanel +import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ui.KotlinExtractFunctionDialog +import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.* import org.jetbrains.kotlin.idea.refactoring.isMultiLine import org.jetbrains.kotlin.idea.refactoring.runRefactoringWithPostprocessing import org.jetbrains.kotlin.idea.refactoring.validateElement -import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ui.KotlinExtractFunctionDialog -import org.jetbrains.kotlin.idea.refactoring.introduce.extractFunction.ui.ExtractFunctionParameterTablePanel -import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.* import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.types.KotlinType import java.awt.GridBagConstraints import java.awt.GridBagLayout diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/introduceTypeAliasImpl.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/introduceTypeAliasImpl.kt index a8b61bc11e9..d70f249239c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/introduceTypeAliasImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/introduceTypeAliasImpl.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.core.CollectingNameValidator import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.compareDescriptors -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.refactoring.introduce.insertDeclaration import org.jetbrains.kotlin.idea.util.getResolutionScope import org.jetbrains.kotlin.idea.util.psi.patternMatching.KotlinPsiRange @@ -138,7 +137,7 @@ fun IntroduceTypeAliasDescriptor.validate(): IntroduceTypeAliasDescriptorWithCon when { name.isEmpty() -> conflicts.putValue(originalType, "No name provided for type alias") - !KotlinNameSuggester.isIdentifier(name) -> + !name.isIdentifier() -> conflicts.putValue(originalType, "Type alias name must be a valid identifier: $name") originalData.getTargetScope().findClassifier(Name.identifier(name), NoLookupLocation.FROM_IDE) != null -> conflicts.putValue(originalType, "Type $name already exists in the target scope") diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/ui/KotlinIntroduceTypeAliasDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/ui/KotlinIntroduceTypeAliasDialog.java index 7c501974289..eb96ed04240 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/ui/KotlinIntroduceTypeAliasDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/ui/KotlinIntroduceTypeAliasDialog.java @@ -28,8 +28,6 @@ import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinFileType; -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester; -import org.jetbrains.kotlin.idea.core.UtilsKt; import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKt; import org.jetbrains.kotlin.idea.refactoring.introduce.introduceTypeAlias.IntroduceTypeAliasDescriptor; import org.jetbrains.kotlin.idea.refactoring.introduce.introduceTypeAlias.IntroduceTypeAliasImplKt; @@ -38,12 +36,13 @@ import org.jetbrains.kotlin.idea.refactoring.introduce.introduceTypeAlias.TypePa import org.jetbrains.kotlin.idea.refactoring.introduce.ui.KotlinSignatureComponent; import org.jetbrains.kotlin.lexer.KtModifierKeywordToken; import org.jetbrains.kotlin.lexer.KtTokens; +import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt; import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.util.*; +import java.util.Collections; import java.util.List; public class KotlinIntroduceTypeAliasDialog extends DialogWrapper { @@ -94,7 +93,7 @@ public class KotlinIntroduceTypeAliasDialog extends DialogWrapper { } private String getAliasName() { - return UtilsKt.quoteIfNeeded(aliasNameField.getEnteredName()); + return KtPsiUtilKt.quoteIfNeeded(aliasNameField.getEnteredName()); } @Nullable @@ -104,10 +103,10 @@ public class KotlinIntroduceTypeAliasDialog extends DialogWrapper { } private boolean checkNames() { - if (!KotlinNameSuggester.INSTANCE.isIdentifier(getAliasName())) return false; + if (!KtPsiUtilKt.isIdentifier(getAliasName())) return false; if (parameterTablePanel != null) { for (IntroduceTypeAliasParameterTablePanel.TypeParameterInfo parameterInfo : parameterTablePanel.getSelectedTypeParameterInfos()) { - if (!KotlinNameSuggester.INSTANCE.isIdentifier(parameterInfo.getName())) return false; + if (!KtPsiUtilKt.isIdentifier(parameterInfo.getName())) return false; } } return true; diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinVariableInplaceIntroducer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinVariableInplaceIntroducer.kt index 18c809ed13c..3b08a3b1ef9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinVariableInplaceIntroducer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinVariableInplaceIntroducer.kt @@ -28,8 +28,6 @@ import com.intellij.psi.PsiFile import com.intellij.psi.PsiReference import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil import com.intellij.ui.NonFocusableCheckBox -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.intentions.SpecifyTypeExplicitlyIntention import org.jetbrains.kotlin.idea.refactoring.introduce.AbstractKotlinInplaceIntroducer import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers @@ -39,6 +37,8 @@ import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.types.KotlinType import java.util.* @@ -142,7 +142,7 @@ class KotlinVariableInplaceIntroducer( override fun getInitialName() = super.getInitialName().quoteIfNeeded() override fun updateTitle(variable: KtProperty?, value: String?) { - expressionTypeCheckBox?.isEnabled = value == null || KotlinNameSuggester.isIdentifier(value) + expressionTypeCheckBox?.isEnabled = value == null || value.isIdentifier() // No preview to update } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/ui/AbstractParameterTablePanel.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/ui/AbstractParameterTablePanel.kt index 2d004c982d4..22b01ee93ee 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/ui/AbstractParameterTablePanel.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/ui/AbstractParameterTablePanel.kt @@ -22,7 +22,7 @@ import com.intellij.ui.ToolbarDecorator import com.intellij.ui.table.JBTable import com.intellij.util.ui.EditableModel import org.jetbrains.annotations.NonNls -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import java.awt.BorderLayout import java.awt.Component import java.awt.Dimension @@ -200,7 +200,7 @@ abstract class AbstractParameterTablePanel { val name = aValue as String - if (KotlinNameSuggester.isIdentifier(name)) { + if (name.isIdentifier()) { info.name = name } updateSignature() diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt index 9b3a8b3c096..b811bad522e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt @@ -61,10 +61,12 @@ import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.getJavaMemberDescriptor -import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny +import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde -import org.jetbrains.kotlin.idea.core.* +import org.jetbrains.kotlin.idea.core.ShortenReferences +import org.jetbrains.kotlin.idea.core.getPackage +import org.jetbrains.kotlin.idea.core.quoteSegmentsIfNeeded import org.jetbrains.kotlin.idea.core.util.showYesNoCancelDialog import org.jetbrains.kotlin.idea.highlighter.markers.actualsForExpected import org.jetbrains.kotlin.idea.highlighter.markers.liftToExpected @@ -709,9 +711,9 @@ fun invokeOnceOnCommandFinish(action: () -> Unit) { commandProcessor.addCommandListener(listener) } -fun FqNameUnsafe.hasIdentifiersOnly(): Boolean = pathSegments().all { KotlinNameSuggester.isIdentifier(it.asString().quoteIfNeeded()) } +fun FqNameUnsafe.hasIdentifiersOnly(): Boolean = pathSegments().all { it.asString().quoteIfNeeded().isIdentifier() } -fun FqName.hasIdentifiersOnly(): Boolean = pathSegments().all { KotlinNameSuggester.isIdentifier(it.asString().quoteIfNeeded()) } +fun FqName.hasIdentifiersOnly(): Boolean = pathSegments().all { it.asString().quoteIfNeeded().isIdentifier() } fun PsiNamedElement.isInterfaceClass(): Boolean = when (this) { is KtClass -> isInterface() diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelDialog.java index a61f0f464b9..b292da292c5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelDialog.java @@ -60,6 +60,7 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.*; +import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt; import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.types.KotlinType; @@ -320,11 +321,11 @@ public class MoveKotlinNestedClassesToUpperLevelDialog extends MoveDialogBase { String parameterName = getParameterName(); if (className != null && className.isEmpty()) throw new ConfigurationException(RefactoringBundle.message("no.class.name.specified")); - if (!KotlinNameSuggester.INSTANCE.isIdentifier(className)) throw new ConfigurationException(RefactoringMessageUtil.getIncorrectIdentifierMessage(className)); + if (!KtPsiUtilKt.isIdentifier(className)) throw new ConfigurationException(RefactoringMessageUtil.getIncorrectIdentifierMessage(className)); if (passOuterClassCheckBox.isSelected()) { if (parameterName != null && parameterName.isEmpty()) throw new ConfigurationException(RefactoringBundle.message("no.parameter.name.specified")); - if (!KotlinNameSuggester.INSTANCE.isIdentifier(parameterName)) throw new ConfigurationException(RefactoringMessageUtil.getIncorrectIdentifierMessage(parameterName)); + if (!KtPsiUtilKt.isIdentifier(parameterName)) throw new ConfigurationException(RefactoringMessageUtil.getIncorrectIdentifierMessage(parameterName)); } PsiElement targetContainer = getTargetContainer(); diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/markingUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/markingUtils.kt index 3e3beb5b39e..1fba2be3a0b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/markingUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/markingUtils.kt @@ -21,16 +21,16 @@ import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.idea.codeInsight.shorten.addToShorteningWaitSet +import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers -import org.jetbrains.kotlin.idea.core.ShortenReferences -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.allChildren import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForReceiver import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForReceiverOrThis +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.calls.callUtil.getCalleeExpressionIfAny diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticParameterRenamer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticParameterRenamer.kt index f73c0a1e6e4..23a0bee5419 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticParameterRenamer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticParameterRenamer.kt @@ -25,13 +25,13 @@ import com.intellij.refactoring.rename.naming.AutomaticRenamer import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory import com.intellij.usageView.UsageInfo import org.jetbrains.kotlin.asJava.namedUnwrappedElement -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.refactoring.canRefactor import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchOverriders import org.jetbrains.kotlin.psi.KtCallableDeclaration import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.KtParameter +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded class AutomaticParameterRenamer(element: KtParameter, newName: String) : AutomaticRenamer() { init { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDeclarationRenameInputValidator.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDeclarationRenameInputValidator.kt index f09c73f45b5..0cabe3dcd9a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDeclarationRenameInputValidator.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDeclarationRenameInputValidator.kt @@ -20,14 +20,14 @@ import com.intellij.patterns.PlatformPatterns import com.intellij.psi.PsiElement import com.intellij.refactoring.rename.RenameInputValidator import com.intellij.util.ProcessingContext -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.psi.KtNamedDeclaration +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded class KotlinDeclarationRenameInputValidator : RenameInputValidator { override fun getPattern() = PlatformPatterns.psiElement(KtNamedDeclaration::class.java) override fun isInputValid(newName: String, element: PsiElement, context: ProcessingContext): Boolean { - return KotlinNameSuggester.isIdentifier(newName.quoteIfNeeded()) + return newName.quoteIfNeeded().isIdentifier() } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDirectoryAsPackageRenameHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDirectoryAsPackageRenameHandler.kt index 387fe006827..399a80bde47 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDirectoryAsPackageRenameHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinDirectoryAsPackageRenameHandler.kt @@ -18,9 +18,9 @@ package org.jetbrains.kotlin.idea.refactoring.rename import com.intellij.openapi.project.Project import com.intellij.refactoring.rename.DirectoryAsPackageRenameHandler -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester -import org.jetbrains.kotlin.idea.core.quoteIfNeeded +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded class KotlinDirectoryAsPackageRenameHandler : DirectoryAsPackageRenameHandler() { - override fun isIdentifier(name: String, project: Project) = KotlinNameSuggester.isIdentifier(name.quoteIfNeeded()) + override fun isIdentifier(name: String, project: Project): Boolean = name.quoteIfNeeded().isIdentifier() } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt index a9e1dd31c12..73bddbf3f99 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt @@ -27,8 +27,6 @@ import com.intellij.refactoring.rename.RenamePsiElementProcessor import com.intellij.usageView.UsageInfo import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.asJava.toLightMethods -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.highlighter.markers.actualsForExpected import org.jetbrains.kotlin.idea.highlighter.markers.liftToExpected import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions @@ -37,7 +35,9 @@ import org.jetbrains.kotlin.idea.search.projectScope import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import org.jetbrains.kotlin.psi.psiUtil.parents +import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.resolve.ImportPath abstract class RenameKotlinPsiProcessor : RenamePsiElementProcessor() { @@ -74,7 +74,7 @@ abstract class RenameKotlinPsiProcessor : RenamePsiElementProcessor() { val safeNewName = newName.quoteIfNeeded() - if (!KotlinNameSuggester.isIdentifier(newName)) { + if (!newName.isIdentifier()) { allRenames[element] = safeNewName } diff --git a/idea/src/org/jetbrains/kotlin/idea/references/KotlinDefaultAnnotationMethodImplicitReferenceContributor.kt b/idea/src/org/jetbrains/kotlin/idea/references/KotlinDefaultAnnotationMethodImplicitReferenceContributor.kt index 4ac7c805d42..83e17b217b0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/references/KotlinDefaultAnnotationMethodImplicitReferenceContributor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/references/KotlinDefaultAnnotationMethodImplicitReferenceContributor.kt @@ -22,14 +22,10 @@ import com.intellij.psi.util.MethodSignatureUtil import com.intellij.util.ArrayUtil import com.intellij.util.IncorrectOperationException import org.jetbrains.kotlin.asJava.unwrapped -import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject -import org.jetbrains.kotlin.psi.psiUtil.findPropertyByName -import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypeAndBranch -import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType +import org.jetbrains.kotlin.psi.psiUtil.* class KotlinDefaultAnnotationMethodImplicitReferenceContributor : AbstractKotlinReferenceContributor() { class ReferenceImpl(private val argument: KtValueArgument) : PsiReference { diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt index 8c361e6644b..40ceaaa4265 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt @@ -31,7 +31,6 @@ import com.intellij.spring.model.utils.SpringModelSearchers import com.intellij.spring.model.utils.SpringModelUtils import com.intellij.util.IncorrectOperationException import org.jetbrains.kotlin.asJava.classes.KtLightClass -import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.editor.BatchTemplateRunner import org.jetbrains.kotlin.idea.spring.effectiveBeanClasses @@ -39,6 +38,7 @@ import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import org.jetbrains.kotlin.utils.ifEmpty // TODO: GenerateAutowiredDependenciesUtil.getQualifierName() is not accessible here @@ -59,7 +59,7 @@ private fun createAutowiredProperty( val qualifierName = candidateBean.getQualifierName() val candidateBeanClass = candidateBeanClasses.first() val beanName = candidateBean.name - val name = if (beanName != null && KotlinNameSuggester.isIdentifier(beanName)) beanName else candidateBeanClass.name!! + val name = if (beanName != null && beanName.isIdentifier()) beanName else candidateBeanClass.name!! val psiFactory = KtPsiFactory(currentBeanClass.project) // TODO: Use KtPsiFactory.CallableBuilder diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt index 7a9ba3ead7e..f180ae1cce1 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt @@ -70,6 +70,7 @@ import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.load.java.propertyNameBySetMethodName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.expressions.TypeReconstructionUtil import org.jetbrains.kotlin.utils.SmartList @@ -158,7 +159,7 @@ private fun createSettable( val beanName = candidateBean.name try { val candidateClass = candidateBeanClasses.first() - val propertyName = if (beanName != null && KotlinNameSuggester.isIdentifier(beanName)) beanName else candidateClass.name!! + val propertyName = if (beanName != null && beanName.isIdentifier()) beanName else candidateClass.name!! val prototype: KtNamedDeclaration = when (injectionKind) { SpringDependencyInjectionKind.SETTER -> { @@ -194,7 +195,7 @@ internal fun getSuggestedNames( SpringBeanUtils.getInstance() .findBeanNames(beanPointer.springBean) .asSequence() - .filter { KotlinNameSuggester.isIdentifier(it) } + .filter { it.isIdentifier() } .mapTo(names) { KotlinNameSuggester.suggestNameByName(it, ::validate) } (declaration.resolveToDescriptor() as CallableDescriptor).getType()?.let {