Add a set of new tests for KT-27075 (create expected class) + some fixes

This commit is contained in:
Mikhail Glukhikh
2018-11-20 13:48:48 +03:00
parent 4ab4358d22
commit f31428257d
37 changed files with 400 additions and 34 deletions
@@ -41,6 +41,8 @@ import org.jetbrains.kotlin.psi.findDocComment.findDocComment
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
import org.jetbrains.kotlin.renderer.*
import org.jetbrains.kotlin.renderer.DescriptorRenderer.Companion.withOptions
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier.*
import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker
import org.jetbrains.kotlin.resolve.descriptorUtil.setSingleOverridden
import org.jetbrains.kotlin.util.findCallableMemberBySignature
@@ -118,8 +120,8 @@ interface OverrideMemberChooserObject : ClassMember {
}
fun OverrideMemberChooserObject.generateTopLevelActual(
copyDoc: Boolean,
project: Project
project: Project,
copyDoc: Boolean
) = generateMember(null, copyDoc, project, forceActual = true, forceExpect = false)
fun OverrideMemberChooserObject.generateActualMember(
@@ -128,8 +130,8 @@ fun OverrideMemberChooserObject.generateActualMember(
) = generateMember(targetClass, copyDoc, targetClass.project, forceActual = true, forceExpect = false)
fun OverrideMemberChooserObject.generateTopLevelExpect(
copyDoc: Boolean,
project: Project
project: Project,
copyDoc: Boolean
) = generateMember(null, copyDoc, project, forceActual = false, forceExpect = true)
fun OverrideMemberChooserObject.generateExpectMember(
@@ -177,8 +179,6 @@ private fun OverrideMemberChooserObject.generateMember(
forceActual -> newMember.addModifier(KtTokens.ACTUAL_KEYWORD)
forceExpect -> if (targetClass == null) {
newMember.addModifier(KtTokens.EXPECT_KEYWORD)
} else {
newMember.makeNotActual()
}
targetClass?.hasActualModifier() == true -> {
val expectClassDescriptors =
@@ -191,9 +191,6 @@ private fun OverrideMemberChooserObject.generateMember(
newMember.addModifier(KtTokens.ACTUAL_KEYWORD)
}
}
else -> {
newMember.makeNotActual()
}
}
if (copyDoc) {
@@ -215,9 +212,9 @@ private fun OverrideMemberChooserObject.generateMember(
return newMember
}
private val OVERRIDE_RENDERER = DescriptorRenderer.withOptions {
private val OVERRIDE_RENDERER = withOptions {
defaultParameterValueRenderer = null
modifiers = setOf(DescriptorRendererModifier.OVERRIDE, DescriptorRendererModifier.ANNOTATIONS)
modifiers = setOf(OVERRIDE, ANNOTATIONS)
withDefinedIn = false
classifierNamePolicy = ClassifierNamePolicy.SOURCE_CODE_QUALIFIED
overrideRenderingPolicy = OverrideRenderingPolicy.RENDER_OVERRIDE
@@ -232,17 +229,20 @@ private val OVERRIDE_RENDERER = DescriptorRenderer.withOptions {
}
private val EXPECT_RENDERER = OVERRIDE_RENDERER.withOptions {
modifiers = DescriptorRendererModifier.ALL
renderConstructorKeyword = true
modifiers = setOf(VISIBILITY, MODALITY, OVERRIDE, INNER, MEMBER_KIND)
renderConstructorKeyword = false
secondaryConstructorsAsPrimary = false
renderDefaultVisibility = false
renderDefaultModality = false
renderConstructorDelegation = true
renderAnnotationPropertiesInPrimaryConstructor = true
renderTypeExpansions = true
}
private val ACTUAL_RENDERER = EXPECT_RENDERER.withOptions {
modifiers += ACTUAL
actualPropertiesInPrimaryConstructor = true
renderTypeExpansions = false
renderConstructorDelegation = true
}
private fun PropertyDescriptor.wrap(forceOverride: Boolean): PropertyDescriptor {