resin 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. data/amber/bin/amberc +10 -350
  2. data/amber/js/Benchfib.deploy.js +80 -89
  3. data/amber/js/Benchfib.js +80 -89
  4. data/amber/js/Canvas.deploy.js +558 -545
  5. data/amber/js/Canvas.js +563 -545
  6. data/amber/js/Compiler-AST.deploy.js +431 -243
  7. data/amber/js/Compiler-AST.js +487 -244
  8. data/amber/js/Compiler-Core.deploy.js +201 -1045
  9. data/amber/js/Compiler-Core.js +208 -1207
  10. data/amber/js/Compiler-Exceptions.deploy.js +37 -18
  11. data/amber/js/Compiler-Exceptions.js +42 -18
  12. data/amber/js/Compiler-IR.deploy.js +1071 -774
  13. data/amber/js/Compiler-IR.js +1194 -848
  14. data/amber/js/Compiler-Inlining.deploy.js +395 -373
  15. data/amber/js/Compiler-Inlining.js +395 -373
  16. data/amber/js/Compiler-Interpreter.deploy.js +1202 -0
  17. data/amber/js/Compiler-Interpreter.js +1631 -0
  18. data/amber/js/Compiler-Semantic.deploy.js +695 -600
  19. data/amber/js/Compiler-Semantic.js +721 -611
  20. data/amber/js/Compiler-Tests.deploy.js +699 -376
  21. data/amber/js/Compiler-Tests.js +834 -381
  22. data/amber/js/Compiler.deploy.js +8563 -1805
  23. data/amber/js/Compiler.js +11476 -2633
  24. data/amber/js/Examples.deploy.js +29 -29
  25. data/amber/js/Examples.js +29 -29
  26. data/amber/js/IDE.deploy.js +3292 -2649
  27. data/amber/js/IDE.js +3318 -2710
  28. data/amber/js/Importer-Exporter.deploy.js +393 -349
  29. data/amber/js/Importer-Exporter.js +398 -354
  30. data/amber/js/Kernel-Announcements.deploy.js +53 -44
  31. data/amber/js/Kernel-Announcements.js +55 -44
  32. data/amber/js/Kernel-Classes.deploy.js +566 -368
  33. data/amber/js/Kernel-Classes.js +660 -402
  34. data/amber/js/Kernel-Collections.deploy.js +1149 -1098
  35. data/amber/js/Kernel-Collections.js +1183 -1116
  36. data/amber/js/Kernel-Exceptions.deploy.js +173 -75
  37. data/amber/js/Kernel-Exceptions.js +215 -77
  38. data/amber/js/Kernel-Methods.deploy.js +530 -313
  39. data/amber/js/Kernel-Methods.js +632 -338
  40. data/amber/js/Kernel-Objects.deploy.js +1734 -1577
  41. data/amber/js/Kernel-Objects.js +1867 -1654
  42. data/amber/js/Kernel-Tests.deploy.js +1416 -973
  43. data/amber/js/Kernel-Tests.js +1495 -981
  44. data/amber/js/Kernel-Transcript.deploy.js +23 -24
  45. data/amber/js/Kernel-Transcript.js +25 -26
  46. data/amber/js/SUnit-Tests.deploy.js +402 -0
  47. data/amber/js/SUnit-Tests.js +518 -0
  48. data/amber/js/SUnit.deploy.js +535 -237
  49. data/amber/js/SUnit.js +634 -246
  50. data/amber/js/amber.js +90 -53
  51. data/amber/js/boot.js +441 -255
  52. data/amber/js/init.js +1 -3
  53. data/amber/js/lib/CodeMirror/codemirror.css +3 -0
  54. data/amber/js/lib/CodeMirror/codemirror.js +104 -55
  55. data/amber/js/lib/peg-0.7.0.min.js +9 -0
  56. data/amber/js/parser.js +1504 -802
  57. data/amber/js/parser.pegjs +170 -165
  58. data/amber/st/Canvas.st +6 -0
  59. data/amber/st/Compiler-AST.st +54 -3
  60. data/amber/st/Compiler-Core.st +6 -551
  61. data/amber/st/Compiler-Exceptions.st +4 -0
  62. data/amber/st/Compiler-IR.st +205 -87
  63. data/amber/st/Compiler-Interpreter.st +597 -0
  64. data/amber/st/Compiler-Semantic.st +46 -21
  65. data/amber/st/Compiler-Tests.st +254 -7
  66. data/amber/st/Compiler.st +3172 -1541
  67. data/amber/st/IDE.st +57 -93
  68. data/amber/st/Importer-Exporter.st +4 -7
  69. data/amber/st/Kernel-Announcements.st +8 -0
  70. data/amber/st/Kernel-Classes.st +149 -40
  71. data/amber/st/Kernel-Collections.st +43 -32
  72. data/amber/st/Kernel-Exceptions.st +70 -1
  73. data/amber/st/Kernel-Methods.st +165 -27
  74. data/amber/st/Kernel-Objects.st +215 -140
  75. data/amber/st/Kernel-Tests.st +195 -10
  76. data/amber/st/Kernel-Transcript.st +1 -3
  77. data/amber/st/SUnit-Tests.st +186 -0
  78. data/amber/st/SUnit.st +186 -14
  79. data/bin/resin +6 -0
  80. data/lib/resin/cli.rb +19 -0
  81. metadata +41 -25
  82. data/amber/js/lib/peg-0.6.2.min.js +0 -2
  83. data/bin/resin-compile +0 -6
  84. data/bin/runresin +0 -12
@@ -8,18 +8,17 @@ selector: "addCompiledMethod:",
8
8
  category: 'compiling',
9
9
  fn: function (aMethod){
10
10
  var self=this;
11
- var $1,$2;
12
- smalltalk.addMethod(aMethod.selector._asSelector(), aMethod, self);
13
- ;
14
- $1=smalltalk.send((smalltalk.MethodAdded || MethodAdded),"_new",[]);
15
- smalltalk.send($1,"_theClass_",[self]);
16
- smalltalk.send($1,"_method_",[aMethod]);
17
- $2=smalltalk.send($1,"_yourself",[]);
18
- smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$2]);
19
- return self},
11
+ return smalltalk.withContext(function($ctx1) {
12
+ _st(self)._basicAddCompiledMethod_(aMethod);
13
+ $1=_st((smalltalk.MethodAdded || MethodAdded))._new();
14
+ _st($1)._theClass_(self);
15
+ _st($1)._method_(aMethod);
16
+ $2=_st($1)._yourself();
17
+ _st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($2);
18
+ return self}, function($ctx1) {$ctx1.fill(self,"addCompiledMethod:",{aMethod:aMethod}, smalltalk.Behavior)})},
20
19
  args: ["aMethod"],
21
- source: "addCompiledMethod: aMethod\x0a\x09<smalltalk.addMethod(aMethod.selector._asSelector(), aMethod, self)>.\x0a \x0a SystemAnnouncer current\x0a \x09\x09announce: (MethodAdded new\x0a \x09theClass: self;\x0a method: aMethod;\x0a yourself)",
22
- messageSends: ["announce:", "theClass:", "new", "method:", "yourself", "current"],
20
+ source: "addCompiledMethod: aMethod\x0a\x09self basicAddCompiledMethod: aMethod.\x0a \x0a SystemAnnouncer current\x0a \x09\x09announce: (MethodAdded new\x0a \x09theClass: self;\x0a method: aMethod;\x0a yourself)",
21
+ messageSends: ["basicAddCompiledMethod:", "announce:", "theClass:", "new", "method:", "yourself", "current"],
23
22
  referencedClasses: ["MethodAdded", "SystemAnnouncer"]
24
23
  }),
25
24
  smalltalk.Behavior);
@@ -31,17 +30,18 @@ selector: "allInstanceVariableNames",
31
30
  category: 'accessing',
32
31
  fn: function (){
33
32
  var self=this;
34
- var $1;
35
33
  var result;
36
- result=smalltalk.send(smalltalk.send(self,"_instanceVariableNames",[]),"_copy",[]);
37
- $1=smalltalk.send(self,"_superclass",[]);
34
+ return smalltalk.withContext(function($ctx1) {
35
+ result=_st(_st(self)._instanceVariableNames())._copy();
36
+ $1=_st(self)._superclass();
38
37
  if(($receiver = $1) == nil || $receiver == undefined){
39
38
  $1;
40
39
  } else {
41
- smalltalk.send(result,"_addAll_",[smalltalk.send(smalltalk.send(self,"_superclass",[]),"_allInstanceVariableNames",[])]);
40
+ _st(result)._addAll_(_st(_st(self)._superclass())._allInstanceVariableNames());
42
41
  };
43
- return result;
44
- },
42
+ $2=result;
43
+ return $2;
44
+ }, function($ctx1) {$ctx1.fill(self,"allInstanceVariableNames",{result:result}, smalltalk.Behavior)})},
45
45
  args: [],
46
46
  source: "allInstanceVariableNames\x0a\x09| result |\x0a\x09result := self instanceVariableNames copy.\x0a\x09self superclass ifNotNil: [\x0a\x09 result addAll: self superclass allInstanceVariableNames].\x0a\x09^result",
47
47
  messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "addAll:", "allInstanceVariableNames", "superclass"],
@@ -57,12 +57,14 @@ category: 'accessing',
57
57
  fn: function (){
58
58
  var self=this;
59
59
  var result;
60
- result=smalltalk.send(self,"_subclasses",[]);
61
- smalltalk.send(smalltalk.send(self,"_subclasses",[]),"_do_",[(function(each){
62
- return smalltalk.send(result,"_addAll_",[smalltalk.send(each,"_allSubclasses",[])]);
63
- })]);
64
- return result;
65
- },
60
+ return smalltalk.withContext(function($ctx1) {
61
+ result=_st(self)._subclasses();
62
+ _st(_st(self)._subclasses())._do_((function(each){
63
+ return smalltalk.withContext(function($ctx2) {
64
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
65
+ $1=result;
66
+ return $1;
67
+ }, function($ctx1) {$ctx1.fill(self,"allSubclasses",{result:result}, smalltalk.Behavior)})},
66
68
  args: [],
67
69
  source: "allSubclasses\x0a\x09| result |\x0a\x09result := self subclasses.\x0a\x09self subclasses do: [:each |\x0a\x09 result addAll: each allSubclasses].\x0a\x09^result",
68
70
  messageSends: ["subclasses", "do:", "addAll:", "allSubclasses"],
@@ -77,19 +79,19 @@ selector: "allSuperclasses",
77
79
  category: 'accessing',
78
80
  fn: function (){
79
81
  var self=this;
80
- var $1,$3,$4,$2;
81
- $1=smalltalk.send(self,"_superclass",[]);
82
+ return smalltalk.withContext(function($ctx1) {
83
+ $1=_st(self)._superclass();
82
84
  if(($receiver = $1) == nil || $receiver == undefined){
83
85
  return [];
84
86
  } else {
85
87
  $1;
86
88
  };
87
- $3=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_with_",[smalltalk.send(self,"_superclass",[])]);
88
- smalltalk.send($3,"_addAll_",[smalltalk.send(smalltalk.send(self,"_superclass",[]),"_allSuperclasses",[])]);
89
- $4=smalltalk.send($3,"_yourself",[]);
89
+ $3=_st((smalltalk.OrderedCollection || OrderedCollection))._with_(_st(self)._superclass());
90
+ _st($3)._addAll_(_st(_st(self)._superclass())._allSuperclasses());
91
+ $4=_st($3)._yourself();
90
92
  $2=$4;
91
93
  return $2;
92
- },
94
+ }, function($ctx1) {$ctx1.fill(self,"allSuperclasses",{}, smalltalk.Behavior)})},
93
95
  args: [],
94
96
  source: "allSuperclasses\x0a\x09\x0a self superclass ifNil: [ ^ #() ].\x0a \x0a\x09^ (OrderedCollection with: self superclass) \x0a \x09addAll: self superclass allSuperclasses;\x0a yourself",
95
97
  messageSends: ["ifNil:", "superclass", "addAll:", "allSuperclasses", "with:", "yourself"],
@@ -97,6 +99,22 @@ referencedClasses: ["OrderedCollection"]
97
99
  }),
98
100
  smalltalk.Behavior);
99
101
 
102
+ smalltalk.addMethod(
103
+ "_basicAddCompiledMethod_",
104
+ smalltalk.method({
105
+ selector: "basicAddCompiledMethod:",
106
+ category: 'private',
107
+ fn: function (aMethod){
108
+ var self=this;
109
+ return smalltalk.withContext(function($ctx1) {
110
+ return self}, function($ctx1) {$ctx1.fill(self,"basicAddCompiledMethod:",{aMethod:aMethod}, smalltalk.Behavior)})},
111
+ args: ["aMethod"],
112
+ source: "basicAddCompiledMethod: aMethod\x0a\x09<smalltalk.addMethod(aMethod.selector._asSelector(), aMethod, self)>",
113
+ messageSends: [],
114
+ referencedClasses: []
115
+ }),
116
+ smalltalk.Behavior);
117
+
100
118
  smalltalk.addMethod(
101
119
  "_basicNew",
102
120
  smalltalk.method({
@@ -104,9 +122,8 @@ selector: "basicNew",
104
122
  category: 'instance creation',
105
123
  fn: function (){
106
124
  var self=this;
107
- return new self.fn();
108
- ;
109
- return self},
125
+ return smalltalk.withContext(function($ctx1) {
126
+ return self}, function($ctx1) {$ctx1.fill(self,"basicNew",{}, smalltalk.Behavior)})},
110
127
  args: [],
111
128
  source: "basicNew\x0a\x09<return new self.fn()>",
112
129
  messageSends: [],
@@ -114,6 +131,25 @@ referencedClasses: []
114
131
  }),
115
132
  smalltalk.Behavior);
116
133
 
