Don't generate getter for private or internal inline class primary vals
This commit is contained in:
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorFactory;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
|
||||
import org.jetbrains.kotlin.resolve.InlineClassesUtilsKt;
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall;
|
||||
import org.jetbrains.kotlin.resolve.calls.util.UnderscoreUtilKt;
|
||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue;
|
||||
@@ -228,7 +229,13 @@ public class PropertyCodegen {
|
||||
if (hasJvmFieldAnnotation(descriptor)) return false;
|
||||
if (kind == OwnerKind.ERASED_INLINE_CLASS) return false;
|
||||
|
||||
return !Visibilities.isPrivate(descriptor.getVisibility());
|
||||
Visibility visibility = descriptor.getVisibility();
|
||||
if (InlineClassesUtilsKt.isInlineClass(descriptor.getContainingDeclaration())) {
|
||||
return visibility.isPublicAPI();
|
||||
}
|
||||
else {
|
||||
return !Visibilities.isPrivate(visibility);
|
||||
}
|
||||
}
|
||||
|
||||
public void generatePrimaryConstructorProperty(@NotNull KtParameter parameter, @NotNull PropertyDescriptor descriptor) {
|
||||
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
interface IValue {
|
||||
val value: Int
|
||||
}
|
||||
|
||||
inline class TestOverriding(override val value: Int) : IValue
|
||||
|
||||
inline class TestPublic(val value: Int)
|
||||
|
||||
inline class TestInternal(internal val value: Int)
|
||||
|
||||
inline class TestPrivate(private val value: Int)
|
||||
+5
@@ -304,6 +304,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/noBridgesForErasedInlineClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("primaryValsWithDifferentVisibilities.kt")
|
||||
public void testPrimaryValsWithDifferentVisibilities() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/primaryValsWithDifferentVisibilities.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("shapeOfInlineClassWithPrimitive.kt")
|
||||
public void testShapeOfInlineClassWithPrimitive() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/shapeOfInlineClassWithPrimitive.kt");
|
||||
|
||||
Reference in New Issue
Block a user