Commit Graph

100009 Commits

Author SHA1 Message Date
Justin Paupore 6604627fa8 Use registered FIR compiler extensions in Analysis API.
This will allow IDE plugins to contribute compiler plugins to analysis,
above and beyond those used for the actual compilation step. These
plugins can be used to, for example, provide declarations for code that
is generated during build by an external tool.

^KT-57763 fixed
2023-04-05 07:31:08 +00:00
Justin Paupore acca7de42d Fix extension point name for FirExtensionRegistrar.
This changes the declared entry point name to match that actually
defined in FirExtensionRegistrarAdapter.

^KT-57763
2023-04-05 07:31:08 +00:00
Dmitriy Dolovov b2e58096c0 [Native][tests] Generate missing codegen/box tests 2023-04-04 23:02:44 +02:00
Dmitriy Dolovov 31ed97e4ad [PL][tests] Mark K/N codegen/box tests with disabled PL with a special tag
Using this tag such tests may be excluded at the buildserver from slow configurations.
2023-04-04 22:24:02 +02:00
Dmitriy Dolovov 846f704713 [PL][tests] Use the proper cache configuration in cache tests 2023-04-04 22:24:02 +02:00
Dmitriy Dolovov f86fa807cf [PL][Native] Propagate PL configuration to cache compilation 2023-04-04 22:24:02 +02:00
Dmitriy Dolovov f22bbb5a39 [PL][tests] Add K/N codegen test variants to run w/o PL 2023-04-04 22:24:02 +02:00
Dmitriy Dolovov 5db6158b47 [PL][tests] Mark K/N tests that should be executed without PL or with always some predefined mode
#KT-57378
2023-04-04 22:24:02 +02:00
Dmitriy Dolovov cb071028f6 [PL][tests] Run K/N tests (new infra) with PL enabled (where possible)
#KT-57378
2023-04-04 22:24:01 +02:00
Dmitriy Dolovov f1a97ed4b8 Minor. Comment updated 2023-04-04 20:18:18 +00:00
Dmitriy Dolovov b08d805f1e [JS][tests] Support FIR for KLIB evolution tests 2023-04-04 20:18:18 +00:00
Dmitriy Dolovov 5970cfff75 [JS][tests] Rename KLIB binary compatibility tests to KLIB evolution tests 2023-04-04 20:18:17 +00:00
Dmitriy Dolovov bd4acfc4dc [JS][tests] Remove unused AbstractJsKlibBinaryCompatibilityErrorTest 2023-04-04 20:18:17 +00:00
Dmitriy Dolovov 17c5f5d5a2 [Native][tests] Support FIR for KLIB evolution tests 2023-04-04 20:18:17 +00:00
Dmitriy Dolovov 3506e0c20f [Native][tests] Rename KLIB binary compatibility tests to KLIB evolution tests 2023-04-04 20:18:16 +00:00
Igor Yakovlev 49beec33b4 [Wasm] Replace ClassId and InterfaceId with single TypeId 2023-04-04 18:39:18 +00:00
Igor Yakovlev 5a46cb1c40 [Wasm] Fix invalid float and double sign parser for '-Infinity' value 2023-04-04 18:39:18 +00:00
Igor Yakovlev 44190937b0 [Wasm] Fix generic call return type for functions with default parameters 2023-04-04 18:39:18 +00:00
Igor Yakovlev b8f797af00 [Wasm] Support for Associated Objects feature 2023-04-04 18:39:17 +00:00
Igor Yakovlev 993334e5e4 [Wasm] Support feature InstantiationOfAnnotationClasses 2023-04-04 18:39:17 +00:00
Anton Lakotka fac90070bc [Gradle] Add smoke test for appleGradlePlugin
^KT-57668 Verification Pending
2023-04-04 18:37:30 +00:00
Anton Lakotka fd63aee3e5 [Gradle] Test that binary frameworks can be consumed
^KT-57668 Verification Pending
2023-04-04 18:37:30 +00:00
Anton Lakotka ad9b34653a [Gradle] Add kotlinNativeFrameworkNameAttribute for binary frameworks
^KT-57668 Verification Pending
2023-04-04 18:37:29 +00:00
Pavel Kargashinsky ae228ece8a [Gradle][Tests][MPP] Fix test-data for MPP tests 2023-04-04 18:33:33 +00:00
Pavel Kargashinsky 5c56145a19 [Gradle][Tests][MPP] Use MAX_SUPPORTED AGP/Gradle versions for MPP tests 2023-04-04 18:33:33 +00:00
Artem Daugel-Dauge 4b66160afb [Gradle] Support dependencies between pods in CocoaPods plugin
^KT-38749 Verification Pending
2023-04-04 14:13:44 +00:00
Ilmir Usmanov b36e1f1a5b Do not reference object's toString result in exception messages
Since we put object's hash code in toString, we end up in putting
non-stable hash code to constant table, which leads to unstable
binaries.

 #KTI-1193 Fixed
2023-04-04 13:41:03 +00:00
Marco Pennekamp c2acb77b84 [LL FIR] KT-57220 LLFirSessionCache: Clean up symbol provider merging
- `SymbolProviderMerger` encapsulates some boilerplate, which should
  make `mergeDependencySymbolProvidersInto` easier to read and also much
  easier to extend.
2023-04-04 12:45:33 +00:00
Marco Pennekamp 87bcc3ad08 [LL FIR] KT-57220 Don't merge empty synthetic function symbol providers 2023-04-04 12:45:32 +00:00
Marco Pennekamp eac6458500 [LL FIR] KT-57314 Add cache to combined Kotlin symbol providers
- This Caffeine cache is limited to classes for now, but may also be
  tried with callables.
