groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul King <pa...@asert.com.au>
Subject Re: puzzling error message in Groovy 2.5.7
Date Fri, 20 Sep 2019 10:27:32 GMT
It does appear to be Eclipse related. Can you compile outside Eclipse? If
so, does the resulting class have the same inefficiency problem?

FYI, there are a small number of cases where we still call into the dynamic
runtime even when @CompileStatic is in place. That is also a possibility.
Looking at the bytecode can sometimes indicate such edge cases. There are
sometimes ways to avoid those edge cases with some alternative coding.

Cheers, Paul.

On Fri, Sep 20, 2019 at 2:34 AM Ralph Johnson <rjohnson.uiuc@gmail.com>
wrote:

> I recently moved a large codebase to Groovy 2.5.7.   I use Eclipse as my
> programming environment.     The system mostly works, but I get a strange
> error that puzzles me.  One of my Groovy classes (PropertyDefinition) seems
> to generate a type-checking error, except that it seems that Eclipse is
> complaining about nothing and the program runs fine.
>
> Eclipse shows an error-marker at the top of the file but does NOT show an
> error in the project browser or give me a warning when I launch the
> program.  The error-marker shows that the type-checker crashed, it does not
> complain about any particular line.   The message associated with the
> error-marker is
>
> General error during instruction selection: Failed to initialize members
> for type com.metaficient.core.objectmodel.PropertyDefinition
> java.lang.RuntimeException: Failed to initialize members for type
>
>  com.metaficient.core.objectmodel.PropertyDefinition at
> org.codehaus.jdt.groovy.internal.compiler.ast.JDTClassNode.initializeMembers(JDTClassNode.java:306)
> at
>
>  org.codehaus.jdt.groovy.internal.compiler.ast.JDTClassNode.initialize(JDTClassNode.java:202)
> at
> org.codehaus.jdt.groovy.internal.compiler.ast.JDTClassNode.lazyClassInit(JDTClassNode.java:169)
> at
>
>  org.codehaus.groovy.ast.ClassNode.getUnresolvedSuperClass(ClassNode.java:1150)
> at
> org.codehaus.groovy.ast.ClassNode.getUnresolvedSuperClass(ClassNode.java:1139)
> at
>
>
> and so on for many lines.   This gets called by Groovy's
> StaticTypeCheckingVisitor, which in turn is invoked by Eclipse.  A number
> of files (a small percent of the whole) give the same error message,
> including complaining about PropertyDefinition in the first line.
>
>
> I have set @CompileStatic and if I comment out that line, the error
> message goes away.   But I want it to be compiled statically!
>
>
> How would I figure out what is causing this?   I assume it is both a bug
> in the Groovy compiler (because it is not giving a property error message)
> and something I am doing wrong that is triggering the bug.
>
>
> Also, the system is running about ten times slower than I expected.   I
> wonder whether this bug is causing parts of the system to turn off
> @CompileStatic even though I declared it.   Does that seem likely?   If so,
> it is very important for me to fix this problem.
>
>
> -Ralph Johnson
>

Mime
View raw message