Value classes: treat @JvmInline value classes as inline classes
Report error on value classes without @JvmInline annotation. Do not check for @JvmInline annotation in value classes since it breaks reflection.
This commit is contained in:
+2
-1
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.builtins.isSuspendFunctionType
|
||||
import org.jetbrains.kotlin.builtins.transformSuspendFunctionToRuntimeFunctionType
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.resolve.isInlineClass
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.checker.SimpleClassicTypeSystemContext
|
||||
import org.jetbrains.kotlin.types.typeUtil.replaceArgumentsWithStarProjections
|
||||
@@ -115,7 +116,7 @@ fun <T : Any> mapType(
|
||||
|
||||
descriptor is ClassDescriptor -> {
|
||||
// NB if inline class is recursive, it's ok to map it as wrapped
|
||||
if (descriptor.isInline && !mode.needInlineClassWrapping) {
|
||||
if (descriptor.isInlineClass() && !mode.needInlineClassWrapping) {
|
||||
val expandedType = SimpleClassicTypeSystemContext.computeExpandedTypeForInlineClass(kotlinType) as KotlinType?
|
||||
if (expandedType != null) {
|
||||
return mapType(
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.types.typeUtil.representativeUpperBound
|
||||
fun shouldHideConstructorDueToInlineClassTypeValueParameters(descriptor: CallableMemberDescriptor): Boolean {
|
||||
val constructorDescriptor = descriptor as? ClassConstructorDescriptor ?: return false
|
||||
if (DescriptorVisibilities.isPrivate(constructorDescriptor.visibility)) return false
|
||||
if (constructorDescriptor.constructedClass.isInline) return false
|
||||
if (constructorDescriptor.constructedClass.isInlineClass()) return false
|
||||
if (DescriptorUtils.isSealedClass(constructorDescriptor.constructedClass)) return false
|
||||
|
||||
// TODO inner class in inline class
|
||||
|
||||
Reference in New Issue
Block a user