> (function() { a - -b; } ) becomes function() {a--b;} and - -b becomes --b Which is also clearly wrong and bad, but *will* compile
> (function(){a + +b;}).toString() function(){a++b;} Which is also wrong.
FWIW, Mozilla had the same bug and fixed it by always decompiling negation as "- ". See https://bugzilla.mozilla.org/show_bug.cgi?id=346904 for details.
<rdar://problem/5394405>
Fix landed in r24924
*** Bug 14892 has been marked as a duplicate of this bug. ***