satyr/coco

`super` inconstistencies

vendethiel opened this issue · 3 comments

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 ?

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

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

Ah, thanks.