Don't generate backing field for erased inline class

This commit is contained in:
Mikhail Zarechenskiy
2018-02-05 00:04:28 +03:00
parent b08a32af2f
commit 9d05fac771
4 changed files with 42 additions and 0 deletions
@@ -318,6 +318,10 @@ public class PropertyCodegen {
return false;
}
if (kind == OwnerKind.ERASED_INLINE_CLASS) {
return false;
}
if (p instanceof KtProperty && ((KtProperty) p).hasDelegate()) {
generatePropertyDelegateAccess((KtProperty) p, descriptor, delegateAnnotations);
}
@@ -0,0 +1,7 @@
// !LANGUAGE: +InlineClasses
inline class Foo(val l: Long) {
fun empty() {}
fun param(x: Double) {}
fun Any.extension(y: String) {}
}
@@ -0,0 +1,16 @@
@kotlin.Metadata
public final static class Foo$Erased {
public final static method empty(p0: long): void
public final static method extension(p0: long, @org.jetbrains.annotations.NotNull p1: java.lang.Object, @org.jetbrains.annotations.NotNull p2: java.lang.String): void
public final static method param(p0: long, p1: double): void
}
@kotlin.Metadata
public final class Foo {
private final field l: long
public method <init>(p0: long): void
public final method empty(): void
public final method extension(@org.jetbrains.annotations.NotNull p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: java.lang.String): void
public final method getL(): long
public final method param(p0: double): void
}
@@ -259,6 +259,21 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
}
}
@TestMetadata("compiler/testData/codegen/bytecodeListing/inlineClasses")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class InlineClasses extends AbstractBytecodeListingTest {
public void testAllFilesPresentInInlineClasses() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/bytecodeListing/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true);
}
@TestMetadata("shapeOfInlineClassWithPrimitive.kt")
public void testShapeOfInlineClassWithPrimitive() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeListing/inlineClasses/shapeOfInlineClassWithPrimitive.kt");
doTest(fileName);
}
}
@TestMetadata("compiler/testData/codegen/bytecodeListing/specialBridges")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)