Commit Graph

44970 Commits

Author SHA1 Message Date
Nikolay Lunyak f9c6af4d2a [FIR] Properly assign <local> packages to symbols
This prevents `FirConflictsExpressionChecker.kt`
from missing conflicting local functions. It used
to due to inconsistencies in assigning `<local>`,
and this commit makes it a bit more
straightforward.

The change in KtClassTypeQualifierRenderer
prevents `FirOverrideImplementTest.testLocalClass`
from failing in `intellij`. It didn't fail for
callables, because `KtCallableSignatureRenderer`
doesn't try to render packages.

^KT-59186 Fixed
2023-08-18 13:31:04 +00:00
Nikolay Lunyak cf655fd5ad [FIR] Report CONFLICTING_OVERLOADS for local functions
^KT-59186 Fixed
2023-08-18 13:31:04 +00:00
Nikolay Lunyak 6fa5363cf4 [FIR] FirDeclarationInspector -> FirDeclarationCollector<T>
Makes more sense when you only want to collect
declarations of certain type.
2023-08-18 13:31:03 +00:00
Kirill Rakhman 5b9c35de2e [Tests] Update test data with error suppression warnings
#KT-61129 Fixed
2023-08-18 13:29:20 +00:00
Kirill Rakhman 969c716c76 [FIR] Implement flag for disabling warning on error suppression
#KT-61129
2023-08-18 13:29:20 +00:00
Kirill Rakhman c32a0a83f9 [FIR] Report warning when error is suppressed
#KT-61129
2023-08-18 13:29:20 +00:00
Kirill Rakhman 769e4ac0ac [FIR] Generate list of error names that shouldn't be suppressed
#KT-61129
2023-08-18 13:29:20 +00:00
Kirill Rakhman 3255bcfbee [FIR] Add tests for #KT-54670 2023-08-18 13:08:25 +00:00
Ilya Kirillov e763e71515 [FIR] optimize ConeTypeProjection[] RAM usage for empty arrays
On the snapshot from ^KTIJ-26260 empty ConeTypeProjection arrays take about 10mb
2023-08-18 11:36:42 +00:00
Ilya Kirillov bdfc68468f [FIR] optimize direct allocation of empty ConeTypeProjection arrays
On the snapshot from KTIJ-26260 empty ConeTypeProjection arrays take about 10mb
2023-08-18 11:36:42 +00:00
Alexander Udalov d81c79b3bc Tests: fix language version in tests about PRE_RELEASE_CLASS
Do not force language version to be LATEST_STABLE. There are now two
versions of this test, one for K1 (LV <= 1.9) and another for K2 (LV >=
2.0), and language version is chosen automatically in `compileKotlin`.
2023-08-18 10:49:48 +00:00
Alexander Udalov 9de6df6104 Tests: improve logic of replacing versions with templates
To slightly reduce the number of test data that needs to be changed when
Kotlin switches to a new language version.
2023-08-18 10:49:48 +00:00
Alexander Udalov a58a1a3398 Reflection: do not try to box COROUTINE_SUSPENDED
#KT-58887 Fixed
2023-08-18 10:35:34 +00:00
Kirill Rakhman bd6af5cc42 [FIR2IR] Set correct modality of lazy annotation classes
#KT-60268 Fixed
2023-08-18 09:43:40 +00:00
Nikolay Lunyak 4958196c51 [FIR] Forbid mixing supertypes with different functional kinds
^KT-61277 Fixed
2023-08-17 21:45:42 +00:00
Nikolay Lunyak f674529558 [FIR] Report MIXING_SUSPEND_AND_NON_SUSPEND_SUPERTYPES
^KT-59367 Fixed
2023-08-17 21:45:42 +00:00
strangepleasures 2423b7b62f [KAPT4] KT-51982 Implement generation of @Metadata annotations in Java stubs
Also adds rendering of @Metadata annotations in Kapt3 and Kapt4 tests
(currently disabled for a few tests).

