Closing the Null.class inside ClassString, never to get out from there. Some trivial cleanup.
Fixed FTL stack trace glitch where if an #if had and #else or #elseif, the #if/#else/#elseif wasn't hidden in the FTL stack trace when the error was inside its nested block.
Canonical form bug: assignment target variables need to be quoted sometimes, like <#assign "foo bar" = 1>.
Added option to test.ASTPrinter to print node locations too (not possible with the CLI...)
ParseException-s now also store the end-location of the error, not just its start-location. This is useful if you want to underline the error in the source code, not just point at it.
(Fixing wrong test case:The old behavior gives Object, as the are two most specific common classes, Number and Comparable, and it can't decide.)
Test suite: Getting rid of the "class" XML attribute; we don't use it anymore. Updated JUnit dependency.
(Set Eclipse indent to 4)
(Upgraded JUnit dependency to 4.11)
(Minor version history fixes.)
Reworked how overloaded methods treat numbers with BeansWrapper(2.3.21). Along the way, some other aspects of overloaded method had to be changed as well. For more, see the changes of book.xml. But in short, overloaded method calls are now much less prone to drop decimals or truncate numbers, while they are also more lenient (like double 1.0 is seen applicable to an int parameter). Again, this all only have an effect with BeansWrapper(2.3.21).
More null-related overloaded method tests.
Added tests for ArgumentTypes.isApplicable
Made primitive-VS-boxed differences less important than subclassing and number-conversion differences when counting which overload has more "preferable" parameters. Now they only cound if there's no other kind of difference, like m(Integer, Integer, String) wins over m(int, int, Object).
Fixed bug with method argument unwrapping to a primitive "hint" type, where AdapterTemplateModel and WrapperTemplateModel had to unwrap to a primitive value, which is impossible as their return value is Object. Only active with BeansWrapper(new Version(2, 3, 21))!
(Minor version history fixes.)
Documented and tested a varargs bug that BeansWrapper(2.3.21) has fixed: With overloaded varargs methods of different parameter counts, sometimes the last parameters of the compared methods was ignored, which is taking away a potential deciding factor and thus can lead to ambiguity error. Whether this happened depends on the order in which the Java reflection API has returned the methods, which is undocumented and known to change at least after some Java updates, breaking the application.
The concurrent performance of overloaded method lookups (from the cache) was improved under Java 5 and later.
Fixing Java 1.2 compilation error.
Fixing a concurrency bug that could cause problem now that we are using ConcurrentHashMap for overloaded method lookups.