You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2022/02/03 22:36:00 UTC

[jira] [Closed] (GROOVY-10457) Compilation of constructor calls inside CompileDynamic constructors fails with ArrayIndexOutOfBoundsException

     [ https://issues.apache.org/jira/browse/GROOVY-10457?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul King closed GROOVY-10457.
------------------------------

> Compilation of constructor calls inside CompileDynamic constructors fails with ArrayIndexOutOfBoundsException
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-10457
>                 URL: https://issues.apache.org/jira/browse/GROOVY-10457
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 3.0.9, 4.0.0-rc-2
>            Reporter: Nikolay Chashnikov
>            Assignee: Eric Milles
>            Priority: Major
>             Fix For: 2.5.16, 3.0.10, 4.0.0
>
>
> Try compiling the following code using Groovy 3.0.9:
> {code:groovy}
> import groovy.transform.CompileDynamic
> import groovy.transform.CompileStatic
> @CompileStatic
> class MyConstructorBug {
>     @CompileDynamic
>     MyConstructorBug() {
>         StringReader reader = new StringReader("abc")
>     }
> }
> {code}
> It'll fail with the following exception:
> {noformat}
> java.lang.ArrayIndexOutOfBoundsException: size==0
> 	at org.codehaus.groovy.classgen.asm.OperandStack.ensureStackNotEmpty(OperandStack.java:279)
> 	at org.codehaus.groovy.classgen.asm.OperandStack.getTopOperand(OperandStack.java:646)
> 	at org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.evaluateEqual(BinaryExpressionHelper.java:400)
> 	at org.codehaus.groovy.classgen.asm.sc.StaticTypesBinaryExpressionMultiTypeDispatcher.evaluateEqual(StaticTypesBinaryExpressionMultiTypeDispatcher.java:202)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitDeclarationExpression(AsmClassGenerator.java:702)
> 	at org.codehaus.groovy.ast.expr.DeclarationExpression.visit(DeclarationExpression.java:89)
> 	at org.codehaus.groovy.classgen.asm.StatementWriter.writeExpressionStatement(StatementWriter.java:635)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitExpressionStatement(AsmClassGenerator.java:687)
> 	at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
> 	at org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:94)
> 	at org.codehaus.groovy.classgen.asm.sc.StaticTypesStatementWriter.writeBlockStatement(StaticTypesStatementWriter.java:78)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:618)
> 	at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
> 	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:138)
> 	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:111)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:462)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:409)
> 	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructor(ClassCodeVisitorSupport.java:101)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructor(AsmClassGenerator.java:551)
> 	at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1089)
> 	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:52)
> 	at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:272)
> 	at org.codehaus.groovy.control.CompilationUnit$3.call(CompilationUnit.java:797)
> 	at org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:942)
> 	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671)
> 	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635)
> 	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:610)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)