The error occurs when completing the
call for the outer synthetic call
`ACCEPT_SPECIFIC_TYPE`. The error
is saved into the CS of this outer
candidate, which leads to its
callable reference to be an error
reference, but since such calls are
not parts of the FIR tree, we never
collect such errors.
^Fixed KT-59233
NB: In general, it's unclear what to do in cases
like the following one, even when sometimes
we could, indeed, prefer something:
```
fun foo(a: Int, b: String, c: Boolean)
fun foo(b: String, c: Boolean, a: Int)
foo(c = false, b = "", a = 0)
```
^KT-55933 Fixed
Ignore, because `@JvmDefault` is deprecated
and we don’t even have tests for it, and
the new
``@JvmDefaultWith[out]Compatibility` only
allow classes as their targets
This is refactoring in preparation for KT-59764.
Names and layout of forward declarations related classes
was copy-pasted many times over compiler code.
Implementing KT-59764 would require copy-pasting it two more times.
So instead of doing this it was put in single place.
No behaviour changes intended in this commit.
Now we will resolve declarations only ones and to the
minimal required phase to get a fully resolved element
depends on an insert position, because not all elements
require body resolution
A side change: `getOnAirGetTowerContextProvider` now
won't do rebind to the original declaration. In the future,
this part will be rewritten to avoid on-air resolution,
so it is not a problem
^KT-59685 Fixed
Previously application of plugins was part of fir2ir conversion and
ir actualization was the responsibility of each specific IR backend
facade. Now (after moving IR extensions after IR actualization) those
actions are extracted into separate facade for two purposes:
1. Avoid code duplication in backend facades
2. Step with this facade goes exactly after fir2ir conversion before
irHandlersStep, which allows IR handlers to observe IR which was
actualized and modified by extensions, which is quite useful
^KT-56173
This is needed for two reasons:
1. Consistency
2. It should run after compiler plugins, which are now runs after fir2ir
is finished for all modules
^KT-56173
Before this change nodes unification was called if outer call was
completed in the FULL mode, but it may happen even if this call is
actually a part of some other outer call
It's important to filter out failures from lazy resolve before calling other
suppressors like BlackBoxCodegenSuppressor. Otherwise other suppressors
can filter out every failure from test and keep it as ignored even if
the only problem in lazy resolve contracts, which disables with special directive