Commit Graph

109689 Commits

Author SHA1 Message Date
Nikolay Lunyak cd3202ddd4 [FIR] Map platform types to Kotlin for equality checks
During the DM it was decided to support
such comparisons, if I remember correctly.

^KT-62646
2024-03-08 15:37:44 +00:00
Nikolay Lunyak 6607c8a056 [FIR] Allow Int? === null
It was decided to allow this comparison
duting the last DM.

^KT-62646
2024-03-08 15:37:44 +00:00
Nikolay Lunyak 4abfb2534a [FIR] Add the Int? === null test example
^KT-62646
2024-03-08 15:37:44 +00:00
Nikolay Lunyak a19994b8b6 [FIR] Rename canHaveSubtypes() and lowerThanBound() in K2
`lowerThanBound()` was renamed to:

- draw attention to its corner cases
- make its single usage less cryptic

We may want to reserve the pretty name for
a function that, for example, returns `true`
if `argument` suits all the bounds.

Similarly, `canHaveSubtypes()`
does some questionable logic in case of
`INVARIANTxINVARIANT`: some hypothetical
`Inv<Foo>` doesn't have subtypes so
checking "Foo has subtypes strictly above
Nothing || Foo has supertypes strictly below
the parameter bounds" doesn't seem correct.
`Foo` may have some, but `Inv<them>` are
not related to `Inv<Foo>`.
2024-03-08 15:37:44 +00:00
Nikolay Lunyak bb812add14 [FIR] Don't miss modality of anonymous objects in canHaveSubtypes()
They are not `FirRegularClassSymbol`, but are
final. `FirClassSymbol` is enough, because
`toSymbol()` returns `FirClassifierSymbol`, and:

- type parameters are always expected to have
  subtypes
- typealiases have been expanded in the
  previous line
2024-03-08 15:37:44 +00:00
Nikolay Lunyak 226d4df277 [FIR] Forbid erroneous ===-checks
It was decided to forbid such comparisons,
as we know how `===` works. Also, added some more
test cases, just for comparison.

Reusing the proper `canHaveSubtypes()`
from `TypeUtils` prevents a breaking change
in:

- `comparingTripleWithPair.kt`
- `comparisonOfGenericInterfaceWithGenericClass.kt`

But it does lead to warnings
(instead of errors) in
`incompatibleEnumEntryClasses.kt`, which is an
unrelated mistake that will be fixed in the next
commit.

