Commit Graph

99627 Commits

Author SHA1 Message Date
Ivan Kylchik e4591d7af9 [FIR LT] Add proper source for when with subject
#KT-56982 Fixed
2023-03-21 16:33:00 +00:00
Mikhail Glukhikh 45e78455b2 K2: repeat K1 behavior around multiple inheritance by delegation
#KT-56720 Fixed
2023-03-21 16:16:20 +00:00
Mikhail Glukhikh ab883d91c8 FE: add tests to reproduce KT-56720 2023-03-21 16:16:19 +00:00
Marco Pennekamp 4981a52904 [FIR] Extensions symbol provider: Rename create to createIfNeeded 2023-03-21 16:08:43 +00:00
Marco Pennekamp d9f515fbb8 [FIR] KT-57220 Avoid creating useless synthetic function providers
- This optimization applied to LL FIR can be extended to K2 as a whole.
  Likely, there won't be any performance benefits in CLI runs, but it's
  still better to avoid useless symbol providers.
2023-03-21 16:08:43 +00:00
Marco Pennekamp 2d85e9db51 [LL FIR] KT-57220 Optimize & combine synthetic function symbol providers
- Dependency symbol providers contained a lot of useless
  `FirExtensionSyntheticFunctionInterfaceProvider`s, because such a
  provider only generates function classes from compiler plugins. If
  there aren't any such `FunctionTypeKind`s in the session, there is no
  need to even add the provider.
- `FirExtensionSyntheticFunctionInterfaceProvider`s that are added to
  the list of dependency providers despite this optimization will now be
  combined in `LLFirCombinedSyntheticFunctionSymbolProvider`. It checks
  `ClassId` heuristics once, which is more efficient than checking them
  in every provider separately.
2023-03-21 16:08:42 +00:00
Marco Pennekamp 09ab192205 [FIR] Optimize synthetic function symbol provider with ClassId heuristic
- Similar to the implementation of `isNameForFunctionClass` in
  `FirSymbolProvider`, `FirSyntheticFunctionInterfaceProvider` benefits
  from checking the `ClassId` for a digit before accessing its class
  cache.
2023-03-21 16:08:42 +00:00
Marco Pennekamp 79457ec074 [LL FIR] KT-57220 Flatten session dependency symbol providers
- Replace the "recurse one layer deep" approach of
  `LLFirDependentModuleProviders` with a flattened list of dependency
  symbol providers.
- This refactoring is a necessary component of supporting combined
  symbol providers.
2023-03-21 16:08:42 +00:00
Ilya Goncharov 1817213e1d [Gradle, JS] Upgrade yarn.lock 2023-03-21 14:33:42 +00:00
Ilya Goncharov 723aa84ea7 [Gradle, JS] No error on default compiler
^KT-57480 fixed
2023-03-21 13:23:32 +00:00
Denis.Zharkov 38138bf079 K2: Fix bounds erasure for raw types
Basically, this commit reworks eraseToUpperBound* stuff
Instead of a bunch of vague flags, we introduce two modes
(rawTypes/intersection emptiness checker) which defined those flags.

Also, it makes choosing `eraseArgumentsDeeply` option always because
that how it works in K1 and also use invariant projection inside
`eraseArgumentsDeeply` for raw types for the same reason.

^KT-57198 Fixed
2023-03-21 12:38:22 +00:00
Anton Bannykh b0de442d76 JS IR: fix throwable descendants
^ KT-43490 fixed
2023-03-21 12:32:41 +00:00
Nikita Bobko 48ed6c4cc7 2/2 Implement deprecation for use-site '@get:' target
^KT-15470 Fixed
Review: https://jetbrains.team/p/kt/reviews/9250
2023-03-21 13:29:10 +01:00
Nikita Bobko 8cf5216555 1/2 Refactoring: split GetterAnnotations & PropertyAnnotations tests for K1 and K2
These tests won't be FIR_IDENTICAL after the next commit. That's why I
split them prematurely. This allows me to have a nicer diff in `2/2`
commit.

