Commit Graph

40253 Commits

Author SHA1 Message Date
Jaebaek Seo ef482bb126 FIR find usage: correctly set extendsList of FirLightInterfaceClassSymbol
The existing code does not set the list of bases that
FirLightInterfaceClassSymbol extends for "extendsList". It collects only
the set of interfaces for "extendsList" of FirLightInterfaceClassSymbol.
However, interfaces can "extend" other classes and/or interfaces, but
they cannot "implement" other interfaces. Therefore, we have to includes
all interfaces and classes that the child interface extends in
the "extendsList". Additionally, this commit adds `private fun
PsiClass.hasSuper(..): Boolean` to FirLightClassBase that returns
whether one of recursive super classes of the PsiClass is `baseClass`
or not. This commit lets `isInheritor()` method use
`PsiClass.hasSuper()`.
2022-07-08 10:36:55 +02:00
Nikita Nazarov 939a720686 Add android ignore directives for debug mode tests 2022-07-07 14:51:24 +03:00
Nikita Nazarov 7287be6879 Add tests on variable spilling with debug mode enabled
#KT-48678 Fixed
2022-07-07 14:51:24 +03: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
Ilya Kirillov a6b6c79dc2 [PSI] do not throw exception on incorrect expression in KtPsiFactory.createExpressionIfPossible 2022-07-06 23:03:20 +02: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
Mikhail Glukhikh 777aa725c9 Add signature cache to FirBasedSignatureComposer 2022-07-06 10:02:12 +00:00
Mikhail Glukhikh e95fe060d6 FIR2IR: don't create signatures also for accessors & constructors 2022-07-06 10:02:12 +00:00
Mikhail Glukhikh 2880cd8d5a FIR2IR: provide more precise conversion type context at some use-sites 2022-07-06 10:02:11 +00:00
Mikhail Glukhikh 517614a190 FIR2IR: remove code duplication from CallAndReferenceGenerator 2022-07-06 10:02:10 +00:00
Mikhail Glukhikh bb0191b7d5 FIR2IR: don't calculate signatures for callables when possible 2022-07-06 10:02:10 +00:00
Mikhail Glukhikh 45eb9238b3 Fir2IrClassifierStorage: don't calculate signature in registerClass 2022-07-06 10:02:09 +00:00
Stanislav Erokhin d788a927c4 Change deprecations annotation order on Ranges#endExclusive property
We have [Int|Long|Char]Range classes in 2 different places:
- as separate class-files
- serialized in the kotlin_builtins file

For some reason our Kotlin compiler during the JVM compilation
re-arranging the order of the annotations, so in class file they
will be written in the following order:
- Deprecated
- SinceKotlin
- ExperimentalStdlibApi

But in the kotlin_builtins they will be stored the same way as
in the sources.
We need these 2 way to be synchronized, because stub's in IDE
cares about order.

After this commit IDE test BuiltInDecompilerConsistencyTest is fixed
2022-07-05 19:50:45 +00:00
Dmitriy Novozhilov 509ed69d28 [K1] Get rid of CONSERVATIVE_SET_INCLUSION_SEMANTICS rewrite policy
This policy didn't work in IDE, because trace in IDE always allow rewrites
  to slices