134
+ smalltalk.addMethod(
135
+ "_basicRemoveCompiledMethod_",
136
+ smalltalk.method({
137
+ selector: "basicRemoveCompiledMethod:",
138
+ category: 'private',
139
+ fn: function (aMethod){
140
+ var self=this;
141
+ return smalltalk.withContext(function($ctx1) {
142
+ smalltalk.removeMethod(aMethod)
143
+ smalltalk.init(self);
144
+ ;
145
+ return self}, function($ctx1) {$ctx1.fill(self,"basicRemoveCompiledMethod:",{aMethod:aMethod}, smalltalk.Behavior)})},
146
+ args: ["aMethod"],
147
+ source: "basicRemoveCompiledMethod: aMethod\x0a\x09<\x0a \x09smalltalk.removeMethod(aMethod)\x0a\x09\x09smalltalk.init(self);\x0a >",
148
+ messageSends: [],
149
+ referencedClasses: []
150
+ }),
151
+ smalltalk.Behavior);
152
+
117
153
  smalltalk.addMethod(
118
154
  "_canUnderstand_",
119
155
  smalltalk.method({
@@ -121,14 +157,14 @@ selector: "canUnderstand:",
121
157
  category: 'testing',
122
158
  fn: function (aSelector){
123
159
  var self=this;
124
- var $1;
125
- $1=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_keys",[]),"_includes_",[smalltalk.send(aSelector,"_asString",[])]),"_or_",[(function(){
126
- return smalltalk.send(smalltalk.send(smalltalk.send(self,"_superclass",[]),"_notNil",[]),"_and_",[(function(){
127
- return smalltalk.send(smalltalk.send(self,"_superclass",[]),"_canUnderstand_",[aSelector]);
128
- })]);
129
- })]);
160
+ return smalltalk.withContext(function($ctx1) {
161
+ $1=_st(_st(_st(_st(self)._methodDictionary())._keys())._includes_(_st(aSelector)._asString()))._or_((function(){
162
+ return smalltalk.withContext(function($ctx2) {
163
+ return smalltalk.withContext(function($ctx3) {
164
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
165
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
130
166
  return $1;
131
- },
167
+ }, function($ctx1) {$ctx1.fill(self,"canUnderstand:",{aSelector:aSelector}, smalltalk.Behavior)})},
132
168
  args: ["aSelector"],
133
169
  source: "canUnderstand: aSelector\x0a\x09^(self methodDictionary keys includes: aSelector asString) or: [\x0a\x09\x09self superclass notNil and: [self superclass canUnderstand: aSelector]]",
134
170
  messageSends: ["or:", "and:", "canUnderstand:", "superclass", "notNil", "includes:", "asString", "keys", "methodDictionary"],
@@ -143,15 +179,15 @@ selector: "comment",
143
179
  category: 'accessing',
144
180
  fn: function (){
145
181
  var self=this;
146
- var $2,$1;
147
- $2=smalltalk.send(self,"_basicAt_",["comment"]);
182
+ return smalltalk.withContext(function($ctx1) {
183
+ $2=_st(self)._basicAt_("comment");
148
184
  if(($receiver = $2) == nil || $receiver == undefined){
149
185
  $1="";
150
186
  } else {
151
187
  $1=$2;
152
188
  };
153
189
  return $1;
154
- },
190
+ }, function($ctx1) {$ctx1.fill(self,"comment",{}, smalltalk.Behavior)})},
155
191
  args: [],
156
192
  source: "comment\x0a ^(self basicAt: 'comment') ifNil: ['']",
157
193
  messageSends: ["ifNil:", "basicAt:"],
@@ -166,13 +202,13 @@ selector: "comment:",
166
202
  category: 'accessing',
167
203
  fn: function (aString){
168
204
  var self=this;
169
- var $1,$2;
170
- smalltalk.send(self,"_basicAt_put_",["comment",aString]);
171
- $1=smalltalk.send((smalltalk.ClassCommentChanged || ClassCommentChanged),"_new",[]);
172
- smalltalk.send($1,"_theClass_",[self]);
173
- $2=smalltalk.send($1,"_yourself",[]);
174
- smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$2]);
175
- return self},
205
+ return smalltalk.withContext(function($ctx1) {
206
+ _st(self)._basicAt_put_("comment",aString);
207
+ $1=_st((smalltalk.ClassCommentChanged || ClassCommentChanged))._new();
208
+ _st($1)._theClass_(self);
209
+ $2=_st($1)._yourself();
210
+ _st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($2);
211
+ return self}, function($ctx1) {$ctx1.fill(self,"comment:",{aString:aString}, smalltalk.Behavior)})},
176
212
  args: ["aString"],
177
213
  source: "comment: aString\x0a self basicAt: 'comment' put: aString.\x0a SystemAnnouncer current\x0a \x09announce: (ClassCommentChanged new\x0a \x09theClass: self;\x0a yourself)",
178
214
  messageSends: ["basicAt:put:", "announce:", "theClass:", "new", "yourself", "current"],
@@ -187,13 +223,13 @@ selector: "commentStamp",
187
223
  category: 'accessing',
188
224
  fn: function (){
189
225
  var self=this;
190
- var $2,$3,$1;
191
- $2=smalltalk.send((smalltalk.ClassCommentReader || ClassCommentReader),"_new",[]);
192
- smalltalk.send($2,"_class_",[self]);
193
- $3=smalltalk.send($2,"_yourself",[]);
226
+ return smalltalk.withContext(function($ctx1) {
227
+ $2=_st((smalltalk.ClassCommentReader || ClassCommentReader))._new();
228
+ _st($2)._class_(self);
229
+ $3=_st($2)._yourself();
194
230
  $1=$3;
195
231
  return $1;
196
- },
232
+ }, function($ctx1) {$ctx1.fill(self,"commentStamp",{}, smalltalk.Behavior)})},
197
233
  args: [],
198
234
  source: "commentStamp\x0a ^ClassCommentReader new\x0a\x09class: self;\x0a\x09yourself",
199
235
  messageSends: ["class:", "new", "yourself"],
@@ -208,10 +244,10 @@ selector: "commentStamp:prior:",
208
244
  category: 'accessing',
209
245
  fn: function (aStamp,prior){
210
246
  var self=this;
211
- var $1;
212
- $1=smalltalk.send(self,"_commentStamp",[]);
247
+ return smalltalk.withContext(function($ctx1) {
248
+ $1=_st(self)._commentStamp();
213
249
  return $1;
214
- },
250
+ }, function($ctx1) {$ctx1.fill(self,"commentStamp:prior:",{aStamp:aStamp,prior:prior}, smalltalk.Behavior)})},
215
251
  args: ["aStamp", "prior"],
216
252
  source: "commentStamp: aStamp prior: prior\x0a ^self commentStamp",
217
253
  messageSends: ["commentStamp"],
@@ -226,8 +262,8 @@ selector: "compile:",
226
262
  category: 'compiling',
227
263
  fn: function (aString){
228
264
  var self=this;
229
- smalltalk.send(self,"_compile_category_",[aString,""]);
230
- return self},
265
+ return smalltalk.withContext(function($ctx1) {
266
+ return self}, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString}, smalltalk.Behavior)})},
231
267
  args: ["aString"],
232
268
  source: "compile: aString\x0a\x09self compile: aString category: ''",
233
269
  messageSends: ["compile:category:"],
@@ -242,8 +278,8 @@ selector: "compile:category:",
242
278
  category: 'compiling',
243
279
  fn: function (aString,anotherString){
244
280
  var self=this;
245
- smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_install_forClass_category_",[aString,self,anotherString]);
246
- return self},
281
+ return smalltalk.withContext(function($ctx1) {
282
+ return self}, function($ctx1) {$ctx1.fill(self,"compile:category:",{aString:aString,anotherString:anotherString}, smalltalk.Behavior)})},
247
283
  args: ["aString", "anotherString"],
248
284
  source: "compile: aString category: anotherString\x0a\x09Compiler new\x0a\x09\x09install: aString \x0a forClass: self \x0a category: anotherString",
249
285
  messageSends: ["install:forClass:category:", "new"],
@@ -258,8 +294,8 @@ selector: "definition",
258
294
  category: 'accessing',
259
295
  fn: function (){
260
296
  var self=this;
261
- return "";
262
- },
297
+ return smalltalk.withContext(function($ctx1) {
298
+ }, function($ctx1) {$ctx1.fill(self,"definition",{}, smalltalk.Behavior)})},
263
299
  args: [],
264
300
  source: "definition\x0a\x09^ ''",
265
301
  messageSends: [],
@@ -267,6 +303,24 @@ referencedClasses: []
267
303
  }),
268
304
  smalltalk.Behavior);
269
305
 
306
+ smalltalk.addMethod(
307
+ "_includesSelector_",
308
+ smalltalk.method({
309
+ selector: "includesSelector:",
310
+ category: 'testing',
311
+ fn: function (aSymbol){
312
+ var self=this;
313
+ return smalltalk.withContext(function($ctx1) {
314
+ $1=_st(_st(self)._methodDictionary())._includesKey_(_st(aSymbol)._asString());
315
+ return $1;
316
+ }, function($ctx1) {$ctx1.fill(self,"includesSelector:",{aSymbol:aSymbol}, smalltalk.Behavior)})},
317
+ args: ["aSymbol"],
318
+ source: "includesSelector: aSymbol\x0a\x09^ self methodDictionary includesKey: aSymbol asString",
319
+ messageSends: ["includesKey:", "asString", "methodDictionary"],
320
+ referencedClasses: []
321
+ }),
322
+ smalltalk.Behavior);
323
+
270
324
  smalltalk.addMethod(
271
325
  "_inheritsFrom_",
272
326
  smalltalk.method({
@@ -274,10 +328,10 @@ selector: "inheritsFrom:",
274
328
  category: 'testing',
275
329
  fn: function (aClass){
276
330
  var self=this;
277
- var $1;
278
- $1=smalltalk.send(smalltalk.send(aClass,"_allSubclasses",[]),"_includes_",[self]);
331
+ return smalltalk.withContext(function($ctx1) {
332
+ $1=_st(_st(aClass)._allSubclasses())._includes_(self);
279
333
  return $1;
280
- },
334
+ }, function($ctx1) {$ctx1.fill(self,"inheritsFrom:",{aClass:aClass}, smalltalk.Behavior)})},
281
335
  args: ["aClass"],
282
336
  source: "inheritsFrom: aClass\x0a\x09^aClass allSubclasses includes: self",
283
337
  messageSends: ["includes:", "allSubclasses"],
@@ -292,9 +346,8 @@ selector: "instanceVariableNames",
292
346
  category: 'accessing',
293
347
  fn: function (){
294
348
  var self=this;
295
- return self.iVarNames;
296
- ;
297
- return self},
349
+ return smalltalk.withContext(function($ctx1) {
350
+ return self}, function($ctx1) {$ctx1.fill(self,"instanceVariableNames",{}, smalltalk.Behavior)})},
298
351
  args: [],
299
352
  source: "instanceVariableNames\x0a\x09<return self.iVarNames>",
300
353
  messageSends: [],
@@ -302,6 +355,42 @@ referencedClasses: []
302
355
  }),
303
356
  smalltalk.Behavior);
304
357
 
