Struct コードみてみた。

let anekos = {
  set meow (value) 'gyahahaha'
};

liberator.log(anekos.meow = 'neko'); // => gyahahaha

罠っぽい。
setter もまっとうな値を返しておけばいいと思うよ!!

Ruby の場合は、右辺を返すのでそういうのになれてるとやらかしそうだ。

class ANekoS
  def meow= (value)
    "gyahahaha"
  end
end

anekos = ANekoS.new
p(anekos.meow = 'neko') # => neko

パッチはこちら

一応。

diff -r 7e4f280c0e60 src/content/util.js
--- a/src/content/util.js       Fri Nov 21 07:35:27 2008 +0100
+++ b/src/content/util.js       Fri Nov 21 19:16:04 2008 +0900
@@ -524,6 +524,7 @@
             let value = val;
             this.__defineGetter__(i, function () value);
             this.__defineSetter__(i, function (val) { value = val });
+            return value;
         });
     };
     return self.constructor = ConStructor;