# New Ticket Created by Zoffix Znet # Please include the string: [perl #127924] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=127924 >
Currently, if you use explicit keyword `return` to return out of a sub marked with `is rw` trait, you still get a read-only value, even though you get a read-write one if you omit `return`: <ZoffixW> m: my %h = foo => 'bar'; sub lookup ($key) is rw { return %h{$key}; }; lookup('foo') = 'meow'; say %h; <camelia> rakudo-moar 1aabef: OUTPUT«Cannot assign to a readonly variable or a value in block <unit> at /tmp/buNGUMJLYO line 1» To rectify this, `return-rw` keyword exists, BUT it doesn't require the sub to have `is rw` trait. Thus, the `is rw` trait's usefulness is narrowed down to only subs that rely on implicit returns. It also produces confusion, since an average programmer would expect explicit placement of keyword `return` to retain the program's behaviour unchanged. Thus, I propose that when a `return` is called from a sub or method marked with `is rw` trait, `return-rw` should be called instead. This makes the train more useful and its behavour more predictable. Relevant IRC discussion: http://irclog.perlgeek.de/perl6/2016-04-18#i_12356836