358
+ smalltalk.addMethod(
359
+ "_lookupSelector_",
360
+ smalltalk.method({
361
+ selector: "lookupSelector:",
362
+ category: 'accessing',
363
+ fn: function (selector){
364
+ var self=this;
365
+ var lookupClass;
366
+ return smalltalk.withContext(function($ctx1) {
367
+ var $early={};
368
+ try {
369
+ lookupClass=self;
370
+ $1=(function(){
371
+ return smalltalk.withContext(function($ctx2) {
372
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
373
+ $2=(function(){
374
+ return smalltalk.withContext(function($ctx2) {
375
+ if(smalltalk.assert($3)){
376
+ $4=_st(lookupClass)._methodAt_(selector);
377
+ throw $early=[$4];
378
+ };
379
+ lookupClass=_st(lookupClass)._superclass();
380
+ return lookupClass;
381
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
382
+ _st($1)._whileFalse_($2);
383
+ return nil;
384
+ }
385
+ catch(e) {if(e===$early)return e[0]; throw e}
386
+ }, function($ctx1) {$ctx1.fill(self,"lookupSelector:",{selector:selector,lookupClass:lookupClass}, smalltalk.Behavior)})},
387
+ args: ["selector"],
388
+ source: "lookupSelector: selector\x0a\x09\x22Look up the given selector in my methodDictionary.\x0a\x09Return the corresponding method if found.\x0a\x09Otherwise chase the superclass chain and try again.\x0a\x09Return nil if no method is found.\x22\x0a \x0a\x09| lookupClass |\x0a \x0a\x09lookupClass := self.\x0a\x09[ lookupClass = nil ] whileFalse: [\x0a \x09(lookupClass includesSelector: selector)\x0a\x09\x09\x09\x09ifTrue: [ ^ lookupClass methodAt: selector ].\x0a\x09\x09\x09lookupClass := lookupClass superclass ].\x0a\x09^ nil",
389
+ messageSends: ["whileFalse:", "ifTrue:", "methodAt:", "includesSelector:", "superclass", "="],
390
+ referencedClasses: []
391
+ }),
392
+ smalltalk.Behavior);
393
+
305
394
  smalltalk.addMethod(
306
395
  "_methodAt_",
307
396
  smalltalk.method({
@@ -309,12 +398,13 @@ selector: "methodAt:",
309
398
  category: 'accessing',
310
399
  fn: function (aSymbol){
311
400
  var self=this;
312
- return smalltalk.methods(self)[aSymbol._asString()];
313
- ;
314
- return self},
401
+ return smalltalk.withContext(function($ctx1) {
402
+ $1=_st(_st(self)._methodDictionary())._at_(_st(aSymbol)._asString());
403
+ return $1;
404
+ }, function($ctx1) {$ctx1.fill(self,"methodAt:",{aSymbol:aSymbol}, smalltalk.Behavior)})},
315
405
  args: ["aSymbol"],
316
- source: "methodAt: aSymbol\x0a\x09<return smalltalk.methods(self)[aSymbol._asString()]>",
317
- messageSends: [],
406
+ source: "methodAt: aSymbol\x0a\x09^ self methodDictionary at: aSymbol asString",
407
+ messageSends: ["at:", "asString", "methodDictionary"],
318
408
  referencedClasses: []
319
409
  }),
320
410
  smalltalk.Behavior);
@@ -326,18 +416,17 @@ selector: "methodDictionary",
326
416
  category: 'accessing',
327
417
  fn: function (){
328
418
  var self=this;
329
- var dict = smalltalk.HashedCollection._new();
330
- var methods = self.fn.prototype.methods;
419
+ return smalltalk.withContext(function($ctx1) {
420
+ var methods = self.methods;
331
421
  for(var i in methods) {
332
422
  if(methods[i].selector) {
333
423
  dict._at_put_(methods[i].selector, methods[i]);
334
424
  }
335
425
  };
336
426
  return dict;
337
- ;
338
- return self},
427
+ return self}, function($ctx1) {$ctx1.fill(self,"methodDictionary",{}, smalltalk.Behavior)})},
339
428
  args: [],
340
- source: "methodDictionary\x0a\x09<var dict = smalltalk.HashedCollection._new();\x0a\x09var methods = self.fn.prototype.methods;\x0a\x09for(var i in methods) {\x0a\x09\x09if(methods[i].selector) {\x0a\x09\x09\x09dict._at_put_(methods[i].selector, methods[i]);\x0a\x09\x09}\x0a\x09};\x0a\x09return dict>",
429
+ source: "methodDictionary\x0a\x09<var dict = smalltalk.HashedCollection._new();\x0a\x09var methods = self.methods;\x0a\x09for(var i in methods) {\x0a\x09\x09if(methods[i].selector) {\x0a\x09\x09\x09dict._at_put_(methods[i].selector, methods[i]);\x0a\x09\x09}\x0a\x09};\x0a\x09return dict>",
341
430
  messageSends: [],
342
431
  referencedClasses: []
343
432
  }),
@@ -350,10 +439,10 @@ selector: "methods",
350
439
  category: 'accessing',
351
440
  fn: function (){
352
441
  var self=this;
353
- var $1;
354
- $1=smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_values",[]);
442
+ return smalltalk.withContext(function($ctx1) {
443
+ $1=_st(_st(self)._methodDictionary())._values();
355
444
  return $1;
356
- },
445
+ }, function($ctx1) {$ctx1.fill(self,"methods",{}, smalltalk.Behavior)})},
357
446
  args: [],
358
447
  source: "methods\x0a\x09^ self methodDictionary values",
359
448
  messageSends: ["values", "methodDictionary"],
@@ -368,13 +457,13 @@ selector: "methodsFor:",
368
457
  category: 'accessing',
369
458
  fn: function (aString){
370
459
  var self=this;
371
- var $2,$3,$1;
372
- $2=smalltalk.send((smalltalk.ClassCategoryReader || ClassCategoryReader),"_new",[]);
373
- smalltalk.send($2,"_class_category_",[self,aString]);
374
- $3=smalltalk.send($2,"_yourself",[]);
460
+ return smalltalk.withContext(function($ctx1) {
461
+ $2=_st((smalltalk.ClassCategoryReader || ClassCategoryReader))._new();
462
+ _st($2)._class_category_(self,aString);
463
+ $3=_st($2)._yourself();
375
464
  $1=$3;
376
465
  return $1;
377
- },
466
+ }, function($ctx1) {$ctx1.fill(self,"methodsFor:",{aString:aString}, smalltalk.Behavior)})},
378
467
  args: ["aString"],
379
468
  source: "methodsFor: aString\x0a\x09^ClassCategoryReader new\x0a\x09 class: self category: aString;\x0a\x09 yourself",
380
469
  messageSends: ["class:category:", "new", "yourself"],
@@ -389,10 +478,10 @@ selector: "methodsFor:stamp:",
389
478
  category: 'accessing',
390
479
  fn: function (aString,aStamp){
391
480
  var self=this;
392
- var $1;
393
- $1=smalltalk.send(self,"_methodsFor_",[aString]);
481
+ return smalltalk.withContext(function($ctx1) {
482
+ $1=_st(self)._methodsFor_(aString);
394
483
  return $1;
395
- },
484
+ }, function($ctx1) {$ctx1.fill(self,"methodsFor:stamp:",{aString:aString,aStamp:aStamp}, smalltalk.Behavior)})},
396
485
  args: ["aString", "aStamp"],
397
486
  source: "methodsFor: aString stamp: aStamp\x0a\x09\x22Added for compatibility, right now ignores stamp.\x22\x0a\x09^self methodsFor: aString",
398
487
  messageSends: ["methodsFor:"],
@@ -407,12 +496,12 @@ selector: "methodsInProtocol:",
407
496
  category: 'accessing',
408
497
  fn: function (aString){
409
498
  var self=this;
410
- var $1;
411
- $1=smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_values",[]),"_select_",[(function(each){
412
- return smalltalk.send(smalltalk.send(each,"_protocol",[]),"__eq",[aString]);
413
- })]);
499
+ return smalltalk.withContext(function($ctx1) {
500
+ $1=_st(_st(_st(self)._methodDictionary())._values())._select_((function(each){
501
+ return smalltalk.withContext(function($ctx2) {
502
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
414
503
  return $1;
415
- },
504
+ }, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:",{aString:aString}, smalltalk.Behavior)})},
416
505
  args: ["aString"],
417
506
  source: "methodsInProtocol: aString\x0a\x09^ self methodDictionary values select: [ :each | each protocol = aString ]",
418
507
  messageSends: ["select:", "=", "protocol", "values", "methodDictionary"],
@@ -427,9 +516,8 @@ selector: "name",
427
516
  category: 'accessing',
428
517
  fn: function (){
429
518
  var self=this;
430
- return self.className || nil;
431
- ;
432
- return self},
519
+ return smalltalk.withContext(function($ctx1) {
520
+ return self}, function($ctx1) {$ctx1.fill(self,"name",{}, smalltalk.Behavior)})},
433
521
  args: [],
434
522
  source: "name\x0a\x09<return self.className || nil>",
435
523
  messageSends: [],
@@ -444,10 +532,10 @@ selector: "new",
444
532
  category: 'instance creation',
445
533
  fn: function (){
446
534
  var self=this;
447
- var $1;
448
- $1=smalltalk.send(smalltalk.send(self,"_basicNew",[]),"_initialize",[]);
535
+ return smalltalk.withContext(function($ctx1) {
536
+ $1=_st(_st(self)._basicNew())._initialize();
449
537
  return $1;
450
- },
538
+ }, function($ctx1) {$ctx1.fill(self,"new",{}, smalltalk.Behavior)})},
451
539
  args: [],
452
540
  source: "new\x0a\x09^self basicNew initialize",
453
541
  messageSends: ["initialize", "basicNew"],
@@ -462,10 +550,10 @@ selector: "organization",
462
550
  category: 'accessing',
463
551
  fn: function (){
464
552
  var self=this;
465
- var $1;
466
- $1=smalltalk.send(self,"_basicAt_",["organization"]);
553
+ return smalltalk.withContext(function($ctx1) {
554
+ $1=_st(self)._basicAt_("organization");
467
555
  return $1;
468
- },
556
+ }, function($ctx1) {$ctx1.fill(self,"organization",{}, smalltalk.Behavior)})},
469
557
  args: [],
470
558
  source: "organization\x0a\x09^ self basicAt: 'organization'",
471
559
  messageSends: ["basicAt:"],
@@ -480,10 +568,10 @@ selector: "protocols",
480
568
  category: 'accessing',
481
569
  fn: function (){
482
570
  var self=this;
483
- var $1;
484
- $1=smalltalk.send(smalltalk.send(smalltalk.send(self,"_organization",[]),"_elements",[]),"_sorted",[]);
571
+ return smalltalk.withContext(function($ctx1) {
572
+ $1=_st(_st(_st(self)._organization())._elements())._sorted();
485
573
  return $1;
486
- },
574
+ }, function($ctx1) {$ctx1.fill(self,"protocols",{}, smalltalk.Behavior)})},
487
575
  args: [],
488
576
  source: "protocols\x0a ^ self organization elements sorted",
489
577
  messageSends: ["sorted", "elements", "organization"],
@@ -499,16 +587,16 @@ category: 'accessing',
499
587
  fn: function (aBlock){
500
588
  var self=this;
501
589
  var methodsByCategory;
502
- methodsByCategory=smalltalk.send((smalltalk.HashedCollection || HashedCollection),"_new",[]);
503
- smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_values",[]),"_do_",[(function(m){
504
- return smalltalk.send(smalltalk.send(methodsByCategory,"_at_ifAbsentPut_",[smalltalk.send(m,"_category",[]),(function(){
505
- return smalltalk.send((smalltalk.Array || Array),"_new",[]);
506
- })]),"_add_",[m]);
507
- })]);
508
- smalltalk.send(smalltalk.send(self,"_protocols",[]),"_do_",[(function(category){
509
- return smalltalk.send(aBlock,"_value_value_",[category,smalltalk.send(methodsByCategory,"_at_",[category])]);
510
- })]);
511
- return self},
590
+ return smalltalk.withContext(function($ctx1) {
591
+ _st(_st(_st(self)._methodDictionary())._values())._do_((function(m){
592
+ return smalltalk.withContext(function($ctx2) {
593
+ return smalltalk.withContext(function($ctx3) {
594
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._add_(m);
595
+ }, function($ctx2) {$ctx2.fillBlock({m:m},$ctx1)})}));
596
+ _st(_st(self)._protocols())._do_((function(category){
597
+ return smalltalk.withContext(function($ctx2) {
598
+ }, function($ctx2) {$ctx2.fillBlock({category:category},$ctx1)})}));
599
+ return self}, function($ctx1) {$ctx1.fill(self,"protocolsDo:",{aBlock:aBlock,methodsByCategory:methodsByCategory}, smalltalk.Behavior)})},
512
600
  args: ["aBlock"],
513
601
  source: "protocolsDo: aBlock\x0a\x09\x22Execute aBlock for each method category with\x0a\x09its collection of methods in the sort order of category name.\x22\x0a\x0a\x09| methodsByCategory |\x0a\x09methodsByCategory := HashedCollection new.\x0a\x09self methodDictionary values do: [:m |\x0a\x09\x09(methodsByCategory at: m category ifAbsentPut: [Array new])\x0a \x09\x09\x09add: m]. \x0a\x09self protocols do: [:category |\x0a\x09\x09aBlock value: category value: (methodsByCategory at: category)]",
514
602
  messageSends: ["new", "do:", "add:", "at:ifAbsentPut:", "category", "values", "methodDictionary", "value:value:", "at:", "protocols"],
@@ -523,9 +611,8 @@ selector: "prototype",
523
611
  category: 'accessing',
524
612
  fn: function (){
525
613
  var self=this;
526
- return self.fn.prototype;
527
- ;
528
- return self},
614
+ return smalltalk.withContext(function($ctx1) {
615
+ return self}, function($ctx1) {$ctx1.fill(self,"prototype",{}, smalltalk.Behavior)})},
529
616
  args: [],
530
617
  source: "prototype\x0a\x09<return self.fn.prototype>",
531
618
  messageSends: [],
@@ -540,21 +627,17 @@ selector: "removeCompiledMethod:",
540
627
  category: 'compiling',
541
628
  fn: function (aMethod){
542
629
  var self=this;
543
- var $1,$2;
544
-
545
- smalltalk.removeMethod(aMethod)
546
- smalltalk.init(self);
547
- ;
548
- ;
549
- $1=smalltalk.send((smalltalk.MethodRemoved || MethodRemoved),"_new",[]);
550
- smalltalk.send($1,"_theClass_",[self]);
551
- smalltalk.send($1,"_method_",[aMethod]);
552
- $2=smalltalk.send($1,"_yourself",[]);
553
- smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$2]);
554
- return self},
630
+ return smalltalk.withContext(function($ctx1) {
631
+ _st(self)._basicRemoveCompiledMethod_(aMethod);
632
+ $1=_st((smalltalk.MethodRemoved || MethodRemoved))._new();
633
+ _st($1)._theClass_(self);
634
+ _st($1)._method_(aMethod);
635
+ $2=_st($1)._yourself();
636
+ _st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($2);
637
+ return self}, function($ctx1) {$ctx1.fill(self,"removeCompiledMethod:",{aMethod:aMethod}, smalltalk.Behavior)})},
555
638
  args: ["aMethod"],
556
- source: "removeCompiledMethod: aMethod\x0a\x09<\x0a \x09smalltalk.removeMethod(aMethod)\x0a\x09\x09smalltalk.init(self);\x0a >.\x0a \x0a SystemAnnouncer current\x0a \x09\x09announce: (MethodRemoved new\x0a \x09theClass: self;\x0a method: aMethod;\x0a yourself)",
557
- messageSends: ["announce:", "theClass:", "new", "method:", "yourself", "current"],
639
+ source: "removeCompiledMethod: aMethod\x0a\x09self basicRemoveCompiledMethod: aMethod.\x0a \x0a SystemAnnouncer current\x0a \x09\x09announce: (MethodRemoved new\x0a \x09theClass: self;\x0a method: aMethod;\x0a yourself)",
640
+ messageSends: ["basicRemoveCompiledMethod:", "announce:", "theClass:", "new", "method:", "yourself", "current"],
558
641
  referencedClasses: ["MethodRemoved", "SystemAnnouncer"]
559
642
  }),
560
643
  smalltalk.Behavior);
@@ -566,10 +649,10 @@ selector: "selectors",
566
649
  category: 'accessing',
567
650
  fn: function (){
568
651
  var self=this;
569
- var $1;
570
- $1=smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_keys",[]);
652
+ return smalltalk.withContext(function($ctx1) {
653
+ $1=_st(_st(self)._methodDictionary())._keys();
571
654
  return $1;
572
- },
655
+ }, function($ctx1) {$ctx1.fill(self,"selectors",{}, smalltalk.Behavior)})},
573
656
  args: [],
574
657
  source: "selectors\x0a\x09^ self methodDictionary keys",
575
658
  messageSends: ["keys", "methodDictionary"],
@@ -584,9 +667,8 @@ selector: "subclasses",
584
667
  category: 'accessing',
585
668
  fn: function (){
586
669
  var self=this;
587
- return smalltalk.subclasses(self);
588
- ;
589
- return self},
670
+ return smalltalk.withContext(function($ctx1) {
671
+ return self}, function($ctx1) {$ctx1.fill(self,"subclasses",{}, smalltalk.Behavior)})},
590
672
  args: [],
591
673
  source: "subclasses\x0a\x09<return smalltalk.subclasses(self)>",
592
674
  messageSends: [],
@@ -601,9 +683,8 @@ selector: "superclass",
601
683
  category: 'accessing',
602
684
  fn: function (){
603
685
  var self=this;
604
- return self.superclass || nil;
605
- ;
606
- return self},
686
+ return smalltalk.withContext(function($ctx1) {
687
+ return self}, function($ctx1) {$ctx1.fill(self,"superclass",{}, smalltalk.Behavior)})},
607
688
  args: [],
608
689
  source: "superclass\x0a\x09<return self.superclass || nil>",
609
690
  messageSends: [],
@@ -618,10 +699,10 @@ selector: "theMetaClass",
618
699
  category: 'accessing',
