Hi all,
Jochen showed us how to default to CompileStatic
<http://groovy.329449.n5.nabble.com/Changing-the-default-to-CompileStatic-tp5723113p5723114.html>
in a post a few months ago. A question was raised about about changing
the default to TypeChecked for the case where a user doesn't want
CompileStatic as a default, but does want TypeChecked as a default.
Would it be the same solution as above? That is:
*config.groovy*
withConfig(configuration) {
ast(groovy.transform.TypeChecked)
}
and then do: groovyc -configscriptsrc/conf/config.groovy
src/main/groovy/MyClass.groovy
Also, if one were to specify:
*config.groovy*
withConfig(configuration) {
ast(groovy.transform.CompileStatic)
}
would that also mean that TypeChecked is enabled by default? How is it
disabled for a given class or method? Or, would one need to do the
following?
*config.groovy*
withConfig(configuration) {
ast(groovy.transform.CompileStatic)
ast(groovy.transform.TypeChecked)
}
In summary, I'm asking:
1. Is adding ast(groovy.transform.TypeChecked) in the config file how
to turn on TypeChecked by default?
2. What is the idiom to disable TypeChecked for a given class or method?
3. Does CompileStatic imply TypeChecked (so that if CompileStatic is
specified, it is not necessary to specify TypeChecked in a config file)?
Thanks,
Steve Amerige
Principal Software Developer, Fraud and Compliance Solutions Development
SAS Institute, 100 SAS Campus Dr, Room U3050, Cary, NC 27513-8617
P.S. By the way, having the ability to set the default for strong type
checking and static compilation while at the same time allowing for
specific exceptions (via @CompileDynamic, for example) has been very
useful in reducing push-back regarding Groovy adoption. Similarly,
disallowing @Grab
<http://groovy.329449.n5.nabble.com/Disabling-Grape-tp5720694p5721122.html>
as Cédric suggests is also part of helps enterprises embrace Groovy. I
encourage people to promote this and other similar features when
encountering resistance! I think there should be an entire section in
the documentation that focuses on issues like these that are of interest
to large enterprises.