Commit Graph

110102 Commits

Author SHA1 Message Date
Dmitriy Novozhilov f18aa5e70f [Test] Add regression test for KT-66638 2024-03-19 07:40:09 +00:00
Marco Pennekamp 9d2298b326 [AA] Resolve isSubClassOf from the context of a use-site session again
`isSubClassOf` was changed in an earlier commit to use the session of
`subClass` instead, but that approach comes with multiple problems:

- We need to resolve classes from the use-site to take actualization of
  `expect` types into account.
- If `superClass` is a builtin and we resolve supertypes from
  `subClass`'s session, we may get multiple instances of symbols for the
  same builtin from different sessions (i.e. one from a stdlib session
  via the use-site session and another from the fallback builtins
  provider for binary libraries if `subClass` is from a binary library).

^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp 53f2dfec41 [Kapt4] Update Kapt4 test data after AA Standalone fix for sealed inheritors
- The Standalone Analysis API now correctly calculates sealed inheritors
  in source modules. This causes Kapt4 to pick up on sealed subclasses
  in the `modifiers` test. The change is in line with the non-FIR test
  results in `modifiers.txt`.

^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp 32337c8255 [AA] Render types in sealed inheritors tests as fully expanded types
- This avoids discrepancies between Standalone and IDE mode for sealed
  inheritor tests with type aliases from libraries, because in
  Standalone mode, libraries are deserialized with fully expanded types,
  while in IDE mode, libraries are deserialized from stubs, where type
  aliases are currently not expanded.

^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp 2e00879fe1 [AA] Add sealed inheritors tests for inheritors with the wrong package
- Inheriting from a sealed class in the wrong package is illegal, so a
  library test makes no sense here, as the test infrastructure wouldn't
  be able to compile the library.

^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp ed62211e06 [AA] Add packages to sealed inheritors tests
^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp 4fa0f1316d [AA Standalone] Refactoring: Rename testKtFiles to sourceKtFiles 2024-03-18 21:14:36 +00:00
Marco Pennekamp a9d7b0c595 [AA Standalone] Consider type aliases in direct inheritors search
A type alias may still be inherited from. For example:

```
sealed class MyClass

typealias T = MyClass

class Inheritor : T() // `Inheritor` is a direct inheritor of `MyClass`.
```

The index is a simplified version of the IDE's
`KotlinTypeAliasByExpansionShortNameIndex`, but it should be sufficient
for virtually all cases.

^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp 54f2655b4d [AA] Add sealed inheritors tests for type aliased classes/interfaces
- The test data is partially incorrect, as type alias support needs to
  be added to `KotlinStandaloneDirectInheritorsProvider`.

^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp 5c8c3020c6 [AA] Add tests for getSealedInheritors
- Previously, the sealed inheritors provider was only tested indirectly
  through diagnostics tests on `when` expressions.

^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp 1374bc8e2d [LL] Implement a common LLSealedInheritorsProvider
- The new `LLSealedInheritorsProvider` is based on the previous
  sealed inheritors provider implementation in the IDE. It uses the
  new direct inheritors provider and the module dependents provider to
  implement the same functionality that was previously confined to the
  IDE. With this design we avoid duplication of complex logic such as
  the KMP handling in `searchInheritors`.
- The implementation is designed to work in the production Standalone
  mode and the aforementioned services have already been implemented for
  Standalone in prior commits. Now we can get rid of the problematic
  `SealedClassInheritorsProviderForTests` and tests should more closely
  match production behavior.
- In IDE mode tests, `LLSealedInheritorsProvider` is used with
  Standalone Analysis API provider implementations. This is in line with
  the rest of the test infrastructure, where Standalone AA providers are
  generally used, as IDE providers aren't available.
- `KotlinSealedInheritorsProvider` is made obsolete by the common sealed
  inheritors provider.

^KT-66013 fixed
^KT-64505 fixed
2024-03-18 21:14:36 +00:00
Marco Pennekamp 48229f7faa [AA Standalone] Implement getRefinementDependents
^KT-66013
2024-03-18 21:14:36 +00:00
Marco Pennekamp b2639a469b [AA Standalone] Implement KotlinDirectInheritorsProvider
- We are relying on static indexing to find candidates for sealed
  inheritors, hence the extension to the index.
- The direct usage of `KotlinStaticDeclarationProviderFactory` in
  `KotlinStandaloneDirectInheritorsProvider` is not pretty, but a proper
  design requires making the static index available as a service and
  moving "static" services to the Standalone API (from AA providers).

