tree 6c96c0f0253458a8200909cf30b774d1a5b47fdc
parent 401efb0c97c7513e577d925691fea6ea192faf40
parent 0ae54149199472ab7a918cabd0183932e7c5b9f8
author Marge Bot <marge@benkard.de> 1683778416 +0000
committer Marge Bot <marge@benkard.de> 1683778416 +0000

Update dependency org.jetbrains.kotlin:kotlin-annotations-jvm to v1.8.21 (mulk/mulkcms2!28)

This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [org.jetbrains.kotlin:kotlin-annotations-jvm](https://kotlinlang.org/) ([source](https://github.com/JetBrains/kotlin)) | provided | patch | `1.8.20` -> `1.8.21` |

---

### Release Notes

<details>
<summary>JetBrains/kotlin</summary>

### [`v1.8.21`](https://github.com/JetBrains/kotlin/blob/HEAD/ChangeLog.md#&#8203;1821)

[Compare Source](https://github.com/JetBrains/kotlin/compare/v1.8.20...v1.8.21)

##### Compiler

-   [`KT-57848`](https://youtrack.jetbrains.com/issue/KT-57848) Native: compilation of dynamic/static library fails with Xcode 14.3
-   [`KT-57875`](https://youtrack.jetbrains.com/issue/KT-57875) Native compilation failure: Suspend functions should be lowered out at this point, but FUN LOCAL_FUNCTION_FOR_LAMBDA
-   [`KT-57946`](https://youtrack.jetbrains.com/issue/KT-57946) KAPT: "RuntimeException: No type for expression" with delegate

##### JavaScript

-   [`KT-57356`](https://youtrack.jetbrains.com/issue/KT-57356) KJS: StackOverflowException on [@&#8203;JsExport](https://github.com/JsExport) with type parameters referring to one another

##### Tools. Compiler plugins. Serialization

-   [`KT-58067`](https://youtrack.jetbrains.com/issue/KT-58067) Serialization: NullPointerException caused by [@&#8203;Contextual](https://github.com/Contextual) property with type with generic
-   [`KT-57730`](https://youtrack.jetbrains.com/issue/KT-57730) Serialization: "IllegalStateException: Serializer for element of type <root>.Foo has not been found" caused by serialization of Java type

##### Tools. Gradle. JS

-   [`KT-57766`](https://youtrack.jetbrains.com/issue/KT-57766) KJS / Gradle "Module not found: Error: Can't resolve 'kotlin-kotlin-stdlib-js-ir'" when using "useEsModules"

##### Tools. Kapt

-   [`KT-58027`](https://youtrack.jetbrains.com/issue/KT-58027) Kotlin 1.8.20 kapt issue "null: KtCallExpression: build()"

##### Tools. Maven

-   [`KT-58048`](https://youtrack.jetbrains.com/issue/KT-58048) Maven: "Too many source module declarations found" after upgrading to 1.8.20
-   [`KT-58101`](https://youtrack.jetbrains.com/issue/KT-58101) 'Unable to access class' in kotlin-maven-plugin after updating to Kotlin 1.8.20

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->