- Remove unused params from compilerWithIC wrapper.
- Move JsIrBackendContext creation logic into separate function
- Introduce and use compiler interface for IC infrastructure
On dirty rebuild we may reload IR from stdlib,
such reloading may affect files with intrinsics and builtins.
As soon as we load only exported symbols, we must track dependencies
for files with intrinsics or builtins as for others.
This patch implements the logic which updates dependencies for
the stdlib files after loading of intrinsics and builtins.
^KT-54323 Fixed
Consider `class A : suspend () -> Unit {}`. Type checks such as `is A`
are now performed via a regular `instanceof` check instead of the special
checks for suspend lambdas.
JsIrLinker can't load nested declarations,
therefore it is required to load their parent.
This patch adds a dependency in the incremental cache graph
between nested declaration user and nested declaration parent.
^KT-53931 Fixed
^KT-54120 Fixed
It helps to:
- keep declarations even if they are not reachable and not exported
- not minify names of not exported declarations
Compiler argument: -Xir-keep=A,B
Can be used for top-level declarations or for member
^KT-54118 fixed
Corresponding lowering creating wrappers from JS Backend was used.
Also, the lowering was changed to create local function, instead of
normal one in outer scope, as a lot of logic from local declarations
lowering should be duplicated otherwise for correct type parameters
handling.
^KT-38535
The patch fixes the js function signature rules to avoid clashes
between bridge and delegated call. Use overridden symbols dfs of
JsName annotation in order to get the correct bridge name.
^KT-52968 Fixed
The patch fixes lost IC dependencies for inherited class or interface methods.
Especially between a fake override function and its implementation.
Since IrSymbolDeserializer doesn't provide all class methods,
they are collected from the class definitions.
^KT-53063 Fixed
The patch fixes the cases of IC invalidation when symbols are modified:
adding and removing inline, data, in, out, suspend qualifiers.
For that purpose an extra hash is used.
It is written in a direct dependency graph into an IC cache metadata file.
For inline functions a transitive hash is used.
For non-inline functions, classes, and others a symbol hash is used.
The invalidation routine marks the file as dirty
(with 'updated imports' state) if hash is modified.
^KT-51083 Fixed
^KT-51088 Fixed
^KT-51090 Fixed
^KT-51099 Fixed