Commit Graph

48067 Commits

Author SHA1 Message Date
Artem Kobzar 46dc478c03 [K/Wasm] Reduce debug information for the internal Kotlin functions 2024-03-12 17:37:03 +00:00
Nikolay Lunyak d3dfbec01a [FIR] Report warnings for inconsistent visibilities of accessors
K1 didn't report diagnostics for accessors
of intersection overrides, so this change
prevents a BC.

^KT-66046 Fixed
2024-03-12 16:35:05 +00:00
Nikolay Lunyak 7ecbaf7d1e [FIR] Calculate property setters visibilities for intersections properly
Basically, just calculate them the same
way it's done for other members.

`chooseIntersectionVisibilityForSymbolsOrNull`
is named like this to prevent a JVM clash.

^KT-66046 Fixed
2024-03-12 16:35:05 +00:00
Nikolay Lunyak b7926b68ab [FIR] Fix sources of intersection override properties's accessors
^KT-66046
2024-03-12 16:35:05 +00:00
Nikolay Lunyak daa6e03e3b [FIR] Reproduce KT-66046
^KT-66046
2024-03-12 16:35:05 +00:00
Mikhail Glukhikh 0b34d66b87 Revert "FIR: Report CAPTURED_VAL_INITIALIZATION if initialization is done"
This reverts commit 1c4023fda5.

#KT-64854 Submitted
#KT-59906 Submitted
2024-03-12 15:58:34 +00:00
Ilya Chernikov 0fe793943d K2, REPL: Display a warning that LV 1.9 is used for REPL in K2
#KT-64384 fixed
2024-03-12 15:57:00 +00:00
Mikhail Glukhikh d897bfbcad Fix tests after a semantically conflicting merge of KT-50008 and KT-65596 2024-03-12 14:54:10 +00:00
Brian Norman c6c0abae82 [FIR] Create test case to validate KT-56988 is working as expected
^KT-56988 Fixed
2024-03-12 14:48:39 +00:00
Igor Yakovlev b839e2680e [Wasm] Fix equality on Nothing type
Fixed #KT-66104
2024-03-12 14:36:45 +00:00
Igor Yakovlev 7c16528560 [Wasm] PL tests implementation for Wasm target
Fixed #KT-58088
2024-03-12 14:36:45 +00:00
Igor Yakovlev 6b66195afc [Wasm] Enable PL support for lowerings 2024-03-12 14:36:45 +00:00
Igor Yakovlev ec1ade1293 [Wasm] Allow virtual functions signature clash for PL support 2024-03-12 14:36:45 +00:00
Igor Yakovlev 8851ccc35d [Wasm] Allow incomplete implementations for PL 2024-03-12 14:36:45 +00:00
Igor Yakovlev 1e798a2527 [Wasm] Implement IrLinkageError end enable partial linker
KT-58088
2024-03-12 14:36:45 +00:00
Ilya Chernikov 4fafa4b6e9 K2 IC: add lookups of candidates on tower level processing
Allow recording lookup to symbols from supertypes, required at least
for CRI.

partially fixes #KTIJ-29026
2024-03-12 11:38:07 +00:00
Ilya Chernikov 39b05a0a1c K2 IC: fix classifiers lookups
in particular nested classifiers and companions.

#KTIJ-24833 fixed
#KTIJ-24830 fixed
#KT-55195 fixed
2024-03-12 11:38:07 +00:00
Ilya Chernikov a823bfd600 K2 IC: refactor and optimize lookup tracking
- encapsulate semantic more into helpers
- allow lazy scopes iteration
- simplify reporting code in tower resolver
- fix some inconsistencies and wrong lookups
- remove redundant lookup recordings
- remove lookup scopes for non-star imports

The commit is a refactoring and doesn't change the behaviour of
neither IC nor CRI. Changes in the lookups are mostly due to the
previous obviously wrong lookups (see changed test data).
2024-03-12 11:38:07 +00:00
Ilya Chernikov fe4e0e9c2e K2 IC: fix class members lookups recording
in particular - statics

 #KTIJ-24830 fixed
2024-03-12 11:38:06 +00:00
Ilya Chernikov 1989e8f094 IC tests: add infrastructure for K1/K2 lookups comparison
Adapt lookup tests to allow running K1 and K2 on the same testdata
and compare the lookups recorded.
2024-03-12 11:38:06 +00:00
Ilya Chernikov 684d0b8690 K2 IC: filter out builtins lookups
Do not record lookups to kotlin builtins, since it is considered
useless.

