FIR: Do not build synthetic property named with first capital character
This commit is contained in:
+6
@@ -41760,6 +41760,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/syntheticExtensions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/syntheticExtensions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("firstCapitalizedProperty.kt")
|
||||||
|
public void testFirstCapitalizedProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/syntheticExtensions/firstCapitalizedProperty.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("fromTwoBases.kt")
|
@TestMetadata("fromTwoBases.kt")
|
||||||
public void testFromTwoBases() throws Exception {
|
public void testFromTwoBases() throws Exception {
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ object FirJavaSyntheticNamesProvider : FirSyntheticNamesProvider() {
|
|||||||
if (name.isSpecial) return emptyList()
|
if (name.isSpecial) return emptyList()
|
||||||
val identifier = name.identifier
|
val identifier = name.identifier
|
||||||
if (identifier.isEmpty()) return emptyList()
|
if (identifier.isEmpty()) return emptyList()
|
||||||
|
val firstChar = identifier[0]
|
||||||
|
if (!firstChar.isJavaIdentifierStart() || firstChar in 'A'..'Z') return emptyList()
|
||||||
val result = ArrayList<Name>(3)
|
val result = ArrayList<Name>(3)
|
||||||
val standardName = Name.identifier(GETTER_PREFIX + identifier.capitalizeAsciiOnly())
|
val standardName = Name.identifier(GETTER_PREFIX + identifier.capitalizeAsciiOnly())
|
||||||
val length = identifier.length
|
val length = identifier.length
|
||||||
|
|||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
// TARGET_BACKEND: JVM
|
||||||
|
|
||||||
|
// MODULE: lib
|
||||||
|
|
||||||
|
// FILE: test/UI.java
|
||||||
|
package test;
|
||||||
|
public class UI {
|
||||||
|
public static String foo() {
|
||||||
|
return "OK";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: Parent.java
|
||||||
|
public class Parent {
|
||||||
|
public String getUI() { return "fail"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: main(lib)
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
|
import test.UI;
|
||||||
|
|
||||||
|
class Derived : Parent() {
|
||||||
|
fun bar(): String = UI.foo()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
return Derived().bar()
|
||||||
|
}
|
||||||
+6
@@ -41586,6 +41586,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/syntheticExtensions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/syntheticExtensions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("firstCapitalizedProperty.kt")
|
||||||
|
public void testFirstCapitalizedProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/syntheticExtensions/firstCapitalizedProperty.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("fromTwoBases.kt")
|
@TestMetadata("fromTwoBases.kt")
|
||||||
public void testFromTwoBases() throws Exception {
|
public void testFromTwoBases() throws Exception {
|
||||||
|
|||||||
+6
@@ -41760,6 +41760,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/syntheticExtensions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/syntheticExtensions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("firstCapitalizedProperty.kt")
|
||||||
|
public void testFirstCapitalizedProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/syntheticExtensions/firstCapitalizedProperty.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("fromTwoBases.kt")
|
@TestMetadata("fromTwoBases.kt")
|
||||||
public void testFromTwoBases() throws Exception {
|
public void testFromTwoBases() throws Exception {
|
||||||
|
|||||||
+5
@@ -33454,6 +33454,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/syntheticExtensions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/syntheticExtensions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("firstCapitalizedProperty.kt")
|
||||||
|
public void testFirstCapitalizedProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/syntheticExtensions/firstCapitalizedProperty.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("fromTwoBases.kt")
|
@TestMetadata("fromTwoBases.kt")
|
||||||
public void testFromTwoBases() throws Exception {
|
public void testFromTwoBases() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/syntheticExtensions/fromTwoBases.kt");
|
runTest("compiler/testData/codegen/box/syntheticExtensions/fromTwoBases.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user