Update Kotlin
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| dev.zacsweers.metro | 0.7.2 -> 0.7.5 |
||
| dev.zacsweers.metro:runtime | 0.7.2 -> 0.7.5 |
||
| com.google.devtools.ksp (source) | 2.3.0 -> 2.3.2 |
||
| com.google.devtools.ksp:symbol-processing (source) | 2.3.0 -> 2.3.2 |
||
| com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin (source) | 2.3.0 -> 2.3.2 |
||
| com.google.devtools.ksp:symbol-processing-api (source) | 2.3.0 -> 2.3.2 |
||
| org.jetbrains.kotlin.plugin.compose (source) | 2.2.21 -> 2.3.0-Beta2 |
||
| org.jetbrains.kotlin:kotlin-test-junit (source) | 2.2.21 -> 2.3.0-Beta2 |
||
| org.jetbrains.kotlin:kotlin-test (source) | 2.2.21 -> 2.3.0-Beta2 |
||
| org.jetbrains.kotlin:compose-compiler-gradle-plugin (source) | 2.2.21 -> 2.3.0-Beta2 |
Release Notes
ZacSweers/metro (dev.zacsweers.metro)
v0.7.5
2025-11-07
- New: Add Guice interop. This is largely focused on Guice's
Providertype, annotations, and existing interop with jakarta.inject annotations.metro { includeGuice() } - Enhancement: Improve IR caching layer with supertype caching.
- Enhancement: Add diagnostic to check for
Arrayproperties in map key annotations that unwrap values. - Enhancement: Add diagnostic to check multibinds map keys are valid (primitives, strings,
KClass, annotation classes, not arrays). - Enhancement: Improve multibinding star project checks.
- Enhancement: Nudge
@Bindsfunctions towardprivatevisibility like@Providesfunctions now that it's fully supported. - Fix: Don't treat
las an illegal char in name allocating. This was supposed to be;. - Fix: Ensure all reserved properties by child graphs get properties in parents. Previously, there were some cases for bindings that were unused in the parent and otherwise did not meet the criteria for having a backing property would get missed in binding property collection.
- Fix: Fix compiler crash when injecting a target type with star generics.
- Fix: Fix
ClassCastExceptionwhen accessing aProvidercontributed from adagger.Module. - Split
javaxandjakartainterop APIs into separate artifacts from dagger for reuse.
Special thanks to @jonamireh for contributing to this release!
v0.7.4
2025-11-04
- Fix: Support more than 32 parameters to Graph factories.
- Fix: Support more than 32 accessors in Graphs.
- Fix: Transform
INSTANCEaccess types forGraphDependencybindings. - Fix: Fix ordering of setter member injection parameters when reading injectors across modules.
- [change] When generating reports, create directory structures matching packages rather than generating all to one top-level dir.
Special thanks to @jonamireh, @kevinguitar, and @JoelWilcox for contributing to this release!
v0.7.3
2025-11-02
- New: Support interop with Dagger/Anvil-generated member injector classes.
- Enhancement: Skip reading members when loading externally compiled member injector classes. Parameters are now computed from their static
inject*functions. - Enhancement: Improve logic for avoiding reserved keywords or illegal character for names in more platforms.
- Enhancement: Inline empty multibinding expressions in code gen.
- Enhancement: Better detect static-ish functions in generated Kotlin factories from Dagger/Anvil interop.
- Enhancement: Cache members injector binding lookups.
- Enhancement: Don't double-lookup members injectors already computed from roots.
- Enhancement: Support Kotlin
2.3.0-Beta2. - Enhancement: Test against Kotlin
2.2.21. - Enhancement: Improve generated graph impl declaration checks.
- Fix: Work around "LookupSymbols are not yet converted to ProgramSymbols" issue (KT-80412) in incremental compilation by avoiding using
$$prefixes in generated class names. - Fix: Fix interop support for two layers of
Providerinterop in map multibindings (i.e.Provider<Map<Key, Provider<Value>>). - Deprecate
includeAnvil()Gradle DSL function in favor of more specificincludeAnvilForDagger()andincludeAnvilForKotlinInject()functions. - Move interop annotations controls to compiler. For Gradle users, there's mostly no change (other than the above). For users of any other build system, this makes it a bit easier to reuse the interop annotations logic.
- [docs] Add compatibility docs: https://zacsweers.github.io/metro/latest/compatibility/. Metro supports a moving range of Kotlin versions, this page captures the tested versions for each release.
- [docs] Add stability docs: https://zacsweers.github.io/metro/latest/stability/
Special thanks to @jonamireh, @hossain-khan, and @l2hyunwoo for contributing to this release!
google/ksp (com.google.devtools.ksp)
v2.3.2
What's Changed
Note: This release is a hotfix for a regression introduced in 2.3.1
- Fixed an issue where KSP incorrectly processed specific nullable annotations from Java interfaces, leading to incorrect nullability in the generated Kotlin code #2696
- Fixed a regression introduced in #2656 that caused runtime failures for projects using AGP 8.8.0 and older due to an incompatible, version-specific type check. #2694
Contributors
Thanks to everyone who reported bugs and participated in discussions!
Full Changelog: https://github.com/google/ksp/compare/2.3.1...2.3.2
v2.3.1
What's Changed
- Added support for AGP 9.0 and built-in Kotlin #2674
- Fixed a bug in getJvmCheckedException that incorrectly handled nested classes. #2584
- Removed incorrect caching for KSValueArgumentLiteImpl that wrongly merged arguments with different parents, origins, or locations #2677
Contributors
Thanks to everyone who reported bugs and participated in discussions! Full Changelog: https://github.com/google/ksp/compare/2.3.0...2.3.1
JetBrains/kotlin (org.jetbrains.kotlin.plugin.compose)
v2.3.0-Beta2: Kotlin 2.3.0-Beta2
Changelog
Analysis API
KT-80082K2. False positive "Cannot resolve method" for self-bounded generic with wildcard return type in Java interop
Analysis API. Code Compilation
KT-70860K2 IDE / Kotlin Debugger: CCE “java.lang.String cannot be cast to java.lang.Void” on evaluating not-null variable on the line with assigning null to that var
Analysis API. FIR
KT-81378Expected expression 'FirFunctionCallImpl' to be resolved caused bysuspend {}KT-80473Add events for tracking LL activities
Analysis API. Providers and Caches
KT-81476Analysis API:AlreadyDisposedExceptionfrom low-memory cache cleanupKT-80911Analysis API: Execute session invalidation in a non-cancelable sectionKT-81242Analysis API: Add UUID/lifetime properties to LL FIR session structure loggingKT-80622Analysis API: Visualise LL FIR session structure & weightKT-80904Analysis API: "Invalid dangling file module" exception during session invalidationKT-78882K2 AA: Calling containingSymbol on getProgressionLastElement causes exception
Analysis API. Standalone
KT-81108AA: java.lang.ClassCastException: class org.jetbrains.kotlin.fir.FirBinaryDependenciesModuleData cannot be cast to class org.jetbrains.kotlin.analysis.low.level.api.fir.projectStructure.LLFirModuleData
Analysis API. Stubs and Decompilation
KT-77097SupportReplaceWithdeprecation annotation argument via stubs
Analysis API. Surface
New Features
KT-80084Provide endpoints for Analysis API to understand when the context sensitive resolution is used
Fixes
KT-81132Use KaSession instead of a particular KaSessionComponent for context parameter bridgesKT-81129K2: KaSymbolInformationProvider#importableFqName: should return null for dynamic declarationsKT-81128K2: KaSymbolInformationProvider#importableFqName: should return null for error destructuring declarationsKT-81127K2: KaSymbolInformationProvider#importableFqName: should return null for anonymous functionsKT-81126K2: KaSymbolInformationProvider#importableFqName: should return null for enum entry initializer constructorsKT-81125K2: KaSymbolInformationProvider#importableFqName: should return null for property accessorsKT-81124K2: KaSymbolInformationProvider#importableFqName: type alias constructor should have a reference to the type alias and not to the underlying classKT-70127Analysis API: 'KaFirReceiverParameterSymbol' does not implement 'KaFirSymbol'; leads to exception fromimportableFqNameKT-81123Reimplement KaFirSymbolInformationProvider#importableFqNameKT-81122Drop KaImportOptimizerKT-79772Migrate from 'validityAsserted' to 'withValidityAssertion'KT-59857KaExpressionTypeProvider#returnType shouldn't throw an exception for class like declarations
Backend. Wasm
KT-79244[Wasm] Drop K1-specific tests, testrunners and test directivesKT-80397K/Wasm: turn on by default using a new version of the exception handling proposal for wasm-wasi targetKT-76204K/Wasm: support generating a wasm module per kotlin module/klibKT-81372K/Wasm: JsException: Exception was thrown while running JavaScript code on Safari 18.2/18.3KT-80106devServer in Kotlin/Wasm overwrites defaults, causing missing static paths
Compiler
New Features
KT-80837Warn about extension function with a context shadowed by memberKT-80031Check spotbugs's@CheckReturnValuein Kotlin's unused return value checker
Performance Improvements
KT-81617Native: casts optimizations pass explodes on deep nested loopsKT-81340K/N: severe compilation time degradation after turning on casts optimization passKT-52283Never ending type inference while compiling Kotlin code with lots of self pointing generics
Fixes
KT-81618"Number of arguments should not be less than number of parameters" on JVM on Kotlin 2.3.0-Beta1KT-81652Native: ClassCastException: ApplicationForegroundStateListener.CompanionKT-74999K2: KotlinNothingValueException within Extension FunctionKT-81254"AssertionError: There should be at least one non-stub type to compute common supertype": Parser issue during generic type inferenceKT-80250ISE: flow for PostponedLambdaExitNode not initialized - traversing nodes in wrong order?KT-81186Only allow local type aliases in REPL/scripts until full stabilizationKT-80929IC Native: Undefined symbols on ktorKT-81657K2: put warning about "exposing package-private in internal" under experimental language featureKT-81241Konanc exit while lowering org.jetbrains.kotlin.ir.util.IrUtilsKt.remapTypeParametersKT-74819K2: False-positive overload resolution ambiguity for flatMap inside PCLAKT-79506Contract for getter and setter doesn't work if a property is called from another moduleKT-71420Report error when reified type parameter is inferred to intersection typeKT-77727Move some of the extra checkers to the default listKT-81257Native: "Unexpected boolean predicate" when generating 'static_cache'KT-81525Report REDUNDANT_SPREAD_OPERATOR on (*) instead of argument expressionKT-81522Fix Light TreeSPREAD_OPERATORdiagnostic positioningKT-77008K2: Incorrectly force casting to a wrong typeKT-78127K2: Too precise inference for if/when with expected type in assignmentKT-80208K2: ClassCastException: "class java.util.ArrayList cannot be cast to class java.lang.Void" type inference picks Void for generic functionKT-79231Inconsistent InnerClass entry flags for abstract inner enumKT-20677Improve diagnostic about implicit default constructor absence for expected annotation classKT-9111Improve diagnostic for call with access to outer class from nested classKT-81385Missing error of nullable expression in class literal in case of reified type parameterKT-81141Fix FirUnsupportedArrayLiteralChecker to forbid array literals inside non-annotation contextsKT-81383Return type of anonymous function used asrunargument is incorrectly inferred toNothingKT-80577"Return type mismatch" for self-referential types used as generic parametersKT-81198Move type and type parameter annotations from jvm_metadata.proto to metadata.protoKT-81057Wrong handling of boxing during redundant casts optimizationKT-76479Backend. JVM: Report errors on exposure of types in inline functionsKT-81191K2: "null cannot be cast to non-null type ConeTypeParameterLookupTag" with invalid codeKT-81115Allow converting lambda with explicit parameter when assigning to variable of an extension function typeKT-74588Redundant checkNotNull intrinsics instructions for Java generic methodsKT-78390UnmuteFusStatisticsIT.testKotlinxPlugins()after AtomicFU updateskotlin-metadata-jvmKT-79369Forbid typealiasing for all compiler-required annotationsKT-76344Drop language version 1.9 for non-JVM platformsKT-69294K2: ReportCONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_ERRORinstead ofEXPANDED_TYPE_CANNOT_BE_INHERITEDafter switching to LV 2.2KT-81064Wrong safe call null check handling during redundant casts optimizationKT-80871StackOverflowError on AnnotationTarget.TYPEKT-80908K2: Compiling type annotation with self-annotated vararg fail with exceptionKT-76902Omit type-use annotations from diagnosticsKT-70507Should parentheses prevent from plus/set operator desugaring?
Compose compiler
b/419049140Disabled memoization intryblocksKT-81081Generate Compose-specific proguard mappings when Compose compiler plugin is applied.
IDE. Gradle Integration
KT-46273MPP: Don't fail import for case of missed platform in source set structureKT-46417[UNRESOLVED_REFERENCE] For project to project dependencies of native platform test source setsKT-44845After update to Kotlin 1.4.30 all external dependencies is unresolved in IDE with kotlin.mpp.enableGranularSourceSetsMetadata=trueKT-46142K/N distribution is unavailable from IDE with multiplatform hierarchical project structure enabled
IR. Inlining
Fixes
KT-81673False warnings about ABI change in dependencies in library mode in 2.3.0-Beta1KT-81713[Inliner] Compilation of inline function with recursive call applied to TODO() fails with an internal errorKT-74892Investigate passing inline lambda as argument of another inline functionKT-78392CommonPrefix: Add a way of stopping execution when one of the phases is unsuccessfulKT-80927[Native] Review intrinsics with PublishedApiKT-81070[Inliner] kotlin/Any is unboundKT-80628KLIB inliner: Not enough information about the "full" modeKT-69516Double-inlining for Native: Enable visibility checks after 1st phase of inliningKT-78673Make fakeOverrideLocalGenericBase not using red codeKT-80565KLIB Inliner: Add a special annotation to prohibit inlining of marked inline functions in stdlib on 1st compilation phaseKT-79718KLIB inliner: Emit warning on generation ofpublicsynthetic accessor when running in "explicit API mode"
IR. Interpreter
KT-72356K2 Native: IllegalStateException when annotation has the same source range as a constant in another file
IR. Tree
KT-79739Static synthetic accessors inside generic classes access its type parametersKT-78100Track and annotate internal annotations with@PublishedApito enable annotation visibility validationKT-80825DropIrSerializationSettings.reuseExistingSignaturesForSymbolssettingKT-79807Broken IR tree invariants in IrReplSnippet after FIR2IRKT-78856Refactor LocalDeclarationsLowering to split it in smaller parts
JavaScript
KT-80401Kotlin/JS support fordefault exportin generated JavaScriptKT-79928Allow JsModule/JsNonModule/JsQualifier invocation on per-entity levelKT-81424Kotlin/JS: Cannot Get / in a simple running applicationKT-81066Wasm, JS: Remove redundant logging in compiler outputKT-79222K/JS: Allow using Long in exported declarationsKT-74055KJS:@JsPlainObjectadds JS code even if marked interface is not used
Klibs
KT-64237Klib metadata: migrate to using the common annotations instead of klib-specific extensions in the compilerKT-80999Reuse existingIrKotlinLibraryLayoutinKotlinLibraryfor reading pre-processed functionsKT-80761K2: [K/N] Should reported klib usage include inheritanceKT-80290Removeifand TODO incountInAsInlinedLambdaArgumentWithPermittedNonLocalReturnsKT-80298K/N: one-stage compilation is broken
Language Design
KT-81561Update nested type aliases KEEP to reflect local type aliases supportKT-28850Prohibit protected visibility in final expected classes
Libraries
KT-81078Increase kotlin.io.createTempDir and createTempFile deprecation level to ERRORKT-74493Deprecate String.subSequence(start, end) with error and drop it in the futureKT-81092Uuid: support generation of version 7 uuids with a given timestampKT-81043String.toBigDecimalOrNull rejects strings accepted by String.toBigDecimalKT-81477Uuid.Companion.generateV* are missing SinceKotlin annotationKT-80530Annotate Kotlin/Native stdlib with must-use value/@IgnorableReturnValuewhen appropriateKT-79791Duration.parse incorrectly handles negative decimal seconds in ISO-8601 formatKT-72111Change Duration.parseOrNull logic to not throw exceptions internallyKT-80431Remove suppression of "ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT" from stdlib
Native. C and ObjC Import
KT-81312Native: when-Xccall-mode directis used, mark unsupported declarations with unresolvable symbol name instead of@Deprecated(ERROR)
Native. Swift Export
KT-80969Swift Export: Callsuspendfunction asasyncon swift sideKT-81355Swift Export: Introduce a flag to turn off coroutines export
Tools. Build Tools API
KT-81602BTA: rename KotlinToolchains.jvm@JvmNamefor a more Java-friendly APIKT-81321Deprecate old BTA prototype APIKT-73090Gradle 8.11 kotlin compilation fails when run with -Pkotlin.compiler.runViaBuildToolsApi=trueKT-81130BTA: using KotlinVersion from stdlib in the API breaks when using isolated classloader
Tools. CLI
KT-81077Add JVM target bytecode version 25
Tools. Commonizer
KT-49735[Commonizer] :commonizeNativeDistribution fails for projects with two or more same native targetsKT-47523MPP: Unable to resolve c-interop dependency if platform is included in an intermediate source set with the only targetKT-48118Commonized c-interop lib is not attached to common main source setKT-46248MPP: Compile KotlinMetadata fails with Unresolved reference if only one native platform from shared source set is available
Tools. Compiler Plugins
KT-81348Incorrect bytecode mentioning error class/package is generated by kotlinx-serialization when private serializer in another module is not accessibleKT-81091[DataFrame] Receivers from FirExpressionResolutionExtension are not resolved in CodeFragmentKT-80944FirUserTypeRefImpl cannot be cast to class FirResolvedTypeRef in maven projectKT-80429Power Assert with "Run test using: IntelliJ": NoClassDefFoundError (org.jetbrains.kotlin.kotlinx.collections.immutable.ExtensionsKt) during compilationKT-64339Symbol Light Classes: No Arg compiler plugin generates synthethic constructor which is not seen from light classes
Tools. Gradle
New Features
KT-45161Gradle: Support registering generated sources with the Kotlin modelKT-71602Introduce KotlinTopLevelExtension
Fixes
KT-81837Run integration tests against AGP 8.13KT-77457Compile against Gradle API 9.0KT-81199Deprecate "org.jetbrains.kotlin.android" pluginKT-81719Do not register swift export related configurations when it's not requiredKT-75869KGP JS - Update deprecated constructorsKT-79047Gradle compileKotlin fails with configuration cacheKT-81415BTA: Duplicate daemons when compiling JVM + JS in KGPKT-80950KGP breaks configuration cache when signing plugin with GnuPG is appliedKT-67290Deprecate usage of HasKotlinDependencies inside KotlinCompilationKT-80763Add redirect link to error message when 'org.jetbrains.kotlin.android' plugin is used with built-in KotlinKT-64273Gradle: remove symbols deprecated after KT-54312KT-70251Gradle: hide compiler symbols in KGP
Tools. Gradle. BCV
KT-80687Add description to Gradle tasks [ABI Validation]
Tools. Gradle. Compiler plugins
KT-81827Add a switch for mapping file tasks in Compose Gradle plugin
Tools. Gradle. JS
KT-81009K/JS, Wasm: Promote deprecation of NPM and Yarn package manager internal functionsKT-76019Wasm/JS: Promote phantom-js for Karma deprecation to ERRORKT-81005K/JS, Wasm: Promote deprecation of ExperimentalWasmDsl to ErrorKT-81010K/JS, Wasm: Promote deprecation of internal JS functions to ErrorKT-81008K/JS, Wasm: Promote deprecation of ExperimentalDceDsl to ErrorKT-81007K/JS, Wasm: Promote deprecation of public constructors of JS declarations to ErrorKT-81006K/JS, Wasm: Promote wasm declarations in "js" package deprecation to ErrorKT-81004K/JS, Wasm: promote deprecation NodeJsExec.create to ErrorKT-75621KJS / Gradle: Disable npm in --offline mode
Tools. Gradle. Multiplatform
Fixes
KT-81200Deprecate 'androidTarget'KT-81060KMP stores common compilation dependency resolution in Configuration cache leading to error when deserializing (Android only)KT-77367[uklib] Project dependency to kotlin-jvm module leads to failure in transform during IDE importKT-61127Remove scoped resolvable and intransitive DependenciesMetadata configurations used in the pre-IdeMultiplatformImport IDE importKT-81434[uklib] androidCompileClasspath resolves java compatibility variant instead of android for uklib libraryKT-81249Kotlin 2.2.20 broke KMP implementation of ParcelizeKT-77066Promote kotlinArtifacts deprecation to an errorKT-74955Remove resources resolution strategy completelyKT-55312Replace "ALL_COMPILE_DEPENDENCIES_METADATA" configuration with set of metadata dependencies configurations associated per setKT-52216HMPP / KTOR: False positive "TYPE_MISMATCH" with Throwable descendantKT-55230Remove metadata dependencies transformation for runtimeOnly scope
Tools. Gradle. Native
KT-81134Native: Gradle configuration failure likely related to Klibs cross-compilationKT-77486Remove bitcode DSLKT-77732commonizeCInteropfailed with "Unresolved classifier: platform/posix/size_t"KT-80675Commonized cinterops between "test" compilations produce an import failure
Tools. Gradle. Swift Export
KT-81465Swift Export package is build with wrong targetKT-81460[KGP] Crash in SwiftExportRunner due to older stdlib
Tools. Kapt
KT-80843K2: KAPT: Crash on any data class with duplicate properties: "Sequence contains more than one matching element"KT-71786K2Kapt: Stubs generation does not fail on files with declaration errors
Tools. Maven
KT-814142.2.20 regression: OOM (Compressed class space) when in-processKT-78201Maven: migrate JVM compilation to the new BTAKT-81435Maven: Improve BTA classloader reusageKT-81218Kotlin Maven Plugin 2.2.20: Java classes not resolved with enabled incremental compilation without daemon
Tools. REPL
KT-80062ReplSnippetLowering sometimes produces IrConstructorCall with too many arguments
Tools. Scripts
KT-80071Kotlin script mode produces invalid IR: "value that is not available in the current scope"
Tools. Wasm
v2.3.0-Beta1: Kotlin 2.3.0-Beta1
Changelog
Analysis API
KT-80303Move:native:analysis-api-klib-readerto:libraries:tools
Analysis API. Code Compilation
KT-80227Support unnamed context parameters in evaluationKT-78554K2 IDE / Kotlin Debugger: ISE “No override for FUN IR_EXTERNAL_DECLARATION_STUB” on calling toString() for local class instance during evaluationKT-73201K2 IDE: Error while evaluating expressions with local classes
Analysis API. FIR
KT-46375Analysis API: Support cross-file class redeclaration checks using indicesKT-80471Analysis API: Deduplicate equivalent call candidates inresolveToCallCandidatesKT-79653[Analysis API] ContextCollector: BODY context of enum classes doesn't contain enum entriesKT-75858K2 AA: False positive 'property must be initialized' on incremental analysis with 'field' usage and semicolon in setterKT-80231AnnotationArgumentsStateKeepers doesn't restore the initial annotation in some casesKT-80233Pull mutation out of AnnotationArgumentsStateKeepersKT-71466LLFirBuiltinsSessionFactoryusescreateCompositeSymbolProviderKT-76432JavaClassUseSiteMemberScope: Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl
Analysis API. Infrastructure
KT-80717Support IntelliJ Bazel build in the Kotlin Coop development mode
Analysis API. Light Classes
KT-80656Duplicate no-args constructor in PSIKT-60490Symbol Light Classes: Property accessors from a delegated interface don't present in the delegating classKT-79689SymbolLightClassForClassLike.toString() causes PSI tree loadingKT-79012Add a high-level overview of light classes
Analysis API. Providers and Caches
KT-78882K2 AA: Calling containingSymbol on getProgressionLastElement causes exceptionKT-58325Analysis API: CombineLLKotlinStubBasedLibrarySymbolProviders in session dependencies (optimization)KT-77825Analysis API:CheckersComponentconsumes a lot of memory while being unused in LL FIR sessionsKT-76526Incorrect built-in module is provided for non-JVM sources in StandaloneKT-62549Analysis API: Cache callables in combined Kotlin symbol providersKT-70721LL FIR: investigate possibility of movingLLFirFirClassByPsiClassProvider . getClassByPsiClass (PsiClass)to symbol providersKT-72998Analysis API: IntroducegetClassLikeSymbolByPsito LL FIR symbol providers
Analysis API. Standalone
KT-80573Potential performance issue on class ID computationKT-80559Try to optimize KotlinStandaloneDeclarationProviderFactory startup for testsKT-71706Analysis API Standalone:StandaloneProjectFactory.createSearchScopeByLibraryRootscreates inefficient file-based search scopes
Analysis API. Stubs and Decompilation
Performance Improvements
KT-77097SupportReplaceWithdeprecation annotation argument via stubs
Fixes
KT-77082StackOverflowError in CreateFreshTypeVariableSubstitutorStage.shouldBeFlexibleKT-80798Improve stubs tests coverageKT-75318Read context parameter fields from metadata in CallableClsStubBuilderKT-77874AA disagrees with the compiler on descriptions of context parameters from binaries in messages for context argument ambiguity errorsKT-80350Drop K1 decompilerKT-80276Implement native coping for stubsKT-79780Decompiled MultifileClass has Facade kindKT-79398isClsStubCompiledToJvmDefaultImplementation flag is inconsistent for compiled and decompiled stubsKT-79798Prettify stub usages in LL stub-based deserializerKT-78949AbstractLLStubBasedResolutionTest: tests against real stub-based filesKT-80251Inconsistent decompiled and compiled stub for properties with an initializer and a delegateKT-74547Implement decompiler for K2KT-79555Move KotlinFileStubImpl serialization/deserialization to the Analysis APIKT-79487"null DefinitelyNotNullType for 'T'" from decompilerKT-60764Stub Builder: fix differences between K1 and K2 stub building on decompiled filesKT-79484An empty enum class with a member decompiles with a synthetic errorKT-79730Decompiled files have an extraKtsuffixKT-79483data modifier is not present on object modifierKT-75398Local classes from scripts have ClassId in stubsKT-79412Context parameters with type annotations cause inconsistency errors while building stubs
Analysis API. Surface
New Features
KT-64340Analysis API: no way to get a type of vararg parameterKT-68387AA: provide context for type approximations
Performance Improvements
KT-80713Optimize KaDeclarationSymbol#visibility for class-like symbolsKT-79097KaFirNamedFunctionSymbol#isSuspend shouldn't trigger resolutionKT-79095isOverride shouldn't trigger resolution if not compiler plugins present
Fixes
KT-78093Add bridges for context parametersKT-79328K2 AA, isUsedAsExpression: Unhandled Non-KtExpression parent of KtExpression: class org.jetbrains.kotlin.psi.KtImportDirectiveKT-80366IllegalStateException from KaFirStopWorldCacheCleanerKT-80274Merge AbstractMultiModuleSymbolByPsiTest to AbstractSymbolByPsiTestKT-80352KaBaseResolutionScope.contains(PsiElement) always returns false for Android light classes (e.g. synthetic R.java classes)KT-80234Incorrect value ofisActualfor the implicitlyactualconstructor of annotation classKT-80178Incorrect modality for an abstract interface function with a redundantopenmodifierKT-79129[Analysis API]KaFe10TypeCreator.buildClassTypecannot build builtin types by class idsKT-79143AA:argumentMappingcontains an expression that is not an argumentKT-59857KaExpressionTypeProvider#returnType shouldn't throw an exception for class like declarationsKT-79667Enable resolve on java record components in standalone modeKT-73050KaFirSymbolRelationProvider#expectsForActual: suspicius logic for KaReceiverParameterSymbolKT-78904KaBaseWriteActionStartedChecker throws when no additional WA was doneKT-79281Add KDoc toKaTypePointer#restoreKT-78597KaUseSiteVisibilityChecker returns false for internal functions exposed via implicit receiverKT-71705FIR api impl: Postfix increment expression'sexpressionTypeis Unit when incrementing array elementKT-75057Analysis API: Reference to object through typealias in invoke operator call leads to original type
Backend. Native. Debug
KT-79848Flaky debugger tests in opt.debug/cache.*/GC.CMS/GC.sch.ad/alloc.custom configuration
Backend. Wasm
New Features
KT-59032Support instantiation of annotation classes on WASM
Fixes
KT-69621K/Wasm: Consider enabling support for KClass.qualifiedName by defaultKT-80018K/Wasm: exceptions don't work properly in JavaScriptCore (vm inside Safari, WebKit)KT-66072K/Wasm: improve how exceptions work in JS interopKT-80106devServer in Kotlin/Wasm overwrites defaults, causing missing static pathsKT-80210Wasm: "Unexpected non-external class: kotlin.Nothing" caused by JsExport with JsPromiseKT-80555WASM IC: Can't link symbol on kotlinx.coroutines on fresh masterKT-80415WasmJs Number Elvis Operator CrashKT-76509WasmJS: ReferenceError: Temporal is not defined caused by "Redundant reference to unused external results"KT-79317[Wasm] Do not throw CCE for ExcludedFromCodegen declarationsKT-78036K/Wasm: generate a message with "expected" and "actual" types in case of CCE
Compiler
New Features
KT-77676K/N: enable typechecks and the casts optimization pass in debug mode by defaultKT-80768Warning on overloading by a superset of context parameters in class contextKT-79185Support for local type aliasesKT-80461K2: false positive NO_ELSE_IN_WHEN for complex sealed hierarchyKT-79380Native: add performance measurement for the rest of backend phasesKT-79381Native: add performance measurement of LLVM phasesKT-80222Implement the prohibition of always-falseischecks for definitely incompatible typesKT-79295Parse and build raw FIR from new short and full forms of positional destructuring with square bracketsKT-74810Support typealiased/mapped Java types in unused return value checkerKT-71244Incorporate existing@CheckReturnValueannotation(s) into Kotlin's unused return value checkerKT-79922Record 'MustUse/ExplicitlyIgnorable' state for overrides even in disabled RVC modeKT-79920Store 'Explicitly ignorable' state of function/property in the metadataKT-79690Implement a USELESS_ELVIS_LEFT_IS_NULL with elvis expressionKT-79296Implement/adapt diagnostics for new destructuringKT-79298Report errors on new destructuring syntax in K1
Performance Improvements
KT-81340K/N: severe compilation time degradation after turning on casts optimization passKT-80554Kotlin/Native: investigate performance hit from always-on llvm pass profilingKT-80370Add NO_INLINE attribute to some of runtime functionsKT-80167K/N: condense the nodes and edges in DevirtualizationAnalysis constraint graphKT-79535Revert incorrect SAM conversion enhancements brought to K2
Fixes
KT-81257Native: "Unexpected boolean predicate" when generating 'static_cache'KT-80864K2: MissingVal cannot be reassigneddiagnostic for Java final fields (crashes in runtime withIllegalAccessError)KT-75215KDoc: references from@paramtag are rendered as plain textKT-79887K2 Compiler Internal Error in 'FirFakeOverrideGenerator.checkStatusIsResolved' MethodKT-78125false-negative shadowed contextual overload warning on local declarationsKT-79274Frontend implementation of name-based destructuringKT-81057Wrong handling of boxing during redundant casts optimizationKT-80285IJ monorepo: broken compilation after 2.2.20-RC updateKT-81015Mark nested typealiases as stable for 2.3KT-81064Wrong safe call null check handling during redundant casts optimizationKT-80744Kotlin failure on lambda with type parameterKT-78280Implement the sourcelessKtDiagnosticsKT-78819K2: False positive ABSTRACT_MEMBER_NOT_IMPLEMENTED in KJK hierarchyKT-81018ISE "IR class for Foo not found" on missing dependency when lowering SAM constructorKT-80936NON_PUBLIC_CALL_FROM_PUBLIC_INLINE :@PublishedApidoesn't work for fun interfacesKT-75748StackOverflowError when reading array from metadata annotationsKT-80400K2: AbstractMethodError on fun interface implementation inheriting from an interface compiled with -jvm-default=disableKT-80940K2: Exception in FIR2IR with AnnotationTarget.TYPE with self-annotated non-vararg default argument and usage in child moduleKT-80538KaFirDiagnostic.EmptyRange doesn't work in most of the casesKT-80524Class is not abstract and does not implement abstract member when compiling with kotlinc-jklibKT-80597Apply fix for CVE-2024-7254 to our fork of protobuf 2.6.1- [
KT-80849](https://youtr
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
:x: 1 Tests Failed:
| Tests completed | Failed | Passed | Skipped |
|---|---|---|---|
| 4000 | 1 | 3999 | 5 |
View the full list of 1 :snowflake: flaky test(s)
com.alexvanyo.composelife.ComposeLifeAppTests::can_watch_clipboard_and_view_deserialization_infoFlake rate in main: 33.33% (Passed 6 times, Failed 3 times)
Stack Traces | 0.233s run time
java.lang.AbstractMethodError: abstract method "com.alexvanyo.composelife.preferences.ComposeLifePreferences g8.j0.d()" at androidx.compose.runtime.w.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:763) at r1.g.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:45) at r1.g.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:1) at s9.a3.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:138) at r1.g.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:45) at r1.g.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:1) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:8) at s9.d3.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:263) at g8.z.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:374) at r1.g.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:45) at r1.g.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:1) at z2.u1.Content(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:83) at w2.v1.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:50) at r1.g.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:45) at r1.g.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:1) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:3) at androidx.compose.ui.platform.CompositionLocalsKt.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:461) at z2.o0.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:47) at r1.g.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:45) at r1.g.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:1) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:3) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:712) at z2.y3.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:341) at r1.g.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:45) at r1.g.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:1) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:8) at z2.y3.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:272) at r1.g.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:45) at r1.g.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:1) at r1.m.b(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:15) at androidx.compose.runtime.a0.P(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:87) at androidx.compose.runtime.h0.m(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:37) at androidx.compose.runtime.Recomposer.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:65) at androidx.compose.runtime.h0.C(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:32) at z2.z3.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:57) at androidx.compose.ui.platform.a.setOnViewTreeOwnersAvailable(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:7) at z2.a4.b(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:8) at z2.a4.onStateChanged(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:19) at androidx.lifecycle.w.a(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:33) at androidx.lifecycle.x.addObserver(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:276) at z2.z3.invoke(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:25) at androidx.compose.ui.platform.a.onAttachedToWindow(r8-map-id-052600d326fc14f394b2d824a8432d907d9fa293665ed5d55ff41ad1be7e3075:446) at android.view.View.dispatchAttachedToWindow(View.java:17381) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3319) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3326) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1658) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911) at android.view.Choreographer.doCallbacks(Choreographer.java:723) at android.view.Choreographer.doFrame(Choreographer.java:658) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
To view more test analytics, go to the Test Analytics Dashboard 📋 Got 3 mins? Take this short survey to help us improve Test Analytics.
Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠️ Warning: custom changes will be lost.
Cannot auto-update because of conflicts.