[ https://issues.apache.org/jira/browse/GROOVY-11685?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17955418#comment-17955418 ]
Eric Milles commented on GROOVY-11685: -------------------------------------- In [this method|https://github.com/brown-uk/nlp_uk/blob/f30e69fac5ce739d962d8aa24230655a8912640c/src/main/groovy/ua/net/nlp/tools/tag/TagUnknown.groovy#L63], you rely on "def" to do a lot of heavy lifting. You could move the default value (empty array list) to an else block under the check for non-empty opToTagMap. Anyways, besides adding some types along the way, I think the main problem is your closure has two return statements. One returns a new TaggedToken and the other just returns. Adding null to the return (with or without a typecast) should fix it up. {code:groovy} Map<String, Map<WordReading, Integer>> lemmaSuffixStatsF = [:].withDefault { [:].withDefault { 0 } } def opToTagMap = lemmaSuffixStatsF[last3] // replace "def" with "Map<WordReading, Integer>" opToTagMap = opToTagMap.findAll { e -> getCoeff(e, token, idx, tokens) > 0 } opToTagMap = opToTagMap.toSorted { e -> - getCoeff(e, token, idx, tokens) } List<TaggedToken> retTokens = [] // move this to else block retTokens = opToTagMap.collect { /*Map.Entry<WordReading, Integer>*/ e -> ... if (...) return // probably need to add "(TaggedToken) null" ... new TaggedToken(value: token, lemma: lemma, tags: wr.postag, confidence: q) } return retTokens {code} Small nitpick: When you want to collect all non-null things aka "x.collect{...}.findAll{ it != null}", [findResults|https://github.com/apache/groovy/blob/a095d672630ddab9dfc1b66a52313c1d152f28c5/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java#L6346] does that without the extra findAll step (and intermediate collection). > Static type checking fails with groovy 5.x > ------------------------------------------ > > Key: GROOVY-11685 > URL: https://issues.apache.org/jira/browse/GROOVY-11685 > Project: Groovy > Issue Type: Bug > Affects Versions: 5.0.0-beta-1 > Reporter: Andriy Rysin > Assignee: Eric Milles > Priority: Major > > This project can compile and run under groovy-4 but fails static type > checking with groovy-5. I could not find what would be wrong with the code. > [https://github.com/brown-uk/nlp_uk] > {noformat} > org.codehaus.groovy.control.MultipleCompilationErrorsException: startup > failed: > file:/home/user/nlp_uk/src/main/groovy/ua/net/nlp/tools/TextUtils.groovy: > 182: [Static type checking] - Cannot call > java.util.function.Consumer#call(capture-o > f ? extends ua.net.nlp.tools.TextUtils.ResultBase) with arguments > [ua.net.nlp.tools.TextUtils$ResultBase] > @ line 182, column 6. > postProcessClosure(analyzed) > ^ > file:/home/user/nlp_uk/src/main/groovy/ua/net/nlp/tools/TextUtils.groovy: > 200: [Static type checking] - Cannot call > java.util.function.Consumer#call(capture-o > f ? extends ua.net.nlp.tools.TextUtils.ResultBase) with arguments > [ua.net.nlp.tools.TextUtils$ResultBase] > @ line 200, column 4. > postProcessClosure(analyzed) > ^ > file:/home/user/nlp_uk/src/main/groovy/ua/net/nlp/tools/tag/TagUnknown.groovy: > 97: [Static type checking] - Incompatible generic argument types. Cannot > assign > java.util.List<java.lang.Object> to: > java.util.List<ua.net.nlp.tools.tag.TagTextCore.TaggedToken> > @ line 97, column 25. > retTokens = opToTagMap.collect { e -> > ^ > file:/home/user/nlp_uk/src/main/groovy/ua/net/nlp/tools/tag/TagUnknown.groovy: > 136: [Static type checking] - Incompatible generic argument types. Cannot > assig > n java.util.List<? extends java.lang.Object> to: > java.util.List<ua.net.nlp.tools.tag.TagTextCore.TaggedToken> > @ line 136, column 16. > return retTokens > ^ > {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)