Related to #KT-66417
2024-03-12 11:38:06 +00:00
Ilya Chernikov 5b62558798 K2 IC: fix member lookup recording
The previous code recorded only class name, instead of fqname,
as a scope of lookup.

#KT-65943 fixed
#KTIJ-24828 fixed
related to #KT-56197
2024-03-12 11:38:06 +00:00
Kirill Rakhman f38dc3999c [FIR] Reformat SignatureEnhancement 2024-03-12 10:29:45 +00:00
Kirill Rakhman 0889770ccd [FIR] Fix scope of Java classes that inherit multiple properties with the same name
Use the receiver and context receiver types in addition to the property
name as cache keys for the synthetic property generation.
Also, fix logic that searches for accessor overrides by comparing
receiver and context receiver types.
Finally, let synthetic properties delegate their receiverParameter and
contextReceivers to their accessors.

#KT-65464 Fixed
#KT-66195
2024-03-12 10:29:45 +00:00
Kirill Rakhman 89ecb92551 [FIR] Support deferred return type computation for synthetic properties
#KT-66048 Fixed
2024-03-12 10:29:45 +00:00
Kirill Rakhman 973e337bf5 [FIR] Enhance getter overrides based on overridden properties
The following tests are failing with exceptions and will be fixed in the
following commits

j+k/testKjkPropertyAndExtensionProperty.kt
j+k/testKjkImplicitReturnType.kt

#KT-62118 Fixed
2024-03-12 10:29:45 +00:00
Kirill Rakhman 885ba11d97 [FIR] Defer computation of enhanced return type when overridden has implicit return type
#KT-66048
2024-03-12 10:29:45 +00:00
Kirill Rakhman 888cac6fc0 [Tests] Reproduce #KT-66048 2024-03-12 10:29:45 +00:00
Kirill Rakhman 29a9d3cdd9 [FIR] Fix copy paste error in receiver enhancement 2024-03-12 10:29:44 +00:00
Kirill Rakhman 8a90032e93 [FIR] Refactor deferred computation of callable copy return types
Rename some classes for clarity and move the implementations to the use
sites.
2024-03-12 10:29:43 +00:00
Vladimir Sukharev aa1cce78c3 [FIR] Incorrect warnings about inline function impact
^KT-65959 Fixed
2024-03-12 10:26:23 +00:00
Denis.Zharkov 232c3aeadc K2: Fix PCLA breaking change when using a bare type on a type variable
See the change at docs/fir/pcla.md and the kdoc
at `getAndSemiFixCurrentResultIfTypeVariable` for clarification

^KT-64840 Fixed
2024-03-12 10:22:11 +00:00
Denis.Zharkov 141be17b4b K2: Add some more tests showing the state for KT-64840
lambdaParameterForBareTypeEarlyFixationAffectsBehavior.kt
should show in the future commits how early variable fixation
necessary for bare type information might affect inference results

^KT-64840 Related
2024-03-12 10:22:11 +00:00
Ivan Kylchik e1180adfbd [Native] Always cast expression to the expected type after inline
Right now, during the process of inlining, the compiler erases types.
Because of that, we can end up with some random type
(for example, `Any`) where the concrete type was
expected (for example, `Int`). Compiler must insert a cast in the
required places.

#KT-66017 Fixed
2024-03-12 08:19:50 +00:00
Dmitriy Novozhilov 555cf56d6d [FIR2IR] Don't manually create IR for IntrinsicConstEvaluation if not needed
There is no need to create IR class for `@IntrinsicConstEvaluation` manually
  if it is present in sources

^KT-65415 Fixed
2024-03-12 06:46:09 +00:00
Dmitriy Novozhilov 7a383373b0 [Test] Reproduce KT-65415 and KT-66432 2024-03-12 06:46:09 +00:00
Dmitriy Novozhilov d352cc9d96 [Frontend] Make DiagnosticSuppressor a project-level extension
Originally it was an application-level component, which caused non-trivial
  logic and cognitive load to carefully handle those extensions to avoid
  memory leaks.

6740a596 introduced a way to easily register `DiagnosticSuppressor` to
  project, and this commit continues this work, making it a proper
  project-level extension

A lot of changes caused by the fact, that this extension is needed to be
  obtained from `BindingContext` (see `BindingContextSuppressCache` and
  its usages), so almost all changes are introducing `Project` to
  `BindingContext`