^KT-66013
2024-03-18 21:14:35 +00:00
Marco Pennekamp 9bed2e974b [AA] Add KotlinModuleDependentsProvider.getRefinementDependents
- When calculating sealed inheritors for expect classes, we need to
  expand the search scope to modules with a depends-on/refinement
  dependency on the module containing the expect class, as these modules
  may contain additional sealed inheritors. `getRefinementDependents`
  allows us to get these refinement dependents to build the proper
  search scope.

^KT-66013
2024-03-18 21:14:35 +00:00
Marco Pennekamp 31a65871f2 [AA] Add KotlinDirectInheritorsProvider
- Direct inheritors are needed to calculate sealed inheritors. The new
  `KotlinDirectInheritorsProvider` can be used to implement a common
  sealed inheritors provider in LL FIR.

^KT-66013
2024-03-18 21:14:35 +00:00
Mikhail Glukhikh 3fbb7bc920 K2: report MISSING_DEPENDENCY_CLASS in case of error type of expression
This commit is intended to get a more clear diagnostic in case when
the type checker creates an inconsistent error type due to some
classifier inaccessibility. Before this commit, we reported simply
ARGUMENT_TYPE_MISMATCH (see test). Now we report also
MISSING_DEPENDENCY_CLASS by analyzing an error type of a qualified
expression.

#KT-66356 Fixed
2024-03-18 18:11:14 +00:00
Mikhail Glukhikh 2d755aabe7 K1/K2: add test data for KT-66356 2024-03-18 18:11:14 +00:00
Egor Kulikov 36b89f5e84 [FIR] Fix resolve for java synthetic properties in KDoc
^KT-62880 fixed
2024-03-18 17:35:32 +00:00
Leonid Startsev 7c8c65d291 Call a specified function in intrinsic if polymorphic serializer is provided for interface.
This prioritizes module contents over default polymorphic serializer.

See https://github.com/Kotlin/kotlinx.serialization/issues/2060 and https://github.com/Kotlin/kotlinx.serialization/pull/2565
2024-03-18 17:21:16 +00:00
Igor Yakovlev c8f84a74b9 [Wasm] Fix invalid value passing through externalized FrameworkAdapter
Fixed #KT-66440
2024-03-18 17:12:04 +00:00
Stanislav Ruban 29efe8645c [FIR][checkers][JS] Expand type aliases to supertypes in FirJsInheritanceClassChecker
#KT-66673 Fixed
2024-03-18 15:57:59 +00:00
Stanislav Ruban 1f3d318cae [tests][FIR][checkers][JS] Add test data for KT-66673 2024-03-18 15:57:59 +00:00
Kirill Rakhman 672512d19d [FE] Skip CST computation if list of types has exactly one entry
Otherwise, we can get in a situation where the single item is flexible,
and we replace its attributes with the attribute of the lower bound,
which messes up `EnhancedTypeForWarningAttribute`.

#KT-65193 Fixed
2024-03-18 15:52:50 +00:00
Kirill Rakhman 19cc739118 [Tests] Reproduce #KT-65193 2024-03-18 15:52:50 +00:00
Dmitrii Krasnov ffef1630dd [Gradle] Added provisioned.ok after k/n bundle installation
Added provisioned.ok file to ensure
that Kotlin Native bundle has been successfully installed.

^KT-66309 Fixed
2024-03-18 13:35:41 +00:00
Bogdan Mukvich e72bac333f Update SPDX gradle plugin
* contains local license cache
* add more info to license parsing exception
https://github.com/Badya/spdx-gradle-plugin/commit/9802dbe05f9462c9e24f5a62af4678754d367648

KTI-1630
2024-03-18 12:56:50 +00:00
Wojciech Litewka 6af930fc0e Partially revert "[IR] Hide constructors of implementation classes behind factory functions"
To restore binary compatibility with a compiler plugin used in
one of user projects.

#KT-66636 Fixed
2024-03-18 12:17:52 +00:00
Alexander Udalov e007153ae6 Parcelize: remove testData for old JVM backend
Old JVM backend implementation was removed in 163a052f98 along with
tests, but .asm.txt files were not removed.
2024-03-18 12:06:36 +00:00
Sebastian Sellmair 426d71b088 [aa-klib-reader] Only resolve symbols from the associated library/sourceFile
Previously the addresses were resolved by only respecting
CallableId or ClassId. This however, could lead to
resolving symbols that were not defined in the klib which
initially provided the declaration address.

E.g. this commit adds a test in `GetSymbolsTest`, where
```
// A.kt
private fun foo() = 42

// B.kt
private fun foo() = 42
```

