[
https://issues.apache.org/jira/browse/GROOVY-9244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16928710#comment-16928710
]
Eric Milles commented on GROOVY-9244:
-------------------------------------
I'm not sure if the cast or coerce leaves anything around for the runtime
system. I tried assigning null to a variable of type String and it didn't make
any difference. Certainly this and 9245 are problems, since intuition would
tell you that the choice of constructors is not ambiguous. Next step would be
to step into the MOP code to see what is known at the time of constructor
selection. It may be possible to infer the "type" of null in these cases.
> Anonymous subclasses should cast their super-parameters
> -------------------------------------------------------
>
> Key: GROOVY-9244
> URL: https://issues.apache.org/jira/browse/GROOVY-9244
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 2.4.7, 2.5.7
> Environment: I tried in GroovyConsole 2.4.7 and Groovy web console
> 2.5.7
> Reporter: Björn Kautler
> Priority: Major
>
> Given this code:
> {noformat}
> import java.util.regex.Pattern
> abstract class Groovy3 {
> Groovy3(String s) { println "String" }
> Groovy3(Pattern p) { println "Pattern" }
> }
> class Groovy4 extends Groovy3 {
> Groovy4(String s) { super(s) }
> Groovy4(Pattern p) { super(p) }
> }
> class Groovy5 extends Groovy3 {
> Groovy5(String s) { super(s as String) }
> Groovy5(Pattern p) { super(p as Pattern) }
> }
> class Groovy6 {
> Groovy6(String s) { println "String" }
> Groovy6(Pattern p) { println "Pattern" }
> }
> new Groovy3(null as String) { }
> new Groovy4(null as String)
> new Groovy5(null as String)
> new Groovy6(null as String)
> {noformat}
> Groovy3ish and Groovy4 instantiation fail
> Groovy5 and Groovy6 instantiation succeed and print {{String}}.
> I did not find a way to make the Groovy3ish one work, except for doing it the
> Groovy4 way, but no chance with an anonymous subclass.
> From what I observed, I guess the anonymous subclass does it like Groovy4 but
> should do it like Groovy5 to properly select the super constructor.
--
This message was sent by Atlassian Jira
(v8.3.2#803003)