[ 
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)

Reply via email to