- The cache has a small memory footprint, but still avoids most of the
  unnecessary index accesses. In my local tests, this approach takes 50%
  of the time compared to no caches. A full cache has no performance
  advantage over the limited-size cache in my local tests.
2023-04-04 12:45:32 +00:00
Marco Pennekamp 375288539e [LL FIR] Add NullableCaffeineCache
- `NullableCaffeineCache` wraps a Caffeine cache and allows storing
  `null` values returned by the computation in the form of explicit
  `NullValue`s in the cache.
2023-04-04 12:45:32 +00:00
Marco Pennekamp b805c6e32b [LL FIR] Add Caffeine library dependency
- Our current FIR caches are based on `ConcurrentMap` and thereby do not
  support size and lifetime limits out of the box. For example,
  first-layer caches with a limited size can speed up access of the most
  frequently used elements, while having a small memory footprint.
- Caffeine is a modern and well optimized caching library that allows us
  to create thread-safe and performant caches with various size or
  lifetime limits.
- The cache must support concurrency because session components such as
  symbol providers may be accessed concurrently once parallel resolve in
  the Analysis API has been implemented (see KT-55750). Caffeine caches
  support concurrency.
2023-04-04 12:45:31 +00:00
Marco Pennekamp a7360a54fe [LL FIR] KT-57314 Prepare for getting top-level names from index
- Getting top-level names from `declarationProvider` directly instead of
  from subordinate symbol providers has a lot of potential for
  performance, but the current performance of the index access is worse
  than the iterative version because scopes aren't optimized yet.
- This commit prepares `LLFirCombinedKotlinSymbolProvider` for the
  switch to getting top-level names from `declarationProvider`.
2023-04-04 12:45:31 +00:00
Marco Pennekamp 028d65e402 [LL FIR] KT-57220 Add LLFirSelectingCombinedSymbolProvider
- Classpath order disambiguation will also be needed by the combined
  Java symbol provider, so it makes sense to move it to its own base
  class.
2023-04-04 12:45:31 +00:00
Marco Pennekamp 29276d94ca [LL FIR] KT-57314 Combine Kotlin symbol providers
- `LLFirCombinedKotlinSymbolProvider` combines multiple
  `LLFirProvider$SymbolProvider`s. Its advantages are: combined "names
  in package" optimization, caching, combined index access, classpath
  order disambiguation.
- Scopes can still be optimized with a combined scope instead of a naive
  union scope.

^KT-57314 fixed
2023-04-04 12:45:30 +00:00
Marco Pennekamp 16af67e99c [LL FIR] KT-57314 Allow passing index results to Kotlin symbol provider
- If a `KtClassLikeDeclaration` or all `KtFile`s which contain a
  callable are already known, they can now be passed to
  `LLFirProvider$SymbolProvider` directly. This avoids index accesses in
  `providerHelper`.
2023-04-04 12:45:30 +00:00
Marco Pennekamp bf1ee6ebed [LL FIR] KTIJ-24296 LL FIR symbol provider: Remove function class check
- `LLFirProvider$SymbolProvider` cannot provide synthetic function
  classes, so there is no need to check `isNameForFunctionClass` for the
  `ClassId`.
2023-04-04 12:45:30 +00:00
Ivan Kylchik 32297c0f21 Serialize and deserialize const val's properly for K2 klib
#KT-57312 Fixed
2023-04-04 12:35:54 +00:00
Ivan Kylchik 23b23d5a1e Slightly simplify const deserialization logic in ClassDeserialization 2023-04-04 12:35:53 +00:00
Ivan Kylchik 1eabb55641 [FIR2IR] Unconditionally print only exception message from interpreter 2023-04-04 12:35:53 +00:00
Roman Efremov bcf4528763 [MPP] Forbid actual member in expect class
Such member descriptor will be actual and expect at the same time,
so we should run both checks.

^KT-40903 Fixed
2023-04-04 12:28:00 +00:00
Vladimir Sukharev c3734aa9ce [K2/N] Build platform libs with XCode 14.3
Merge-request: KT-MR-9458
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2023-04-04 11:41:08 +00:00
Anastasia.Nekrasova cb4fb15093 Added CONTEXT_RECEIVER_PREFIX to NameUtils for external use
The separate constant is required to support context receiver on the IDE side, see KTIJ-21214
2023-04-04 11:38:34 +00:00
Vladislav Grechko bd7bce9f97 [JVM IR] Get rid of MfvcNodeWithSubnodesImpl class
`MfvcNodeWithSubnodesImpl` has two problems:
- Naming: its name makes one think that the class is inherited from
`MfvcNode` and implements `MfvcNodeWithSubnodes`.However, both
statements are false.
- Semantics: the class only makes unnecessary indirection between its
properties and code of `MfvcNodeWithSubnodes` class
2023-04-04 11:38:15 +00:00
Igor Yakovlev 8102744e00 [Serialization] Fix serialization test data 2023-04-04 11:04:18 +00:00
Igor Yakovlev 81ceb856bb [Serialization] Fix invalid int array creation 2023-04-04 11:04:18 +00:00
Igor Yakovlev 8cb1fca299 [Serialization] Add wasm target platform to serialization plugin 2023-04-04 11:04:17 +00:00
Igor Yakovlev e990c8efd2 [Serialization] Fix invalid ir type for serialize generator 2023-04-04 11:04:17 +00:00
Igor Yakovlev b4d6482581 [Serialization] Fix invalid ir type for deserialize generator 2023-04-04 11:04:17 +00:00
Anna Kozlova 3496f69f33 [cfg] don't traverse annotation arguments for decompiled code
^ KT-57768
decompiled code have no annotation arguments expressions,
but search for them causes decompiling of code
which is slow and unneeded
2023-04-04 10:55:22 +00:00