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

Pascal Schumacher closed GROOVY-5902.
-------------------------------------
    Resolution: Cannot Reproduce

Using Groovy 2.4.5 this example compiles and runs:

{code:java}@Grapes( 
        [@Grab(group='org.slf4j', module='slf4j-simple', version='1.6.1'),
        @Grab(group='com.google.guava', module='guava', version='18.0')]
)
import org.slf4j.*
import com.google.common.collect.ImmutableMap
import groovy.transform.*

@CompileStatic
class Test {

        static main(args) {
                final Logger log = LoggerFactory.getLogger('AgentRepository')
                final ImmutableMap<String, String> agents = ImmutableMap.of()
                log.info("Loaded {} agents: {}", agents.size(), agents.keySet())
        }
}{code}

therefore I'm closing this.

> Problems using @CompileStatic
> -----------------------------
>
>                 Key: GROOVY-5902
>                 URL: https://issues.apache.org/jira/browse/GROOVY-5902
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static compilation
>    Affects Versions: 2.0.6, 2.1.0-rc-1
>            Reporter: Johann
>
> I was trying out {{@CompileStatic}} on a hotspot class again. After I removed 
> 21 compile errors from the class (~150 lines), I got this error message:
> {code}
> exception handling
> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup 
> failed:
> General error during class generation: size==0
> java.lang.ArrayIndexOutOfBoundsException: size==0
>       at 
> org.codehaus.groovy.classgen.asm.OperandStack.doConvertAndCast(OperandStack.java:312)
>       at 
> org.codehaus.groovy.classgen.asm.OperandStack.doGroovyCast(OperandStack.java:296)
>       at 
> org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.loadArguments(StaticInvocationWriter.java:251)
>       at 
> org.codehaus.groovy.classgen.asm.InvocationWriter.writeDirectMethodCall(InvocationWriter.java:130)
>       at 
> org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.writeDirectMethodCall(StaticInvocationWriter.java:185)
>       at 
> org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:223)
>       at 
> org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:76)
>       at 
> org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.makeCall(StaticInvocationWriter.java:412)
>       at 
> org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:60)
>       at 
> org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:336)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:647)
>       at 
> org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:67)
>       at 
> org.codehaus.groovy.classgen.asm.StatementWriter.writeReturn(StatementWriter.java:584)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitReturnStatement(AsmClassGenerator.java:504)
>       at 
> org.codehaus.groovy.ast.stmt.ReturnStatement.visit(ReturnStatement.java:47)
>       at 
> org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:81)
>       at 
> org.codehaus.groovy.classgen.asm.sc.StaticTypesStatementWriter.writeBlockStatement(StaticTypesStatementWriter.java:49)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:454)
>       at 
> org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
>       at 
> org.codehaus.groovy.classgen.asm.StatementWriter.writeIfElse(StatementWriter.java:287)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitIfElse(AsmClassGenerator.java:470)
>       at org.codehaus.groovy.ast.stmt.IfStatement.visit(IfStatement.java:41)
>       at 
> org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:81)
>       at 
> org.codehaus.groovy.classgen.asm.sc.StaticTypesStatementWriter.writeBlockStatement(StaticTypesStatementWriter.java:49)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:454)
>       at 
> org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
>       at 
> org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:102)
>       at 
> org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:113)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:318)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:275)
>       at 
> org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:124)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitMethod(AsmClassGenerator.java:395)
>       at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1174)
>       at 
> org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:51)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:179)
>       at 
> org.codehaus.groovy.control.CompilationUnit$6.call(CompilationUnit.java:857)
>       at 
> org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1191)
>       at 
> org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:623)
>       at 
> org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:601)
>       at 
> org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:578)
>       at 
> org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.processToPhase(GroovyCompilationUnitDeclaration.java:171)
>       at 
> org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.generateCode(GroovyCompilationUnitDeclaration.java:1534)
>       at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:838)
>       at 
> org.eclipse.jdt.internal.compiler.ProcessTaskManager.run(ProcessTaskManager.java:137)
>       at java.lang.Thread.run(Thread.java:722)
> {code}
> This was also printed out:
> {code}
> 1. ERROR in /fnuh/guh/keks/blorb/Blorb.groovy (at line 0)
>       /**
>       ^
> General error during class generation: size==0
> {code}
> So I thought the parser would trip over the leading file comment but it 
> didn't.
> Another thing you might want to look at:
> {code}
>       log.info('couldn\'t parse {}', url as String)
>       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Groovy:[Static type checking] - Cannot find matching method 
> org.slf4j.Logger#info(java.lang.String, java.lang.String). Please check if 
> the declared type is right and if the method exists.
> {code}
> The method in {{org.slf4j.Logger}} has a {{info(java.lang.String, 
> java.lang.Object)}} signature. The logger was inserted through {{@Slf4j}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to