You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Graeme Rocher (JIRA)" <ji...@apache.org> on 2017/07/14 10:36:00 UTC
[jira] [Created] (GROOVY-8255) Odd problems with flow typing and
generics in Groovy 2.4.12+
Graeme Rocher created GROOVY-8255:
-------------------------------------
Summary: Odd problems with flow typing and generics in Groovy 2.4.12+
Key: GROOVY-8255
URL: https://issues.apache.org/jira/browse/GROOVY-8255
Project: Groovy
Issue Type: Bug
Affects Versions: 2.4.12
Reporter: Graeme Rocher
In order to get the GORM codebase to compile I had to make this change:
https://github.com/grails/grails-data-mapping/commit/1ef850c496d13d8ca915b27e76b6bfdb4e27377e
The code in question is:
{code}
/**
* Sets multipart values within the request body
*
* @param name The name of the multipart
* @param value The value of the multipart
*/
void setProperty(String name, value) {
if (value instanceof File) {
value = new FileSystemResource(value)
}
else if (value instanceof URL) {
value = new UrlResource(value)
}
else if (value instanceof InputStream) {
value = new InputStreamResource(value)
}
else if (value instanceof GString) {
value = value.toString()
}
if( mvm[name] ) {
mvm[name].add value
}
else {
mvm.put(name, [value]) // <--- FAILS COMPILATION HERE
}
}
{code}
No matter what I tried I could not get it into to compile. The method accepts `put(String, List<Object>)` but fails compilation with:
{code}
RequestCustomizer.groovy: 392: [Static type checking] - Cannot call org.springframework.util.MultiValueMap <String, Object>#put(java.lang.String, java.lang.Object) with arguments [java.lang.String, java.util.List <java.lang.String>]
@ line 392, column 13.
mvm.put(name, [value])
^
{code}
Altering the code to:
{code}
List<Object> values = [value]
mvm.put(name, values)
{code}
Fails with:
{code}
RequestCustomizer.groovy: 392: [Static type checking] - Incompatible generic argument types. Cannot assign java.util.List <java.lang.String> to: java.util.List <Object>
@ line 392, column 35.
List<Object> values = [value]
^
RequestCustomizer.groovy: 393: [Static type checking] - Cannot call org.springframework.util.MultiValueMap <String, Object>#put(java.lang.String, java.lang.Object) with arguments [java.lang.String, java.util.List <java.lang.String>]
@ line 393, column 13.
mvm.put(name, values)
^
2 errors
{code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)