619
700
  fn: function (){
620
701
  var self=this;
621
- var $1;
622
- $1=smalltalk.send(self,"_class",[]);
702
+ return smalltalk.withContext(function($ctx1) {
703
+ $1=_st(self)._class();
623
704
  return $1;
624
- },
705
+ }, function($ctx1) {$ctx1.fill(self,"theMetaClass",{}, smalltalk.Behavior)})},
625
706
  args: [],
626
707
  source: "theMetaClass\x0a\x09^ self class",
627
708
  messageSends: ["class"],
@@ -636,8 +717,10 @@ selector: "theNonMetaClass",
636
717
  category: 'accessing',
637
718
  fn: function (){
638
719
  var self=this;
639
- return self;
640
- },
720
+ return smalltalk.withContext(function($ctx1) {
721
+ $1=self;
722
+ return $1;
723
+ }, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{}, smalltalk.Behavior)})},
641
724
  args: [],
642
725
  source: "theNonMetaClass\x0a\x09^ self",
643
726
  messageSends: [],
@@ -652,13 +735,13 @@ selector: "withAllSubclasses",
652
735
  category: 'accessing',
653
736
  fn: function (){
654
737
  var self=this;
655
- var $2,$3,$1;
656
- $2=smalltalk.send((smalltalk.Array || Array),"_with_",[self]);
657
- smalltalk.send($2,"_addAll_",[smalltalk.send(self,"_allSubclasses",[])]);
658
- $3=smalltalk.send($2,"_yourself",[]);
738
+ return smalltalk.withContext(function($ctx1) {
739
+ $2=_st((smalltalk.Array || Array))._with_(self);
740
+ _st($2)._addAll_(_st(self)._allSubclasses());
741
+ $3=_st($2)._yourself();
659
742
  $1=$3;
660
743
  return $1;
661
- },
744
+ }, function($ctx1) {$ctx1.fill(self,"withAllSubclasses",{}, smalltalk.Behavior)})},
662
745
  args: [],
663
746
  source: "withAllSubclasses\x0a\x09^(Array with: self) addAll: self allSubclasses; yourself",
664
747
  messageSends: ["addAll:", "allSubclasses", "with:", "yourself"],
@@ -677,10 +760,10 @@ selector: "asJavascript",
677
760
  category: 'converting',
678
761
  fn: function (){
679
762
  var self=this;
680
- var $1;
681
- $1=smalltalk.send("smalltalk.","__comma",[smalltalk.send(self,"_name",[])]);
763
+ return smalltalk.withContext(function($ctx1) {
764
+ $1=_st("smalltalk.").__comma(_st(self)._name());
682
765
  return $1;
683
- },
766
+ }, function($ctx1) {$ctx1.fill(self,"asJavascript",{}, smalltalk.Class)})},
684
767
  args: [],
685
768
  source: "asJavascript\x0a\x09^ 'smalltalk.', self name",
686
769
  messageSends: [",", "name"],
@@ -695,15 +778,15 @@ selector: "category",
695
778
  category: 'accessing',
696
779
  fn: function (){
697
780
  var self=this;
698
- var $2,$1;
699
- $2=smalltalk.send(self,"_package",[]);
781
+ return smalltalk.withContext(function($ctx1) {
782
+ $2=_st(self)._package();
700
783
  if(($receiver = $2) == nil || $receiver == undefined){
701
784
  $1="Unclassified";
702
785
  } else {
703
- $1=smalltalk.send(smalltalk.send(self,"_package",[]),"_name",[]);
786
+ $1=_st(_st(self)._package())._name();
704
787
  };
705
788
  return $1;
706
- },
789
+ }, function($ctx1) {$ctx1.fill(self,"category",{}, smalltalk.Class)})},
707
790
  args: [],
708
791
  source: "category\x0a\x09^self package ifNil: ['Unclassified'] ifNotNil: [self package name]",
709
792
  messageSends: ["ifNil:ifNotNil:", "name", "package"],
@@ -718,27 +801,29 @@ selector: "definition",
718
801
  category: 'accessing',
719
802
  fn: function (){
720
803
  var self=this;
721
- var $2,$3,$1;
722
- $1=smalltalk.send((smalltalk.String || String),"_streamContents_",[(function(stream){
723
- smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(smalltalk.send(self,"_superclass",[]),"_asString",[])]);
724
- smalltalk.send(stream,"_nextPutAll_",[" subclass: #"]);
725
- smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(self,"_name",[])]);
726
- smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(smalltalk.send((smalltalk.String || String),"_lf",[]),"__comma",[smalltalk.send((smalltalk.String || String),"_tab",[])])]);
727
- $2=smalltalk.send(stream,"_nextPutAll_",["instanceVariableNames: '"]);
728
- $2;
729
- smalltalk.send(smalltalk.send(self,"_instanceVariableNames",[]),"_do_separatedBy_",[(function(each){
730
- return smalltalk.send(stream,"_nextPutAll_",[each]);
731
- }),(function(){
732
- return smalltalk.send(stream,"_nextPutAll_",[" "]);
733
- })]);
734
- smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(smalltalk.send("'","__comma",[smalltalk.send((smalltalk.String || String),"_lf",[])]),"__comma",[smalltalk.send((smalltalk.String || String),"_tab",[])])]);
735
- smalltalk.send(stream,"_nextPutAll_",["package: '"]);
736
- smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(self,"_category",[])]);
737
- $3=smalltalk.send(stream,"_nextPutAll_",["'"]);
738
- return $3;
739
- })]);
804
+ return smalltalk.withContext(function($ctx1) {
805
+ $1=_st((smalltalk.String || String))._streamContents_((function(stream){
806
+ return smalltalk.withContext(function($ctx2) {
807
+ _st($2)._nextPutAll_(_st(_st(self)._superclass())._asString());
808
+ _st($2)._nextPutAll_(" subclass: #");
809
+ _st($2)._nextPutAll_(_st(self)._name());
810
+ _st($2)._nextPutAll_(_st(_st((smalltalk.String || String))._lf()).__comma(_st((smalltalk.String || String))._tab()));
811
+ $3=_st($2)._nextPutAll_("instanceVariableNames: '");
812
+ $3;
813
+ _st(_st(self)._instanceVariableNames())._do_separatedBy_((function(each){
814
+ return smalltalk.withContext(function($ctx3) {
815
+ }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}),(function(){
816
+ return smalltalk.withContext(function($ctx3) {
817
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
818
+ $4=stream;
819
+ _st($4)._nextPutAll_(_st(_st("'").__comma(_st((smalltalk.String || String))._lf())).__comma(_st((smalltalk.String || String))._tab()));
820
+ _st($4)._nextPutAll_("package: '");
821
+ _st($4)._nextPutAll_(_st(self)._category());
822
+ $5=_st($4)._nextPutAll_("'");
823
+ return $5;
824
+ }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
740
825
  return $1;
741
- },
826
+ }, function($ctx1) {$ctx1.fill(self,"definition",{}, smalltalk.Class)})},
742
827
  args: [],
743
828
  source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09 \x09nextPutAll: self superclass asString;\x0a\x09 \x09nextPutAll: ' subclass: #';\x0a\x09 \x09nextPutAll: self name;\x0a\x09 \x09nextPutAll: String lf, String tab;\x0a\x09 \x09nextPutAll: 'instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames \x0a \x09do: [ :each | stream nextPutAll: each ] \x0a\x09 \x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream\x0a\x09 \x09nextPutAll: '''', String lf, String tab;\x0a\x09 \x09nextPutAll: 'package: ''';\x0a\x09 \x09nextPutAll: self category;\x0a\x09 \x09nextPutAll: '''' ]",
744
829
  messageSends: ["streamContents:", "nextPutAll:", "asString", "superclass", "name", ",", "tab", "lf", "do:separatedBy:", "instanceVariableNames", "category"],
@@ -753,8 +838,8 @@ selector: "isClass",
753
838
  category: 'testing',
754
839
  fn: function (){
755
840
  var self=this;
756
- return true;
757
- },
841
+ return smalltalk.withContext(function($ctx1) {
842
+ }, function($ctx1) {$ctx1.fill(self,"isClass",{}, smalltalk.Class)})},
758
843
  args: [],
759
844
  source: "isClass\x0a\x09^true",
760
845
  messageSends: [],
@@ -769,9 +854,8 @@ selector: "package",
769
854
  category: 'accessing',
770
855
  fn: function (){
771
856
  var self=this;
772
- return self.pkg;
773
- ;
774
- return self},
857
+ return smalltalk.withContext(function($ctx1) {
858
+ return self}, function($ctx1) {$ctx1.fill(self,"package",{}, smalltalk.Class)})},
775
859
  args: [],
776
860
  source: "package\x0a\x09<return self.pkg>",
777
861
  messageSends: [],
@@ -786,9 +870,8 @@ selector: "package:",
786
870
  category: 'accessing',
787
871
  fn: function (aPackage){
788
872
  var self=this;
789
- self.pkg = aPackage;
790
- ;
791
- return self},
873
+ return smalltalk.withContext(function($ctx1) {
874
+ return self}, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage}, smalltalk.Class)})},
792
875
  args: ["aPackage"],
793
876
  source: "package: aPackage\x0a\x09<self.pkg = aPackage>",
794
877
  messageSends: [],
@@ -803,10 +886,10 @@ selector: "printString",
803
886
  category: 'printing',
804
887
  fn: function (){
805
888
  var self=this;
806
- var $1;
807
- $1=smalltalk.send(self,"_name",[]);
889
+ return smalltalk.withContext(function($ctx1) {
890
+ $1=_st(self)._name();
808
891
  return $1;
809
- },
892
+ }, function($ctx1) {$ctx1.fill(self,"printString",{}, smalltalk.Class)})},
810
893
  args: [],
811
894
  source: "printString\x0a\x09^self name",
812
895
  messageSends: ["name"],
@@ -821,8 +904,8 @@ selector: "rename:",
821
904
  category: 'accessing',
822
905
  fn: function (aString){
823
906
  var self=this;
824
- smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder),"_new",[]),"_renameClass_to_",[self,aString]);
825
- return self},
907
+ return smalltalk.withContext(function($ctx1) {
908
+ return self}, function($ctx1) {$ctx1.fill(self,"rename:",{aString:aString}, smalltalk.Class)})},
826
909
  args: ["aString"],
827
910
  source: "rename: aString\x0a\x09ClassBuilder new renameClass: self to: aString",
828
911
  messageSends: ["renameClass:to:", "new"],
@@ -837,10 +920,10 @@ selector: "subclass:instanceVariableNames:",
837
920
  category: 'class creation',
838
921
  fn: function (aString,anotherString){
839
922
  var self=this;
840
- var $1;
841
- $1=smalltalk.send(self,"_subclass_instanceVariableNames_package_",[aString,anotherString,nil]);
923
+ return smalltalk.withContext(function($ctx1) {
924
+ $1=_st(self)._subclass_instanceVariableNames_package_(aString,anotherString,nil);
842
925
  return $1;
843
- },
926
+ }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:",{aString:aString,anotherString:anotherString}, smalltalk.Class)})},
844
927
  args: ["aString", "anotherString"],
845
928
  source: "subclass: aString instanceVariableNames: anotherString\x0a\x09\x22Kept for compatibility.\x22\x0a\x09^self subclass: aString instanceVariableNames: anotherString package: nil",
846
929
  messageSends: ["subclass:instanceVariableNames:package:"],
@@ -855,11 +938,11 @@ selector: "subclass:instanceVariableNames:category:",
855
938
  category: 'class creation',
856
939
  fn: function (aString,aString2,aString3){
857
940
  var self=this;
858
- var $1;
859
- smalltalk.send(self,"_deprecatedAPI",[]);
860
- $1=smalltalk.send(self,"_subclass_instanceVariableNames_package_",[aString,aString2,aString3]);
941
+ return smalltalk.withContext(function($ctx1) {
942
+ _st(self)._deprecatedAPI();
943
+ $1=_st(self)._subclass_instanceVariableNames_package_(aString,aString2,aString3);
861
944
  return $1;
862
- },
945
+ }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:category:",{aString:aString,aString2:aString2,aString3:aString3}, smalltalk.Class)})},
863
946
  args: ["aString", "aString2", "aString3"],
864
947
  source: "subclass: aString instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for compatibility.\x22\x0a\x09self deprecatedAPI.\x0a\x09^self subclass: aString instanceVariableNames: aString2 package: aString3",
865
948
  messageSends: ["deprecatedAPI", "subclass:instanceVariableNames:package:"],
@@ -874,10 +957,10 @@ selector: "subclass:instanceVariableNames:classVariableNames:poolDictionaries:ca
874
957
  category: 'class creation',
875
958
  fn: function (aString,aString2,classVars,pools,aString3){
876
959
  var self=this;
877
- var $1;
878
- $1=smalltalk.send(self,"_subclass_instanceVariableNames_package_",[aString,aString2,aString3]);
960
+ return smalltalk.withContext(function($ctx1) {
961
+ $1=_st(self)._subclass_instanceVariableNames_package_(aString,aString2,aString3);
879
962
  return $1;
880
- },
963
+ }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3}, smalltalk.Class)})},
881
964
  args: ["aString", "aString2", "classVars", "pools", "aString3"],
882
965
  source: "subclass: aString instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Just ignore class variables and pools. Added for compatibility.\x22\x0a\x09^self subclass: aString instanceVariableNames: aString2 package: aString3",
883
966
  messageSends: ["subclass:instanceVariableNames:package:"],
@@ -892,10 +975,10 @@ selector: "subclass:instanceVariableNames:package:",
892
975
  category: 'class creation',
893
976
  fn: function (aString,aString2,aString3){
894
977
  var self=this;
895
- var $1;
896
- $1=smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder),"_new",[]),"_superclass_subclass_instanceVariableNames_package_",[self,smalltalk.send(aString,"_asString",[]),aString2,aString3]);
978
+ return smalltalk.withContext(function($ctx1) {
979
+ $1=_st(_st((smalltalk.ClassBuilder || ClassBuilder))._new())._superclass_subclass_instanceVariableNames_package_(self,_st(aString)._asString(),aString2,aString3);
897
980
  return $1;
898
- },
981
+ }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3}, smalltalk.Class)})},
899
982
  args: ["aString", "aString2", "aString3"],
900
983
  source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09^ClassBuilder new\x0a\x09 superclass: self subclass: aString asString instanceVariableNames: aString2 package: aString3",
901
984
  messageSends: ["superclass:subclass:instanceVariableNames:package:", "asString", "new"],
@@ -914,10 +997,10 @@ selector: "asJavascript",
914
997
  category: 'converting',
915
998
  fn: function (){
916
999
  var self=this;
917
- var $1;
918
- $1=smalltalk.send(smalltalk.send("smalltalk.","__comma",[smalltalk.send(smalltalk.send(self,"_instanceClass",[]),"_name",[])]),"__comma",[".klass"]);
1000
+ return smalltalk.withContext(function($ctx1) {
1001
+ $1=_st(_st("smalltalk.").__comma(_st(_st(self)._instanceClass())._name())).__comma(".klass");
919
1002
  return $1;
920
- },
1003
+ }, function($ctx1) {$ctx1.fill(self,"asJavascript",{}, smalltalk.Metaclass)})},
921
1004
  args: [],
922
1005
  source: "asJavascript\x0a\x09^ 'smalltalk.', self instanceClass name, '.klass'",
923
1006
  messageSends: [",", "name", "instanceClass"],
@@ -932,21 +1015,22 @@ selector: "definition",
932
1015
  category: 'accessing',
933
1016
  fn: function (){
934
1017
  var self=this;
935
- var $2,$1;
936
- $1=smalltalk.send((smalltalk.String || String),"_streamContents_",[(function(stream){
937
- smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(self,"_asString",[])]);
938
- smalltalk.send(stream,"_nextPutAll_",[" class "]);
939
- $2=smalltalk.send(stream,"_nextPutAll_",["instanceVariableNames: '"]);
940
- $2;
941
- smalltalk.send(smalltalk.send(self,"_instanceVariableNames",[]),"_do_separatedBy_",[(function(each){
942
- return smalltalk.send(stream,"_nextPutAll_",[each]);
943
- }),(function(){
944
- return smalltalk.send(stream,"_nextPutAll_",[" "]);
945
- })]);
946
- return smalltalk.send(stream,"_nextPutAll_",["'"]);
947
- })]);
1018
+ return smalltalk.withContext(function($ctx1) {
1019
+ $1=_st((smalltalk.String || String))._streamContents_((function(stream){
1020
+ return smalltalk.withContext(function($ctx2) {
1021
+ _st($2)._nextPutAll_(_st(self)._asString());
1022
+ _st($2)._nextPutAll_(" class ");
1023
+ $3=_st($2)._nextPutAll_("instanceVariableNames: '");
1024
+ $3;
1025
+ _st(_st(self)._instanceVariableNames())._do_separatedBy_((function(each){
1026
+ return smalltalk.withContext(function($ctx3) {
1027
+ }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}),(function(){
1028
+ return smalltalk.withContext(function($ctx3) {
1029
+ }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
1030
+ return _st(stream)._nextPutAll_("'");
1031
+ }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1)})}));
948
1032
  return $1;
949
- },
1033
+ }, function($ctx1) {$ctx1.fill(self,"definition",{}, smalltalk.Metaclass)})},
950
1034
  args: [],
951
1035
  source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09 \x09 \x09nextPutAll: self asString;\x0a\x09 \x09nextPutAll: ' class ';\x0a\x09 \x09nextPutAll: 'instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames\x0a\x09 \x09do: [ :each | stream nextPutAll: each ]\x0a\x09 \x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream nextPutAll: '''' ]",
952
1036
  messageSends: ["streamContents:", "nextPutAll:", "asString", "do:separatedBy:", "instanceVariableNames"],
@@ -961,9 +1045,8 @@ selector: "instanceClass",
961
1045
  category: 'accessing',
962
1046
  fn: function (){
963
1047
  var self=this;
964
- return self.instanceClass;
965
- ;
966
- return self},
1048
+ return smalltalk.withContext(function($ctx1) {
1049
+ return self}, function($ctx1) {$ctx1.fill(self,"instanceClass",{}, smalltalk.Metaclass)})},
967
1050
  args: [],
968
1051
  source: "instanceClass\x0a\x09<return self.instanceClass>",
969
1052
  messageSends: [],
@@ -978,8 +1061,8 @@ selector: "instanceVariableNames:",
978
1061
  category: 'accessing',
979
1062
  fn: function (aCollection){
980
1063
  var self=this;
981
- smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder),"_new",[]),"_class_instanceVariableNames_",[self,aCollection]);
982
- return self},
1064
+ return smalltalk.withContext(function($ctx1) {
1065
+ return self}, function($ctx1) {$ctx1.fill(self,"instanceVariableNames:",{aCollection:aCollection}, smalltalk.Metaclass)})},
983
1066
  args: ["aCollection"],
984
1067
  source: "instanceVariableNames: aCollection\x0a\x09ClassBuilder new\x0a\x09 class: self instanceVariableNames: aCollection",
985
1068
  messageSends: ["class:instanceVariableNames:", "new"],
@@ -994,8 +1077,8 @@ selector: "isMetaclass",
994
1077
  category: 'testing',
995
1078
  fn: function (){
996
1079
  var self=this;
997
- return true;
998
- },
1080
+ return smalltalk.withContext(function($ctx1) {
1081
+ }, function($ctx1) {$ctx1.fill(self,"isMetaclass",{}, smalltalk.Metaclass)})},
999
1082
  args: [],
1000
1083
  source: "isMetaclass\x0a\x09^true",
1001
1084
  messageSends: [],
@@ -1010,10 +1093,10 @@ selector: "printString",
1010
1093
  category: 'printing',
1011
1094
  fn: function (){
1012
1095
  var self=this;
1013
- var $1;
1014
- $1=smalltalk.send(smalltalk.send(smalltalk.send(self,"_instanceClass",[]),"_name",[]),"__comma",[" class"]);
1096
+ return smalltalk.withContext(function($ctx1) {
1097
+ $1=_st(_st(_st(self)._instanceClass())._name()).__comma(" class");
1015
1098
  return $1;
1016
- },
1099
+ }, function($ctx1) {$ctx1.fill(self,"printString",{}, smalltalk.Metaclass)})},
1017
1100
  args: [],
1018
1101
  source: "printString\x0a\x09^self instanceClass name, ' class'",
1019
1102
  messageSends: [",", "name", "instanceClass"],
@@ -1028,8 +1111,10 @@ selector: "theMetaClass",
1028
1111
  category: 'accessing',
1029
1112
  fn: function (){
1030
1113
  var self=this;
1031
- return self;
1032
- },
1114
+ return smalltalk.withContext(function($ctx1) {
1115
+ $1=self;
1116
+ return $1;
1117
+ }, function($ctx1) {$ctx1.fill(self,"theMetaClass",{}, smalltalk.Metaclass)})},
1033
1118
  args: [],
