1
0

Compiler.deploy.js 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296
  1. smalltalk.addClass('Node', smalltalk.Object, ['nodes'], 'Compiler');
  2. smalltalk.addMethod(
  3. '_nodes',
  4. smalltalk.method({
  5. selector: 'nodes',
  6. fn: function (){
  7. var self=this;
  8. return smalltalk.send(self['@nodes'], "_ifNil_", [(function(){return self['@nodes']=smalltalk.send(smalltalk.Array, "_new", []);})]);
  9. return self;}
  10. ]
  11. }),
  12. smalltalk.Node);
  13. smalltalk.addMethod(
  14. '_nodes_',
  15. smalltalk.method({
  16. selector: 'nodes:',
  17. fn: function (aCollection){
  18. var self=this;
  19. self['@nodes']=aCollection;
  20. return self;}
  21. ]
  22. }),
  23. smalltalk.Node);
  24. smalltalk.addMethod(
  25. '_addNode_',
  26. smalltalk.method({
  27. selector: 'addNode:',
  28. fn: function (aNode){
  29. var self=this;
  30. smalltalk.send(smalltalk.send(self, "_nodes", []), "_add_", [aNode]);
  31. return self;}
  32. ]
  33. }),
  34. smalltalk.Node);
  35. smalltalk.addMethod(
  36. '_accept_',
  37. smalltalk.method({
  38. selector: 'accept:',
  39. fn: function (aVisitor){
  40. var self=this;
  41. smalltalk.send(aVisitor, "_visitNode_", [self]);
  42. return self;}
  43. ]
  44. }),
  45. smalltalk.Node);
  46. smalltalk.addClass('MethodNode', smalltalk.Node, ['selector', 'arguments', 'source'], 'Compiler');
  47. smalltalk.addMethod(
  48. '_selector',
  49. smalltalk.method({
  50. selector: 'selector',
  51. fn: function (){
  52. var self=this;
  53. return self['@selector'];
  54. return self;}
  55. ]
  56. }),
  57. smalltalk.MethodNode);
  58. smalltalk.addMethod(
  59. '_selector_',
  60. smalltalk.method({
  61. selector: 'selector:',
  62. fn: function (aString){
  63. var self=this;
  64. self['@selector']=aString;
  65. return self;}
  66. ]
  67. }),
  68. smalltalk.MethodNode);
  69. smalltalk.addMethod(
  70. '_arguments',
  71. smalltalk.method({
  72. selector: 'arguments',
  73. fn: function (){
  74. var self=this;
  75. return smalltalk.send(self['@arguments'], "_ifNil_", [(function(){return [];})]);
  76. return self;}
  77. ]
  78. }),
  79. smalltalk.MethodNode);
  80. smalltalk.addMethod(
  81. '_arguments_',
  82. smalltalk.method({
  83. selector: 'arguments:',
  84. fn: function (aCollection){
  85. var self=this;
  86. self['@arguments']=aCollection;
  87. return self;}
  88. ]
  89. }),
  90. smalltalk.MethodNode);
  91. smalltalk.addMethod(
  92. '_source',
  93. smalltalk.method({
  94. selector: 'source',
  95. fn: function (){
  96. var self=this;
  97. return self['@source'];
  98. return self;}
  99. ]
  100. }),
  101. smalltalk.MethodNode);
  102. smalltalk.addMethod(
  103. '_source_',
  104. smalltalk.method({
  105. selector: 'source:',
  106. fn: function (aString){
  107. var self=this;
  108. self['@source']=aString;
  109. return self;}
  110. ]
  111. }),
  112. smalltalk.MethodNode);
  113. smalltalk.addMethod(
  114. '_accept_',
  115. smalltalk.method({
  116. selector: 'accept:',
  117. fn: function (aVisitor){
  118. var self=this;
  119. smalltalk.send(aVisitor, "_visitMethodNode_", [self]);
  120. return self;}
  121. ]
  122. }),
  123. smalltalk.MethodNode);
  124. smalltalk.addClass('SendNode', smalltalk.Node, ['selector', 'arguments', 'receiver'], 'Compiler');
  125. smalltalk.addMethod(
  126. '_selector',
  127. smalltalk.method({
  128. selector: 'selector',
  129. fn: function (){
  130. var self=this;
  131. return self['@selector'];
  132. return self;}
  133. ]
  134. }),
  135. smalltalk.SendNode);
  136. smalltalk.addMethod(
  137. '_selector_',
  138. smalltalk.method({
  139. selector: 'selector:',
  140. fn: function (aString){
  141. var self=this;
  142. self['@selector']=aString;
  143. return self;}
  144. ]
  145. }),
  146. smalltalk.SendNode);
  147. smalltalk.addMethod(
  148. '_arguments',
  149. smalltalk.method({
  150. selector: 'arguments',
  151. fn: function (){
  152. var self=this;
  153. return smalltalk.send(self['@arguments'], "_ifNil_", [(function(){return self['@arguments']=[];})]);
  154. return self;}
  155. ]
  156. }),
  157. smalltalk.SendNode);
  158. smalltalk.addMethod(
  159. '_arguments_',
  160. smalltalk.method({
  161. selector: 'arguments:',
  162. fn: function (aCollection){
  163. var self=this;
  164. self['@arguments']=aCollection;
  165. return self;}
  166. ]
  167. }),
  168. smalltalk.SendNode);
  169. smalltalk.addMethod(
  170. '_receiver',
  171. smalltalk.method({
  172. selector: 'receiver',
  173. fn: function (){
  174. var self=this;
  175. return self['@receiver'];
  176. return self;}
  177. ]
  178. }),
  179. smalltalk.SendNode);
  180. smalltalk.addMethod(
  181. '_receiver_',
  182. smalltalk.method({
  183. selector: 'receiver:',
  184. fn: function (aNode){
  185. var self=this;
  186. self['@receiver']=aNode;
  187. return self;}
  188. ]
  189. }),
  190. smalltalk.SendNode);
  191. smalltalk.addMethod(
  192. '_valueForReceiver_',
  193. smalltalk.method({
  194. selector: 'valueForReceiver:',
  195. fn: function (anObject){
  196. var self=this;
  197. return (function($rec){smalltalk.send($rec, "_receiver_", [smalltalk.send(smalltalk.send(self, "_receiver", []), "_ifNil_ifNotNil_", [(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, "_new", []));
  198. return self;}
  199. ]
  200. }),
  201. smalltalk.SendNode);
  202. smalltalk.addMethod(
  203. '_cascadeNodeWithMessages_',
  204. smalltalk.method({
  205. selector: 'cascadeNodeWithMessages:',
  206. fn: function (aCollection){
  207. var self=this;
  208. var first=nil;
  209. 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, "_new", []));
  210. return (function($rec){smalltalk.send($rec, "_receiver_", [smalltalk.send(self, "_receiver", [])]);smalltalk.send($rec, "_nodes_", [smalltalk.send(smalltalk.send(smalltalk.Array, "_with_", [first]), "__comma", [aCollection])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(smalltalk.CascadeNode, "_new", []));
  211. return self;}
  212. ]
  213. }),
  214. smalltalk.SendNode);
  215. smalltalk.addMethod(
  216. '_accept_',
  217. smalltalk.method({
  218. selector: 'accept:',
  219. fn: function (aVisitor){
  220. var self=this;
  221. smalltalk.send(aVisitor, "_visitSendNode_", [self]);
  222. return self;}
  223. ]
  224. }),
  225. smalltalk.SendNode);
  226. smalltalk.addClass('CascadeNode', smalltalk.Node, ['receiver'], 'Compiler');
  227. smalltalk.addMethod(
  228. '_receiver',
  229. smalltalk.method({
  230. selector: 'receiver',
  231. fn: function (){
  232. var self=this;
  233. return self['@receiver'];
  234. return self;}
  235. ]
  236. }),
  237. smalltalk.CascadeNode);
  238. smalltalk.addMethod(
  239. '_receiver_',
  240. smalltalk.method({
  241. selector: 'receiver:',
  242. fn: function (aNode){
  243. var self=this;
  244. self['@receiver']=aNode;
  245. return self;}
  246. ]
  247. }),
  248. smalltalk.CascadeNode);
  249. smalltalk.addMethod(
  250. '_accept_',
  251. smalltalk.method({
  252. selector: 'accept:',
  253. fn: function (aVisitor){
  254. var self=this;
  255. smalltalk.send(aVisitor, "_visitCascadeNode_", [self]);
  256. return self;}
  257. ]
  258. }),
  259. smalltalk.CascadeNode);
  260. smalltalk.addClass('AssignmentNode', smalltalk.Node, ['left', 'right'], 'Compiler');
  261. smalltalk.addMethod(
  262. '_left',
  263. smalltalk.method({
  264. selector: 'left',
  265. fn: function (){
  266. var self=this;
  267. return self['@left'];
  268. return self;}
  269. ]
  270. }),
  271. smalltalk.AssignmentNode);
  272. smalltalk.addMethod(
  273. '_left_',
  274. smalltalk.method({
  275. selector: 'left:',
  276. fn: function (aNode){
  277. var self=this;
  278. self['@left']=aNode;
  279. return self;}
  280. ]
  281. }),
  282. smalltalk.AssignmentNode);
  283. smalltalk.addMethod(
  284. '_right',
  285. smalltalk.method({
  286. selector: 'right',
  287. fn: function (){
  288. var self=this;
  289. return self['@right'];
  290. return self;}
  291. ]
  292. }),
  293. smalltalk.AssignmentNode);
  294. smalltalk.addMethod(
  295. '_right_',
  296. smalltalk.method({
  297. selector: 'right:',
  298. fn: function (aNode){
  299. var self=this;
  300. self['@right']=aNode;
  301. return self;}
  302. ]
  303. }),
  304. smalltalk.AssignmentNode);
  305. smalltalk.addMethod(
  306. '_accept_',
  307. smalltalk.method({
  308. selector: 'accept:',
  309. fn: function (aVisitor){
  310. var self=this;
  311. smalltalk.send(aVisitor, "_visitAssignmentNode_", [self]);
  312. return self;}
  313. ]
  314. }),
  315. smalltalk.AssignmentNode);
  316. smalltalk.addClass('BlockNode', smalltalk.Node, ['parameters'], 'Compiler');
  317. smalltalk.addMethod(
  318. '_parameters',
  319. smalltalk.method({
  320. selector: 'parameters',
  321. fn: function (){
  322. var self=this;
  323. return smalltalk.send(self['@parameters'], "_ifNil_", [(function(){return self['@parameters']=smalltalk.send(smalltalk.Array, "_new", []);})]);
  324. return self;}
  325. ]
  326. }),
  327. smalltalk.BlockNode);
  328. smalltalk.addMethod(
  329. '_parameters_',
  330. smalltalk.method({
  331. selector: 'parameters:',
  332. fn: function (aCollection){
  333. var self=this;
  334. self['@parameters']=aCollection;
  335. return self;}
  336. ]
  337. }),
  338. smalltalk.BlockNode);
  339. smalltalk.addMethod(
  340. '_accept_',
  341. smalltalk.method({
  342. selector: 'accept:',
  343. fn: function (aVisitor){
  344. var self=this;
  345. smalltalk.send(aVisitor, "_visitBlockNode_", [self]);
  346. return self;}
  347. ]
  348. }),
  349. smalltalk.BlockNode);
  350. smalltalk.addClass('SequenceNode', smalltalk.Node, ['temps'], 'Compiler');
  351. smalltalk.addMethod(
  352. '_temps',
  353. smalltalk.method({
  354. selector: 'temps',
  355. fn: function (){
  356. var self=this;
  357. return smalltalk.send(self['@temps'], "_ifNil_", [(function(){return [];})]);
  358. return self;}
  359. ]
  360. }),
  361. smalltalk.SequenceNode);
  362. smalltalk.addMethod(
  363. '_temps_',
  364. smalltalk.method({
  365. selector: 'temps:',
  366. fn: function (aCollection){
  367. var self=this;
  368. self['@temps']=aCollection;
  369. return self;}
  370. ]
  371. }),
  372. smalltalk.SequenceNode);
  373. smalltalk.addMethod(
  374. '_asBlockSequenceNode',
  375. smalltalk.method({
  376. selector: 'asBlockSequenceNode',
  377. fn: function (){
  378. var self=this;
  379. 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, "_new", []));
  380. return self;}
  381. ]
  382. }),
  383. smalltalk.SequenceNode);
  384. smalltalk.addMethod(
  385. '_accept_',
  386. smalltalk.method({
  387. selector: 'accept:',
  388. fn: function (aVisitor){
  389. var self=this;
  390. smalltalk.send(aVisitor, "_visitSequenceNode_", [self]);
  391. return self;}
  392. ]
  393. }),
  394. smalltalk.SequenceNode);
  395. smalltalk.addClass('BlockSequenceNode', smalltalk.SequenceNode, [], 'Compiler');
  396. smalltalk.addMethod(
  397. '_accept_',
  398. smalltalk.method({
  399. selector: 'accept:',
  400. fn: function (aVisitor){
  401. var self=this;
  402. smalltalk.send(aVisitor, "_visitBlockSequenceNode_", [self]);
  403. return self;}
  404. ]
  405. }),
  406. smalltalk.BlockSequenceNode);
  407. smalltalk.addClass('ReturnNode', smalltalk.Node, [], 'Compiler');
  408. smalltalk.addMethod(
  409. '_accept_',
  410. smalltalk.method({
  411. selector: 'accept:',
  412. fn: function (aVisitor){
  413. var self=this;
  414. smalltalk.send(aVisitor, "_visitReturnNode_", [self]);
  415. return self;}
  416. ]
  417. }),
  418. smalltalk.ReturnNode);
  419. smalltalk.addClass('ValueNode', smalltalk.Node, ['value'], 'Compiler');
  420. smalltalk.addMethod(
  421. '_value',
  422. smalltalk.method({
  423. selector: 'value',
  424. fn: function (){
  425. var self=this;
  426. return self['@value'];
  427. return self;}
  428. ]
  429. }),
  430. smalltalk.ValueNode);
  431. smalltalk.addMethod(
  432. '_value_',
  433. smalltalk.method({
  434. selector: 'value:',
  435. fn: function (anObject){
  436. var self=this;
  437. self['@value']=anObject;
  438. return self;}
  439. ]
  440. }),
  441. smalltalk.ValueNode);
  442. smalltalk.addMethod(
  443. '_accept_',
  444. smalltalk.method({
  445. selector: 'accept:',
  446. fn: function (aVisitor){
  447. var self=this;
  448. smalltalk.send(aVisitor, "_visitValueNode_", [self]);
  449. return self;}
  450. ]
  451. }),
  452. smalltalk.ValueNode);
  453. smalltalk.addClass('VariableNode', smalltalk.ValueNode, [], 'Compiler');
  454. smalltalk.addMethod(
  455. '_accept_',
  456. smalltalk.method({
  457. selector: 'accept:',
  458. fn: function (aVisitor){
  459. var self=this;
  460. smalltalk.send(aVisitor, "_visitVariableNode_", [self]);
  461. return self;}
  462. ]
  463. }),
  464. smalltalk.VariableNode);
  465. smalltalk.addClass('ClassReferenceNode', smalltalk.VariableNode, [], 'Compiler');
  466. smalltalk.addMethod(
  467. '_accept_',
  468. smalltalk.method({
  469. selector: 'accept:',
  470. fn: function (aVisitor){
  471. var self=this;
  472. smalltalk.send(aVisitor, "_visitClassReferenceNode_", [self]);
  473. return self;}
  474. ]
  475. }),
  476. smalltalk.ClassReferenceNode);
  477. smalltalk.addClass('JSStatementNode', smalltalk.Node, ['source'], 'Compiler');
  478. smalltalk.addMethod(
  479. '_source',
  480. smalltalk.method({
  481. selector: 'source',
  482. fn: function (){
  483. var self=this;
  484. return smalltalk.send(self['@source'], "_ifNil_", [(function(){return "";})]);
  485. return self;}
  486. ]
  487. }),
  488. smalltalk.JSStatementNode);
  489. smalltalk.addMethod(
  490. '_source_',
  491. smalltalk.method({
  492. selector: 'source:',
  493. fn: function (aString){
  494. var self=this;
  495. self['@source']=aString;
  496. return self;}
  497. ]
  498. }),
  499. smalltalk.JSStatementNode);
  500. smalltalk.addMethod(
  501. '_accept_',
  502. smalltalk.method({
  503. selector: 'accept:',
  504. fn: function (aVisitor){
  505. var self=this;
  506. smalltalk.send(aVisitor, "_visitJSStatementNode_", [self]);
  507. return self;}
  508. ]
  509. }),
  510. smalltalk.JSStatementNode);
  511. smalltalk.addClass('NodeVisitor', smalltalk.Object, [], 'Compiler');
  512. smalltalk.addMethod(
  513. '_visit_',
  514. smalltalk.method({
  515. selector: 'visit:',
  516. fn: function (aNode){
  517. var self=this;
  518. smalltalk.send(aNode, "_accept_", [self]);
  519. return self;}
  520. ]
  521. }),
  522. smalltalk.NodeVisitor);
  523. smalltalk.addMethod(
  524. '_visitNode_',
  525. smalltalk.method({
  526. selector: 'visitNode:',
  527. fn: function (aNode){
  528. var self=this;
  529. return self;}
  530. ]
  531. }),
  532. smalltalk.NodeVisitor);
  533. smalltalk.addMethod(
  534. '_visitMethodNode_',
  535. smalltalk.method({
  536. selector: 'visitMethodNode:',
  537. fn: function (aNode){
  538. var self=this;
  539. smalltalk.send(self, "_visitNode_", [aNode]);
  540. return self;}
  541. ]
  542. }),
  543. smalltalk.NodeVisitor);
  544. smalltalk.addMethod(
  545. '_visitSequenceNode_',
  546. smalltalk.method({
  547. selector: 'visitSequenceNode:',
  548. fn: function (aNode){
  549. var self=this;
  550. smalltalk.send(self, "_visitNode_", [aNode]);
  551. return self;}
  552. ]
  553. }),
  554. smalltalk.NodeVisitor);
  555. smalltalk.addMethod(
  556. '_visitBlockSequenceNode_',
  557. smalltalk.method({
  558. selector: 'visitBlockSequenceNode:',
  559. fn: function (aNode){
  560. var self=this;
  561. smalltalk.send(self, "_visitSequenceNode_", [aNode]);
  562. return self;}
  563. ]
  564. }),
  565. smalltalk.NodeVisitor);
  566. smalltalk.addMethod(
  567. '_visitBlockNode_',
  568. smalltalk.method({
  569. selector: 'visitBlockNode:',
  570. fn: function (aNode){
  571. var self=this;
  572. smalltalk.send(self, "_visitNode_", [aNode]);
  573. return self;}
  574. ]
  575. }),
  576. smalltalk.NodeVisitor);
  577. smalltalk.addMethod(
  578. '_visitReturnNode_',
  579. smalltalk.method({
  580. selector: 'visitReturnNode:',
  581. fn: function (aNode){
  582. var self=this;
  583. smalltalk.send(self, "_visitNode_", [aNode]);
  584. return self;}
  585. ]
  586. }),
  587. smalltalk.NodeVisitor);
  588. smalltalk.addMethod(
  589. '_visitSendNode_',
  590. smalltalk.method({
  591. selector: 'visitSendNode:',
  592. fn: function (aNode){
  593. var self=this;
  594. smalltalk.send(self, "_visitNode_", [aNode]);
  595. return self;}
  596. ]
  597. }),
  598. smalltalk.NodeVisitor);
  599. smalltalk.addMethod(
  600. '_visitCascadeNode_',
  601. smalltalk.method({
  602. selector: 'visitCascadeNode:',
  603. fn: function (aNode){
  604. var self=this;
  605. smalltalk.send(self, "_visitNode_", [aNode]);
  606. return self;}
  607. ]
  608. }),
  609. smalltalk.NodeVisitor);
  610. smalltalk.addMethod(
  611. '_visitValueNode_',
  612. smalltalk.method({
  613. selector: 'visitValueNode:',
  614. fn: function (aNode){
  615. var self=this;
  616. smalltalk.send(self, "_visitNode_", [aNode]);
  617. return self;}
  618. ]
  619. }),
  620. smalltalk.NodeVisitor);
  621. smalltalk.addMethod(
  622. '_visitVariableNode_',
  623. smalltalk.method({
  624. selector: 'visitVariableNode:',
  625. fn: function (aNode){
  626. var self=this;
  627. return self;}
  628. ]
  629. }),
  630. smalltalk.NodeVisitor);
  631. smalltalk.addMethod(
  632. '_visitAssignmentNode_',
  633. smalltalk.method({
  634. selector: 'visitAssignmentNode:',
  635. fn: function (aNode){
  636. var self=this;
  637. smalltalk.send(self, "_visitNode_", [aNode]);
  638. return self;}
  639. ]
  640. }),
  641. smalltalk.NodeVisitor);
  642. smalltalk.addMethod(
  643. '_visitClassReferenceNode_',
  644. smalltalk.method({
  645. selector: 'visitClassReferenceNode:',
  646. fn: function (aNode){
  647. var self=this;
  648. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["smalltalk."]);return smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(aNode, "_value", [])]);})(self);
  649. return self;}
  650. ]
  651. }),
  652. smalltalk.NodeVisitor);
  653. smalltalk.addMethod(
  654. '_visitJSStatementNode_',
  655. smalltalk.method({
  656. selector: 'visitJSStatementNode:',
  657. fn: function (aNode){
  658. var self=this;
  659. (function($rec){smalltalk.send($rec, "_nextPutAll_", [unescape("function%28%29%7B")]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(aNode, "_source", [])]);return smalltalk.send($rec, "_nextPutAll_", [unescape("%7D%29%28%29")]);})(self);
  660. return self;}
  661. ]
  662. }),
  663. smalltalk.NodeVisitor);
  664. smalltalk.addClass('Compiler', smalltalk.NodeVisitor, ['stream', 'nestedBlocks', 'earlyReturn', 'currentClass', 'currentSelector', 'unknownVariables', 'tempVariables', 'messageSends', 'referencedClasses'], 'Compiler');
  665. smalltalk.addMethod(
  666. '_initialize',
  667. smalltalk.method({
  668. selector: 'initialize',
  669. fn: function (){
  670. var self=this;
  671. smalltalk.send(self, "_initialize", [], smalltalk.NodeVisitor);
  672. self['@stream']=smalltalk.send("", "_writeStream", []);
  673. self['@unknownVariables']=[];
  674. self['@tempVariables']=[];
  675. self['@messageSends']=[];
  676. classReferenced=[];
  677. return self;}
  678. ]
  679. }),
  680. smalltalk.Compiler);
  681. smalltalk.addMethod(
  682. '_parser',
  683. smalltalk.method({
  684. selector: 'parser',
  685. fn: function (){
  686. var self=this;
  687. return smalltalk.send(smalltalk.SmalltalkParser, "_new", []);
  688. return self;}
  689. ]
  690. }),
  691. smalltalk.Compiler);
  692. smalltalk.addMethod(
  693. '_currentClass',
  694. smalltalk.method({
  695. selector: 'currentClass',
  696. fn: function (){
  697. var self=this;
  698. return self['@currentClass'];
  699. return self;}
  700. ]
  701. }),
  702. smalltalk.Compiler);
  703. smalltalk.addMethod(
  704. '_currentClass_',
  705. smalltalk.method({
  706. selector: 'currentClass:',
  707. fn: function (aClass){
  708. var self=this;
  709. self['@currentClass']=aClass;
  710. return self;}
  711. ]
  712. }),
  713. smalltalk.Compiler);
  714. smalltalk.addMethod(
  715. '_loadExpression_',
  716. smalltalk.method({
  717. selector: 'loadExpression:',
  718. fn: function (aString){
  719. var self=this;
  720. smalltalk.send(smalltalk.DoIt, "_addCompiledMethod_", [smalltalk.send(self, "_eval_", [smalltalk.send(self, "_compileExpression_", [aString])])]);
  721. return smalltalk.send(smalltalk.send(smalltalk.DoIt, "_new", []), "_doIt", []);
  722. return self;}
  723. ]
  724. }),
  725. smalltalk.Compiler);
  726. smalltalk.addMethod(
  727. '_load_forClass_',
  728. smalltalk.method({
  729. selector: 'load:forClass:',
  730. fn: function (aString, aClass){
  731. var self=this;
  732. var compiled=nil;
  733. compiled=smalltalk.send(self, "_eval_", [smalltalk.send(self, "_compile_forClass_", [aString, aClass])]);
  734. smalltalk.send(self, "_setupClass_", [aClass]);
  735. return compiled;
  736. return self;}
  737. ]
  738. }),
  739. smalltalk.Compiler);
  740. smalltalk.addMethod(
  741. '_compile_forClass_',
  742. smalltalk.method({
  743. selector: 'compile:forClass:',
  744. fn: function (aString, aClass){
  745. var self=this;
  746. smalltalk.send(self, "_currentClass_", [aClass]);
  747. return smalltalk.send(self, "_compile_", [aString]);
  748. return self;}
  749. ]
  750. }),
  751. smalltalk.Compiler);
  752. smalltalk.addMethod(
  753. '_compileExpression_',
  754. smalltalk.method({
  755. selector: 'compileExpression:',
  756. fn: function (aString){
  757. var self=this;
  758. smalltalk.send(self, "_currentClass_", [smalltalk.DoIt]);
  759. return smalltalk.send(self, "_compileNode_", [smalltalk.send(self, "_parseExpression_", [aString])]);
  760. return self;}
  761. ]
  762. }),
  763. smalltalk.Compiler);
  764. smalltalk.addMethod(
  765. '_eval_',
  766. smalltalk.method({
  767. selector: 'eval:',
  768. fn: function (aString){
  769. var self=this;
  770. return eval(aString);
  771. return self;}
  772. ]
  773. }),
  774. smalltalk.Compiler);
  775. smalltalk.addMethod(
  776. '_compile_',
  777. smalltalk.method({
  778. selector: 'compile:',
  779. fn: function (aString){
  780. var self=this;
  781. return smalltalk.send(self, "_compileNode_", [smalltalk.send(self, "_parse_", [aString])]);
  782. return self;}
  783. ]
  784. }),
  785. smalltalk.Compiler);
  786. smalltalk.addMethod(
  787. '_compileNode_',
  788. smalltalk.method({
  789. selector: 'compileNode:',
  790. fn: function (aNode){
  791. var self=this;
  792. self['@stream']=smalltalk.send("", "_writeStream", []);
  793. smalltalk.send(self, "_visit_", [aNode]);
  794. return smalltalk.send(self['@stream'], "_contents", []);
  795. return self;}
  796. ]
  797. }),
  798. smalltalk.Compiler);
  799. smalltalk.addMethod(
  800. '_visit_',
  801. smalltalk.method({
  802. selector: 'visit:',
  803. fn: function (aNode){
  804. var self=this;
  805. smalltalk.send(aNode, "_accept_", [self]);
  806. return self;}
  807. ]
  808. }),
  809. smalltalk.Compiler);
  810. smalltalk.addMethod(
  811. '_visitMethodNode_',
  812. smalltalk.method({
  813. selector: 'visitMethodNode:',
  814. fn: function (aNode){
  815. var self=this;
  816. var str=nil;
  817. var currentSelector=nil;
  818. self['@currentSelector']=smalltalk.send(smalltalk.send(aNode, "_selector", []), "_asSelector", []);
  819. self['@nestedBlocks']=(0);
  820. self['@earlyReturn']=false;
  821. self['@messageSends']=[];
  822. self['@referencedClasses']=[];
  823. self['@unknownVariables']=[];
  824. self['@tempVariables']=[];
  825. (function($rec){smalltalk.send($rec, "_nextPutAll_", [unescape("smalltalk.method%28%7B")]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(unescape("selector%3A%20%22"), "__comma", [smalltalk.send(aNode, "_selector", [])]), "__comma", [unescape("%22%2C")])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  826. (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(unescape("source%3A%20unescape%28%22"), "__comma", [smalltalk.send(smalltalk.send(aNode, "_source", []), "_escaped", [])]), "__comma", [unescape("%22%29%2C")])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  827. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("fn%3A%20function%28")]);
  828. smalltalk.send(smalltalk.send(aNode, "_arguments", []), "_do_separatedBy_", [(function(each){smalltalk.send(self['@tempVariables'], "_add_", [each]);return smalltalk.send(self['@stream'], "_nextPutAll_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%2C%20")]);})]);
  829. (function($rec){smalltalk.send($rec, "_nextPutAll_", [unescape("%29%7B")]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [unescape("var%20self%3Dthis%3B")]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  830. str=self['@stream'];
  831. self['@stream']=smalltalk.send("", "_writeStream", []);
  832. smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){return smalltalk.send(self, "_visit_", [each]);})]);
  833. smalltalk.send(self['@earlyReturn'], "_ifTrue_", [(function(){return smalltalk.send(str, "_nextPutAll_", [unescape("try%7B")]);})]);
  834. smalltalk.send(str, "_nextPutAll_", [smalltalk.send(self['@stream'], "_contents", [])]);
  835. self['@stream']=str;
  836. (function($rec){smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_nextPutAll_", [unescape("return%20self%3B")]);})(self['@stream']);
  837. smalltalk.send(self['@earlyReturn'], "_ifTrue_", [(function(){return (function($rec){smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(unescape("%7D%20catch%28e%29%20%7Bif%28e.name%20%3D%3D%3D%20%27stReturn%27%20%26%26%20e.selector%20%3D%3D%3D%20"), "__comma", [smalltalk.send(self['@currentSelector'], "_printString", [])]), "__comma", [unescape("%29%7Breturn%20e.fn%28%29%7D%20throw%28e%29%7D")])]);})(self['@stream']);})]);
  838. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%7D")]);
  839. (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(unescape("%2C"), "__comma", [smalltalk.send(smalltalk.String, "_lf", [])]), "__comma", ["messageSends: "])]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(self['@messageSends'], "_asJavascript", []), "__comma", [unescape("%2C")])]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_nextPutAll_", [unescape("referencedClasses%3A%20%5B")]);})(self['@stream']);
  840. smalltalk.send(self['@referencedClasses'], "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%2C")]);})]);
  841. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%5D")]);
  842. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%7D%29")]);
  843. return self;}
  844. ]
  845. }),
  846. smalltalk.Compiler);
  847. smalltalk.addMethod(
  848. '_visitBlockNode_',
  849. smalltalk.method({
  850. selector: 'visitBlockNode:',
  851. fn: function (aNode){
  852. var self=this;
  853. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%28function%28")]);
  854. smalltalk.send(smalltalk.send(aNode, "_parameters", []), "_do_separatedBy_", [(function(each){smalltalk.send(self['@tempVariables'], "_add_", [each]);return smalltalk.send(self['@stream'], "_nextPutAll_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%2C%20")]);})]);
  855. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%29%7B")]);
  856. smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){return smalltalk.send(self, "_visit_", [each]);})]);
  857. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%7D%29")]);
  858. return self;}
  859. ]
  860. }),
  861. smalltalk.Compiler);
  862. smalltalk.addMethod(
  863. '_visitSequenceNode_',
  864. smalltalk.method({
  865. selector: 'visitSequenceNode:',
  866. fn: function (aNode){
  867. var self=this;
  868. smalltalk.send(smalltalk.send(aNode, "_temps", []), "_do_", [(function(each){smalltalk.send(self['@tempVariables'], "_add_", [each]);return (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("var ", "__comma", [each]), "__comma", [unescape("%3Dnil%3B")])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);})]);
  869. smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_separatedBy_", [(function(each){smalltalk.send(self, "_visit_", [each]);return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%3B")]);}), (function(){return smalltalk.send(self['@stream'], "_lf", []);})]);
  870. return self;}
  871. ]
  872. }),
  873. smalltalk.Compiler);
  874. smalltalk.addMethod(
  875. '_visitBlockSequenceNode_',
  876. smalltalk.method({
  877. selector: 'visitBlockSequenceNode:',
  878. fn: function (aNode){
  879. var self=this;
  880. var index=nil;
  881. self['@nestedBlocks']=smalltalk.send(self['@nestedBlocks'], "__plus", [(1)]);
  882. smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_isEmpty", []), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("return%20nil%3B")]);}), (function(){smalltalk.send(smalltalk.send(aNode, "_temps", []), "_do_", [(function(each){smalltalk.send(self['@tempVariables'], "_add_", [each]);return (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("var ", "__comma", [each]), "__comma", [unescape("%3Dnil%3B")])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);})]);index=(0);return smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){index=smalltalk.send(index, "__plus", [(1)]);smalltalk.send(smalltalk.send(index, "__eq", [smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_size", [])]), "_ifTrue_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["return "]);})]);smalltalk.send(self, "_visit_", [each]);return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%3B")]);})]);})]);
  883. self['@nestedBlocks']=smalltalk.send(self['@nestedBlocks'], "__minus", [(1)]);
  884. return self;}
  885. ]
  886. }),
  887. smalltalk.Compiler);
  888. smalltalk.addMethod(
  889. '_visitReturnNode_',
  890. smalltalk.method({
  891. selector: 'visitReturnNode:',
  892. fn: function (aNode){
  893. var self=this;
  894. smalltalk.send(smalltalk.send(self['@nestedBlocks'], "__gt", [(0)]), "_ifTrue_", [(function(){return self['@earlyReturn']=true;})]);
  895. smalltalk.send(self['@earlyReturn'], "_ifTrue_ifFalse_", [(function(){return (function($rec){smalltalk.send($rec, "_nextPutAll_", [unescape("%28function%28%29%7Bthrow%28")]);smalltalk.send($rec, "_nextPutAll_", [unescape("%7Bname%3A%20%27stReturn%27%2C%20selector%3A%20")]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self['@currentSelector'], "_printString", [])]);return smalltalk.send($rec, "_nextPutAll_", [unescape("%2C%20fn%3A%20function%28%29%7Breturn%20")]);})(self['@stream']);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["return "]);})]);
  896. smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){return smalltalk.send(self, "_visit_", [each]);})]);
  897. smalltalk.send(self['@earlyReturn'], "_ifTrue_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%7D%7D%29%7D%29%28%29")]);})]);
  898. return self;}
  899. ]
  900. }),
  901. smalltalk.Compiler);
  902. smalltalk.addMethod(
  903. '_visitSendNode_',
  904. smalltalk.method({
  905. selector: 'visitSendNode:',
  906. fn: function (aNode){
  907. var self=this;
  908. var str=nil;
  909. var receiver=nil;
  910. var superSend=nil;
  911. str=self['@stream'];
  912. smalltalk.send(smalltalk.send(self['@messageSends'], "_includes_", [smalltalk.send(aNode, "_selector", [])]), "_ifFalse_", [(function(){return smalltalk.send(self['@messageSends'], "_add_", [smalltalk.send(aNode, "_selector", [])]);})]);
  913. self['@stream']=smalltalk.send("", "_writeStream", []);
  914. smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_receiver", [])]);
  915. superSend=smalltalk.send(smalltalk.send(self['@stream'], "_contents", []), "__eq", ["super"]);
  916. receiver=smalltalk.send(superSend, "_ifTrue_ifFalse_", [(function(){return "self";}), (function(){return smalltalk.send(self['@stream'], "_contents", []);})]);
  917. smalltalk.send(str, "_nextPutAll_", [unescape("smalltalk.send%28")]);
  918. smalltalk.send(str, "_nextPutAll_", [receiver]);
  919. self['@stream']=str;
  920. smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(unescape("%2C%20%22"), "__comma", [smalltalk.send(smalltalk.send(aNode, "_selector", []), "_asSelector", [])]), "__comma", [unescape("%22%2C%20%5B")])]);
  921. smalltalk.send(smalltalk.send(aNode, "_arguments", []), "_do_separatedBy_", [(function(each){return smalltalk.send(self, "_visit_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%2C%20")]);})]);
  922. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%5D")]);
  923. smalltalk.send(superSend, "_ifTrue_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(unescape("%2C%20smalltalk."), "__comma", [smalltalk.send(self, "_classNameFor_", [smalltalk.send(smalltalk.send(self, "_currentClass", []), "_superclass", [])])])]);})]);
  924. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%29")]);
  925. return self;}
  926. ]
  927. }),
  928. smalltalk.Compiler);
  929. smalltalk.addMethod(
  930. '_visitCascadeNode_',
  931. smalltalk.method({
  932. selector: 'visitCascadeNode:',
  933. fn: function (aNode){
  934. var self=this;
  935. var index=nil;
  936. index=(0);
  937. smalltalk.send(smalltalk.send(self['@tempVariables'], "_includes_", ["$rec"]), "_ifFalse_", [(function(){return smalltalk.send(self['@tempVariables'], "_add_", ["$rec"]);})]);
  938. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%28function%28%24rec%29%7B")]);
  939. smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){index=smalltalk.send(index, "__plus", [(1)]);smalltalk.send(smalltalk.send(index, "__eq", [smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_size", [])]), "_ifTrue_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", ["return "]);})]);smalltalk.send(each, "_receiver_", [smalltalk.send(smalltalk.send(smalltalk.VariableNode, "_new", []), "_value_", ["$rec"])]);smalltalk.send(self, "_visit_", [each]);return smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%3B")]);})]);
  940. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%7D%29%28")]);
  941. smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_receiver", [])]);
  942. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%29")]);
  943. return self;}
  944. ]
  945. }),
  946. smalltalk.Compiler);
  947. smalltalk.addMethod(
  948. '_visitValueNode_',
  949. smalltalk.method({
  950. selector: 'visitValueNode:',
  951. fn: function (aNode){
  952. var self=this;
  953. smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(aNode, "_value", []), "_asJavascript", [])]);
  954. return self;}
  955. ]
  956. }),
  957. smalltalk.Compiler);
  958. smalltalk.addMethod(
  959. '_visitAssignmentNode_',
  960. smalltalk.method({
  961. selector: 'visitAssignmentNode:',
  962. fn: function (aNode){
  963. var self=this;
  964. smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_left", [])]);
  965. smalltalk.send(self['@stream'], "_nextPutAll_", [unescape("%3D")]);
  966. smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_right", [])]);
  967. return self;}
  968. ]
  969. }),
  970. smalltalk.Compiler);
  971. smalltalk.addMethod(
  972. '_visitClassReferenceNode_',
  973. smalltalk.method({
  974. selector: 'visitClassReferenceNode:',
  975. fn: function (aNode){
  976. var self=this;
  977. var klass=nil;
  978. klass=smalltalk.send("smalltalk.", "__comma", [smalltalk.send(aNode, "_value", [])]);
  979. smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.Smalltalk, "_current", []), "_at_", [smalltalk.send(aNode, "_value", [])]), "_isClass", []), "_ifTrue_", [(function(){return smalltalk.send(smalltalk.send(self['@referencedClasses'], "_includes_", [klass]), "_ifFalse_", [(function(){return smalltalk.send(self['@referencedClasses'], "_add_", [klass]);})]);})]);
  980. smalltalk.send(self['@stream'], "_nextPutAll_", [klass]);
  981. return self;}
  982. ]
  983. }),
  984. smalltalk.Compiler);
  985. smalltalk.addMethod(
  986. '_visitVariableNode_',
  987. smalltalk.method({
  988. selector: 'visitVariableNode:',
  989. fn: function (aNode){
  990. var self=this;
  991. smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_currentClass", []), "_allInstanceVariableNames", []), "_includes_", [smalltalk.send(aNode, "_value", [])]), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(unescape("self%5B%27@"), "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", [unescape("%27%5D")])]);}), (function(){smalltalk.send(smalltalk.send(smalltalk.send(self, "_knownVariables", []), "_includes_", [smalltalk.send(aNode, "_value", [])]), "_ifFalse_", [(function(){return smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);})]);return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(aNode, "_value", [])]);})]);
  992. return self;}
  993. ]
  994. }),
  995. smalltalk.Compiler);
  996. smalltalk.addMethod(
  997. '_visitJSStatementNode_',
  998. smalltalk.method({
  999. selector: 'visitJSStatementNode:',
  1000. fn: function (aNode){
  1001. var self=this;
  1002. smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(aNode, "_source", []), "_replace_with_", [unescape("%3E%3E"), unescape("%3E")])]);
  1003. return self;}
  1004. ]
  1005. }),
  1006. smalltalk.Compiler);
  1007. smalltalk.addMethod(
  1008. '_parse_',
  1009. smalltalk.method({
  1010. selector: 'parse:',
  1011. fn: function (aString){
  1012. var self=this;
  1013. return smalltalk.send(smalltalk.send(self, "_parser", []), "_parse_", [smalltalk.send(aString, "_readStream", [])]);
  1014. return self;}
  1015. ]
  1016. }),
  1017. smalltalk.Compiler);
  1018. smalltalk.addMethod(
  1019. '_parseExpression_',
  1020. smalltalk.method({
  1021. selector: 'parseExpression:',
  1022. fn: function (aString){
  1023. var self=this;
  1024. return smalltalk.send(self, "_parse_", [smalltalk.send(smalltalk.send(unescape("doIt%20%5E%5B"), "__comma", [aString]), "__comma", [unescape("%5D%20value")])]);
  1025. return self;}
  1026. ]
  1027. }),
  1028. smalltalk.Compiler);
  1029. smalltalk.addMethod(
  1030. '_unknownVariables',
  1031. smalltalk.method({
  1032. selector: 'unknownVariables',
  1033. fn: function (){
  1034. var self=this;
  1035. return smalltalk.send(self['@unknownVariables'], "_copy", []);
  1036. return self;}
  1037. ]
  1038. }),
  1039. smalltalk.Compiler);
  1040. smalltalk.addMethod(
  1041. '_pseudoVariables',
  1042. smalltalk.method({
  1043. selector: 'pseudoVariables',
  1044. fn: function (){
  1045. var self=this;
  1046. return ["self", "super", "true", "false", "nil", "thisContext"];
  1047. return self;}
  1048. ]
  1049. }),
  1050. smalltalk.Compiler);
  1051. smalltalk.addMethod(
  1052. '_tempVariables',
  1053. smalltalk.method({
  1054. selector: 'tempVariables',
  1055. fn: function (){
  1056. var self=this;
  1057. return smalltalk.send(self['@tempVariables'], "_copy", []);
  1058. return self;}
  1059. ]
  1060. }),
  1061. smalltalk.Compiler);
  1062. smalltalk.addMethod(
  1063. '_knownVariables',
  1064. smalltalk.method({
  1065. selector: 'knownVariables',
  1066. fn: function (){
  1067. var self=this;
  1068. return (function($rec){smalltalk.send($rec, "_addAll_", [smalltalk.send(self, "_tempVariables", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_pseudoVariables", []));
  1069. return self;}
  1070. ]
  1071. }),
  1072. smalltalk.Compiler);
  1073. smalltalk.addMethod(
  1074. '_recompile_',
  1075. smalltalk.method({
  1076. selector: 'recompile:',
  1077. fn: function (aClass){
  1078. var self=this;
  1079. smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_do_", [(function(each){var method=nil;
  1080. method=smalltalk.send(self, "_load_forClass_", [smalltalk.send(each, "_source", []), aClass]);smalltalk.send(method, "_category_", [smalltalk.send(each, "_category", [])]);return smalltalk.send(aClass, "_addCompiledMethod_", [method]);})]);
  1081. smalltalk.send(smalltalk.send(aClass, "_isMetaclass", []), "_ifFalse_", [(function(){return smalltalk.send(self, "_recompile_", [smalltalk.send(aClass, "_class", [])]);})]);
  1082. return self;}
  1083. ]
  1084. }),
  1085. smalltalk.Compiler);
  1086. smalltalk.addMethod(
  1087. '_recompileAll',
  1088. smalltalk.method({
  1089. selector: 'recompileAll',
  1090. fn: function (){
  1091. var self=this;
  1092. smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.Smalltalk, "_current", []), "_classes", []), "_do_", [(function(each){(function($rec){smalltalk.send($rec, "_show_", [each]);return smalltalk.send($rec, "_cr", []);})(smalltalk.Transcript);return smalltalk.send((function(){return smalltalk.send(self, "_recompile_", [each]);}), "_valueWithTimeout_", [(100)]);})]);
  1093. return self;}
  1094. ]
  1095. }),
  1096. smalltalk.Compiler);
  1097. smalltalk.addMethod(
  1098. '_classNameFor_',
  1099. smalltalk.method({
  1100. selector: 'classNameFor:',
  1101. fn: function (aClass){
  1102. var self=this;
  1103. return smalltalk.send(smalltalk.send(aClass, "_isMetaclass", []), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_instanceClass", []), "_name", []), "__comma", [".klass"]);}), (function(){return smalltalk.send(smalltalk.send(aClass, "_isNil", []), "_ifTrue_ifFalse_", [(function(){return "nil";}), (function(){return smalltalk.send(aClass, "_name", []);})]);})]);
  1104. return self;}
  1105. ]
  1106. }),
  1107. smalltalk.Compiler);
  1108. smalltalk.addMethod(
  1109. '_visitFailure_',
  1110. smalltalk.method({
  1111. selector: 'visitFailure:',
  1112. fn: function (aFailure){
  1113. var self=this;
  1114. smalltalk.send(self, "_error_", [smalltalk.send(aFailure, "_asString", [])]);
  1115. return self;}
  1116. ]
  1117. }),
  1118. smalltalk.Compiler);
  1119. smalltalk.addMethod(
  1120. '_setupClass_',
  1121. smalltalk.method({
  1122. selector: 'setupClass:',
  1123. fn: function (aClass){
  1124. var self=this;
  1125. smalltalk.init(aClass);
  1126. return self;}
  1127. ]
  1128. }),
  1129. smalltalk.Compiler);
  1130. smalltalk.addMethod(
  1131. '_recompile_',
  1132. smalltalk.method({
  1133. selector: 'recompile:',
  1134. fn: function (aClass){
  1135. var self=this;
  1136. smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_do_", [(function(each){var method=nil;
  1137. method=smalltalk.send(smalltalk.send(self, "_new", []), "_load_forClass_", [smalltalk.send(each, "_source", []), aClass]);smalltalk.send(method, "_category_", [smalltalk.send(each, "_category", [])]);return smalltalk.send(aClass, "_addCompiledMethod_", [method]);})]);
  1138. smalltalk.send(smalltalk.send(aClass, "_isMetaclass", []), "_ifFalse_", [(function(){return smalltalk.send(self, "_recompile_", [smalltalk.send(aClass, "_class", [])]);})]);
  1139. return self;}
  1140. ]
  1141. }),
  1142. smalltalk.Compiler.klass);
  1143. smalltalk.addMethod(
  1144. '_recompileAll',
  1145. smalltalk.method({
  1146. selector: 'recompileAll',
  1147. fn: function (){
  1148. var self=this;
  1149. smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.Smalltalk, "_current", []), "_classes", []), "_do_", [(function(each){return smalltalk.send(self, "_recompile_", [each]);})]);
  1150. return self;}
  1151. ]
  1152. }),
  1153. smalltalk.Compiler.klass);
  1154. smalltalk.addClass('DoIt', smalltalk.Object, [], 'Compiler');
  1155. smalltalk.addMethod(
  1156. '_doIt',
  1157. smalltalk.method({
  1158. selector: 'doIt',
  1159. fn: function (){
  1160. var self=this;
  1161. return smalltalk.send((function(){return smalltalk.send(smalltalk.send(smalltalk.StrippedExporter, "_new", []), "_exportCategory_", ["IDE"]);}), "_value", []);
  1162. return self;}
  1163. ]
  1164. }),
  1165. smalltalk.DoIt);