== Test_1 == class Test_1 { @Target(AnnotationTarget.VALUE_PARAMETER) annotation class Range(val min: Long = 0) fun foo(@Range(min = -90L) x: Int) = Unit // KtPrefixExpression isn't marked as BindingContext.USED_AS_EXPRESSION } --------------------- ===================== == foo == fun foo(@Range(min = -90L) x: Int) = Unit // KtPrefixExpression isn't marked as BindingContext.USED_AS_EXPRESSION --------------------- : Int NEW: magic[FAKE_INITIALIZER](@Range(min = -90L) x: Int) -> Unit : Unit NEW: r(Unit) -> ===================== == Test_2 == class Test_2 { @Target(AnnotationTarget.FUNCTION) annotation class Range(val min: Long = 0) @Range(min = -90L) // KtPrefixExpression is marked as BindingContext.USED_AS_EXPRESSION fun foo(x: Int) = Unit } --------------------- ===================== == foo == @Range(min = -90L) // KtPrefixExpression is marked as BindingContext.USED_AS_EXPRESSION fun foo(x: Int) = Unit --------------------- : Int NEW: magic[FAKE_INITIALIZER](x: Int) -> Unit : Unit NEW: r(Unit) -> ===================== == Test_3 == class Test_3 { @Target(AnnotationTarget.EXPRESSION) annotation class Range(val min: Long = 0) fun foo(x: Int) = @Range(min = -90L) Unit } --------------------- ===================== == foo == fun foo(x: Int) = @Range(min = -90L) Unit --------------------- : Int NEW: magic[FAKE_INITIALIZER](x: Int) -> Unit : Unit NEW: r(Unit) -> @Range(min = -90L) Unit : Unit COPY =====================