[ 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)