Thodoris Sotiropoulos created GROOVY-10912:
----------------------------------------------

             Summary: Inconsistency in the treatment of primitives values when 
passed as call arguments
                 Key: GROOVY-10912
                 URL: https://issues.apache.org/jira/browse/GROOVY-10912
             Project: Groovy
          Issue Type: Bug
          Components: Static Type Checker
            Reporter: Thodoris Sotiropoulos


I have the following program

{code}
class Test {
    void test() {
      char c = 'c' // works
      double e = 10.0; // works

      Character v = Character.valueOf('c'); // 'c' is treated as String
      Double d = Double.valueOf(10.0);  // 10.0 is treated as BigDecimal
    }
}
{code}


h3. Actual behavior

{code}
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
test.groovy: 4: [Static type checking] - Cannot find matching method 
java.lang.Character#valueOf(java.lang.String). Please check if the declared 
type is correct and if the method exists.
 @ line 4, column 21.
         Character v = Character.valueOf('c');
                       ^

test.groovy: 5: [Static type checking] - Cannot find matching method 
java.lang.Double#valueOf(java.math.BigDecimal). Please check if the declared 
type is correct and if the method exists.
 @ line 5, column 18.
         Double d = Double.valueOf(10.0);
                    ^

2 errors
{code}

h3. Expected behavior

Compile successfully


Tested against master (commit: 89de534b77e2321d46e6a9821628331693c7aae2)

The above test case demonstrates an inconsistency in the treatment of primitive 
values. For example,  the constant "10.0" is treated as something of type 
double when the constant is assigned to a double variable. However, the same 
constant is not treated as something of type double when it is passed as 
argument to a function parameter of type double.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to