1034
1119
  source: "theMetaClass\x0a\x09^ self",
1035
1120
  messageSends: [],
@@ -1044,10 +1129,10 @@ selector: "theNonMetaClass",
1044
1129
  category: 'accessing',
1045
1130
  fn: function (){
1046
1131
  var self=this;
1047
- var $1;
1048
- $1=smalltalk.send(self,"_instanceClass",[]);
1132
+ return smalltalk.withContext(function($ctx1) {
1133
+ $1=_st(self)._instanceClass();
1049
1134
  return $1;
1050
- },
1135
+ }, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{}, smalltalk.Metaclass)})},
1051
1136
  args: [],
1052
1137
  source: "theNonMetaClass\x0a\x09^ self instanceClass",
1053
1138
  messageSends: ["instanceClass"],
@@ -1060,63 +1145,140 @@ smalltalk.Metaclass);
1060
1145
  smalltalk.addClass('ClassBuilder', smalltalk.Object, [], 'Kernel-Classes');
1061
1146
  smalltalk.ClassBuilder.comment="ClassBuilder is responsible for compiling new classes or modifying existing classes in the system.\x0a\x0aRather than using ClassBuilder directly to compile a class, use `Class >> subclass:instanceVariableNames:package:`."
1062
1147
  smalltalk.addMethod(
1063
- "_addSubclassOf_named_instanceVariableNames_",
1148
+ "_addSubclassOf_named_instanceVariableNames_package_",
1064
1149
  smalltalk.method({
1065
- selector: "addSubclassOf:named:instanceVariableNames:",
1150
+ selector: "addSubclassOf:named:instanceVariableNames:package:",
1066
1151
  category: 'private',
1067
- fn: function (aClass,aString,aCollection){
1068
- var self=this;
1069
- smalltalk.addClass(aString, aClass, aCollection);
1070
- return smalltalk[aString];
1071
- ;
1072
- return self},
1073
- args: ["aClass", "aString", "aCollection"],
1074
- source: "addSubclassOf: aClass named: aString instanceVariableNames: aCollection\x0a\x09<smalltalk.addClass(aString, aClass, aCollection);\x0a\x09 return smalltalk[aString]>",
1075
- messageSends: [],
1076
- referencedClasses: []
1152
+ fn: function (aClass,aString,aCollection,packageName){
1153
+ var self=this;
1154
+ return smalltalk.withContext(function($ctx1) {
1155
+ $1=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._at_(aString);
1156
+ if(($receiver = $1) == nil || $receiver == undefined){
1157
+ $1;
1158
+ } else {
1159
+ $2=_st(self)._migrateClassNamed_superclass_instanceVariableNames_package_(aString,aClass,aCollection,packageName);
1160
+ return $2;
1161
+ };
1162
+ $3=_st(self)._basicAddSubclassOf_named_instanceVariableNames_package_(aClass,aString,aCollection,packageName);
1163
+ return $3;
1164
+ }, function($ctx1) {$ctx1.fill(self,"addSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,aString:aString,aCollection:aCollection,packageName:packageName}, smalltalk.ClassBuilder)})},
1165
+ args: ["aClass", "aString", "aCollection", "packageName"],
1166
+ source: "addSubclassOf: aClass named: aString instanceVariableNames: aCollection package: packageName\x0a\x09\x0a (Smalltalk current at: aString) ifNotNil: [ \x0a \x09^ self \x0a \x09migrateClassNamed: aString \x0a superclass: aClass \x0a instanceVariableNames: aCollection \x0a package: packageName ].\x0a\x0a\x09^ self \x0a \x09basicAddSubclassOf: aClass \x0a named: aString \x0a instanceVariableNames: aCollection \x0a package: packageName",
1167
+ messageSends: ["ifNotNil:", "migrateClassNamed:superclass:instanceVariableNames:package:", "at:", "current", "basicAddSubclassOf:named:instanceVariableNames:package:"],
1168
+ referencedClasses: ["Smalltalk"]
1077
1169
  }),
1078
1170
  smalltalk.ClassBuilder);
1079
1171
 
1080
1172
  smalltalk.addMethod(
1081
- "_addSubclassOf_named_instanceVariableNames_package_",
1173
+ "_basicAddSubclassOf_named_instanceVariableNames_package_",
1082
1174
  smalltalk.method({
1083
- selector: "addSubclassOf:named:instanceVariableNames:package:",
1175
+ selector: "basicAddSubclassOf:named:instanceVariableNames:package:",
1084
1176
  category: 'private',
1085
1177
  fn: function (aClass,aString,aCollection,packageName){
1086
1178
  var self=this;
1087
- smalltalk.addClass(aString, aClass, aCollection, packageName);
1088
- return smalltalk[aString];
1089
- ;
1090
- return self},
1179
+ return smalltalk.withContext(function($ctx1) {
1180
+ smalltalk.addClass(aString, aClass, aCollection, packageName);
1181
+ return smalltalk[aString]
1182
+ ;
1183
+ return self}, function($ctx1) {$ctx1.fill(self,"basicAddSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,aString:aString,aCollection:aCollection,packageName:packageName}, smalltalk.ClassBuilder)})},
1091
1184
  args: ["aClass", "aString", "aCollection", "packageName"],
1092
- source: "addSubclassOf: aClass named: aString instanceVariableNames: aCollection package: packageName\x0a\x09<smalltalk.addClass(aString, aClass, aCollection, packageName);\x0a\x09 return smalltalk[aString]>",
1185
+ source: "basicAddSubclassOf: aClass named: aString instanceVariableNames: aCollection package: packageName\x0a\x09<\x0a\x09\x09smalltalk.addClass(aString, aClass, aCollection, packageName);\x0a\x09\x09return smalltalk[aString]\x0a\x09>",
1093
1186
  messageSends: [],
1094
1187
  referencedClasses: []
1095
1188
  }),
1096
1189
  smalltalk.ClassBuilder);
1097
1190
 
1098
1191
  smalltalk.addMethod(
1099
- "_class_instanceVariableNames_",
1192
+ "_basicClass_instanceVariableNames_",
1100
1193
  smalltalk.method({
1101
- selector: "class:instanceVariableNames:",
1102
- category: 'class creation',
1194
+ selector: "basicClass:instanceVariableNames:",
1195
+ category: 'private',
1103
1196
  fn: function (aClass,aString){
1104
1197
  var self=this;
1105
- var $1,$2,$3;
1106
- $1=smalltalk.send(aClass,"_isMetaclass",[]);
1198
+ return smalltalk.withContext(function($ctx1) {
1199
+ return self}, function($ctx1) {$ctx1.fill(self,"basicClass:instanceVariableNames:",{aClass:aClass,aString:aString}, smalltalk.ClassBuilder)})},
1200
+ args: ["aClass", "aString"],
1201
+ source: "basicClass: aClass instanceVariableNames: aString\x0a\x09self basicClass: aClass instanceVariables: (self instanceVariableNamesFor: aString)",
1202
+ messageSends: ["basicClass:instanceVariables:", "instanceVariableNamesFor:"],
1203
+ referencedClasses: []
1204
+ }),
1205
+ smalltalk.ClassBuilder);
1206
+
1207
+ smalltalk.addMethod(
1208
+ "_basicClass_instanceVariables_",
1209
+ smalltalk.method({
1210
+ selector: "basicClass:instanceVariables:",
1211
+ category: 'private',
1212
+ fn: function (aClass,aCollection){
1213
+ var self=this;
1214
+ return smalltalk.withContext(function($ctx1) {
1215
+ $1=_st(aClass)._isMetaclass();
1107
1216
  if(! smalltalk.assert($1)){
1108
- smalltalk.send(self,"_error_",[smalltalk.send(smalltalk.send(aClass,"_name",[]),"__comma",[" is not a metaclass"])]);
1217
+ _st(self)._error_(_st(_st(aClass)._name()).__comma(" is not a metaclass"));
1109
1218
  };
1110
- smalltalk.send(aClass,"_basicAt_put_",["iVarNames",smalltalk.send(self,"_instanceVariableNamesFor_",[aString])]);
1111
- $2=smalltalk.send((smalltalk.ClassDefinitionChanged || ClassDefinitionChanged),"_new",[]);
1112
- smalltalk.send($2,"_theClass_",[aClass]);
1113
- $3=smalltalk.send($2,"_yourself",[]);
1114
- smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$3]);
1115
- smalltalk.send(self,"_setupClass_",[aClass]);
1116
- return self},
1219
+ _st(aClass)._basicAt_put_("iVarNames",aCollection);
1220
+ return self}, function($ctx1) {$ctx1.fill(self,"basicClass:instanceVariables:",{aClass:aClass,aCollection:aCollection}, smalltalk.ClassBuilder)})},
1221
+ args: ["aClass", "aCollection"],
1222
+ source: "basicClass: aClass instanceVariables: aCollection\x0a\x0a\x09aClass isMetaclass ifFalse: [self error: aClass name, ' is not a metaclass'].\x0a\x09aClass basicAt: 'iVarNames' put: aCollection",
1223
+ messageSends: ["ifFalse:", "error:", ",", "name", "isMetaclass", "basicAt:put:"],
1224
+ referencedClasses: []
1225
+ }),
1226
+ smalltalk.ClassBuilder);
1227
+
1228
+ smalltalk.addMethod(
1229
+ "_basicRemoveClass_",
1230
+ smalltalk.method({
1231
+ selector: "basicRemoveClass:",
1232
+ category: 'private',
1233
+ fn: function (aClass){
1234
+ var self=this;
1235
+ return smalltalk.withContext(function($ctx1) {
1236
+ return self}, function($ctx1) {$ctx1.fill(self,"basicRemoveClass:",{aClass:aClass}, smalltalk.ClassBuilder)})},
1237
+ args: ["aClass"],
1238
+ source: "basicRemoveClass: aClass\x0a\x09<smalltalk.removeClass(aClass)>",
1239
+ messageSends: [],
1240
+ referencedClasses: []
1241
+ }),
1242
+ smalltalk.ClassBuilder);
1243
+
1244
+ smalltalk.addMethod(
1245
+ "_basicRenameClass_to_",
1246
+ smalltalk.method({
1247
+ selector: "basicRenameClass:to:",
1248
+ category: 'private',
1249
+ fn: function (aClass,aString){
1250
+ var self=this;
1251
+ return smalltalk.withContext(function($ctx1) {
1252
+ smalltalk[aString] = aClass;
1253
+ delete smalltalk[aClass.className];
1254
+ aClass.className = aString;
1255
+ ;
1256
+ return self}, function($ctx1) {$ctx1.fill(self,"basicRenameClass:to:",{aClass:aClass,aString:aString}, smalltalk.ClassBuilder)})},
1117
1257
  args: ["aClass", "aString"],
1118
- source: "class: aClass instanceVariableNames: aString\x0a\x09aClass isMetaclass ifFalse: [self error: aClass name, ' is not a metaclass'].\x0a\x09aClass basicAt: 'iVarNames' put: (self instanceVariableNamesFor: aString).\x0a \x0a SystemAnnouncer current\x0a \x09announce: (ClassDefinitionChanged new\x0a \x09theClass: aClass;\x0a yourself).\x0a \x0a\x09self setupClass: aClass",
1119
- messageSends: ["ifFalse:", "error:", ",", "name", "isMetaclass", "basicAt:put:", "instanceVariableNamesFor:", "announce:", "theClass:", "new", "yourself", "current", "setupClass:"],
1258
+ source: "basicRenameClass: aClass to: aString\x0a\x09<\x0a\x09\x09smalltalk[aString] = aClass;\x0a\x09\x09delete smalltalk[aClass.className];\x0a\x09\x09aClass.className = aString;\x0a\x09>",
1259
+ messageSends: [],
1260
+ referencedClasses: []
1261
+ }),
1262
+ smalltalk.ClassBuilder);
1263
+
1264
+ smalltalk.addMethod(
1265
+ "_class_instanceVariableNames_",
1266
+ smalltalk.method({
1267
+ selector: "class:instanceVariableNames:",
1268
+ category: 'api',
1269
+ fn: function (aClass,aString){
1270
+ var self=this;
1271
+ return smalltalk.withContext(function($ctx1) {
1272
+ _st(self)._basicClass_instanceVariableNames_(aClass,aString);
1273
+ _st(self)._setupClass_(aClass);
1274
+ $1=_st((smalltalk.ClassDefinitionChanged || ClassDefinitionChanged))._new();
1275
+ _st($1)._theClass_(aClass);
1276
+ $2=_st($1)._yourself();
1277
+ _st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($2);
1278
+ return self}, function($ctx1) {$ctx1.fill(self,"class:instanceVariableNames:",{aClass:aClass,aString:aString}, smalltalk.ClassBuilder)})},
1279
+ args: ["aClass", "aString"],
1280
+ source: "class: aClass instanceVariableNames: aString\x0a\x09self basicClass: aClass instanceVariableNames: aString.\x0a self setupClass: aClass.\x0a \x0a SystemAnnouncer current\x0a \x09announce: (ClassDefinitionChanged new\x0a \x09theClass: aClass;\x0a yourself)",
1281
+ messageSends: ["basicClass:instanceVariableNames:", "setupClass:", "announce:", "theClass:", "new", "yourself", "current"],
1120
1282
  referencedClasses: ["ClassDefinitionChanged", "SystemAnnouncer"]
1121
1283
  }),
1122
1284
  smalltalk.ClassBuilder);
@@ -1129,24 +1291,64 @@ category: 'private',
1129
1291
  fn: function (aClass,aString){
1130
1292
  var self=this;
1131
1293
  var newClass;
1132
- newClass=smalltalk.send(self,"_addSubclassOf_named_instanceVariableNames_package_",[smalltalk.send(aClass,"_superclass",[]),aString,smalltalk.send(aClass,"_instanceVariableNames",[]),smalltalk.send(smalltalk.send(aClass,"_package",[]),"_name",[])]);
1133
- smalltalk.send(self,"_setupClass_",[newClass]);
1134
- smalltalk.send(smalltalk.send(smalltalk.send(aClass,"_methodDictionary",[]),"_values",[]),"_do_",[(function(each){
1135
- return smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_install_forClass_category_",[smalltalk.send(each,"_source",[]),newClass,smalltalk.send(each,"_category",[])]);
1136
- })]);
1137
- smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aClass,"_class",[]),"_methodDictionary",[]),"_values",[]),"_do_",[(function(each){
1138
- return smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_install_forClass_category_",[smalltalk.send(each,"_source",[]),smalltalk.send(newClass,"_class",[]),smalltalk.send(each,"_category",[])]);
1139
- })]);
1140
- smalltalk.send(self,"_setupClass_",[newClass]);
1141
- return newClass;
1142
- },
1294
+ return smalltalk.withContext(function($ctx1) {
1295
+ newClass=_st(self)._addSubclassOf_named_instanceVariableNames_package_(_st(aClass)._superclass(),aString,_st(aClass)._instanceVariableNames(),_st(_st(aClass)._package())._name());
1296
+ _st(self)._copyClass_to_(aClass,newClass);
1297
+ $1=newClass;
1298
+ return $1;
1299
+ }, function($ctx1) {$ctx1.fill(self,"copyClass:named:",{aClass:aClass,aString:aString,newClass:newClass}, smalltalk.ClassBuilder)})},
1143
1300
  args: ["aClass", "aString"],
