aboutsummaryrefslogtreecommitdiff
path: root/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoTrailingSpacesRule.kt
diff options
context:
space:
mode:
Diffstat (limited to 'ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoTrailingSpacesRule.kt')
-rw-r--r--ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoTrailingSpacesRule.kt34
1 files changed, 21 insertions, 13 deletions
diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoTrailingSpacesRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoTrailingSpacesRule.kt
index fa3e492f..a7e03c88 100644
--- a/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoTrailingSpacesRule.kt
+++ b/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoTrailingSpacesRule.kt
@@ -8,33 +8,41 @@ import org.jetbrains.kotlin.com.intellij.psi.util.PsiTreeUtil
class NoTrailingSpacesRule : Rule("no-trailing-spaces") {
- override fun visit(node: ASTNode, autoCorrect: Boolean,
- emit: (offset: Int, errorMessage: String, canBeAutoCorrected: Boolean) -> Unit) {
+ override fun visit(
+ node: ASTNode,
+ autoCorrect: Boolean,
+ emit: (offset: Int, errorMessage: String, canBeAutoCorrected: Boolean) -> Unit
+ ) {
if (node is PsiWhiteSpace) {
val lines = node.getText().split("\n")
if (lines.size > 1) {
- checkForTrailingSpaces(lines.head(), node.startOffset, emit)
- if (autoCorrect) {
- (node as LeafPsiElement).replaceWithText("\n".repeat(lines.size - 1) + lines.last())
+ val violated = checkForTrailingSpaces(lines.head(), node.startOffset, emit)
+ if (violated && autoCorrect) {
+ (node as LeafPsiElement).rawReplaceWithText("\n".repeat(lines.size - 1) + lines.last())
}
- } else
- if (PsiTreeUtil.nextLeaf(node) == null /* eof */) {
- checkForTrailingSpaces(lines, node.startOffset, emit)
- if (autoCorrect) {
- (node as LeafPsiElement).replaceWithText("\n".repeat(lines.size - 1))
+ } else if (PsiTreeUtil.nextLeaf(node) == null /* eof */) {
+ val violated = checkForTrailingSpaces(lines, node.startOffset, emit)
+ if (violated && autoCorrect) {
+ (node as LeafPsiElement).rawReplaceWithText("\n".repeat(lines.size - 1))
}
}
}
}
- private fun checkForTrailingSpaces(lines: List<String>, offset: Int,
- emit: (offset: Int, errorMessage: String, canBeAutoCorrected: Boolean) -> Unit) {
+ private fun checkForTrailingSpaces(
+ lines: List<String>,
+ offset: Int,
+ emit: (offset: Int, errorMessage: String, canBeAutoCorrected: Boolean) -> Unit
+ ): Boolean {
+ var violated = false
var violationOffset = offset
- return lines.forEach { line ->
+ lines.forEach { line ->
if (!line.isEmpty()) {
emit(violationOffset, "Trailing space(s)", true)
+ violated = true
}
violationOffset += line.length + 1
}
+ return violated
}
}