Commit Graph

1383 Commits

Author SHA1 Message Date
Evgeniy.Zhelenskiy bf5fa61ffb [IR] Unify MFVC bridge redirection, fix related bugs, support MFVC overriding functions with default parameters
#KT-1179
2023-05-04 16:44:18 +00:00
Pavel Kunyavskiy af318fdfb0 [K/N] Fix default arguments in suspend functions
AddContinuationToFunctionsLowering was rewritten in way the order
of this lowering and defaults lowering doesn't matter.

^KT-58214
2023-05-03 12:14:53 +00:00
Dmitriy Novozhilov e9c8be3b64 [FIR] Don't generated fake-overrides for private declarations of actualized super classes
^KT-58252 Fixed
2023-05-02 10:24:53 +00:00
Pavel Kunyavskiy f55fd481e9 [K/N] Refactor default argument lowering to avoid boxing
Current inline classes API is not compatible between different backends.
So implementing common function required for this optimization
was not possible in Native backend.

So, common default arguments lowering was refactored to make bigger
piece of code replaceable in backends.

^KT-57860
2023-05-01 13:04:21 +00:00
Igor Chevdar 4e661a6337 [IR] Liveness analysis
Compute actually used variables for specified IR nodes
2023-04-24 09:57:06 +03:00
Igor Chevdar 6a79163205 [K/N][IR] Extracted a common util function 2023-04-24 09:36:43 +03:00
Ivan Kochurkin b72dcf8b37 [K2, MPP] Fix actualization of nullability-based overloads
^KT-58043 Fixed
2023-04-20 17:22:45 +00:00
Ivan Kylchik 37c3dff0c5 [K2] Add new class to keep track of evaluated const by IrInterpreter 2023-04-19 13:52:42 +00:00
Artem Kobzar 33c5068b79 [K/JS] Rework IR deserialization and lowering phases to consume less memory 2023-04-19 13:10:19 +00:00
Dmitriy Dolovov 87125d0703 [PL] Fix: Don't run partial linkage on early stages when no external dependencies have been loaded yet 2023-04-18 09:22:54 +00:00
Ivan Kochurkin beaeb405d2 [K2, MPP] Build expect-actual map for type parameters from functions
^KT-57181 Fixed
2023-04-17 19:55:35 +00:00
Ivan Kochurkin 3a60b30dae Minor: IrActualizationResult -> IrActualizedResult 2023-04-17 19:55:35 +00:00
Ivan Kochurkin b7bb9c317f [K2, MPP] Introduce FunctionDefaultParametersActualizerVisitor and use it in FunctionDefaultParametersActualizer
^KT-57263 Fixed
2023-04-17 19:55:34 +00:00
Ivan Kochurkin 1073797ed3 [IR] Extract ActualizerSymbolRemapper and ActualizerVisitor from ExpectActualLinker
It will provide the possibility to use them not only locally

Clarify code of IrActualizer pipeline
2023-04-17 19:55:34 +00:00
Evgeniy.Zhelenskiy aceab2ac1f [IR] Fix KT-57973
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com>

#KT-57973
2023-04-17 12:33:10 +00:00
Artem Kobzar c695da1bed [K/JS] Allow declare inline functions inside external declarations with a million suppresses ^KT-48154 Fixed 2023-04-13 08:53:57 +00:00
Ivan Kochurkin 9a09565cf6 [K2, MPP] Handle overloaded properties
^KT-57532 Fixed
2023-04-12 20:43:57 +00:00
Igor Yakovlev edf4e80165 [Wasm] Fix for ReturnableBlockLowering invalid ir type for converted inlined blocks 2023-04-12 13:24:02 +00:00
Kirill Rakhman 6e7b078873 [IR] Refactor IrActualizerUtils to use buildString 2023-04-05 08:44:57 +00:00
Kirill Rakhman 4dfef6ba6f [IR] Fix arguments of backend error messages
#KT-57662 Fixed
2023-04-05 08:44:56 +00:00
Igor Yakovlev 44190937b0 [Wasm] Fix generic call return type for functions with default parameters 2023-04-04 18:39:18 +00:00
Dmitriy Dolovov 1fef48bb60 [PL] Log partial linkage messages at different severity
As specified in -Xpartial-linkage-loglevel CLI argument.
2023-03-31 18:29:44 +00:00
Mikhail Glukhikh 8b247982e3 Fix text/description of FirIncompatiblePluginAPI 2023-03-27 14:00:52 +00:00
Ivan Kylchik 7cf9dda8dc [JS] Support evaluation of const intrinsics for K2
#KT-56023 Fixed
#KT-51582 Fixed
2023-03-24 15:55:04 +00:00
Ivan Kylchik 5d5582d201 Move ignoreConstOptimizationErrors compiler key from jvm to common
#KT-56023
2023-03-24 15:55:03 +00:00
Ivan Kylchik b58de2f8da Move ConstEvaluationLowering into folder for common lowerings
#KT-56023
2023-03-24 15:55:03 +00:00
Ivan Kochurkin ee73e4774b [K2, MPP] Remove redundant expect declarations from klib metadata
^KT-57250 Fixed

Introduce flat Fir2IrActualizedResult

