diff options
author | Stanley Shyiko <stanley.shyiko@gmail.com> | 2018-05-03 11:15:56 -0700 |
---|---|---|
committer | Stanley Shyiko <stanley.shyiko@gmail.com> | 2018-05-03 11:15:56 -0700 |
commit | 326cdc53aa67dc3e8d68eb24fcc08b3e4a7b9bde (patch) | |
tree | 8aa62a48ff99be9923c5f57521ba855b763eb8aa /ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko | |
parent | 000c0bd75b4c649afb46b211900ede08065d1db7 (diff) | |
download | ktlint-326cdc53aa67dc3e8d68eb24fcc08b3e4a7b9bde.tar.gz |
Fixed ClassCastException (#205)
Diffstat (limited to 'ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko')
2 files changed, 9 insertions, 8 deletions
diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/ParameterListWrappingRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/ParameterListWrappingRule.kt index 5119688b..81d06038 100644 --- a/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/ParameterListWrappingRule.kt +++ b/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/ParameterListWrappingRule.kt @@ -5,7 +5,9 @@ import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.com.intellij.lang.ASTNode import org.jetbrains.kotlin.com.intellij.lang.FileASTNode import org.jetbrains.kotlin.com.intellij.psi.PsiElement +import org.jetbrains.kotlin.com.intellij.psi.PsiWhiteSpace import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LeafElement +import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LeafPsiElement import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.PsiWhiteSpaceImpl import org.jetbrains.kotlin.com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.lexer.KtTokens @@ -51,8 +53,8 @@ class ParameterListWrappingRule : Rule("parameter-list-wrapping") { nextChild@ for (child in node.children()) { when (child.elementType) { KtTokens.LPAR -> { - val prevLeaf = child.psi.prevLeaf()!! - if (prevLeaf.elementType == KtTokens.WHITE_SPACE && prevLeaf.textContains('\n')) { + val prevLeaf = child.psi.prevLeaf() + if (prevLeaf is PsiWhiteSpace && prevLeaf.textContains('\n')) { emit(child.startOffset, errorMessage(child), true) if (autoCorrect) { prevLeaf.delete() @@ -62,10 +64,10 @@ class ParameterListWrappingRule : Rule("parameter-list-wrapping") { KtStubElementTypes.VALUE_PARAMETER, KtTokens.RPAR -> { var paramInnerIndentAdjustment = 0 - val prevLeaf = child.psi.prevLeaf()!! + val prevLeaf = child.psi.prevLeaf() val intendedIndent = if (child.elementType == KtStubElementTypes.VALUE_PARAMETER) paramIndent else indent - if (prevLeaf.node.elementType == KtTokens.WHITE_SPACE) { + if (prevLeaf is PsiWhiteSpace) { val spacing = prevLeaf.text val cut = spacing.lastIndexOf("\n") if (cut > -1) { @@ -81,7 +83,7 @@ class ParameterListWrappingRule : Rule("parameter-list-wrapping") { if (autoCorrect) { val adjustedIndent = (if (cut > -1) spacing.substring(0, cut) else "") + intendedIndent paramInnerIndentAdjustment = adjustedIndent.length - prevLeaf.textLength - prevLeaf.rawReplaceWithText(adjustedIndent) + (prevLeaf as LeafPsiElement).rawReplaceWithText(adjustedIndent) } } else { emit(child.startOffset, errorMessage(child), true) diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/package.kt b/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/package.kt index 1d64c651..d9e03b1e 100644 --- a/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/package.kt +++ b/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/package.kt @@ -2,7 +2,6 @@ package com.github.shyiko.ktlint.ruleset.standard import org.jetbrains.kotlin.com.intellij.lang.ASTNode import org.jetbrains.kotlin.com.intellij.psi.PsiElement -import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LeafPsiElement import org.jetbrains.kotlin.com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.psi.KtStringTemplateEntry import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType @@ -10,8 +9,8 @@ import kotlin.reflect.KClass internal fun PsiElement.isPartOf(clazz: KClass<out PsiElement>) = getNonStrictParentOfType(clazz.java) != null internal fun PsiElement.isPartOfString() = isPartOf(KtStringTemplateEntry::class) -internal fun PsiElement.prevLeaf(): LeafPsiElement? = PsiTreeUtil.prevLeaf(this) as LeafPsiElement? -internal fun PsiElement.nextLeaf(): LeafPsiElement? = PsiTreeUtil.nextLeaf(this) as LeafPsiElement? +internal fun PsiElement.prevLeaf(): PsiElement? = PsiTreeUtil.prevLeaf(this) +internal fun PsiElement.nextLeaf(): PsiElement? = PsiTreeUtil.nextLeaf(this) internal fun ASTNode.visit(cb: (node: ASTNode) -> Unit) { cb(this) this.getChildren(null).forEach { it.visit(cb) } |