^KT-53072 Fixed
2022-07-05 17:44:25 +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
Nikolay Krasko d080297c20 Revert "Add tests on variable spilling with debug mode enabled"
This reverts commit 65bb6abae4.
2022-07-05 11:04:50 +00:00
Nikolay Krasko c1137d9986 Revert "Set android ignore directives for debug mode tests"
This reverts commit 12e40e7b92.
2022-07-05 11:04:49 +00:00
Ilya Kirillov 8f89f1b368 [Analysis API] add info about context receivers to the Analysis API 2022-07-05 10:34:28 +02:00
Ilya Kirillov 2f822ab4d9 [k1] add information about context receiver labels to ContextClassReceiver/ContextReceiver 2022-07-05 10:34:28 +02: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 12e40e7b92 Set android ignore directives for debug mode tests 2022-07-05 09:31:12 +03:00
Mikhail Glukhikh 730a5d1a88 FIR: introduce Java vs Kotlin class conflicts checker #KT-44441 Fixed 2022-07-04 13:28:58 +00:00
Simon Ogorodnik d94d832309 FIR Test. Fix isolate not called for FP tests 2022-07-04 12:49:05 +00:00
Victor Petukhov 3ed87c29c7 [FE 1.0] Substituted possible fixed type variables after completion in accordance with @OverloadResolutionByLambdaReturnType
^KT-48031 Fixed
2022-07-04 12:05:57 +00:00
Victor Petukhov 5b5da025f4 [FE 1.0] Don't throw empty intersection exception, return empty intersection type instead 2022-07-04 12:05:56 +00:00
Mikhail Glukhikh 4aed9511f6 FIR/FE10: fix false positives described in KT-24643 2022-07-03 19:10:02 +00:00
Mikhail Glukhikh 3223d3c3e9 Add test with false/true positives for KT-24643 2022-07-03 19:10:01 +00:00
Nikita Nazarov 65bb6abae4 Add tests on variable spilling with debug mode enabled
#KT-48678 Fixed
2022-07-02 18:29:18 +03: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
Mikhail Glukhikh 4737bb07df FIR: look for conflicting declarations more precisely 2022-07-01 15:07:48 +00:00
Mikhail Glukhikh 3092a84b6b Drop unreachable when branch in FirConflictsChecker 2022-07-01 15:07:48 +00:00
Ilya Chernikov 854127bcc8 Fix testdata after switching Kotlin to version 1.8
(see the previous commit with the same title for details)
2022-07-01 14:31:45 +02:00
Ilya Chernikov 513f490502 Scripting: notify writer in REPL on errors reporting complete
required for restoring compatibility with IDE REPL usages (scratch
files included), since IDE counterpart needs a reliable signal
when the processing of the REPL snippet/command is completed
2022-07-01 10:14:42 +00:00
Bart van Helvert 7bef560b6b KTIJ-21986 Don't log non-kotlin code fragment context when it's null
This warning shouldn't be logged when the context is null.
2022-07-01 08:15:58 +00:00
Ilya Chernikov bc1e3667ff Fix testdata after switching Kotlin to version 1.8
the corresponding features - GenericInlineClassParameter && DataObjects
- were turned on in 1.8 right after the last check build, therefore the
discrepancy went unnoticed
2022-06-30 16:34:14 +00: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
Mikhail Glukhikh 38f4a35be2 FIR: introduce flexible types pretty rendering for no arguments case
#KT-52020 Fixed
2022-06-29 16:50:05 +00:00
Mikhail Glukhikh 31ec10142b FirRenderer: add renderAllModifiers and renderDetailedTypeReferences
Related to KT-52020
2022-06-29 16:50:04 +00:00
Mikhail Glukhikh b2a9ad079d Fix unreachable branch in ConeKotlinType.render() 2022-06-29 16:50:03 +00:00
Mikhail Glukhikh 9a8fa300d7 Add test for KT-52020 2022-06-29 16:50:03 +00:00
Dmitriy Novozhilov 1a8496757e [Compiler] Mark all entrypoints to compiler API as experimental 2022-06-29 12:00:01 +00:00
Dmitriy Novozhilov 169e80e8c9 [Build] Cleanup build.gradle.kts for :compiler module 2022-06-29 12:00:01 +00:00
Dmitriy Novozhilov 65e240679e [FE] Move utility of parsing plugin options to :compiler:frontend.common
This is needed to be able to use this utility inside FIR part of IDE plugin
2022-06-29 12:00:00 +00:00
Dmitriy Novozhilov f587c02d38 [FE] Move ServiceLoaderLite to :compiler:frontend.common
This is needed to be able to use this class inside FIR part of IDE plugin
2022-06-29 12:00:00 +00:00
Dmitriy Novozhilov 22dae9bff4 [FIR] Fix registration of multiple compiler plugins 2022-06-29 11:59:59 +00:00