Compiler-AST.deploy.js 24 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172
  1. smalltalk.addPackage('Compiler-AST', {});
  2. smalltalk.addClass('Node', smalltalk.Object, ['nodes', 'used', 'assignedTo', 'alias', 'canBeInlined'], 'Compiler-AST');
  3. smalltalk.addMethod(
  4. "_accept_",
  5. smalltalk.method({
  6. selector: "accept:",
  7. fn: function (aVisitor) {
  8. var self=this;
  9. return smalltalk.send(aVisitor, "_visitNode_", [self]);
  10. return self;}
  11. }),
  12. smalltalk.Node);
  13. smalltalk.addMethod(
  14. "_addNode_",
  15. smalltalk.method({
  16. selector: "addNode:",
  17. fn: function (aNode) {
  18. var self=this;
  19. smalltalk.send(smalltalk.send(self, "_nodes", []), "_add_", [aNode]);
  20. return self;}
  21. }),
  22. smalltalk.Node);
  23. smalltalk.addMethod(
  24. "_alias",
  25. smalltalk.method({
  26. selector: "alias",
  27. fn: function () {
  28. var self=this;
  29. return self['@alias'];
  30. return self;}
  31. }),
  32. smalltalk.Node);
  33. smalltalk.addMethod(
  34. "_alias_",
  35. smalltalk.method({
  36. selector: "alias:",
  37. fn: function (aString) {
  38. var self=this;
  39. (self['@alias']=aString);
  40. return self;}
  41. }),
  42. smalltalk.Node);
  43. smalltalk.addMethod(
  44. "_assignedTo",
  45. smalltalk.method({
  46. selector: "assignedTo",
  47. fn: function () {
  48. var self=this;
  49. return self['@assignedTo'];
  50. return self;}
  51. }),
  52. smalltalk.Node);
  53. smalltalk.addMethod(
  54. "_assignedTo_",
  55. smalltalk.method({
  56. selector: "assignedTo:",
  57. fn: function (aScopeVar) {
  58. var self=this;
  59. (self['@assignedTo']=aScopeVar);
  60. return self;}
  61. }),
  62. smalltalk.Node);
  63. smalltalk.addMethod(
  64. "_beUsed",
  65. smalltalk.method({
  66. selector: "beUsed",
  67. fn: function () {
  68. var self=this;
  69. (self['@used']=true);
  70. return self;}
  71. }),
  72. smalltalk.Node);
  73. smalltalk.addMethod(
  74. "_canAliasChildren",
  75. smalltalk.method({
  76. selector: "canAliasChildren",
  77. fn: function () {
  78. var self=this;
  79. return true;
  80. return self;}
  81. }),
  82. smalltalk.Node);
  83. smalltalk.addMethod(
  84. "_canBeInlined",
  85. smalltalk.method({
  86. selector: "canBeInlined",
  87. fn: function () {
  88. var self=this;
  89. return (($receiver = self['@canBeInlined']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  90. return self;}
  91. }),
  92. smalltalk.Node);
  93. smalltalk.addMethod(
  94. "_canBeInlined_",
  95. smalltalk.method({
  96. selector: "canBeInlined:",
  97. fn: function (aBoolean) {
  98. var self=this;
  99. (self['@canBeInlined']=aBoolean);
  100. return self;}
  101. }),
  102. smalltalk.Node);
  103. smalltalk.addMethod(
  104. "_isAliased",
  105. smalltalk.method({
  106. selector: "isAliased",
  107. fn: function () {
  108. var self=this;
  109. return smalltalk.send(smalltalk.send(self, "_alias", []), "_notNil", []);
  110. return self;}
  111. }),
  112. smalltalk.Node);
  113. smalltalk.addMethod(
  114. "_isAssignmentNode",
  115. smalltalk.method({
  116. selector: "isAssignmentNode",
  117. fn: function () {
  118. var self=this;
  119. return false;
  120. return self;}
  121. }),
  122. smalltalk.Node);
  123. smalltalk.addMethod(
  124. "_isBlockNode",
  125. smalltalk.method({
  126. selector: "isBlockNode",
  127. fn: function () {
  128. var self=this;
  129. return false;
  130. return self;}
  131. }),
  132. smalltalk.Node);
  133. smalltalk.addMethod(
  134. "_isBlockSequenceNode",
  135. smalltalk.method({
  136. selector: "isBlockSequenceNode",
  137. fn: function () {
  138. var self=this;
  139. return false;
  140. return self;}
  141. }),
  142. smalltalk.Node);
  143. smalltalk.addMethod(
  144. "_isSendNode",
  145. smalltalk.method({
  146. selector: "isSendNode",
  147. fn: function () {
  148. var self=this;
  149. return false;
  150. return self;}
  151. }),
  152. smalltalk.Node);
  153. smalltalk.addMethod(
  154. "_isUsed",
  155. smalltalk.method({
  156. selector: "isUsed",
  157. fn: function () {
  158. var self=this;
  159. return smalltalk.send(self, "_used", []);
  160. return self;}
  161. }),
  162. smalltalk.Node);
  163. smalltalk.addMethod(
  164. "_isValueNode",
  165. smalltalk.method({
  166. selector: "isValueNode",
  167. fn: function () {
  168. var self=this;
  169. return false;
  170. return self;}
  171. }),
  172. smalltalk.Node);
  173. smalltalk.addMethod(
  174. "_nodes",
  175. smalltalk.method({
  176. selector: "nodes",
  177. fn: function () {
  178. var self=this;
  179. return (($receiver = self['@nodes']) == nil || $receiver == undefined) ? (function(){return (self['@nodes']=smalltalk.send((smalltalk.Array || Array), "_new", []));})() : $receiver;
  180. return self;}
  181. }),
  182. smalltalk.Node);
  183. smalltalk.addMethod(
  184. "_nodes_",
  185. smalltalk.method({
  186. selector: "nodes:",
  187. fn: function (aCollection) {
  188. var self=this;
  189. (self['@nodes']=aCollection);
  190. return self;}
  191. }),
  192. smalltalk.Node);
  193. smalltalk.addMethod(
  194. "_shouldBeAliased",
  195. smalltalk.method({
  196. selector: "shouldBeAliased",
  197. fn: function () {
  198. var self=this;
  199. return smalltalk.send(smalltalk.send(self, "_isUsed", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(self, "_alias", []), "_isNil", []);})]);
  200. return self;}
  201. }),
  202. smalltalk.Node);
  203. smalltalk.addMethod(
  204. "_used",
  205. smalltalk.method({
  206. selector: "used",
  207. fn: function () {
  208. var self=this;
  209. return (($receiver = self['@used']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  210. return self;}
  211. }),
  212. smalltalk.Node);
  213. smalltalk.addMethod(
  214. "_used_",
  215. smalltalk.method({
  216. selector: "used:",
  217. fn: function (aBoolean) {
  218. var self=this;
  219. (self['@used']=aBoolean);
  220. return self;}
  221. }),
  222. smalltalk.Node);
  223. smalltalk.addClass('AssignmentNode', smalltalk.Node, ['left', 'right'], 'Compiler-AST');
  224. smalltalk.addMethod(
  225. "_accept_",
  226. smalltalk.method({
  227. selector: "accept:",
  228. fn: function (aVisitor) {
  229. var self=this;
  230. return smalltalk.send(aVisitor, "_visitAssignmentNode_", [self]);
  231. return self;}
  232. }),
  233. smalltalk.AssignmentNode);
  234. smalltalk.addMethod(
  235. "_isAssignmentNode",
  236. smalltalk.method({
  237. selector: "isAssignmentNode",
  238. fn: function () {
  239. var self=this;
  240. return true;
  241. return self;}
  242. }),
  243. smalltalk.AssignmentNode);
  244. smalltalk.addMethod(
  245. "_left",
  246. smalltalk.method({
  247. selector: "left",
  248. fn: function () {
  249. var self=this;
  250. return self['@left'];
  251. return self;}
  252. }),
  253. smalltalk.AssignmentNode);
  254. smalltalk.addMethod(
  255. "_left_",
  256. smalltalk.method({
  257. selector: "left:",
  258. fn: function (aNode) {
  259. var self=this;
  260. (self['@left']=aNode);
  261. smalltalk.send(self['@left'], "_assigned_", [true]);
  262. return self;}
  263. }),
  264. smalltalk.AssignmentNode);
  265. smalltalk.addMethod(
  266. "_nodes",
  267. smalltalk.method({
  268. selector: "nodes",
  269. fn: function () {
  270. var self=this;
  271. return smalltalk.send((smalltalk.Array || Array), "_with_with_", [smalltalk.send(self, "_left", []), smalltalk.send(self, "_right", [])]);
  272. return self;}
  273. }),
  274. smalltalk.AssignmentNode);
  275. smalltalk.addMethod(
  276. "_right",
  277. smalltalk.method({
  278. selector: "right",
  279. fn: function () {
  280. var self=this;
  281. return self['@right'];
  282. return self;}
  283. }),
  284. smalltalk.AssignmentNode);
  285. smalltalk.addMethod(
  286. "_right_",
  287. smalltalk.method({
  288. selector: "right:",
  289. fn: function (aNode) {
  290. var self=this;
  291. (self['@right']=aNode);
  292. return self;}
  293. }),
  294. smalltalk.AssignmentNode);
  295. smalltalk.addClass('BlockNode', smalltalk.Node, ['parameters', 'scope'], 'Compiler-AST');
  296. smalltalk.addMethod(
  297. "_accept_",
  298. smalltalk.method({
  299. selector: "accept:",
  300. fn: function (aVisitor) {
  301. var self=this;
  302. return smalltalk.send(aVisitor, "_visitBlockNode_", [self]);
  303. return self;}
  304. }),
  305. smalltalk.BlockNode);
  306. smalltalk.addMethod(
  307. "_canInlineNonLocalReturns",
  308. smalltalk.method({
  309. selector: "canInlineNonLocalReturns",
  310. fn: function () {
  311. var self=this;
  312. return smalltalk.send(smalltalk.send(self, "_canBeInlined", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_scope", []), "_outerScope", []), "_node", []), "_canInlineNonLocalReturns", []);})]);
  313. return self;}
  314. }),
  315. smalltalk.BlockNode);
  316. smalltalk.addMethod(
  317. "_isBlockNode",
  318. smalltalk.method({
  319. selector: "isBlockNode",
  320. fn: function () {
  321. var self=this;
  322. return true;
  323. return self;}
  324. }),
  325. smalltalk.BlockNode);
  326. smalltalk.addMethod(
  327. "_parameters",
  328. smalltalk.method({
  329. selector: "parameters",
  330. fn: function () {
  331. var self=this;
  332. return (($receiver = self['@parameters']) == nil || $receiver == undefined) ? (function(){return (self['@parameters']=smalltalk.send((smalltalk.Array || Array), "_new", []));})() : $receiver;
  333. return self;}
  334. }),
  335. smalltalk.BlockNode);
  336. smalltalk.addMethod(
  337. "_parameters_",
  338. smalltalk.method({
  339. selector: "parameters:",
  340. fn: function (aCollection) {
  341. var self=this;
  342. (self['@parameters']=aCollection);
  343. return self;}
  344. }),
  345. smalltalk.BlockNode);
  346. smalltalk.addMethod(
  347. "_scope",
  348. smalltalk.method({
  349. selector: "scope",
  350. fn: function () {
  351. var self=this;
  352. return self['@scope'];
  353. return self;}
  354. }),
  355. smalltalk.BlockNode);
  356. smalltalk.addMethod(
  357. "_scope_",
  358. smalltalk.method({
  359. selector: "scope:",
  360. fn: function (aLexicalScope) {
  361. var self=this;
  362. (self['@scope']=aLexicalScope);
  363. return self;}
  364. }),
  365. smalltalk.BlockNode);
  366. smalltalk.addClass('CascadeNode', smalltalk.Node, ['receiver'], 'Compiler-AST');
  367. smalltalk.addMethod(
  368. "_accept_",
  369. smalltalk.method({
  370. selector: "accept:",
  371. fn: function (aVisitor) {
  372. var self=this;
  373. return smalltalk.send(aVisitor, "_visitCascadeNode_", [self]);
  374. return self;}
  375. }),
  376. smalltalk.CascadeNode);
  377. smalltalk.addMethod(
  378. "_alias",
  379. smalltalk.method({
  380. selector: "alias",
  381. fn: function () {
  382. var self=this;
  383. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_nodes", []), "_last", []), "_alias", []);
  384. return self;}
  385. }),
  386. smalltalk.CascadeNode);
  387. smalltalk.addMethod(
  388. "_beUsed",
  389. smalltalk.method({
  390. selector: "beUsed",
  391. fn: function () {
  392. var self=this;
  393. smalltalk.send(smalltalk.send(self, "_nodes", []), "_do_", [(function(each){return smalltalk.send(each, "_beUsed", []);})]);
  394. return self;}
  395. }),
  396. smalltalk.CascadeNode);
  397. smalltalk.addMethod(
  398. "_receiver",
  399. smalltalk.method({
  400. selector: "receiver",
  401. fn: function () {
  402. var self=this;
  403. return self['@receiver'];
  404. return self;}
  405. }),
  406. smalltalk.CascadeNode);
  407. smalltalk.addMethod(
  408. "_receiver_",
  409. smalltalk.method({
  410. selector: "receiver:",
  411. fn: function (aNode) {
  412. var self=this;
  413. (self['@receiver']=aNode);
  414. return self;}
  415. }),
  416. smalltalk.CascadeNode);
  417. smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler-AST');
  418. smalltalk.addMethod(
  419. "_accept_",
  420. smalltalk.method({
  421. selector: "accept:",
  422. fn: function (aVisitor) {
  423. var self=this;
  424. return smalltalk.send(aVisitor, "_visitDynamicArrayNode_", [self]);
  425. return self;}
  426. }),
  427. smalltalk.DynamicArrayNode);
  428. smalltalk.addClass('DynamicDictionaryNode', smalltalk.Node, [], 'Compiler-AST');
  429. smalltalk.addMethod(
  430. "_accept_",
  431. smalltalk.method({
  432. selector: "accept:",
  433. fn: function (aVisitor) {
  434. var self=this;
  435. return smalltalk.send(aVisitor, "_visitDynamicDictionaryNode_", [self]);
  436. return self;}
  437. }),
  438. smalltalk.DynamicDictionaryNode);
  439. smalltalk.addClass('JSStatementNode', smalltalk.Node, ['source'], 'Compiler-AST');
  440. smalltalk.addMethod(
  441. "_accept_",
  442. smalltalk.method({
  443. selector: "accept:",
  444. fn: function (aVisitor) {
  445. var self=this;
  446. return smalltalk.send(aVisitor, "_visitJSStatementNode_", [self]);
  447. return self;}
  448. }),
  449. smalltalk.JSStatementNode);
  450. smalltalk.addMethod(
  451. "_source",
  452. smalltalk.method({
  453. selector: "source",
  454. fn: function () {
  455. var self=this;
  456. return (($receiver = self['@source']) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
  457. return self;}
  458. }),
  459. smalltalk.JSStatementNode);
  460. smalltalk.addMethod(
  461. "_source_",
  462. smalltalk.method({
  463. selector: "source:",
  464. fn: function (aString) {
  465. var self=this;
  466. (self['@source']=aString);
  467. return self;}
  468. }),
  469. smalltalk.JSStatementNode);
  470. smalltalk.addClass('MethodNode', smalltalk.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'messageSends'], 'Compiler-AST');
  471. smalltalk.addMethod(
  472. "_accept_",
  473. smalltalk.method({
  474. selector: "accept:",
  475. fn: function (aVisitor) {
  476. var self=this;
  477. return smalltalk.send(aVisitor, "_visitMethodNode_", [self]);
  478. return self;}
  479. }),
  480. smalltalk.MethodNode);
  481. smalltalk.addMethod(
  482. "_arguments",
  483. smalltalk.method({
  484. selector: "arguments",
  485. fn: function () {
  486. var self=this;
  487. return (($receiver = self['@arguments']) == nil || $receiver == undefined) ? (function(){return [];})() : $receiver;
  488. return self;}
  489. }),
  490. smalltalk.MethodNode);
  491. smalltalk.addMethod(
  492. "_arguments_",
  493. smalltalk.method({
  494. selector: "arguments:",
  495. fn: function (aCollection) {
  496. var self=this;
  497. (self['@arguments']=aCollection);
  498. return self;}
  499. }),
  500. smalltalk.MethodNode);
  501. smalltalk.addMethod(
  502. "_canAliasChildren",
  503. smalltalk.method({
  504. selector: "canAliasChildren",
  505. fn: function () {
  506. var self=this;
  507. return false;
  508. return self;}
  509. }),
  510. smalltalk.MethodNode);
  511. smalltalk.addMethod(
  512. "_canInlineNonLocalReturns",
  513. smalltalk.method({
  514. selector: "canInlineNonLocalReturns",
  515. fn: function () {
  516. var self=this;
  517. return true;
  518. return self;}
  519. }),
  520. smalltalk.MethodNode);
  521. smalltalk.addMethod(
  522. "_classReferences",
  523. smalltalk.method({
  524. selector: "classReferences",
  525. fn: function () {
  526. var self=this;
  527. return self['@classReferences'];
  528. return self;}
  529. }),
  530. smalltalk.MethodNode);
  531. smalltalk.addMethod(
  532. "_classReferences_",
  533. smalltalk.method({
  534. selector: "classReferences:",
  535. fn: function (aCollection) {
  536. var self=this;
  537. (self['@classReferences']=aCollection);
  538. return self;}
  539. }),
  540. smalltalk.MethodNode);
  541. smalltalk.addMethod(
  542. "_hasLocalReturn",
  543. smalltalk.method({
  544. selector: "hasLocalReturn",
  545. fn: function () {
  546. var self=this;
  547. return (($receiver = smalltalk.send(self, "_scope", [])) == nil || $receiver == undefined) ? (function(){return false;})() : (function(){return smalltalk.send(smalltalk.send(self, "_scope", []), "_hasLocalReturn", []);})();
  548. return self;}
  549. }),
  550. smalltalk.MethodNode);
  551. smalltalk.addMethod(
  552. "_hasNonLocalReturn",
  553. smalltalk.method({
  554. selector: "hasNonLocalReturn",
  555. fn: function () {
  556. var self=this;
  557. return (($receiver = smalltalk.send(self, "_scope", [])) == nil || $receiver == undefined) ? (function(){return false;})() : (function(){return smalltalk.send(smalltalk.send(self, "_scope", []), "_hasNonLocalReturn", []);})();
  558. return self;}
  559. }),
  560. smalltalk.MethodNode);
  561. smalltalk.addMethod(
  562. "_messageSends",
  563. smalltalk.method({
  564. selector: "messageSends",
  565. fn: function () {
  566. var self=this;
  567. return self['@messageSends'];
  568. return self;}
  569. }),
  570. smalltalk.MethodNode);
  571. smalltalk.addMethod(
  572. "_messageSends_",
  573. smalltalk.method({
  574. selector: "messageSends:",
  575. fn: function (aCollection) {
  576. var self=this;
  577. (self['@messageSends']=aCollection);
  578. return self;}
  579. }),
  580. smalltalk.MethodNode);
  581. smalltalk.addMethod(
  582. "_scope",
  583. smalltalk.method({
  584. selector: "scope",
  585. fn: function () {
  586. var self=this;
  587. return self['@scope'];
  588. return self;}
  589. }),
  590. smalltalk.MethodNode);
  591. smalltalk.addMethod(
  592. "_scope_",
  593. smalltalk.method({
  594. selector: "scope:",
  595. fn: function (aMethodScope) {
  596. var self=this;
  597. (self['@scope']=aMethodScope);
  598. return self;}
  599. }),
  600. smalltalk.MethodNode);
  601. smalltalk.addMethod(
  602. "_selector",
  603. smalltalk.method({
  604. selector: "selector",
  605. fn: function () {
  606. var self=this;
  607. return self['@selector'];
  608. return self;}
  609. }),
  610. smalltalk.MethodNode);
  611. smalltalk.addMethod(
  612. "_selector_",
  613. smalltalk.method({
  614. selector: "selector:",
  615. fn: function (aString) {
  616. var self=this;
  617. (self['@selector']=aString);
  618. return self;}
  619. }),
  620. smalltalk.MethodNode);
  621. smalltalk.addMethod(
  622. "_source",
  623. smalltalk.method({
  624. selector: "source",
  625. fn: function () {
  626. var self=this;
  627. return self['@source'];
  628. return self;}
  629. }),
  630. smalltalk.MethodNode);
  631. smalltalk.addMethod(
  632. "_source_",
  633. smalltalk.method({
  634. selector: "source:",
  635. fn: function (aString) {
  636. var self=this;
  637. (self['@source']=aString);
  638. return self;}
  639. }),
  640. smalltalk.MethodNode);
  641. smalltalk.addClass('ReturnNode', smalltalk.Node, ['nonLocalReturn', 'canBeInlined'], 'Compiler-AST');
  642. smalltalk.addMethod(
  643. "_accept_",
  644. smalltalk.method({
  645. selector: "accept:",
  646. fn: function (aVisitor) {
  647. var self=this;
  648. return smalltalk.send(aVisitor, "_visitReturnNode_", [self]);
  649. return self;}
  650. }),
  651. smalltalk.ReturnNode);
  652. smalltalk.addMethod(
  653. "_nonLocalReturn",
  654. smalltalk.method({
  655. selector: "nonLocalReturn",
  656. fn: function () {
  657. var self=this;
  658. return (($receiver = self['@nonLocalReturn']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  659. return self;}
  660. }),
  661. smalltalk.ReturnNode);
  662. smalltalk.addMethod(
  663. "_nonLocalReturn_",
  664. smalltalk.method({
  665. selector: "nonLocalReturn:",
  666. fn: function (aBoolean) {
  667. var self=this;
  668. (self['@nonLocalReturn']=aBoolean);
  669. return self;}
  670. }),
  671. smalltalk.ReturnNode);
  672. smalltalk.addMethod(
  673. "_shouldBeAliased",
  674. smalltalk.method({
  675. selector: "shouldBeAliased",
  676. fn: function () {
  677. var self=this;
  678. return false;
  679. return self;}
  680. }),
  681. smalltalk.ReturnNode);
  682. smalltalk.addClass('SendNode', smalltalk.Node, ['selector', 'arguments', 'receiver', 'superSend'], 'Compiler-AST');
  683. smalltalk.addMethod(
  684. "_accept_",
  685. smalltalk.method({
  686. selector: "accept:",
  687. fn: function (aVisitor) {
  688. var self=this;
  689. return smalltalk.send(aVisitor, "_visitSendNode_", [self]);
  690. return self;}
  691. }),
  692. smalltalk.SendNode);
  693. smalltalk.addMethod(
  694. "_arguments",
  695. smalltalk.method({
  696. selector: "arguments",
  697. fn: function () {
  698. var self=this;
  699. return (($receiver = self['@arguments']) == nil || $receiver == undefined) ? (function(){return (self['@arguments']=[]);})() : $receiver;
  700. return self;}
  701. }),
  702. smalltalk.SendNode);
  703. smalltalk.addMethod(
  704. "_arguments_",
  705. smalltalk.method({
  706. selector: "arguments:",
  707. fn: function (aCollection) {
  708. var self=this;
  709. (self['@arguments']=aCollection);
  710. return self;}
  711. }),
  712. smalltalk.SendNode);
  713. smalltalk.addMethod(
  714. "_cascadeNodeWithMessages_",
  715. smalltalk.method({
  716. selector: "cascadeNodeWithMessages:",
  717. fn: function (aCollection) {
  718. var self=this;
  719. var first=nil;
  720. (first=(function($rec){smalltalk.send($rec, "_selector_", [smalltalk.send(self, "_selector", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(self, "_arguments", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.SendNode || SendNode), "_new", [])));
  721. return (function($rec){smalltalk.send($rec, "_receiver_", [smalltalk.send(self, "_receiver", [])]);smalltalk.send($rec, "_nodes_", [smalltalk.send(smalltalk.send((smalltalk.Array || Array), "_with_", [first]), "__comma", [aCollection])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.CascadeNode || CascadeNode), "_new", []));
  722. return self;}
  723. }),
  724. smalltalk.SendNode);
  725. smalltalk.addMethod(
  726. "_isSendNode",
  727. smalltalk.method({
  728. selector: "isSendNode",
  729. fn: function () {
  730. var self=this;
  731. return true;
  732. return self;}
  733. }),
  734. smalltalk.SendNode);
  735. smalltalk.addMethod(
  736. "_nodes",
  737. smalltalk.method({
  738. selector: "nodes",
  739. fn: function () {
  740. var self=this;
  741. return (function($rec){smalltalk.send($rec, "_add_", [smalltalk.send(self, "_receiver", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.Array || Array), "_withAll_", [smalltalk.send(self, "_arguments", [])]));
  742. return self;}
  743. }),
  744. smalltalk.SendNode);
  745. smalltalk.addMethod(
  746. "_receiver",
  747. smalltalk.method({
  748. selector: "receiver",
  749. fn: function () {
  750. var self=this;
  751. return self['@receiver'];
  752. return self;}
  753. }),
  754. smalltalk.SendNode);
  755. smalltalk.addMethod(
  756. "_receiver_",
  757. smalltalk.method({
  758. selector: "receiver:",
  759. fn: function (aNode) {
  760. var self=this;
  761. (self['@receiver']=aNode);
  762. return self;}
  763. }),
  764. smalltalk.SendNode);
  765. smalltalk.addMethod(
  766. "_selector",
  767. smalltalk.method({
  768. selector: "selector",
  769. fn: function () {
  770. var self=this;
  771. return self['@selector'];
  772. return self;}
  773. }),
  774. smalltalk.SendNode);
  775. smalltalk.addMethod(
  776. "_selector_",
  777. smalltalk.method({
  778. selector: "selector:",
  779. fn: function (aString) {
  780. var self=this;
  781. (self['@selector']=aString);
  782. return self;}
  783. }),
  784. smalltalk.SendNode);
  785. smalltalk.addMethod(
  786. "_superSend",
  787. smalltalk.method({
  788. selector: "superSend",
  789. fn: function () {
  790. var self=this;
  791. return (($receiver = self['@superSend']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  792. return self;}
  793. }),
  794. smalltalk.SendNode);
  795. smalltalk.addMethod(
  796. "_superSend_",
  797. smalltalk.method({
  798. selector: "superSend:",
  799. fn: function (aBoolean) {
  800. var self=this;
  801. (self['@superSend']=aBoolean);
  802. return self;}
  803. }),
  804. smalltalk.SendNode);
  805. smalltalk.addMethod(
  806. "_valueForReceiver_",
  807. smalltalk.method({
  808. selector: "valueForReceiver:",
  809. fn: function (anObject) {
  810. var self=this;
  811. return (function($rec){smalltalk.send($rec, "_receiver_", [(($receiver = smalltalk.send(self, "_receiver", [])) == nil || $receiver == undefined) ? (function(){return anObject;})() : (function(){return smalltalk.send(smalltalk.send(self, "_receiver", []), "_valueForReceiver_", [anObject]);})()]);smalltalk.send($rec, "_selector_", [smalltalk.send(self, "_selector", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(self, "_arguments", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.SendNode || SendNode), "_new", []));
  812. return self;}
  813. }),
  814. smalltalk.SendNode);
  815. smalltalk.addClass('SequenceNode', smalltalk.Node, ['temps', 'scope'], 'Compiler-AST');
  816. smalltalk.addMethod(
  817. "_accept_",
  818. smalltalk.method({
  819. selector: "accept:",
  820. fn: function (aVisitor) {
  821. var self=this;
  822. return smalltalk.send(aVisitor, "_visitSequenceNode_", [self]);
  823. return self;}
  824. }),
  825. smalltalk.SequenceNode);
  826. smalltalk.addMethod(
  827. "_asBlockSequenceNode",
  828. smalltalk.method({
  829. selector: "asBlockSequenceNode",
  830. fn: function () {
  831. var self=this;
  832. return (function($rec){smalltalk.send($rec, "_nodes_", [smalltalk.send(self, "_nodes", [])]);smalltalk.send($rec, "_temps_", [smalltalk.send(self, "_temps", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.BlockSequenceNode || BlockSequenceNode), "_new", []));
  833. return self;}
  834. }),
  835. smalltalk.SequenceNode);
  836. smalltalk.addMethod(
  837. "_canAliasChildren",
  838. smalltalk.method({
  839. selector: "canAliasChildren",
  840. fn: function () {
  841. var self=this;
  842. return false;
  843. return self;}
  844. }),
  845. smalltalk.SequenceNode);
  846. smalltalk.addMethod(
  847. "_scope",
  848. smalltalk.method({
  849. selector: "scope",
  850. fn: function () {
  851. var self=this;
  852. return self['@scope'];
  853. return self;}
  854. }),
  855. smalltalk.SequenceNode);
  856. smalltalk.addMethod(
  857. "_scope_",
  858. smalltalk.method({
  859. selector: "scope:",
  860. fn: function (aLexicalScope) {
  861. var self=this;
  862. (self['@scope']=aLexicalScope);
  863. return self;}
  864. }),
  865. smalltalk.SequenceNode);
  866. smalltalk.addMethod(
  867. "_temps",
  868. smalltalk.method({
  869. selector: "temps",
  870. fn: function () {
  871. var self=this;
  872. return (($receiver = self['@temps']) == nil || $receiver == undefined) ? (function(){return [];})() : $receiver;
  873. return self;}
  874. }),
  875. smalltalk.SequenceNode);
  876. smalltalk.addMethod(
  877. "_temps_",
  878. smalltalk.method({
  879. selector: "temps:",
  880. fn: function (aCollection) {
  881. var self=this;
  882. (self['@temps']=aCollection);
  883. return self;}
  884. }),
  885. smalltalk.SequenceNode);
  886. smalltalk.addClass('BlockSequenceNode', smalltalk.SequenceNode, [], 'Compiler-AST');
  887. smalltalk.addMethod(
  888. "_accept_",
  889. smalltalk.method({
  890. selector: "accept:",
  891. fn: function (aVisitor) {
  892. var self=this;
  893. return smalltalk.send(aVisitor, "_visitBlockSequenceNode_", [self]);
  894. return self;}
  895. }),
  896. smalltalk.BlockSequenceNode);
  897. smalltalk.addMethod(
  898. "_isBlockSequenceNode",
  899. smalltalk.method({
  900. selector: "isBlockSequenceNode",
  901. fn: function () {
  902. var self=this;
  903. return true;
  904. return self;}
  905. }),
  906. smalltalk.BlockSequenceNode);
  907. smalltalk.addClass('ValueNode', smalltalk.Node, ['value'], 'Compiler-AST');
  908. smalltalk.addMethod(
  909. "_accept_",
  910. smalltalk.method({
  911. selector: "accept:",
  912. fn: function (aVisitor) {
  913. var self=this;
  914. return smalltalk.send(aVisitor, "_visitValueNode_", [self]);
  915. return self;}
  916. }),
  917. smalltalk.ValueNode);
  918. smalltalk.addMethod(
  919. "_isValueNode",
  920. smalltalk.method({
  921. selector: "isValueNode",
  922. fn: function () {
  923. var self=this;
  924. return true;
  925. return self;}
  926. }),
  927. smalltalk.ValueNode);
  928. smalltalk.addMethod(
  929. "_shouldBeAliased",
  930. smalltalk.method({
  931. selector: "shouldBeAliased",
  932. fn: function () {
  933. var self=this;
  934. return false;
  935. return self;}
  936. }),
  937. smalltalk.ValueNode);
  938. smalltalk.addMethod(
  939. "_value",
  940. smalltalk.method({
  941. selector: "value",
  942. fn: function () {
  943. var self=this;
  944. return self['@value'];
  945. return self;}
  946. }),
  947. smalltalk.ValueNode);
  948. smalltalk.addMethod(
  949. "_value_",
  950. smalltalk.method({
  951. selector: "value:",
  952. fn: function (anObject) {
  953. var self=this;
  954. (self['@value']=anObject);
  955. return self;}
  956. }),
  957. smalltalk.ValueNode);
  958. smalltalk.addClass('VariableNode', smalltalk.ValueNode, ['assigned', 'binding'], 'Compiler-AST');
  959. smalltalk.addMethod(
  960. "_accept_",
  961. smalltalk.method({
  962. selector: "accept:",
  963. fn: function (aVisitor) {
  964. var self=this;
  965. return smalltalk.send(aVisitor, "_visitVariableNode_", [self]);
  966. return self;}
  967. }),
  968. smalltalk.VariableNode);
  969. smalltalk.addMethod(
  970. "_alias",
  971. smalltalk.method({
  972. selector: "alias",
  973. fn: function () {
  974. var self=this;
  975. return smalltalk.send(smalltalk.send(self, "_binding", []), "_alias", []);
  976. return self;}
  977. }),
  978. smalltalk.VariableNode);
  979. smalltalk.addMethod(
  980. "_assigned",
  981. smalltalk.method({
  982. selector: "assigned",
  983. fn: function () {
  984. var self=this;
  985. return (($receiver = self['@assigned']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  986. return self;}
  987. }),
  988. smalltalk.VariableNode);
  989. smalltalk.addMethod(
  990. "_assigned_",
  991. smalltalk.method({
  992. selector: "assigned:",
  993. fn: function (aBoolean) {
  994. var self=this;
  995. (self['@assigned']=aBoolean);
  996. return self;}
  997. }),
  998. smalltalk.VariableNode);
  999. smalltalk.addMethod(
  1000. "_beAssigned",
  1001. smalltalk.method({
  1002. selector: "beAssigned",
  1003. fn: function () {
  1004. var self=this;
  1005. smalltalk.send(smalltalk.send(self, "_binding", []), "_validateAssignment", []);
  1006. (self['@assigned']=true);
  1007. return self;}
  1008. }),
  1009. smalltalk.VariableNode);
  1010. smalltalk.addMethod(
  1011. "_binding",
  1012. smalltalk.method({
  1013. selector: "binding",
  1014. fn: function () {
  1015. var self=this;
  1016. return self['@binding'];
  1017. return self;}
  1018. }),
  1019. smalltalk.VariableNode);
  1020. smalltalk.addMethod(
  1021. "_binding_",
  1022. smalltalk.method({
  1023. selector: "binding:",
  1024. fn: function (aScopeVar) {
  1025. var self=this;
  1026. (self['@binding']=aScopeVar);
  1027. return self;}
  1028. }),
  1029. smalltalk.VariableNode);
  1030. smalltalk.addClass('ClassReferenceNode', smalltalk.VariableNode, [], 'Compiler-AST');
  1031. smalltalk.addMethod(
  1032. "_accept_",
  1033. smalltalk.method({
  1034. selector: "accept:",
  1035. fn: function (aVisitor) {
  1036. var self=this;
  1037. return smalltalk.send(aVisitor, "_visitClassReferenceNode_", [self]);
  1038. return self;}
  1039. }),
  1040. smalltalk.ClassReferenceNode);