Commit Graph

5747 Commits

Author SHA1 Message Date
Pavel Mikhailovskii b26155dd9e KT-53007 Fix accessibility checks when calling a protected member via super@Outer 2022-07-14 13:09:42 +02:00
Artem Kobzar 117df325c9 [JS/IR] fix: add ability to render type constraints into TypeScript definitions. 2022-07-13 15:20:27 +00:00
Mikhail Glukhikh 1a45284e86 Drop some unused from symbol table / IR converter 2022-07-13 13:11:49 +00:00
Mikhail Glukhikh 18a5b3b518 Drop unnecessary usages of OptIn(ObsoleteDescriptorBasedAPI) 2022-07-13 13:11:48 +00:00
Pavel Kunyavskiy 5cdda48487 [K/N] Extract const val initializers to place of usage
This would make behaviour more consistent with jvm. There is still
a difference in behaviour about point where side effects happen.

^KT-52970
2022-07-13 08:49:40 +00:00
Kristoffer Andersen 63f108b350 [KTIJ-21963] Move reflective access after default args lowerings 2022-07-11 13:13:09 +02:00
Igor Chevdar 747bff4036 [K/N][caches] Fixed parents for deserialized on demand inline function
#KT-52974 Fixed
2022-07-10 17:56:37 +00:00
Nikita Nazarov 2ab92bcb7e Add a key to enable spilling of all variables in a suspending context
This commit adds a new key that will allow users to enhance their
debugging experience in suspending contexts when using the IR backend.
After the key is enabled, the following things are changed:
1. All variables in a suspending context are spilled regardless their
liveness.
2. Their LVT records are not shrunk.
3. ACONST_NULL is not spilled to dead variables.

#KT-48678 In progress

(cherry picked from commit 38d97d0621)
2022-07-07 14:51:24 +03:00
Igor Yakovlev 0ea7e8b70a [WASM] Add array copy intrinsic 2022-07-06 19:07:56 +00:00
Igor Yakovlev 8306b1bd71 [WASM] Remove deprecated wasm instructions 2022-07-06 19:07:56 +00:00
Alexander Korepanov 5b4e9e2966 [JS IR] Fix IC invalidation process when symbols are modified
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
2022-07-05 12:45:43 +00:00
Alexander Korepanov 644447db84 [JS IR] Fix IC invalidation for fake override inline functions
The patch enables the direct dependency between
 fake override inline function and its implementation from the base class.

 Because klibs do not keep a signature of fake override implementation,
 incremental cache can not use the signature index,
 therefore the signature is serialized to a cache file as is.

^KT-51896 Fixed
2022-07-05 12:45:43 +00:00
Nikolay Krasko c6299ee277 Revert "Add a key to enable spilling of all variables in a suspending context"
This reverts commit 38d97d0621.
2022-07-05 11:04:50 +00:00
Pavel Kunyavskiy c1ec1d9d4c [K/N] Handle Unit? and Nothing? correctly in finally transformation
^KT-52985
2022-07-05 06:54:29 +00:00
Pavel Kunyavskiy dc48d722fe [K/N] Use common FinallyBlocksLowering for Native 2022-07-05 06:54:27 +00:00
Nikita Nazarov 38d97d0621 Add a key to enable spilling of all variables in a suspending context
This commit adds a new key that will allow users to enhance their
debugging experience in suspending contexts when using the IR backend.
After the key is enabled, the following things are changed:
1. All variables in a suspending context are spilled regardless their
liveness.
2. Their LVT records are not shrunk.
3. ACONST_NULL is not spilled to dead variables.

#KT-48678 In progress
2022-07-02 18:29:18 +03:00
Pavel Mikhailovskii 8a402bcacd KT-52875 Fix extension function literal creation with -Xlambdas=indy 2022-06-30 14:13:05 +00:00
Ilmir Usmanov a5084c2f69 JVM IR: Make receiver type of IrGetField not null
otherwise, it will be mapped to inline class type if underlying type
is primitive of nullable.

 #KT-52913 Fixed
