Compiler-AST.js 35 KB

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