satyr / coco

Unfancy CoffeeScript
http://satyr.github.com/coco/
MIT License
498 stars 48 forks source link

`super` inconstistencies #193

Closed vendethiel closed 11 years ago

vendethiel commented 11 years ago
class A
  b: -> super ...
  "c": -> super ...
  "#d": -> super ...

I think this is by "design" (is that "inconsistency by design" ?), because IIRC this was the reason dynamic keys were removed from coffee Still, I think #d": -> super ... should compile to

  prototype["" + d] = function(){
    return superclass.prototype["" + d].apply(this, arguments);
  };

or maybe ?

  key$ = "" + d;
  prototype[key$] = function(){
    return superclass.prototype["" + key$].apply(this, arguments);
  };

Is there a special reason for this ? Is something relying on this ?

satyr commented 11 years ago

Is there a special reason for this ?

Lazy me not feeling like implementing caching, is all. Patches welcome.

IIRC this was the reason dynamic keys were removed from coffee

The real reason was more like distaste for general complexity. Coffee doesn't properly handle dynamic cases nonetheless:

$ coffee -bce 'A[f()] = -> super'
TypeError: Cannot read property 'name' of null
    at Scope.exports.Scope.Scope.namedMethod (/usr/local/lib/coffee-script/lib/cof
vendethiel commented 11 years ago

I'd gladly do that if I had any understanding of coco's interns. I thought that it was from this: but I don't know how to cache it. Should this be done in the Obj class ?

      while not scope.get \superclass and scope.fun, scope.=parent
        return \superclass.prototype + Index that .compile o if that.meth
vendethiel commented 11 years ago

Ah, thanks.