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)