Commit Graph

100074 Commits

Author SHA1 Message Date
Sebastian Sellmair d4cc842200 [Gradle] KotlinCompile: Implement KotlinCompilerArgumentsProducer
KTIJ-24976
2023-04-06 16:02:55 +00:00
Sebastian Sellmair 0a3eb68934 [Gradle] Implement IdeCompilerArgumentsResolver service
KTIJ-24976
2023-04-06 16:02:55 +00:00
Sebastian Sellmair 36ff6531ea [Gradle] Deprecate CompilerArgumentAware in favor of KotlinCompilerArgumentsProducer
KTIJ-24976
2023-04-06 16:02:55 +00:00
Sebastian Sellmair f5fadc1f68 [kotlin-tooling-core] Add Interner.clear API 2023-04-06 16:02:54 +00:00
Anna Kozlova 22b0a8d9fb [FIR] reference shortener should not touch fake sources
e.g. implicit types can't be shortened.
On the other hand, requesting textRange means building ast
which might be slow, especially for compiled code
2023-04-06 15:44:02 +00:00
Sergej Jaskiewicz 4b6975c3d0 [fir2ir] Set origins for componentN and copy methods of data classes
This aligns the behavior with psi2ir.
2023-04-06 14:45:47 +00:00
Roman Efremov c718c77c43 [FE] Check visibilities of expected and actual property setters are compatible
^KT-30905 Fixed
2023-04-06 13:10:30 +00:00
Roman Efremov 9044dfe394 [FE] Revert prohibition of protected members inside actual final classes
^KT-28850 Fixed
2023-04-06 13:10:12 +00:00
Anton Lakotka 88488f4dc9 [Gradle, Test] Fix disable default publications test
Windows has different line endings, so it is not possible to
to seek multiline substrings.
2023-04-06 12:34:12 +00:00
Bart van Helvert f7ec5885f5 KT-56200 Don't leak user code in reference resolve exception 2023-04-06 12:04:13 +00:00
Anna Kozlova de965d39be [LL] always get fir from decompiled stubs 2023-04-06 11:50:39 +00:00
Alexander Shabalin 4cd1f2ff82 [K/N] Fix a race in MemorySharedRefs ^KT-56233 2023-04-06 11:40:47 +00:00
Alexander Shabalin 8a8aeed998 [K/N] Handle permanent objects in new MM MemorySharedRefs ^KT-56233
Do not create a foreign ref to the permanent objects. There's no need to
do it, and, moreover, this ref would have leaked.
2023-04-06 11:40:45 +00:00
Alexander Shabalin 1f1b26f2a5 [K/N] Split Weak and MemorySharedRefs between mm implementations ^KT-56233
* A separate RegularWeakReferenceImpl for the new mm. Name is chosen for
  better consistency with other WeakReferenceImpl implementations.
* KRefSharedHolder and BackRefFromAssociatedObject implementations are
  independent between the legacy and the new mm.
* Better support for WeakReference in runtime unit tests.
2023-04-06 11:40:45 +00:00
Alexander Shabalin 87da670319 [K/N] Add more tests on associated object handling ^KT-56233 2023-04-06 11:40:44 +00:00
Alexander Shabalin dbe14a0a90 [K/N] Make gc::SweepExtraObjects similar to gc::Sweep. ^KT-56233 2023-04-06 11:40:44 +00:00
Alexander Shabalin eec3987e85 [K/N] Fix RunFinalizerHooks ^KT-56233 2023-04-06 11:40:43 +00:00
Alexander Shabalin aad6d2c8f8 [K/N] Add kotlin::ManuallyScoped<T> ^KT-56233
kotlin::ManuallyScoped<T> is a wrapper over T that pins T in place
and has a trivial constructor and destructor. Creation and destruction
of T must be carried out manually by construct and destroy methods.
2023-04-06 11:40:43 +00:00
Alexander Shabalin 6a0e6b11bd [K/N] Add kotlin::RWSpinLock ^KT-56233
Trivially constructible and destructible std::shared_mutex
implementation with additional guarantee that try_* methods fail only if
the mutex is locked.
2023-04-06 11:40:42 +00:00
Alexander Shabalin 9e5a2efb03 [K/N] Add kotlin::raw_ptr<T> helper class ^KT-56233
kotlin::raw_ptr<T> is exactly T* but with the default constructor
setting value to nullptr and with destructive move.
2023-04-06 11:40:42 +00:00
Sebastian Sellmair 4bc1271f55 [Gradle] AbstractCInteropCommonizerTask: Do not use ';' character in fileName
The ';' will later be used as path separator. Therefore,
using the ';' as joiner for multiple cinterop commonizer groups
will confuse the CLI argument parser inside the Commonizer