It contains output from Fir2Ir and IrActualizer
2023-03-24 14:48:26 +00:00
Dmitriy Dolovov 2a4d880037 [PL] Deep rework of the partial linkage
1. Leaving no unbound symbols in the IR tree, KT-54491:
   - All unbound symbols are bound to synthetic stub declarations
   - Improved detection of the root cause for every partially linked classifier
   - Improved error messages

2. Visibility valiation, KT-54469

3. Always check deserialized symbols:
   If the deserialized symbol mismatches the symbol kind at the call site in the deserializer then generate and reference another symbol with the same signature. In case PL is off, just throw IrSymbolTypeMismatchException.

4. Handle class inheritance violation:
   - Detect illegal inheritance (ex: inheriting from a final class)
   - Detect invalid constructor delegation (ex: delegating to another class than the direct superclass)
   - Simplification: Reduce the number of PartialLinkageCase subclasses
   - Reworked error message generation to have shorter and clearer messages

5. Handle class transformations and all known side-effects, examples:
   - nested <-> inner
   - class <-> enum/object
   - adding/removing subclasses of sealed class
   - adding/removing enum entries

6. Check direct instantiation of abstract class.
   Such instantiation could be possible if a class was non-abstract in the previous version of a library.

7. Handle unlinked annotations on declarations.
   Such annotations are removed from the IR. The appropriate compiler error message is produced for every individual case.

8. Handle value argument count mismatch at call sites

9. Handle calling suspend function from non-suspend context.
   This could happen if a suspen function was non-suspend in the previous version of a library.

10. Handle overriding inline callables.
    Only the leaf final callable can be marked with `inline`.

11. Detect illegal non-local returns from noinline/crossinline lambdas.
2023-03-23 10:24:27 +00:00
Ivan Kochurkin cd07eba25c [K2, MPP] Fix reporting of MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED 2023-03-22 01:28:19 +00:00
Ivan Kochurkin 60edf1def3 [K2, MPP] Support actualization of enums and annotations that have primary constructor with arguments
^KT-57241 Fixed
2023-03-22 01:28:18 +00:00
Ivan Kochurkin 44807b7bd4 [K2, MPP] Support actualization of actual function with dynamic arguments
^KT-57210 Fixed
2023-03-22 01:28:18 +00:00
Ivan Kochurkin ce7af9ff2b [K2, MPP] Support arguments with expect types in actual functions 2023-03-22 01:28:18 +00:00
Ivan Kochurkin ec34b9fa7b [K2, MPP] Restore ir functions actualization by argument types instead of full signatures
Refactor IrActualizer
2023-03-22 01:28:17 +00:00
Ivan Kochurkin d99b4c78d2 [K2, MPP] Correct actualization of nested objects
^KT-57182 Fixed
2023-03-22 01:28:17 +00:00
Ilya Chernikov 59b88f33b2 [K2, MPP] implement IR errors reporting and test infrastructure
Fix test data

^KT-56344 Fixed
2023-03-22 01:28:16 +00:00
Ivan Kylchik 7cf70e7b15 [JVM IR] Fix performance issue caused by support of IR Inliner 2023-03-20 23:36:33 +00:00
Artem Kobzar 948c511284 [K/JS] Rework ES modules part with squashed JsImport and right renaming strategy inside import/export statements 2023-03-16 10:28:39 +00:00
Pavel Kunyavskiy 62fb3df7f0 [K/N] Disable scope initialization on constant access
^KT-57098
2023-03-15 09:03:19 +00:00
Ivan Kylchik f8deae4570 Reuse implicitCastIfNeededTo function in FunctionInlining 2023-03-14 20:47:46 +00:00
Ivan Kylchik 5b3d6583af Change isLambdaCall logic in FunctionInlining
We are allowing to inline `KFunction` invoke call. This is needed for
JVM paired with K2 compiler. Probably this can be reverted after
#KT-57249 fix.
2023-03-14 20:47:45 +00:00
Ivan Kylchik d2e92fd70d Add additional test cases and notes for KT44429 2023-03-14 20:47:45 +00:00
Ivan Kylchik 4fc95624a0 Rename attributeOwnerIdBeforeInline to originalBeforeInline 2023-03-14 20:47:44 +00:00
Ivan Kylchik d148231bce Rewrite copy method in FunctionInlining
This way we can avoid unnecessary cast
2023-03-14 20:47:44 +00:00
Ivan Kylchik ab2c3572ab Drop all usages of inlineFunctionSymbol in IrReturnableBlock 2023-03-14 20:47:41 +00:00
Ivan Kylchik 095c7c5930 Remove all secondary constructors from FunctionInlining 2023-03-14 20:47:41 +00:00
Ivan Kylchik b31114fa52 Extract new smap creation logic into separate class LineNumberMapper 2023-03-14 20:47:39 +00:00
Ivan Kylchik 32a7633c06 Support smap creation for functions inlined with IR inliner 2023-03-14 20:47:38 +00:00
Ivan Kylchik 6e690f709e Avoid irGet with Unit value if it is last it IrReturnableBlock
This is needed to pass `MethodVerifier` check on JVM backend
2023-03-14 20:47:38 +00:00
Ivan Kylchik 707c5f03b8 Add new "invent name" phase to generate names for regenerated classes 2023-03-14 20:47:37 +00:00
Ivan Kylchik e159f7f682 Move some file level lowerings to module level
This is needed to fix "kt42408" test with enabled
IR inliner.
2023-03-14 20:47:37 +00:00