Co-authored-by: Alexander Udalov <alexander.udalov@jetbrains.com>
2023-08-17 21:43:54 +00:00
Alexander Udalov f40fc1b0c6 JVM IR: minor, deduplicate JvmFileClassUtil.manglePartName 2023-08-17 21:43:54 +00:00
Kirill Rakhman 640d1e3fc8 [FIR] Fix augmented array set call on smartcasted receiver
#KT-60917 Fixed
2023-08-17 15:13:38 +00:00
Ivan Kochurkin 553114e245 [K2, MPP] Actualize annotation calls
^KT-57963 Fixed
2023-08-17 14:04:59 +00:00
Nikolay Lunyak dc9ed5656e [FIR] Revert FirMultipleDefaultsInheritedFromSupertypesChecker
It's possible to write a fix that
would prevent false positives with
this checker, but the core
intuition behind it is invalid.

This checker assumes that it's
enough to only check direct
overriddens, while in reality
even simple `Source` override
functions are not allowed to
contain default values, so they
can't be used to make judgements
about them.

^KT-59408 Open
^KT-59408 Open

^KT-61095 Fixed
^KT-61165 Fixed
^KT-61029 Fixed
2023-08-17 13:55:19 +00:00
Ilya Kirillov c963eadb44 [Analysis API FIR] fix KtSymbol creation for _ destructuring parameter
We need to have a corresponding declaration in the FIR tree,
so we can create a symbol for it

^KT-60904 fixed
^KT-60904 fixed
2023-08-17 13:01:02 +00:00
Alexey Merkulov 73b2ccff76 [Stubs] Refactoring: reduce member visibility in KotlinStubOrigin 2023-08-17 12:35:19 +00:00
Alexey Merkulov 60d5de56cb [Stubs] Fix writing/reading multi file facades
The fixed error leaded to the invalid resolve of methods during
evaluation, e.g. kotlinx.coroutines#runBlocking should be called from
facade BuildersKt instead of BuildersKt__BuildersKt
2023-08-17 12:35:19 +00:00
Svyatoslav Kuzmich 833c8b2cd4 [Wasm] Fix transforming setField in an inline class constructor body
IrSetField was transformed to its value to preserve side effects
This transformation produced invalid IR in cases where
IrSetField used in Unit-returning expression context.

This commit fixes it by producing Unit-typed expression

^KT-59084 Fixed
2023-08-17 10:35:00 +00:00
Kirill Rakhman 6fba6a2e3c [FIR2IR] Don't add synthetic propertiy fake overrides to parent class
This fixes a KMP issue where IrActualizer would add duplicate
fake overrides because the parent class would have both the getter
and the synthetic property in its list of declarations.
Now, the synthetic property fake overrides are still generated and
cached in the Fir2IrDeclarationStorage, but not added to the class.

#KT-60854 Fixed
2023-08-17 07:34:04 +00:00
Dmitriy Dolovov 033bb385b9 [IR] Drop expectDescriptorToSymbol completely
^KT-61136
2023-08-16 19:17:17 +00:00
Dmitriy Dolovov 9eb5b41ed8 [IR] Drop skipExpects & expectDescriptorToSymbol in IrFileSerializer
^KT-61136
2023-08-16 19:17:17 +00:00
Dmitriy Dolovov d691ab61d7 [KLIB] Keep "API for KLIB ABI" test data under "compiler/testData/klib/" dir
The test data is used both in ":kotlin-util-klib-abi" and
":native:native.tests" modules. It's better to keep it together with
the test data for other KLIB tests which are also used in more than one
module, i.e. in "compiler/testData/klib/" dir.
2023-08-16 19:11:35 +00:00
Dmitriy Dolovov 60b950b9bd [KLIB][tests] Keep "klib evolution" test data under "testData/klib/" dir 2023-08-16 19:11:34 +00:00
Dmitriy Dolovov 5c3e63e19a [PL][tests] Keep PL test data under "testData/klib/" dir 2023-08-16 19:11:34 +00:00
Dmitriy Novozhilov 9e3afe7a1f [Build] Add utility function to opt-in to ObsoleteDescriptorBasedAPI 2023-08-16 17:47:29 +00:00
Dmitriy Novozhilov 697d0d5638 [IR] Mark IrSymbol.owner with OptIn annotation
^KT-60923 Fixed
2023-08-16 17:47:29 +00:00
Simon Ogorodnik 20da554443 [FP/MT Test] Document and extract CPU isolation logic to a separate file 2023-08-16 16:46:23 +00:00
Simon Ogorodnik 3636f9dd71 [FP/MT Test] Fix CPU affinity for thread isolation on hardware agents
In some builds on hardware agents, we use a linux container without `ps`
command; it causes isolation logic to execute partially.
This change removes the usage of `ps` and replaces it with a direct
listing of the procfs.
2023-08-16 16:46:23 +00:00
Brian Norman dfa7c8c51d [FIR] Make sure not to leak alternate flows outside finally blocks
Instead of trying to use node and edge information to determine when an
alternate flow no longer needs to be propagated, ask the CFG builder if
the node is still within the `finally` blocks of the paths being
propagated. This makes the checks simpler and more sound, avoiding leaks
of alternate flows beyond their needed scope.