In this case the two source files (A.kt and B.kt) defined
two distinct addresses for `foo`. However: Resolving
any of those two addresses would resolve both functions (A&B), which
is not expected.

^KT-66271 Fixed
2024-03-18 10:13:57 +00:00
Sebastian Sellmair 6b98602afc [Analysis Api] Expose klibSourceFile via KtKlibSourceFileProviderMixIn
This `klibSourceFile` information is deserialized from klibs
to retain the information of the original SourceFile location
of a declaration.

^KT-66271 Fixed
2024-03-18 10:13:57 +00:00
Sebastian Sellmair 6d8a4a28af [FIR] Deserialize Klib KlibMetadataProtoBuf. classFile, functionFile & propertyFile
klibs provide information about the container source file
in the KlibMetadataProtoBuf extensions for functions,
properties and classes.

This information is deserialized and attached to the
`klibSourceFile` extension (stored in FirDeclarationDataRegistry)

^KT-66271 Fixed
2024-03-18 10:13:57 +00:00
Kirill Rakhman 85a1d67d19 [FIR] Fix giant type produced by CST
#KT-65704 Fixed
2024-03-18 08:41:26 +00:00
Kirill Rakhman 81c0ee471f [Tests] Reproduce #KT-65704 2024-03-18 08:41:26 +00:00
Ilya Goncharov 8b258426ee [Wasm]Log webpack result only in there was infrastructure logging before 2024-03-16 09:44:51 +00:00
Vladimir Sukharev 0ae7c66fc8 [Tests] Drop DCE tests
^KT-44602
2024-03-16 07:50:33 +00:00
Vladimir Sukharev e03af07a1c [Tests] Revive KlibEvolutionTests
Allows CI testing for KT-44602, KT-44604, KT-44598, KT-44599, KT-66342

^KT-44602
2024-03-16 07:50:33 +00:00
Dmitriy Dolovov a007551574 Revert "[K/N] add header_cache output type"
This reverts commit 84341a9e25.
2024-03-15 22:32:50 +01:00
Dmitriy Dolovov 722acc028a Revert "[K/N] add testing setup for header klibs and caches"
This reverts commit a89893a2c5.
2024-03-15 22:32:50 +01:00
Dmitriy Dolovov ce6021e11d Revert "[K/N] serialize field names to caches"
This reverts commit 1b521d564f.
2024-03-15 22:32:50 +01:00
Dmitriy Dolovov a78d498e36 Revert "[K/N] add flag to klib manifest for header klibs"
This reverts commit 59f0c0464b.
2024-03-15 22:32:50 +01:00
Dmitriy Dolovov de3ad3cd3a Revert "[K/N] deserialize inline functions for header klibs"
This reverts commit a481f35450.
2024-03-15 22:32:50 +01:00
Dmitriy Dolovov dc66a53611 Revert "[K/N] remove class field types from caches"
This reverts commit 1f1522b787.
2024-03-15 22:32:50 +01:00
Dmitriy Dolovov 0df9b4242c Revert "[K/N] do not save klib hash in header caches"
This reverts commit 612caf13cf.
2024-03-15 22:32:50 +01:00
Dmitriy Dolovov ef814fe76e Revert "[K/N] skip consistency check for header caches"
This reverts commit d845e7c3f6.
2024-03-15 22:32:50 +01:00
Dmitriy Dolovov 23ee7cedfa Revert "[K/N] skip lowerings for header caches"
This reverts commit cf2135aaa4.
2024-03-15 22:32:50 +01:00
Nataliya.Valtman 762927410a Use snapshot version for kotlin native when kotlin.native.enabled=true
#KT-64046: Fixed
2024-03-15 18:30:16 +00:00
Leonid Startsev 69ad68ca83 Make intrinsics more consistent with reflective serializer() lookup
Intrinsic should not look into use-site `@Serializable(with)` annotations.

#KT-64920 Fixed
2024-03-15 17:29:48 +00:00
Stanislav Ruban a781a08386 [tests] Fix KMP test data affected by 9d566465
Affected test data was in a correct state in the corresponding MR branch, but that state was invalidated by the appearance of 9d566465 in the master branch. Because the MR branch in question was created and checked via CI runs before 9d566465 was committed to master, the discrepancy couldn't be caught by MR quality gates.
2024-03-15 17:00:03 +00:00
Sergej Jaskiewicz bbb91d7871 [build] Update a comment in gradle.properties 2024-03-15 15:07:13 +00:00
Sergej Jaskiewicz 1476b89ea3 [build] Forward the JDK_21_0 environment variable to tests 2024-03-15 15:07:13 +00:00