FIR: use Kotlin String constructors instead of java.lang ones
#KT-38437 fixed
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
// FULL_JDK
|
||||
|
||||
fun consumeString(s: String) {}
|
||||
|
||||
fun foo(
|
||||
byteArray: ByteArray,
|
||||
charArray: CharArray,
|
||||
intArray: IntArray,
|
||||
charset: java.nio.charset.Charset,
|
||||
stringBuilder: java.lang.StringBuilder,
|
||||
stringBuffer: java.lang.StringBuffer
|
||||
) {
|
||||
consumeString(String())
|
||||
consumeString(String(byteArray, 0, 1, charset))
|
||||
consumeString(String(byteArray, charset))
|
||||
consumeString(String(byteArray))
|
||||
consumeString(String(charArray))
|
||||
consumeString(String(charArray, 0, 1))
|
||||
consumeString(String(intArray, 0, 1))
|
||||
consumeString(String(stringBuffer))
|
||||
consumeString(String(stringBuilder))
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
FILE: stringConstructors.kt
|
||||
public final fun consumeString(s: R|kotlin/String|): R|kotlin/Unit| {
|
||||
}
|
||||
public final fun foo(byteArray: R|kotlin/ByteArray|, charArray: R|kotlin/CharArray|, intArray: R|kotlin/IntArray|, charset: R|java/nio/charset/Charset|, stringBuilder: R|java/lang/StringBuilder|, stringBuffer: R|java/lang/StringBuffer|): R|kotlin/Unit| {
|
||||
R|/consumeString|(R|kotlin/String.String|())
|
||||
R|/consumeString|(R|kotlin/text/String|(R|<local>/byteArray|, Int(0), Int(1), R|<local>/charset|))
|
||||
R|/consumeString|(R|kotlin/text/String|(R|<local>/byteArray|, R|<local>/charset|))
|
||||
R|/consumeString|(R|kotlin/text/String|(R|<local>/byteArray|))
|
||||
R|/consumeString|(R|kotlin/text/String|(R|<local>/charArray|))
|
||||
R|/consumeString|(R|kotlin/text/String|(R|<local>/charArray|, Int(0), Int(1)))
|
||||
R|/consumeString|(R|kotlin/text/String|(R|<local>/intArray|, Int(0), Int(1)))
|
||||
R|/consumeString|(R|kotlin/text/String|(R|<local>/stringBuffer|))
|
||||
R|/consumeString|(R|kotlin/text/String|(R|<local>/stringBuilder|))
|
||||
}
|
||||
+5
@@ -233,6 +233,11 @@ public class FirDiagnosticsWithStdlibTestGenerated extends AbstractFirDiagnostic
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/simpleLazy.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("stringConstructors.kt")
|
||||
public void testStringConstructors() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/stringConstructors.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("toSortedMapWithComparator.kt")
|
||||
public void testToSortedMapWithComparator() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/toSortedMapWithComparator.kt");
|
||||
|
||||
@@ -71,13 +71,29 @@ class JvmMappedScope(
|
||||
}
|
||||
|
||||
// NOTE: No-arg constructors
|
||||
private val additionalConstructorBlackList = setOf(
|
||||
"java/lang/String.<init>()V",
|
||||
"java/lang/Throwable.<init>()V",
|
||||
"java/lang/Throwable.<init>(Ljava/lang/String;Ljava/lang/Throwable;)V",
|
||||
"java/lang/Throwable.<init>(Ljava/lang/Throwable;)V",
|
||||
"java/lang/Throwable.<init>(Ljava/lang/String;)V"
|
||||
)
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private val additionalConstructorBlackList = buildSet<String> {
|
||||
// kotlin.text.String pseudo-constructors should be used instead of java.lang.String constructors
|
||||
listOf(
|
||||
"",
|
||||
"Lkotlin/ByteArray;IILjava/nio/charset/Charset;",
|
||||
"Lkotlin/ByteArray;Ljava/nio/charset/Charset;",
|
||||
"Lkotlin/ByteArray;II",
|
||||
"Lkotlin/ByteArray;",
|
||||
"Lkotlin/CharArray;",
|
||||
"Lkotlin/CharArray;II",
|
||||
"Lkotlin/IntArray;II",
|
||||
"Ljava/lang/StringBuffer;",
|
||||
"Ljava/lang/StringBuilder;",
|
||||
).mapTo(this) { arguments -> "java/lang/String.<init>($arguments)V" }
|
||||
|
||||
listOf(
|
||||
"",
|
||||
"Ljava/lang/String;Ljava/lang/Throwable;",
|
||||
"Ljava/lang/Throwable;",
|
||||
"Ljava/lang/String;"
|
||||
).mapTo(this) { arguments -> "java/lang/Throwable.<init>($arguments)V" }
|
||||
}
|
||||
|
||||
fun prepareSignatures(klass: FirRegularClass): Signatures {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user