geraldalewis/coffee-script — comment on commit 2ec4c3843365749d934a82a42e6fff5ce01327b7
File: test/classes.coffee line 626
By geraldalewis:

Hah! [Had that figured out before](https://github.com/jashkenas/coffee-script/pull/2033#r349763), but then couldn't remember why I needed a `runtime` vs. an `early` error :)

I'm going to stick with `arguments.callee`:

* `!this` isn't as direct as throwing an error (though I love its succinctness by itself)
* something like `do -> 'use strict'; this.parseInt` makes me uneasy
* There aren't many `runtime` `strict` errors to pick from, and `arguments.callee` feels like the most identifiable and straightforward

Happy to remove the backticks, though. I'd argue that CoffeeScript should never prohibit `arguments.callee`:

* as you know, `arguments.callee` is really useful for recursive functions
* also, you pointed out, `callee` can be defined as a property -- don't know if this makes it impossible to statically determine (also, `arguments` can still be shadowed, no?)
* ES5 spec says:

> "An implementation shall not treat other kinds of errors as early errors even if the compiler can prove that a construct cannot execute without error under any circumstances."