Compiler-AST.js 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742
  1. smalltalk.addPackage('Compiler-AST', {});
  2. smalltalk.addClass('Node', smalltalk.Object, ['position', 'nodes', 'shouldBeInlined', 'shouldBeAliased'], 'Compiler-AST');
  3. smalltalk.Node.comment="I am the abstract root class of the abstract syntax tree.\x0a\x0aposition: holds a point containing lline- and column number of the symbol location in the original source file"
  4. smalltalk.addMethod(
  5. "_accept_",
  6. smalltalk.method({
  7. selector: "accept:",
  8. category: 'visiting',
  9. fn: function (aVisitor){
  10. var self=this;
  11. return smalltalk.withContext(function($ctx1) { var $1;
  12. $1=_st(aVisitor)._visitNode_(self);
  13. return $1;
  14. }, self, "accept:", [aVisitor], smalltalk.Node)},
  15. args: ["aVisitor"],
  16. source: "accept: aVisitor\x0a\x09^ aVisitor visitNode: self",
  17. messageSends: ["visitNode:"],
  18. referencedClasses: []
  19. }),
  20. smalltalk.Node);
  21. smalltalk.addMethod(
  22. "_addNode_",
  23. smalltalk.method({
  24. selector: "addNode:",
  25. category: 'accessing',
  26. fn: function (aNode){
  27. var self=this;
  28. return smalltalk.withContext(function($ctx1) { _st(_st(self)._nodes())._add_(aNode);
  29. return self}, self, "addNode:", [aNode], smalltalk.Node)},
  30. args: ["aNode"],
  31. source: "addNode: aNode\x0a\x09self nodes add: aNode",
  32. messageSends: ["add:", "nodes"],
  33. referencedClasses: []
  34. }),
  35. smalltalk.Node);
  36. smalltalk.addMethod(
  37. "_isAssignmentNode",
  38. smalltalk.method({
  39. selector: "isAssignmentNode",
  40. category: 'testing',
  41. fn: function (){
  42. var self=this;
  43. return smalltalk.withContext(function($ctx1) { return false;
  44. }, self, "isAssignmentNode", [], smalltalk.Node)},
  45. args: [],
  46. source: "isAssignmentNode\x0a\x09^ false",
  47. messageSends: [],
  48. referencedClasses: []
  49. }),
  50. smalltalk.Node);
  51. smalltalk.addMethod(
  52. "_isBlockNode",
  53. smalltalk.method({
  54. selector: "isBlockNode",
  55. category: 'testing',
  56. fn: function (){
  57. var self=this;
  58. return smalltalk.withContext(function($ctx1) { return false;
  59. }, self, "isBlockNode", [], smalltalk.Node)},
  60. args: [],
  61. source: "isBlockNode\x0a\x09^false",
  62. messageSends: [],
  63. referencedClasses: []
  64. }),
  65. smalltalk.Node);
  66. smalltalk.addMethod(
  67. "_isBlockSequenceNode",
  68. smalltalk.method({
  69. selector: "isBlockSequenceNode",
  70. category: 'testing',
  71. fn: function (){
  72. var self=this;
  73. return smalltalk.withContext(function($ctx1) { return false;
  74. }, self, "isBlockSequenceNode", [], smalltalk.Node)},
  75. args: [],
  76. source: "isBlockSequenceNode\x0a\x09^false",
  77. messageSends: [],
  78. referencedClasses: []
  79. }),
  80. smalltalk.Node);
  81. smalltalk.addMethod(
  82. "_isImmutable",
  83. smalltalk.method({
  84. selector: "isImmutable",
  85. category: 'testing',
  86. fn: function (){
  87. var self=this;
  88. return smalltalk.withContext(function($ctx1) { return false;
  89. }, self, "isImmutable", [], smalltalk.Node)},
  90. args: [],
  91. source: "isImmutable\x0a\x09^false",
  92. messageSends: [],
  93. referencedClasses: []
  94. }),
  95. smalltalk.Node);
  96. smalltalk.addMethod(
  97. "_isReturnNode",
  98. smalltalk.method({
  99. selector: "isReturnNode",
  100. category: 'testing',
  101. fn: function (){
  102. var self=this;
  103. return smalltalk.withContext(function($ctx1) { return false;
  104. }, self, "isReturnNode", [], smalltalk.Node)},
  105. args: [],
  106. source: "isReturnNode\x0a\x09^false",
  107. messageSends: [],
  108. referencedClasses: []
  109. }),
  110. smalltalk.Node);
  111. smalltalk.addMethod(
  112. "_isSendNode",
  113. smalltalk.method({
  114. selector: "isSendNode",
  115. category: 'testing',
  116. fn: function (){
  117. var self=this;
  118. return smalltalk.withContext(function($ctx1) { return false;
  119. }, self, "isSendNode", [], smalltalk.Node)},
  120. args: [],
  121. source: "isSendNode\x0a\x09^false",
  122. messageSends: [],
  123. referencedClasses: []
  124. }),
  125. smalltalk.Node);
  126. smalltalk.addMethod(
  127. "_isValueNode",
  128. smalltalk.method({
  129. selector: "isValueNode",
  130. category: 'testing',
  131. fn: function (){
  132. var self=this;
  133. return smalltalk.withContext(function($ctx1) { return false;
  134. }, self, "isValueNode", [], smalltalk.Node)},
  135. args: [],
  136. source: "isValueNode\x0a\x09^false",
  137. messageSends: [],
  138. referencedClasses: []
  139. }),
  140. smalltalk.Node);
  141. smalltalk.addMethod(
  142. "_nodes",
  143. smalltalk.method({
  144. selector: "nodes",
  145. category: 'accessing',
  146. fn: function (){
  147. var self=this;
  148. return smalltalk.withContext(function($ctx1) { var $2,$1;
  149. $2=self["@nodes"];
  150. if(($receiver = $2) == nil || $receiver == undefined){
  151. self["@nodes"]=_st((smalltalk.Array || Array))._new();
  152. $1=self["@nodes"];
  153. } else {
  154. $1=$2;
  155. };
  156. return $1;
  157. }, self, "nodes", [], smalltalk.Node)},
  158. args: [],
  159. source: "nodes\x0a\x09^nodes ifNil: [nodes := Array new]",
  160. messageSends: ["ifNil:", "new"],
  161. referencedClasses: ["Array"]
  162. }),
  163. smalltalk.Node);
  164. smalltalk.addMethod(
  165. "_nodes_",
  166. smalltalk.method({
  167. selector: "nodes:",
  168. category: 'building',
  169. fn: function (aCollection){
  170. var self=this;
  171. return smalltalk.withContext(function($ctx1) { self["@nodes"]=aCollection;
  172. return self}, self, "nodes:", [aCollection], smalltalk.Node)},
  173. args: ["aCollection"],
  174. source: "nodes: aCollection\x0a\x09nodes := aCollection",
  175. messageSends: [],
  176. referencedClasses: []
  177. }),
  178. smalltalk.Node);
  179. smalltalk.addMethod(
  180. "_position",
  181. smalltalk.method({
  182. selector: "position",
  183. category: 'accessing',
  184. fn: function (){
  185. var self=this;
  186. return smalltalk.withContext(function($ctx1) { var $2,$1;
  187. $2=self["@position"];
  188. if(($receiver = $2) == nil || $receiver == undefined){
  189. self["@position"]=_st((0)).__at((0));
  190. $1=self["@position"];
  191. } else {
  192. $1=$2;
  193. };
  194. return $1;
  195. }, self, "position", [], smalltalk.Node)},
  196. args: [],
  197. source: "position\x0a\x09^position ifNil: [position := 0@0]",
  198. messageSends: ["ifNil:", "@"],
  199. referencedClasses: []
  200. }),
  201. smalltalk.Node);
  202. smalltalk.addMethod(
  203. "_position_",
  204. smalltalk.method({
  205. selector: "position:",
  206. category: 'building',
  207. fn: function (aPosition){
  208. var self=this;
  209. return smalltalk.withContext(function($ctx1) { self["@position"]=aPosition;
  210. return self}, self, "position:", [aPosition], smalltalk.Node)},
  211. args: ["aPosition"],
  212. source: "position: aPosition\x0a\x09position := aPosition",
  213. messageSends: [],
  214. referencedClasses: []
  215. }),
  216. smalltalk.Node);
  217. smalltalk.addMethod(
  218. "_shouldBeAliased",
  219. smalltalk.method({
  220. selector: "shouldBeAliased",
  221. category: 'accessing',
  222. fn: function (){
  223. var self=this;
  224. return smalltalk.withContext(function($ctx1) { var $2,$1;
  225. $2=self["@shouldBeAliased"];
  226. if(($receiver = $2) == nil || $receiver == undefined){
  227. $1=false;
  228. } else {
  229. $1=$2;
  230. };
  231. return $1;
  232. }, self, "shouldBeAliased", [], smalltalk.Node)},
  233. args: [],
  234. source: "shouldBeAliased\x0a\x09^ shouldBeAliased ifNil: [ false ]",
  235. messageSends: ["ifNil:"],
  236. referencedClasses: []
  237. }),
  238. smalltalk.Node);
  239. smalltalk.addMethod(
  240. "_shouldBeAliased_",
  241. smalltalk.method({
  242. selector: "shouldBeAliased:",
  243. category: 'accessing',
  244. fn: function (aBoolean){
  245. var self=this;
  246. return smalltalk.withContext(function($ctx1) { self["@shouldBeAliased"]=aBoolean;
  247. return self}, self, "shouldBeAliased:", [aBoolean], smalltalk.Node)},
  248. args: ["aBoolean"],
  249. source: "shouldBeAliased: aBoolean\x0a\x09shouldBeAliased := aBoolean",
  250. messageSends: [],
  251. referencedClasses: []
  252. }),
  253. smalltalk.Node);
  254. smalltalk.addMethod(
  255. "_shouldBeInlined",
  256. smalltalk.method({
  257. selector: "shouldBeInlined",
  258. category: 'accessing',
  259. fn: function (){
  260. var self=this;
  261. return smalltalk.withContext(function($ctx1) { var $2,$1;
  262. $2=self["@shouldBeInlined"];
  263. if(($receiver = $2) == nil || $receiver == undefined){
  264. $1=false;
  265. } else {
  266. $1=$2;
  267. };
  268. return $1;
  269. }, self, "shouldBeInlined", [], smalltalk.Node)},
  270. args: [],
  271. source: "shouldBeInlined\x0a\x09^ shouldBeInlined ifNil: [ false ]",
  272. messageSends: ["ifNil:"],
  273. referencedClasses: []
  274. }),
  275. smalltalk.Node);
  276. smalltalk.addMethod(
  277. "_shouldBeInlined_",
  278. smalltalk.method({
  279. selector: "shouldBeInlined:",
  280. category: 'accessing',
  281. fn: function (aBoolean){
  282. var self=this;
  283. return smalltalk.withContext(function($ctx1) { self["@shouldBeInlined"]=aBoolean;
  284. return self}, self, "shouldBeInlined:", [aBoolean], smalltalk.Node)},
  285. args: ["aBoolean"],
  286. source: "shouldBeInlined: aBoolean\x0a\x09shouldBeInlined := aBoolean",
  287. messageSends: [],
  288. referencedClasses: []
  289. }),
  290. smalltalk.Node);
  291. smalltalk.addMethod(
  292. "_subtreeNeedsAliasing",
  293. smalltalk.method({
  294. selector: "subtreeNeedsAliasing",
  295. category: 'testing',
  296. fn: function (){
  297. var self=this;
  298. return smalltalk.withContext(function($ctx1) { var $1;
  299. $1=_st(_st(_st(self)._shouldBeAliased())._or_((function(){
  300. return smalltalk.withContext(function($ctx2) { return _st(self)._shouldBeInlined();
  301. })})))._or_((function(){
  302. return smalltalk.withContext(function($ctx2) { return _st(_st(_st(self)._nodes())._detect_ifNone_((function(each){
  303. return smalltalk.withContext(function($ctx3) { return _st(each)._subtreeNeedsAliasing();
  304. })}),(function(){
  305. return smalltalk.withContext(function($ctx3) { return false;
  306. })}))).__tild_eq(false);
  307. })}));
  308. return $1;
  309. }, self, "subtreeNeedsAliasing", [], smalltalk.Node)},
  310. args: [],
  311. source: "subtreeNeedsAliasing\x0a ^(self shouldBeAliased or: [ self shouldBeInlined ]) or: [\x0a (self nodes detect: [ :each | each subtreeNeedsAliasing ] ifNone: [ false ]) ~= false ]",
  312. messageSends: ["or:", "~=", "detect:ifNone:", "subtreeNeedsAliasing", "nodes", "shouldBeInlined", "shouldBeAliased"],
  313. referencedClasses: []
  314. }),
  315. smalltalk.Node);
  316. smalltalk.addClass('AssignmentNode', smalltalk.Node, ['left', 'right'], 'Compiler-AST');
  317. smalltalk.addMethod(
  318. "_accept_",
  319. smalltalk.method({
  320. selector: "accept:",
  321. category: 'visiting',
  322. fn: function (aVisitor){
  323. var self=this;
  324. return smalltalk.withContext(function($ctx1) { var $1;
  325. $1=_st(aVisitor)._visitAssignmentNode_(self);
  326. return $1;
  327. }, self, "accept:", [aVisitor], smalltalk.AssignmentNode)},
  328. args: ["aVisitor"],
  329. source: "accept: aVisitor\x0a\x09^ aVisitor visitAssignmentNode: self",
  330. messageSends: ["visitAssignmentNode:"],
  331. referencedClasses: []
  332. }),
  333. smalltalk.AssignmentNode);
  334. smalltalk.addMethod(
  335. "_isAssignmentNode",
  336. smalltalk.method({
  337. selector: "isAssignmentNode",
  338. category: 'testing',
  339. fn: function (){
  340. var self=this;
  341. return smalltalk.withContext(function($ctx1) { return true;
  342. }, self, "isAssignmentNode", [], smalltalk.AssignmentNode)},
  343. args: [],
  344. source: "isAssignmentNode\x0a\x09^ true",
  345. messageSends: [],
  346. referencedClasses: []
  347. }),
  348. smalltalk.AssignmentNode);
  349. smalltalk.addMethod(
  350. "_left",
  351. smalltalk.method({
  352. selector: "left",
  353. category: 'accessing',
  354. fn: function (){
  355. var self=this;
  356. return smalltalk.withContext(function($ctx1) { return self["@left"];
  357. }, self, "left", [], smalltalk.AssignmentNode)},
  358. args: [],
  359. source: "left\x0a\x09^left",
  360. messageSends: [],
  361. referencedClasses: []
  362. }),
  363. smalltalk.AssignmentNode);
  364. smalltalk.addMethod(
  365. "_left_",
  366. smalltalk.method({
  367. selector: "left:",
  368. category: 'accessing',
  369. fn: function (aNode){
  370. var self=this;
  371. return smalltalk.withContext(function($ctx1) { self["@left"]=aNode;
  372. return self}, self, "left:", [aNode], smalltalk.AssignmentNode)},
  373. args: ["aNode"],
  374. source: "left: aNode\x0a\x09left := aNode",
  375. messageSends: [],
  376. referencedClasses: []
  377. }),
  378. smalltalk.AssignmentNode);
  379. smalltalk.addMethod(
  380. "_nodes",
  381. smalltalk.method({
  382. selector: "nodes",
  383. category: 'accessing',
  384. fn: function (){
  385. var self=this;
  386. return smalltalk.withContext(function($ctx1) { var $1;
  387. $1=_st((smalltalk.Array || Array))._with_with_(_st(self)._left(),_st(self)._right());
  388. return $1;
  389. }, self, "nodes", [], smalltalk.AssignmentNode)},
  390. args: [],
  391. source: "nodes\x0a\x09^ Array with: self left with: self right",
  392. messageSends: ["with:with:", "left", "right"],
  393. referencedClasses: ["Array"]
  394. }),
  395. smalltalk.AssignmentNode);
  396. smalltalk.addMethod(
  397. "_right",
  398. smalltalk.method({
  399. selector: "right",
  400. category: 'accessing',
  401. fn: function (){
  402. var self=this;
  403. return smalltalk.withContext(function($ctx1) { return self["@right"];
  404. }, self, "right", [], smalltalk.AssignmentNode)},
  405. args: [],
  406. source: "right\x0a\x09^right",
  407. messageSends: [],
  408. referencedClasses: []
  409. }),
  410. smalltalk.AssignmentNode);
  411. smalltalk.addMethod(
  412. "_right_",
  413. smalltalk.method({
  414. selector: "right:",
  415. category: 'accessing',
  416. fn: function (aNode){
  417. var self=this;
  418. return smalltalk.withContext(function($ctx1) { self["@right"]=aNode;
  419. return self}, self, "right:", [aNode], smalltalk.AssignmentNode)},
  420. args: ["aNode"],
  421. source: "right: aNode\x0a\x09right := aNode",
  422. messageSends: [],
  423. referencedClasses: []
  424. }),
  425. smalltalk.AssignmentNode);
  426. smalltalk.addClass('BlockNode', smalltalk.Node, ['parameters', 'scope'], 'Compiler-AST');
  427. smalltalk.addMethod(
  428. "_accept_",
  429. smalltalk.method({
  430. selector: "accept:",
  431. category: 'visiting',
  432. fn: function (aVisitor){
  433. var self=this;
  434. return smalltalk.withContext(function($ctx1) { var $1;
  435. $1=_st(aVisitor)._visitBlockNode_(self);
  436. return $1;
  437. }, self, "accept:", [aVisitor], smalltalk.BlockNode)},
  438. args: ["aVisitor"],
  439. source: "accept: aVisitor\x0a\x09^ aVisitor visitBlockNode: self",
  440. messageSends: ["visitBlockNode:"],
  441. referencedClasses: []
  442. }),
  443. smalltalk.BlockNode);
  444. smalltalk.addMethod(
  445. "_isBlockNode",
  446. smalltalk.method({
  447. selector: "isBlockNode",
  448. category: 'testing',
  449. fn: function (){
  450. var self=this;
  451. return smalltalk.withContext(function($ctx1) { return true;
  452. }, self, "isBlockNode", [], smalltalk.BlockNode)},
  453. args: [],
  454. source: "isBlockNode\x0a\x09^true",
  455. messageSends: [],
  456. referencedClasses: []
  457. }),
  458. smalltalk.BlockNode);
  459. smalltalk.addMethod(
  460. "_parameters",
  461. smalltalk.method({
  462. selector: "parameters",
  463. category: 'accessing',
  464. fn: function (){
  465. var self=this;
  466. return smalltalk.withContext(function($ctx1) { var $1;
  467. if(($receiver = self["@parameters"]) == nil || $receiver == undefined){
  468. self["@parameters"]=_st((smalltalk.Array || Array))._new();
  469. $1=self["@parameters"];
  470. } else {
  471. $1=self["@parameters"];
  472. };
  473. return $1;
  474. }, self, "parameters", [], smalltalk.BlockNode)},
  475. args: [],
  476. source: "parameters\x0a\x09^parameters ifNil: [parameters := Array new]",
  477. messageSends: ["ifNil:", "new"],
  478. referencedClasses: ["Array"]
  479. }),
  480. smalltalk.BlockNode);
  481. smalltalk.addMethod(
  482. "_parameters_",
  483. smalltalk.method({
  484. selector: "parameters:",
  485. category: 'accessing',
  486. fn: function (aCollection){
  487. var self=this;
  488. return smalltalk.withContext(function($ctx1) { self["@parameters"]=aCollection;
  489. return self}, self, "parameters:", [aCollection], smalltalk.BlockNode)},
  490. args: ["aCollection"],
  491. source: "parameters: aCollection\x0a\x09parameters := aCollection",
  492. messageSends: [],
  493. referencedClasses: []
  494. }),
  495. smalltalk.BlockNode);
  496. smalltalk.addMethod(
  497. "_scope",
  498. smalltalk.method({
  499. selector: "scope",
  500. category: 'accessing',
  501. fn: function (){
  502. var self=this;
  503. return smalltalk.withContext(function($ctx1) { return self["@scope"];
  504. }, self, "scope", [], smalltalk.BlockNode)},
  505. args: [],
  506. source: "scope\x0a\x09^ scope",
  507. messageSends: [],
  508. referencedClasses: []
  509. }),
  510. smalltalk.BlockNode);
  511. smalltalk.addMethod(
  512. "_scope_",
  513. smalltalk.method({
  514. selector: "scope:",
  515. category: 'accessing',
  516. fn: function (aLexicalScope){
  517. var self=this;
  518. return smalltalk.withContext(function($ctx1) { self["@scope"]=aLexicalScope;
  519. return self}, self, "scope:", [aLexicalScope], smalltalk.BlockNode)},
  520. args: ["aLexicalScope"],
  521. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  522. messageSends: [],
  523. referencedClasses: []
  524. }),
  525. smalltalk.BlockNode);
  526. smalltalk.addClass('CascadeNode', smalltalk.Node, ['receiver'], 'Compiler-AST');
  527. smalltalk.addMethod(
  528. "_accept_",
  529. smalltalk.method({
  530. selector: "accept:",
  531. category: 'visiting',
  532. fn: function (aVisitor){
  533. var self=this;
  534. return smalltalk.withContext(function($ctx1) { var $1;
  535. $1=_st(aVisitor)._visitCascadeNode_(self);
  536. return $1;
  537. }, self, "accept:", [aVisitor], smalltalk.CascadeNode)},
  538. args: ["aVisitor"],
  539. source: "accept: aVisitor\x0a\x09^ aVisitor visitCascadeNode: self",
  540. messageSends: ["visitCascadeNode:"],
  541. referencedClasses: []
  542. }),
  543. smalltalk.CascadeNode);
  544. smalltalk.addMethod(
  545. "_receiver",
  546. smalltalk.method({
  547. selector: "receiver",
  548. category: 'accessing',
  549. fn: function (){
  550. var self=this;
  551. return smalltalk.withContext(function($ctx1) { return self["@receiver"];
  552. }, self, "receiver", [], smalltalk.CascadeNode)},
  553. args: [],
  554. source: "receiver\x0a\x09^receiver",
  555. messageSends: [],
  556. referencedClasses: []
  557. }),
  558. smalltalk.CascadeNode);
  559. smalltalk.addMethod(
  560. "_receiver_",
  561. smalltalk.method({
  562. selector: "receiver:",
  563. category: 'accessing',
  564. fn: function (aNode){
  565. var self=this;
  566. return smalltalk.withContext(function($ctx1) { self["@receiver"]=aNode;
  567. return self}, self, "receiver:", [aNode], smalltalk.CascadeNode)},
  568. args: ["aNode"],
  569. source: "receiver: aNode\x0a\x09receiver := aNode",
  570. messageSends: [],
  571. referencedClasses: []
  572. }),
  573. smalltalk.CascadeNode);
  574. smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler-AST');
  575. smalltalk.addMethod(
  576. "_accept_",
  577. smalltalk.method({
  578. selector: "accept:",
  579. category: 'visiting',
  580. fn: function (aVisitor){
  581. var self=this;
  582. return smalltalk.withContext(function($ctx1) { var $1;
  583. $1=_st(aVisitor)._visitDynamicArrayNode_(self);
  584. return $1;
  585. }, self, "accept:", [aVisitor], smalltalk.DynamicArrayNode)},
  586. args: ["aVisitor"],
  587. source: "accept: aVisitor\x0a\x09^ aVisitor visitDynamicArrayNode: self",
  588. messageSends: ["visitDynamicArrayNode:"],
  589. referencedClasses: []
  590. }),
  591. smalltalk.DynamicArrayNode);
  592. smalltalk.addClass('DynamicDictionaryNode', smalltalk.Node, [], 'Compiler-AST');
  593. smalltalk.addMethod(
  594. "_accept_",
  595. smalltalk.method({
  596. selector: "accept:",
  597. category: 'visiting',
  598. fn: function (aVisitor){
  599. var self=this;
  600. return smalltalk.withContext(function($ctx1) { var $1;
  601. $1=_st(aVisitor)._visitDynamicDictionaryNode_(self);
  602. return $1;
  603. }, self, "accept:", [aVisitor], smalltalk.DynamicDictionaryNode)},
  604. args: ["aVisitor"],
  605. source: "accept: aVisitor\x0a\x09^ aVisitor visitDynamicDictionaryNode: self",
  606. messageSends: ["visitDynamicDictionaryNode:"],
  607. referencedClasses: []
  608. }),
  609. smalltalk.DynamicDictionaryNode);
  610. smalltalk.addClass('JSStatementNode', smalltalk.Node, ['source'], 'Compiler-AST');
  611. smalltalk.addMethod(
  612. "_accept_",
  613. smalltalk.method({
  614. selector: "accept:",
  615. category: 'visiting',
  616. fn: function (aVisitor){
  617. var self=this;
  618. return smalltalk.withContext(function($ctx1) { var $1;
  619. $1=_st(aVisitor)._visitJSStatementNode_(self);
  620. return $1;
  621. }, self, "accept:", [aVisitor], smalltalk.JSStatementNode)},
  622. args: ["aVisitor"],
  623. source: "accept: aVisitor\x0a\x09^ aVisitor visitJSStatementNode: self",
  624. messageSends: ["visitJSStatementNode:"],
  625. referencedClasses: []
  626. }),
  627. smalltalk.JSStatementNode);
  628. smalltalk.addMethod(
  629. "_source",
  630. smalltalk.method({
  631. selector: "source",
  632. category: 'accessing',
  633. fn: function (){
  634. var self=this;
  635. return smalltalk.withContext(function($ctx1) { var $1;
  636. if(($receiver = self["@source"]) == nil || $receiver == undefined){
  637. $1="";
  638. } else {
  639. $1=self["@source"];
  640. };
  641. return $1;
  642. }, self, "source", [], smalltalk.JSStatementNode)},
  643. args: [],
  644. source: "source\x0a\x09^source ifNil: ['']",
  645. messageSends: ["ifNil:"],
  646. referencedClasses: []
  647. }),
  648. smalltalk.JSStatementNode);
  649. smalltalk.addMethod(
  650. "_source_",
  651. smalltalk.method({
  652. selector: "source:",
  653. category: 'accessing',
  654. fn: function (aString){
  655. var self=this;
  656. return smalltalk.withContext(function($ctx1) { self["@source"]=aString;
  657. return self}, self, "source:", [aString], smalltalk.JSStatementNode)},
  658. args: ["aString"],
  659. source: "source: aString\x0a\x09source := aString",
  660. messageSends: [],
  661. referencedClasses: []
  662. }),
  663. smalltalk.JSStatementNode);
  664. smalltalk.addClass('MethodNode', smalltalk.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'messageSends', 'superSends'], 'Compiler-AST');
  665. smalltalk.addMethod(
  666. "_accept_",
  667. smalltalk.method({
  668. selector: "accept:",
  669. category: 'visiting',
  670. fn: function (aVisitor){
  671. var self=this;
  672. return smalltalk.withContext(function($ctx1) { var $1;
  673. $1=_st(aVisitor)._visitMethodNode_(self);
  674. return $1;
  675. }, self, "accept:", [aVisitor], smalltalk.MethodNode)},
  676. args: ["aVisitor"],
  677. source: "accept: aVisitor\x0a\x09^ aVisitor visitMethodNode: self",
  678. messageSends: ["visitMethodNode:"],
  679. referencedClasses: []
  680. }),
  681. smalltalk.MethodNode);
  682. smalltalk.addMethod(
  683. "_arguments",
  684. smalltalk.method({
  685. selector: "arguments",
  686. category: 'accessing',
  687. fn: function (){
  688. var self=this;
  689. return smalltalk.withContext(function($ctx1) { var $1;
  690. if(($receiver = self["@arguments"]) == nil || $receiver == undefined){
  691. $1=[];
  692. } else {
  693. $1=self["@arguments"];
  694. };
  695. return $1;
  696. }, self, "arguments", [], smalltalk.MethodNode)},
  697. args: [],
  698. source: "arguments\x0a\x09^arguments ifNil: [#()]",
  699. messageSends: ["ifNil:"],
  700. referencedClasses: []
  701. }),
  702. smalltalk.MethodNode);
  703. smalltalk.addMethod(
  704. "_arguments_",
  705. smalltalk.method({
  706. selector: "arguments:",
  707. category: 'accessing',
  708. fn: function (aCollection){
  709. var self=this;
  710. return smalltalk.withContext(function($ctx1) { self["@arguments"]=aCollection;
  711. return self}, self, "arguments:", [aCollection], smalltalk.MethodNode)},
  712. args: ["aCollection"],
  713. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  714. messageSends: [],
  715. referencedClasses: []
  716. }),
  717. smalltalk.MethodNode);
  718. smalltalk.addMethod(
  719. "_classReferences",
  720. smalltalk.method({
  721. selector: "classReferences",
  722. category: 'accessing',
  723. fn: function (){
  724. var self=this;
  725. return smalltalk.withContext(function($ctx1) { return self["@classReferences"];
  726. }, self, "classReferences", [], smalltalk.MethodNode)},
  727. args: [],
  728. source: "classReferences\x0a\x09^ classReferences",
  729. messageSends: [],
  730. referencedClasses: []
  731. }),
  732. smalltalk.MethodNode);
  733. smalltalk.addMethod(
  734. "_classReferences_",
  735. smalltalk.method({
  736. selector: "classReferences:",
  737. category: 'accessing',
  738. fn: function (aCollection){
  739. var self=this;
  740. return smalltalk.withContext(function($ctx1) { self["@classReferences"]=aCollection;
  741. return self}, self, "classReferences:", [aCollection], smalltalk.MethodNode)},
  742. args: ["aCollection"],
  743. source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
  744. messageSends: [],
  745. referencedClasses: []
  746. }),
  747. smalltalk.MethodNode);
  748. smalltalk.addMethod(
  749. "_messageSends",
  750. smalltalk.method({
  751. selector: "messageSends",
  752. category: 'accessing',
  753. fn: function (){
  754. var self=this;
  755. return smalltalk.withContext(function($ctx1) { return self["@messageSends"];
  756. }, self, "messageSends", [], smalltalk.MethodNode)},
  757. args: [],
  758. source: "messageSends\x0a\x09^ messageSends",
  759. messageSends: [],
  760. referencedClasses: []
  761. }),
  762. smalltalk.MethodNode);
  763. smalltalk.addMethod(
  764. "_messageSends_",
  765. smalltalk.method({
  766. selector: "messageSends:",
  767. category: 'accessing',
  768. fn: function (aCollection){
  769. var self=this;
  770. return smalltalk.withContext(function($ctx1) { self["@messageSends"]=aCollection;
  771. return self}, self, "messageSends:", [aCollection], smalltalk.MethodNode)},
  772. args: ["aCollection"],
  773. source: "messageSends: aCollection\x0a\x09messageSends := aCollection",
  774. messageSends: [],
  775. referencedClasses: []
  776. }),
  777. smalltalk.MethodNode);
  778. smalltalk.addMethod(
  779. "_scope",
  780. smalltalk.method({
  781. selector: "scope",
  782. category: 'accessing',
  783. fn: function (){
  784. var self=this;
  785. return smalltalk.withContext(function($ctx1) { return self["@scope"];
  786. }, self, "scope", [], smalltalk.MethodNode)},
  787. args: [],
  788. source: "scope\x0a\x09^ scope",
  789. messageSends: [],
  790. referencedClasses: []
  791. }),
  792. smalltalk.MethodNode);
  793. smalltalk.addMethod(
  794. "_scope_",
  795. smalltalk.method({
  796. selector: "scope:",
  797. category: 'accessing',
  798. fn: function (aMethodScope){
  799. var self=this;
  800. return smalltalk.withContext(function($ctx1) { self["@scope"]=aMethodScope;
  801. return self}, self, "scope:", [aMethodScope], smalltalk.MethodNode)},
  802. args: ["aMethodScope"],
  803. source: "scope: aMethodScope\x0a\x09scope := aMethodScope",
  804. messageSends: [],
  805. referencedClasses: []
  806. }),
  807. smalltalk.MethodNode);
  808. smalltalk.addMethod(
  809. "_selector",
  810. smalltalk.method({
  811. selector: "selector",
  812. category: 'accessing',
  813. fn: function (){
  814. var self=this;
  815. return smalltalk.withContext(function($ctx1) { return self["@selector"];
  816. }, self, "selector", [], smalltalk.MethodNode)},
  817. args: [],
  818. source: "selector\x0a\x09^selector",
  819. messageSends: [],
  820. referencedClasses: []
  821. }),
  822. smalltalk.MethodNode);
  823. smalltalk.addMethod(
  824. "_selector_",
  825. smalltalk.method({
  826. selector: "selector:",
  827. category: 'accessing',
  828. fn: function (aString){
  829. var self=this;
  830. return smalltalk.withContext(function($ctx1) { self["@selector"]=aString;
  831. return self}, self, "selector:", [aString], smalltalk.MethodNode)},
  832. args: ["aString"],
  833. source: "selector: aString\x0a\x09selector := aString",
  834. messageSends: [],
  835. referencedClasses: []
  836. }),
  837. smalltalk.MethodNode);
  838. smalltalk.addMethod(
  839. "_source",
  840. smalltalk.method({
  841. selector: "source",
  842. category: 'accessing',
  843. fn: function (){
  844. var self=this;
  845. return smalltalk.withContext(function($ctx1) { return self["@source"];
  846. }, self, "source", [], smalltalk.MethodNode)},
  847. args: [],
  848. source: "source\x0a\x09^source",
  849. messageSends: [],
  850. referencedClasses: []
  851. }),
  852. smalltalk.MethodNode);
  853. smalltalk.addMethod(
  854. "_source_",
  855. smalltalk.method({
  856. selector: "source:",
  857. category: 'accessing',
  858. fn: function (aString){
  859. var self=this;
  860. return smalltalk.withContext(function($ctx1) { self["@source"]=aString;
  861. return self}, self, "source:", [aString], smalltalk.MethodNode)},
  862. args: ["aString"],
  863. source: "source: aString\x0a\x09source := aString",
  864. messageSends: [],
  865. referencedClasses: []
  866. }),
  867. smalltalk.MethodNode);
  868. smalltalk.addMethod(
  869. "_superSends",
  870. smalltalk.method({
  871. selector: "superSends",
  872. category: 'accessing',
  873. fn: function (){
  874. var self=this;
  875. return smalltalk.withContext(function($ctx1) { return self["@superSends"];
  876. }, self, "superSends", [], smalltalk.MethodNode)},
  877. args: [],
  878. source: "superSends\x0a\x09^ superSends",
  879. messageSends: [],
  880. referencedClasses: []
  881. }),
  882. smalltalk.MethodNode);
  883. smalltalk.addMethod(
  884. "_superSends_",
  885. smalltalk.method({
  886. selector: "superSends:",
  887. category: 'accessing',
  888. fn: function (aCollection){
  889. var self=this;
  890. return smalltalk.withContext(function($ctx1) { self["@superSends"]=aCollection;
  891. return self}, self, "superSends:", [aCollection], smalltalk.MethodNode)},
  892. args: ["aCollection"],
  893. source: "superSends: aCollection\x0a\x09superSends := aCollection",
  894. messageSends: [],
  895. referencedClasses: []
  896. }),
  897. smalltalk.MethodNode);
  898. smalltalk.addClass('ReturnNode', smalltalk.Node, ['scope'], 'Compiler-AST');
  899. smalltalk.addMethod(
  900. "_accept_",
  901. smalltalk.method({
  902. selector: "accept:",
  903. category: 'visiting',
  904. fn: function (aVisitor){
  905. var self=this;
  906. return smalltalk.withContext(function($ctx1) { var $1;
  907. $1=_st(aVisitor)._visitReturnNode_(self);
  908. return $1;
  909. }, self, "accept:", [aVisitor], smalltalk.ReturnNode)},
  910. args: ["aVisitor"],
  911. source: "accept: aVisitor\x0a\x09^ aVisitor visitReturnNode: self",
  912. messageSends: ["visitReturnNode:"],
  913. referencedClasses: []
  914. }),
  915. smalltalk.ReturnNode);
  916. smalltalk.addMethod(
  917. "_isReturnNode",
  918. smalltalk.method({
  919. selector: "isReturnNode",
  920. category: 'testing',
  921. fn: function (){
  922. var self=this;
  923. return smalltalk.withContext(function($ctx1) { return true;
  924. }, self, "isReturnNode", [], smalltalk.ReturnNode)},
  925. args: [],
  926. source: "isReturnNode\x0a\x09^ true",
  927. messageSends: [],
  928. referencedClasses: []
  929. }),
  930. smalltalk.ReturnNode);
  931. smalltalk.addMethod(
  932. "_nonLocalReturn",
  933. smalltalk.method({
  934. selector: "nonLocalReturn",
  935. category: 'testing',
  936. fn: function (){
  937. var self=this;
  938. return smalltalk.withContext(function($ctx1) { var $1;
  939. $1=_st(_st(_st(self)._scope())._isMethodScope())._not();
  940. return $1;
  941. }, self, "nonLocalReturn", [], smalltalk.ReturnNode)},
  942. args: [],
  943. source: "nonLocalReturn\x0a\x09^ self scope isMethodScope not",
  944. messageSends: ["not", "isMethodScope", "scope"],
  945. referencedClasses: []
  946. }),
  947. smalltalk.ReturnNode);
  948. smalltalk.addMethod(
  949. "_scope",
  950. smalltalk.method({
  951. selector: "scope",
  952. category: 'accessing',
  953. fn: function (){
  954. var self=this;
  955. return smalltalk.withContext(function($ctx1) { return self["@scope"];
  956. }, self, "scope", [], smalltalk.ReturnNode)},
  957. args: [],
  958. source: "scope\x0a\x09^ scope",
  959. messageSends: [],
  960. referencedClasses: []
  961. }),
  962. smalltalk.ReturnNode);
  963. smalltalk.addMethod(
  964. "_scope_",
  965. smalltalk.method({
  966. selector: "scope:",
  967. category: 'accessing',
  968. fn: function (aLexicalScope){
  969. var self=this;
  970. return smalltalk.withContext(function($ctx1) { self["@scope"]=aLexicalScope;
  971. return self}, self, "scope:", [aLexicalScope], smalltalk.ReturnNode)},
  972. args: ["aLexicalScope"],
  973. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  974. messageSends: [],
  975. referencedClasses: []
  976. }),
  977. smalltalk.ReturnNode);
  978. smalltalk.addClass('SendNode', smalltalk.Node, ['selector', 'arguments', 'receiver', 'superSend', 'index'], 'Compiler-AST');
  979. smalltalk.addMethod(
  980. "_accept_",
  981. smalltalk.method({
  982. selector: "accept:",
  983. category: 'visiting',
  984. fn: function (aVisitor){
  985. var self=this;
  986. return smalltalk.withContext(function($ctx1) { var $1;
  987. $1=_st(aVisitor)._visitSendNode_(self);
  988. return $1;
  989. }, self, "accept:", [aVisitor], smalltalk.SendNode)},
  990. args: ["aVisitor"],
  991. source: "accept: aVisitor\x0a\x09^ aVisitor visitSendNode: self",
  992. messageSends: ["visitSendNode:"],
  993. referencedClasses: []
  994. }),
  995. smalltalk.SendNode);
  996. smalltalk.addMethod(
  997. "_arguments",
  998. smalltalk.method({
  999. selector: "arguments",
  1000. category: 'accessing',
  1001. fn: function (){
  1002. var self=this;
  1003. return smalltalk.withContext(function($ctx1) { var $1;
  1004. if(($receiver = self["@arguments"]) == nil || $receiver == undefined){
  1005. self["@arguments"]=[];
  1006. $1=self["@arguments"];
  1007. } else {
  1008. $1=self["@arguments"];
  1009. };
  1010. return $1;
  1011. }, self, "arguments", [], smalltalk.SendNode)},
  1012. args: [],
  1013. source: "arguments\x0a\x09^arguments ifNil: [arguments := #()]",
  1014. messageSends: ["ifNil:"],
  1015. referencedClasses: []
  1016. }),
  1017. smalltalk.SendNode);
  1018. smalltalk.addMethod(
  1019. "_arguments_",
  1020. smalltalk.method({
  1021. selector: "arguments:",
  1022. category: 'accessing',
  1023. fn: function (aCollection){
  1024. var self=this;
  1025. return smalltalk.withContext(function($ctx1) { self["@arguments"]=aCollection;
  1026. return self}, self, "arguments:", [aCollection], smalltalk.SendNode)},
  1027. args: ["aCollection"],
  1028. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  1029. messageSends: [],
  1030. referencedClasses: []
  1031. }),
  1032. smalltalk.SendNode);
  1033. smalltalk.addMethod(
  1034. "_cascadeNodeWithMessages_",
  1035. smalltalk.method({
  1036. selector: "cascadeNodeWithMessages:",
  1037. category: 'accessing',
  1038. fn: function (aCollection){
  1039. var self=this;
  1040. return smalltalk.withContext(function($ctx1) { var $1,$2,$4,$5,$3;
  1041. $ctx1.first=nil;
  1042. $1=_st((smalltalk.SendNode || SendNode))._new();
  1043. _st($1)._selector_(_st(self)._selector());
  1044. _st($1)._arguments_(_st(self)._arguments());
  1045. $2=_st($1)._yourself();
  1046. $ctx1.locals.first=$2;
  1047. $4=_st((smalltalk.CascadeNode || CascadeNode))._new();
  1048. _st($4)._receiver_(_st(self)._receiver());
  1049. _st($4)._nodes_(_st(_st((smalltalk.Array || Array))._with_($ctx1.locals.first)).__comma(aCollection));
  1050. $5=_st($4)._yourself();
  1051. $3=$5;
  1052. return $3;
  1053. }, self, "cascadeNodeWithMessages:", [aCollection], smalltalk.SendNode)},
  1054. args: ["aCollection"],
  1055. source: "cascadeNodeWithMessages: aCollection\x0a\x09| first |\x0a\x09first := SendNode new\x0a\x09 selector: self selector;\x0a\x09 arguments: self arguments;\x0a\x09 yourself.\x0a\x09^CascadeNode new\x0a\x09 receiver: self receiver;\x0a\x09 nodes: (Array with: first), aCollection;\x0a\x09 yourself",
  1056. messageSends: ["selector:", "selector", "new", "arguments:", "arguments", "yourself", "receiver:", "receiver", "nodes:", ",", "with:"],
  1057. referencedClasses: ["SendNode", "CascadeNode", "Array"]
  1058. }),
  1059. smalltalk.SendNode);
  1060. smalltalk.addMethod(
  1061. "_index",
  1062. smalltalk.method({
  1063. selector: "index",
  1064. category: 'accessing',
  1065. fn: function (){
  1066. var self=this;
  1067. return smalltalk.withContext(function($ctx1) { return self["@index"];
  1068. }, self, "index", [], smalltalk.SendNode)},
  1069. args: [],
  1070. source: "index\x0a\x09^ index",
  1071. messageSends: [],
  1072. referencedClasses: []
  1073. }),
  1074. smalltalk.SendNode);
  1075. smalltalk.addMethod(
  1076. "_index_",
  1077. smalltalk.method({
  1078. selector: "index:",
  1079. category: 'accessing',
  1080. fn: function (anInteger){
  1081. var self=this;
  1082. return smalltalk.withContext(function($ctx1) { self["@index"]=anInteger;
  1083. return self}, self, "index:", [anInteger], smalltalk.SendNode)},
  1084. args: ["anInteger"],
  1085. source: "index: anInteger\x0a\x09index := anInteger",
  1086. messageSends: [],
  1087. referencedClasses: []
  1088. }),
  1089. smalltalk.SendNode);
  1090. smalltalk.addMethod(
  1091. "_isSendNode",
  1092. smalltalk.method({
  1093. selector: "isSendNode",
  1094. category: 'testing',
  1095. fn: function (){
  1096. var self=this;
  1097. return smalltalk.withContext(function($ctx1) { return true;
  1098. }, self, "isSendNode", [], smalltalk.SendNode)},
  1099. args: [],
  1100. source: "isSendNode\x0a\x09^ true",
  1101. messageSends: [],
  1102. referencedClasses: []
  1103. }),
  1104. smalltalk.SendNode);
  1105. smalltalk.addMethod(
  1106. "_nodes",
  1107. smalltalk.method({
  1108. selector: "nodes",
  1109. category: 'accessing',
  1110. fn: function (){
  1111. var self=this;
  1112. return smalltalk.withContext(function($ctx1) { var $2,$3,$1;
  1113. $2=_st((smalltalk.Array || Array))._withAll_(_st(self)._arguments());
  1114. _st($2)._add_(_st(self)._receiver());
  1115. $3=_st($2)._yourself();
  1116. $1=$3;
  1117. return $1;
  1118. }, self, "nodes", [], smalltalk.SendNode)},
  1119. args: [],
  1120. source: "nodes\x0a\x09^ (Array withAll: self arguments)\x0a\x09\x09add: self receiver;\x0a\x09\x09yourself",
  1121. messageSends: ["add:", "receiver", "withAll:", "arguments", "yourself"],
  1122. referencedClasses: ["Array"]
  1123. }),
  1124. smalltalk.SendNode);
  1125. smalltalk.addMethod(
  1126. "_receiver",
  1127. smalltalk.method({
  1128. selector: "receiver",
  1129. category: 'accessing',
  1130. fn: function (){
  1131. var self=this;
  1132. return smalltalk.withContext(function($ctx1) { return self["@receiver"];
  1133. }, self, "receiver", [], smalltalk.SendNode)},
  1134. args: [],
  1135. source: "receiver\x0a\x09^receiver",
  1136. messageSends: [],
  1137. referencedClasses: []
  1138. }),
  1139. smalltalk.SendNode);
  1140. smalltalk.addMethod(
  1141. "_receiver_",
  1142. smalltalk.method({
  1143. selector: "receiver:",
  1144. category: 'accessing',
  1145. fn: function (aNode){
  1146. var self=this;
  1147. return smalltalk.withContext(function($ctx1) { self["@receiver"]=aNode;
  1148. return self}, self, "receiver:", [aNode], smalltalk.SendNode)},
  1149. args: ["aNode"],
  1150. source: "receiver: aNode\x0a\x09receiver := aNode",
  1151. messageSends: [],
  1152. referencedClasses: []
  1153. }),
  1154. smalltalk.SendNode);
  1155. smalltalk.addMethod(
  1156. "_selector",
  1157. smalltalk.method({
  1158. selector: "selector",
  1159. category: 'accessing',
  1160. fn: function (){
  1161. var self=this;
  1162. return smalltalk.withContext(function($ctx1) { return self["@selector"];
  1163. }, self, "selector", [], smalltalk.SendNode)},
  1164. args: [],
  1165. source: "selector\x0a\x09^selector",
  1166. messageSends: [],
  1167. referencedClasses: []
  1168. }),
  1169. smalltalk.SendNode);
  1170. smalltalk.addMethod(
  1171. "_selector_",
  1172. smalltalk.method({
  1173. selector: "selector:",
  1174. category: 'accessing',
  1175. fn: function (aString){
  1176. var self=this;
  1177. return smalltalk.withContext(function($ctx1) { self["@selector"]=aString;
  1178. return self}, self, "selector:", [aString], smalltalk.SendNode)},
  1179. args: ["aString"],
  1180. source: "selector: aString\x0a\x09selector := aString",
  1181. messageSends: [],
  1182. referencedClasses: []
  1183. }),
  1184. smalltalk.SendNode);
  1185. smalltalk.addMethod(
  1186. "_superSend",
  1187. smalltalk.method({
  1188. selector: "superSend",
  1189. category: 'accessing',
  1190. fn: function (){
  1191. var self=this;
  1192. return smalltalk.withContext(function($ctx1) { var $1;
  1193. if(($receiver = self["@superSend"]) == nil || $receiver == undefined){
  1194. $1=false;
  1195. } else {
  1196. $1=self["@superSend"];
  1197. };
  1198. return $1;
  1199. }, self, "superSend", [], smalltalk.SendNode)},
  1200. args: [],
  1201. source: "superSend\x0a\x09^ superSend ifNil: [ false ]",
  1202. messageSends: ["ifNil:"],
  1203. referencedClasses: []
  1204. }),
  1205. smalltalk.SendNode);
  1206. smalltalk.addMethod(
  1207. "_superSend_",
  1208. smalltalk.method({
  1209. selector: "superSend:",
  1210. category: 'accessing',
  1211. fn: function (aBoolean){
  1212. var self=this;
  1213. return smalltalk.withContext(function($ctx1) { self["@superSend"]=aBoolean;
  1214. return self}, self, "superSend:", [aBoolean], smalltalk.SendNode)},
  1215. args: ["aBoolean"],
  1216. source: "superSend: aBoolean\x0a\x09superSend := aBoolean",
  1217. messageSends: [],
  1218. referencedClasses: []
  1219. }),
  1220. smalltalk.SendNode);
  1221. smalltalk.addMethod(
  1222. "_valueForReceiver_",
  1223. smalltalk.method({
  1224. selector: "valueForReceiver:",
  1225. category: 'accessing',
  1226. fn: function (anObject){
  1227. var self=this;
  1228. return smalltalk.withContext(function($ctx1) { var $2,$4,$3,$5,$1;
  1229. $2=_st((smalltalk.SendNode || SendNode))._new();
  1230. $4=_st(self)._receiver();
  1231. if(($receiver = $4) == nil || $receiver == undefined){
  1232. $3=anObject;
  1233. } else {
  1234. $3=_st(_st(self)._receiver())._valueForReceiver_(anObject);
  1235. };
  1236. _st($2)._receiver_($3);
  1237. _st($2)._selector_(_st(self)._selector());
  1238. _st($2)._arguments_(_st(self)._arguments());
  1239. $5=_st($2)._yourself();
  1240. $1=$5;
  1241. return $1;
  1242. }, self, "valueForReceiver:", [anObject], smalltalk.SendNode)},
  1243. args: ["anObject"],
  1244. source: "valueForReceiver: anObject\x0a\x09^SendNode new\x0a\x09 receiver: (self receiver \x0a\x09\x09ifNil: [anObject]\x0a\x09\x09ifNotNil: [self receiver valueForReceiver: anObject]);\x0a\x09 selector: self selector;\x0a\x09 arguments: self arguments;\x0a\x09 yourself",
  1245. messageSends: ["receiver:", "ifNil:ifNotNil:", "valueForReceiver:", "receiver", "new", "selector:", "selector", "arguments:", "arguments", "yourself"],
  1246. referencedClasses: ["SendNode"]
  1247. }),
  1248. smalltalk.SendNode);
  1249. smalltalk.addClass('SequenceNode', smalltalk.Node, ['temps', 'scope'], 'Compiler-AST');
  1250. smalltalk.addMethod(
  1251. "_accept_",
  1252. smalltalk.method({
  1253. selector: "accept:",
  1254. category: 'visiting',
  1255. fn: function (aVisitor){
  1256. var self=this;
  1257. return smalltalk.withContext(function($ctx1) { var $1;
  1258. $1=_st(aVisitor)._visitSequenceNode_(self);
  1259. return $1;
  1260. }, self, "accept:", [aVisitor], smalltalk.SequenceNode)},
  1261. args: ["aVisitor"],
  1262. source: "accept: aVisitor\x0a\x09^ aVisitor visitSequenceNode: self",
  1263. messageSends: ["visitSequenceNode:"],
  1264. referencedClasses: []
  1265. }),
  1266. smalltalk.SequenceNode);
  1267. smalltalk.addMethod(
  1268. "_asBlockSequenceNode",
  1269. smalltalk.method({
  1270. selector: "asBlockSequenceNode",
  1271. category: 'testing',
  1272. fn: function (){
  1273. var self=this;
  1274. return smalltalk.withContext(function($ctx1) { var $2,$3,$1;
  1275. $2=_st((smalltalk.BlockSequenceNode || BlockSequenceNode))._new();
  1276. _st($2)._nodes_(_st(self)._nodes());
  1277. _st($2)._temps_(_st(self)._temps());
  1278. $3=_st($2)._yourself();
  1279. $1=$3;
  1280. return $1;
  1281. }, self, "asBlockSequenceNode", [], smalltalk.SequenceNode)},
  1282. args: [],
  1283. source: "asBlockSequenceNode\x0a\x09^BlockSequenceNode new\x0a\x09 nodes: self nodes;\x0a\x09 temps: self temps;\x0a\x09 yourself",
  1284. messageSends: ["nodes:", "nodes", "new", "temps:", "temps", "yourself"],
  1285. referencedClasses: ["BlockSequenceNode"]
  1286. }),
  1287. smalltalk.SequenceNode);
  1288. smalltalk.addMethod(
  1289. "_scope",
  1290. smalltalk.method({
  1291. selector: "scope",
  1292. category: 'accessing',
  1293. fn: function (){
  1294. var self=this;
  1295. return smalltalk.withContext(function($ctx1) { return self["@scope"];
  1296. }, self, "scope", [], smalltalk.SequenceNode)},
  1297. args: [],
  1298. source: "scope\x0a\x09^ scope",
  1299. messageSends: [],
  1300. referencedClasses: []
  1301. }),
  1302. smalltalk.SequenceNode);
  1303. smalltalk.addMethod(
  1304. "_scope_",
  1305. smalltalk.method({
  1306. selector: "scope:",
  1307. category: 'accessing',
  1308. fn: function (aLexicalScope){
  1309. var self=this;
  1310. return smalltalk.withContext(function($ctx1) { self["@scope"]=aLexicalScope;
  1311. return self}, self, "scope:", [aLexicalScope], smalltalk.SequenceNode)},
  1312. args: ["aLexicalScope"],
  1313. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  1314. messageSends: [],
  1315. referencedClasses: []
  1316. }),
  1317. smalltalk.SequenceNode);
  1318. smalltalk.addMethod(
  1319. "_temps",
  1320. smalltalk.method({
  1321. selector: "temps",
  1322. category: 'accessing',
  1323. fn: function (){
  1324. var self=this;
  1325. return smalltalk.withContext(function($ctx1) { var $1;
  1326. if(($receiver = self["@temps"]) == nil || $receiver == undefined){
  1327. $1=[];
  1328. } else {
  1329. $1=self["@temps"];
  1330. };
  1331. return $1;
  1332. }, self, "temps", [], smalltalk.SequenceNode)},
  1333. args: [],
  1334. source: "temps\x0a\x09^temps ifNil: [#()]",
  1335. messageSends: ["ifNil:"],
  1336. referencedClasses: []
  1337. }),
  1338. smalltalk.SequenceNode);
  1339. smalltalk.addMethod(
  1340. "_temps_",
  1341. smalltalk.method({
  1342. selector: "temps:",
  1343. category: 'accessing',
  1344. fn: function (aCollection){
  1345. var self=this;
  1346. return smalltalk.withContext(function($ctx1) { self["@temps"]=aCollection;
  1347. return self}, self, "temps:", [aCollection], smalltalk.SequenceNode)},
  1348. args: ["aCollection"],
  1349. source: "temps: aCollection\x0a\x09temps := aCollection",
  1350. messageSends: [],
  1351. referencedClasses: []
  1352. }),
  1353. smalltalk.SequenceNode);
  1354. smalltalk.addClass('BlockSequenceNode', smalltalk.SequenceNode, [], 'Compiler-AST');
  1355. smalltalk.addMethod(
  1356. "_accept_",
  1357. smalltalk.method({
  1358. selector: "accept:",
  1359. category: 'visiting',
  1360. fn: function (aVisitor){
  1361. var self=this;
  1362. return smalltalk.withContext(function($ctx1) { var $1;
  1363. $1=_st(aVisitor)._visitBlockSequenceNode_(self);
  1364. return $1;
  1365. }, self, "accept:", [aVisitor], smalltalk.BlockSequenceNode)},
  1366. args: ["aVisitor"],
  1367. source: "accept: aVisitor\x0a\x09^ aVisitor visitBlockSequenceNode: self",
  1368. messageSends: ["visitBlockSequenceNode:"],
  1369. referencedClasses: []
  1370. }),
  1371. smalltalk.BlockSequenceNode);
  1372. smalltalk.addMethod(
  1373. "_isBlockSequenceNode",
  1374. smalltalk.method({
  1375. selector: "isBlockSequenceNode",
  1376. category: 'testing',
  1377. fn: function (){
  1378. var self=this;
  1379. return smalltalk.withContext(function($ctx1) { return true;
  1380. }, self, "isBlockSequenceNode", [], smalltalk.BlockSequenceNode)},
  1381. args: [],
  1382. source: "isBlockSequenceNode\x0a\x09^true",
  1383. messageSends: [],
  1384. referencedClasses: []
  1385. }),
  1386. smalltalk.BlockSequenceNode);
  1387. smalltalk.addClass('ValueNode', smalltalk.Node, ['value'], 'Compiler-AST');
  1388. smalltalk.addMethod(
  1389. "_accept_",
  1390. smalltalk.method({
  1391. selector: "accept:",
  1392. category: 'visiting',
  1393. fn: function (aVisitor){
  1394. var self=this;
  1395. return smalltalk.withContext(function($ctx1) { var $1;
  1396. $1=_st(aVisitor)._visitValueNode_(self);
  1397. return $1;
  1398. }, self, "accept:", [aVisitor], smalltalk.ValueNode)},
  1399. args: ["aVisitor"],
  1400. source: "accept: aVisitor\x0a\x09^ aVisitor visitValueNode: self",
  1401. messageSends: ["visitValueNode:"],
  1402. referencedClasses: []
  1403. }),
  1404. smalltalk.ValueNode);
  1405. smalltalk.addMethod(
  1406. "_isImmutable",
  1407. smalltalk.method({
  1408. selector: "isImmutable",
  1409. category: 'testing',
  1410. fn: function (){
  1411. var self=this;
  1412. var $1;
  1413. $1=true;
  1414. return $1;
  1415. },
  1416. args: [],
  1417. source: "isImmutable\x0a\x09^true",
  1418. messageSends: [],
  1419. referencedClasses: []
  1420. }),
  1421. smalltalk.ValueNode);
  1422. smalltalk.addMethod(
  1423. "_isValueNode",
  1424. smalltalk.method({
  1425. selector: "isValueNode",
  1426. category: 'testing',
  1427. fn: function (){
  1428. var self=this;
  1429. return smalltalk.withContext(function($ctx1) { return true;
  1430. }, self, "isValueNode", [], smalltalk.ValueNode)},
  1431. args: [],
  1432. source: "isValueNode\x0a\x09^true",
  1433. messageSends: [],
  1434. referencedClasses: []
  1435. }),
  1436. smalltalk.ValueNode);
  1437. smalltalk.addMethod(
  1438. "_value",
  1439. smalltalk.method({
  1440. selector: "value",
  1441. category: 'accessing',
  1442. fn: function (){
  1443. var self=this;
  1444. return smalltalk.withContext(function($ctx1) { return self["@value"];
  1445. }, self, "value", [], smalltalk.ValueNode)},
  1446. args: [],
  1447. source: "value\x0a\x09^value",
  1448. messageSends: [],
  1449. referencedClasses: []
  1450. }),
  1451. smalltalk.ValueNode);
  1452. smalltalk.addMethod(
  1453. "_value_",
  1454. smalltalk.method({
  1455. selector: "value:",
  1456. category: 'accessing',
  1457. fn: function (anObject){
  1458. var self=this;
  1459. return smalltalk.withContext(function($ctx1) { self["@value"]=anObject;
  1460. return self}, self, "value:", [anObject], smalltalk.ValueNode)},
  1461. args: ["anObject"],
  1462. source: "value: anObject\x0a\x09value := anObject",
  1463. messageSends: [],
  1464. referencedClasses: []
  1465. }),
  1466. smalltalk.ValueNode);
  1467. smalltalk.addClass('VariableNode', smalltalk.ValueNode, ['assigned', 'binding'], 'Compiler-AST');
  1468. smalltalk.addMethod(
  1469. "_accept_",
  1470. smalltalk.method({
  1471. selector: "accept:",
  1472. category: 'visiting',
  1473. fn: function (aVisitor){
  1474. var self=this;
  1475. return smalltalk.withContext(function($ctx1) { var $1;
  1476. $1=_st(aVisitor)._visitVariableNode_(self);
  1477. return $1;
  1478. }, self, "accept:", [aVisitor], smalltalk.VariableNode)},
  1479. args: ["aVisitor"],
  1480. source: "accept: aVisitor\x0a\x09^ aVisitor visitVariableNode: self",
  1481. messageSends: ["visitVariableNode:"],
  1482. referencedClasses: []
  1483. }),
  1484. smalltalk.VariableNode);
  1485. smalltalk.addMethod(
  1486. "_alias",
  1487. smalltalk.method({
  1488. selector: "alias",
  1489. category: 'accessing',
  1490. fn: function (){
  1491. var self=this;
  1492. return smalltalk.withContext(function($ctx1) { var $1;
  1493. $1=_st(_st(self)._binding())._alias();
  1494. return $1;
  1495. }, self, "alias", [], smalltalk.VariableNode)},
  1496. args: [],
  1497. source: "alias\x0a\x09^ self binding alias",
  1498. messageSends: ["alias", "binding"],
  1499. referencedClasses: []
  1500. }),
  1501. smalltalk.VariableNode);
  1502. smalltalk.addMethod(
  1503. "_assigned",
  1504. smalltalk.method({
  1505. selector: "assigned",
  1506. category: 'accessing',
  1507. fn: function (){
  1508. var self=this;
  1509. return smalltalk.withContext(function($ctx1) { var $1;
  1510. if(($receiver = self["@assigned"]) == nil || $receiver == undefined){
  1511. $1=false;
  1512. } else {
  1513. $1=self["@assigned"];
  1514. };
  1515. return $1;
  1516. }, self, "assigned", [], smalltalk.VariableNode)},
  1517. args: [],
  1518. source: "assigned\x0a\x09^assigned ifNil: [false]",
  1519. messageSends: ["ifNil:"],
  1520. referencedClasses: []
  1521. }),
  1522. smalltalk.VariableNode);
  1523. smalltalk.addMethod(
  1524. "_assigned_",
  1525. smalltalk.method({
  1526. selector: "assigned:",
  1527. category: 'accessing',
  1528. fn: function (aBoolean){
  1529. var self=this;
  1530. return smalltalk.withContext(function($ctx1) { self["@assigned"]=aBoolean;
  1531. return self}, self, "assigned:", [aBoolean], smalltalk.VariableNode)},
  1532. args: ["aBoolean"],
  1533. source: "assigned: aBoolean\x0a\x09assigned := aBoolean",
  1534. messageSends: [],
  1535. referencedClasses: []
  1536. }),
  1537. smalltalk.VariableNode);
  1538. smalltalk.addMethod(
  1539. "_beAssigned",
  1540. smalltalk.method({
  1541. selector: "beAssigned",
  1542. category: 'accessing',
  1543. fn: function (){
  1544. var self=this;
  1545. return smalltalk.withContext(function($ctx1) { _st(_st(self)._binding())._validateAssignment();
  1546. self["@assigned"]=true;
  1547. return self}, self, "beAssigned", [], smalltalk.VariableNode)},
  1548. args: [],
  1549. source: "beAssigned\x0a\x09self binding validateAssignment.\x0a\x09assigned := true",
  1550. messageSends: ["validateAssignment", "binding"],
  1551. referencedClasses: []
  1552. }),
  1553. smalltalk.VariableNode);
  1554. smalltalk.addMethod(
  1555. "_binding",
  1556. smalltalk.method({
  1557. selector: "binding",
  1558. category: 'accessing',
  1559. fn: function (){
  1560. var self=this;
  1561. return smalltalk.withContext(function($ctx1) { return self["@binding"];
  1562. }, self, "binding", [], smalltalk.VariableNode)},
  1563. args: [],
  1564. source: "binding\x0a\x09^ binding",
  1565. messageSends: [],
  1566. referencedClasses: []
  1567. }),
  1568. smalltalk.VariableNode);
  1569. smalltalk.addMethod(
  1570. "_binding_",
  1571. smalltalk.method({
  1572. selector: "binding:",
  1573. category: 'accessing',
  1574. fn: function (aScopeVar){
  1575. var self=this;
  1576. return smalltalk.withContext(function($ctx1) { self["@binding"]=aScopeVar;
  1577. return self}, self, "binding:", [aScopeVar], smalltalk.VariableNode)},
  1578. args: ["aScopeVar"],
  1579. source: "binding: aScopeVar\x0a\x09binding := aScopeVar",
  1580. messageSends: [],
  1581. referencedClasses: []
  1582. }),
  1583. smalltalk.VariableNode);
  1584. smalltalk.addMethod(
  1585. "_isImmutable",
  1586. smalltalk.method({
  1587. selector: "isImmutable",
  1588. category: 'testing',
  1589. fn: function (){
  1590. var self=this;
  1591. return false;
  1592. },
  1593. args: [],
  1594. source: "isImmutable\x0a\x09^false",
  1595. messageSends: [],
  1596. referencedClasses: []
  1597. }),
  1598. smalltalk.VariableNode);
  1599. smalltalk.addClass('ClassReferenceNode', smalltalk.VariableNode, [], 'Compiler-AST');
  1600. smalltalk.addMethod(
  1601. "_accept_",
  1602. smalltalk.method({
  1603. selector: "accept:",
  1604. category: 'visiting',
  1605. fn: function (aVisitor){
  1606. var self=this;
  1607. return smalltalk.withContext(function($ctx1) { var $1;
  1608. $1=_st(aVisitor)._visitClassReferenceNode_(self);
  1609. return $1;
  1610. }, self, "accept:", [aVisitor], smalltalk.ClassReferenceNode)},
  1611. args: ["aVisitor"],
  1612. source: "accept: aVisitor\x0a\x09^ aVisitor visitClassReferenceNode: self",
  1613. messageSends: ["visitClassReferenceNode:"],
  1614. referencedClasses: []
  1615. }),
  1616. smalltalk.ClassReferenceNode);