2022-06-30 01:28:09 +00:00
Igor Yakovlev 6f88e9b16f [WASM] Fix interop adapter for long strings 2022-06-28 18:00:40 +00:00
Artem Kobzar 133c6713ca [K/JS] fix(Interface Export): prevent structural identity between two interfaces. 2022-06-28 15:44:38 +00:00
Pavel Mikhailovskii c3c09aa95a KT-4107 Data objects 2022-06-28 16:58:20 +02:00
Pavel Kunyavskiy dfcf2cfa84 [K/N] Fix extracting local classes from lambda in cached inline function
^KT-52540
2022-06-27 14:09:27 +00:00
Artem Kobzar ba738cbbff feat: add ability to create nested entities inside object. 2022-06-22 11:59:13 +00:00
Pavel Mikhailovskii 3766698081 KT-52743 IR: Fix null checks in Elvis operators 2022-06-22 09:11:24 +00:00
Mikhail Glukhikh 8b4ae3bd70 IR interpreter: fix f/o delegation from primitive classes 2022-06-21 07:39:04 +00:00
Mikhael Bogdanov 8dd141869a KAPT+IR: Skip assertion in BodyGenerator
#KT-49682
2022-06-20 11:42:54 +00:00
Mikhael Bogdanov e1d00c3d6e KAPT+IR: support nullability for error types
#KT-49682
2022-06-20 11:42:54 +00:00
Mikhael Bogdanov 162ca4ac2b KAPT+IR: support IR error types
#KT-49682
2022-06-20 11:42:53 +00:00
Mikhael Bogdanov 41d6f0dca4 Remove ir.tree.impl from build 2022-06-20 11:42:52 +00:00
Mikhael Bogdanov 328160894b Move ir.tree.impl into ir.tree 2022-06-20 11:42:51 +00:00
Igor Yakovlev 270a41a2db [WASM] Remove deprecated usage of externref 2022-06-18 19:12:21 +02:00
Alexander Udalov 448cba07bb Psi2ir: do not generate init block body in kapt mode 2022-06-17 16:51:06 +02:00
Alexander Udalov 7e9d7c895a Kapt: add flag kapt.use.jvm.ir for enabling JVM IR support
#KT-49682
2022-06-17 16:51:06 +02:00
Dmitriy Novozhilov f7e0880c34 [IR] Mark methods with descriptors of SymbolTable with @ObsoleteDescriptorBasedAPI 2022-06-17 09:38:18 +00:00
Ilya Chernikov 92bf260057 Scripting: Implement conditional conversion for REPL result values
to support value types erased from runtime classes. See example
in added tests for motivation.
#KT-45065 fixed
also refactor launcher repl test and result type rendering
2022-06-16 21:28:03 +00:00
Dmitriy Novozhilov 76622097e4 [IR] Introduce new functions for referencing declarations from IrPluginContext
Those functions take `ClassId` and `CallableId`, which is more correct
  than using just `FqName`.

Also implement those functions for `Fir2IrPluginContext`
2022-06-16 13:43:50 +00:00
Dmitriy Novozhilov a30216c655 [IR] Mark methods with descriptors of ReferenceSymbolTable with @ObsoleteDescriptorBasedAPI
Also remove optIn annotation from IrPluginContext.symbolTable
2022-06-16 13:43:49 +00:00
Sergej Jaskiewicz da7ff5b868 [JS IR] Fix replacing super.toString() call with a runtime function call
#KT-52553 Fixed
2022-06-16 10:03:14 +00:00
Sergej Jaskiewicz 0320d49ddc [JS IR] Generate sourcemaps for JS IR tests 2022-06-16 10:02:04 +00:00
Mikhail Glukhikh fa914f20a4 Use nearest Java super qualifier for fields in IR converter
Related to KT-49507
2022-06-16 06:51:34 +00:00
Mikhail Glukhikh 8ae47d4c4d IR: slightly fix kotlin-like dumping of super qualifiers 2022-06-16 06:51:34 +00:00
Mikhail Glukhikh b0a6508d4b Handle Java base class field read properly in IR converters
For FE 1.0, we just change super qualifier symbol to
base class, if it's possible.
For FIR, we introduce using of super qualifier symbols for
field accesses and repeat FE 1.0 behavior here.

#KT-49507 Fixed
2022-06-16 06:51:33 +00:00
Alexander Udalov a30a351fbb IR: make casts to nullable types in transformChildren stricter 2022-06-15 13:24:25 +00:00
Alexander Korepanov 9e780afdca [JS IR] Rework incremental cache invalidation
Replace loading the whole world IR with loading only exported (reachable) IR.

 For that purpose the direct and inverse dependency graph is used.
 It is stored in a cache directory and the cache updater keeps it up to date.
 If after loading it is found that other files must be also implicitly rebuilt
 (see rebuilt reasons below), IR for that files also will be loaded.
 This algorithm repeats until the number of implicitly rebuilt files is not 0.

 More rebuilt reasons (dirty state) have been added:
  - added file: this is a new file;
  - modified ir: ir of the file has been updated;
  - updated exports: exports from the file have been added or removed
    (e.g. a function has been used from another file);
  - updated inline imports: imported inline function has been modified
    (transitively);
  - removed inverse depends: a dependent file has been removed;
  - removed direct depends: a dependency file has been removed;
  - removed file: this file has been removed.

 Incremental cache tests has been refactored:
  - The supporting of all rebuilt reasons (dirty states) has been added;
  - New file name format "*.$suffix.kt" for the test steps has been allowed,
    so the syntax highlight works now;
  - Explicit stdlib dependency usage has been removed.
2022-06-13 20:04:05 +00:00
Alexander Udalov f003f19e1d IR tree gen: restore IrWhileLoop children visit order 2022-06-13 18:58:05 +02:00
Alexander Udalov bf5ab49342 IR tree gen: restore strict cast in IrProperty.transformChildren 2022-06-13 18:58:05 +02:00
mcpiroman 529c03ab08 Switch to auto generated IR tree
Co-authored-by: Alexander Udalov <alexander.udalov@jetbrains.com>
2022-06-13 18:58:05 +02:00
Alexander Udalov c6608de879 Minor, move some files in ir.tree from 'src' to 'gen'
To help git understand that they are moved in the subsequent commit.
2022-06-13 18:58:05 +02:00
Alexander Udalov ec9d929532 Remove dependency of fir2ir:jvm-backend on backend.jvm.entrypoint
Extract JvmIrDeserializer(Impl), similarly to the existing
JvmIrSerializer(Impl). Remove `allowErrorNodes` which is always false
anyway.
2022-06-13 12:35:51 +00:00
Artem Kobzar ef157b5b2e [K/JS] chore: rewrok klib generating with LazyIr. 2022-06-13 12:13:22 +00:00