Skip to content

Quality: Non-exhaustive-at-runtime enum mapping can throw NoWhenBranchMatchedException#174

Open
Nam0101 wants to merge 1 commit intoKotlin:mainfrom
Nam0101:contribai/improve/quality/non-exhaustive-at-runtime-enum-mapping-c
Open

Quality: Non-exhaustive-at-runtime enum mapping can throw NoWhenBranchMatchedException#174
Nam0101 wants to merge 1 commit intoKotlin:mainfrom
Nam0101:contribai/improve/quality/non-exhaustive-at-runtime-enum-mapping-c

Conversation

@Nam0101
Copy link
Copy Markdown

@Nam0101 Nam0101 commented Mar 30, 2026

Hi there! 👋

While going through the codebase, I noticed a minor opportunity for improvement regarding features-impl/kotlin/src/com/jetbrains/ls/api/features/impl/kotlin/diagnostics/compiler/kotlinCompilerDiagnosticUtils.kt.

Context:
KaSeverity.toLsp() uses an exhaustive when over current enum constants only. If this library is run with a newer Kotlin Analysis API that adds a new KaSeverity, Kotlin can throw NoWhenBranchMatchedException at runtime during diagnostics conversion, crashing/interrupting diagnostic publishing.

Proposed fix:
Add a defensive else branch to keep behavior stable across dependency version drift, e.g.:

internal fun KaSeverity.toLsp(): DiagnosticSeverity = when (this) {
KaSeverity.ERROR -> DiagnosticSeverity.Error
KaSeverity.WARNING -> DiagnosticSeverity.Warning
KaSeverity.INFO -> DiagnosticSeverity.Information
else -> DiagnosticSeverity.Information
}

Files touched:

  • features-impl/kotlin/src/com/jetbrains/ls/api/features/impl/kotlin/diagnostics/compiler/kotlinCompilerDiagnosticUtils.kt (modified)

(Note: Tested the changes locally to ensure everything works as expected. Let me know if you need any adjustments, happy to help!)


NamNV
📍 Hanoi, Vietnam
📧 nam.nv205106@gmail.com

…nchmatchedexception`

`KaSeverity.toLsp()` uses an exhaustive `when` over current enum constants only. If this library is run with a newer Kotlin Analysis API that adds a new `KaSeverity`, Kotlin can throw `NoWhenBranchMatchedException` at runtime during diagnostics conversion, crashing/interrupting diagnostic publishing.


Affected files: kotlinCompilerDiagnosticUtils.kt

Signed-off-by: Nguyen Van Nam <nam.nv205106@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant