[ 
https://issues.apache.org/jira/browse/GROOVY-11439?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thodoris Sotiropoulos closed GROOVY-11439.
------------------------------------------
    Resolution: Information Provided

> closure is assignable to java.io.InputStream
> --------------------------------------------
>
>                 Key: GROOVY-11439
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11439
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static Type Checker
>            Reporter: Thodoris Sotiropoulos
>            Priority: Minor
>              Labels: groovy
>
> I am not sure if this is an expected behavior or not, but a lambda expression 
> is assignable to java.io.InputStream
>  
> {code:java}
> class Test {
>   public static void main(String[] args) {
>     java.io.InputStream x = (int p, int p2) ->   p;
>     System.out.println(x.read());
>   }
> } {code}
> h3. Actual behavior
> The code compiles, but I get the following exception at runtime
> {code:java}
> Exception in thread "main" groovy.lang.MissingMethodException: No signature 
> of method: Test$_main_closure1.doCall() is applicable for argument types: () 
> values: []
> Possible solutions: doCall(int, int), isCase(java.lang.Object), 
> isCase(java.lang.Object), findAll(), findAll(), findAll(groovy.lang.Closure)
>     at 
> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:259)
>     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1006)
>     at groovy.lang.Closure.call(Closure.java:452)
>     at InputStream1_groovyProxy.read(Unknown Source)
>     at Test.main(test.groovy:4) {code}
> h3. Expected behavior
> The code should have been rejected.



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

Reply via email to