IC mangling: Generate version requirements to properties as well

Generate the requirements at JVM only.
This commit is contained in:
Ilmir Usmanov
2020-11-16 19:46:04 +01:00
parent 0d79ed1077
commit 7a18ab9094
7 changed files with 55 additions and 51 deletions
@@ -211,19 +211,9 @@ abstract class AbstractVersionRequirementTest : TestCaseWithTmpdir() {
"test.Ctor.<init>",
"test.Foo",
"test.Bar",
"test.result",
"test.simpleProp"
)
)
}
fun testInlineClassesAndRelevantDeclarations1430() {
doTest(
VersionRequirement.Version(1, 4, 30), DeprecationLevel.ERROR, null, ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, null,
fqNamesWithRequirements = listOf(
"test.simpleFun",
"test.aliasedFun",
"test.result",
)
)
}
}
@@ -130,7 +130,8 @@ class JvmVersionRequirementTest : AbstractVersionRequirementTest() {
fun testInlineClassReturnTypeMangled() {
// Class members returning inline class values are mangled,
// and have "since 1.4" version requirement along with "since 1.3" version requirement for inline class in signature
// and have "since 1.4", "require 1.4.30" version requirement along with
// "since 1.3" version requirement for inline class in signature
doTest(
VersionRequirement.Version(1, 4, 0), DeprecationLevel.ERROR, null, LANGUAGE_VERSION, null,
fqNamesWithRequirements = listOf(
@@ -140,42 +141,39 @@ class JvmVersionRequirementTest : AbstractVersionRequirementTest() {
customLanguageVersion = LanguageVersion.KOTLIN_1_4,
shouldBeSingleRequirement = false
)
doTest(
VersionRequirement.Version(1, 4, 30), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
fqNamesWithRequirements = listOf(
"test.C.propertyOfInlineClassType",
"test.C.returnsInlineClassType",
),
shouldBeSingleRequirement = false,
customLanguageVersion = LanguageVersion.KOTLIN_1_4
)
// Top-level functions and properties returning inline class values are NOT mangled,
// and have "since 1.3" version requirement for inline class in signature only.
doTest(
VersionRequirement.Version(1, 3, 0), DeprecationLevel.ERROR, null, LANGUAGE_VERSION, null,
fqNamesWithRequirements = listOf(
"test.propertyOfInlineClassType"
"test.propertyOfInlineClassType",
"test.returnsInlineClassType",
),
shouldBeSingleRequirement = true,
shouldBeSingleRequirement = false,
customLanguageVersion = LanguageVersion.KOTLIN_1_4
)
doTest(
VersionRequirement.Version(1, 3, 0), DeprecationLevel.ERROR, null, LANGUAGE_VERSION, null,
fqNamesWithRequirements = listOf(
"test.C.propertyOfInlineClassType"
),
shouldBeSingleRequirement = true,
customLanguageVersion = LanguageVersion.KOTLIN_1_3
)
// In Kotlin 1.3, all functions and properties returning inline class values are NOT mangled,
// and have "since 1.3" version requirement for inline class in signature only.
doTest(
VersionRequirement.Version(1, 4, 30), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
VersionRequirement.Version(1, 3, 0), DeprecationLevel.ERROR, null, LANGUAGE_VERSION, null,
fqNamesWithRequirements = listOf(
"test.propertyOfInlineClassType",
"test.C.propertyOfInlineClassType",
"test.C.returnsInlineClassTypeJvmName",
"test.returnsInlineClassType"
),
shouldBeSingleRequirement = true,
customLanguageVersion = LanguageVersion.KOTLIN_1_4
)
doTest(
VersionRequirement.Version(1, 4, 30), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
fqNamesWithRequirements = listOf(
"test.returnsInlineClassType",
"test.C.returnsInlineClassType"
),
shouldBeSingleRequirement = false,
customLanguageVersion = LanguageVersion.KOTLIN_1_4
shouldBeSingleRequirement = true,
customLanguageVersion = LanguageVersion.KOTLIN_1_3
)
}
@@ -195,4 +193,15 @@ class JvmVersionRequirementTest : AbstractVersionRequirementTest() {
)
)
}
fun testInlineClassesAndRelevantDeclarations1430() {
doTest(
VersionRequirement.Version(1, 4, 30), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
fqNamesWithRequirements = listOf(
"test.simpleFun",
"test.aliasedFun",
),
shouldBeSingleRequirement = false
)
}
}