1144
- source: "copyClass: aClass named: aString\x0a\x09| newClass |\x0a\x0a\x09newClass := self \x0a\x09\x09addSubclassOf: aClass superclass\x0a\x09\x09named: aString \x0a\x09\x09instanceVariableNames: aClass instanceVariableNames \x0a\x09\x09package: aClass package name.\x0a\x0a\x09self setupClass: newClass.\x0a\x0a\x09aClass methodDictionary values do: [:each |\x0a\x09\x09Compiler new install: each source forClass: newClass category: each category].\x0a\x0a\x09aClass class methodDictionary values do: [:each |\x0a\x09\x09Compiler new install: each source forClass: newClass class category: each category].\x0a\x0a\x09self setupClass: newClass.\x0a\x09^newClass",
1145
- messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "setupClass:", "do:", "install:forClass:category:", "source", "category", "new", "values", "methodDictionary", "class"],
1301
+ source: "copyClass: aClass named: aString\x0a\x09| newClass |\x0a\x0a\x09newClass := self \x0a\x09\x09addSubclassOf: aClass superclass\x0a\x09\x09named: aString \x0a\x09\x09instanceVariableNames: aClass instanceVariableNames \x0a\x09\x09package: aClass package name.\x0a\x0a\x09self copyClass: aClass to: newClass.\x0a \x0a\x09^newClass",
1302
+ messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "copyClass:to:"],
1303
+ referencedClasses: []
1304
+ }),
1305
+ smalltalk.ClassBuilder);
1306
+
1307
+ smalltalk.addMethod(
1308
+ "_copyClass_to_",
1309
+ smalltalk.method({
1310
+ selector: "copyClass:to:",
1311
+ category: 'private',
1312
+ fn: function (aClass,anotherClass){
1313
+ var self=this;
1314
+ return smalltalk.withContext(function($ctx1) {
1315
+ _st(_st(_st(aClass)._methodDictionary())._values())._do_((function(each){
1316
+ return smalltalk.withContext(function($ctx2) {
1317
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
1318
+ _st(_st(_st(_st(aClass)._class())._methodDictionary())._values())._do_((function(each){
1319
+ return smalltalk.withContext(function($ctx2) {
1320
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
1321
+ _st(self)._basicClass_instanceVariables_(_st(anotherClass)._class(),_st(_st(aClass)._class())._instanceVariableNames());
1322
+ _st(self)._setupClass_(anotherClass);
1323
+ return self}, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,anotherClass:anotherClass}, smalltalk.ClassBuilder)})},
1324
+ args: ["aClass", "anotherClass"],
1325
+ source: "copyClass: aClass to: anotherClass\x0a\x0a\x09anotherClass comment: aClass comment.\x0a\x0a\x09aClass methodDictionary values do: [ :each |\x0a\x09\x09Compiler new install: each source forClass: anotherClass category: each category ].\x0a\x0a\x09aClass class methodDictionary values do: [ :each |\x0a\x09\x09Compiler new install: each source forClass: anotherClass class category: each category ].\x0a\x0a\x09self basicClass: anotherClass class instanceVariables: aClass class instanceVariableNames.\x0a\x0a\x09self setupClass: anotherClass",
1326
+ messageSends: ["comment:", "comment", "do:", "install:forClass:category:", "source", "category", "new", "values", "methodDictionary", "class", "basicClass:instanceVariables:", "instanceVariableNames", "setupClass:"],
1146
1327
  referencedClasses: ["Compiler"]
1147
1328
  }),
1148
1329
  smalltalk.ClassBuilder);
1149
1330
 
1331
+ smalltalk.addMethod(
1332
+ "_installMethod_forClass_category_",
1333
+ smalltalk.method({
1334
+ selector: "installMethod:forClass:category:",
1335
+ category: 'api',
1336
+ fn: function (aCompiledMethod,aBehavior,aString){
1337
+ var self=this;
1338
+ return smalltalk.withContext(function($ctx1) {
1339
+ _st(aCompiledMethod)._category_(aString);
1340
+ _st(aBehavior)._addCompiledMethod_(aCompiledMethod);
1341
+ _st(self)._setupClass_(aBehavior);
1342
+ $1=aCompiledMethod;
1343
+ return $1;
1344
+ }, function($ctx1) {$ctx1.fill(self,"installMethod:forClass:category:",{aCompiledMethod:aCompiledMethod,aBehavior:aBehavior,aString:aString}, smalltalk.ClassBuilder)})},
1345
+ args: ["aCompiledMethod", "aBehavior", "aString"],
1346
+ source: "installMethod: aCompiledMethod forClass: aBehavior category: aString\x0a\x09aCompiledMethod category: aString.\x0a\x09aBehavior addCompiledMethod: aCompiledMethod.\x0a self setupClass: aBehavior.\x0a\x09^aCompiledMethod",
1347
+ messageSends: ["category:", "addCompiledMethod:", "setupClass:"],
1348
+ referencedClasses: []
1349
+ }),
1350
+ smalltalk.ClassBuilder);
1351
+
1150
1352
  smalltalk.addMethod(
1151
1353
  "_instanceVariableNamesFor_",
1152
1354
  smalltalk.method({
@@ -1154,41 +1356,87 @@ selector: "instanceVariableNamesFor:",
1154
1356
  category: 'private',
1155
1357
  fn: function (aString){
1156
1358
  var self=this;
1157
- var $1;
1158
- $1=smalltalk.send(smalltalk.send(aString,"_tokenize_",[" "]),"_reject_",[(function(each){
1159
- return smalltalk.send(each,"_isEmpty",[]);
1160
- })]);
1359
+ return smalltalk.withContext(function($ctx1) {
1360
+ $1=_st(_st(aString)._tokenize_(" "))._reject_((function(each){
1361
+ return smalltalk.withContext(function($ctx2) {
1362
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
1161
1363
  return $1;
1162
- },
1364
+ }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aString:aString}, smalltalk.ClassBuilder)})},
1163
1365
  args: ["aString"],
1164
- source: "instanceVariableNamesFor: aString\x0a\x09^(aString tokenize: ' ') reject: [:each | each isEmpty]",
1366
+ source: "instanceVariableNamesFor: aString\x0a\x09^(aString tokenize: ' ') reject: [ :each | each isEmpty ]",
1165
1367
  messageSends: ["reject:", "isEmpty", "tokenize:"],
1166
1368
  referencedClasses: []
1167
1369
  }),
1168
1370
  smalltalk.ClassBuilder);
1169
1371
 
1372
+ smalltalk.addMethod(
1373
+ "_migrateClass_superclass_",
1374
+ smalltalk.method({
1375
+ selector: "migrateClass:superclass:",
1376
+ category: 'private',
1377
+ fn: function (aClass,anotherClass){
1378
+ var self=this;
1379
+ return smalltalk.withContext(function($ctx1) {
1380
+ return self}, function($ctx1) {$ctx1.fill(self,"migrateClass:superclass:",{aClass:aClass,anotherClass:anotherClass}, smalltalk.ClassBuilder)})},
1381
+ args: ["aClass", "anotherClass"],
1382
+ source: "migrateClass: aClass superclass: anotherClass\x0a\x09self \x0a \x09migrateClassNamed: aClass name\x0a superclass: anotherClass\x0a instanceVariableNames: aClass instanceVariableNames\x0a package: aClass package name",
1383
+ messageSends: ["migrateClassNamed:superclass:instanceVariableNames:package:", "name", "instanceVariableNames", "package"],
1384
+ referencedClasses: []
1385
+ }),
1386
+ smalltalk.ClassBuilder);
1387
+
1388
+ smalltalk.addMethod(
1389
+ "_migrateClassNamed_superclass_instanceVariableNames_package_",
1390
+ smalltalk.method({
1391
+ selector: "migrateClassNamed:superclass:instanceVariableNames:package:",
1392
+ category: 'private',
1393
+ fn: function (aString,aClass,aCollection,packageName){
1394
+ var self=this;
1395
+ var oldClass,newClass;
1396
+ return smalltalk.withContext(function($ctx1) {
1397
+ oldClass=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._at_(aString);
1398
+ _st(self)._basicRenameClass_to_(oldClass,_st("Old").__comma(aString));
1399
+ newClass=_st(self)._addSubclassOf_named_instanceVariableNames_package_(aClass,aString,aCollection,packageName);
1400
+ _st(_st(oldClass)._subclasses())._do_((function(each){
1401
+ return smalltalk.withContext(function($ctx2) {
1402
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
1403
+ _st((function(){
1404
+ return smalltalk.withContext(function($ctx2) {
1405
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._on_do_((smalltalk.Error || Error),(function(exception){
1406
+ return smalltalk.withContext(function($ctx2) {
1407
+ _st($1)._basicRemoveClass_(newClass);
1408
+ $2=_st($1)._basicRenameClass_to_(oldClass,aString);
1409
+ $2;
1410
+ return _st(exception)._signal();
1411
+ }, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1)})}));
1412
+ _st(self)._basicRemoveClass_(oldClass);
1413
+ $3=newClass;
1414
+ return $3;
1415
+ }, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{aString:aString,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass}, smalltalk.ClassBuilder)})},
1416
+ args: ["aString", "aClass", "aCollection", "packageName"],
1417
+ source: "migrateClassNamed: aString superclass: aClass instanceVariableNames: aCollection package: packageName\x0a\x09| oldClass newClass |\x0a \x0a oldClass := Smalltalk current at: aString.\x0a \x0a \x22Rename the old class for existing instances\x22\x0a\x09self basicRenameClass: oldClass to: 'Old', aString.\x0a \x0a newClass := self \x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: aString \x0a\x09\x09instanceVariableNames: aCollection\x0a\x09\x09package: packageName.\x0a\x0a\x09oldClass subclasses do: [ :each |\x0a \x09self migrateClass: each superclass: newClass ].\x0a\x0a [ self copyClass: oldClass to: newClass ] \x0a \x09on: Error\x0a do: [ :exception |\x0a \x09self \x0a \x09basicRemoveClass: newClass;\x0a \x09basicRenameClass: oldClass to: aString.\x0a exception signal ].\x0a \x0a self basicRemoveClass: oldClass.\x0a\x09^newClass",
1418
+ messageSends: ["at:", "current", "basicRenameClass:to:", ",", "addSubclassOf:named:instanceVariableNames:package:", "do:", "migrateClass:superclass:", "subclasses", "on:do:", "basicRemoveClass:", "signal", "copyClass:to:"],
1419
+ referencedClasses: ["Smalltalk", "Error"]
1420
+ }),
1421
+ smalltalk.ClassBuilder);
1422
+
1170
1423
  smalltalk.addMethod(
1171
1424
  "_renameClass_to_",
1172
1425
  smalltalk.method({
1173
1426
  selector: "renameClass:to:",
1174
- category: 'class creation',
1427
+ category: 'api',
1175
1428
  fn: function (aClass,aString){
1176
1429
  var self=this;
1177
- var $1,$2;
1178
-
1179
- smalltalk[aString] = aClass;
1180
- delete smalltalk[aClass.className];
1181
- aClass.className = aString;
1182
- ;
1183
- ;
1184
- $1=smalltalk.send((smalltalk.ClassRenamed || ClassRenamed),"_new",[]);
1185
- smalltalk.send($1,"_theClass_",[aClass]);
1186
- $2=smalltalk.send($1,"_yourself",[]);
1187
- smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$2]);
1188
- return self},
1430
+ return smalltalk.withContext(function($ctx1) {
1431
+ _st(self)._basicRenameClass_to_(aClass,aString);
1432
+ $1=_st((smalltalk.ClassRenamed || ClassRenamed))._new();
1433
+ _st($1)._theClass_(aClass);
1434
+ $2=_st($1)._yourself();
1435
+ _st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($2);
1436
+ return self}, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,aString:aString}, smalltalk.ClassBuilder)})},
1189
1437
  args: ["aClass", "aString"],
1190
- source: "renameClass: aClass to: aString\x0a\x09<\x0a\x09\x09smalltalk[aString] = aClass;\x0a\x09\x09delete smalltalk[aClass.className];\x0a\x09\x09aClass.className = aString;\x0a\x09>.\x0a \x0a SystemAnnouncer current\x0a \x09announce: (ClassRenamed new\x0a \x09theClass: aClass;\x0a yourself)\x0a \x09",
1191
- messageSends: ["announce:", "theClass:", "new", "yourself", "current"],
1438
+ source: "renameClass: aClass to: aString\x0a\x09self basicRenameClass: aClass to: aString.\x0a \x0a SystemAnnouncer current\x0a \x09announce: (ClassRenamed new\x0a \x09theClass: aClass;\x0a yourself)",
1439
+ messageSends: ["basicRenameClass:to:", "announce:", "theClass:", "new", "yourself", "current"],
1192
1440
  referencedClasses: ["ClassRenamed", "SystemAnnouncer"]
1193
1441
  }),
1194
1442
  smalltalk.ClassBuilder);
@@ -1197,12 +1445,11 @@ smalltalk.addMethod(
1197
1445
  "_setupClass_",
1198
1446
  smalltalk.method({
1199
1447
  selector: "setupClass:",
1200
- category: 'private',
1448
+ category: 'api',
1201
1449
  fn: function (aClass){
1202
1450
  var self=this;
1203
- smalltalk.init(aClass);;
1204
- ;
1205
- return self},
1451
+ return smalltalk.withContext(function($ctx1) {
1452
+ return self}, function($ctx1) {$ctx1.fill(self,"setupClass:",{aClass:aClass}, smalltalk.ClassBuilder)})},
1206
1453
  args: ["aClass"],
1207
1454
  source: "setupClass: aClass\x0a\x09<smalltalk.init(aClass);>",
1208
1455
  messageSends: [],
@@ -1214,13 +1461,13 @@ smalltalk.addMethod(
1214
1461
  "_superclass_subclass_",
1215
1462
  smalltalk.method({
1216
1463
  selector: "superclass:subclass:",
1217
- category: 'class creation',
1464
+ category: 'api',
1218
1465
  fn: function (aClass,aString){
1219
1466
  var self=this;
1220
- var $1;
1221
- $1=smalltalk.send(self,"_superclass_subclass_instanceVariableNames_package_",[aClass,aString,"",nil]);
1467
+ return smalltalk.withContext(function($ctx1) {
1468
+ $1=_st(self)._superclass_subclass_instanceVariableNames_package_(aClass,aString,"",nil);
1222
1469
  return $1;
1223
- },
1470
+ }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:",{aClass:aClass,aString:aString}, smalltalk.ClassBuilder)})},
1224
1471
  args: ["aClass", "aString"],
1225
1472
  source: "superclass: aClass subclass: aString\x0a\x09^self superclass: aClass subclass: aString instanceVariableNames: '' package: nil",
1226
1473
  messageSends: ["superclass:subclass:instanceVariableNames:package:"],
@@ -1232,24 +1479,30 @@ smalltalk.addMethod(
1232
1479
  "_superclass_subclass_instanceVariableNames_package_",
1233
1480
  smalltalk.method({
1234
1481
  selector: "superclass:subclass:instanceVariableNames:package:",
1235
- category: 'class creation',
1482
+ category: 'api',
1236
1483
  fn: function (aClass,aString,aString2,aString3){
1237
1484
  var self=this;
1238
- var $1,$2,$3;
1239
1485
  var newClass;
1240
- if(($receiver = aString3) == nil || $receiver == undefined){
1241
- $1="unclassified";
1486
+ return smalltalk.withContext(function($ctx1) {
1487
+ $1=self;
1488
+ $2=aClass;
1489
+ $3=aString;
1490
+ $4=_st(self)._instanceVariableNamesFor_(aString2);
1491
+ $6=aString3;
1492
+ if(($receiver = $6) == nil || $receiver == undefined){
1493
+ $5="unclassified";
1242
1494
  } else {
1243
- $1=aString3;
1495
+ $5=$6;
1244
1496
  };
1245
- newClass=smalltalk.send(self,"_addSubclassOf_named_instanceVariableNames_package_",[aClass,aString,smalltalk.send(self,"_instanceVariableNamesFor_",[aString2]),$1]);
1246
- smalltalk.send(self,"_setupClass_",[newClass]);
1247
- $2=smalltalk.send((smalltalk.ClassAdded || ClassAdded),"_new",[]);
1248
- smalltalk.send($2,"_theClass_",[newClass]);
1249
- $3=smalltalk.send($2,"_yourself",[]);
1250
- smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$3]);
1251
- return newClass;
1252
- },
1497
+ newClass=_st($1)._addSubclassOf_named_instanceVariableNames_package_($2,$3,$4,$5);
1498
+ _st(self)._setupClass_(newClass);
1499
+ $7=_st((smalltalk.ClassAdded || ClassAdded))._new();
1500
+ _st($7)._theClass_(newClass);
1501
+ $8=_st($7)._yourself();
1502
+ _st(_st((smalltalk.SystemAnnouncer || SystemAnnouncer))._current())._announce_($8);
1503
+ $9=newClass;
1504
+ return $9;
1505
+ }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:instanceVariableNames:package:",{aClass:aClass,aString:aString,aString2:aString2,aString3:aString3,newClass:newClass}, smalltalk.ClassBuilder)})},
1253
1506
  args: ["aClass", "aString", "aString2", "aString3"],
1254
1507
  source: "superclass: aClass subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09| newClass |\x0a\x09\x0a newClass := self addSubclassOf: aClass\x0a\x09\x09named: aString instanceVariableNames: (self instanceVariableNamesFor: aString2)\x0a\x09\x09package: (aString3 ifNil: ['unclassified']).\x0a\x09self setupClass: newClass.\x0a \x0a SystemAnnouncer current \x0a \x09announce: (ClassAdded new\x0a \x09theClass: newClass;\x0a yourself).\x0a \x0a\x09^newClass",
1255
1508
  messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:", "announce:", "theClass:", "new", "yourself", "current"],
@@ -1259,7 +1512,7 @@ smalltalk.ClassBuilder);
1259
1512
 
1260
1513
 
1261
1514
 
1262
- smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category', 'chunkParser'], 'Kernel-Classes');
1515
+ smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category'], 'Kernel-Classes');
1263
1516
  smalltalk.ClassCategoryReader.comment="ClassCategoryReader represents a mechanism for retrieving class descriptions stored on a file."
1264
1517
  smalltalk.addMethod(
1265
1518
  "_class_category_",
@@ -1268,9 +1521,9 @@ selector: "class:category:",
1268
1521
  category: 'accessing',
1269
1522
  fn: function (aClass,aString){
1270
1523
  var self=this;
1271
- self["@class"]=aClass;
1524
+ return smalltalk.withContext(function($ctx1) {
1272
1525
  self["@category"]=aString;
1273
- return self},
1526
+ return self}, function($ctx1) {$ctx1.fill(self,"class:category:",{aClass:aClass,aString:aString}, smalltalk.ClassCategoryReader)})},
1274
1527
  args: ["aClass", "aString"],
1275
1528
  source: "class: aClass category: aString\x0a\x09class := aClass.\x0a\x09category := aString",
1276
1529
  messageSends: [],
@@ -1285,8 +1538,8 @@ selector: "compileMethod:",
1285
1538
  category: 'private',
1286
1539
  fn: function (aString){
1287
1540
  var self=this;
1288
- smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_install_forClass_category_",[aString,self["@class"],self["@category"]]);
1289
- return self},
1541
+ return smalltalk.withContext(function($ctx1) {
1542
+ return self}, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString}, smalltalk.ClassCategoryReader)})},
1290
1543
  args: ["aString"],
1291
1544
  source: "compileMethod: aString\x0a\x09Compiler new install: aString forClass: class category: category",
1292
1545
  messageSends: ["install:forClass:category:", "new"],
@@ -1301,13 +1554,12 @@ selector: "initialize",
1301
1554
  category: 'initialization',
1302
1555
  fn: function (){
1303
1556
  var self=this;
1304
- smalltalk.send(self,"_initialize",[],smalltalk.Object);
1305
- self["@chunkParser"]=smalltalk.send((smalltalk.ChunkParser || ChunkParser),"_new",[]);
1306
- return self},
1557
+ return smalltalk.withContext(function($ctx1) {
1558
+ return self}, function($ctx1) {$ctx1.fill(self,"initialize",{}, smalltalk.ClassCategoryReader)})},
1307
1559
  args: [],
1308
- source: "initialize\x0a\x09super initialize.\x0a\x09chunkParser := ChunkParser new.",
1309
- messageSends: ["initialize", "new"],
1310
- referencedClasses: ["ChunkParser"]
1560
+ source: "initialize\x0a\x09super initialize.",
1561
+ messageSends: ["initialize"],
1562
+ referencedClasses: []
1311
1563
  }),
1312
1564
  smalltalk.ClassCategoryReader);
1313
1565
 
@@ -1319,26 +1571,26 @@ category: 'fileIn',
1319
1571
  fn: function (aChunkParser){
1320
1572
  var self=this;
1321
1573
  var chunk;
1322
- smalltalk.send((function(){
1323
- chunk=smalltalk.send(aChunkParser,"_nextChunk",[]);
1574
+ return smalltalk.withContext(function($ctx1) {
1575
+ return smalltalk.withContext(function($ctx2) {
1324
1576
  chunk;
1325
- return smalltalk.send(chunk,"_isEmpty",[]);
1326
- }),"_whileFalse_",[(function(){
1327
- return smalltalk.send(self,"_compileMethod_",[chunk]);
1328
- })]);
1329
- smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_setupClass_",[self["@class"]]);
1330
- return self},
1577
+ return _st(chunk)._isEmpty();
1578
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
1579
+ return smalltalk.withContext(function($ctx2) {
1580
+ }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
1581
+ _st(_st((smalltalk.ClassBuilder || ClassBuilder))._new())._setupClass_(self["@class"]);
1582
+ return self}, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk}, smalltalk.ClassCategoryReader)})},
1331
1583
  args: ["aChunkParser"],
1332
- source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09[chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty] whileFalse: [\x0a\x09 self compileMethod: chunk].\x0a\x09Compiler new setupClass: class",
1584
+ source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09[chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty] whileFalse: [\x0a\x09 self compileMethod: chunk].\x0a\x09ClassBuilder new setupClass: class",
1333
1585
  messageSends: ["whileFalse:", "compileMethod:", "nextChunk", "isEmpty", "setupClass:", "new"],
1334
- referencedClasses: ["Compiler"]
1586
+ referencedClasses: ["ClassBuilder"]
1335
1587
  }),
1336
1588
  smalltalk.ClassCategoryReader);
1337
1589
 
1338
1590
 
1339
1591
 
1340
- smalltalk.addClass('ClassCommentReader', smalltalk.Object, ['class', 'chunkParser'], 'Kernel-Classes');
1341
- smalltalk.ClassCommentReader.comment="ClassCommentReader represents a mechanism for retrieving class descriptions stored on a file.\x0aSee `ClassCategoryReader` too."
1592
+ smalltalk.addClass('ClassCommentReader', smalltalk.Object, ['class'], 'Kernel-Classes');
1593
+ smalltalk.ClassCommentReader.comment="ClassCommentReader represents a mechanism for retrieving class comments stored on a file.\x0aSee `ClassCategoryReader` too."
1342
1594
  smalltalk.addMethod(
1343
1595
  "_class_",
1344
1596
  smalltalk.method({
@@ -1346,8 +1598,8 @@ selector: "class:",
1346
1598
  category: 'accessing',
1347
1599
  fn: function (aClass){
1348
1600
  var self=this;
1349
- self["@class"]=aClass;
1350
- return self},
1601
+ return smalltalk.withContext(function($ctx1) {
1602
+ return self}, function($ctx1) {$ctx1.fill(self,"class:",{aClass:aClass}, smalltalk.ClassCommentReader)})},
1351
1603
  args: ["aClass"],
1352
1604
  source: "class: aClass\x0a\x09class := aClass",
1353
1605
  messageSends: [],
@@ -1362,13 +1614,12 @@ selector: "initialize",
1362
1614
  category: 'initialization',
1363
1615
  fn: function (){
1364
1616
  var self=this;
1365
- smalltalk.send(self,"_initialize",[],smalltalk.Object);
1366
- self["@chunkParser"]=smalltalk.send((smalltalk.ChunkParser || ChunkParser),"_new",[]);
1367
- return self},
1617
+ return smalltalk.withContext(function($ctx1) {
1618
+ return self}, function($ctx1) {$ctx1.fill(self,"initialize",{}, smalltalk.ClassCommentReader)})},
1368
1619
  args: [],
1369
- source: "initialize\x0a\x09super initialize.\x0a\x09chunkParser := ChunkParser new.",
1370
- messageSends: ["initialize", "new"],
1371
- referencedClasses: ["ChunkParser"]
1620
+ source: "initialize\x0a\x09super initialize.",
1621
+ messageSends: ["initialize"],
1622
+ referencedClasses: []
1372
1623
  }),
1373
1624
  smalltalk.ClassCommentReader);
1374
1625
 
@@ -1379,14 +1630,14 @@ selector: "scanFrom:",
1379
1630
  category: 'fileIn',
1380
1631
  fn: function (aChunkParser){
1381
1632
  var self=this;
1382
- var $1;
1383
1633
  var chunk;
1384
- chunk=smalltalk.send(aChunkParser,"_nextChunk",[]);
1385
- $1=smalltalk.send(chunk,"_isEmpty",[]);
1634
+ return smalltalk.withContext(function($ctx1) {
1635
+ chunk=_st(aChunkParser)._nextChunk();
1636
+ $1=_st(chunk)._isEmpty();
1386
1637
  if(! smalltalk.assert($1)){
1387
- smalltalk.send(self,"_setComment_",[chunk]);
1638
+ _st(self)._setComment_(chunk);
1388
1639
  };
1389
- return self},
1640
+ return self}, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk}, smalltalk.ClassCommentReader)})},
1390
1641
  args: ["aChunkParser"],
