fix(deps): update kotlin monorepo to v2.3.10 Redefine ElementType.FILE as KtNodeTypes.FILE because no longer exists in Kotlin 2.3 Fix NoTrailingSpacesRule as KDOCs are structured differently in Kotlin 2.3
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7b3873f..6830a79 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml
@@ -7,8 +7,8 @@ # used in KotlinCommonPlugin #noinspection UnusedVersionCatalogEntry java-target = "17" -kotlin = "2.2.21" -kotlinDev = "2.2.21" +kotlin = "2.3.10" +kotlinDev = "2.3.10" [plugins] kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
diff --git a/ktlint-rule-engine-core/src/main/kotlin/com/pinterest/ktlint/rule/engine/core/api/ElementType.kt b/ktlint-rule-engine-core/src/main/kotlin/com/pinterest/ktlint/rule/engine/core/api/ElementType.kt index d02b67d..c419543 100644 --- a/ktlint-rule-engine-core/src/main/kotlin/com/pinterest/ktlint/rule/engine/core/api/ElementType.kt +++ b/ktlint-rule-engine-core/src/main/kotlin/com/pinterest/ktlint/rule/engine/core/api/ElementType.kt
@@ -5,12 +5,11 @@ import org.jetbrains.kotlin.kdoc.lexer.KDocTokens import org.jetbrains.kotlin.kdoc.parser.KDocElementTypes import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.psi.stubs.elements.KtFileElementType import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes @Suppress("unused") public object ElementType { - public val FILE: IElementType = KtFileElementType.INSTANCE + public val FILE: IElementType = KtNodeTypes.FILE // KtNodeTypes public val CLASS: IElementType = KtNodeTypes.CLASS
diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/NoTrailingSpacesRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/NoTrailingSpacesRule.kt index 01d9150..d8fad2b 100644 --- a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/NoTrailingSpacesRule.kt +++ b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/rules/NoTrailingSpacesRule.kt
@@ -1,8 +1,13 @@ package com.pinterest.ktlint.ruleset.standard.rules import com.pinterest.ktlint.rule.engine.core.api.AutocorrectDecision +import com.pinterest.ktlint.rule.engine.core.api.ElementType import com.pinterest.ktlint.rule.engine.core.api.ElementType.EOL_COMMENT import com.pinterest.ktlint.rule.engine.core.api.ElementType.KDOC +import com.pinterest.ktlint.rule.engine.core.api.ElementType.KDOC_END +import com.pinterest.ktlint.rule.engine.core.api.ElementType.KDOC_LEADING_ASTERISK +import com.pinterest.ktlint.rule.engine.core.api.ElementType.KDOC_TEXT +import com.pinterest.ktlint.rule.engine.core.api.ElementType.WHITE_SPACE import com.pinterest.ktlint.rule.engine.core.api.RuleId import com.pinterest.ktlint.rule.engine.core.api.SinceKtlint import com.pinterest.ktlint.rule.engine.core.api.SinceKtlint.Status.STABLE @@ -11,6 +16,7 @@ import com.pinterest.ktlint.rule.engine.core.api.isPartOf import com.pinterest.ktlint.rule.engine.core.api.isWhiteSpace20 import com.pinterest.ktlint.rule.engine.core.api.nextLeaf +import com.pinterest.ktlint.rule.engine.core.api.nextSibling20 import com.pinterest.ktlint.rule.engine.core.api.replaceTextWith import com.pinterest.ktlint.ruleset.standard.StandardRule import org.jetbrains.kotlin.com.intellij.lang.ASTNode @@ -31,8 +37,24 @@ .dropLastWhile { it == ' ' } .length emit(node.startOffset + offsetOfFirstSpaceBeforeNewlineInText, "Trailing space(s)", true) - .ifAutocorrectAllowed { - node.removeTrailingSpacesBeforeNewline() + .ifAutocorrectAllowed { node.removeTrailingSpacesBeforeNewline() } + } + + if (node.elementType == KDOC_TEXT && + node.text.endsWith(" ") && + ( + node.nextLeaf + ?.takeIf { it.nextLeaf?.elementType == KDOC_LEADING_ASTERISK || it.nextLeaf?.elementType == KDOC_END } + ?.text + ?.startsWith("\n") == true + ) + ) { + node + .text + .trimEnd() + .let { trimmedText -> + emit(node.startOffset + trimmedText.length, "Trailing space(s)", true) + .ifAutocorrectAllowed { node.replaceTextWith(trimmedText) } } } } else if (!node.isCode) {
diff --git a/ktlint-ruleset-template/build.gradle.kts b/ktlint-ruleset-template/build.gradle.kts index 56bc975..e33f4f6 100644 --- a/ktlint-ruleset-template/build.gradle.kts +++ b/ktlint-ruleset-template/build.gradle.kts
@@ -2,7 +2,7 @@ // build logic of other internal ktlint modules (https://github.com/pinterest/ktlint/issues/3048).. plugins { - kotlin("jvm") version "2.2.21" + kotlin("jvm") version "2.3.10" // Remove the line below when this custom ruleset is not to be published to maven. If you do want to publish your ruleset to Maven, you // still might need to configure the Maven Central repository in file `settings.gradle.xml` which is not included in the sample project // as it conflicts with the build of the Ktlint itself. Suggested content of that file: