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:
Ilya Chernikov
2020-02-13 16:35:06 +01:00
parent 238bfe3771
commit 6356807997
203 changed files with 481 additions and 802 deletions
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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>