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

Eric Milles resolved GROOVY-5776.
---------------------------------
    Resolution: Fixed

> Accessing static property in closure of sub-class creates a "serious error"
> ---------------------------------------------------------------------------
>
>                 Key: GROOVY-5776
>                 URL: https://issues.apache.org/jira/browse/GROOVY-5776
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.0.4, 2.4.0-rc-1
>            Reporter: Andrew Eisenberg
>            Priority: Major
>
> Discovered in GRECLIPSE-1492.  Compile the following snippet in Groovy 2.0.4:
> {code}
> class TestappService extends ServiceBase {
>       def foo = { params ->
>               def param = params[TESTAPP_IDX]
>               return "Hello, ${param}"
>       }
> }
> class ServiceBase {
>       static final String TESTAPP_IDX = 'index'
> }
> {code}
> You get this stack trace:
> {quote}
> >>> a serious error occurred: BUG! exception in phase 'class generation' in 
> >>> source unit 'foo.groovy' Trying to access private constant field 
> >>> [ServiceBase#TESTAPP_IDX] from inner class
> >>> stacktrace:
> BUG! exception in phase 'class generation' in source unit 'foot.groovy' 
> Trying to access private constant field [ServiceBase#TESTAPP_IDX] from inner 
> class
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitAttributeOrProperty(AsmClassGenerator.java:966)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitPropertyExpression(AsmClassGenerator.java:1052)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.processClassVariable(AsmClassGenerator.java:1292)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitVariableExpression(AsmClassGenerator.java:1249)
>       at 
> org.codehaus.groovy.ast.expr.VariableExpression.visit(VariableExpression.java:70)
>       at 
> org.codehaus.groovy.classgen.asm.CallSiteWriter.visitBoxedArgument(CallSiteWriter.java:239)
>       at 
> org.codehaus.groovy.classgen.asm.CallSiteWriter.makeSingleArgumentCall(CallSiteWriter.java:252)
>       at 
> org.codehaus.groovy.classgen.asm.InvocationWriter.makeSingleArgumentCall(InvocationWriter.java:482)
>       at 
> org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.evaluateBinaryExpression(BinaryExpressionHelper.java:504)
>       at 
> org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.eval(BinaryExpressionHelper.java:239)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitBinaryExpression(AsmClassGenerator.java:527)
>       at 
> org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:49)
>       at 
> org.codehaus.groovy.classgen.asm.BinaryExpressionHelper.evaluateEqual(BinaryExpressionHelper.java:295)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitDeclarationExpression(AsmClassGenerator.java:522)
>       at 
> org.codehaus.groovy.ast.expr.DeclarationExpression.visit(DeclarationExpression.java:87)
>       at 
> org.codehaus.groovy.classgen.asm.StatementWriter.writeExpressionStatement(StatementWriter.java:604)
>       at 
> org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeExpressionStatement(OptimizingStatementWriter.java:354)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitExpressionStatement(AsmClassGenerator.java:509)
>       at 
> org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
>       at 
> org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:81)
>       at 
> org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeBlockStatement(OptimizingStatementWriter.java:155)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:455)
>       at 
> org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
>       at 
> org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:101)
>       at 
> org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:112)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:319)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:276)
>       at 
> org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:123)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitMethod(AsmClassGenerator.java:396)
>       at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1056)
>       at 
> org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:50)
>       at 
> org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:180)
>       at 
> org.codehaus.groovy.control.CompilationUnit$14.call(CompilationUnit.java:786)
>       at 
> org.codehaus.groovy.control.CompilationUnit$14.call(CompilationUnit.java:803)
>       at 
> org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1027)
>       at 
> org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:564)
>       at 
> org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:542)
>       at 
> org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:519)
>       at 
> org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:498)
>       at 
> org.codehaus.groovy.tools.FileSystemCompiler.compile(FileSystemCompiler.java:57)
>       at 
> org.codehaus.groovy.tools.FileSystemCompiler.doCompilation(FileSystemCompiler.java:213)
>       at 
> org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompile(FileSystemCompiler.java:146)
>       at 
> org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompileWithErrorHandling(FileSystemCompiler.java:176)
>       at 
> org.codehaus.groovy.tools.FileSystemCompiler.main(FileSystemCompiler.java:160)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at 
> org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:106)
>       at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:128)
> {quote}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to