The refactoring in `canHaveSubtypes()` is purely
cosmetic - otherwise reading these conditions is hard
(and they don't fit my screen vertically).

^KT-62646
^KT-65541
^KT-57779
2024-03-08 15:37:44 +00:00
Brian Norman 6bf987e772 [AllOpen] Do not open members of non-class type classes
The logic of the AllOpen compiler plugin for opening classes and opening
declarations of classes does not match. This leads to declarations being
open when the containing class is not open. There is a warning reported,
for exactly this situation.

However, creating meta-annotations of AllOpen annotation is quite common
in certain ecosystems. In particular, Spring. This can lead to a warning
if the meta-annotation has properties.

Align the class kind check for members, so they are not opened if the
containing class cannot be opened.

^KT-63507 Fixed
2024-03-08 14:55:39 +00:00
Brian Norman bdaacb9427 [AllOpen] Test case to recreate open annotation member warning
The AllOpen compiler plugin opens all declarations of the annotated
class, regardless of class type. However, it only opens classes (not
interfaces, objects, enums, etc). This leads to a warning where members
of an annotation are open when annotated. Spring has many such
annotations, as it is common to create meta-annotations from the core
set of AllOpen supported annotations.

^KT-63507
2024-03-08 14:55:39 +00:00
Anton Lakotka 753e365c9e [Gradle, WASM] Move stability warning to Diagnostics Infra
And report it only once per build, so it doesn't spam users with
multiple projects in the logs.

^KT-66429 Verification Pending
2024-03-08 10:58:12 +00:00
Andrey Yastrebov 08f6e21f5d KT-66225 Add NativeBinary baseName test 2024-03-08 10:46:40 +00:00
Andrey Yastrebov bec832d39f KT-66225 Do not rewrite baseNameProvider in NativeBinary 2024-03-08 10:46:40 +00:00
Ivan Kochurkin ea44d4defd [FIR2IR] Remove non-existent accessors from property references on Java fields
Rename `MissingFieldInJavaClass` to `FieldsFromJavaClass` to correspond its content

^KT-65722 Fixed

Merge-request: KT-MR-14837
2024-03-08 10:10:05 +00:00
Ivan Kochurkin 2d4f4b9bb5 [FIR] Disallow operators not on functions
Introduce `NOT_FUNCTION_AS_OPERATOR` and use it instead of `PROPERTY_AS_OPERATOR`

^KT-65881 Fixed

Merge-request: KT-MR-14547
2024-03-08 10:07:23 +00:00
Alexander Udalov df9d59851d IR: do not use SymbolRemapper in FakeOverrideCopier
It was only used to keep track of mappings from old type/value
parameters to new. We can do it manually instead of inheriting from
DeepCopySymbolRemapper, because the latter does more work than needed,
namely it creates 16 hash maps, and traverses the IR tree looking for
any other declarations.

 #KT-66281
2024-03-07 20:04:38 +00:00
Alexander Udalov 79a224cc0f IR: remove patchDeclarationParents in FakeOverrideCopier
#KT-66281
2024-03-07 20:04:38 +00:00
Alexander Udalov 41a8b02202 IR: do not use DeepCopyIrTreeWithSymbols in FakeOverrideCopier
#KT-66281
2024-03-07 20:04:38 +00:00
Kirill Rakhman 09a19d7dbe [FIR] Support flexible and DNN types in upper bound violated extra message
#KT-66379 Fixed
2024-03-07 16:40:22 +00:00
Brian Norman 926ae2abb8 [PowerAssert] Add Gradle build tools integration tests for Power-Assert
The integration test project was copied from the sample project in
github.com/bnorm/kotlin-power-assert. Original license information has
been preserved even though commit history has not been.

^KT-65951 Fixed
2024-03-07 16:31:18 +00:00
Brian Norman 024c825355 [PowerAssert] Update Power-Assert license information 2024-03-07 16:31:18 +00:00
Vyacheslav Gerasimov 0a60f2924f Build: Introduce limitTestTasksConcurrency build property
Is true by default. It can be used to disable the concurrency limit for
test tasks
2024-03-07 15:53:01 +00:00
Dmitriy Novozhilov 6740a596c7 [Frontend] Provide ProjectExtensionDescriptor for DiagnosticSuppressor
`DiagnosticSuppressor` didn't contain `ProjectExtensionDescriptor`, which
  prevented usages of this extension point with API provided by
  `CompilerPluginRegistrar`

See discussion in KT-60952
2024-03-07 15:33:07 +00:00
Nikolay Lunyak 7f12af9452 [FIR] Ensure KT-66161 is not reproducible in the compiler
^KT-66161


Merge-request: KT-MR-14730
Merged-by: Nikolay Lunyak <Nikolay.Lunyak@jetbrains.com>
2024-03-07 15:10:18 +00:00
Alexander Shabalin aee87468a6 [K/N][tests] Move stress tests into a separate project 2024-03-07 15:01:30 +00:00
Igor Yakovlev 60d425e2c7 [Wasm] Make specialisations for closured primitive values
Fixed KT-66065
2024-03-07 14:51:02 +00:00
Wojciech Litewka 4eba0075bb [IR] Autogenerate IrFileImpl
#KT-65773 In Progress
2024-03-07 14:32:31 +00:00
Wojciech Litewka 2ed0ffd123 [IR] Autogenerate IrExternalPackageFragmentImpl
#KT-65773 In Progress
2024-03-07 14:32:31 +00:00
Wojciech Litewka f92670024e [IR] Autogenerate IrErrorDeclarationImpl 2024-03-07 14:32:31 +00:00
Wojciech Litewka 2b26163030 [IR] Temporarily move to-be-autogenerated files under gen directory 2024-03-07 14:32:31 +00:00
Wojciech Litewka 46162395be [IR] Extract IrFileImpl secondary constructors to functions
#KT-65773 In Progress
2024-03-07 14:32:31 +00:00
Wojciech Litewka 943be239ee [IR] Simplify IrFileImpl and IrExternalPackageFragment
#KT-65773 In Progress
2024-03-07 14:32:31 +00:00
Wojciech Litewka 16ae7651a2 [IR] Simplify IrErrorDeclarationImpl for autogeneration
#KT-65773 In Progress
2024-03-07 14:32:31 +00:00
eugene.levenetc 0a7839a29a [ObjCExport] Fix primary constructor parameter annotation translation
KT-66401
2024-03-07 14:21:03 +00:00
Ilya Chernikov b318566ecf Scripting: temporarely disable compiler plugin test
related to #KT-66395
2024-03-07 13:13:30 +00:00
Dmitrii Gridin 8cc2208c00 [LL FIR] support lazy resolution tests for scripts with custom definition
^KT-66276
^KT-66232
2024-03-07 12:50:59 +00:00
Dmitrii Gridin d5cfea330b [LL FIR] support parameters resolution
Script parameters now can be resolved independently of the script.
But, as parameters are part of the script, their resolve will be called
before the script.

^KT-66276 Fixed
2024-03-07 12:50:59 +00:00
Dmitrii Gridin 150af66b55 [LL FIR] implement diagnostic tests on custom script definitions
it is impossible to declare test data with another output yet
as `myScriptFile.test.ll.kts` won't be treated as custom definition as
it requires `test.kts` extension.

^KT-66232 Fixed
^KT-66276
2024-03-07 12:50:59 +00:00
Dmitrii Gridin 204465132f [LL FIR] AbstractLLFirBlackBoxCodegenBasedTestBase: unify logic
^KT-66232
2024-03-07 12:50:59 +00:00
Dmitrii Gridin dd0d2168fc [LL FIR] rename AbstractCompilerBasedTestForFir to AbstractLowLevelCompilerBasedTest
^KT-66232
2024-03-07 12:50:59 +00:00
Dmitrii Gridin d6b3f6f352 [LL FIR] AbstractCompilerBasedTestForFir: convert receiver to parameter
to allow using super call from implementations

^KT-66232
2024-03-07 12:50:59 +00:00
Dmitriy Novozhilov 4b5eac7816 [Test] Add regression tests for issues which are fixed in K2
Related issues:
KT-10879, KT-18055, KT-20617, KT-23873
KT-25668, KT-31191, KT-33108, KT-41013
KT-51827, KT-53886, KT-56624, KT-58447
KT-58458, KT-58751, KT-58814, KT-60597
KT-62806, KT-63258, KT-63444, KT-65101
KT-65408, KT-65844, KT-66186

^KT-65926 Fixed
2024-03-07 12:49:47 +00:00
Dmitriy Novozhilov b875ae774e [FIR] Unwrap captured types in target type of SAM conversion
^KT-66256 Fixed
2024-03-07 12:41:05 +00:00
Yan Zhulanow 690f39b91c [Analysis API] Minor, refactor 'createDumbVirtualFile()'
Pass the file name explicitly, and refine the dumb 'VirtualFile'
implementation.
2024-03-07 12:14:19 +00:00
Jinseong Jeon de4cce8dc8 AA: add support VirtualFile inputs to source module
^KT-65571 fixed
2024-03-07 12:14:19 +00:00
Jinseong Jeon 520ae725d1 Add test about dependsOn dependency and stdlib-common 2024-03-07 12:14:19 +00:00
Jinseong Jeon 6c062b0cea Add test about resolution to klib from non/common platforms 2024-03-07 12:14:19 +00:00
Jinseong Jeon 7f33097634 Fix typo in test input file name 2024-03-07 12:14:19 +00:00
Vladimir Sukharev a9af52c288 [Tests] Add test for KT-44199
^KT-44199 Fixed
2024-03-07 11:36:49 +00:00
Vladimir Sukharev 1ad0872958 [Tests] Port FilePathsInKlibTest to K2 ^KT-64452
Used frontend changed for K2
It turned out test was compiling only one source file (a.kt). Test adjusted, so all three source files(a.kt, b/c.kt, c/d/e.kt) are now compiled into klib, so more usecases are tested
^KT-64452 Fixed

Merge-request: KT-MR-14700
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2024-03-07 10:49:07 +00:00
eugene.levenetc 16d53a0e34 [ObjCExport] Fix kdoc primary constructor
KT-66387
2024-03-07 10:32:36 +00:00
Mikhail Glukhikh c04a8fc3b8 K1/K2: add test cases for KT-53792 and KT-66369 2024-03-07 10:25:11 +00:00