== 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 } --------------------- L0: 1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == fun foo(@Range(min = -90L) x: Int) = Unit // KtPrefixExpression isn't marked as BindingContext.USED_AS_EXPRESSION --------------------- L0: 1 v(@Range(min = -90L) x: Int) magic[FAKE_INITIALIZER](@Range(min = -90L) x: Int) -> w(x|) r(Unit) -> ret(*|) L1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == 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 } --------------------- L0: 1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == @Range(min = -90L) // KtPrefixExpression is marked as BindingContext.USED_AS_EXPRESSION fun foo(x: Int) = Unit --------------------- L0: 1 v(x: Int) magic[FAKE_INITIALIZER](x: Int) -> w(x|) r(Unit) -> ret(*|) L1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == Test_3 == class Test_3 { @Target(AnnotationTarget.EXPRESSION) annotation class Range(val min: Long = 0) fun foo(x: Int) = @Range(min = -90L) Unit } --------------------- L0: 1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == fun foo(x: Int) = @Range(min = -90L) Unit --------------------- L0: 1 v(x: Int) magic[FAKE_INITIALIZER](x: Int) -> w(x|) r(Unit) -> ret(*|) L1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] =====================