Björn Kautler created GROOVY-12453:
--------------------------------------

             Summary: {{ArrayIndexOutOfBoundsException}} during compilation 
with an assert and map-constructor-call
                 Key: GROOVY-12453
                 URL: https://issues.apache.org/jira/browse/GROOVY-12453
             Project: Groovy
          Issue Type: Bug
    Affects Versions: 6.0.0
            Reporter: Björn Kautler


Given the snippet
{code:groovy}
class Person2 {
  def name
  def age
}
@groovy.transform.CompileStatic
def foo() {
  def fred = "fred"
  def fredsAge = 25
  assert new Person2([name: fred, age: fredsAge])
}
foo() {code}
If you compile it in Groovy Web Console with Groovy up to 5.1, everything is 
fine.

If you switch to Groovy 6, you get this exception:
{code}
Unable to produce AST for this phase due to earlier compilation error:
startup failed:
General error during instruction selection: size==0

java.lang.ArrayIndexOutOfBoundsException: size==0
        at 
org.codehaus.groovy.classgen.asm.OperandStack.ensureStackNotEmpty(OperandStack.java:310)
        at 
org.codehaus.groovy.classgen.asm.OperandStack.getTopOperand(OperandStack.java:700)
        at 
org.codehaus.groovy.classgen.asm.OperandStack.dup(OperandStack.java:213)
        at 
org.codehaus.groovy.classgen.asm.AssertionWriter.record(AssertionWriter.java:291)
        at 
org.codehaus.groovy.classgen.asm.AssertionWriter.record(AssertionWriter.java:284)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:1245)
        at 
org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:103)
        at 
org.codehaus.groovy.classgen.asm.sc.StaticTypesBinaryExpressionMultiTypeDispatcher.makeSetProperty(StaticTypesBinaryExpressionMultiTypeDispatcher.java:338)
        at 
org.codehaus.groovy.classgen.asm.sc.StaticTypesBinaryExpressionMultiTypeDispatcher.evaluateEqual(StaticTypesBinaryExpressionMultiTypeDispatcher.java:227)
        at 
org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.eval(BinaryExpressionHelper.java:224)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitBinaryExpression(AsmClassGenerator.java:1019)
        at 
org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:80)
        at 
org.codehaus.groovy.transform.sc.transformers.ConstructorCallTransformer$MapStyleConstructorCall.visit(ConstructorCallTransformer.java:183)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitBytecodeExpression(AsmClassGenerator.java:2255)
        at 
org.codehaus.groovy.classgen.BytecodeExpression.visit(BytecodeExpression.java:80)
        at 
org.codehaus.groovy.transform.sc.transformers.ConstructorCallTransformer$MapStyleConstructorCall.visit(ConstructorCallTransformer.java:141)
        at 
org.codehaus.groovy.transform.sc.transformers.BooleanExpressionTransformer$OptimizingBooleanExpression.visit(BooleanExpressionTransformer.java:129)
        at 
org.codehaus.groovy.classgen.asm.AssertionWriter.writeAssertStatement(AssertionWriter.java:123)
        at 
org.codehaus.groovy.classgen.asm.StatementWriter.writeAssert(StatementWriter.java:878)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitAssertStatement(AsmClassGenerator.java:891)
        at 
org.codehaus.groovy.ast.stmt.AssertStatement.visit(AssertStatement.java:67)
        at 
org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:151)
        at 
org.codehaus.groovy.classgen.asm.sc.StaticTypesStatementWriter.writeBlockStatement(StaticTypesStatementWriter.java:91)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:851)
        at 
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:84)
        at 
org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:151)
        at 
org.codehaus.groovy.classgen.asm.sc.StaticTypesStatementWriter.writeBlockStatement(StaticTypesStatementWriter.java:91)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:851)
        at 
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:84)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:693)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:626)
        at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:181)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitMethod(AsmClassGenerator.java:782)
        at org.codehaus.groovy.ast.ClassNode.visitMethods(ClassNode.java:1851)
        at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1837)
        at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:89)
        at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:431)
        at 
org.codehaus.groovy.control.CompilationUnit$3.call(CompilationUnit.java:876)
        at 
org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:1097)
        at 
org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:764)
        at 
org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:738)
        at 
spock.util.SourceToAstNodeAndSourceTranspiler.compileScript(SourceToAstNodeAndSourceTranspiler.groovy:93)
        at 
spock.util.EmbeddedSpecCompiler.doTranspile(EmbeddedSpecCompiler.groovy:162)
        at 
spock.util.EmbeddedSpecCompiler.doTranspile(EmbeddedSpecCompiler.groovy)
        at 
spock.util.EmbeddedSpecCompiler.transpile(EmbeddedSpecCompiler.groovy:157)
        at gwc.spock.AstRenderer.render(AstRenderer.java:14)
        at gwc.spock.SpockSpecSupport.renderAst(SpockSpecSupport.java:22)
        at gwc.GFunctionExecutor.handleRealInvocation(GFunctionExecutor.java:97)
        at gwc.GFunctionExecutor.service(GFunctionExecutor.java:66)
        at 
com.google.cloud.functions.invoker.HttpFunctionExecutor.handle(HttpFunctionExecutor.java:78)
        at org.eclipse.jetty.server.Handler$Wrapper.handle(Handler.java:794)
        at 
com.google.cloud.functions.invoker.http.TimeoutHandler.handle(TimeoutHandler.java:52)
        at 
org.eclipse.jetty.server.handler.EagerContentHandler.onConditionsMet(EagerContentHandler.java:155)
        at 
org.eclipse.jetty.server.handler.ConditionalHandler.handle(ConditionalHandler.java:378)
        at org.eclipse.jetty.server.Handler$Wrapper.handle(Handler.java:794)
        at 
com.google.cloud.functions.invoker.runner.Invoker$NotFoundHandler.handle(Invoker.java:498)
        at org.eclipse.jetty.server.Server.handle(Server.java:197)
        at 
org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:788)
        at 
org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:420)
        at 
org.eclipse.jetty.server.internal.HttpConnection$FillableCallback.succeeded(HttpConnection.java:1809)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
        at 
org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:54)
        at 
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:492)
        at 
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.epcRunTask(AdaptiveExecutionStrategy.java:428)
        at 
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:401)
        at 
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:255)
        at 
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:204)
        at 
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:317)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:1009)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1240)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1194)
        at java.base/java.lang.Thread.run(Thread.java:1583)

1 error{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to