corelib/class.rb in opal-0.4.4 vs corelib/class.rb in opal-0.5.0

- old
+ new

@@ -1,13 +1,20 @@ class Class def self.new(sup = Object, &block) %x{ + if (!sup._isClass || sup.__mod__) { + #{raise TypeError, "superclass must be a Class"}; + } + function AnonClass(){}; - var klass = Opal.boot(sup, AnonClass) - klass._name = nil; - klass._scope = sup._scope; + var klass = Opal.boot(sup, AnonClass) + klass._name = nil; + klass.__parent = sup; + // inherit scope from parent + $opal.create_scope(sup._scope, klass); + sup.$inherited(klass); if (block !== nil) { var block_self = block._s; block._s = null; @@ -19,11 +26,11 @@ } end def allocate %x{ - var obj = new #{self}._alloc; + var obj = new self._alloc; obj._id = Opal.uid(); return obj; } end @@ -31,17 +38,16 @@ end def new(*args, &block) %x{ var obj = #{allocate}; - obj._id = Opal.uid(); obj.$initialize._p = block; obj.$initialize.apply(obj, args); return obj; } end def superclass - `#{self}._super || nil` + `self._super || nil` end end