Skip to content

Commit 8206d27

Browse files
authored
Merge branch 'master' into feature/fix-tests#1737
2 parents 0eabab5 + 2e563f2 commit 8206d27

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

diktat-rules/src/main/kotlin/com/saveourtool/diktat/ruleset/rules/chapter6/classes/StatelessClassesRule.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ import org.jetbrains.kotlin.KtNodeTypes.FUN
1313
import org.jetbrains.kotlin.KtNodeTypes.OBJECT_DECLARATION
1414
import org.jetbrains.kotlin.KtNodeTypes.SUPER_TYPE_ENTRY
1515
import org.jetbrains.kotlin.KtNodeTypes.SUPER_TYPE_LIST
16+
import org.jetbrains.kotlin.com.intellij.lang.ASTFactory
1617
import org.jetbrains.kotlin.com.intellij.lang.ASTNode
17-
import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.CompositeElement
18-
import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LeafPsiElement
1918
import org.jetbrains.kotlin.lexer.KtTokens.CLASS_KEYWORD
2019
import org.jetbrains.kotlin.lexer.KtTokens.IDENTIFIER
2120
import org.jetbrains.kotlin.lexer.KtTokens.INTERFACE_KEYWORD
@@ -50,14 +49,16 @@ class StatelessClassesRule(configRules: List<RulesConfig>) : DiktatRule(
5049
if (isClassExtendsValidInterface(node, interfaces) && isStatelessClass(node)) {
5150
OBJECT_IS_PREFERRED.warnAndFix(configRules, emitWarn, isFixMode,
5251
"class ${(node.psi as KtClass).name!!}", node.startOffset, node) {
53-
val newObjectNode = CompositeElement(OBJECT_DECLARATION)
52+
val newObjectNode = ASTFactory.composite(OBJECT_DECLARATION)
53+
val children = node.children().toList()
5454
node.treeParent.addChild(newObjectNode, node)
55-
node.children().forEach {
56-
newObjectNode.addChild(it.copyElement(), null)
55+
children.forEach {
56+
if (it.elementType == CLASS_KEYWORD) {
57+
newObjectNode.addChild(ASTFactory.leaf(OBJECT_KEYWORD, "object"))
58+
} else {
59+
newObjectNode.addChild(it)
60+
}
5761
}
58-
newObjectNode.addChild(LeafPsiElement(OBJECT_KEYWORD, "object"),
59-
newObjectNode.getFirstChildWithType(CLASS_KEYWORD))
60-
newObjectNode.removeChild(newObjectNode.getFirstChildWithType(CLASS_KEYWORD)!!)
6162
node.treeParent.removeChild(node)
6263
}
6364
}

diktat-rules/src/test/kotlin/com/saveourtool/diktat/ruleset/chapter6/StatelessClassesRuleFixTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@ import com.saveourtool.diktat.ruleset.rules.chapter6.classes.StatelessClassesRul
44
import com.saveourtool.diktat.util.FixTestBase
55

66
import generated.WarningNames.OBJECT_IS_PREFERRED
7-
import org.junit.jupiter.api.Disabled
87
import org.junit.jupiter.api.Tag
98
import org.junit.jupiter.api.Test
109

1110
class StatelessClassesRuleFixTest : FixTestBase("test/chapter6/stateless_classes", ::StatelessClassesRule) {
1211
@Test
1312
@Tag(OBJECT_IS_PREFERRED)
14-
@Disabled("https://github.com/saveourtool/diktat/issues/1737")
1513
fun `fix class to object keyword`() {
1614
fixAndCompare("StatelessClassExpected.kt", "StatelessClassTest.kt")
1715
}

0 commit comments

Comments
 (0)