Issue #16116 has been updated by Andrew Parker. Category set to language Status changed from Unreviewed to Accepted Target version set to 3.x
This is completely unwanted behavior. <pre> [14:27:51][Ruby(ruby-1.9.3-p125)][Git(3.x)] andy:puppet > puppet apply -e '$a = [1, 2] $a[0] = 3 notice($a)' Scope(Class[main]): 3 2 Finished catalog run in 0.18 seconds </pre> ---------------------------------------- Bug #16116: Arrays and hashes are mutable; new members can be added and existing values changed https://projects.puppetlabs.com/issues/16116#change-69834 Author: Nick Fagerlund Status: Accepted Priority: Normal Assignee: Category: language Target version: 3.x Affected Puppet version: Keywords: Branch: Courtesy Henrik: Puppet doesn't let you reassign variables within a given scope, but it lets you change the values of hashes and arrays by mucking with their members. That seems wrong. $myary = ['zero', 'one', 'two'] $myhash = {first => 'one', second => 'two', third => 'three'} $myary[3] = 'three' #can insert new element $myary[3] = 'something else' #can reassign notice($myary[3]) $myhash[fourth] = 'four' #can insert new element $myhash[fourth] = 'something else' #can't reassign, fails compilation notice($myhash[fourth]) $myary += ['four'] #can't append in same scope, fails compilation AND it's inconsistent, so obviously SOMETHING is whacked, even if we actually do want these objects to be mutable. I don't know what we should do about this. I think the extent to which this is being used in the wild is completely unknown. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://projects.puppetlabs.com/my/account -- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
