Kernel-Helpers.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. define(["amber/boot", "require"], function($boot,requirejs){"use strict";
  2. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. var $pkg = $core.addPackage("Kernel-Helpers");
  4. $pkg.innerEval = function (expr) { return eval(expr); };
  5. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  6. $core.addTrait("TPragmator", "Kernel-Helpers");
  7. $core.addMethod(
  8. $core.method({
  9. selector: "canProcessPragma:",
  10. protocol: "pragma processing",
  11. //>>excludeStart("ide", pragmas.excludeIdeData);
  12. args: ["aMessage"],
  13. source: "canProcessPragma: aMessage\x0a\x09| selector |\x0a\x09selector := aMessage selector.\x0a\x09^ (self respondsTo: selector) and: [\x0a\x09\x09(self class superclass canUnderstand: selector) not]",
  14. referencedClasses: [],
  15. //>>excludeEnd("ide");
  16. pragmas: [],
  17. messageSends: ["selector", "and:", "respondsTo:", "not", "canUnderstand:", "superclass", "class"]
  18. }, function ($methodClass){ return function (aMessage){
  19. var self=this,$self=this;
  20. var selector;
  21. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22. return $core.withContext(function($ctx1) {
  23. //>>excludeEnd("ctx");
  24. selector=$recv(aMessage)._selector();
  25. return $recv($self._respondsTo_(selector))._and_((function(){
  26. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27. return $core.withContext(function($ctx2) {
  28. //>>excludeEnd("ctx");
  29. return $recv($recv($recv($self._class())._superclass())._canUnderstand_(selector))._not();
  30. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  32. //>>excludeEnd("ctx");
  33. }));
  34. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35. }, function($ctx1) {$ctx1.fill(self,"canProcessPragma:",{aMessage:aMessage,selector:selector})});
  36. //>>excludeEnd("ctx");
  37. }; }),
  38. $globals.TPragmator);
  39. $core.addMethod(
  40. $core.method({
  41. selector: "processPragma:",
  42. protocol: "pragma processing",
  43. //>>excludeStart("ide", pragmas.excludeIdeData);
  44. args: ["aMessage"],
  45. source: "processPragma: aMessage\x0a\x09(self canProcessPragma: aMessage) ifTrue: [\x0a\x09\x09^ aMessage sendTo: self ]",
  46. referencedClasses: [],
  47. //>>excludeEnd("ide");
  48. pragmas: [],
  49. messageSends: ["ifTrue:", "canProcessPragma:", "sendTo:"]
  50. }, function ($methodClass){ return function (aMessage){
  51. var self=this,$self=this;
  52. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53. return $core.withContext(function($ctx1) {
  54. //>>excludeEnd("ctx");
  55. var $1;
  56. $1=$self._canProcessPragma_(aMessage);
  57. if($core.assert($1)){
  58. return $recv(aMessage)._sendTo_(self);
  59. }
  60. return self;
  61. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62. }, function($ctx1) {$ctx1.fill(self,"processPragma:",{aMessage:aMessage})});
  63. //>>excludeEnd("ctx");
  64. }; }),
  65. $globals.TPragmator);
  66. $core.addMethod(
  67. $core.method({
  68. selector: "processPragmas:",
  69. protocol: "pragma processing",
  70. //>>excludeStart("ide", pragmas.excludeIdeData);
  71. args: ["aCollection"],
  72. source: "processPragmas: aCollection\x0a\x09aCollection do: [ :each | self processPragma: each ]",
  73. referencedClasses: [],
  74. //>>excludeEnd("ide");
  75. pragmas: [],
  76. messageSends: ["do:", "processPragma:"]
  77. }, function ($methodClass){ return function (aCollection){
  78. var self=this,$self=this;
  79. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80. return $core.withContext(function($ctx1) {
  81. //>>excludeEnd("ctx");
  82. $recv(aCollection)._do_((function(each){
  83. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84. return $core.withContext(function($ctx2) {
  85. //>>excludeEnd("ctx");
  86. return $self._processPragma_(each);
  87. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  89. //>>excludeEnd("ctx");
  90. }));
  91. return self;
  92. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93. }, function($ctx1) {$ctx1.fill(self,"processPragmas:",{aCollection:aCollection})});
  94. //>>excludeEnd("ctx");
  95. }; }),
  96. $globals.TPragmator);
  97. $core.addTrait("TSubclassable", "Kernel-Helpers");
  98. $core.addMethod(
  99. $core.method({
  100. selector: "subclass:",
  101. protocol: "class creation",
  102. //>>excludeStart("ide", pragmas.excludeIdeData);
  103. args: ["aString"],
  104. source: "subclass: aString \x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: #() package: nil",
  105. referencedClasses: [],
  106. //>>excludeEnd("ide");
  107. pragmas: [],
  108. messageSends: ["subclass:slots:package:"]
  109. }, function ($methodClass){ return function (aString){
  110. var self=this,$self=this;
  111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  112. return $core.withContext(function($ctx1) {
  113. //>>excludeEnd("ctx");
  114. return $self._subclass_slots_package_(aString,[],nil);
  115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  116. }, function($ctx1) {$ctx1.fill(self,"subclass:",{aString:aString})});
  117. //>>excludeEnd("ctx");
  118. }; }),
  119. $globals.TSubclassable);
  120. $core.addMethod(
  121. $core.method({
  122. selector: "subclass:instanceVariableNames:",
  123. protocol: "class creation",
  124. //>>excludeStart("ide", pragmas.excludeIdeData);
  125. args: ["aString", "anotherString"],
  126. source: "subclass: aString instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: anotherString package: nil",
  127. referencedClasses: [],
  128. //>>excludeEnd("ide");
  129. pragmas: [],
  130. messageSends: ["subclass:instanceVariableNames:package:"]
  131. }, function ($methodClass){ return function (aString,anotherString){
  132. var self=this,$self=this;
  133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  134. return $core.withContext(function($ctx1) {
  135. //>>excludeEnd("ctx");
  136. return $self._subclass_instanceVariableNames_package_(aString,anotherString,nil);
  137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  138. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:",{aString:aString,anotherString:anotherString})});
  139. //>>excludeEnd("ctx");
  140. }; }),
  141. $globals.TSubclassable);
  142. $core.addMethod(
  143. $core.method({
  144. selector: "subclass:instanceVariableNames:category:",
  145. protocol: "class creation",
  146. //>>excludeStart("ide", pragmas.excludeIdeData);
  147. args: ["aString", "aString2", "aString3"],
  148. source: "subclass: aString instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
  149. referencedClasses: [],
  150. //>>excludeEnd("ide");
  151. pragmas: [],
  152. messageSends: ["subclass:instanceVariableNames:package:"]
  153. }, function ($methodClass){ return function (aString,aString2,aString3){
  154. var self=this,$self=this;
  155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  156. return $core.withContext(function($ctx1) {
  157. //>>excludeEnd("ctx");
  158. return $self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
  159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  160. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:category:",{aString:aString,aString2:aString2,aString3:aString3})});
  161. //>>excludeEnd("ctx");
  162. }; }),
  163. $globals.TSubclassable);
  164. $core.addMethod(
  165. $core.method({
  166. selector: "subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",
  167. protocol: "class creation",
  168. //>>excludeStart("ide", pragmas.excludeIdeData);
  169. args: ["aString", "aString2", "classVars", "pools", "aString3"],
  170. source: "subclass: aString instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
  171. referencedClasses: [],
  172. //>>excludeEnd("ide");
  173. pragmas: [],
  174. messageSends: ["subclass:instanceVariableNames:package:"]
  175. }, function ($methodClass){ return function (aString,aString2,classVars,pools,aString3){
  176. var self=this,$self=this;
  177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  178. return $core.withContext(function($ctx1) {
  179. //>>excludeEnd("ctx");
  180. return $self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
  181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  182. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3})});
  183. //>>excludeEnd("ctx");
  184. }; }),
  185. $globals.TSubclassable);
  186. $core.addMethod(
  187. $core.method({
  188. selector: "subclass:instanceVariableNames:package:",
  189. protocol: "class creation",
  190. //>>excludeStart("ide", pragmas.excludeIdeData);
  191. args: ["aString", "aString2", "aString3"],
  192. source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: aString2 instanceVariablesStringAsSlotList package: aString3",
  193. referencedClasses: [],
  194. //>>excludeEnd("ide");
  195. pragmas: [],
  196. messageSends: ["subclass:slots:package:", "instanceVariablesStringAsSlotList"]
  197. }, function ($methodClass){ return function (aString,aString2,aString3){
  198. var self=this,$self=this;
  199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  200. return $core.withContext(function($ctx1) {
  201. //>>excludeEnd("ctx");
  202. return $self._subclass_slots_package_(aString,$recv(aString2)._instanceVariablesStringAsSlotList(),aString3);
  203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  204. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3})});
  205. //>>excludeEnd("ctx");
  206. }; }),
  207. $globals.TSubclassable);
  208. $core.addMethod(
  209. $core.method({
  210. selector: "subclass:slots:",
  211. protocol: "class creation",
  212. //>>excludeStart("ide", pragmas.excludeIdeData);
  213. args: ["aString", "aCollection"],
  214. source: "subclass: aString slots: aCollection\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: aCollection package: nil",
  215. referencedClasses: [],
  216. //>>excludeEnd("ide");
  217. pragmas: [],
  218. messageSends: ["subclass:slots:package:"]
  219. }, function ($methodClass){ return function (aString,aCollection){
  220. var self=this,$self=this;
  221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  222. return $core.withContext(function($ctx1) {
  223. //>>excludeEnd("ctx");
  224. return $self._subclass_slots_package_(aString,aCollection,nil);
  225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  226. }, function($ctx1) {$ctx1.fill(self,"subclass:slots:",{aString:aString,aCollection:aCollection})});
  227. //>>excludeEnd("ctx");
  228. }; }),
  229. $globals.TSubclassable);
  230. $core.addMethod(
  231. $core.method({
  232. selector: "subclass:slots:classVariables:package:",
  233. protocol: "class creation",
  234. //>>excludeStart("ide", pragmas.excludeIdeData);
  235. args: ["aString", "aCollection", "anObject", "anotherString"],
  236. source: "subclass: aString slots: aCollection classVariables: anObject package: anotherString\x0a\x09\x22Kept for file-in compatibility. ignores class variables.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
  237. referencedClasses: ["ClassBuilder"],
  238. //>>excludeEnd("ide");
  239. pragmas: [],
  240. messageSends: ["superclass:subclass:slots:package:", "new"]
  241. }, function ($methodClass){ return function (aString,aCollection,anObject,anotherString){
  242. var self=this,$self=this;
  243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  244. return $core.withContext(function($ctx1) {
  245. //>>excludeEnd("ctx");
  246. return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
  247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  248. }, function($ctx1) {$ctx1.fill(self,"subclass:slots:classVariables:package:",{aString:aString,aCollection:aCollection,anObject:anObject,anotherString:anotherString})});
  249. //>>excludeEnd("ctx");
  250. }; }),
  251. $globals.TSubclassable);
  252. $core.addMethod(
  253. $core.method({
  254. selector: "subclass:slots:classVariables:poolDictionaries:package:",
  255. protocol: "class creation",
  256. //>>excludeStart("ide", pragmas.excludeIdeData);
  257. args: ["aString", "aCollection", "anObject", "anotherObject", "anotherString"],
  258. source: "subclass: aString slots: aCollection classVariables: anObject poolDictionaries: anotherObject package: anotherString\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
  259. referencedClasses: ["ClassBuilder"],
  260. //>>excludeEnd("ide");
  261. pragmas: [],
  262. messageSends: ["superclass:subclass:slots:package:", "new"]
  263. }, function ($methodClass){ return function (aString,aCollection,anObject,anotherObject,anotherString){
  264. var self=this,$self=this;
  265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  266. return $core.withContext(function($ctx1) {
  267. //>>excludeEnd("ctx");
  268. return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
  269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  270. }, function($ctx1) {$ctx1.fill(self,"subclass:slots:classVariables:poolDictionaries:package:",{aString:aString,aCollection:aCollection,anObject:anObject,anotherObject:anotherObject,anotherString:anotherString})});
  271. //>>excludeEnd("ctx");
  272. }; }),
  273. $globals.TSubclassable);
  274. $core.addMethod(
  275. $core.method({
  276. selector: "subclass:slots:package:",
  277. protocol: "class creation",
  278. //>>excludeStart("ide", pragmas.excludeIdeData);
  279. args: ["aString", "aCollection", "anotherString"],
  280. source: "subclass: aString slots: aCollection package: anotherString\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
  281. referencedClasses: ["ClassBuilder"],
  282. //>>excludeEnd("ide");
  283. pragmas: [],
  284. messageSends: ["superclass:subclass:slots:package:", "new"]
  285. }, function ($methodClass){ return function (aString,aCollection,anotherString){
  286. var self=this,$self=this;
  287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  288. return $core.withContext(function($ctx1) {
  289. //>>excludeEnd("ctx");
  290. return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
  291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  292. }, function($ctx1) {$ctx1.fill(self,"subclass:slots:package:",{aString:aString,aCollection:aCollection,anotherString:anotherString})});
  293. //>>excludeEnd("ctx");
  294. }; }),
  295. $globals.TSubclassable);
  296. $core.addMethod(
  297. $core.method({
  298. selector: "subclass:uses:",
  299. protocol: "class creation",
  300. //>>excludeStart("ide", pragmas.excludeIdeData);
  301. args: ["aString", "aTraitCompositionDescription"],
  302. source: "subclass: aString uses: aTraitCompositionDescription \x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: #() package: nil",
  303. referencedClasses: [],
  304. //>>excludeEnd("ide");
  305. pragmas: [],
  306. messageSends: ["subclass:uses:slots:package:"]
  307. }, function ($methodClass){ return function (aString,aTraitCompositionDescription){
  308. var self=this,$self=this;
  309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  310. return $core.withContext(function($ctx1) {
  311. //>>excludeEnd("ctx");
  312. return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,[],nil);
  313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  314. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription})});
  315. //>>excludeEnd("ctx");
  316. }; }),
  317. $globals.TSubclassable);
  318. $core.addMethod(
  319. $core.method({
  320. selector: "subclass:uses:instanceVariableNames:",
  321. protocol: "class creation",
  322. //>>excludeStart("ide", pragmas.excludeIdeData);
  323. args: ["aString", "aTraitCompositionDescription", "anotherString"],
  324. source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: anotherString package: nil",
  325. referencedClasses: [],
  326. //>>excludeEnd("ide");
  327. pragmas: [],
  328. messageSends: ["subclass:uses:instanceVariableNames:package:"]
  329. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,anotherString){
  330. var self=this,$self=this;
  331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  332. return $core.withContext(function($ctx1) {
  333. //>>excludeEnd("ctx");
  334. return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,anotherString,nil);
  335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  336. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,anotherString:anotherString})});
  337. //>>excludeEnd("ctx");
  338. }; }),
  339. $globals.TSubclassable);
  340. $core.addMethod(
  341. $core.method({
  342. selector: "subclass:uses:instanceVariableNames:category:",
  343. protocol: "class creation",
  344. //>>excludeStart("ide", pragmas.excludeIdeData);
  345. args: ["aString", "aTraitCompositionDescription", "aString2", "aString3"],
  346. source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3",
  347. referencedClasses: [],
  348. //>>excludeEnd("ide");
  349. pragmas: [],
  350. messageSends: ["subclass:uses:instanceVariableNames:package:"]
  351. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,aString3){
  352. var self=this,$self=this;
  353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  354. return $core.withContext(function($ctx1) {
  355. //>>excludeEnd("ctx");
  356. return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,aString2,aString3);
  357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  358. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:category:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,aString3:aString3})});
  359. //>>excludeEnd("ctx");
  360. }; }),
  361. $globals.TSubclassable);
  362. $core.addMethod(
  363. $core.method({
  364. selector: "subclass:uses:instanceVariableNames:classVariableNames:poolDictionaries:category:",
  365. protocol: "class creation",
  366. //>>excludeStart("ide", pragmas.excludeIdeData);
  367. args: ["aString", "aTraitCompositionDescription", "aString2", "classVars", "pools", "aString3"],
  368. source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3",
  369. referencedClasses: [],
  370. //>>excludeEnd("ide");
  371. pragmas: [],
  372. messageSends: ["subclass:uses:instanceVariableNames:package:"]
  373. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,classVars,pools,aString3){
  374. var self=this,$self=this;
  375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  376. return $core.withContext(function($ctx1) {
  377. //>>excludeEnd("ctx");
  378. return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,aString2,aString3);
  379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  380. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3})});
  381. //>>excludeEnd("ctx");
  382. }; }),
  383. $globals.TSubclassable);
  384. $core.addMethod(
  385. $core.method({
  386. selector: "subclass:uses:instanceVariableNames:package:",
  387. protocol: "class creation",
  388. //>>excludeStart("ide", pragmas.excludeIdeData);
  389. args: ["aString", "aTraitCompositionDescription", "aString2", "aString3"],
  390. source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: aString2 instanceVariablesStringAsSlotList package: aString3",
  391. referencedClasses: [],
  392. //>>excludeEnd("ide");
  393. pragmas: [],
  394. messageSends: ["subclass:uses:slots:package:", "instanceVariablesStringAsSlotList"]
  395. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,aString3){
  396. var self=this,$self=this;
  397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  398. return $core.withContext(function($ctx1) {
  399. //>>excludeEnd("ctx");
  400. return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,$recv(aString2)._instanceVariablesStringAsSlotList(),aString3);
  401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  402. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:package:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,aString3:aString3})});
  403. //>>excludeEnd("ctx");
  404. }; }),
  405. $globals.TSubclassable);
  406. $core.addMethod(
  407. $core.method({
  408. selector: "subclass:uses:slots:",
  409. protocol: "class creation",
  410. //>>excludeStart("ide", pragmas.excludeIdeData);
  411. args: ["aString", "aTraitCompositionDescription", "aCollection"],
  412. source: "subclass: aString uses: aTraitCompositionDescription slots: aCollection\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: aCollection package: nil",
  413. referencedClasses: [],
  414. //>>excludeEnd("ide");
  415. pragmas: [],
  416. messageSends: ["subclass:uses:slots:package:"]
  417. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aCollection){
  418. var self=this,$self=this;
  419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  420. return $core.withContext(function($ctx1) {
  421. //>>excludeEnd("ctx");
  422. return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,aCollection,nil);
  423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  424. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:slots:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aCollection:aCollection})});
  425. //>>excludeEnd("ctx");
  426. }; }),
  427. $globals.TSubclassable);
  428. $core.addMethod(
  429. $core.method({
  430. selector: "subclass:uses:slots:package:",
  431. protocol: "class creation",
  432. //>>excludeStart("ide", pragmas.excludeIdeData);
  433. args: ["aString", "aTraitCompositionDescription", "aCollection", "aString3"],
  434. source: "subclass: aString uses: aTraitCompositionDescription slots: aCollection package: aString3\x0a\x09| cls |\x0a\x09cls := self subclass: aString slots: aCollection package: aString3.\x0a\x09cls setTraitComposition: aTraitCompositionDescription asTraitComposition.\x0a\x09^ cls",
  435. referencedClasses: [],
  436. //>>excludeEnd("ide");
  437. pragmas: [],
  438. messageSends: ["subclass:slots:package:", "setTraitComposition:", "asTraitComposition"]
  439. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aCollection,aString3){
  440. var self=this,$self=this;
  441. var cls;
  442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  443. return $core.withContext(function($ctx1) {
  444. //>>excludeEnd("ctx");
  445. cls=$self._subclass_slots_package_(aString,aCollection,aString3);
  446. $recv(cls)._setTraitComposition_($recv(aTraitCompositionDescription)._asTraitComposition());
  447. return cls;
  448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  449. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:slots:package:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aCollection:aCollection,aString3:aString3,cls:cls})});
  450. //>>excludeEnd("ctx");
  451. }; }),
  452. $globals.TSubclassable);
  453. });