JVM_IR KT-47120 treat outer name as case-insensitive for local classes
This commit is contained in:
+12
@@ -5482,6 +5482,18 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/closures/kt4137.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47120.kt")
|
||||
public void testKt47120() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt47120.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47120a.kt")
|
||||
public void testKt47120a() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt47120a.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt5589.kt")
|
||||
public void testKt5589() throws Exception {
|
||||
|
||||
+3
-2
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.util.isAnonymousObject
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.NameUtils
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toUpperCaseAsciiOnly
|
||||
|
||||
abstract class InventNamesForLocalClasses(private val allowTopLevelCallables: Boolean) : FileLoweringPass {
|
||||
|
||||
@@ -185,8 +186,8 @@ abstract class InventNamesForLocalClasses(private val allowTopLevelCallables: Bo
|
||||
}
|
||||
|
||||
val simpleName = if (sourceName == null || sourceName.isSpecial) {
|
||||
val count = (anonymousClassesCount[enclosingName] ?: 0) + 1
|
||||
anonymousClassesCount[enclosingName] = count
|
||||
val count = (anonymousClassesCount[enclosingName.toUpperCaseAsciiOnly()] ?: 0) + 1
|
||||
anonymousClassesCount[enclosingName.toUpperCaseAsciiOnly()] = count
|
||||
count.toString()
|
||||
} else {
|
||||
sourceName
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
import java.util.*
|
||||
|
||||
fun box(): String {
|
||||
fun f() = {}
|
||||
fun F() = {}
|
||||
|
||||
val class1 = f().javaClass.name
|
||||
val class2 = F().javaClass.name
|
||||
|
||||
if (class1.uppercase(Locale.ENGLISH) != class2.uppercase(Locale.ENGLISH))
|
||||
return "OK"
|
||||
else
|
||||
return "$class1 $class2"
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
// FULL_JDK
|
||||
import java.util.*
|
||||
|
||||
fun box(): String {
|
||||
fun f(): Any {
|
||||
fun g() = object {}
|
||||
return g()
|
||||
}
|
||||
|
||||
fun F(): Any {
|
||||
fun g() = object {}
|
||||
return g()
|
||||
}
|
||||
|
||||
val class1 = f().javaClass.name
|
||||
val class2 = F().javaClass.name
|
||||
|
||||
if (class1.uppercase(Locale.ENGLISH) != class2.uppercase(Locale.ENGLISH))
|
||||
return "OK"
|
||||
else
|
||||
return "$class1 $class2"
|
||||
}
|
||||
+12
@@ -5482,6 +5482,18 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/closures/kt4137.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47120.kt")
|
||||
public void testKt47120() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt47120.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47120a.kt")
|
||||
public void testKt47120a() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt47120a.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt5589.kt")
|
||||
public void testKt5589() throws Exception {
|
||||
|
||||
+12
@@ -5482,6 +5482,18 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/closures/kt4137.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47120.kt")
|
||||
public void testKt47120() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt47120.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt47120a.kt")
|
||||
public void testKt47120a() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt47120a.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt5589.kt")
|
||||
public void testKt5589() throws Exception {
|
||||
|
||||
+10
@@ -4778,6 +4778,16 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/closures/kt4137.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt47120.kt")
|
||||
public void testKt47120() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt47120.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt47120a.kt")
|
||||
public void testKt47120a() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt47120a.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kt5589.kt")
|
||||
public void testKt5589() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/closures/kt5589.kt");
|
||||
|
||||
Reference in New Issue
Block a user