提交 f283f2db 编写于 作者: D Dmitriy Novozhilov 提交者: Mikhail Glukhikh

[FIR] Improve diagnostic reporting & don't use error symbol for candidate if possible

Also introduce few new diagnostics:
- NONE_APPLICABLE more many inapplicable candidates
- HIDDEN for visible candidates
上级 5c0528b6
......@@ -10,14 +10,14 @@ FILE: default.kt
R|/foo|(Int(1), Double(2.0))
R|/foo|(Int(1), Double(2.0), Boolean(true))
R|/foo|(Int(1), third = Boolean(true))
<Inapplicable(PARAMETER_MAPPING_ERROR): [/foo]>#()
<Inapplicable(PARAMETER_MAPPING_ERROR): [/foo]>#(Int(0), Double(0.0), Boolean(false), String())
<Inapplicable(PARAMETER_MAPPING_ERROR): /foo>#()
<Inapplicable(PARAMETER_MAPPING_ERROR): /foo>#(Int(0), Double(0.0), Boolean(false), String())
R|/bar|(Int(1), third = Boolean(true))
R|/bar|(Int(1), Double(2.0), Boolean(true))
R|/bar|(Int(1), Double(2.0), Boolean(true), String(my))
<Inapplicable(PARAMETER_MAPPING_ERROR): [/bar]>#(Int(1), Boolean(true))
<Inapplicable(PARAMETER_MAPPING_ERROR): /bar>#(Int(1), Boolean(true))
R|/baz|(Int(1))
R|/baz|(Int(1), vararg(String(my), String(yours)))
R|/baz|(Int(1), z = Boolean(true))
<Inapplicable(INAPPLICABLE): [/baz]>#(Int(0), String(), Boolean(false))
<Inapplicable(INAPPLICABLE): /baz>#(Int(0), String(), Boolean(false))
}
......@@ -22,8 +22,8 @@ FILE: defaultFromOverrides.kt
public final fun foo(a: R|A|): R|kotlin/Unit| {
R|<local>/a|.R|/A.foo|()
R|<local>/a|.R|/A.foo|(Int(1))
R|<local>/a|.<Inapplicable(PARAMETER_MAPPING_ERROR): [/A.bar]>#()
R|<local>/a|.<Inapplicable(PARAMETER_MAPPING_ERROR): [/A.bar]>#(String())
R|<local>/a|.<Inapplicable(PARAMETER_MAPPING_ERROR): /A.bar>#()
R|<local>/a|.<Inapplicable(PARAMETER_MAPPING_ERROR): /A.bar>#(String())
R|<local>/a|.R|/A.bar|(y = Int(1))
R|<local>/a|.R|/A.bar|(String(), Int(2))
}
......@@ -20,9 +20,9 @@ FILE: integerLiteralTypes.kt
R|/takeLong|(Long(1))
}
public final fun test_2(): R|kotlin/Unit| {
<Inapplicable(INAPPLICABLE): [/takeInt]>#(Long(10000000000))
<Inapplicable(INAPPLICABLE): /takeInt>#(Long(10000000000))
R|/takeLong|(Long(10000000000))
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(1000))
<Inapplicable(INAPPLICABLE): /takeByte>#(Int(1000))
}
public final fun test_3(): R|kotlin/Unit| {
R|/takeInt|(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
......@@ -46,8 +46,8 @@ FILE: integerLiteralTypes.kt
))
}
public final fun test_5(): R|kotlin/Unit| {
<Inapplicable(INAPPLICABLE): [/takeString]>#(Int(1))
<Inapplicable(INAPPLICABLE): [/takeString]>#(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
<Inapplicable(INAPPLICABLE): /takeString>#(Int(1))
<Inapplicable(INAPPLICABLE): /takeString>#(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
^ Int(1)
}
))
......
......@@ -5,6 +5,6 @@ FILE: main.kt
}
public final fun test(array: R|kotlin/Array<B>|): R|kotlin/Unit| {
Q|A|.R|/A.take|(R|<local>/array|)
<Inapplicable(INAPPLICABLE): [/takeA]>#(R|<local>/array|)
<Inapplicable(INAPPLICABLE): /takeA>#(R|<local>/array|)
R|/takeOutA|(R|<local>/array|)
}
......@@ -18,11 +18,11 @@ FILE: lambda.kt
^@foo Unit
}
)
<Inapplicable(PARAMETER_MAPPING_ERROR): [/foo]>#(Int(1), <L> = foo@fun <anonymous>(): R|kotlin/Unit| {
<Inapplicable(PARAMETER_MAPPING_ERROR): /foo>#(Int(1), <L> = foo@fun <anonymous>(): R|kotlin/Unit| {
^@foo Unit
}
)
<Inapplicable(PARAMETER_MAPPING_ERROR): [/foo]>#(f = foo@fun <anonymous>(): R|kotlin/Unit| {
<Inapplicable(PARAMETER_MAPPING_ERROR): /foo>#(f = foo@fun <anonymous>(): R|kotlin/Unit| {
^@foo Unit
}
, <L> = foo@fun <anonymous>(): R|kotlin/Unit| {
......@@ -45,11 +45,11 @@ FILE: lambda.kt
^@bar Unit
}
)
<Inapplicable(PARAMETER_MAPPING_ERROR): [/bar]>#(<L> = bar@fun <anonymous>(): R|kotlin/Unit| {
<Inapplicable(PARAMETER_MAPPING_ERROR): /bar>#(<L> = bar@fun <anonymous>(): R|kotlin/Unit| {
^@bar Unit
}
)
<Inapplicable(PARAMETER_MAPPING_ERROR): [/bar]>#(bar@fun <anonymous>(): R|kotlin/Unit| {
<Inapplicable(PARAMETER_MAPPING_ERROR): /bar>#(bar@fun <anonymous>(): R|kotlin/Unit| {
^@bar Unit
}
)
......@@ -61,15 +61,15 @@ FILE: lambda.kt
^@baz Unit
}
, Boolean(false))
<Inapplicable(PARAMETER_MAPPING_ERROR): [/baz]>#(<L> = baz@fun <anonymous>(): R|kotlin/Unit| {
<Inapplicable(PARAMETER_MAPPING_ERROR): /baz>#(<L> = baz@fun <anonymous>(): R|kotlin/Unit| {
^@baz Unit
}
)
<Inapplicable(PARAMETER_MAPPING_ERROR): [/baz]>#(<L> = baz@fun <anonymous>(): R|kotlin/Unit| {
<Inapplicable(PARAMETER_MAPPING_ERROR): /baz>#(<L> = baz@fun <anonymous>(): R|kotlin/Unit| {
^@baz Unit
}
)
<Inapplicable(PARAMETER_MAPPING_ERROR): [/baz]>#(other = Boolean(false), <L> = baz@fun <anonymous>(): R|kotlin/Unit| {
<Inapplicable(PARAMETER_MAPPING_ERROR): /baz>#(other = Boolean(false), <L> = baz@fun <anonymous>(): R|kotlin/Unit| {
^@baz Unit
}
)
......
......@@ -30,20 +30,20 @@ FILE: operatorsOverLiterals.kt
}
public final fun test_4(): R|kotlin/Unit| {
R|/takeByte|(Byte(1).R|kotlin/Byte.plus|(Byte(1)))
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(1).R|kotlin/Int.plus|(Int(127)))
<Inapplicable(INAPPLICABLE): /takeByte>#(Int(1).R|kotlin/Int.plus|(Int(127)))
R|/takeByte|(Byte(1).R|kotlin/Byte.minus|(Byte(1)))
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(100).R|kotlin/Int.unaryMinus|().R|kotlin/Int.minus|(Int(100)))
<Inapplicable(INAPPLICABLE): /takeByte>#(Int(100).R|kotlin/Int.unaryMinus|().R|kotlin/Int.minus|(Int(100)))
R|/takeByte|(Byte(10).R|kotlin/Byte.times|(Byte(10)))
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(100).R|kotlin/Int.times|(Int(100)))
<Inapplicable(INAPPLICABLE): /takeByte>#(Int(100).R|kotlin/Int.times|(Int(100)))
<Unresolved name: taleByte>#(Int(10).R|kotlin/Int.div|(Int(10)))
R|/takeByte|(Byte(100).R|kotlin/Byte.rem|(Byte(10)))
R|/takeByte|(Int(1000).R|kotlin/Int.rem|(Byte(10)))
R|/takeByte|(Int(1000).R|<local>/and|(Byte(100)))
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(128).R|kotlin/Int.and|(Int(511)))
<Inapplicable(INAPPLICABLE): /takeByte>#(Int(128).R|kotlin/Int.and|(Int(511)))
R|/takeByte|(Byte(100).R|<local>/or|(Byte(100)))
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(1000).R|kotlin/Int.or|(Int(0)))
<Inapplicable(INAPPLICABLE): /takeByte>#(Int(1000).R|kotlin/Int.or|(Int(0)))
R|/takeByte|(Int(511).R|kotlin/Int.xor|(Int(511)))
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(512).R|kotlin/Int.xor|(Int(511)))
<Inapplicable(INAPPLICABLE): /takeByte>#(Int(512).R|kotlin/Int.xor|(Int(511)))
}
public final fun test_5(): R|kotlin/Unit| {
R|/takeByte|(Byte(1).R|kotlin/Byte.unaryMinus|())
......@@ -51,11 +51,11 @@ FILE: operatorsOverLiterals.kt
R|/takeByte|(Byte(1).R|<local>/inv|())
}
public final fun test_6(): R|kotlin/Unit| {
<Inapplicable(INAPPLICABLE): [/takeByte]>#(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
<Inapplicable(INAPPLICABLE): /takeByte>#(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
^ Int(127).R|kotlin/Int.plus|(Int(1))
}
))
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(1).R|<local>/plus|(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
<Inapplicable(INAPPLICABLE): /takeByte>#(Int(1).R|<local>/plus|(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
^ Int(1)
}
)))
......
......@@ -7,11 +7,11 @@ FILE: simple.kt
R|/foo|(Int(1), Double(2.0), fourth = String(???), third = Boolean(false))
R|/foo|(Int(1), second = Double(3.14), third = Boolean(false), fourth = String(!?))
R|/foo|(third = Boolean(false), second = Double(2.71), fourth = String(?!), first = Int(0))
<Inapplicable(PARAMETER_MAPPING_ERROR): [/foo]>#()
<Inapplicable(INAPPLICABLE): [/foo]>#(Double(0.0), Boolean(false), Int(0), String())
<Inapplicable(PARAMETER_MAPPING_ERROR): /foo>#()
<Inapplicable(INAPPLICABLE): /foo>#(Double(0.0), Boolean(false), Int(0), String())
R|/foo|(Int(1), Double(2.0), third = Boolean(true), String())
<Inapplicable(PARAMETER_MAPPING_ERROR): [/foo]>#(second = Double(0.0), first = Int(0), fourth = String())
<Inapplicable(INAPPLICABLE): [/foo]>#(first = Double(0.0), second = Int(0), third = String(), fourth = Boolean(false))
<Inapplicable(INAPPLICABLE): [/foo]>#(first = Int(0), second = Double(0.0), third = Boolean(false), fourth = String(), first = Int(1))
<Inapplicable(PARAMETER_MAPPING_ERROR): [/foo]>#(Int(0), Double(0.0), Boolean(false), foth = String())
<Inapplicable(PARAMETER_MAPPING_ERROR): /foo>#(second = Double(0.0), first = Int(0), fourth = String())
<Inapplicable(INAPPLICABLE): /foo>#(first = Double(0.0), second = Int(0), third = String(), fourth = Boolean(false))
<Inapplicable(INAPPLICABLE): /foo>#(first = Int(0), second = Double(0.0), third = Boolean(false), fourth = String(), first = Int(1))
<Inapplicable(PARAMETER_MAPPING_ERROR): /foo>#(Int(0), Double(0.0), Boolean(false), foth = String())
}
......@@ -8,9 +8,9 @@ FILE: vararg.kt
R|/foo|(Int(1), vararg(String()))
R|/foo|(Int(1), vararg(String(my), String(yours)))
R|/foo|(Int(1), vararg(*R|kotlin/arrayOf|<R|kotlin/String|>(vararg(String(my), String(yours)))))
<Inapplicable(INAPPLICABLE): [/foo]>#(String())
<Inapplicable(INAPPLICABLE): [/foo]>#(Int(1), Int(2))
<Inapplicable(INAPPLICABLE): /foo>#(String())
<Inapplicable(INAPPLICABLE): /foo>#(Int(1), Int(2))
R|/bar|(Int(1), z = Boolean(true), vararg(y = *R|kotlin/arrayOf|<R|kotlin/String|>(vararg(String(my), String(yours)))))
<Inapplicable(INAPPLICABLE): [/bar]>#(Int(0), z = Boolean(false), y = String(), y = String(other))
<Inapplicable(PARAMETER_MAPPING_ERROR): [/bar]>#(Int(0), String(), Boolean(true))
<Inapplicable(INAPPLICABLE): /bar>#(Int(0), z = Boolean(false), y = String(), y = String(other))
<Inapplicable(PARAMETER_MAPPING_ERROR): /bar>#(Int(0), String(), Boolean(true))
}
......@@ -12,7 +12,7 @@ FILE: errorCandidates.kt
public final fun bar(x: R|B|): R|kotlin/Unit| {
}
public final fun test(c: R|C|): R|kotlin/Unit| {
<Inapplicable(INAPPLICABLE): [/foo]>#(String())
<Inapplicable(INAPPLICABLE): /foo>#(String())
<Ambiguity: bar, [/bar, /bar]>#(R|<local>/c|)
<Unresolved name: baz>#()
}
......@@ -404,7 +404,7 @@ digraph flowFromInplaceLambda_kt {
142 [label="Function call: R|/select|<R|kotlin/Int|>(...)"];
143 [label="Variable declaration: lval a: R|kotlin/Int|"];
144 [label="Access variable R|<local>/x|"];
145 [label="Function call: <Inapplicable(INAPPLICABLE): [/takeInt]>#(...)"];
145 [label="Function call: <Inapplicable(INAPPLICABLE): /takeInt>#(...)"];
146 [label="Access variable R|<local>/y|"];
147 [label="Function call: R|/takeInt|(...)"];
148 [label="Access variable R|<local>/a|"];
......
......@@ -63,7 +63,7 @@ FILE: flowFromInplaceLambda.kt
^ Int(1)
}
)))
<Inapplicable(INAPPLICABLE): [/takeInt]>#(R|<local>/x|)
<Inapplicable(INAPPLICABLE): /takeInt>#(R|<local>/x|)
R|/takeInt|(R|<local>/y|)
R|/takeInt|(R|<local>/a|)
}
......
......@@ -127,7 +127,7 @@ digraph jumps_kt {
}
51 [label="Variable declaration: lval y: R|kotlin/Int?|"];
52 [label="Access variable R|<local>/y|"];
53 [label="Function call: R|<local>/y|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
53 [label="Function call: R|<local>/y|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
54 [label="Exit block"];
}
55 [label="Exit function test_2" style="filled" fillcolor=red];
......
......@@ -22,7 +22,7 @@ FILE: jumps.kt
}
}
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
}
public final fun test_3(x: R|kotlin/Int?|): R|kotlin/Unit| {
while(Boolean(true)) {
......
......@@ -13,7 +13,7 @@ open class A3(x: String, y: String = "") {
class B3_1 : <!AMBIGUITY!>A3<!>("")
class B3_2 : A3("", "asas")
class B3_3 : A3("", true)
class B3_4 : <!INAPPLICABLE_CANDIDATE!>A3<!>("", Unit)
class B3_4 : <!NONE_APPLICABLE!>A3<!>("", Unit)
open class A4(val x: Byte)
class B4 : A4( 1 + 1)
......@@ -24,4 +24,4 @@ open class A5 {
}
class B5_1 : A5(1 + 1)
class B5_2 : A5(100 * 2)
\ No newline at end of file
class B5_2 : A5(100 * 2)
......@@ -70,5 +70,5 @@ FILE: upperBoundViolated.kt
}
public final val np1: R|NumberPhile<kotlin/Int>| = R|/NumberPhile.NumberPhile|<R|kotlin/Int|>(Int(10))
public get(): R|NumberPhile<kotlin/Int>|
public final val np2: <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [/NumberPhile.NumberPhile]> = <Inapplicable(INAPPLICABLE): [/NumberPhile.NumberPhile]>#(String(Test))
public get(): <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [/NumberPhile.NumberPhile]>
public final val np2: R|NumberPhile<kotlin/String>| = <Inapplicable(INAPPLICABLE): /NumberPhile.NumberPhile>#<R|kotlin/String|>(String(Test))
public get(): R|NumberPhile<kotlin/String>|
......@@ -8,7 +8,7 @@ class CallBasedInExpressionGenerator(
private val isInverted = operatorReference.<!UNRESOLVED_REFERENCE!>getReferencedNameElementType<!>() == <!UNRESOLVED_REFERENCE!>KtTokens<!>.<!UNRESOLVED_REFERENCE!>NOT_IN<!>
override fun generate(argument: StackValue): BranchedValue =
gen(argument).<!INAPPLICABLE_CANDIDATE!>let<!> { if (isInverted) <!UNRESOLVED_REFERENCE!>Invert<!>(<!UNRESOLVED_REFERENCE!>it<!>) else <!UNRESOLVED_REFERENCE!>it<!> }
gen(argument).<!INAPPLICABLE_CANDIDATE!>let<!> { if (isInverted) <!UNRESOLVED_REFERENCE!>Invert<!>(it) else it }
private fun gen(argument: StackValue): BranchedValue =
object : BranchedValue(argument, null, argument.<!UNRESOLVED_REFERENCE!>type<!>, <!UNRESOLVED_REFERENCE!>Opcodes<!>.<!UNRESOLVED_REFERENCE!>IFEQ<!>) {
......@@ -27,4 +27,4 @@ class CallBasedInExpressionGenerator(
result.<!UNRESOLVED_REFERENCE!>put<!>(result.<!UNRESOLVED_REFERENCE!>type<!>, result.<!UNRESOLVED_REFERENCE!>kotlinType<!>, v)
}
}
}
\ No newline at end of file
}
......@@ -14,13 +14,13 @@ FILE: CallBasedInExpressionGenerator.kt
private get(): R|kotlin/Boolean|
public final override fun generate(argument: R|ERROR CLASS: Symbol not found, for `StackValue`|): R|ERROR CLASS: Symbol not found, for `BranchedValue`| {
^generate this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.gen|(R|<local>/argument|).<Inapplicable(WRONG_RECEIVER): [kotlin/let]>#(<L> = let@fun <anonymous>(): <ERROR TYPE REF: Can't resolve when expression> {
^generate this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.gen|(R|<local>/argument|).<Inapplicable(WRONG_RECEIVER): kotlin/let>#<R|kotlin/Any?|, R|kotlin/Nothing|>(<L> = let@fun <anonymous>(it: R|kotlin/Any?|): <ERROR TYPE REF: Can't resolve when expression> <kind=EXACTLY_ONCE> {
^ when () {
this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.isInverted| -> {
<Unresolved name: Invert>#(<Unresolved name: it>#)
<Unresolved name: Invert>#(R|<local>/it|)
}
else -> {
<Unresolved name: it>#
R|<local>/it|
}
}
......
......@@ -21,7 +21,7 @@ class Bar {
}
// NB! abc() here is resolved to member Foo.abc(), and not to extension member of Bar
fun Foo.check() = abc() <!INAPPLICABLE_CANDIDATE!>+<!> bar()
fun Foo.check() = abc() <!NONE_APPLICABLE!>+<!> bar()
// NB! + here is resolved to member String.plus (not to extension member above)
fun Foo.check2() = "" + bar()
......@@ -60,4 +60,4 @@ fun f() {
<!UNRESOLVED_REFERENCE!>dcb<!>()
abc()
}
\ No newline at end of file
}
......@@ -36,8 +36,8 @@ FILE: access.kt
^plus String()
}
public final fun R|Foo|.check(): <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus]> {
^check this@R|/Bar.check|.R|/Foo.abc|().<Inapplicable(INAPPLICABLE): [kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus]>#(this@R|/Bar|.R|/Bar.bar|())
public final fun R|Foo|.check(): <ERROR TYPE REF: Ambiguity: plus, [kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus]> {
^check this@R|/Bar.check|.R|/Foo.abc|().<Ambiguity: plus, [kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus]>#(this@R|/Bar|.R|/Bar.bar|())
}
public final fun R|Foo|.check2(): R|kotlin/String| {
......
......@@ -34,5 +34,5 @@ FILE: enumEntryUse.kt
R|/useEnum|(Q|TestEnum|.R|/TestEnum.SECOND|)
R|/useEnum|(Q|TestEnum|.R|/TestEnum.THIRD|)
R|/useVararg|(vararg(Q|TestEnum|.R|/TestEnum.FIRST|, Q|TestEnum|.R|/TestEnum.SECOND|))
<Inapplicable(INAPPLICABLE): [/useVararg]>#(Int(1), Int(2), Int(3), Int(4), Int(5))
<Inapplicable(INAPPLICABLE): /useVararg>#(Int(1), Int(2), Int(3), Int(4), Int(5))
}
......@@ -18,5 +18,5 @@ FILE: typeParameters.kt
}
public final fun main(fooImpl: R|FooImpl|, bar: R|Bar|): R|kotlin/Unit| {
lval a: R|FooImpl| = R|/foo|<R|FooImpl|>(R|<local>/fooImpl|)
lval b: <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [/foo]> = <Inapplicable(INAPPLICABLE): [/foo]>#(R|<local>/bar|)
lval b: R|Bar| = <Inapplicable(INAPPLICABLE): /foo>#<R|Bar|>(R|<local>/bar|)
}
......@@ -17,6 +17,6 @@ FILE: typeParameters2.kt
^foo R|<local>/t|
}
public final fun main(fooImpl: R|FooImpl|, fooBarImpl: R|FooBarImpl|): R|kotlin/Unit| {
lval a: <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [/foo]> = <Inapplicable(INAPPLICABLE): [/foo]>#(R|<local>/fooBarImpl|)
lval a: R|FooImpl| = <Inapplicable(INAPPLICABLE): /foo>#<R|FooImpl|>(R|<local>/fooBarImpl|)
lval b: R|Foo| = R|/foo|<R|Foo|>(R|<local>/fooImpl|)
}
......@@ -11,8 +11,8 @@ open class Outer {
class Derived : Outer() {
fun foo() {
Outer.<!INAPPLICABLE_CANDIDATE!>PrivateNested<!>()
super.<!INAPPLICABLE_CANDIDATE!>PrivateInner<!>()
Outer.<!HIDDEN!>PrivateNested<!>()
super.<!HIDDEN!>PrivateInner<!>()
Outer.ProtectedNested()
super.ProtectedInner()
......@@ -23,11 +23,11 @@ class Derived : Outer() {
}
fun foo() {
Outer.<!INAPPLICABLE_CANDIDATE!>PrivateNested<!>()
Outer().<!INAPPLICABLE_CANDIDATE!>PrivateInner<!>()
Outer.<!HIDDEN!>PrivateNested<!>()
Outer().<!HIDDEN!>PrivateInner<!>()
Outer.<!INAPPLICABLE_CANDIDATE!>ProtectedNested<!>()
Outer().<!INAPPLICABLE_CANDIDATE!>ProtectedInner<!>()
Outer.<!HIDDEN!>ProtectedNested<!>()
Outer().<!HIDDEN!>ProtectedInner<!>()
Outer.PublicNested()
Outer().PublicInner()
......
......@@ -53,8 +53,8 @@ FILE: nestedVisibility.kt
}
public final fun foo(): R|kotlin/Unit| {
Q|Outer|.<Inapplicable(HIDDEN): [/Outer.PrivateNested.PrivateNested]>#()
this@R|/Derived|.super<R|Outer|>.<Inapplicable(HIDDEN): [/Outer.PrivateInner.PrivateInner]>#()
Q|Outer|.<HIDDEN: /Outer.PrivateNested.PrivateNested is invisible>#()
this@R|/Derived|.super<R|Outer|>.<HIDDEN: /Outer.PrivateInner.PrivateInner is invisible>#()
Q|Outer|.R|/Outer.ProtectedNested.ProtectedNested|()
this@R|/Derived|.super<R|Outer|>.R|/Outer.ProtectedInner.ProtectedInner|()
Q|Outer|.R|/Outer.PublicNested.PublicNested|()
......@@ -63,10 +63,10 @@ FILE: nestedVisibility.kt
}
public final fun foo(): R|kotlin/Unit| {
Q|Outer|.<Inapplicable(HIDDEN): [/Outer.PrivateNested.PrivateNested]>#()
R|/Outer.Outer|().<Inapplicable(HIDDEN): [/Outer.PrivateInner.PrivateInner]>#()
Q|Outer|.<Inapplicable(HIDDEN): [/Outer.ProtectedNested.ProtectedNested]>#()
R|/Outer.Outer|().<Inapplicable(HIDDEN): [/Outer.ProtectedInner.ProtectedInner]>#()
Q|Outer|.<HIDDEN: /Outer.PrivateNested.PrivateNested is invisible>#()
R|/Outer.Outer|().<HIDDEN: /Outer.PrivateInner.PrivateInner is invisible>#()
Q|Outer|.<HIDDEN: /Outer.ProtectedNested.ProtectedNested is invisible>#()
R|/Outer.Outer|().<HIDDEN: /Outer.ProtectedInner.ProtectedInner is invisible>#()
Q|Outer|.R|/Outer.PublicNested.PublicNested|()
R|/Outer.Outer|().R|/Outer.PublicInner.PublicInner|()
}
......@@ -9,21 +9,21 @@ private class Private {
bar()
Nested()
fromCompanion()
NotCompanion.<!INAPPLICABLE_CANDIDATE!>foo<!>() // hidden
NotCompanion.<!HIDDEN!>foo<!>() // hidden
}
inner class Inner {
fun foo() {
bar()
fromCompanion()
NotCompanion.<!INAPPLICABLE_CANDIDATE!>foo<!>() // hidden
NotCompanion.<!HIDDEN!>foo<!>() // hidden
}
}
private class Nested {
fun foo() {
fromCompanion()
NotCompanion.<!INAPPLICABLE_CANDIDATE!>foo<!>() // hidden
NotCompanion.<!HIDDEN!>foo<!>() // hidden
}
}
......@@ -54,7 +54,7 @@ fun withLocals() {
Local().baz()
Local().<!INAPPLICABLE_CANDIDATE!>bar<!>() // hidden
Local().<!HIDDEN!>bar<!>() // hidden
}
fun test() {
......@@ -62,14 +62,14 @@ fun test() {
Private().baz()
Private().Inner()
Private().<!INAPPLICABLE_CANDIDATE!>bar<!>() // hidden
Private.<!INAPPLICABLE_CANDIDATE!>Nested<!>() // hidden
Private.<!INAPPLICABLE_CANDIDATE!>fromCompanion<!>() // hidden
Private().<!HIDDEN!>bar<!>() // hidden
Private.<!HIDDEN!>Nested<!>() // hidden
Private.<!HIDDEN!>fromCompanion<!>() // hidden
}
// FILE: second.kt
fun secondTest() {
<!INAPPLICABLE_CANDIDATE!>foo<!>() // hidden
<!INAPPLICABLE_CANDIDATE!>Private<!>() // hidden
}
\ No newline at end of file
<!HIDDEN!>foo<!>() // hidden
<!HIDDEN!>Private<!>() // hidden
}
......@@ -13,7 +13,7 @@ FILE: first.kt
this@R|/Private|.R|/Private.bar|()
R|/Private.Nested.Nested|()
this@R|/Private.Companion|.R|/Private.Companion.fromCompanion|()
Q|Private.NotCompanion|.<Inapplicable(HIDDEN): [/Private.NotCompanion.foo]>#()
Q|Private.NotCompanion|.<HIDDEN: /Private.NotCompanion.foo is invisible>#()
}
public[private] final inner class Inner : R|kotlin/Any| {
......@@ -24,7 +24,7 @@ FILE: first.kt
public[private] final fun foo(): R|kotlin/Unit| {
this@R|/Private|.R|/Private.bar|()
this@R|/Private.Companion|.R|/Private.Companion.fromCompanion|()
Q|Private.NotCompanion|.<Inapplicable(HIDDEN): [/Private.NotCompanion.foo]>#()
Q|Private.NotCompanion|.<HIDDEN: /Private.NotCompanion.foo is invisible>#()
}
}
......@@ -36,7 +36,7 @@ FILE: first.kt
public[private] final fun foo(): R|kotlin/Unit| {
this@R|/Private.Companion|.R|/Private.Companion.fromCompanion|()
Q|Private.NotCompanion|.<Inapplicable(HIDDEN): [/Private.NotCompanion.foo]>#()
Q|Private.NotCompanion|.<HIDDEN: /Private.NotCompanion.foo is invisible>#()
}
}
......@@ -89,18 +89,18 @@ FILE: first.kt
}
R|/Local.Local|().R|/Local.baz|()
R|/Local.Local|().<Inapplicable(HIDDEN): [/Local.bar]>#()
R|/Local.Local|().<HIDDEN: /Local.bar is invisible>#()
}
public final fun test(): R|kotlin/Unit| {
R|/foo|()
R|/Private.Private|().R|/Private.baz|()
R|/Private.Private|().R|/Private.Inner.Inner|()
R|/Private.Private|().<Inapplicable(HIDDEN): [/Private.bar]>#()
Q|Private|.<Inapplicable(HIDDEN): [/Private.Nested.Nested]>#()
Q|Private|.<Inapplicable(HIDDEN): [/Private.Companion.fromCompanion]>#()
R|/Private.Private|().<HIDDEN: /Private.bar is invisible>#()
Q|Private|.<HIDDEN: /Private.Nested.Nested is invisible>#()
Q|Private|.<HIDDEN: /Private.Companion.fromCompanion is invisible>#()
}
FILE: second.kt
public final fun secondTest(): R|kotlin/Unit| {
<Inapplicable(HIDDEN): [/foo]>#()
<Inapplicable(HIDDEN): [/Private.Private]>#()
<HIDDEN: /foo is invisible>#()
<HIDDEN: /Private.Private is invisible>#()
}
......@@ -31,7 +31,7 @@ class Derived : Protected() {
fun foo() {
bar()
Nested().foo()
Nested().<!INAPPLICABLE_CANDIDATE!>bar<!>() // hidden
Nested().<!HIDDEN!>bar<!>() // hidden
fromCompanion()
protectedFromCompanion()
......@@ -48,8 +48,8 @@ fun test() {
Protected().baz()
Protected().Inner()
Protected().<!INAPPLICABLE_CANDIDATE!>bar<!>() // hidden
Protected.<!INAPPLICABLE_CANDIDATE!>Nested<!>() // hidden
Protected().<!HIDDEN!>bar<!>() // hidden
Protected.<!HIDDEN!>Nested<!>() // hidden
}
open class Generic<T>(val x: T) {
......
......@@ -59,7 +59,7 @@ FILE: protectedVisibility.kt
public final fun foo(): R|kotlin/Unit| {
this@R|/Derived|.R|/Protected.bar|()
R|/Protected.Nested.Nested|().R|/Protected.Nested.foo|()
R|/Protected.Nested.Nested|().<Inapplicable(HIDDEN): [/Protected.Nested.bar]>#()
R|/Protected.Nested.Nested|().<HIDDEN: /Protected.Nested.bar is invisible>#()
this@R|/Protected.Companion|.R|/Protected.Companion.fromCompanion|()
this@R|/Protected.Companion|.R|/Protected.Companion.protectedFromCompanion|()
}
......@@ -79,8 +79,8 @@ FILE: protectedVisibility.kt
public final fun test(): R|kotlin/Unit| {
R|/Protected.Protected|().R|/Protected.baz|()
R|/Protected.Protected|().R|/Protected.Inner.Inner|()
R|/Protected.Protected|().<Inapplicable(HIDDEN): [/Protected.bar]>#()
Q|Protected|.<Inapplicable(HIDDEN): [/Protected.Nested.Nested]>#()
R|/Protected.Protected|().<HIDDEN: /Protected.bar is invisible>#()
Q|Protected|.<HIDDEN: /Protected.Nested.Nested is invisible>#()
}
public open class Generic<T> : R|kotlin/Any| {
public constructor<T>(x: R|T|): R|Generic<T>| {
......
......@@ -36,7 +36,7 @@ FILE: test.kt
lval bar: R|kotlin/CharSequence?| = R|<local>/x|?.{ $subj$.R|/SomeClass.bar| }
when () {
!=(R|<local>/bar|, Null(null)) -> {
R|<local>/x|.R|/SomeClass.bar|.<Inapplicable(WRONG_RECEIVER): [kotlin/CharSequence.length]>#
R|<local>/x|.R|/SomeClass.bar|.<Inapplicable(WRONG_RECEIVER): kotlin/CharSequence.length>#
}
}
......
......@@ -11,7 +11,7 @@ FILE: nullableIntegerLiteralType.kt
}
}
<Inapplicable(INAPPLICABLE): [/takeInt]>#(R|<local>/x|)
<Inapplicable(INAPPLICABLE): /takeInt>#(R|<local>/x|)
}
public final fun test_2(b: R|kotlin/Boolean|, y: R|kotlin/Int|): R|kotlin/Unit| {
lval x: R|kotlin/Int?| = when () {
......@@ -23,5 +23,5 @@ FILE: nullableIntegerLiteralType.kt
}
}
<Inapplicable(INAPPLICABLE): [/takeInt]>#(R|<local>/x|)
<Inapplicable(INAPPLICABLE): /takeInt>#(R|<local>/x|)
}
......@@ -24,7 +24,7 @@ FILE: receiverWithCapturedType.kt
R|<local>/resolvedCall|.R|/getParameterForArgument|<R|CallableDescriptor|>()
}
public final fun test_2_1(resolvedCall: R|ResolvedCall<out CallableDescriptor>|, d: R|CallableDescriptor|): R|kotlin/Unit| {
lval x: <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [/updateD]> = R|<local>/resolvedCall|.<Inapplicable(INAPPLICABLE): [/updateD]>#(R|<local>/d|)
lval x: R|CallableDescriptor| = R|<local>/resolvedCall|.<Inapplicable(INAPPLICABLE): /updateD>#<R|CapturedType(out CallableDescriptor)|>(R|<local>/d|)
}
public final fun test_2_2(resolvedCall: R|ResolvedCall<in CallableDescriptor>|, d: R|CallableDescriptor|): R|kotlin/Unit| {
lval x: R|CallableDescriptor| = R|<local>/resolvedCall|.R|/updateD|<R|CapturedType(in CallableDescriptor)|>(R|<local>/d|)
......
......@@ -29,7 +29,7 @@ FILE: lambdaArgInScopeFunction.kt
}
) }
R|<local>/lambda|.R|tests/_checkType/checkType|<R|() -> KotlinClass|>(<L> = checkType@fun R|tests/_checkType/Inv<kotlin/Function0<KotlinClass>?>|.<anonymous>(): R|kotlin/Unit| {
^ <Inapplicable(WRONG_RECEIVER): [tests/_checkType/_]>#()
this@R|special/anonymous|.<Inapplicable(WRONG_RECEIVER): tests/_checkType/_>#<R|(kotlin/Unit) -> KotlinClass?|>()
}
)
}
......@@ -50,7 +50,7 @@ FILE: lambdaArgInScopeFunction.kt
}
)
R|<local>/lambda|.R|tests/_checkType/checkType|<R|() -> KotlinClass|>(<L> = checkType@fun R|tests/_checkType/Inv<kotlin/Function0<KotlinClass>>|.<anonymous>(): R|kotlin/Unit| {
^ <Inapplicable(WRONG_RECEIVER): [tests/_checkType/_]>#()
this@R|special/anonymous|.<Inapplicable(WRONG_RECEIVER): tests/_checkType/_>#<R|(kotlin/Unit) -> KotlinClass?|>()
}
)
}
......
......@@ -29,11 +29,11 @@ FILE: KotlinClass.kt
}
)
R|<local>/invalidType|.R|tests/_checkType/checkType|<R|(JavaClass) -> kotlin/Boolean|>(<L> = checkType@fun R|tests/_checkType/Inv<kotlin/Function1<JavaClass, kotlin/Boolean>>|.<anonymous>(): R|kotlin/Unit| {
^ <Inapplicable(WRONG_RECEIVER): [tests/_checkType/_]>#()
this@R|special/anonymous|.<Inapplicable(WRONG_RECEIVER): tests/_checkType/_>#<R|(kotlin/Nothing) -> kotlin/Boolean|>()
}
)
R|/Case1.Case1|(R|<local>/javaClass|).R|/Case1.x|.R|tests/_checkType/checkType|<R|(KotlinClass) -> kotlin/Boolean|>(<L> = checkType@fun R|tests/_checkType/Inv<kotlin/Function1<KotlinClass, kotlin/Boolean>>|.<anonymous>(): R|kotlin/Unit| {
^ <Inapplicable(WRONG_RECEIVER): [tests/_checkType/_]>#()
this@R|special/anonymous|.<Inapplicable(WRONG_RECEIVER): tests/_checkType/_>#<R|(kotlin/Nothing) -> kotlin/Boolean|>()
}
)
}
......@@ -122,11 +122,11 @@ FILE: KotlinClass.kt
}
)
R|<local>/invalidType|.R|tests/_checkType/checkType|<R|(KotlinClass) -> kotlin/Boolean|>(<L> = checkType@fun R|tests/_checkType/Inv<kotlin/Function1<KotlinClass, kotlin/Boolean>>|.<anonymous>(): R|kotlin/Unit| {
^ <Inapplicable(WRONG_RECEIVER): [tests/_checkType/_]>#()
this@R|special/anonymous|.<Inapplicable(WRONG_RECEIVER): tests/_checkType/_>#<R|(kotlin/Nothing) -> kotlin/Boolean|>()
}
)
R|/Case2.Case2|(R|<local>/kotlinClass|).R|/Case2.x|.R|tests/_checkType/checkType|<R|(KotlinClass) -> kotlin/Boolean|>(<L> = checkType@fun R|tests/_checkType/Inv<kotlin/Function1<KotlinClass, kotlin/Boolean>>|.<anonymous>(): R|kotlin/Unit| {
^ <Inapplicable(WRONG_RECEIVER): [tests/_checkType/_]>#()
this@R|special/anonymous|.<Inapplicable(WRONG_RECEIVER): tests/_checkType/_>#<R|(kotlin/Nothing) -> kotlin/Boolean|>()
}
)
}
......
......@@ -29,9 +29,9 @@ FILE: innerTypes.kt
public final val rrq: R|Outer.Inner<kotlin/Int, kotlin/String>| = R|/Boxed.Boxed|<R|kotlin/String|>().R|FakeOverride</Boxed.substitute: R|Outer.Inner<kotlin/Int, kotlin/String>|>|()
public get(): R|Outer.Inner<kotlin/Int, kotlin/String>|
public final fun check(): R|kotlin/Unit| {
<Inapplicable(INAPPLICABLE): [/accept]>#(R|/Outer.Outer|<R|kotlin/Int|>().R|/Outer.Inner.Inner|<R|kotlin/Int|>())
<Inapplicable(INAPPLICABLE): [/accept]>#(R|/Outer.Outer|<R|kotlin/String|>().R|/Outer.Inner.Inner|<R|kotlin/String|>())
<Inapplicable(INAPPLICABLE): /accept>#(R|/Outer.Outer|<R|kotlin/Int|>().R|/Outer.Inner.Inner|<R|kotlin/Int|>())
<Inapplicable(INAPPLICABLE): /accept>#(R|/Outer.Outer|<R|kotlin/String|>().R|/Outer.Inner.Inner|<R|kotlin/String|>())
R|/accept|(R|/Outer.Outer|<R|kotlin/String|>().R|/Outer.Inner.Inner|<R|kotlin/Int|>())
<Inapplicable(INAPPLICABLE): [/accept]>#(R|/Boxed.Boxed|<R|kotlin/Int|>().R|FakeOverride</Boxed.substitute: R|Outer.Inner<kotlin/Int, kotlin/Int>|>|())
<Inapplicable(INAPPLICABLE): /accept>#(R|/Boxed.Boxed|<R|kotlin/Int|>().R|FakeOverride</Boxed.substitute: R|Outer.Inner<kotlin/Int, kotlin/Int>|>|())
R|/accept|(R|/Boxed.Boxed|<R|kotlin/String|>().R|FakeOverride</Boxed.substitute: R|Outer.Inner<kotlin/Int, kotlin/String>|>|())
}
......@@ -14,7 +14,7 @@ class B : A() {
fun test() {
foo()
bar()
<!INAPPLICABLE_CANDIDATE!>buz<!>()
<!NONE_APPLICABLE!>buz<!>()
}
}
......@@ -37,7 +37,7 @@ FILE: simple.kt
public final fun test(): R|kotlin/Unit| {
this@R|/B|.R|/B.foo|()
this@R|/B|.R|/B.bar|()
<Inapplicable(PARAMETER_MAPPING_ERROR): [/B.buz, /A.buz]>#()
<Ambiguity: buz, [/B.buz, /A.buz]>#()
}
}
......@@ -24,5 +24,5 @@ FILE: supertypeGenericsComplex.kt
}
public final fun f(list: R|kotlin/collections/MutableList<X>|, s: R|kotlin/collections/MutableList<kotlin/CharSequence>|): R|kotlin/Unit| {
R|/C.C|().R|FakeOverride</C.f: R|kotlin/Unit|>|<R|X|>(R|<local>/list|, R|<local>/s|)
R|/C.C|().<Inapplicable(INAPPLICABLE): [/C.f]>#(R|<local>/s|, R|<local>/list|)
R|/C.C|().<Inapplicable(INAPPLICABLE): /C.f>#<R|kotlin/CharSequence|>(R|<local>/s|, R|<local>/list|)
}
FILE: main.kt
public final fun <V> R|SLRUMap<V>|.getOrPut(value: R|V|): R|kotlin/Unit| {
<Inapplicable(INAPPLICABLE): [/SLRUMap.takeV]>#(R|<local>/value|)
this@R|/getOrPut|.<Inapplicable(INAPPLICABLE): /SLRUMap.takeV>#(R|<local>/value|)
}
......@@ -14,7 +14,7 @@ FILE: main.kt
^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
}
))
<Inapplicable(INAPPLICABLE): [/foo2]>#(R|/MyFunction|<R|ft<kotlin/Int, kotlin/Int?>!|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
<Inapplicable(INAPPLICABLE): /foo2>#(R|/MyFunction|<R|kotlin/Number|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
^ R|<local>/x|.R|kotlin/Any.toString|()
}
))
......
......@@ -5,11 +5,11 @@ FILE: main.kt
^MyRunnable Int(1)
}
public final fun main(): R|kotlin/Unit| {
<Inapplicable(INAPPLICABLE): [/foo]>#(R|/MyRunnable|(<L> = MyRunnable@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
<Inapplicable(INAPPLICABLE): /foo>#(R|/MyRunnable|(<L> = MyRunnable@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
}
))
<Inapplicable(INAPPLICABLE): [/foo]>#(R|/MyRunnable|(MyRunnable@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| {
<Inapplicable(INAPPLICABLE): /foo>#(R|/MyRunnable|(MyRunnable@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| {
^ CMP(>, R|<local>/it|.R|kotlin/Int.compareTo|(Int(1)))
}
))
......@@ -17,5 +17,5 @@ FILE: main.kt
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
}
<Inapplicable(INAPPLICABLE): [/foo]>#(R|/MyRunnable|(R|<local>/x|))
<Inapplicable(INAPPLICABLE): /foo>#(R|/MyRunnable|(R|<local>/x|))
}
......@@ -8,7 +8,7 @@ FILE: main.kt
^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
}
)
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): [/JavaUsage.foo2]>#(<L> = foo2@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): /JavaUsage.foo2>#(<L> = foo2@fun <anonymous>(x: R|kotlin/Int|): R|ft<kotlin/CharSequence, kotlin/CharSequence?>!| {
^ R|<local>/x|.R|kotlin/Any.toString|()
}
)
......
......@@ -38,16 +38,16 @@ FILE: kotlinSam.kt
}
)
R|/foo1|(R|<local>/f|)
<Inapplicable(INAPPLICABLE): [/foo2]>#(<L> = foo2@fun <anonymous>(x: R|kotlin/Nothing|): R|kotlin/Boolean| {
<Inapplicable(INAPPLICABLE): /foo2>#(<L> = foo2@fun <anonymous>(x: R|kotlin/Nothing|): R|kotlin/Boolean| {
^ CMP(>, R|<local>/x|.<Unresolved name: compareTo>#(Int(1)))
}
)
<Inapplicable(INAPPLICABLE): [/foo2]>#(R|<local>/f|)
<Inapplicable(INAPPLICABLE): [/foo3]>#(<L> = foo3@fun <anonymous>(x: R|kotlin/Nothing|): R|kotlin/Boolean| {
<Inapplicable(INAPPLICABLE): /foo2>#(R|<local>/f|)
<Inapplicable(INAPPLICABLE): /foo3>#(<L> = foo3@fun <anonymous>(x: R|kotlin/Nothing|): R|kotlin/Boolean| {
^ CMP(>, R|<local>/x|.<Unresolved name: compareTo>#(Int(1)))
}
)
<Inapplicable(INAPPLICABLE): [/foo3]>#(R|<local>/f|)
<Inapplicable(INAPPLICABLE): /foo3>#(R|<local>/f|)
R|/foo4|(<L> = foo4@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
}
......
......@@ -2,11 +2,11 @@ FILE: main.kt
public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| {
}
public final fun main(): R|kotlin/Unit| {
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): [/JavaUsage.foo]>#(<L> = foo@fun <anonymous>(x: R|kotlin/Nothing|): R|kotlin/Boolean| {
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#(<L> = foo@fun <anonymous>(x: R|kotlin/Nothing|): R|kotlin/Boolean| {
^ CMP(>, R|<local>/x|.<Unresolved name: compareTo>#(Int(1)))
}
)
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): [/JavaUsage.foo]>#(foo@fun <anonymous>(): R|kotlin/Boolean| {
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#(foo@fun <anonymous>(): R|kotlin/Boolean| {
^ CMP(>, <Unresolved name: it>#.<Unresolved name: compareTo>#(Int(1)))
}
)
......@@ -14,5 +14,5 @@ FILE: main.kt
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
}
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): [/JavaUsage.foo]>#(R|<local>/x|)
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#(R|<local>/x|)
}
......@@ -6,5 +6,5 @@ sealed class WithPrivateConstructor private constructor(val x: Int) {
private constructor() : this(42)
}
object First : <!INAPPLICABLE_CANDIDATE!>WithPrivateConstructor<!>() // error
object Second : <!INAPPLICABLE_CANDIDATE!>WithPrivateConstructor<!>(0) // error
\ No newline at end of file
object First : <!NONE_APPLICABLE!>WithPrivateConstructor<!>() // error
object Second : <!NONE_APPLICABLE!>WithPrivateConstructor<!>(0) // error
......@@ -202,7 +202,7 @@ digraph bangbang_kt {
78 [label="Exit when"];
}
79 [label="Access variable R|<local>/a|"];
80 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
80 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
81 [label="Exit block"];
}
82 [label="Exit function test_3" style="filled" fillcolor=red];
......@@ -331,14 +331,14 @@ digraph bangbang_kt {
color=blue
123 [label="Enter block"];
124 [label="Access variable R|<local>/a|"];
125 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
125 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
126 [label="Exit block"];
}
127 [label="Exit when branch result"];
128 [label="Exit when"];
}
129 [label="Access variable R|<local>/a|"];
130 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
130 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
131 [label="Exit block"];
}
132 [label="Exit function test_5" style="filled" fillcolor=red];
......
......@@ -32,7 +32,7 @@ FILE: bangbang.kt
}
}
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
public final fun test_4(a: R|A?|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
when () {
......@@ -46,11 +46,11 @@ FILE: bangbang.kt
public final fun test_5(a: R|A?|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
when () {
R|<local>/b| || R|<local>/a|!!.R|/A.foo|() -> {
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
}
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
public final fun <X : R|A?|> test_6(x: R|X|): R|kotlin/Unit| {
R|<local>/x|!!.R|/A.foo|()
......
......@@ -53,7 +53,7 @@ digraph equalsToBoolean_kt {
color=blue
19 [label="Enter block"];
20 [label="Access variable R|<local>/b|"];
21 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()"];
21 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()"];
22 [label="Exit block"];
}
23 [label="Exit when branch result"];
......@@ -137,7 +137,7 @@ digraph equalsToBoolean_kt {
color=blue
52 [label="Enter block"];
53 [label="Access variable R|<local>/b|"];
54 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()"];
54 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()"];
55 [label="Exit block"];
}
56 [label="Exit when branch result"];
......@@ -212,7 +212,7 @@ digraph equalsToBoolean_kt {
color=blue
79 [label="Enter block"];
80 [label="Access variable R|<local>/b|"];
81 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()"];
81 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()"];
82 [label="Exit block"];
}
83 [label="Exit when branch result"];
......@@ -278,7 +278,7 @@ digraph equalsToBoolean_kt {
color=blue
100 [label="Enter block"];
101 [label="Access variable R|<local>/b|"];
102 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()"];
102 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()"];
103 [label="Exit block"];
}
104 [label="Exit when branch result"];
......@@ -362,7 +362,7 @@ digraph equalsToBoolean_kt {
color=blue
133 [label="Enter block"];
134 [label="Access variable R|<local>/b|"];
135 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()"];
135 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()"];
136 [label="Exit block"];
}
137 [label="Exit when branch result"];
......@@ -428,7 +428,7 @@ digraph equalsToBoolean_kt {
color=blue
154 [label="Enter block"];
155 [label="Access variable R|<local>/b|"];
156 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()"];
156 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()"];
157 [label="Exit block"];
}
158 [label="Exit when branch result"];
......@@ -503,7 +503,7 @@ digraph equalsToBoolean_kt {
color=blue
181 [label="Enter block"];
182 [label="Access variable R|<local>/b|"];
183 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()"];
183 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()"];
184 [label="Exit block"];
}
185 [label="Exit when branch result"];
......@@ -587,7 +587,7 @@ digraph equalsToBoolean_kt {
color=blue
214 [label="Enter block"];
215 [label="Access variable R|<local>/b|"];
216 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()"];
216 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()"];
217 [label="Exit block"];
}
218 [label="Exit when branch result"];
......
......@@ -12,7 +12,7 @@ FILE: equalsToBoolean.kt
R|<local>/b|.R|kotlin/Boolean.not|()
}
else -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()
}
}
......@@ -20,7 +20,7 @@ FILE: equalsToBoolean.kt
public final fun test_2(b: R|kotlin/Boolean?|): R|kotlin/Unit| {
when () {
!=(==(R|<local>/b|, Boolean(true)), Boolean(true)) -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()
}
else -> {
R|<local>/b|.R|kotlin/Boolean.not|()
......@@ -31,7 +31,7 @@ FILE: equalsToBoolean.kt
public final fun test_3(b: R|kotlin/Boolean?|): R|kotlin/Unit| {
when () {
==(==(R|<local>/b|, Boolean(true)), Boolean(false)) -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()
}
else -> {
R|<local>/b|.R|kotlin/Boolean.not|()
......@@ -45,7 +45,7 @@ FILE: equalsToBoolean.kt
R|<local>/b|.R|kotlin/Boolean.not|()
}
else -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()
}
}
......@@ -53,7 +53,7 @@ FILE: equalsToBoolean.kt
public final fun test_5(b: R|kotlin/Boolean?|): R|kotlin/Unit| {
when () {
==(!=(R|<local>/b|, Boolean(true)), Boolean(true)) -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()
}
else -> {
R|<local>/b|.R|kotlin/Boolean.not|()
......@@ -67,7 +67,7 @@ FILE: equalsToBoolean.kt
R|<local>/b|.R|kotlin/Boolean.not|()
}
else -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()
}
}
......@@ -78,7 +78,7 @@ FILE: equalsToBoolean.kt
R|<local>/b|.R|kotlin/Boolean.not|()
}
else -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()
}
}
......@@ -86,7 +86,7 @@ FILE: equalsToBoolean.kt
public final fun test_8(b: R|kotlin/Boolean?|): R|kotlin/Unit| {
when () {
!=(!=(R|<local>/b|, Boolean(true)), Boolean(false)) -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Boolean.not]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Boolean.not>#()
}
else -> {
R|<local>/b|.R|kotlin/Boolean.not|()
......
......@@ -267,7 +267,7 @@ digraph jumpFromRhsOfOperator_kt {
101 [label="Exit ||"];
}
102 [label="Access variable R|<local>/a|"];
103 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
103 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
104 [label="Exit block"];
}
105 [label="Exit function test_5" style="filled" fillcolor=red];
......@@ -309,7 +309,7 @@ digraph jumpFromRhsOfOperator_kt {
117 [label="Exit &&"];
}
118 [label="Access variable R|<local>/a|"];
119 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
119 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
120 [label="Exit block"];
}
121 [label="Exit function teat_6" style="filled" fillcolor=red];
......@@ -364,14 +364,14 @@ digraph jumpFromRhsOfOperator_kt {
color=blue
139 [label="Enter block"];
140 [label="Access variable R|<local>/a|"];
141 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
141 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
142 [label="Exit block"];
}
143 [label="Exit when branch result"];
144 [label="Exit when"];
}
145 [label="Access variable R|<local>/a|"];
146 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
146 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
147 [label="Exit block"];
}
148 [label="Exit function test_7" style="filled" fillcolor=red];
......@@ -437,14 +437,14 @@ digraph jumpFromRhsOfOperator_kt {
color=blue
166 [label="Enter block"];
167 [label="Access variable R|<local>/a|"];
168 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
168 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
169 [label="Exit block"];
}
170 [label="Exit when branch result"];
171 [label="Exit when"];
}
172 [label="Access variable R|<local>/a|"];
173 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
173 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
174 [label="Exit block"];
}
175 [label="Exit function test_8" style="filled" fillcolor=red];
......
......@@ -31,27 +31,27 @@ FILE: jumpFromRhsOfOperator.kt
}
public final fun test_5(a: R|A?|): R|kotlin/Unit| {
==(R|<local>/a|, Null(null)) || throw R|java/lang/Exception.Exception|()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
public final fun teat_6(a: R|A?|): R|kotlin/Unit| {
!=(R|<local>/a|, Null(null)) && throw R|java/lang/Exception.Exception|()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
public final fun test_7(a: R|A?|): R|kotlin/Unit| {
when () {
==(R|<local>/a|, Null(null)) || throw R|java/lang/Exception.Exception|() -> {
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
}
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
public final fun test_8(a: R|A?|): R|kotlin/Unit| {
when () {
!=(R|<local>/a|, Null(null)) && throw R|java/lang/Exception.Exception|() -> {
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
}
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
......@@ -670,7 +670,7 @@ digraph boundSmartcastsInBranches_kt {
274 [label="Access variable R|<local>/x|"];
275 [label="Access variable R|kotlin/String.length|"];
276 [label="Access variable R|<local>/y|"];
277 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
277 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
278 [label="Access variable R|<local>/z|"];
279 [label="Access variable R|kotlin/String.length|"];
280 [label="Exit block"];
......@@ -695,11 +695,11 @@ digraph boundSmartcastsInBranches_kt {
color=blue
291 [label="Enter block"];
292 [label="Access variable R|<local>/x|"];
293 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
293 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
294 [label="Access variable R|<local>/y|"];
295 [label="Access variable R|kotlin/String.length|"];
296 [label="Access variable R|<local>/z|"];
297 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
297 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
298 [label="Exit block"];
}
299 [label="Exit when branch result"];
......@@ -724,7 +724,7 @@ digraph boundSmartcastsInBranches_kt {
310 [label="Access variable R|<local>/x|"];
311 [label="Access variable R|kotlin/String.length|"];
312 [label="Access variable R|<local>/y|"];
313 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
313 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
314 [label="Access variable R|<local>/z|"];
315 [label="Access variable R|kotlin/String.length|"];
316 [label="Exit block"];
......
......@@ -132,23 +132,23 @@ FILE: boundSmartcastsInBranches.kt
when () {
!=(R|<local>/x|, Null(null)) -> {
R|<local>/x|.R|kotlin/String.length|
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
R|<local>/z|.R|kotlin/String.length|
}
}
when () {
!=(R|<local>/y|, Null(null)) -> {
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
R|<local>/y|.R|kotlin/String.length|
R|<local>/z|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/z|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
}
when () {
!=(R|<local>/z|, Null(null)) -> {
R|<local>/x|.R|kotlin/String.length|
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
R|<local>/z|.R|kotlin/String.length|
}
}
......
......@@ -136,9 +136,9 @@ digraph equalsAndIdentity_kt {
color=blue
50 [label="Enter block"];
51 [label="Access variable R|<local>/x|"];
52 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
52 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
53 [label="Access variable R|<local>/y|"];
54 [label="Function call: R|<local>/y|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
54 [label="Function call: R|<local>/y|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
55 [label="Exit block"];
}
56 [label="Exit when branch result"];
......@@ -161,9 +161,9 @@ digraph equalsAndIdentity_kt {
color=blue
66 [label="Enter block"];
67 [label="Access variable R|<local>/x|"];
68 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
68 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
69 [label="Access variable R|<local>/y|"];
70 [label="Function call: R|<local>/y|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
70 [label="Function call: R|<local>/y|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
71 [label="Exit block"];
}
72 [label="Exit when branch result"];
......
......@@ -22,15 +22,15 @@ FILE: equalsAndIdentity.kt
public final fun test_2(x: R|A?|, y: R|A?|): R|kotlin/Unit| {
when () {
==(R|<local>/x|, R|<local>/y|) -> {
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
}
when () {
===(R|<local>/x|, R|<local>/y|) -> {
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
R|<local>/y|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
}
......
......@@ -264,7 +264,7 @@ digraph nullability_kt {
color=blue
84 [label="Enter block"];
85 [label="Access variable R|<local>/x|"];
86 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
86 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
87 [label="Exit block"];
}
88 [label="Exit when branch result"];
......@@ -280,7 +280,7 @@ digraph nullability_kt {
95 [label="Exit when"];
}
96 [label="Access variable R|<local>/x|"];
97 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
97 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
98 [label="Exit block"];
}
99 [label="Exit function test_1" style="filled" fillcolor=red];
......@@ -348,14 +348,14 @@ digraph nullability_kt {
color=blue
117 [label="Enter block"];
118 [label="Access variable R|<local>/x|"];
119 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
119 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
120 [label="Exit block"];
}
121 [label="Exit when branch result"];
122 [label="Exit when"];
}
123 [label="Access variable R|<local>/x|"];
124 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
124 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
125 [label="Exit block"];
}
126 [label="Exit function test_2" style="filled" fillcolor=red];
......@@ -517,11 +517,11 @@ digraph nullability_kt {
184 [label="Access variable R|/Q.data|"];
185 [label="Access variable R|<local>/q|"];
186 [label="Access variable R|/Q.data|"];
187 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
187 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
188 [label="Access variable R|<local>/q|"];
189 [label="Access variable R|/Q.data|"];
190 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
191 [label="Function call: R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()"];
190 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
191 [label="Function call: R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()"];
192 [label="Exit block"];
}
193 [label="Exit when branch result"];
......@@ -591,11 +591,11 @@ digraph nullability_kt {
216 [label="Access variable R|/Q.data|"];
217 [label="Access variable R|<local>/q|"];
218 [label="Access variable R|/Q.data|"];
219 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
219 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
220 [label="Access variable R|<local>/q|"];
221 [label="Access variable R|/Q.data|"];
222 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
223 [label="Function call: R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()"];
222 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
223 [label="Function call: R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()"];
224 [label="Exit block"];
}
225 [label="Exit function test_6" style="filled" fillcolor=red];
......@@ -665,11 +665,11 @@ digraph nullability_kt {
247 [label="Function call: R|<local>/q|.R|/Q.fdata|()"];
248 [label="Access variable R|<local>/q|"];
249 [label="Function call: R|<local>/q|.R|/Q.fdata|()"];
250 [label="Function call: R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): [/MyData.fs]>#()"];
250 [label="Function call: R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): /MyData.fs>#()"];
251 [label="Access variable R|<local>/q|"];
252 [label="Function call: R|<local>/q|.R|/Q.fdata|()"];
253 [label="Function call: R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): [/MyData.fs]>#()"];
254 [label="Function call: R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): [/MyData.fs]>#().<Unresolved name: inc>#()"];
253 [label="Function call: R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): /MyData.fs>#()"];
254 [label="Function call: R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): /MyData.fs>#().R|kotlin/Int.inc|()"];
255 [label="Exit block"];
}
256 [label="Exit when branch result"];
......@@ -794,7 +794,7 @@ digraph nullability_kt {
293 [label="Exit when"];
}
294 [label="Access variable R|<local>/b|"];
295 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
295 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
subgraph cluster_71 {
color=blue
296 [label="Enter when"];
......@@ -819,7 +819,7 @@ digraph nullability_kt {
309 [label="Exit when"];
}
310 [label="Access variable R|<local>/b|"];
311 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
311 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
subgraph cluster_74 {
color=blue
312 [label="Enter when"];
......@@ -844,7 +844,7 @@ digraph nullability_kt {
325 [label="Exit when"];
}
326 [label="Access variable R|<local>/b|"];
327 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
327 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
subgraph cluster_77 {
color=blue
328 [label="Enter when"];
......@@ -869,7 +869,7 @@ digraph nullability_kt {
341 [label="Exit when"];
}
342 [label="Access variable R|<local>/b|"];
343 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
343 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
344 [label="Exit block"];
}
345 [label="Exit function test_9" style="filled" fillcolor=red];
......@@ -965,14 +965,14 @@ digraph nullability_kt {
color=blue
356 [label="Enter block"];
357 [label="Access variable R|<local>/b|"];
358 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
358 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
359 [label="Exit block"];
}
360 [label="Exit when branch result"];
361 [label="Exit when"];
}
362 [label="Access variable R|<local>/b|"];
363 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
363 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
subgraph cluster_85 {
color=blue
364 [label="Enter when"];
......@@ -990,14 +990,14 @@ digraph nullability_kt {
color=blue
372 [label="Enter block"];
373 [label="Access variable R|<local>/b|"];
374 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
374 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
375 [label="Exit block"];
}
376 [label="Exit when branch result"];
377 [label="Exit when"];
}
378 [label="Access variable R|<local>/b|"];
379 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
379 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
subgraph cluster_88 {
color=blue
380 [label="Enter when"];
......@@ -1015,14 +1015,14 @@ digraph nullability_kt {
color=blue
388 [label="Enter block"];
389 [label="Access variable R|<local>/b|"];
390 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
390 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
391 [label="Exit block"];
}
392 [label="Exit when branch result"];
393 [label="Exit when"];
}
394 [label="Access variable R|<local>/b|"];
395 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
395 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
subgraph cluster_91 {
color=blue
396 [label="Enter when"];
......@@ -1040,14 +1040,14 @@ digraph nullability_kt {
color=blue
404 [label="Enter block"];
405 [label="Access variable R|<local>/b|"];
406 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
406 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
407 [label="Exit block"];
}
408 [label="Exit when branch result"];
409 [label="Exit when"];
}
410 [label="Access variable R|<local>/b|"];
411 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()"];
411 [label="Function call: R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()"];
412 [label="Exit block"];
}
413 [label="Exit function test_10" style="filled" fillcolor=red];
......@@ -1164,11 +1164,11 @@ digraph nullability_kt {
444 [label="Access variable R|/QImpl.data|"];
445 [label="Access variable R|<local>/q2|"];
446 [label="Access variable R|/QImpl.data|"];
447 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
447 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
448 [label="Access variable R|<local>/q2|"];
449 [label="Access variable R|/QImpl.data|"];
450 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
451 [label="Function call: R|<local>/q2|.R|/QImpl.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()"];
450 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
451 [label="Function call: R|<local>/q2|.R|/QImpl.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()"];
subgraph cluster_99 {
color=blue
452 [label="Enter when"];
......@@ -1305,11 +1305,11 @@ digraph nullability_kt {
498 [label="Access variable R|/QImplWithCustomGetter.data|"];
499 [label="Access variable R|<local>/q|"];
500 [label="Access variable R|/QImplWithCustomGetter.data|"];
501 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
501 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
502 [label="Access variable R|<local>/q|"];
503 [label="Access variable R|/QImplWithCustomGetter.data|"];
504 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
505 [label="Function call: R|<local>/q|.R|/QImplWithCustomGetter.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()"];
504 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
505 [label="Function call: R|<local>/q|.R|/QImplWithCustomGetter.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()"];
506 [label="Exit block"];
}
507 [label="Exit when branch result"];
......@@ -1388,11 +1388,11 @@ digraph nullability_kt {
532 [label="Access variable R|/QImplMutable.data|"];
533 [label="Access variable R|<local>/q|"];
534 [label="Access variable R|/QImplMutable.data|"];
535 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
535 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
536 [label="Access variable R|<local>/q|"];
537 [label="Access variable R|/QImplMutable.data|"];
538 [label="Access variable <Inapplicable(WRONG_RECEIVER): [/MyData.s]>#"];
539 [label="Function call: R|<local>/q|.R|/QImplMutable.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()"];
538 [label="Access variable <Inapplicable(WRONG_RECEIVER): /MyData.s>#"];
539 [label="Function call: R|<local>/q|.R|/QImplMutable.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()"];
540 [label="Exit block"];
}
541 [label="Exit when branch result"];
......
......@@ -68,7 +68,7 @@ fun test_5(q: Q?) {
if (q?.data?.s?.inc() != null) {
q.data // good
q.data.<!INAPPLICABLE_CANDIDATE!>s<!> // should be bad
q.data.<!INAPPLICABLE_CANDIDATE!>s<!>.<!UNRESOLVED_REFERENCE!>inc<!>() // should be bad
q.data.<!INAPPLICABLE_CANDIDATE!>s<!>.inc() // should be bad
}
}
......@@ -77,14 +77,14 @@ fun test_6(q: Q?) {
q?.data?.s?.inc() ?: return
q.data // good
q.data.<!INAPPLICABLE_CANDIDATE!>s<!> // should be bad
q.data.<!INAPPLICABLE_CANDIDATE!>s<!>.<!UNRESOLVED_REFERENCE!>inc<!>() // should be bad
q.data.<!INAPPLICABLE_CANDIDATE!>s<!>.inc() // should be bad
}
fun test_7(q: Q?) {
if (q?.fdata()?.fs()?.inc() != null) {
q.fdata() // good
q.fdata().<!INAPPLICABLE_CANDIDATE!>fs<!>() // bad
q.fdata().<!INAPPLICABLE_CANDIDATE!>fs<!>().<!UNRESOLVED_REFERENCE!>inc<!>() // bad
q.fdata().<!INAPPLICABLE_CANDIDATE!>fs<!>().inc() // bad
}
}
......@@ -149,7 +149,7 @@ fun test_11(q: QImpl?, q2: QImpl) {
// Issue: Smartcasting of QImpl.data affects all instances
q2.data
q2.data.<!INAPPLICABLE_CANDIDATE!>s<!> // should be bad
q2.data.<!INAPPLICABLE_CANDIDATE!>s<!>.<!UNRESOLVED_REFERENCE!>inc<!>() // should be bad
q2.data.<!INAPPLICABLE_CANDIDATE!>s<!>.inc() // should be bad
if (q2.data != null) {
q2.data.s
......@@ -163,7 +163,7 @@ fun test_12(q: QImplWithCustomGetter?) {
if (q?.data?.s?.inc() != null) {
q.data // good
q.data.<!INAPPLICABLE_CANDIDATE!>s<!> // should be bad
q.data.<!INAPPLICABLE_CANDIDATE!>s<!>.<!UNRESOLVED_REFERENCE!>inc<!>() // should be bad
q.data.<!INAPPLICABLE_CANDIDATE!>s<!>.inc() // should be bad
}
}
......@@ -172,6 +172,6 @@ fun test_13(q: QImplMutable?) {
if (q?.data?.s?.inc() != null) {
q.data // good
q.data.<!INAPPLICABLE_CANDIDATE!>s<!> // should be bad
q.data.<!INAPPLICABLE_CANDIDATE!>s<!>.<!UNRESOLVED_REFERENCE!>inc<!>() // should be bad
q.data.<!INAPPLICABLE_CANDIDATE!>s<!>.inc() // should be bad
}
}
......@@ -67,23 +67,23 @@ FILE: nullability.kt
R|<local>/x|.R|/A.foo|()
}
else -> {
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
}
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
public final fun test_2(x: R|A?|): R|kotlin/Unit| {
when () {
==(R|<local>/x|, Null(null)) -> {
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
else -> {
R|<local>/x|.R|/A.foo|()
}
}
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
public final fun test_3(x: R|A?|): R|kotlin/Unit| {
R|<local>/x| ?: ^test_3 Unit
......@@ -102,8 +102,8 @@ FILE: nullability.kt
when () {
!=(R|<local>/q|?.{ $subj$.R|/Q.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> {
R|<local>/q|.R|/Q.data|
R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#
R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()
R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#
R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()
}
}
......@@ -111,15 +111,15 @@ FILE: nullability.kt
public final fun test_6(q: R|Q?|): R|kotlin/Unit| {
R|<local>/q|?.{ $subj$.R|/Q.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() } ?: ^test_6 Unit
R|<local>/q|.R|/Q.data|
R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#
R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()
R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#
R|<local>/q|.R|/Q.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()
}
public final fun test_7(q: R|Q?|): R|kotlin/Unit| {
when () {
!=(R|<local>/q|?.{ $subj$.R|/Q.fdata|() }?.{ $subj$.R|/MyData.fs|() }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> {
R|<local>/q|.R|/Q.fdata|()
R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): [/MyData.fs]>#()
R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): [/MyData.fs]>#().<Unresolved name: inc>#()
R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): /MyData.fs>#()
R|<local>/q|.R|/Q.fdata|().<Inapplicable(WRONG_RECEIVER): /MyData.fs>#().R|kotlin/Int.inc|()
}
}
......@@ -139,58 +139,58 @@ FILE: nullability.kt
}
}
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
when () {
===(R|<local>/a|, R|<local>/b|) -> {
R|<local>/b|.R|kotlin/Int.inc|()
}
}
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
when () {
==(R|<local>/b|, R|<local>/a|) -> {
R|<local>/b|.R|kotlin/Int.inc|()
}
}
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
when () {
===(R|<local>/b|, R|<local>/a|) -> {
R|<local>/b|.R|kotlin/Int.inc|()
}
}
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
}
public final fun test_10(a: R|kotlin/Int?|, b: R|kotlin/Int?|): R|kotlin/Unit| {
when () {
==(R|<local>/a|, R|<local>/b|) -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
}
}
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
when () {
===(R|<local>/a|, R|<local>/b|) -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
}
}
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
when () {
==(R|<local>/b|, R|<local>/a|) -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
}
}
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
when () {
===(R|<local>/b|, R|<local>/a|) -> {
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
}
}
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): [kotlin/Int.inc]>#()
R|<local>/b|.<Inapplicable(WRONG_RECEIVER): kotlin/Int.inc>#()
}
public final fun test_11(q: R|QImpl?|, q2: R|QImpl|): R|kotlin/Unit| {
when () {
......@@ -199,8 +199,8 @@ FILE: nullability.kt
R|<local>/q|.R|/QImpl.data|.R|/MyData.s|
R|<local>/q|.R|/QImpl.data|.R|/MyData.s|.R|kotlin/Int.inc|()
R|<local>/q2|.R|/QImpl.data|
R|<local>/q2|.R|/QImpl.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#
R|<local>/q2|.R|/QImpl.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()
R|<local>/q2|.R|/QImpl.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#
R|<local>/q2|.R|/QImpl.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()
when () {
!=(R|<local>/q2|.R|/QImpl.data|, Null(null)) -> {
R|<local>/q2|.R|/QImpl.data|.R|/MyData.s|
......@@ -216,8 +216,8 @@ FILE: nullability.kt
when () {
!=(R|<local>/q|?.{ $subj$.R|/QImplWithCustomGetter.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> {
R|<local>/q|.R|/QImplWithCustomGetter.data|
R|<local>/q|.R|/QImplWithCustomGetter.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#
R|<local>/q|.R|/QImplWithCustomGetter.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()
R|<local>/q|.R|/QImplWithCustomGetter.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#
R|<local>/q|.R|/QImplWithCustomGetter.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()
}
}
......@@ -226,8 +226,8 @@ FILE: nullability.kt
when () {
!=(R|<local>/q|?.{ $subj$.R|/QImplMutable.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> {
R|<local>/q|.R|/QImplMutable.data|
R|<local>/q|.R|/QImplMutable.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#
R|<local>/q|.R|/QImplMutable.data|.<Inapplicable(WRONG_RECEIVER): [/MyData.s]>#.<Unresolved name: inc>#()
R|<local>/q|.R|/QImplMutable.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#
R|<local>/q|.R|/QImplMutable.data|.<Inapplicable(WRONG_RECEIVER): /MyData.s>#.R|kotlin/Int.inc|()
}
}
......
......@@ -4,7 +4,7 @@ FILE: orInWhenBranch.kt
public final fun test_1(a: R|kotlin/Any?|): R|kotlin/Unit| {
when (R|<local>/a|) {
($subj$ is R|kotlin/String|) || ($subj$ is R|kotlin/Any|) -> {
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /foo>#()
}
}
......@@ -12,7 +12,7 @@ FILE: orInWhenBranch.kt
public final fun test_2(a: R|kotlin/Any?|): R|kotlin/Unit| {
when () {
(R|<local>/a| is R|kotlin/String|) || (R|<local>/a| is R|kotlin/Any|) -> {
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /foo>#()
}
}
......@@ -20,7 +20,7 @@ FILE: orInWhenBranch.kt
public final fun test_3(a: R|kotlin/Any?|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
when (R|<local>/a|) {
($subj$ is R|kotlin/String|) || ==($subj$, R|<local>/b|) -> {
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /foo>#()
}
}
......@@ -28,7 +28,7 @@ FILE: orInWhenBranch.kt
public final fun test_4(a: R|kotlin/Any?|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
when () {
(R|<local>/a| is R|kotlin/String|) || R|<local>/b| -> {
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /foo>#()
}
}
......
......@@ -54,7 +54,7 @@ digraph safeCallAndEqualityToBool_kt {
color=blue
21 [label="Enter block"];
22 [label="Access variable R|<local>/s|"];
23 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
23 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
24 [label="Exit block"];
}
25 [label="Exit when branch result"];
......@@ -131,7 +131,7 @@ digraph safeCallAndEqualityToBool_kt {
color=blue
49 [label="Enter block"];
50 [label="Access variable R|<local>/s|"];
51 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
51 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
52 [label="Exit block"];
}
53 [label="Exit when branch result"];
......@@ -217,7 +217,7 @@ digraph safeCallAndEqualityToBool_kt {
color=blue
83 [label="Enter block"];
84 [label="Access variable R|<local>/s|"];
85 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
85 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
86 [label="Exit block"];
}
87 [label="Exit when branch result"];
......@@ -294,7 +294,7 @@ digraph safeCallAndEqualityToBool_kt {
color=blue
111 [label="Enter block"];
112 [label="Access variable R|<local>/s|"];
113 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
113 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
114 [label="Exit block"];
}
115 [label="Exit when branch result"];
......
......@@ -8,7 +8,7 @@ FILE: safeCallAndEqualityToBool.kt
R|<local>/s|.R|kotlin/String.length|
}
else -> {
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
}
......@@ -19,7 +19,7 @@ FILE: safeCallAndEqualityToBool.kt
R|<local>/s|.R|kotlin/String.length|
}
else -> {
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
}
......@@ -27,7 +27,7 @@ FILE: safeCallAndEqualityToBool.kt
public final fun test_3(s: R|kotlin/String?|): R|kotlin/Unit| {
when () {
!=(R|<local>/s|?.{ $subj$.R|/check|() }, Boolean(true)) -> {
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
else -> {
R|<local>/s|.R|kotlin/String.length|
......@@ -38,7 +38,7 @@ FILE: safeCallAndEqualityToBool.kt
public final fun test_4(s: R|kotlin/String?|): R|kotlin/Unit| {
when () {
!=(R|<local>/s|?.{ $subj$.R|/check|() }, Boolean(false)) -> {
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
else -> {
R|<local>/s|.R|kotlin/String.length|
......
......@@ -53,7 +53,7 @@ digraph safeCalls_kt {
19 [label="Function call: $subj$.R|/foo|(...)"];
20 [label="Exit safe call"];
21 [label="Access variable R|<local>/x|"];
22 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
22 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
23 [label="Exit block"];
}
24 [label="Exit function test" style="filled" fillcolor=red];
......@@ -207,7 +207,7 @@ digraph safeCalls_kt {
78 [label="Function call: $subj$.R|/A.bool|()"];
79 [label="Exit safe call"];
80 [label="Access variable R|<local>/x|"];
81 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.id]>#()"];
81 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.id>#()"];
82 [label="Exit block"];
}
83 [label="Exit function test_4" style="filled" fillcolor=red];
......@@ -271,7 +271,7 @@ digraph safeCalls_kt {
101 [label="Function call: $subj$.R|/boo|(...)"];
102 [label="Exit safe call"];
103 [label="Access variable R|<local>/x|"];
104 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.id]>#()"];
104 [label="Function call: R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.id>#()"];
105 [label="Exit block"];
}
106 [label="Exit function test_5" style="filled" fillcolor=red];
......
......@@ -6,7 +6,7 @@ FILE: safeCalls.kt
}
public final fun test(x: R|kotlin/String?|): R|kotlin/Unit| {
R|<local>/x|?.{ $subj$.R|/foo|(==(R|<local>/x|.R|kotlin/String.length|, Int(1))) }
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
public abstract interface A : R|kotlin/Any| {
public abstract fun bar(a: R|A|): R|kotlin/String|
......@@ -28,7 +28,7 @@ FILE: safeCalls.kt
}
public final fun test_4(x: R|A?|): R|kotlin/Unit| {
R|<local>/x|?.{ $subj$.R|/A.id|() }?.{ $subj$.R|/A.bool|() }
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.id]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.id>#()
}
public final fun R|kotlin/Any?|.boo(b: R|kotlin/Boolean|): R|kotlin/Unit| {
}
......@@ -37,5 +37,5 @@ FILE: safeCalls.kt
^test_5 Unit
}
) }?.{ $subj$.R|/boo|(R|<local>/x|.R|/A.bool|()) }
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/A.id]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /A.id>#()
}
......@@ -77,7 +77,7 @@ digraph delayedAssignment_kt {
32 [label="Exit when"];
}
33 [label="Access variable R|<local>/a|"];
34 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()"];
34 [label="Function call: R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()"];
35 [label="Exit block"];
}
36 [label="Exit function test" style="filled" fillcolor=red];
......
......@@ -20,5 +20,5 @@ FILE: delayedAssignment.kt
}
}
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
R|<local>/a|.<Inapplicable(WRONG_RECEIVER): /A.foo>#()
}
......@@ -103,7 +103,7 @@ digraph smartcastAfterReassignment_kt {
40 [label="Const: Null(null)"];
41 [label="Assignment: R|<local>/x|"];
42 [label="Access variable R|<local>/x|"];
43 [label="Access variable <Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#"];
43 [label="Access variable <Inapplicable(WRONG_RECEIVER): kotlin/String.length>#"];
44 [label="Exit block"];
}
45 [label="Exit function test_3" style="filled" fillcolor=red];
......
......@@ -19,5 +19,5 @@ FILE: smartcastAfterReassignment.kt
R|<local>/x| = String()
R|<local>/x|.R|kotlin/String.length|
R|<local>/x| = Null(null)
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
......@@ -2,12 +2,12 @@ class A {
companion object Comp {}
fun foo() {
<!INAPPLICABLE_CANDIDATE!>Comp<!>()
<!HIDDEN!>Comp<!>()
}
}
object B {
private val x = <!INAPPLICABLE_CANDIDATE!>B<!>()
private val x = <!HIDDEN!>B<!>()
}
class D {
......
......@@ -12,7 +12,7 @@ FILE: singletonConstructors.kt
}
public final fun foo(): R|kotlin/Unit| {
<Inapplicable(HIDDEN): [/A.Comp.Comp]>#()
<HIDDEN: /A.Comp.Comp is invisible>#()
}
}
......@@ -21,8 +21,8 @@ FILE: singletonConstructors.kt
super<R|kotlin/Any|>()
}
private final val x: <ERROR TYPE REF: Inapplicable(HIDDEN): [/B.B]> = <Inapplicable(HIDDEN): [/B.B]>#()
private get(): <ERROR TYPE REF: Inapplicable(HIDDEN): [/B.B]>
private final val x: R|B| = <HIDDEN: /B.B is invisible>#()
private get(): R|B|
}
public final class D : R|kotlin/Any| {
......
......@@ -34,13 +34,13 @@ fun main() {
<!AMBIGUITY!>foo3<!>(KotlinClass::baz)
// Type mismatch
<!INAPPLICABLE_CANDIDATE!>foo1<!>(KotlinClass::bar)
<!INAPPLICABLE_CANDIDATE!>foo1<!>(<!UNRESOLVED_REFERENCE!>KotlinClass::bar<!>)
foo2(KotlinClass::bar)
foo3(KotlinClass::bar)
foo1(KotlinClass2::bar)
// Type mismatch
<!INAPPLICABLE_CANDIDATE!>foo2<!>(KotlinClass2::bar)
<!INAPPLICABLE_CANDIDATE!>foo2<!>(<!UNRESOLVED_REFERENCE!>KotlinClass2::bar<!>)
foo3(KotlinClass2::bar)
}
......@@ -53,10 +53,10 @@ FILE: main.kt
R|/foo1|(Q|KotlinClass|::R|/KotlinClass.Companion.baz|)
R|/foo2|(Q|KotlinClass|::R|/KotlinClass.baz|)
<Ambiguity: foo3, [/foo3, /foo3]>#(Q|KotlinClass|::R|/KotlinClass.baz|)
<Inapplicable(INAPPLICABLE): [/foo1]>#(Q|KotlinClass|::R|/JavaClass.bar|)
<Inapplicable(INAPPLICABLE): /foo1>#(Q|KotlinClass|::<Unresolved reference: bar>#)
R|/foo2|(Q|KotlinClass|::R|/JavaClass.bar|)
R|/foo3|(Q|KotlinClass|::R|/JavaClass.bar|)
R|/foo1|(Q|KotlinClass2|::R|/KotlinClass2.Companion.bar|)
<Inapplicable(INAPPLICABLE): [/foo2]>#(Q|KotlinClass2|::R|/KotlinClass2.bar|)
<Inapplicable(INAPPLICABLE): /foo2>#(Q|KotlinClass2|::<Unresolved reference: bar>#)
R|/foo3|(Q|KotlinClass2|::R|/KotlinClass2.Companion.bar|)
}
......@@ -7,6 +7,6 @@ fun <T> bar(f: (T) -> Unit, e: T) {}
fun <T> baz(e: T, f: (T) -> Unit) {}
fun test(a: A, b: B) {
<!INAPPLICABLE_CANDIDATE!>baz<!>(a, ::fooB)
<!INAPPLICABLE_CANDIDATE!>bar<!>(::fooB, a)
<!INAPPLICABLE_CANDIDATE!>baz<!>(a, <!UNRESOLVED_REFERENCE!>::fooB<!>)
<!INAPPLICABLE_CANDIDATE!>bar<!>(<!UNRESOLVED_REFERENCE!>::fooB<!>, a)
}
......@@ -10,6 +10,6 @@ FILE: resolveCallableReferencesAfterAllSimpleArguments.kt
public final fun <T> baz(e: R|T|, f: R|(T) -> kotlin/Unit|): R|kotlin/Unit| {
}
public final fun test(a: R|A|, b: R|B|): R|kotlin/Unit| {
<Inapplicable(INAPPLICABLE): [/baz]>#(R|<local>/a|, ::R|/fooB|)
<Inapplicable(INAPPLICABLE): [/bar]>#(::R|/fooB|, R|<local>/a|)
<Inapplicable(INAPPLICABLE): /baz>#<R|A|>(R|<local>/a|, ::<Unresolved reference: fooB>#)
<Inapplicable(INAPPLICABLE): /bar>#<R|A|>(::<Unresolved reference: fooB>#, R|<local>/a|)
}
......@@ -3,5 +3,5 @@ fun <T, R> use(x: (T) -> R): (T) -> R = x
fun foo() = use(::bar)
fun bar(x: String) = 1
fun loop1() = <!INAPPLICABLE_CANDIDATE!>use<!>(::loop2)
fun loop1() = <!INAPPLICABLE_CANDIDATE!>use<!>(<!UNRESOLVED_REFERENCE!>::loop2<!>)
fun loop2() = loop1()
......@@ -8,8 +8,8 @@ FILE: implicitTypes.kt
public final fun bar(x: R|kotlin/String|): R|kotlin/Int| {
^bar Int(1)
}
public final fun loop1(): <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [/use]> {
^loop1 <Inapplicable(INAPPLICABLE): [/use]>#(::R|/loop2|)
public final fun loop1(): R|(kotlin/Any?) -> kotlin/Nothing| {
^loop1 <Inapplicable(INAPPLICABLE): /use>#<R|kotlin/Any?|, R|kotlin/Nothing|>(::<Unresolved reference: loop2>#)
}
public final fun loop2(): <ERROR TYPE REF: cycle> {
^loop2 R|/loop1|()
......
......@@ -10,7 +10,7 @@ FILE: notIsNullOrEmpty.kt
public final fun test_2(s: R|kotlin/String?|): R|kotlin/Unit| {
when () {
R|<local>/s|.R|kotlin/text/isNullOrEmpty|() -> {
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/s|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
else -> {
R|<local>/s|.R|kotlin/String.length|
......
......@@ -29,7 +29,7 @@ FILE: eqNotEq.kt
R|<local>/x|.R|kotlin/String.length|
}
else -> {
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [kotlin/String.length]>#
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): kotlin/String.length>#
}
}
......
......@@ -33,7 +33,7 @@ FILE: receivers.kt
this@R|special/anonymous|.R|/myRequireNotNull|()
}
)
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): [/foo]>#()
R|<local>/x|.<Inapplicable(WRONG_RECEIVER): /foo>#()
}
public final fun test_4(x: R|A?|): R|kotlin/Unit| {
R|kotlin/with|<R|A?|, R|kotlin/Unit|>(R|<local>/x|, <L> = with@fun R|A?|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
......
......@@ -22,24 +22,24 @@ import j.JavaProtected
import j.JavaPackageLocal
class A {
val p1 = JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaPPackage<!>
val p2 = JavaProtected.<!INAPPLICABLE_CANDIDATE!>javaPProtectedStatic<!>
val p3 = JavaProtected().<!INAPPLICABLE_CANDIDATE!>javaPProtectedPackage<!>
val p1 = JavaPackageLocal.<!HIDDEN!>javaPPackage<!>
val p2 = JavaProtected.<!HIDDEN!>javaPProtectedStatic<!>
val p3 = JavaProtected().<!HIDDEN!>javaPProtectedPackage<!>
fun test() {
JavaProtected.<!INAPPLICABLE_CANDIDATE!>javaMProtectedStatic<!>()
JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaMPackage<!>()
JavaProtected.<!HIDDEN!>javaMProtectedStatic<!>()
JavaPackageLocal.<!HIDDEN!>javaMPackage<!>()
}
}
class B : JavaProtected() {
val p1 = JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaPPackage<!>
val p1 = JavaPackageLocal.<!HIDDEN!>javaPPackage<!>
val p2 = JavaProtected.javaPProtectedStatic
val p3 = javaPProtectedPackage
fun test() {
JavaProtected.javaMProtectedStatic()
JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaMPackage<!>()
JavaPackageLocal.<!HIDDEN!>javaMPackage<!>()
}
}
......@@ -59,4 +59,4 @@ class C {
JavaProtected.javaMProtectedStatic()
JavaPackageLocal.javaMPackage()
}
}
\ No newline at end of file
}
......@@ -4,18 +4,18 @@ FILE: k.kt
super<R|kotlin/Any|>()
}
public final val p1: <ERROR TYPE REF: Inapplicable(HIDDEN): [j/JavaPackageLocal.javaPPackage]> = Q|j/JavaPackageLocal|.<Inapplicable(HIDDEN): [j/JavaPackageLocal.javaPPackage]>#
public get(): <ERROR TYPE REF: Inapplicable(HIDDEN): [j/JavaPackageLocal.javaPPackage]>
public final val p1: R|kotlin/Int| = Q|j/JavaPackageLocal|.<HIDDEN: j/JavaPackageLocal.javaPPackage is invisible>#
public get(): R|kotlin/Int|
public final val p2: <ERROR TYPE REF: Inapplicable(HIDDEN): [j/JavaProtected.javaPProtectedStatic]> = Q|j/JavaProtected|.<Inapplicable(HIDDEN): [j/JavaProtected.javaPProtectedStatic]>#
public get(): <ERROR TYPE REF: Inapplicable(HIDDEN): [j/JavaProtected.javaPProtectedStatic]>
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.<HIDDEN: j/JavaProtected.javaPProtectedStatic is invisible>#
public get(): R|kotlin/Int|
public final val p3: <ERROR TYPE REF: Inapplicable(HIDDEN): [j/JavaProtected.javaPProtectedPackage]> = R|j/JavaProtected.JavaProtected|().<Inapplicable(HIDDEN): [j/JavaProtected.javaPProtectedPackage]>#
public get(): <ERROR TYPE REF: Inapplicable(HIDDEN): [j/JavaProtected.javaPProtectedPackage]>
public final val p3: R|kotlin/Int| = R|j/JavaProtected.JavaProtected|().<HIDDEN: j/JavaProtected.javaPProtectedPackage is invisible>#
public get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| {
Q|j/JavaProtected|.<Inapplicable(HIDDEN): [j/JavaProtected.javaMProtectedStatic]>#()
Q|j/JavaPackageLocal|.<Inapplicable(HIDDEN): [j/JavaPackageLocal.javaMPackage]>#()
Q|j/JavaProtected|.<HIDDEN: j/JavaProtected.javaMProtectedStatic is invisible>#()
Q|j/JavaPackageLocal|.<HIDDEN: j/JavaPackageLocal.javaMPackage is invisible>#()
}
}
......@@ -24,8 +24,8 @@ FILE: k.kt
super<R|j/JavaProtected|>()
}
public final val p1: <ERROR TYPE REF: Inapplicable(HIDDEN): [j/JavaPackageLocal.javaPPackage]> = Q|j/JavaPackageLocal|.<Inapplicable(HIDDEN): [j/JavaPackageLocal.javaPPackage]>#
public get(): <ERROR TYPE REF: Inapplicable(HIDDEN): [j/JavaPackageLocal.javaPPackage]>
public final val p1: R|kotlin/Int| = Q|j/JavaPackageLocal|.<HIDDEN: j/JavaPackageLocal.javaPPackage is invisible>#
public get(): R|kotlin/Int|
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.R|j/JavaProtected.javaPProtectedStatic|
public get(): R|kotlin/Int|
......@@ -35,7 +35,7 @@ FILE: k.kt
public final fun test(): R|kotlin/Unit| {
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic|()
Q|j/JavaPackageLocal|.<Inapplicable(HIDDEN): [j/JavaPackageLocal.javaMPackage]>#()
Q|j/JavaPackageLocal|.<HIDDEN: j/JavaPackageLocal.javaMPackage is invisible>#()
}
}
......
......@@ -7,9 +7,9 @@ FILE: K1.kt
}
public final fun main(k: R|KSub|, vString: R|SuperClass.NestedInSuperClass<kotlin/String>|, vInt: R|SuperClass.NestedInSuperClass<kotlin/Int>|): R|kotlin/Unit| {
R|<local>/k|.R|/J1.getImpl|().R|FakeOverride</J1.NestedIImpl.nestedI: R|kotlin/Unit|>|(R|<local>/vString|)
R|<local>/k|.R|/J1.getImpl|().<Inapplicable(INAPPLICABLE): [/J1.NestedIImpl.nestedI]>#(R|<local>/vInt|)
R|<local>/k|.R|/J1.getImpl|().<Inapplicable(INAPPLICABLE): /J1.NestedIImpl.nestedI>#(R|<local>/vInt|)
R|<local>/k|.R|/J1.getNestedSubClass|().R|FakeOverride</J1.NestedSubClass.nested: R|kotlin/Unit|>|(String())
R|<local>/k|.R|/J1.getNestedSubClass|().<Inapplicable(INAPPLICABLE): [/J1.NestedSubClass.nested]>#(Int(1))
R|<local>/k|.R|/J1.getNestedSubClass|().<Inapplicable(INAPPLICABLE): /J1.NestedSubClass.nested>#(Int(1))
}
FILE: K2.kt
public open class KFirst : R|SuperClass<kotlin/String>|, R|SuperI<kotlin/Int>| {
......
......@@ -8,5 +8,5 @@ FILE: K1.kt
FILE: K2.kt
public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|())
Q|JavaClass|.<Inapplicable(INAPPLICABLE): [/JavaClass.baz]>#(String())
Q|JavaClass|.<Inapplicable(INAPPLICABLE): /JavaClass.baz>#(String())
}
......@@ -9,6 +9,6 @@ FILE: K2.kt
public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|ft<kotlin/Int, kotlin/Int?>!|>())
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|kotlin/Int|>())
Q|JavaClass|.<Inapplicable(INAPPLICABLE): [/JavaClass.baz]>#(R|/KotlinClass.KotlinClass|<R|kotlin/String|>())
Q|JavaClass|.<Inapplicable(INAPPLICABLE): [/JavaClass.baz]>#(String())
Q|JavaClass|.<Inapplicable(INAPPLICABLE): /JavaClass.baz>#(R|/KotlinClass.KotlinClass|<R|kotlin/String|>())
Q|JavaClass|.<Inapplicable(INAPPLICABLE): /JavaClass.baz>#(String())
}
......@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind.*
import org.jetbrains.kotlin.fir.expressions.FirErrorExpression
import org.jetbrains.kotlin.fir.expressions.FirErrorLoop
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.resolve.calls.CandidateApplicability
import org.jetbrains.kotlin.fir.resolve.diagnostics.*
import org.jetbrains.kotlin.fir.types.FirErrorTypeRef
......@@ -53,8 +54,13 @@ class ErrorNodeDiagnosticCollectorComponent(collector: AbstractDiagnosticCollect
is ConeUnresolvedReferenceError -> FirErrors.UNRESOLVED_REFERENCE.on(source, diagnostic.name?.asString() ?: "<No name>")
is ConeUnresolvedSymbolError -> FirErrors.UNRESOLVED_REFERENCE.on(source, diagnostic.classId.asString())
is ConeUnresolvedNameError -> FirErrors.UNRESOLVED_REFERENCE.on(source, diagnostic.name.asString())
is ConeInapplicableCandidateError -> FirErrors.INAPPLICABLE_CANDIDATE.on(source, diagnostic.candidates.map { it.symbol })
is ConeAmbiguityError -> FirErrors.AMBIGUITY.on(source, diagnostic.candidates)
is ConeHiddenCandidateError -> FirErrors.HIDDEN.on(source, diagnostic.candidateSymbol)
is ConeInapplicableCandidateError -> FirErrors.INAPPLICABLE_CANDIDATE.on(source, diagnostic.candidateSymbol)
is ConeAmbiguityError -> if (diagnostic.applicability < CandidateApplicability.SYNTHETIC_RESOLVED) {
FirErrors.NONE_APPLICABLE.on(source, diagnostic.candidates)
} else {
FirErrors.AMBIGUITY.on(source, diagnostic.candidates)
}
is ConeOperatorAmbiguityError -> FirErrors.ASSIGN_OPERATOR_AMBIGUITY.on(source, diagnostic.candidates)
is ConeVariableExpectedError -> FirErrors.VARIABLE_EXPECTED.on(source)
is ConeTypeMismatchError -> FirErrors.TYPE_MISMATCH.on(source, diagnostic.expectedType, diagnostic.actualType)
......
......@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.NULLABLE_STRING
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.PROPERTY_NAME
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.SYMBOL
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.SYMBOLS
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.TO_STRING
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.AMBIGUITY
......@@ -22,11 +23,13 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.EXPOSED_PARAMETER
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.EXPOSED_PROPERTY_TYPE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.EXPOSED_RECEIVER_TYPE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.EXPOSED_TYPEALIAS_EXPANDED_TYPE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.HIDDEN
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ILLEGAL_CONST_EXPRESSION
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.ILLEGAL_UNDERSCORE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.INAPPLICABLE_CANDIDATE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.INCOMPATIBLE_MODIFIERS
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.INFERENCE_ERROR
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NONE_APPLICABLE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.OTHER_ERROR
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RECURSION_IN_IMPLICIT_TYPES
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RECURSION_IN_SUPERTYPES
......@@ -48,7 +51,9 @@ class FirDefaultErrorMessages : DefaultErrorMessages.Extension {
companion object {
val MAP = FirDiagnosticFactoryToRendererMap("FIR").also { map ->
map.put(UNRESOLVED_REFERENCE, "Unresolved reference: {0}", NULLABLE_STRING)
map.put(INAPPLICABLE_CANDIDATE, "Inapplicable candidate(s): {0}", SYMBOLS)
map.put(HIDDEN, "Symbol {0} is invisible", SYMBOL)
map.put(NONE_APPLICABLE, "None of the following functions are applicable: {0}", SYMBOLS)
map.put(INAPPLICABLE_CANDIDATE, "Inapplicable candidate(s): {0}", SYMBOL)
map.put(AMBIGUITY, "Ambiguity between candidates: {0}", SYMBOLS)
map.put(ASSIGN_OPERATOR_AMBIGUITY, "Ambiguity between assign operator candidates: {0}", SYMBOLS)
map.put(SYNTAX_ERROR, "Syntax error")
......
......@@ -14,13 +14,17 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
object FirDiagnosticRenderers {
val NULLABLE_STRING = Renderer<String?> { it ?: "null" }
val SYMBOL = Renderer { symbol: AbstractFirBasedSymbol<*> ->
when (symbol) {
is FirClassLikeSymbol<*> -> symbol.classId.asString()
is FirCallableSymbol<*> -> symbol.callableId.toString()
else -> "???"
}
}
val SYMBOLS = Renderer { symbols: Collection<AbstractFirBasedSymbol<*>> ->
symbols.joinToString(prefix = "[", postfix = "]", separator = ",", limit = 3, truncated = "...") { symbol ->
when (symbol) {
is FirClassLikeSymbol<*> -> symbol.classId.asString()
is FirCallableSymbol<*> -> symbol.callableId.toString()
else -> "???"
}
SYMBOL.render(symbol)
}
}
......@@ -31,4 +35,4 @@ object FirDiagnosticRenderers {
val PROPERTY_NAME = Renderer { symbol: FirPropertySymbol ->
symbol.fir.name.asString()
}
}
\ No newline at end of file
}
......@@ -19,7 +19,9 @@ import org.jetbrains.kotlin.psi.*
object FirErrors {
val UNRESOLVED_REFERENCE by error1<FirSourceElement, PsiElement, String>()
val INAPPLICABLE_CANDIDATE by error1<FirSourceElement, PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
val HIDDEN by error1<FirSourceElement, PsiElement, AbstractFirBasedSymbol<*>>()
val NONE_APPLICABLE by error1<FirSourceElement, PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
val INAPPLICABLE_CANDIDATE by error1<FirSourceElement, PsiElement, AbstractFirBasedSymbol<*>>()
val AMBIGUITY by error1<FirSourceElement, PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
val ASSIGN_OPERATOR_AMBIGUITY by error1<FirSourceElement, PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
val SYNTAX_ERROR by error0<FirSourceElement, PsiElement>()
......
......@@ -1229,29 +1229,27 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
private fun FlowContent.generate(diagnostic: ConeDiagnostic) {
when (diagnostic) {
is ConeInapplicableCandidateError -> {
for (candidate in diagnostic.candidates) {
describeVerbose(candidate.symbol)
br
candidate.diagnostics.forEach { callDiagnostic ->
when (callDiagnostic) {
is NewConstraintError -> {
ident()
describeVerbose(diagnostic.candidateSymbol)
br
diagnostic.diagnostics.forEach { callDiagnostic ->
when (callDiagnostic) {
is NewConstraintError -> {
ident()
generate(callDiagnostic.lowerType as ConeKotlinType)
generate(callDiagnostic.lowerType as ConeKotlinType)
ws
span(classes = "subtype-error") { +"<:" }
ws
generate(callDiagnostic.upperType as ConeKotlinType)
}
else -> {
ident()
callDiagnostic::class.qualifiedName?.let { +it }
Unit
}
ws
span(classes = "subtype-error") { +"<:" }
ws
generate(callDiagnostic.upperType as ConeKotlinType)
}
else -> {
ident()
callDiagnostic::class.qualifiedName?.let { +it }
Unit
}
br
}
br
}
}
is ConeAmbiguityError -> {
......
......@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.calls.*
import org.jetbrains.kotlin.fir.resolve.calls.tower.FirTowerResolver
import org.jetbrains.kotlin.fir.resolve.calls.tower.TowerResolveManager
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeHiddenCandidateError
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
import org.jetbrains.kotlin.fir.resolve.inference.ResolvedCallableReferenceAtom
......@@ -397,20 +398,24 @@ class FirCallResolver(
source,
name
)
applicability < CandidateApplicability.SYNTHETIC_RESOLVED -> {
val diagnostic = ConeInapplicableCandidateError(
applicability,
candidates.map {
ConeInapplicableCandidateError.CandidateInfo(
it.symbol,
if (it.systemInitialized) it.system.diagnostics else emptyList(),
)
}
)
buildErrorReference(callInfo, diagnostic, source, name)
candidates.size > 1 -> buildErrorReference(
callInfo,
ConeAmbiguityError(name, applicability, candidates.map { it.symbol }),
source,
name
)
applicability < CandidateApplicability.SYNTHETIC_RESOLVED -> {
val candidate = candidates.single()
val diagnostic = when (applicability) {
CandidateApplicability.HIDDEN -> ConeHiddenCandidateError(candidate.symbol)
else -> ConeInapplicableCandidateError(applicability, candidate)
}
buildErrorReference(source, candidate, diagnostic)
}
candidates.size == 1 -> {
else -> {
val candidate = candidates.single()
val coneSymbol = candidate.symbol
if (coneSymbol is FirBackingFieldSymbol) {
......@@ -434,12 +439,6 @@ class FirCallResolver(
}
FirNamedReferenceWithCandidate(source, name, candidate)
}
else -> buildErrorReference(
callInfo,
ConeAmbiguityError(name, candidates.map { it.symbol }),
source,
name
)
}
}
......@@ -453,4 +452,15 @@ class FirCallResolver(
resolutionStageRunner.processCandidate(candidate, stopOnFirstError = false)
return FirErrorReferenceWithCandidate(source, name, candidate, diagnostic)
}
private fun buildErrorReference(
source: FirSourceElement?,
candidate: Candidate,
diagnostic: ConeDiagnostic
): FirErrorReferenceWithCandidate {
if (!candidate.fullyAnalyzed) {
resolutionStageRunner.processCandidate(candidate, stopOnFirstError = false)
}
return FirErrorReferenceWithCandidate(source, candidate.callInfo.name, candidate, diagnostic)
}
}
......@@ -115,6 +115,8 @@ class Candidate(
val diagnostics: MutableList<ResolutionDiagnostic> = mutableListOf()
var passedStages: Int = 0
fun dispatchReceiverExpression(): FirExpression = when (explicitReceiverKind) {
ExplicitReceiverKind.DISPATCH_RECEIVER, ExplicitReceiverKind.BOTH_RECEIVERS ->
callInfo.explicitReceiver?.takeIf { it !is FirExpressionStub } ?: FirNoReceiverExpression
......@@ -143,3 +145,6 @@ class Candidate(
return symbol.hashCode()
}
}
val Candidate.fullyAnalyzed: Boolean
get() = passedStages == callInfo.callKind.resolutionSequence.size
......@@ -17,7 +17,9 @@ class ResolutionStageRunner(val components: InferenceComponents) {
val sink = CheckerSinkImpl(components, stopOnFirstError = stopOnFirstError)
var finished = false
sink.continuation = suspend {
for (stage in candidate.callInfo.callKind.resolutionSequence) {
candidate.callInfo.callKind.resolutionSequence.forEachIndexed { index, stage ->
if (index < candidate.passedStages) return@forEachIndexed
candidate.passedStages++
stage.check(candidate, sink, candidate.callInfo)
}
}.createCoroutineUnintercepted(completion = object : Continuation<Unit> {
......@@ -38,4 +40,4 @@ class ResolutionStageRunner(val components: InferenceComponents) {
}
return sink.current
}
}
\ No newline at end of file
}
......@@ -36,8 +36,8 @@ internal object MapTypeArguments : ResolutionStage() {
if (typeArguments.size == owner.typeParameters.size || callInfo.callKind == CallKind.DelegatingConstructorCall) {
candidate.typeArgumentMapping = TypeArgumentMapping.Mapped(typeArguments)
} else {
sink.yieldApplicability(CandidateApplicability.INAPPLICABLE)
candidate.typeArgumentMapping = TypeArgumentMapping.Mapped(emptyList())
sink.yieldApplicability(CandidateApplicability.INAPPLICABLE)
}
}
}
......
......@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.resolve.diagnostics
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.resolve.calls.Candidate
import org.jetbrains.kotlin.fir.resolve.calls.CandidateApplicability
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
......@@ -27,16 +28,27 @@ class ConeUnresolvedNameError(val name: Name) : ConeDiagnostic() {
override val reason: String get() = "Unresolved name: $name"
}
class ConeHiddenCandidateError(
val candidateSymbol: AbstractFirBasedSymbol<*>
) : ConeDiagnostic() {
override val reason: String get() = "HIDDEN: ${describeSymbol(candidateSymbol)} is invisible"
}
class ConeInapplicableCandidateError(
val applicability: CandidateApplicability,
val candidates: Collection<CandidateInfo>
val candidateSymbol: AbstractFirBasedSymbol<*>,
val diagnostics: List<KotlinCallDiagnostic>
) : ConeDiagnostic() {
data class CandidateInfo(val symbol: AbstractFirBasedSymbol<*>, val diagnostics: List<KotlinCallDiagnostic>)
constructor(applicability: CandidateApplicability, candidate: Candidate) : this(
applicability,
candidate.symbol,
candidate.system.diagnostics
)
override val reason: String get() = "Inapplicable($applicability): ${candidates.map { describeSymbol(it.symbol) }}"
override val reason: String get() = "Inapplicable($applicability): ${describeSymbol(candidateSymbol)}"
}
class ConeAmbiguityError(val name: Name, val candidates: Collection<AbstractFirBasedSymbol<*>>) : ConeDiagnostic() {
class ConeAmbiguityError(val name: Name, val applicability: CandidateApplicability, val candidates: Collection<AbstractFirBasedSymbol<*>>) : ConeDiagnostic() {
override val reason: String get() = "Ambiguity: $name, ${candidates.map { describeSymbol(it) }}"
}
......
......@@ -180,7 +180,9 @@ class FirCallCompleter(
FirBuilderInferenceSession(components, stubsForPostponedVariables as Map<ConeTypeVariable, ConeStubType>)
}
val localContext = towerDataContextForAnonymousFunctions.getValue(lambdaArgument.symbol)
val localContext = towerDataContextForAnonymousFunctions.get(lambdaArgument.symbol) ?: error(
""
)
transformer.context.withTowerDataContext(localContext) {
if (builderInferenceSession != null) {
components.inferenceComponents.withInferenceSession(builderInferenceSession) {
......
......@@ -917,7 +917,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
buildErrorNamedReference {
// TODO: add better diagnostic
source = augmentedArraySetCall.source
diagnostic = ConeAmbiguityError(operatorName, emptyList())
diagnostic = ConeAmbiguityError(operatorName, CandidateApplicability.RESOLVED, emptyList())
}
)
}
......
......@@ -6,9 +6,9 @@ class A() {
fun f(): Unit {
var x: Int? = 1
x = null
x <!INAPPLICABLE_CANDIDATE!>+<!> 1
x <!INAPPLICABLE_CANDIDATE!>plus<!> 1
x <!INAPPLICABLE_CANDIDATE!><<!> 1
x <!NONE_APPLICABLE!>+<!> 1
x <!NONE_APPLICABLE!>plus<!> 1
x <!NONE_APPLICABLE!><<!> 1
<!UNRESOLVED_REFERENCE!>x += 1<!>
x == 1
......@@ -22,7 +22,7 @@ fun f(): Unit {
x === 1
x !== 1
x<!INAPPLICABLE_CANDIDATE!>..<!>2
x<!NONE_APPLICABLE!>..<!>2
x <!INAPPLICABLE_CANDIDATE!>in<!> 1..2
val y : Boolean? = true
......
......@@ -5,6 +5,6 @@ fun test() {
<!INAPPLICABLE_CANDIDATE!>Int<!>()
<!INAPPLICABLE_CANDIDATE!>Short<!>()
<!INAPPLICABLE_CANDIDATE!>Byte<!>()
<!INAPPLICABLE_CANDIDATE!>Char<!>()
<!HIDDEN!>Char<!>()
<!INAPPLICABLE_CANDIDATE!>Boolean<!>()
}
\ No newline at end of file
}
......@@ -40,8 +40,8 @@ class Example {
var d by CustomDelegate3()
fun test() {
requireString(a)
requireString(aval)
<!INAPPLICABLE_CANDIDATE!>requireString<!>(a)
<!INAPPLICABLE_CANDIDATE!>requireString<!>(aval)
requireString(b)
requireInt(c)
requireInt(d)
......
......@@ -16,7 +16,7 @@ operator fun String.unaryPlus(): Int = 0
fun test() {
requireInt(+ "")
requireInt(+ Example())
requireString(<!INAPPLICABLE_CANDIDATE!>+<!> ExampleDeprecated())
<!INAPPLICABLE_CANDIDATE!>requireString<!>(<!INAPPLICABLE_CANDIDATE!>+<!> ExampleDeprecated())
}
fun requireInt(n: Int) {}
......
......@@ -38,7 +38,7 @@ fun test() {
if (out != null && ins != null || out != null) {
ins?.read();
ins.<!INAPPLICABLE_CANDIDATE!>read<!>();
ins.<!NONE_APPLICABLE!>read<!>();
out.println();
}
......@@ -114,12 +114,12 @@ fun test() {
}
else {
out?.println();
out.<!INAPPLICABLE_CANDIDATE!>println<!>();
out.<!NONE_APPLICABLE!>println<!>();
}
if (out == null || out.println() == Unit) {
out?.println();
out.<!INAPPLICABLE_CANDIDATE!>println<!>();
out.<!NONE_APPLICABLE!>println<!>();
}
else {
out.println();
......@@ -149,7 +149,7 @@ fun test() {
while (out2 == null) {
out2?.println();
out2.<!INAPPLICABLE_CANDIDATE!>println<!>();
out2.<!NONE_APPLICABLE!>println<!>();
}
out2.println()
......
object A1<!CONSTRUCTOR_IN_OBJECT!>()<!> {
<!CONSTRUCTOR_IN_OBJECT!>constructor(x: Int = "", y: Int)<!> : <!INAPPLICABLE_CANDIDATE!>this<!>() {
<!CONSTRUCTOR_IN_OBJECT!>constructor(x: Int = "", y: Int)<!> : <!NONE_APPLICABLE!>this<!>() {
x + y
}
}
object A2 public <!CONSTRUCTOR_IN_OBJECT!>constructor(private val prop: Int)<!> {
<!CONSTRUCTOR_IN_OBJECT!>constructor(x: Int = "", y: Int)<!> : <!INAPPLICABLE_CANDIDATE!>this<!>(x * y) {
<!CONSTRUCTOR_IN_OBJECT!>constructor(x: Int = "", y: Int)<!> : <!NONE_APPLICABLE!>this<!>(x * y) {
x + y
}
}
......@@ -19,6 +19,6 @@ val x = object <!CONSTRUCTOR_IN_OBJECT!>(val prop: Int)<!> {
class A3 {
companion object B<!CONSTRUCTOR_IN_OBJECT!>(val prop: Int)<!> {
public <!CONSTRUCTOR_IN_OBJECT!>constructor()<!> : <!INAPPLICABLE_CANDIDATE!>this<!>(2)
public <!CONSTRUCTOR_IN_OBJECT!>constructor()<!> : <!NONE_APPLICABLE!>this<!>(2)
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册