Issue #15616 has been updated by ahorek (Pavel Rosick=FD).


```
+foo.gsub!("bar", "car")
```
 stands for
```
+(foo.gsub!("bar", "car"))
```
and because foo is frozen, you'll get an error, see #15606


try this
```
foo =3D "bar".freeze
foo =3D (+foo).gsub!("bar", "car")
```
or
```
foo =3D "bar".freeze
foo =3D foo.gsub("bar", "car")
```


----------------------------------------
Bug #15616: Chained destructive methods fail when using +@ to unfreeze a fr=
ozen string
https://bugs.ruby-lang.org/issues/15616#change-76877

* Author: cianooooo (Cian O)
* Status: Open
* Priority: Normal
* Assignee: =

* Target version: =

* ruby -v: 2.6.1
* Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Using the +@ syntax to unfreeze a string does not work when chaining destru=
ctive methods

Consider the following;
``` ruby
foo =3D "bar".freeze
+foo.gsub!("bar", "car")
```

This raises;
``` ruby
FrozenError: can't modify frozen String
```

However, I would have expected this to work since +@ should return a duplic=
ated mutable string.



-- =

https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=3Dunsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>