paulk-asert commented on PR #3007:
URL: https://github.com/apache/groovy/pull/3007#issuecomment-6405311480

   Thanks Daniel. Answers to your points, all checked against a local build of 
this head:
   
   - Bridge: Bridger turns abs$$bridge into abs(Number)I flagged 
ACC_BRIDGE|ACC_SYNTHETIC. A Java class and a @CompileStatic class compiled 
against 6.0.0-beta-2 run unchanged on the new jar, still with the old 
truncating result as intended for legacy callers. Same pattern as the existing 
chop$$bridge and findIndexValues$$bridge. The bridge name is not visible to 
dynamic dispatch.
   - Static selection: Integer receivers resolve to abs(Integer) → int; 
receivers typed as Number resolve to abs(Number) → Number.
   - Long.MIN_VALUE: NumberMath.abs delegates to Math.abs(long), so 
Long.MIN_VALUE stays Long.MIN_VALUE, identical to the existing abs(Long) and to 
Java. I'll add a sentence to the javadoc.
   - @since: 6.0.1, assuming backport to 6_0_X.
   
   One side effect worth calling out. Under @CompileStatic, `int x = n.abs()` 
with a Number-typed receiver is now an STC error ("Cannot assign value of type 
java.lang.Number to variable of type int"), and Java callers assigning the 
result to int get the equivalent javac error. For Number receivers that code 
was already producing wrong values, so I think the compile error is the right 
outcome.
   
   Short and byte receivers were correct before, though, and would have fallen 
into the same error since they resolve to abs(Number). I've added int 
abs(Short) and int abs(Byte) overloads so those keep compiling and keep 
returning int, with tests covering the static int assignment, Short.MIN_VALUE 
and Byte.MIN_VALUE, and the dynamic result type. The remaining source change is 
confined to receivers whose static type is Number itself. I'll note that in 
COMPATIBILITY.md.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to