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:
Ilmir Usmanov
2020-11-19 02:20:37 +01:00
parent 6c68660ffd
commit 92f1681de0
100 changed files with 2668 additions and 53 deletions
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirClassImpl
import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap
import org.jetbrains.kotlin.descriptors.commonizer.utils.intern
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.isInlineClass
object CirClassFactory {
fun create(source: ClassDescriptor): CirClass = create(
@@ -28,7 +29,7 @@ object CirClassFactory {
companion = source.companionObjectDescriptor?.name?.intern(),
isCompanion = source.isCompanionObject,
isData = source.isData,
isInline = source.isInline,
isInline = source.isInlineClass(),
isInner = source.isInner,
isExternal = source.isExternal
).apply {
@@ -229,6 +229,7 @@ internal class ComparingDeclarationsVisitor(
context.assertFieldsEqual(expected::isCompanionObject, actual::isCompanionObject)
context.assertFieldsEqual(expected::isData, actual::isData)
context.assertFieldsEqual(expected::isInline, actual::isInline)
context.assertFieldsEqual(expected::isValue, actual::isValue)
context.assertFieldsEqual(expected::isInner, actual::isInner)
context.assertFieldsEqual(expected::isExternal, actual::isExternal)
context.assertFieldsEqual(expected::isExpect, actual::isExpect)