Rename isHeader to isExpect in descriptors
This commit is contained in:
committed by
Mikhail Glukhikh
parent
fd6eab38e5
commit
c8ee424f67
+3
-3
@@ -56,7 +56,7 @@ val ModuleDescriptor.allImplementingCompatibleModules
|
||||
class PlatformHeaderAnnotator : Annotator {
|
||||
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
|
||||
val declaration = element as? KtDeclaration ?: return
|
||||
if (!isHeaderDeclaration(declaration)) return
|
||||
if (!isExpectDeclaration(declaration)) return
|
||||
|
||||
if (TargetPlatformDetector.getPlatform(declaration.containingKtFile) !is TargetPlatform.Common) return
|
||||
|
||||
@@ -64,7 +64,7 @@ class PlatformHeaderAnnotator : Annotator {
|
||||
if (implementingModules.isEmpty()) return
|
||||
|
||||
val descriptor = declaration.toDescriptor() as? MemberDescriptor ?: return
|
||||
if (!descriptor.isHeader) return
|
||||
if (!descriptor.isExpect) return
|
||||
|
||||
val trace = BindingTraceContext()
|
||||
for (module in implementingModules) {
|
||||
@@ -80,7 +80,7 @@ class PlatformHeaderAnnotator : Annotator {
|
||||
KotlinPsiChecker().annotateElement(declaration, holder, SimpleDiagnostics(filteredList))
|
||||
}
|
||||
|
||||
private fun isHeaderDeclaration(declaration: KtDeclaration): Boolean {
|
||||
private fun isExpectDeclaration(declaration: KtDeclaration): Boolean {
|
||||
return declaration.hasExpectModifier() ||
|
||||
declaration is KtClassOrObject && KtPsiUtil.getOutermostClassOrObject(declaration)?.hasExpectModifier() == true
|
||||
}
|
||||
|
||||
+2
-2
@@ -148,7 +148,7 @@ private val OVERRIDE_RENDERER = DescriptorRenderer.withOptions {
|
||||
private fun PropertyDescriptor.wrap(): PropertyDescriptor {
|
||||
val delegate = copy(containingDeclaration, Modality.OPEN, visibility, kind, true) as PropertyDescriptor
|
||||
val newDescriptor = object : PropertyDescriptor by delegate {
|
||||
override fun isHeader() = false
|
||||
override fun isExpect() = false
|
||||
}
|
||||
newDescriptor.setSingleOverridden(this)
|
||||
return newDescriptor
|
||||
@@ -156,7 +156,7 @@ private fun PropertyDescriptor.wrap(): PropertyDescriptor {
|
||||
|
||||
private fun FunctionDescriptor.wrap(): FunctionDescriptor {
|
||||
return object : FunctionDescriptor by this {
|
||||
override fun isHeader() = false
|
||||
override fun isExpect() = false
|
||||
override fun getModality() = Modality.OPEN
|
||||
override fun getReturnType() = this@wrap.returnType?.approximateFlexibleTypes(preferNotNull = true, preferStarForRaw = true)
|
||||
override fun getOverriddenDescriptors() = listOf(this@wrap)
|
||||
|
||||
+3
-3
@@ -46,14 +46,14 @@ class KotlinMultiplatformJUnitRecognizer : JUnitRecognizer() {
|
||||
|
||||
val bindingContext = origin.analyze(BodyResolveMode.PARTIAL)
|
||||
val methodDescriptor = bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, origin] ?: return false
|
||||
return methodDescriptor.annotations.getAllAnnotations().any { it.isHeaderOfAnnotation("org.junit.Test", implModules) }
|
||||
return methodDescriptor.annotations.getAllAnnotations().any { it.isExpectOfAnnotation("org.junit.Test", implModules) }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private fun AnnotationWithTarget.isHeaderOfAnnotation(fqName: String, implModules: Collection<ModuleDescriptor>): Boolean {
|
||||
private fun AnnotationWithTarget.isExpectOfAnnotation(fqName: String, implModules: Collection<ModuleDescriptor>): Boolean {
|
||||
val annotationClass = annotation.type.constructor.declarationDescriptor as? ClassifierDescriptorWithTypeParameters ?: return false
|
||||
if (!annotationClass.isHeader) return false
|
||||
if (!annotationClass.isExpect) return false
|
||||
|
||||
return implModules
|
||||
.any { module ->
|
||||
|
||||
@@ -65,13 +65,13 @@ internal fun KtDeclaration.headerDeclarationIfAny(): KtDeclaration? {
|
||||
return DescriptorToSourceUtils.descriptorToDeclaration(headerDescriptor) as? KtDeclaration
|
||||
}
|
||||
|
||||
internal fun KtDeclaration.isHeaderOrHeaderClassMember() =
|
||||
internal fun KtDeclaration.isExpectOrExpectClassMember() =
|
||||
hasExpectModifier() || (containingClassOrObject?.hasExpectModifier() ?: false)
|
||||
|
||||
internal fun DeclarationDescriptor.liftToHeader(): DeclarationDescriptor? {
|
||||
if (this is MemberDescriptor) {
|
||||
return when {
|
||||
isHeader -> this
|
||||
isExpect -> this
|
||||
isImpl -> headerDescriptor()
|
||||
else -> null
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ fun navigateToPlatformImplementation(e: MouseEvent?, declaration: KtDeclaration)
|
||||
|
||||
private fun DeclarationDescriptor.headerImplementations(): Collection<DeclarationDescriptor> {
|
||||
if (this is MemberDescriptor) {
|
||||
if (!this.isHeader) return emptyList()
|
||||
if (!this.isExpect) return emptyList()
|
||||
|
||||
return module.allImplementingCompatibleModules.flatMap { it.implementationsOf(this) }
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ abstract class AbstractAddAccessorsIntention(
|
||||
return null
|
||||
}
|
||||
val descriptor = element.resolveToDescriptorIfAny() as? CallableMemberDescriptor ?: return null
|
||||
if (descriptor.isHeader) return null
|
||||
if (descriptor.isExpect) return null
|
||||
|
||||
if (addSetter && (!element.isVar || element.setter != null)) return null
|
||||
if (addGetter && element.getter != null) return null
|
||||
|
||||
+2
-2
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.headerImplementations
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.isHeaderOrHeaderClassMember
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.isExpectOrExpectClassMember
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.liftToHeader
|
||||
import org.jetbrains.kotlin.idea.intentions.SelfTargetingRangeIntention
|
||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.getReturnTypeReference
|
||||
@@ -111,7 +111,7 @@ class ConvertMemberToExtensionIntention : SelfTargetingRangeIntention<KtCallable
|
||||
val descriptor = element.unsafeResolveToDescriptor()
|
||||
val containingClass = descriptor.containingDeclaration as ClassDescriptor
|
||||
|
||||
val isEffectiveHeader = allowHeader && element.isHeaderOrHeaderClassMember()
|
||||
val isEffectiveHeader = allowHeader && element.isExpectOrExpectClassMember()
|
||||
|
||||
val file = element.containingKtFile
|
||||
val project = file.project
|
||||
|
||||
@@ -36,7 +36,7 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.getDeepestSuperDeclarations
|
||||
import org.jetbrains.kotlin.idea.core.getDirectlyOverriddenDeclarations
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.headerImplementations
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.isHeaderOrHeaderClassMember
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.isExpectOrExpectClassMember
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.liftToHeader
|
||||
import org.jetbrains.kotlin.idea.util.getResolutionScope
|
||||
import org.jetbrains.kotlin.psi.KtBlockExpression
|
||||
@@ -184,7 +184,7 @@ abstract class CallableRefactoring<out T: CallableDescriptor>(
|
||||
fun getAffectedCallables(project: Project, descriptorsForChange: Collection<CallableDescriptor>): List<PsiElement> {
|
||||
val baseCallables = descriptorsForChange.mapNotNull { DescriptorToSourceUtilsIde.getAnyDeclaration(project, it) }
|
||||
return baseCallables + baseCallables.flatMapTo(HashSet<PsiElement>()) { callable ->
|
||||
if (callable is KtDeclaration && callable.isHeaderOrHeaderClassMember()) {
|
||||
if (callable is KtDeclaration && callable.isExpectOrExpectClassMember()) {
|
||||
callable.headerImplementations()
|
||||
}
|
||||
else {
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.headerImplementations
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.isHeaderOrHeaderClassMember
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.isExpectOrExpectClassMember
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallableDefinitionUsage
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -98,7 +98,7 @@ class KotlinChangeSignatureData(
|
||||
primaryCallables + primaryCallables.flatMapTo(HashSet<UsageInfo>()) { primaryFunction ->
|
||||
val primaryDeclaration = primaryFunction.declaration as? KtDeclaration ?: return@flatMapTo emptyList()
|
||||
|
||||
if (primaryDeclaration.isHeaderOrHeaderClassMember()) {
|
||||
if (primaryDeclaration.isExpectOrExpectClassMember()) {
|
||||
return@flatMapTo primaryDeclaration.headerImplementations().mapNotNull {
|
||||
val descriptor = it.unsafeResolveToDescriptor()
|
||||
val callableDescriptor = when (descriptor) {
|
||||
|
||||
Reference in New Issue
Block a user