[ https://issues.apache.org/jira/browse/GROOVY-9971?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-9971. ----------------------------- > @TypeChecked: Closure<String> no longer compatible with Closure<GString> > argument > --------------------------------------------------------------------------------- > > Key: GROOVY-9971 > URL: https://issues.apache.org/jira/browse/GROOVY-9971 > Project: Groovy > Issue Type: Bug > Components: Compiler > Affects Versions: 3.0.7 > Environment: Windows 10 > jdk-11.0.10.9-hotspot > IntelliJ 2020.3.2 > Reporter: mgroovy > Assignee: Eric Milles > Priority: Major > Fix For: 4.0.0-alpha-3 > > Time Spent: 0.5h > Remaining Estimate: 0h > > *Problem* > A Closure<String> is in Groovy 3 no longer compatible with a closure that > returns a GString (or String|GString), even though GString is autoconverted > to String in Groovy. > *Expected* > A Closure returning a GString or a String|GString should be compatible with > Closure<String> > *Sample Code* > {code:java} > import groovy.transform.TypeChecked > import org.junit.Ignore > import org.junit.Test > @TypeChecked > class Groovy3_ClosureOfString_GString_Compatible { > @Test @Ignore > void 'Groovy 3-0-7 Closure with String return type not compatible with > GString argument'() { > final x = 123 > // Cannot find matching method > execStringCls(Closure<groovy.lang.GString>) > assert execStringCls { "x=$x" } == 'x=123' > //assert execStringCls { "x=$x".toString() } == 'x=123' // > works > } > @Test @Ignore > void 'Groovy 3-0-7 Closure with String return type not compatible with > GString argument 2'() { > final x = 123 > // Cannot find matching method > execStringCls(Closure<java.io.Serializable>) > assert execStringCls { false ? 'abc' : "x=$x" } == 'x=123' > //assert execStringCls { true ? 'abc' : "x=$x".toString() } == > 'x=123' // works > } > String execStringCls(Closure<String> cls) { > cls() > } > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)