[
https://issues.apache.org/jira/browse/GROOVY-9270?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles updated GROOVY-9270:
--------------------------------
Description:
Using "instanceof boolean" or using a Trait will cause the compiled code to not
work with OSGi/maven-bundle-plugin/bnd.
The "if ( val instanceof boolean)..." should cause a compiler error since
"boolean" is not an object, and clearly not autoboxed here. This compiles fine
and produced a .class file. maven-bundle-plugin or possibly Bnd used under the
surface will however have nothing to do with this class since Groovy has
produced some strange code. m-b-p/bnd complains about code in default package
in this case. Making the "boolean" a "Boolean" makes the problem go away. But
the first one is wrong, it should not compile, but cause an error. Groovy does
not produce valid code for this case.
Using a "trait" has exactly the same effect as described above. m-b-p/bnd
complains about code in default package. If that is a side effect of using
traits then traits cannot be used in an OSGi environment. This feels more of a
less than optimal implementation of traits in groovy. I will not call this a
bug :).
The instanceof case however feels like a bug.
was:
Using "instanceof boolean" or using a Trait will cause the compiled code to not
work with OSGi/maven-bundle-plugin/bnd.
The "if ( val instanceof boolean)..." should cause a compiler error since
"boolean" is not an object, and clearly not autoboxed here. This compiles fine
and produced a .class file. maven-bundle-plugin or possibly Bnd used under the
surface will however have nothing to do with this class since Groovy has
produced some strange code. m-b-p/bnd complains about code in default package
in this case. Making the "boolean" a "Boolean" makes the problem go away. But
the first one is wrong, it should not compile, but cause an error. Groovy does
not produce valid code for this case.
Using a "trait" has exactly the same effect as described above. m-b-p/bnd
complains about code in default package. If that is a side effect of using
traits then traits cannot be used in an OSGi environment. This feels more of a
less than optimal implementation of traits in groovy. I will not call this a
bug :).
The instanceof case however feels like a bug.
I also HATE JIRA!! No this is not "Critical", but it is however not "Minor"
either. In Jira you are either in hell or in heaven, earth does not exist ...
> Using "instanceof boolean" or using a Trait will cause the compiled code to
> not work with OSGi/maven-bundle-plugin/bnd
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: GROOVY-9270
> URL: https://issues.apache.org/jira/browse/GROOVY-9270
> Project: Groovy
> Issue Type: Bug
> Components: class generator, Compiler
> Environment: OSX (Mojave) JDK 11.
> Reporter: Tommy Svensson
> Priority: Major
>
> Using "instanceof boolean" or using a Trait will cause the compiled code to
> not work with OSGi/maven-bundle-plugin/bnd.
> The "if ( val instanceof boolean)..." should cause a compiler error since
> "boolean" is not an object, and clearly not autoboxed here. This compiles
> fine and produced a .class file. maven-bundle-plugin or possibly Bnd used
> under the surface will however have nothing to do with this class since
> Groovy has produced some strange code. m-b-p/bnd complains about code in
> default package in this case. Making the "boolean" a "Boolean" makes the
> problem go away. But the first one is wrong, it should not compile, but cause
> an error. Groovy does not produce valid code for this case.
> Using a "trait" has exactly the same effect as described above. m-b-p/bnd
> complains about code in default package. If that is a side effect of using
> traits then traits cannot be used in an OSGi environment. This feels more of
> a less than optimal implementation of traits in groovy. I will not call this
> a bug :).
> The instanceof case however feels like a bug.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)