^KT-57796 Verification Pending
2023-04-06 11:34:07 +00:00
Sebastian Sellmair 59d78b4d96 [Gradle] Create commonize-kt-57796-twoCInteropCommonizerGroups to cover KT-57796 2023-04-06 11:34:07 +00:00
Zalim Bashorov 1e6626338d [CODEOWNERS] Changes in wasm output size tests must be shown to Zalim.Bashorov 2023-04-06 10:14:06 +00:00
Dmitrii Gridin 03eab387c0 [FIR] FirRenderer: render annotation resolve phase as well
^KT-56543
2023-04-06 08:09:41 +00:00
Kirill Rakhman 210e8750f4 [FIR] Deserialize nested typealias
#KT-57689 Fixed
2023-04-06 08:03:12 +00:00
Kirill Rakhman f9540d8f69 [JS] Remove non-functional IGNORE_FIR directive in js box tests 2023-04-06 08:03:12 +00:00
Zalim Bashorov 155eb9b77a [Wasm, stdlib] extract Any::identityHashCode to workaround the bug in FunctionDescriptorFactory
A fix is on its way -- KT-MR-9426.
2023-04-05 20:50:53 +02:00
Zalim Bashorov 46459dfa60 [Wasm] Minor: update expected size after rebase 2023-04-05 20:50:52 +02:00
Zalim Bashorov 2e4a09f841 [Wasm] Replace takeIf with ifEmpty in TeamcityAdapter 2023-04-05 20:50:52 +02:00
Zalim Bashorov 9760e3ee1e [Wasm] Introduce check and error specialized for String to reduce output size 2023-04-05 20:50:52 +02:00
Zalim Bashorov 295acdf2af [Wasm] Rewrite lazy initialization without by lazy and lateinit to reduce overhead 2023-04-05 20:50:52 +02:00
Zalim Bashorov 1a8a4fa65d [Wasm] Don't use by lazy inside Throwable 2023-04-05 20:50:52 +02:00
Zalim Bashorov 67357fa5d4 [Wasm] Replace heavyweight stackTraceToString with "pure" JS stack 2023-04-05 20:50:52 +02:00
Zalim Bashorov 14af47bbd9 [Wasm] Introduce utilities to get package and name of class directly from metadata and use it in some places 2023-04-05 20:50:52 +02:00
Zalim Bashorov f206b0b72d [Wasm] TeamcityAdapter: rewrite lazy property initialization using lateinit 2023-04-05 20:50:52 +02:00
Zalim Bashorov a9b553f16e [Wasm] Don't use by lazy to keep some JS values used by adapters 2023-04-05 20:50:52 +02:00
Zalim Bashorov 494403c4bb [Wasm] Don't use by lazy inside TeamcityAdapter 2023-04-05 20:50:52 +02:00
Zalim Bashorov 2ef47901d0 [Wasm] Introducing private identityHashCode shared between Any's hashCode and toString
It splits the dependency of toString from hashCode that prevents keeping hashCode when toString is used.
2023-04-05 20:50:51 +02:00
Zalim Bashorov 6e3eef7a88 [Wasm] add simple tests to track the size of wasm and mjs files 2023-04-05 20:50:51 +02:00
Zalim Bashorov 1697a28bf0 [Wasm] introduce a directive to check output size in some wasm tests
Syntax:
// WASM_DCE_EXPECTED_OUTPUT_SIZE: <file extension> <expected size in bytes>