1391
1642
  source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty ifFalse: [\x0a\x09 self setComment: chunk].",
1392
1643
  messageSends: ["nextChunk", "ifFalse:", "setComment:", "isEmpty"],
@@ -1401,8 +1652,8 @@ selector: "setComment:",
1401
1652
  category: 'private',
1402
1653
  fn: function (aString){
1403
1654
  var self=this;
1404
- smalltalk.send(self["@class"],"_comment_",[aString]);
1405
- return self},
1655
+ return smalltalk.withContext(function($ctx1) {
1656
+ return self}, function($ctx1) {$ctx1.fill(self,"setComment:",{aString:aString}, smalltalk.ClassCommentReader)})},
1406
1657
  args: ["aString"],
1407
1658
  source: "setComment: aString\x0a class comment: aString",
1408
1659
  messageSends: ["comment:"],
@@ -1420,23 +1671,24 @@ selector: "getNodesFrom:",
1420
1671
  category: 'accessing',
1421
1672
  fn: function (aCollection){
1422
1673
  var self=this;
1423
- var $1;
1424
- var children;
1425
- var others;
1674
+ var children,others;
1675
+ return smalltalk.withContext(function($ctx1) {
1426
1676
  children=[];
1427
1677
  others=[];
1428
- smalltalk.send(aCollection,"_do_",[(function(each){
1429
- $1=smalltalk.send(smalltalk.send(each,"_superclass",[]),"__eq",[smalltalk.send(self,"_theClass",[])]);
1430
- if(smalltalk.assert($1)){
1431
- return smalltalk.send(children,"_add_",[each]);
1678
+ $1=aCollection;
1679
+ $2=(function(each){
1680
+ return smalltalk.withContext(function($ctx2) {
1681
+ if(smalltalk.assert($3)){
1682
+ return _st(children)._add_(each);
1432
1683
  } else {
1433
- return smalltalk.send(others,"_add_",[each]);
1684
+ return _st(others)._add_(each);
1434
1685
  };
1435
- })]);
1436
- self["@nodes"]=smalltalk.send(children,"_collect_",[(function(each){
1437
- return smalltalk.send((smalltalk.ClassSorterNode || ClassSorterNode),"_on_classes_level_",[each,others,smalltalk.send(smalltalk.send(self,"_level",[]),"__plus",[(1)])]);
1438
- })]);
1439
- return self},
1686
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})});
1687
+ _st($1)._do_($2);
1688
+ self["@nodes"]=_st(children)._collect_((function(each){
1689
+ return smalltalk.withContext(function($ctx2) {
1690
+ }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
1691
+ return self}, function($ctx1) {$ctx1.fill(self,"getNodesFrom:",{aCollection:aCollection,children:children,others:others}, smalltalk.ClassSorterNode)})},
1440
1692
  args: ["aCollection"],
1441
1693
  source: "getNodesFrom: aCollection\x0a\x09| children others |\x0a\x09children := #().\x0a\x09others := #().\x0a\x09aCollection do: [:each |\x0a\x09\x09(each superclass = self theClass)\x0a\x09\x09\x09ifTrue: [children add: each]\x0a\x09\x09\x09ifFalse: [others add: each]].\x0a\x09nodes:= children collect: [:each |\x0a\x09\x09ClassSorterNode on: each classes: others level: self level + 1]",
1442
1694
  messageSends: ["do:", "ifTrue:ifFalse:", "add:", "=", "theClass", "superclass", "collect:", "on:classes:level:", "+", "level"],
@@ -1451,8 +1703,10 @@ selector: "level",
1451
1703
  category: 'accessing',
1452
1704
  fn: function (){
1453
1705
  var self=this;
1454
- return self["@level"];
1455
- },
1706
+ return smalltalk.withContext(function($ctx1) {
1707
+ $1=self["@level"];
1708
+ return $1;
1709
+ }, function($ctx1) {$ctx1.fill(self,"level",{}, smalltalk.ClassSorterNode)})},
1456
1710
  args: [],
1457
1711
  source: "level\x0a\x09^level",
1458
1712
  messageSends: [],
@@ -1467,8 +1721,8 @@ selector: "level:",
1467
1721
  category: 'accessing',
1468
1722
  fn: function (anInteger){
1469
1723
  var self=this;
1470
- self["@level"]=anInteger;
1471
- return self},
1724
+ return smalltalk.withContext(function($ctx1) {
1725
+ return self}, function($ctx1) {$ctx1.fill(self,"level:",{anInteger:anInteger}, smalltalk.ClassSorterNode)})},
1472
1726
  args: ["anInteger"],
1473
1727
  source: "level: anInteger\x0a\x09level := anInteger",
1474
1728
  messageSends: [],
@@ -1483,8 +1737,10 @@ selector: "nodes",
1483
1737
  category: 'accessing',
1484
1738
  fn: function (){
1485
1739
  var self=this;
1486
- return self["@nodes"];
1487
- },
1740
+ return smalltalk.withContext(function($ctx1) {
1741
+ $1=self["@nodes"];
1742
+ return $1;
1743
+ }, function($ctx1) {$ctx1.fill(self,"nodes",{}, smalltalk.ClassSorterNode)})},
1488
1744
  args: [],
1489
1745
  source: "nodes\x0a\x09^nodes",
1490
1746
  messageSends: [],
@@ -1499,8 +1755,10 @@ selector: "theClass",
1499
1755
  category: 'accessing',
1500
1756
  fn: function (){
1501
1757
  var self=this;
1502
- return self["@theClass"];
1503
- },
1758
+ return smalltalk.withContext(function($ctx1) {
1759
+ $1=self["@theClass"];
1760
+ return $1;
1761
+ }, function($ctx1) {$ctx1.fill(self,"theClass",{}, smalltalk.ClassSorterNode)})},
1504
1762
  args: [],
