Jim Klimov created GROOVY-11058:
-----------------------------------

             Summary: plus() on UnmodifiableMap returns a new Map with changed 
data
                 Key: GROOVY-11058
                 URL: https://issues.apache.org/jira/browse/GROOVY-11058
             Project: Groovy
          Issue Type: Bug
          Components: Groovy Console
    Affects Versions: 2.4.21
            Reporter: Jim Klimov


 plus() operations return a different class and modified data:

 

[https://groovyconsole.appspot.com/script/4819062429319168]

 
{code:java}
// Repro case for Groovy def m1 = [t: 'somestring', n: 1]
def m2 = Collections.unmodifiableMap(m1)println m1.getClass()
// AS EXPECTED: class java.util.LinkedHashMap
println m2.getClass()
// AS EXPECTED: class java.util.Collections$UnmodifiableMap// plus() operations 
return a different class and modified data:
m2 += [m:2]
//m2 = m2 + [m:2]
println m2.getClass()
println m2// NOT AS EXPECTED: class java.util.LinkedHashMap
// NOT AS EXPECTED: [t:somestring, n:1, m:2]// Direct operations on the view 
(put, putAll, replace, remove,
// leftShift and << operator) are constrained as expected:
def m3 = Collections.unmodifiableMap(m1)
//m3.putAll([m:2])
m3 << [m:2]
// AS EXPECTED: java.lang.UnsupportedOperationException ... {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to