@@ -24,6 +24,7 @@ import com.demonwav.mcdev.util.constantValue
24
24
import com.intellij.openapi.project.Project
25
25
import com.intellij.psi.JavaPsiFacade
26
26
import com.intellij.psi.PsiAssignmentExpression
27
+ import com.intellij.psi.PsiBlockStatement
27
28
import com.intellij.psi.PsiClass
28
29
import com.intellij.psi.PsiClassInitializer
29
30
import com.intellij.psi.PsiExpressionStatement
@@ -41,6 +42,7 @@ object FieldAssignmentDesugarer : Desugarer() {
41
42
val staticStatementsToInsertPost = mutableListOf<PsiStatement >()
42
43
val nonStaticStatementsToInsert = mutableListOf<PsiStatement >()
43
44
var seenStaticInitializer = false
45
+ val factory = JavaPsiFacade .getElementFactory(project)
44
46
45
47
for (aClass in DesugarUtil .allClasses(file)) {
46
48
for (child in aClass.children) {
@@ -57,8 +59,8 @@ object FieldAssignmentDesugarer : Desugarer() {
57
59
}
58
60
}
59
61
60
- val fieldInitializer = JavaPsiFacade .getElementFactory(project )
61
- .createStatementFromText( " ${child.name} = null; " , child) as PsiExpressionStatement
62
+ val fieldInitializer = factory.createStatementFromText( " ${child.name} = null; " , child )
63
+ as PsiExpressionStatement
62
64
(fieldInitializer.expression as PsiAssignmentExpression ).rExpression!! .replace(initializer)
63
65
DesugarUtil .setOriginalElement(fieldInitializer, DesugarUtil .getOriginalElement(child))
64
66
@@ -68,8 +70,8 @@ object FieldAssignmentDesugarer : Desugarer() {
68
70
staticStatementsToInsertPre + = fieldInitializer
69
71
}
70
72
} else {
71
- val fieldInitializer = JavaPsiFacade .getElementFactory(project )
72
- .createStatementFromText( " this. ${child.name} = null; " , child) as PsiExpressionStatement
73
+ val fieldInitializer = factory.createStatementFromText( " this. ${child.name} = null; " , child )
74
+ as PsiExpressionStatement
73
75
(fieldInitializer.expression as PsiAssignmentExpression ).rExpression!! .replace(initializer)
74
76
DesugarUtil .setOriginalElement(fieldInitializer, DesugarUtil .getOriginalElement(child))
75
77
@@ -83,7 +85,9 @@ object FieldAssignmentDesugarer : Desugarer() {
83
85
if (child.hasModifierProperty(PsiModifier .STATIC )) {
84
86
seenStaticInitializer = true
85
87
} else {
86
- nonStaticStatementsToInsert + = child.body.statements.map { it.copy() as PsiStatement }
88
+ val blockStatement = factory.createStatementFromText(" {}" , null ) as PsiBlockStatement
89
+ blockStatement.codeBlock.replace(child.body)
90
+ nonStaticStatementsToInsert + = blockStatement
87
91
child.delete()
88
92
}
89
93
}
0 commit comments