KT-56888
2023-08-16 15:08:52 +00:00
Hung Nguyen 894ba9ab80 [IC] Relocatable IC caches for projects with custom buildDir
IC caches often contain file paths. To make them relocatable, we need
to convert these file paths into relative paths, relative to a base
directory.
  - If the file paths are source files, we can use the root project
    directory as base.
  - If the file paths are class files, we should use the classes
    directory as base (before this commit, we used the root project
    directory in both cases, that's why we hit KT-58547).

The key changes in this commit include:
  - RelocatableFileToPathConverter: converts paths to relative paths
  - IncrementalCompilationContext: contains 2 different path converters,
    one for source files and one for class files
  - SourceToOutputFilesMap: maps source files to class files using the
    above path converters
  - IncrementalCompilerRunner: creates the path converters based on file
    locations

Test: RelocatableFileToPathConverterTest unit test
      SourceToOutputFilesMapTest unit test
      BuildCacheRelocationIT.testCustomBuildDirectory integration test
^KT-58547 Fixed
2023-08-16 13:40:19 +00:00
Svyatoslav Kuzmich 432c9fe592 [Wasm] Fix SuspendFunctionKind.DELEGATING bug (KT-60700)
When detecting function delegation at the last statement position we
need to make sure that delegating call has unit return type, otherwise
we would try to return non-Unit value from a parent function returning
 Unit

^KT-60700 Fixed
2023-08-16 12:47:22 +00:00
Vladimir Sukharev 8f03eb9314 [K/N] Fix stdlib import in DiagnosticsNativeTests
Merge-request: KT-MR-11635
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2023-08-16 08:27:16 +00:00
Nikolay Lunyak 97bbf69bdc [FIR] Don't ignore annotations on when subjects
^KT-53565 Fixed
2023-08-16 08:09:14 +00:00
Artem Kobzar 05ed134fbb [K/Wasm] Introduce stepping tests for Wasm 2023-08-15 17:03:11 +00:00
Nikita Bobko 577d0db3f1 [FE] Skip delegation descriptors during default params matching
^KT-61163 Fixed
Review: https://jetbrains.team/p/kt/reviews/11599/timeline

They can be safely skiped because we check overridden descriptors
anyway.

IMO, it's a bug that delegated descriptors are copied with default
params. But it's much harder problem, and my IMO can easily be wrong for
some weird reason.
2023-08-15 16:34:23 +00:00
Kirill Rakhman 80200fc3c5 [FIR] Replace type variable types with error types in lambda completion
#KT-54568 Fixed
#KT-59882
2023-08-15 08:04:19 +00:00
Alexander Udalov bddc18e463 K2: do not run compilation if Java module graph setup failed
#KT-61156 Fixed
2023-08-14 16:32:15 +00:00
Alexander Udalov 4e706ba93e K2: add JavaModulesIntegrationTest
#KT-60797
2023-08-14 16:32:15 +00:00
Alexander Udalov b1fb5bdde1 Minor, rename JavaModulesIntegrationTest and move to separate package 2023-08-14 16:32:15 +00:00
Alexey Merkulov 3d92d0d05f [LL API] Fix value capturing for multiple receivers
There were problem when 'this' bound symbol was used twice for a call

KT-61144
2023-08-14 15:22:43 +00:00
Alexey Merkulov 35eca56d32 [fir2ir] Fix field-receiver extracting for evaluator
KT-61144
2023-08-14 15:22:43 +00:00
Alexey Merkulov c520aeb5aa [fir2ir] Just refactoring before classes receiver fix for evaluator
KT-61144
2023-08-14 15:22:43 +00:00
Dmitriy Dolovov 7be877ce74 [IR][JVM] Drop JvmIrSerializerSession.skipExpects parameter
^KT-61136
2023-08-14 15:21:04 +00:00