In 4.4.0.v202112150033-e2112, using Elvis assignment causes a stack overflow in the editor. Closing the editor allows the workbench to continue. Rewriting the assignment as a conditional prevents the stack overflow.
Offending code:
msg.messageId ?= messageIdGenerator.get()
Working code:
if (!msg.messageId) {
msg.messageId = messageIdGenerator.get()
}
Error log:
!ENTRY org.eclipse.ui 4 0 2021-12-16 16:35:36.309
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.StackOverflowError
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.storeTypeForSuper(StaticTypeCheckingVisitor.java:666)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitVariableExpression(StaticTypeCheckingVisitor.java:568)
at org.codehaus.groovy.ast.expr.VariableExpression.visit(VariableExpression.java:70)
at org.codehaus.groovy.ast.CodeVisitorSupport.visitPropertyExpression(CodeVisitorSupport.java:340)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.existsProperty(StaticTypeCheckingVisitor.java:1689)
at org.codehaus.groovy.transform.sc.StaticCompilationVisitor.existsProperty(StaticCompilationVisitor.java:550)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.existsProperty(StaticTypeCheckingVisitor.java:1676)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitPropertyExpression(StaticTypeCheckingVisitor.java:706)
at org.codehaus.groovy.transform.sc.StaticCompilationVisitor.visitPropertyExpression(StaticCompilationVisitor.java:564)
at org.codehaus.groovy.ast.expr.PropertyExpression.visit(PropertyExpression.java:63)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitBinaryExpression(StaticTypeCheckingVisitor.java:762)
at org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:58)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethodCallArguments(StaticTypeCheckingVisitor.java:3124)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethodCallExpression(StaticTypeCheckingVisitor.java:3826)
at org.codehaus.groovy.transform.sc.StaticCompilationVisitor.visitMethodCallExpression(StaticCompilationVisitor.java:414)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.ensureValidSetter(StaticTypeCheckingVisitor.java:1050)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitBinaryExpression(StaticTypeCheckingVisitor.java:766)
at org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:58)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethodCallArguments(StaticTypeCheckingVisitor.java:3124)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethodCallExpression(StaticTypeCheckingVisitor.java:3826)
at org.codehaus.groovy.transform.sc.StaticCompilationVisitor.visitMethodCallExpression(StaticCompilationVisitor.java:414)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.ensureValidSetter(StaticTypeCheckingVisitor.java:1050)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitBinaryExpression(StaticTypeCheckingVisitor.java:766)
at org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:58)
(repeat)
In 4.4.0.v202112150033-e2112, using Elvis assignment causes a stack overflow in the editor. Closing the editor allows the workbench to continue. Rewriting the assignment as a conditional prevents the stack overflow.
Offending code:
Working code:
Error log: