Remove FqNameBase, simplify FqName and FqNameUnsafe

This commit is contained in:
Alexander Udalov
2015-10-20 21:27:31 +03:00
parent 894a97a549
commit 8a89662ea5
16 changed files with 45 additions and 143 deletions
@@ -106,7 +106,7 @@ private fun setupFileStub(fileStub: KotlinFileStubImpl, packageFqName: FqName) {
fun createStubForPackageName(packageDirectiveStub: KotlinPlaceHolderStubImpl<KtPackageDirective>, packageFqName: FqName) {
val segments = packageFqName.pathSegments().toArrayList()
val iterator = segments.listIterator(segments.size())
val iterator = segments.listIterator(segments.size)
fun recCreateStubForPackageName(current: StubElement<out PsiElement>) {
when (iterator.previousIndex()) {
@@ -130,10 +130,10 @@ fun createStubForPackageName(packageDirectiveStub: KotlinPlaceHolderStubImpl<KtP
fun createStubForTypeName(typeClassId: ClassId, parent: StubElement<out PsiElement>): KotlinUserTypeStub {
val fqName =
if (typeClassId.isLocal()) KotlinBuiltIns.FQ_NAMES.any
else typeClassId.asSingleFqName()
else typeClassId.asSingleFqName().toUnsafe()
val segments = fqName.pathSegments().toArrayList()
assert(segments.isNotEmpty())
val iterator = segments.listIterator(segments.size())
val iterator = segments.listIterator(segments.size)
fun recCreateStubForType(current: StubElement<out PsiElement>): KotlinUserTypeStub {
val lastSegment = iterator.previous()
@@ -276,7 +276,7 @@ fun createTargetedAnnotationStubs(
hasValueArguments = false
)
if (target != null) {
KotlinAnnotationUseSiteTargetStubImpl(annotationEntryStubImpl, StringRef.fromString(target.name())!!)
KotlinAnnotationUseSiteTargetStubImpl(annotationEntryStubImpl, StringRef.fromString(target.name)!!)
}
val constructorCallee = KotlinPlaceHolderStubImpl<KtConstructorCalleeExpression>(annotationEntryStubImpl, KtStubElementTypes.CONSTRUCTOR_CALLEE)
val typeReference = KotlinPlaceHolderStubImpl<KtTypeReference>(constructorCallee, KtStubElementTypes.TYPE_REFERENCE)
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.highlighter.renderersUtil
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.NameShortness
import org.jetbrains.kotlin.renderer.RenderingFormat
@@ -112,7 +111,7 @@ fun <D : CallableDescriptor> renderResolvedCall(resolvedCall: ResolvedCall<D>):
append(" <i>defined in</i> ")
val containingDeclaration = resultingDescriptor.getContainingDeclaration()
val fqName = DescriptorUtils.getFqName(containingDeclaration)
append(if (FqName.ROOT.equalsTo(fqName)) "root package" else fqName.asString())
append(if (fqName.isRoot) "root package" else fqName.asString())
}
return stringBuilder.toString()
}
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.NameShortness
import org.jetbrains.kotlin.renderer.render
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import javax.swing.Icon
public open class DescriptorMemberChooserObject(
@@ -75,7 +75,7 @@ public open class DescriptorMemberChooserObject(
public fun getText(descriptor: DeclarationDescriptor): String {
return if (descriptor is ClassDescriptor)
descriptor.fqNameSafe.render()
descriptor.fqNameUnsafe.render()
else
MEMBER_RENDERER.render(descriptor)
}
@@ -211,10 +211,10 @@ public class KotlinImportOptimizer() : ImportOptimizer {
}
// now check that there are no conflicts and all classes are really imported
val fileWithImportsText = StringBuilder {
append("package ").append(file.packageFqName.render()).append("\n")
importsToGenerate.filter { it.isAllUnder() }.map { "import " + it.pathStr }.joinTo(this, "\n")
}.toString()
val fileWithImportsText = buildString {
append("package ").append(file.packageFqName.toUnsafe().render()).append("\n")
importsToGenerate.filter { it.isAllUnder }.map { "import " + it.pathStr }.joinTo(this, "\n")
}
val fileWithImports = KtPsiFactory(file).createAnalyzableFile("Dummy.kt", fileWithImportsText, file)
val scope = fileWithImports.getResolutionFacade().getFileResolutionScope(fileWithImports)
@@ -72,7 +72,7 @@ import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.idea.util.string.collapseSpaces
import org.jetbrains.kotlin.j2k.ConverterSettings
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
import org.jetbrains.kotlin.name.FqNameBase
import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.codeFragmentUtil.suppressDiagnosticsInDebugMode
import org.jetbrains.kotlin.psi.psiUtil.*
@@ -692,7 +692,7 @@ public fun invokeOnceOnCommandFinish(action: () -> Unit) {
public fun String.quoteIfNeeded(): String = if (KotlinNameSuggester.isIdentifier(this)) this else "`$this`"
public fun FqNameBase.hasIdentifiersOnly(): Boolean = pathSegments().all { KotlinNameSuggester.isIdentifier(it.asString()) }
public fun FqNameUnsafe.hasIdentifiersOnly(): Boolean = pathSegments().all { KotlinNameSuggester.isIdentifier(it.asString()) }
public fun KtClass.createPrimaryConstructorIfAbsent(): KtPrimaryConstructor {
val constructor = getPrimaryConstructor()
@@ -24,14 +24,14 @@ import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingOffsetIndependentInt
import org.jetbrains.kotlin.psi.KtPackageDirective
public class ChangePackageToMatchDirectoryIntention : JetSelfTargetingOffsetIndependentIntention<KtPackageDirective>(
javaClass(), "", "Change file's package to match directory"
KtPackageDirective::class.java, "", "Change file's package to match directory"
) {
override fun isApplicableTo(element: KtPackageDirective): Boolean {
val file = element.getContainingJetFile()
if (file.packageMatchesDirectory()) return false
val fqNameByDirectory = file.getFqNameByDirectory()
if (!fqNameByDirectory.hasIdentifiersOnly()) {
if (!fqNameByDirectory.toUnsafe().hasIdentifiersOnly()) {
if (isIntentionBaseInspectionEnabled(file.project, element)) {
text = "File package doesn't match directory"
return true
@@ -46,7 +46,7 @@ public class ChangePackageToMatchDirectoryIntention : JetSelfTargetingOffsetInde
override fun applyTo(element: KtPackageDirective, editor: Editor) {
val file = element.getContainingJetFile()
val newFqName = file.getFqNameByDirectory()
if (!newFqName.hasIdentifiersOnly()) return
if (!newFqName.toUnsafe().hasIdentifiersOnly()) return
KotlinChangePackageRefactoring(file).run(newFqName)
}
}
}