1505
1763
  source: "theClass\x0a\x09^theClass",
1506
1764
  messageSends: [],
@@ -1515,8 +1773,8 @@ selector: "theClass:",
1515
1773
  category: 'accessing',
1516
1774
  fn: function (aClass){
1517
1775
  var self=this;
1518
- self["@theClass"]=aClass;
1519
- return self},
1776
+ return smalltalk.withContext(function($ctx1) {
1777
+ return self}, function($ctx1) {$ctx1.fill(self,"theClass:",{aClass:aClass}, smalltalk.ClassSorterNode)})},
1520
1778
  args: ["aClass"],
1521
1779
  source: "theClass: aClass\x0a\x09theClass := aClass",
1522
1780
  messageSends: [],
@@ -1531,13 +1789,13 @@ selector: "traverseClassesWith:",
1531
1789
  category: 'visiting',
1532
1790
  fn: function (aCollection){
1533
1791
  var self=this;
1534
- smalltalk.send(aCollection,"_add_",[smalltalk.send(self,"_theClass",[])]);
1535
- smalltalk.send(smalltalk.send(smalltalk.send(self,"_nodes",[]),"_sorted_",[(function(a,b){
1536
- return smalltalk.send(smalltalk.send(smalltalk.send(a,"_theClass",[]),"_name",[]),"__lt_eq",[smalltalk.send(smalltalk.send(b,"_theClass",[]),"_name",[])]);
1537
- })]),"_do_",[(function(aNode){
1538
- return smalltalk.send(aNode,"_traverseClassesWith_",[aCollection]);
1539
- })]);
1540
- return self},
1792
+ return smalltalk.withContext(function($ctx1) {
1793
+ _st(_st(_st(self)._nodes())._sorted_((function(a,b){
1794
+ return smalltalk.withContext(function($ctx2) {
1795
+ }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(aNode){
1796
+ return smalltalk.withContext(function($ctx2) {
1797
+ }, function($ctx2) {$ctx2.fillBlock({aNode:aNode},$ctx1)})}));
1798
+ return self}, function($ctx1) {$ctx1.fill(self,"traverseClassesWith:",{aCollection:aCollection}, smalltalk.ClassSorterNode)})},
1541
1799
  args: ["aCollection"],
1542
1800
  source: "traverseClassesWith: aCollection\x0a\x09\x22sort classes alphabetically Issue #143\x22\x0a\x0a\x09aCollection add: self theClass.\x0a\x09(self nodes sorted: [:a :b | a theClass name <= b theClass name ]) do: [:aNode |\x0a\x09\x09aNode traverseClassesWith: aCollection ].",
1543
1801
  messageSends: ["add:", "theClass", "do:", "traverseClassesWith:", "sorted:", "<=", "name", "nodes"],
@@ -1553,15 +1811,15 @@ selector: "on:classes:level:",
1553
1811
  category: 'instance creation',
1554
1812
  fn: function (aClass,aCollection,anInteger){
1555
1813
  var self=this;
1556
- var $2,$3,$1;
1557
- $2=smalltalk.send(self,"_new",[]);
1558
- smalltalk.send($2,"_theClass_",[aClass]);
1559
- smalltalk.send($2,"_level_",[anInteger]);
1560
- smalltalk.send($2,"_getNodesFrom_",[aCollection]);
1561
- $3=smalltalk.send($2,"_yourself",[]);
1814
+ return smalltalk.withContext(function($ctx1) {
1815
+ $2=_st(self)._new();
1816
+ _st($2)._theClass_(aClass);
1817
+ _st($2)._level_(anInteger);
1818
+ _st($2)._getNodesFrom_(aCollection);
1819
+ $3=_st($2)._yourself();
1562
1820
  $1=$3;
1563
1821
  return $1;
1564
- },
1822
+ }, function($ctx1) {$ctx1.fill(self,"on:classes:level:",{aClass:aClass,aCollection:aCollection,anInteger:anInteger}, smalltalk.ClassSorterNode.klass)})},
1565
1823
  args: ["aClass", "aCollection", "anInteger"],
1566
1824
  source: "on: aClass classes: aCollection level: anInteger\x0a\x09^self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09level: anInteger;\x0a\x09\x09getNodesFrom: aCollection;\x0a\x09\x09yourself",
1567
1825
  messageSends: ["theClass:", "new", "level:", "getNodesFrom:", "yourself"],