Represent raw types in IR using a special type annotation

This commit is contained in:
Dmitry Petrov
2020-09-03 15:20:21 +03:00
parent 714ab7c37f
commit 475522f938
5 changed files with 80 additions and 69 deletions
@@ -12,10 +12,7 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.FilteredAnnotations
import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrConstructor
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrFactory
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
@@ -112,27 +109,27 @@ class JvmGeneratorExtensions(private val generateFacades: Boolean = true) : Gene
private val kotlinJvmInternalPackage =
IrExternalPackageFragmentImpl(DescriptorlessExternalPackageFragmentSymbol(), JvmAnnotationNames.KOTLIN_JVM_INTERNAL)
private val flexibleNullabilityAnnotationClass = IrFactoryImpl.buildClass {
kind = ClassKind.ANNOTATION_CLASS
name = FLEXIBLE_NULLABILITY_ANNOTATION_FQ_NAME.shortName()
}.apply {
createImplicitParameterDeclarationWithWrappedDescriptor()
parent = kotlinIrInternalPackage
addConstructor {
isPrimary = true
private fun createSpecialAnnotationClass(fqn: FqName, parent: IrPackageFragment) =
IrFactoryImpl.buildClass {
kind = ClassKind.ANNOTATION_CLASS
name = fqn.shortName()
}.apply {
createImplicitParameterDeclarationWithWrappedDescriptor()
this.parent = parent
addConstructor {
isPrimary = true
}
}
}
private val enhancedNullabilityAnnotationClass = IrFactoryImpl.buildClass {
kind = ClassKind.ANNOTATION_CLASS
name = ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME.shortName()
}.apply {
createImplicitParameterDeclarationWithWrappedDescriptor()
parent = kotlinJvmInternalPackage
addConstructor {
isPrimary = true
}
}
private val flexibleNullabilityAnnotationClass =
createSpecialAnnotationClass(FLEXIBLE_NULLABILITY_ANNOTATION_FQ_NAME, kotlinIrInternalPackage)
private val rawTypeAnnotationClass =
createSpecialAnnotationClass(RAW_TYPE_ANNOTATION_FQ_NAME, kotlinIrInternalPackage)
// NB Class 'kotlin.jvm.internal.EnhancedNullability' doesn't exist anywhere in descriptors or in bytecode
private val enhancedNullabilityAnnotationClass =
createSpecialAnnotationClass(ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME, kotlinJvmInternalPackage)
override val flexibleNullabilityAnnotationConstructor: IrConstructor? =
flexibleNullabilityAnnotationClass.constructors.single()
@@ -140,11 +137,17 @@ class JvmGeneratorExtensions(private val generateFacades: Boolean = true) : Gene
override val enhancedNullabilityAnnotationConstructor: IrConstructor? =
enhancedNullabilityAnnotationClass.constructors.single()
override val rawTypeAnnotationConstructor: IrConstructor? =
rawTypeAnnotationClass.constructors.single()
companion object {
val FLEXIBLE_NULLABILITY_ANNOTATION_FQ_NAME =
IrBuiltIns.KOTLIN_INTERNAL_IR_FQN.child(Name.identifier("FlexibleNullability"))
val ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME: FqName =
JvmAnnotationNames.ENHANCED_NULLABILITY_ANNOTATION
val RAW_TYPE_ANNOTATION_FQ_NAME =
IrBuiltIns.KOTLIN_INTERNAL_IR_FQN.child(Name.identifier("RawType"))
}
}
@@ -298,7 +298,8 @@ abstract class AnnotationCodegen(
internal val internalAnnotations = setOf(
JvmGeneratorExtensions.FLEXIBLE_NULLABILITY_ANNOTATION_FQ_NAME,
JvmGeneratorExtensions.ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME
JvmGeneratorExtensions.ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME,
JvmGeneratorExtensions.RAW_TYPE_ANNOTATION_FQ_NAME
)
private fun getRetentionPolicy(irClass: IrClass): RetentionPolicy {
@@ -38,6 +38,9 @@ open class StubGeneratorExtensions {
open val enhancedNullabilityAnnotationConstructor: IrConstructor?
get() = null
open val rawTypeAnnotationConstructor: IrConstructor?
get() = null
companion object {
@JvmField
val EMPTY = StubGeneratorExtensions()
@@ -208,6 +208,10 @@ class TypeTranslator(
irAnnotations.addSpecialAnnotation(extensions.flexibleNullabilityAnnotationConstructor)
}
if (flexibleType is RawType) {
irAnnotations.addSpecialAnnotation(extensions.rawTypeAnnotationConstructor)
}
return irAnnotations
}
+45 -45
View File
@@ -59,23 +59,23 @@ FILE fqName:<root> fileName:/rawTypeInSignature.kt
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:testReturnsRawGenericInv visibility:public modality:FINAL <> (j:<root>.JRaw) returnType:@[FlexibleNullability] <root>.GenericInv<kotlin.Number>?
FUN name:testReturnsRawGenericInv visibility:public modality:FINAL <> (j:<root>.JRaw) returnType:@[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>?
VALUE_PARAMETER name:j index:0 type:<root>.JRaw
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericInv (j: <root>.JRaw): @[FlexibleNullability] <root>.GenericInv<kotlin.Number>? declared in <root>'
CALL 'public abstract fun returnsRawGenericInv (): @[FlexibleNullability] <root>.GenericInv<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] <root>.GenericInv<kotlin.Number>? origin=null
RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericInv (j: <root>.JRaw): @[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? declared in <root>'
CALL 'public abstract fun returnsRawGenericInv (): @[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? origin=null
$this: GET_VAR 'j: <root>.JRaw declared in <root>.testReturnsRawGenericInv' type=<root>.JRaw origin=null
FUN name:testReturnsRawGenericIn visibility:public modality:FINAL <> (j:<root>.JRaw) returnType:@[FlexibleNullability] <root>.GenericIn<kotlin.Number>?
FUN name:testReturnsRawGenericIn visibility:public modality:FINAL <> (j:<root>.JRaw) returnType:@[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>?
VALUE_PARAMETER name:j index:0 type:<root>.JRaw
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericIn (j: <root>.JRaw): @[FlexibleNullability] <root>.GenericIn<kotlin.Number>? declared in <root>'
CALL 'public abstract fun returnsRawGenericIn (): @[FlexibleNullability] <root>.GenericIn<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] <root>.GenericIn<kotlin.Number>? origin=null
RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericIn (j: <root>.JRaw): @[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? declared in <root>'
CALL 'public abstract fun returnsRawGenericIn (): @[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? origin=null
$this: GET_VAR 'j: <root>.JRaw declared in <root>.testReturnsRawGenericIn' type=<root>.JRaw origin=null
FUN name:testReturnsRawGenericOut visibility:public modality:FINAL <> (j:<root>.JRaw) returnType:@[FlexibleNullability] <root>.GenericOut<kotlin.Number>?
FUN name:testReturnsRawGenericOut visibility:public modality:FINAL <> (j:<root>.JRaw) returnType:@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>?
VALUE_PARAMETER name:j index:0 type:<root>.JRaw
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericOut (j: <root>.JRaw): @[FlexibleNullability] <root>.GenericOut<kotlin.Number>? declared in <root>'
CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] <root>.GenericOut<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] <root>.GenericOut<kotlin.Number>? origin=null
RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericOut (j: <root>.JRaw): @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? declared in <root>'
CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? origin=null
$this: GET_VAR 'j: <root>.JRaw declared in <root>.testReturnsRawGenericOut' type=<root>.JRaw origin=null
CLASS CLASS name:KRaw modality:FINAL visibility:public superTypes:[<root>.JRaw]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.KRaw
@@ -87,82 +87,82 @@ FILE fqName:<root> fileName:/rawTypeInSignature.kt
FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]
EXPRESSION_BODY
GET_VAR 'j: <root>.JRaw declared in <root>.KRaw.<init>' type=<root>.JRaw origin=null
FUN DELEGATED_MEMBER name:returnsRawGenericIn visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] <root>.GenericIn<kotlin.Number>?
FUN DELEGATED_MEMBER name:returnsRawGenericIn visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>?
overridden:
public abstract fun returnsRawGenericIn (): @[FlexibleNullability] <root>.GenericIn<kotlin.Number>? declared in <root>.JRaw
public abstract fun returnsRawGenericIn (): @[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun returnsRawGenericIn (): @[FlexibleNullability] <root>.GenericIn<kotlin.Number>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawGenericIn (): @[FlexibleNullability] <root>.GenericIn<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] <root>.GenericIn<kotlin.Number>? origin=null
RETURN type=kotlin.Nothing from='public open fun returnsRawGenericIn (): @[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawGenericIn (): @[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.returnsRawGenericIn' type=<root>.KRaw origin=null
FUN DELEGATED_MEMBER name:returnsRawGenericInv visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] <root>.GenericInv<kotlin.Number>?
FUN DELEGATED_MEMBER name:returnsRawGenericInv visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>?
overridden:
public abstract fun returnsRawGenericInv (): @[FlexibleNullability] <root>.GenericInv<kotlin.Number>? declared in <root>.JRaw
public abstract fun returnsRawGenericInv (): @[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun returnsRawGenericInv (): @[FlexibleNullability] <root>.GenericInv<kotlin.Number>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawGenericInv (): @[FlexibleNullability] <root>.GenericInv<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] <root>.GenericInv<kotlin.Number>? origin=null
RETURN type=kotlin.Nothing from='public open fun returnsRawGenericInv (): @[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawGenericInv (): @[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.returnsRawGenericInv' type=<root>.KRaw origin=null
FUN DELEGATED_MEMBER name:returnsRawGenericOut visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] <root>.GenericOut<kotlin.Number>?
FUN DELEGATED_MEMBER name:returnsRawGenericOut visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>?
overridden:
public abstract fun returnsRawGenericOut (): @[FlexibleNullability] <root>.GenericOut<kotlin.Number>? declared in <root>.JRaw
public abstract fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun returnsRawGenericOut (): @[FlexibleNullability] <root>.GenericOut<kotlin.Number>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] <root>.GenericOut<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] <root>.GenericOut<kotlin.Number>? origin=null
RETURN type=kotlin.Nothing from='public open fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.returnsRawGenericOut' type=<root>.KRaw origin=null
FUN DELEGATED_MEMBER name:returnsRawList visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] kotlin.collections.List<kotlin.Any?>?
FUN DELEGATED_MEMBER name:returnsRawList visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?
overridden:
public abstract fun returnsRawList (): @[FlexibleNullability] kotlin.collections.List<kotlin.Any?>? declared in <root>.JRaw
public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun returnsRawList (): @[FlexibleNullability] kotlin.collections.List<kotlin.Any?>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawList (): @[FlexibleNullability] kotlin.collections.List<kotlin.Any?>? declared in <root>.JRaw' type=@[FlexibleNullability] kotlin.collections.List<kotlin.Any?>? origin=null
RETURN type=kotlin.Nothing from='public open fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.returnsRawList' type=<root>.KRaw origin=null
FUN DELEGATED_MEMBER name:takesRawGenericIn visibility:public modality:OPEN <> ($this:<root>.KRaw, g:@[FlexibleNullability] <root>.GenericIn<kotlin.Number>?) returnType:kotlin.Unit
FUN DELEGATED_MEMBER name:takesRawGenericIn visibility:public modality:OPEN <> ($this:<root>.KRaw, g:@[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>?) returnType:kotlin.Unit
overridden:
public abstract fun takesRawGenericIn (g: @[FlexibleNullability] <root>.GenericIn<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw
public abstract fun takesRawGenericIn (g: @[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] <root>.GenericIn<kotlin.Number>?
VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>?
BLOCK_BODY
CALL 'public abstract fun takesRawGenericIn (g: @[FlexibleNullability] <root>.GenericIn<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
CALL 'public abstract fun takesRawGenericIn (g: @[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.takesRawGenericIn' type=<root>.KRaw origin=null
g: GET_VAR 'g: @[FlexibleNullability] <root>.GenericIn<kotlin.Number>? declared in <root>.KRaw.takesRawGenericIn' type=@[FlexibleNullability] <root>.GenericIn<kotlin.Number>? origin=null
FUN DELEGATED_MEMBER name:takesRawGenericInv visibility:public modality:OPEN <> ($this:<root>.KRaw, g:@[FlexibleNullability] <root>.GenericInv<kotlin.Number>?) returnType:kotlin.Unit
g: GET_VAR 'g: @[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? declared in <root>.KRaw.takesRawGenericIn' type=@[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>? origin=null
FUN DELEGATED_MEMBER name:takesRawGenericInv visibility:public modality:OPEN <> ($this:<root>.KRaw, g:@[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>?) returnType:kotlin.Unit
overridden:
public abstract fun takesRawGenericInv (g: @[FlexibleNullability] <root>.GenericInv<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw
public abstract fun takesRawGenericInv (g: @[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] <root>.GenericInv<kotlin.Number>?
VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>?
BLOCK_BODY
CALL 'public abstract fun takesRawGenericInv (g: @[FlexibleNullability] <root>.GenericInv<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
CALL 'public abstract fun takesRawGenericInv (g: @[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.takesRawGenericInv' type=<root>.KRaw origin=null
g: GET_VAR 'g: @[FlexibleNullability] <root>.GenericInv<kotlin.Number>? declared in <root>.KRaw.takesRawGenericInv' type=@[FlexibleNullability] <root>.GenericInv<kotlin.Number>? origin=null
FUN DELEGATED_MEMBER name:takesRawGenericOut visibility:public modality:OPEN <> ($this:<root>.KRaw, g:@[FlexibleNullability] <root>.GenericOut<kotlin.Number>?) returnType:kotlin.Unit
g: GET_VAR 'g: @[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? declared in <root>.KRaw.takesRawGenericInv' type=@[FlexibleNullability] @[RawType] <root>.GenericInv<kotlin.Number>? origin=null
FUN DELEGATED_MEMBER name:takesRawGenericOut visibility:public modality:OPEN <> ($this:<root>.KRaw, g:@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>?) returnType:kotlin.Unit
overridden:
public abstract fun takesRawGenericOut (g: @[FlexibleNullability] <root>.GenericOut<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw
public abstract fun takesRawGenericOut (g: @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] <root>.GenericOut<kotlin.Number>?
VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>?
BLOCK_BODY
CALL 'public abstract fun takesRawGenericOut (g: @[FlexibleNullability] <root>.GenericOut<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
CALL 'public abstract fun takesRawGenericOut (g: @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.takesRawGenericOut' type=<root>.KRaw origin=null
g: GET_VAR 'g: @[FlexibleNullability] <root>.GenericOut<kotlin.Number>? declared in <root>.KRaw.takesRawGenericOut' type=@[FlexibleNullability] <root>.GenericOut<kotlin.Number>? origin=null
FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:<root>.KRaw, list:@[FlexibleNullability] kotlin.collections.List<kotlin.Any?>?) returnType:kotlin.Unit
g: GET_VAR 'g: @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? declared in <root>.KRaw.takesRawGenericOut' type=@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? origin=null
FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:<root>.KRaw, list:@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?) returnType:kotlin.Unit
overridden:
public abstract fun takesRawList (list: @[FlexibleNullability] kotlin.collections.List<kotlin.Any?>?): kotlin.Unit declared in <root>.JRaw
public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?): kotlin.Unit declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
VALUE_PARAMETER name:list index:0 type:@[FlexibleNullability] kotlin.collections.List<kotlin.Any?>?
VALUE_PARAMETER name:list index:0 type:@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?
BLOCK_BODY
CALL 'public abstract fun takesRawList (list: @[FlexibleNullability] kotlin.collections.List<kotlin.Any?>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
CALL 'public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.takesRawList' type=<root>.KRaw origin=null
list: GET_VAR 'list: @[FlexibleNullability] kotlin.collections.List<kotlin.Any?>? declared in <root>.KRaw.takesRawList' type=@[FlexibleNullability] kotlin.collections.List<kotlin.Any?>? origin=null
list: GET_VAR 'list: @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? declared in <root>.KRaw.takesRawList' type=@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.JRaw