@@ -13,9 +13,8 @@ import org.jetbrains.kotlin.KtNodeTypes.FUN
13
13
import org.jetbrains.kotlin.KtNodeTypes.OBJECT_DECLARATION
14
14
import org.jetbrains.kotlin.KtNodeTypes.SUPER_TYPE_ENTRY
15
15
import org.jetbrains.kotlin.KtNodeTypes.SUPER_TYPE_LIST
16
+ import org.jetbrains.kotlin.com.intellij.lang.ASTFactory
16
17
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
19
18
import org.jetbrains.kotlin.lexer.KtTokens.CLASS_KEYWORD
20
19
import org.jetbrains.kotlin.lexer.KtTokens.IDENTIFIER
21
20
import org.jetbrains.kotlin.lexer.KtTokens.INTERFACE_KEYWORD
@@ -50,14 +49,16 @@ class StatelessClassesRule(configRules: List<RulesConfig>) : DiktatRule(
50
49
if (isClassExtendsValidInterface(node, interfaces) && isStatelessClass(node)) {
51
50
OBJECT_IS_PREFERRED .warnAndFix(configRules, emitWarn, isFixMode,
52
51
" 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()
54
54
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
+ }
57
61
}
58
- newObjectNode.addChild(LeafPsiElement (OBJECT_KEYWORD , " object" ),
59
- newObjectNode.getFirstChildWithType(CLASS_KEYWORD ))
60
- newObjectNode.removeChild(newObjectNode.getFirstChildWithType(CLASS_KEYWORD )!! )
61
62
node.treeParent.removeChild(node)
62
63
}
63
64
}
0 commit comments