Reapply "Only create descriptors for candidates with lambda args"
#KT-36247 fixed A lot of testdata changed because significanly less (error) descriptors are created for unresolved types, so diagnostics became different.
This commit is contained in:
@@ -25,8 +25,7 @@ L0:
|
||||
r(a) -> <v1>
|
||||
r(0) -> <v2>
|
||||
magic[UNRESOLVED_CALL](a[0]|<v1>, <v2>) -> <v3>
|
||||
mark(a[0]++)
|
||||
call(a[0]++, <ERROR FUNCTION>|<v3>) -> <v4>
|
||||
magic[UNRESOLVED_CALL](a[0]++|<v3>) -> <v4>
|
||||
magic[UNRESOLVED_CALL](a[0]++|<v3>, <v4>) -> <v5>
|
||||
L1:
|
||||
1 <END> NEXT:[<SINK>]
|
||||
|
||||
+5
-6
@@ -10,14 +10,13 @@ L0:
|
||||
mark(= ())
|
||||
magic[UNRESOLVED_CALL](= ()) -> <v1>
|
||||
mark(= ()())
|
||||
call(= ()(), <ERROR FUNCTION>|<v1>) -> <v2>
|
||||
magic[VALUE_CONSUMER](= ()()|<v2>) -> <v3>
|
||||
magic[UNRESOLVED_CALL](= ()()|<v1>) -> <v2>
|
||||
mark(int x = ()())
|
||||
call(int x = ()(), <ERROR FUNCTION>|<v0>) -> <v4>
|
||||
magic[UNRESOLVED_CALL](int x = ()()|<v0>, <v2>) -> <v3>
|
||||
L1:
|
||||
1 <END> NEXT:[<SINK>]
|
||||
1 <END> NEXT:[<SINK>]
|
||||
error:
|
||||
<ERROR> PREV:[]
|
||||
<ERROR> PREV:[]
|
||||
sink:
|
||||
<SINK> PREV:[<ERROR>, <END>]
|
||||
<SINK> PREV:[<ERROR>, <END>]
|
||||
=====================
|
||||
|
||||
+3
-4
@@ -3,10 +3,9 @@ fun foo() {
|
||||
int x = ()()
|
||||
}
|
||||
---------------------
|
||||
<v3>: * NEW: magic[VALUE_CONSUMER](= ()()|<v2>) -> <v3>
|
||||
int <v0>: * NEW: magic[UNRESOLVED_CALL](int) -> <v0>
|
||||
= () <v1>: * NEW: magic[UNRESOLVED_CALL](= ()) -> <v1>
|
||||
= ()() <v2>: * NEW: call(= ()(), <ERROR FUNCTION>|<v1>) -> <v2>
|
||||
int x = ()() <v4>: * NEW: call(int x = ()(), <ERROR FUNCTION>|<v0>) -> <v4>
|
||||
{ int x = ()() } <v4>: * COPY
|
||||
= ()() <v2>: * NEW: magic[UNRESOLVED_CALL](= ()()|<v1>) -> <v2>
|
||||
int x = ()() <v3>: * NEW: magic[UNRESOLVED_CALL](int x = ()()|<v0>, <v2>) -> <v3>
|
||||
{ int x = ()() } <v3>: * COPY
|
||||
=====================
|
||||
|
||||
+10
-13
@@ -57,25 +57,22 @@ L0:
|
||||
mark(<warning>)
|
||||
magic[UNRESOLVED_CALL](<warning>) -> <v1>
|
||||
mark(<warning>x<)
|
||||
call(<warning>x<, <ERROR FUNCTION>|<v1>) -> <v2>
|
||||
magic[VALUE_CONSUMER](>++|!<v3>) -> <v4>
|
||||
magic[UNRESOLVED_CALL](<warning>x<|<v1>) -> <v2>
|
||||
mark(<warning>x<error>++)
|
||||
call(<warning>x<error>++, <ERROR FUNCTION>|<v2>) -> <v5>
|
||||
magic[UNRESOLVED_CALL](<warning>x<error>++|<v2>, !<v3>) -> <v4>
|
||||
mark(/error>)
|
||||
magic[UNRESOLVED_CALL](/error>) -> <v6>
|
||||
magic[VALUE_CONSUMER](/error>|<v6>) -> <v7>
|
||||
magic[UNRESOLVED_CALL](/error>) -> <v5>
|
||||
mark(<warning>x<error>++</error>)
|
||||
call(<warning>x<error>++</error>, <ERROR FUNCTION>|<v5>) -> <v8>
|
||||
magic[UNRESOLVED_CALL](<warning>x<error>++</error>|<v4>, <v5>) -> <v6>
|
||||
mark(/warning>)
|
||||
magic[UNRESOLVED_CALL](/warning>) -> <v9>
|
||||
magic[VALUE_CONSUMER](/warning>|<v9>) -> <v10>
|
||||
magic[UNRESOLVED_CALL](/warning>) -> <v7>
|
||||
mark(<warning>x<error>++</error></warning>)
|
||||
call(<warning>x<error>++</error></warning>, <ERROR FUNCTION>|<v8>) -> <v11>
|
||||
w(x|<v11>)
|
||||
magic[UNRESOLVED_CALL](<warning>x<error>++</error></warning>|<v6>, <v7>) -> <v8>
|
||||
w(x|<v8>)
|
||||
L1:
|
||||
1 <END> NEXT:[<SINK>]
|
||||
1 <END> NEXT:[<SINK>]
|
||||
error:
|
||||
<ERROR> PREV:[]
|
||||
<ERROR> PREV:[]
|
||||
sink:
|
||||
<SINK> PREV:[<ERROR>, <END>]
|
||||
<SINK> PREV:[<ERROR>, <END>]
|
||||
=====================
|
||||
|
||||
+10
-13
@@ -19,18 +19,15 @@ fun testUnitIncDec() {
|
||||
x = <warning>x<error>++</error></warning>
|
||||
}
|
||||
---------------------
|
||||
<v10>: * NEW: magic[VALUE_CONSUMER](/warning>|<v9>) -> <v10>
|
||||
<v4>: * NEW: magic[VALUE_CONSUMER](>++|!<v3>) -> <v4>
|
||||
<v7>: * NEW: magic[VALUE_CONSUMER](/error>|<v6>) -> <v7>
|
||||
UnitIncDec() <v0>: UnitIncDec NEW: call(UnitIncDec(), <init>) -> <v0>
|
||||
<warning> <v1>: * NEW: magic[UNRESOLVED_CALL](<warning>) -> <v1>
|
||||
<warning>x< <v2>: * NEW: call(<warning>x<, <ERROR FUNCTION>|<v1>) -> <v2>
|
||||
UnitIncDec() <v0>: UnitIncDec NEW: call(UnitIncDec(), <init>) -> <v0>
|
||||
<warning> <v1>: * NEW: magic[UNRESOLVED_CALL](<warning>) -> <v1>
|
||||
<warning>x< <v2>: * NEW: magic[UNRESOLVED_CALL](<warning>x<|<v1>) -> <v2>
|
||||
>++ !<v3>: *
|
||||
<warning>x<error>++ <v5>: * NEW: call(<warning>x<error>++, <ERROR FUNCTION>|<v2>) -> <v5>
|
||||
/error> <v6>: * NEW: magic[UNRESOLVED_CALL](/error>) -> <v6>
|
||||
<warning>x<error>++</error> <v8>: * NEW: call(<warning>x<error>++</error>, <ERROR FUNCTION>|<v5>) -> <v8>
|
||||
/warning> <v9>: * NEW: magic[UNRESOLVED_CALL](/warning>) -> <v9>
|
||||
<warning>x<error>++</error></warning> <v11>: UnitIncDec NEW: call(<warning>x<error>++</error></warning>, <ERROR FUNCTION>|<v8>) -> <v11>
|
||||
x = <warning>x<error>++</error></warning> !<v12>: *
|
||||
{ var x = UnitIncDec() x = <warning>x<error>++</error></warning> } !<v12>: * COPY
|
||||
<warning>x<error>++ <v4>: * NEW: magic[UNRESOLVED_CALL](<warning>x<error>++|<v2>, !<v3>) -> <v4>
|
||||
/error> <v5>: * NEW: magic[UNRESOLVED_CALL](/error>) -> <v5>
|
||||
<warning>x<error>++</error> <v6>: * NEW: magic[UNRESOLVED_CALL](<warning>x<error>++</error>|<v4>, <v5>) -> <v6>
|
||||
/warning> <v7>: * NEW: magic[UNRESOLVED_CALL](/warning>) -> <v7>
|
||||
<warning>x<error>++</error></warning> <v8>: UnitIncDec NEW: magic[UNRESOLVED_CALL](<warning>x<error>++</error></warning>|<v6>, <v7>) -> <v8>
|
||||
x = <warning>x<error>++</error></warning> !<v9>: *
|
||||
{ var x = UnitIncDec() x = <warning>x<error>++</error></warning> } !<v9>: * COPY
|
||||
=====================
|
||||
|
||||
@@ -114,22 +114,20 @@ L6:
|
||||
jf(L8|<v0>) NEXT:[mark({ s.remove(it) }), mark({ s.add(it) })]
|
||||
6 mark({ s.add(it) })
|
||||
mark(s.add(it))
|
||||
r(s) -> <v1>
|
||||
r(it) -> <v2>
|
||||
magic[VALUE_CONSUMER](it|<v2>) -> <v3>
|
||||
r(it) -> <v1>
|
||||
r(s) -> <v2>
|
||||
mark(add(it))
|
||||
call(add(it), <ERROR FUNCTION>|<v1>) -> <v4>
|
||||
magic[UNRESOLVED_CALL](add(it)|<v1>, !<v3>, <v2>) -> <v4>
|
||||
5 jmp(L9) NEXT:[merge(if (flag) { s.add(it) } else { s.remove(it) }|<v4>, <v8>) -> <v9>]
|
||||
L8 [else branch]:
|
||||
6 mark({ s.remove(it) }) PREV:[jf(L8|<v0>)]
|
||||
mark(s.remove(it))
|
||||
r(s) -> <v5>
|
||||
r(it) -> <v6>
|
||||
magic[VALUE_CONSUMER](it|<v6>) -> <v7>
|
||||
r(it) -> <v5>
|
||||
r(s) -> <v6>
|
||||
mark(remove(it))
|
||||
call(remove(it), <ERROR FUNCTION>|<v5>) -> <v8>
|
||||
magic[UNRESOLVED_CALL](remove(it)|<v5>, !<v7>, <v6>) -> <v8>
|
||||
L9 ['if' expression result]:
|
||||
5 merge(if (flag) { s.add(it) } else { s.remove(it) }|<v4>, <v8>) -> <v9> PREV:[jmp(L9), call(remove(it), <ERROR FUNCTION>|<v5>) -> <v8>]
|
||||
5 merge(if (flag) { s.add(it) } else { s.remove(it) }|<v4>, <v8>) -> <v9> PREV:[jmp(L9), magic[UNRESOLVED_CALL](remove(it)|<v5>, !<v7>, <v6>) -> <v8>]
|
||||
r(true) -> <v10>
|
||||
L10 [start finally]:
|
||||
6 mark({ name?.hashCode() })
|
||||
|
||||
@@ -48,17 +48,17 @@ try { name?.let { if (flag) { s.add(it) } else { s.remove(it) } return true } re
|
||||
return true
|
||||
}
|
||||
---------------------
|
||||
<v3>: * NEW: magic[VALUE_CONSUMER](it|<v2>) -> <v3>
|
||||
<v7>: * NEW: magic[VALUE_CONSUMER](it|<v6>) -> <v7>
|
||||
flag <v0>: Boolean NEW: r(flag) -> <v0>
|
||||
s <v1>: * NEW: r(s) -> <v1>
|
||||
it <v2>: * NEW: r(it) -> <v2>
|
||||
add(it) <v4>: * NEW: call(add(it), <ERROR FUNCTION>|<v1>) -> <v4>
|
||||
s <v2>: * NEW: r(s) -> <v2>
|
||||
add !<v3>: *
|
||||
it <v1>: * NEW: r(it) -> <v1>
|
||||
add(it) <v4>: * NEW: magic[UNRESOLVED_CALL](add(it)|<v1>, !<v3>, <v2>) -> <v4>
|
||||
s.add(it) <v4>: * COPY
|
||||
{ s.add(it) } <v4>: * COPY
|
||||
s <v5>: * NEW: r(s) -> <v5>
|
||||
it <v6>: * NEW: r(it) -> <v6>
|
||||
remove(it) <v8>: * NEW: call(remove(it), <ERROR FUNCTION>|<v5>) -> <v8>
|
||||
s <v6>: * NEW: r(s) -> <v6>
|
||||
remove !<v7>: *
|
||||
it <v5>: * NEW: r(it) -> <v5>
|
||||
remove(it) <v8>: * NEW: magic[UNRESOLVED_CALL](remove(it)|<v5>, !<v7>, <v6>) -> <v8>
|
||||
s.remove(it) <v8>: * COPY
|
||||
{ s.remove(it) } <v8>: * COPY
|
||||
if (flag) { s.add(it) } else { s.remove(it) } <v9>: * NEW: merge(if (flag) { s.add(it) } else { s.remove(it) }|<v4>, <v8>) -> <v9>
|
||||
|
||||
@@ -114,22 +114,20 @@ L5:
|
||||
jf(L7|<v0>) NEXT:[mark({ s.remove(it) }), mark({ s.add(it) })]
|
||||
6 mark({ s.add(it) })
|
||||
mark(s.add(it))
|
||||
r(s) -> <v1>
|
||||
r(it) -> <v2>
|
||||
magic[VALUE_CONSUMER](it|<v2>) -> <v3>
|
||||
r(it) -> <v1>
|
||||
r(s) -> <v2>
|
||||
mark(add(it))
|
||||
call(add(it), <ERROR FUNCTION>|<v1>) -> <v4>
|
||||
magic[UNRESOLVED_CALL](add(it)|<v1>, !<v3>, <v2>) -> <v4>
|
||||
5 jmp(L8) NEXT:[merge(if (flag) { s.add(it) } else { s.remove(it) }|<v4>, <v8>) -> <v9>]
|
||||
L7 [else branch]:
|
||||
6 mark({ s.remove(it) }) PREV:[jf(L7|<v0>)]
|
||||
mark(s.remove(it))
|
||||
r(s) -> <v5>
|
||||
r(it) -> <v6>
|
||||
magic[VALUE_CONSUMER](it|<v6>) -> <v7>
|
||||
r(it) -> <v5>
|
||||
r(s) -> <v6>
|
||||
mark(remove(it))
|
||||
call(remove(it), <ERROR FUNCTION>|<v5>) -> <v8>
|
||||
magic[UNRESOLVED_CALL](remove(it)|<v5>, !<v7>, <v6>) -> <v8>
|
||||
L8 ['if' expression result]:
|
||||
5 merge(if (flag) { s.add(it) } else { s.remove(it) }|<v4>, <v8>) -> <v9> PREV:[jmp(L8), call(remove(it), <ERROR FUNCTION>|<v5>) -> <v8>]
|
||||
5 merge(if (flag) { s.add(it) } else { s.remove(it) }|<v4>, <v8>) -> <v9> PREV:[jmp(L8), magic[UNRESOLVED_CALL](remove(it)|<v5>, !<v7>, <v6>) -> <v8>]
|
||||
r(true) -> <v10>
|
||||
L9 [start finally]:
|
||||
6 mark({ name?.hashCode() })
|
||||
|
||||
@@ -48,17 +48,17 @@ try { name?.let { if (flag) { s.add(it) } else { s.remove(it) } return true } re
|
||||
return true
|
||||
}
|
||||
---------------------
|
||||
<v3>: * NEW: magic[VALUE_CONSUMER](it|<v2>) -> <v3>
|
||||
<v7>: * NEW: magic[VALUE_CONSUMER](it|<v6>) -> <v7>
|
||||
flag <v0>: Boolean NEW: r(flag) -> <v0>
|
||||
s <v1>: * NEW: r(s) -> <v1>
|
||||
it <v2>: * NEW: r(it) -> <v2>
|
||||
add(it) <v4>: * NEW: call(add(it), <ERROR FUNCTION>|<v1>) -> <v4>
|
||||
s <v2>: * NEW: r(s) -> <v2>
|
||||
add !<v3>: *
|
||||
it <v1>: * NEW: r(it) -> <v1>
|
||||
add(it) <v4>: * NEW: magic[UNRESOLVED_CALL](add(it)|<v1>, !<v3>, <v2>) -> <v4>
|
||||
s.add(it) <v4>: * COPY
|
||||
{ s.add(it) } <v4>: * COPY
|
||||
s <v5>: * NEW: r(s) -> <v5>
|
||||
it <v6>: * NEW: r(it) -> <v6>
|
||||
remove(it) <v8>: * NEW: call(remove(it), <ERROR FUNCTION>|<v5>) -> <v8>
|
||||
s <v6>: * NEW: r(s) -> <v6>
|
||||
remove !<v7>: *
|
||||
it <v5>: * NEW: r(it) -> <v5>
|
||||
remove(it) <v8>: * NEW: magic[UNRESOLVED_CALL](remove(it)|<v5>, !<v7>, <v6>) -> <v8>
|
||||
s.remove(it) <v8>: * COPY
|
||||
{ s.remove(it) } <v8>: * COPY
|
||||
if (flag) { s.add(it) } else { s.remove(it) } <v9>: * NEW: merge(if (flag) { s.add(it) } else { s.remove(it) }|<v4>, <v8>) -> <v9>
|
||||
|
||||
Reference in New Issue
Block a user