Compiler-AST.js 44 KB

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