idea-core.Utils: add extension to FqName to support root prefix
This commit is contained in:
@@ -17,10 +17,12 @@ import org.jetbrains.kotlin.idea.resolve.frontendService
|
||||
import org.jetbrains.kotlin.idea.util.getImplicitReceiversWithInstanceToExpression
|
||||
import org.jetbrains.kotlin.idea.util.getResolutionScope
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.parentOrNull
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
|
||||
import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore
|
||||
import org.jetbrains.kotlin.resolve.calls.CallResolver
|
||||
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
||||
@@ -158,6 +160,19 @@ fun FqName.quoteSegmentsIfNeeded(): String {
|
||||
|
||||
fun FqName.quoteIfNeeded() = FqName(quoteSegmentsIfNeeded())
|
||||
|
||||
fun FqName.withRootPrefixIfNeeded(targetElement: KtElement? = null) =
|
||||
if (canAddRootPrefix() && targetElement?.canAddRootPrefix() != false)
|
||||
FqName(QualifiedExpressionResolver.ROOT_PREFIX_FOR_IDE_RESOLUTION_MODE_WITH_DOT + asString())
|
||||
else
|
||||
this
|
||||
|
||||
fun FqName.canAddRootPrefix(): Boolean =
|
||||
!asString().startsWith(QualifiedExpressionResolver.ROOT_PREFIX_FOR_IDE_RESOLUTION_MODE_WITH_DOT) && !thisOrParentIsRoot()
|
||||
|
||||
fun FqName.thisOrParentIsRoot(): Boolean = parentOrNull()?.isRoot != false
|
||||
|
||||
fun KtElement.canAddRootPrefix(): Boolean = getParentOfTypes2<KtImportDirective, KtPackageDirective>() == null
|
||||
|
||||
fun isEnumCompanionPropertyWithEntryConflict(element: PsiElement, expectedName: String): Boolean {
|
||||
if (element !is KtProperty) return false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user