Compiler-AST.js 35 KB

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