Re:Java8 plugin that adds support for persistent local varia...
by revscat on Monday May 27, 2013 @11:34PM
(#5777881)
This seems more easily parsed by humans. My immediate faction to this is a positive one. Instead of having to scan the entire class to tell whether or not a variable is static, it's declared in the method itself.
Re:Java8 plugin that adds support for persistent local varia...
by huherto on Tuesday May 28, 2013 @02:00AM
(#5778364)
I don think it is very useful or practical. A similar effect can be done using static variables declared outside the methods.
But it is a good example on how to write a plugin, with annotations and instrumentation. So the interesting parts are on the code implementing this functionality.
Re:Java8 plugin that adds support for persistent local varia...
by saryant on Monday May 27, 2013 @11:28PM
(#5777857)
I'm a little unclear on its purpose myself.
Also, it seems like (if abused) it would make unit testing really cumbersome without some sort of side-effecting mechanism to expose these persistent variables.
Re:Java8 plugin that adds support for persistent local varia...
by jannotti on Monday May 27, 2013 @10:05PM
(#5777605)
Pretty neat. A simple transform, but I prefer this style and miss C's static in some cases.
The doc says that the transformed variable name uses the method name for a suffix to avoid name clashing. But it needs to use the signature, right? Else you would have clashes for two methods with the same name (but different arguments).
I think it should also use $, since that's the convention to avoid clashes with user defined names.
Re:Java8 plugin that adds support for persistent local varia...
by cpeterso on Monday May 27, 2013 @11:51PM
(#5777938)
Simply appending a number to the variable name would be adequate to prevent name conflicts. Each method would only access its own static variable, so fancy C++-style name mangling would be overkill.
But it is a good example on how to write a plugin, with annotations and instrumentation. So the interesting parts are on the code implementing this functionality.
Also, it seems like (if abused) it would make unit testing really cumbersome without some sort of side-effecting mechanism to expose these persistent variables.
The doc says that the transformed variable name uses the method name for a suffix to avoid name clashing. But it needs to use the signature, right? Else you would have clashes for two methods with the same name (but different arguments).
I think it should also use $, since that's the convention to avoid clashes with user defined names.