Example:
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 10_000
2023-04-05 20:46:13 +02:00
deotime 7aaba3b78a [KT-57607] Fix performance of ArrayList.addAll methods in JS stdlib (#5116)
* Fix performance of ArrayList.addAll methods in JS stdlib: extend the backing array and copy elements manually
* Update expected reachable nodes after DCE in test data

---------

Co-authored-by: Ilya Gorbunov <ilya.gorbunov@jetbrains.com>
2023-04-05 20:18:11 +02:00
Anton Lakotka 11b7fe2c4a [Gradle] Add possibility to disable default multiplatform publications
Additionally, skip pom rewriting mechanism in case
if default publications were disabled to prevent unexpected poms.
2023-04-05 17:58:02 +00:00
Nikolay Lunyak 03e2152957 [FIR JS] Support 2 JS diagnostics
The change in `FirDiagnosticsHandler` ensures
`DEBUG_INFO_DYNAMIC` is still reported in
`FirPsiJsOldFrontendDiagnosticsTestGenerated.testConventions`.

Support `SPREAD_OPERATOR_IN_DYNAMIC_CALL` and
`WRONG_OPERATION_WITH_DYNAMIC`
2023-04-05 16:51:51 +00:00
Nikolay Lunyak 57568770b4 [FIR] Remove redundant imports 2023-04-05 16:51:50 +00:00
Nikolay Lunyak 3b0a923210 [FIR] KT-57665: Make dynamic members' parameters dynamic
Parameter types are not only used "to accept" some data,
but they also are used as inputs for inference
(expected types)

^KT-57665 Fixed
2023-04-05 16:51:50 +00:00
Nikolay Lunyak 18f80b1ab5 [FIR] KT-57665: Ensure the current K2 behavior differs from K1 2023-04-05 16:51:50 +00:00
Dmitrii Gridin d1282b6195 [CODEOWNERS] change owners of generated diagnostics to core team 2023-04-05 16:47:34 +00:00
Pavel Punegov 57904f117f [K/N][test] Add missing opt-in for setUnhandledExceptionHook
This is follow-up to KT-MR-9340

Merge-request: KT-MR-9488
Merged-by: Pavel Punegov <Pavel.Punegov@jetbrains.com>
2023-04-05 16:04:56 +00:00
Sergej Jaskiewicz 3713d95bb1 [klib] Don't deserialize the list of sealed subclasses from klibs
tl;dr the current design of klibs does not allow to properly deserialize
the list of sealed subclasses in a sound way. It is possible that
a subclass of a sealed class is declared in a different file, AND is
private in that file.

A more detailed explanation:

Right now we don't serialize file signatures at all.
However, a private declaration's signature must necessarily include
the file signature.

How do we serialize a private declaration's signature into a klib
and deserialize it later?

**Serialization** is simple: we just serialize the file signature as
an empty protobuf message.

When we are **deserializing** a private declaration, we look at the file
that is being deserialized right now, and construct the file signature
based on that.

This logic, however, doesn't always work. An example is KT-54028.

Basically, if we have a sealed interface with a private implementor
declared in a different file, this breaks:

1. We are deserializing the sealed interface. The deserializer knows
that we are now in the file in which the sealed interface is declared.
2. As part of deserializing the interface, we deserialize its sealed
subclasses.
3. Naturally, we come to deserializing the private implementor that is
declared in another file, but the deserializer still thinks that we are
in the file in which the interface is declared. A wrong signature is
created, which leads to linkage failure.

We *could* fix this by properly serializing the file signature,
i.e. instead of an empty protobuf message we could write the file path
and its package to the klib. However, there a problems with this
approach:

- The current design of signatures allows a situation where two
different files can have the same relative path
(for example, with the help of the `-Xklib-relative-path-base` compiler
flag) *and* the same package, which would introduce ambiguity during
linkage.
- Most importantly, this appoach won't work well with incremental
compilation of klibs. Currently we rely on the assumption that all
cross-file references are handled with public signatures, and private
signatures are only used inside a single file. This allows to move
declarations across files without recompiling it's use sites.

It has been decided to apply the following hacky solution: we just don't
deserialize the list of sealed subclasses from klibs.
The list of sealed subclasses is not used in lowerings, so it should be
safe.

#KT-54028 Fixed
2023-04-05 15:51:54 +00:00
Sergej Jaskiewicz 2f99ac1cc0 [test] Fix handling files with the same names in tests 2023-04-05 15:51:54 +00:00