Refactor KClassValue to store ClassLiteralValue internally
Only invariant array projections and non-null element types will be supported soon (see KT-26568), so it makes no sense to store the complete type in KClassValue. What we need is only the ClassId of the class, and the number of times it's wrapped into kotlin/Array, which is exactly what ClassLiteralValue represents. This change helps in decoupling annotation values from descriptors/types. The only constant value that depends on descriptors is now AnnotationValue. #KT-26582 Fixed
This commit is contained in:
@@ -85,7 +85,7 @@ class ConstantValueGenerator(
|
||||
is AnnotationValue -> generateAnnotationConstructorCall(constantValue.value)
|
||||
|
||||
is KClassValue -> {
|
||||
val classifierKtType = constantValue.value
|
||||
val classifierKtType = constantValue.getArgumentType(moduleDescriptor)
|
||||
val classifierDescriptor = classifierKtType.constructor.declarationDescriptor
|
||||
?: throw AssertionError("Unexpected KClassValue: $classifierKtType")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user