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.BindingContext;
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorFactory;
|
import org.jetbrains.kotlin.resolve.DescriptorFactory;
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
|
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.model.ResolvedCall;
|
||||||
import org.jetbrains.kotlin.resolve.calls.util.UnderscoreUtilKt;
|
import org.jetbrains.kotlin.resolve.calls.util.UnderscoreUtilKt;
|
||||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue;
|
import org.jetbrains.kotlin.resolve.constants.ConstantValue;
|
||||||
@@ -228,7 +229,13 @@ public class PropertyCodegen {
|
|||||||
if (hasJvmFieldAnnotation(descriptor)) return false;
|
if (hasJvmFieldAnnotation(descriptor)) return false;
|
||||||
if (kind == OwnerKind.ERASED_INLINE_CLASS) 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) {
|
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");
|
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")
|
@TestMetadata("shapeOfInlineClassWithPrimitive.kt")
|
||||||
public void testShapeOfInlineClassWithPrimitive() throws Exception {
|
public void testShapeOfInlineClassWithPrimitive() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/shapeOfInlineClassWithPrimitive.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/shapeOfInlineClassWithPrimitive.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user