[LL FIR] skip implicit type resolution for declarations without implicit type
This also fixes non-resolved contract calls in the case of wrong contract description. And we can avoid body calculation. ^KT-56551
This commit is contained in:
committed by
Space Team
parent
7ab8239c6e
commit
a128cbc97a
+3
-3
@@ -1,15 +1,15 @@
|
||||
BEFORE MODIFICATION:
|
||||
public final inline [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] block: R|() -> kotlin/Unit|): R|kotlin/Unit|
|
||||
[Contract description] <
|
||||
Q|kotlin|.<Unresolved name: contracts>#.<Unresolved name: contract>#(<L> = [ResolvedTo(RAW_FIR)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: callsInPlace> <inline=Unknown> {
|
||||
Q|kotlin|.<Unresolved name: contracts>#.<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: callsInPlace> <inline=Unknown> {
|
||||
^ <Unresolved name: callsInPlace>#(R|<local>/block|, <Unresolved name: InvocationKind>#.<Unresolved name: EXACTLY_ONCE>#)
|
||||
}
|
||||
)
|
||||
>
|
||||
{
|
||||
{
|
||||
kotlin#.contracts#.contract#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
|
||||
callsInPlace#(block#, InvocationKind#.EXACTLY_ONCE#)
|
||||
Q|kotlin|.<Unresolved name: contracts>#.<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: callsInPlace> <inline=Unknown> {
|
||||
^ <Unresolved name: callsInPlace>#(R|<local>/block|, <Unresolved name: InvocationKind>#.<Unresolved name: EXACTLY_ONCE>#)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,15 +1,15 @@
|
||||
BEFORE MODIFICATION:
|
||||
public final [ResolvedTo(BODY_RESOLVE)] fun x(): R|kotlin/Unit|
|
||||
[Contract description] <
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(RAW_FIR)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
>
|
||||
{
|
||||
{
|
||||
contract#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
|
||||
req#
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ public final [ResolvedTo(BODY_RESOLVE)] fun passLambdaValue([ResolvedTo(BODY_RES
|
||||
>
|
||||
{
|
||||
{
|
||||
contract#(l#)
|
||||
<Unresolved name: contract>#(R|<local>/l|)
|
||||
}
|
||||
|
||||
Int(42)
|
||||
|
||||
Vendored
+3
-3
@@ -1,15 +1,15 @@
|
||||
BEFORE MODIFICATION:
|
||||
public final [ResolvedTo(BODY_RESOLVE)] fun x(): R|kotlin/Unit|
|
||||
[Contract description] <
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(RAW_FIR)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
>
|
||||
{
|
||||
{
|
||||
contract#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
|
||||
req#
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -1,15 +1,15 @@
|
||||
BEFORE MODIFICATION:
|
||||
public final [ResolvedTo(BODY_RESOLVE)] fun x(): R|kotlin/Unit|
|
||||
[Contract description] <
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(RAW_FIR)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
>
|
||||
{
|
||||
{
|
||||
contract#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
|
||||
req#
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+3
-3
@@ -2,15 +2,15 @@ BEFORE MODIFICATION:
|
||||
public final [ResolvedTo(BODY_RESOLVE)] var x: R|kotlin/Int|
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] get(): R|kotlin/Int|
|
||||
[Contract description] <
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(RAW_FIR)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
>
|
||||
{
|
||||
{
|
||||
contract#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
|
||||
req#
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+3
-3
@@ -2,15 +2,15 @@ BEFORE MODIFICATION:
|
||||
public final [ResolvedTo(BODY_RESOLVE)] var <no name provided>: R|kotlin/Int|
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] get(): R|kotlin/Int|
|
||||
[Contract description] <
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(RAW_FIR)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
>
|
||||
{
|
||||
{
|
||||
contract#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
|
||||
req#
|
||||
<Unresolved name: contract>#(<L> = [ResolvedTo(BODY_RESOLVE)] contract@fun <anonymous>(): <ERROR TYPE REF: Unresolved name: req> <inline=Unknown> {
|
||||
^ <Unresolved name: req>#
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user