In scope of KT-15470
Review: https://jetbrains.team/p/kt/reviews/9250
2023-03-21 13:28:55 +01:00
hungvietnguyen 4f3244fb78 IC: Compute symbols impacted by classpath changes (#5111)
IC: Compute symbols impacted by classpath changes

Incremental compilation has 4 key steps:
  1. Compile changed/impacted files
  2. Detect symbols that have changed after compiling
  3. Detect symbols that are impacted by the changed symbols
  4. Based on the changed-or-impacted symbols, identify files that need
     to be recompiled. Go back to step 1.

Normally, step 2 and 3 are done together when the changed symbols
and impacted symbols are in the same module.

However, if the changed symbols and impacted symbols are in different
modules (e.g., a `Subclass` in lib1 extends a `Superclass` in lib2),
we currently do not compute symbols in the current module that are
impacted by changes in another module (step 3 above).

This is the case for both the new IC and the old IC.

In this commit, we will compute impacted symbols for the new IC. We can
fix the old IC later if necessary (they can't be fixed together easily).

Test: Added BaseIncrementalCompilationMultiProjectIT.testChangeInterfaceInLib
^KT-56197 Fixed
2023-03-21 13:12:15 +01:00
Ilya Goncharov bb09395952 [Gradle, JS] Unique name for NPM projects based on project path
^KT-56025 fixed
^KT-32209 fixed
2023-03-21 11:43:37 +00:00
Ilya Goncharov 5ce3132f9f [Gradle, JS] No format-util in gradle plugin dependencies 2023-03-21 10:18:42 +00:00
Kirill Rakhman a434b73fc8 [FIR] Refactor transform*UsingSmartcastInfo 2023-03-21 08:48:38 +00:00
Kirill Rakhman 45d2424ad8 [FIR] Let prefix inc/dec call getter twice for compatibility with K1
#KT-57179 Fixed
2023-03-21 08:48:38 +00:00
Ilya Chernikov fea344faa4 Test infra: fix regexes relying on \n line endings 2023-03-21 07:53:13 +00:00
Ilya Chernikov b2b2914da1 Switch git checkout to eol=auto on testdata
so the tests on windows run on files with crlf line endings
2023-03-21 07:53:13 +00:00
Pavel Kunyavskiy 3afdce3168 [K/N] Fix volatile intrinsics tests on K2
^KT-55904
2023-03-21 06:28:51 +00:00
Ivan Kylchik 7cf70e7b15 [JVM IR] Fix performance issue caused by support of IR Inliner 2023-03-20 23:36:33 +00:00
aleksandrina-streltsova e8272fa02e [Analysis API] Move testdata for scope provider 2023-03-20 22:04:48 +00:00
aleksandrina-streltsova 4b7164a557 [Analysis API] Allow handling scopes from KtScopeContext separately
^KT-55527
2023-03-20 22:04:48 +00:00
aleksandrina-streltsova d89d774411 [AA] Consider context receivers in FirTowerDataElement.getAvailableScope 2023-03-20 22:04:48 +00:00
Vyacheslav Gerasimov 5996b41443 Build: Workaround deadlock in Gradle
Sometimes Gradle hangs during relocation of compiler plugins because
`compilerDummyJar` configuration is resolved inside ShadowJar's exclude
https://github.com/gradle/gradle/issues/24317
2023-03-20 20:46:58 +01:00
Vyacheslav Gerasimov 3dcac61f7c Build: Update org.gradle.crypto.checksum to 1.4.0 2023-03-20 19:45:40 +00:00
Vyacheslav Gerasimov 98cadcdaaf Build: Update org.jetbrains.kotlinx.benchmark to 0.4.6 2023-03-20 19:45:40 +00:00
Vyacheslav Gerasimov 76c54a8ff3 Build: Fix usages of apis deprecated in Gradle 8 2023-03-20 19:45:39 +00:00
Vyacheslav Gerasimov bd9f096cfd Build: Replace configuration dependencies with extends
Configuration dependencies on configuration are not allowed in Gradle 8
2023-03-20 19:45:38 +00:00
Dmitrii Gridin fae4cbb415 [LL FIR] fix test naming
^KT-55750
2023-03-20 20:25:46 +01:00
Dmitrii Gridin bdada30bd9 [tests] simplify tmp dir name in case of long name
even non-Windows systems don't want to process very long names

^KT-55750
2023-03-20 20:19:22 +01:00
Dmitrii Gridin b3cb47e8a1 [tests] add new custom extension 'reversed' for tests
the new test will be introduced in the next commits

^KT-55750
2023-03-20 20:17:51 +01:00
Dmitrii Gridin 7891b025a5 [LL FIR] FirLazyAnnotationTransformer: add missing compiler annotation
^KT-57424
2023-03-20 18:45:09 +00:00
Leonid Startsev 6ee20574e1 Correctly handle @Repeatable @SerialInfo annotations on classes
that were affected by deduplication of inherited serial info annotations.

Prohibit combination of @InheritableSerialInfo and @Repeatable.

Fixes https://github.com/Kotlin/kotlinx.serialization/issues/2099
2023-03-20 18:15:09 +00:00
Nikolay Krasko 8b12b3f18d Minor: remove code from top-level and move to task configurations 2023-03-20 17:58:15 +00:00
Nikolay Krasko 78b339a52b Fix configuration cache for Test Generation tasks
It's not allowed `project` during the execution. But removing
project doesn't change the result anyway.

KTI-1092
2023-03-20 17:58:15 +00:00
Svyatoslav Kuzmich 1b7c63bd49 [Wasm] Fix js interop closure signature
Before we used IrType.render() which is not unique.
This changes adds a proper serialization of adapter signature to string.
2023-03-20 15:16:00 +00:00
Mikhail Glukhikh e99b453816 Restore binary compatibility of BinaryVersion #KT-56119 Fixed 2023-03-20 14:50:15 +00:00
Dmitrii Gridin 0863e9c589 [Test] Add testdata of LL Fir tests to Test Helper plugin path 2023-03-20 15:06:15 +01:00
Pavel Punegov 56cd550e27 [K/N][test] Remove old lldb tests that were replaced in the new infra
These tests were replaced by the 842a66c3 and now located
in :native:native.tests project

Merge-request: KT-MR-9256
Merged-by: Pavel Punegov <Pavel.Punegov@jetbrains.com>
2023-03-20 13:56:42 +00:00
Svyatoslav Scherbina 2233164296 Bump Kotlin/Native version to 1.9.0-dev-3826 2023-03-20 13:14:27 +00:00
Sebastian Sellmair 4039ccbb05 [Tests] Use custom test tasks instead of gradle test suites for kgp functionalTests
^KT-57380 Verification Pending
2023-03-20 12:29:51 +00:00
Pavel Punegov 40270a9c72 [K/N][test] Update LLDB tests with function references
After the fixes to function inlining tests revealed the problem with
debug info generated for inlined lambdas. See the ^KT-57365

Merge-request: KT-MR-9252
Merged-by: Pavel Punegov <Pavel.Punegov@jetbrains.com>
2023-03-20 12:03:43 +00:00
Ilya Chernikov 0e77b67170 K2: implement correct check for ctors mapped from java
so the check is functionally the same as in K1.
#KT-57064 fixed
#KT-57065 fixed
One of the tests introduced here (javaMappedCtors) revealed an
additional issue, filed as KT-57368
2023-03-20 11:33:34 +00:00
nataliya.valtman 730502638a Dont call GC for every task 2023-03-20 11:33:03 +00:00
Mikhail Glukhikh a43a16b25b Delay ForbidInferringPostponedTypeVariableIntoDeclaredUpperBound to 2.0
#KT-57395 Fixed
Related to KT-47986
2023-03-20 11:11:41 +00:00
Vladimir Sukharev 5ef62c8760 [K2/N] Replace K2 prefixes for test classes with Fir
Merge-request: KT-MR-9248
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2023-03-20 10:55:57 +00:00
Vsevolod Tolstopyatov 33d13474c5 Make EnumEntries implementation eager
* Addresses the recent design changes of the corresponding language feature
* Also rework JS/Wasm enumEntries implementation with the function that accepts array instead of fabric function


^KT-57318


Co-authored-by: Artem Kobzar <Artem.Kobzar@jetbrains.com>

Merge-request: KT-MR-9204
Merged-by: Vsevolod Tolstopyatov <qwwdfsad@gmail.com>
2023-03-20 10:18:28 +00:00