@@ -47,11 +47,7 @@ def <(other)
47
47
48
48
def alias_method ( newname , oldname )
49
49
%x{
50
- self.$$proto['$' + newname] = self.$$proto['$' + oldname];
51
-
52
- if (self.$$methods) {
53
- Opal.donate(self, ['$' + newname ])
54
- }
50
+ Opal.defn(self, '$' + newname, self.$$proto['$' + oldname]);
55
51
}
56
52
self
57
53
end
@@ -88,18 +84,16 @@ def attr_accessor(*names)
88
84
89
85
def attr_reader ( *names )
90
86
%x{
91
- var proto = self.$$proto, cls = self;
92
87
for (var i = 0, length = names.length; i < length; i++) {
93
88
(function(name) {
94
- proto[name] = nil;
89
+ self.$$ proto[name] = nil;
95
90
var func = function() { return this[name] };
96
91
97
- if (cls .$$is_singleton) {
98
- proto.constructor.prototype['$' + name] = func;
92
+ if (self .$$is_singleton) {
93
+ self.$$ proto.constructor.prototype['$' + name] = func;
99
94
}
100
95
else {
101
- proto['$' + name] = func;
102
- Opal.donate(self, ['$' + name ]);
96
+ Opal.defn(self, '$' + name, func);
103
97
}
104
98
})(names[i]);
105
99
}
@@ -110,18 +104,16 @@ def attr_reader(*names)
110
104
111
105
def attr_writer ( *names )
112
106
%x{
113
- var proto = self.$$proto, cls = self;
114
107
for (var i = 0, length = names.length; i < length; i++) {
115
108
(function(name) {
116
- proto[name] = nil;
109
+ self.$$ proto[name] = nil;
117
110
var func = function(value) { return this[name] = value; };
118
111
119
- if (cls .$$is_singleton) {
120
- proto.constructor.prototype['$' + name + '='] = func;
112
+ if (self .$$is_singleton) {
113
+ self.$$ proto.constructor.prototype['$' + name + '='] = func;
121
114
}
122
115
else {
123
- proto['$' + name + '='] = func;
124
- Opal.donate(self, ['$' + name + '=']);
116
+ Opal.defn(self, '$' + name + '=', func);
125
117
}
126
118
})(names[i]);
127
119
}
@@ -241,12 +233,7 @@ def define_method(name, method = undefined, &block)
241
233
block.$$s = null;
242
234
block.$$def = block;
243
235
244
- if (self.$$is_mod) {
245
- block.$$owner = obj;
246
- }
247
-
248
- self.$$proto[jsid] = block;
249
- Opal.donate(self, [jsid]);
236
+ Opal.defn(self, jsid, block);
250
237
251
238
return name;
252
239
}
0 commit comments