^KT-66449 Fixed
2024-03-12 06:43:58 +00:00
Dmitriy Novozhilov a552238874 [Plugin API] Provide a way to register disposable callbacks in CompilerPluginRegistrar
^KT-59555 Fixed
2024-03-12 06:41:47 +00:00
Ilmir Usmanov 1c4023fda5 FIR: Report CAPTURED_VAL_INITIALIZATION if initialization is done
outside of constructor.

In other words, when EXACTLY_ONCE lambda initializes non-static final
field of a class, the lambda has to be inlined, otherwise, backend
generated separate function of separate class for the lambda,
which lead to exception at runtime.

 #KT-64854 Fixed
 #KT-59906 Fixed
2024-03-12 00:42:07 +00:00
Vladimir Dolzhenko 8b7ca9527a Inject checkCanceled calls to improve responsiveness
#KTIJ-28688


Co-authored-by: Dmitrii Gridin <dmitrii.gridin@jetbrains.com>

Merge-request: KT-MR-14866
Merged-by: Vladimir Dolzhenko <Vladimir.Dolzhenko@jetbrains.com>
2024-03-11 20:47:30 +00:00
Igor Yakovlev 84a5a9ff53 Revert "[Wasm] Implement IrLinkageError end enable partial linker"
This reverts commit c0f387dbd1.
2024-03-11 19:27:12 +00:00
Ilya Gorbunov ae3e770246 Update line numbers from stdlib in inlining and stepping tests 2024-03-11 18:12:27 +00:00
Ilya Gorbunov fc13ae7b4d [stdlib] Specify AT_MOST_ONCE contract for default-value-like functional parameters KT-54879 2024-03-11 18:12:27 +00:00
Nikita Bobko 989ec97bb0 [FIR] Make FirNotImplementedOverrideChecker to run only for non-expect classes or in metadata compilation
^KT-64187 Fixed
Review: https://jetbrains.team/p/kt/reviews/14807

I also checked that IDE sets metadataCompilation to `true` (Actually, it
looks like IDE performs analysis two times with the flag having
different values, but whatever, maybe it's even better this way)
2024-03-11 18:07:52 +00:00
Nikita Bobko 9d566465e6 [test] Run checkers in metadata-like style to see what diagnostics metadata compilation omits
Review: https://jetbrains.team/p/kt/reviews/14807

Technically, *.ll.kt should have been covering that. But I see that
there slight differences
2024-03-11 18:07:52 +00:00
Nikita Bobko ab069cb7f4 [test] Use correct FirOutputPartForDependsOnModule for running checkers that run in common session
Review: https://jetbrains.team/p/kt/reviews/14807

Motivation: no motivation, I was just passing by and noticed this bug.

It looks like this commit doesn't affect any tests
2024-03-11 18:07:51 +00:00
Mikhail Glukhikh c4bcdc42c1 K2: don't count use-sites of Java type parameter with nullable bounds as not null 2024-03-11 18:05:04 +00:00
Mikhail Glukhikh d353fd400d K1/K2: add a test for KT-50008 2024-03-11 18:05:04 +00:00
Alexander Udalov 2f056fe155 JVM: remove StubClassBuilder and its usage
After legacy light classes were removed, the only remaining usage was in
KotlinLightClassBuilderFactory where we ran JVM backend in the
LIGHT_CLASSES mode, and that was only used from diagnostic tests to
report JVM backend diagnostics.

We don't actually need to build stubs here, so we can just use ASM's
class writer, which means that StubClassBuilder and all its dependencies
can be removed.
2024-03-11 18:03:49 +00:00
Sonya Valchuk e5ad035039 JVM: do not write trivial SMAPs to any classes
Even ones inside inline functions. This was a backwards compatibility
hack for Kotlin 1.4, where the inliner would crash if it attempted to
regenerate an anonymous object with no SMAP; that has been fixed in 1.5,
and ever since then trivial SMAPs could be inferred from line number
markers in methods.

There are three kinds of changes to tests in this commit:

  * Some SMAPs are gone entirely - self-explanatory.

  * Some SMAPs have narrower line ranges - that's because the old SMAP
    had the range for the entire file, while the new one only maps up to
    the last line number used in the class. There should be no
    difference in behavior.

  * Some "source file name" markers are removed in continuation objects
    - continuations don't have any line numbers, so there's no debugging
    information anyway. The actual source information is in the
    containing class.
2024-03-11 17:25:50 +00:00