Add removing current file package name from fq name
This commit is contained in:
committed by
Mikhail Glukhikh
parent
d2e47aea01
commit
fd8205e317
+20
-7
@@ -36,6 +36,7 @@ import java.util.ArrayList
|
|||||||
class PsiRenderer(private val file: KtFile, analysisResult: AnalysisResult) : BaseRenderer {
|
class PsiRenderer(private val file: KtFile, analysisResult: AnalysisResult) : BaseRenderer {
|
||||||
val bindingContext = analysisResult.bindingContext
|
val bindingContext = analysisResult.bindingContext
|
||||||
private val annotations = mutableListOf<Annotator.AnnotationInfo>()
|
private val annotations = mutableListOf<Annotator.AnnotationInfo>()
|
||||||
|
private val filePackage = file.packageFqName.toString().replace(".", "/")
|
||||||
|
|
||||||
val descriptorRenderer = PsiDescriptorRenderer()
|
val descriptorRenderer = PsiDescriptorRenderer()
|
||||||
|
|
||||||
@@ -217,10 +218,12 @@ class PsiRenderer(private val file: KtFile, analysisResult: AnalysisResult) : Ba
|
|||||||
private val typeRenderer: DescriptorRenderer = DescriptorRenderer.withOptions {
|
private val typeRenderer: DescriptorRenderer = DescriptorRenderer.withOptions {
|
||||||
withDefinedIn = false
|
withDefinedIn = false
|
||||||
modifiers = emptySet()
|
modifiers = emptySet()
|
||||||
classifierNamePolicy = /*ClassifierNamePolicy.SOURCE_CODE_QUALIFIED*/object : ClassifierNamePolicy {
|
classifierNamePolicy = object : ClassifierNamePolicy {
|
||||||
override fun renderClassifier(classifier: ClassifierDescriptor, renderer: DescriptorRenderer): String {
|
override fun renderClassifier(classifier: ClassifierDescriptor, renderer: DescriptorRenderer): String {
|
||||||
return (if (classifier is TypeParameterDescriptor) renderer.renderName(classifier.name, false)
|
val fqName = (if (classifier is TypeParameterDescriptor) renderer.renderName(classifier.name, false)
|
||||||
else renderer.renderFqName(DescriptorUtils.getFqName(classifier))).replace(".", "/")
|
else renderer.renderFqName(DescriptorUtils.getFqName(classifier))).replace(".", "/")
|
||||||
|
|
||||||
|
return removeCurrentFilePackage(fqName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
includeAdditionalModifiers = false
|
includeAdditionalModifiers = false
|
||||||
@@ -254,8 +257,8 @@ class PsiRenderer(private val file: KtFile, analysisResult: AnalysisResult) : Ba
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderFqName(descriptor: DeclarationDescriptor): String {
|
private fun renderFqName(descriptor: DeclarationDescriptor, removeCurrentPackage: Boolean = true): String {
|
||||||
return generateSequence(descriptor) { it.containingDeclaration }
|
val fqName = generateSequence(descriptor) { it.containingDeclaration }
|
||||||
.fold("") { acc, desc ->
|
.fold("") { acc, desc ->
|
||||||
val name = when (desc) {
|
val name = when (desc) {
|
||||||
is LazyPackageDescriptor -> desc.fqName.toString().replace(".", "/")
|
is LazyPackageDescriptor -> desc.fqName.toString().replace(".", "/")
|
||||||
@@ -266,10 +269,20 @@ class PsiRenderer(private val file: KtFile, analysisResult: AnalysisResult) : Ba
|
|||||||
else -> if (desc is PackageFragmentDescriptor || desc is PackageViewDescriptor) "/" else "."
|
else -> if (desc is PackageFragmentDescriptor || desc is PackageViewDescriptor) "/" else "."
|
||||||
}
|
}
|
||||||
if (name == FqName.ROOT.toString() || desc is ModuleDescriptor) {
|
if (name == FqName.ROOT.toString() || desc is ModuleDescriptor) {
|
||||||
return acc
|
return@fold acc
|
||||||
}
|
}
|
||||||
return@fold "$name$separator$acc"
|
return@fold "$name$separator$acc"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return if (removeCurrentPackage) removeCurrentFilePackage(fqName) else fqName
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun removeCurrentFilePackage(fqName: String): String {
|
||||||
|
return if (fqName.startsWith(filePackage) && !fqName.substring(filePackage.length + 1).contains("/")) {
|
||||||
|
fqName.replaceFirst("$filePackage/", "")
|
||||||
|
} else {
|
||||||
|
fqName
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderReceiver(descriptor: CallableDescriptor, data: StringBuilder): ReceiverParameterDescriptor? {
|
private fun renderReceiver(descriptor: CallableDescriptor, data: StringBuilder): ReceiverParameterDescriptor? {
|
||||||
@@ -331,11 +344,11 @@ class PsiRenderer(private val file: KtFile, analysisResult: AnalysisResult) : Ba
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitPackageFragmentDescriptor(descriptor: PackageFragmentDescriptor, data: StringBuilder) {
|
override fun visitPackageFragmentDescriptor(descriptor: PackageFragmentDescriptor, data: StringBuilder) {
|
||||||
data.append("package-fragment ${renderFqName(descriptor)}")
|
data.append("package-fragment ${renderFqName(descriptor, removeCurrentPackage = false)}")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitPackageViewDescriptor(descriptor: PackageViewDescriptor, data: StringBuilder) {
|
override fun visitPackageViewDescriptor(descriptor: PackageViewDescriptor, data: StringBuilder) {
|
||||||
data.append("package ${renderFqName(descriptor)}")
|
data.append("package ${renderFqName(descriptor, removeCurrentPackage = false)}")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitVariableDescriptor(variable: VariableDescriptor, data: StringBuilder) {
|
override fun visitVariableDescriptor(variable: VariableDescriptor, data: StringBuilder) {
|
||||||
|
|||||||
Reference in New Issue
Block a user