Thodoris Sotiropoulos created GROOVY-9979:
---------------------------------------------
Summary: Inconsistency in handling of numeric types
Key: GROOVY-9979
URL: https://issues.apache.org/jira/browse/GROOVY-9979
Project: Groovy
Issue Type: Bug
Components: Static Type Checker
Reporter: Thodoris Sotiropoulos
I have the following program
{code:java}
public class Main {
public static void foo() {
final Byte f = (Float) 32.3 // possible loss of precision
baz((Float) 13.3) // does not report error.
}
public static Byte bar() {
return (Float) 4324141.4 // does not report error.
}
public static void baz(Byte x) {}
}
{code}
In the above program, during the assignment `final Byte f = (Float) 32.3`, I get
{code:java}
test.groovy: 4: [Static type checking] - Possible loss of precision from
java.lang.Float to java.lang.Byte
@ line 4, column 20.
final Byte f = (Float) 32.3 // possible loss of precision
^1 error
{code}
However, the compiler does not complain when returning a Float value in a
function whose return type is Byte (line 8), or passing a Float value in a
function expecting Byte (line 4).
Is this inconsistency a bug or a feature?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)