Kernel-Exceptions.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841
  1. define("amber_core/Kernel-Exceptions", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){
  2. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. $core.addPackage('Kernel-Exceptions');
  4. $core.packages["Kernel-Exceptions"].innerEval = function (expr) { return eval(expr); };
  5. $core.packages["Kernel-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
  6. $core.addClass('Error', $globals.Object, ['messageText'], 'Kernel-Exceptions');
  7. //>>excludeStart("ide", pragmas.excludeIdeData);
  8. $globals.Error.comment="From the ANSI standard:\x0a\x0aThis protocol describes the behavior of instances of class `Error`.\x0aThese are used to represent error conditions that prevent the normal continuation of processing.\x0aActual error exceptions used by an application may be subclasses of this class.\x0aAs `Error` is explicitly specified to be subclassable, conforming implementations must implement its behavior in a non-fragile manner.";
  9. //>>excludeEnd("ide");
  10. $core.addMethod(
  11. $core.method({
  12. selector: "beHandled",
  13. protocol: 'accessing',
  14. fn: function (){
  15. var self=this;
  16. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17. return $core.withContext(function($ctx1) {
  18. //>>excludeEnd("ctx");
  19. self.amberHandled = true;
  20. return self;
  21. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22. }, function($ctx1) {$ctx1.fill(self,"beHandled",{},$globals.Error)});
  23. //>>excludeEnd("ctx");
  24. },
  25. //>>excludeStart("ide", pragmas.excludeIdeData);
  26. args: [],
  27. source: "beHandled\x0a\x09<self.amberHandled = true>",
  28. referencedClasses: [],
  29. //>>excludeEnd("ide");
  30. messageSends: []
  31. }),
  32. $globals.Error);
  33. $core.addMethod(
  34. $core.method({
  35. selector: "beUnhandled",
  36. protocol: 'accessing',
  37. fn: function (){
  38. var self=this;
  39. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40. return $core.withContext(function($ctx1) {
  41. //>>excludeEnd("ctx");
  42. self.amberHandled = false;
  43. return self;
  44. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45. }, function($ctx1) {$ctx1.fill(self,"beUnhandled",{},$globals.Error)});
  46. //>>excludeEnd("ctx");
  47. },
  48. //>>excludeStart("ide", pragmas.excludeIdeData);
  49. args: [],
  50. source: "beUnhandled\x0a\x09<self.amberHandled = false>",
  51. referencedClasses: [],
  52. //>>excludeEnd("ide");
  53. messageSends: []
  54. }),
  55. $globals.Error);
  56. $core.addMethod(
  57. $core.method({
  58. selector: "context",
  59. protocol: 'accessing',
  60. fn: function (){
  61. var self=this;
  62. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63. return $core.withContext(function($ctx1) {
  64. //>>excludeEnd("ctx");
  65. return self.context;
  66. return self;
  67. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68. }, function($ctx1) {$ctx1.fill(self,"context",{},$globals.Error)});
  69. //>>excludeEnd("ctx");
  70. },
  71. //>>excludeStart("ide", pragmas.excludeIdeData);
  72. args: [],
  73. source: "context\x0a\x09<return self.context>",
  74. referencedClasses: [],
  75. //>>excludeEnd("ide");
  76. messageSends: []
  77. }),
  78. $globals.Error);
  79. $core.addMethod(
  80. $core.method({
  81. selector: "initialize",
  82. protocol: 'initialization',
  83. fn: function (){
  84. var self=this;
  85. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86. return $core.withContext(function($ctx1) {
  87. //>>excludeEnd("ctx");
  88. self._messageText_("Errorclass: ".__comma($recv(self._class())._name()));
  89. return self;
  90. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Error)});
  92. //>>excludeEnd("ctx");
  93. },
  94. //>>excludeStart("ide", pragmas.excludeIdeData);
  95. args: [],
  96. source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
  97. referencedClasses: [],
  98. //>>excludeEnd("ide");
  99. messageSends: ["messageText:", ",", "name", "class"]
  100. }),
  101. $globals.Error);
  102. $core.addMethod(
  103. $core.method({
  104. selector: "isSmalltalkError",
  105. protocol: 'testing',
  106. fn: function (){
  107. var self=this;
  108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  109. return $core.withContext(function($ctx1) {
  110. //>>excludeEnd("ctx");
  111. return self.smalltalkError === true;
  112. return self;
  113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  114. }, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},$globals.Error)});
  115. //>>excludeEnd("ctx");
  116. },
  117. //>>excludeStart("ide", pragmas.excludeIdeData);
  118. args: [],
  119. source: "isSmalltalkError\x0a\x09<return self.smalltalkError === true>",
  120. referencedClasses: [],
  121. //>>excludeEnd("ide");
  122. messageSends: []
  123. }),
  124. $globals.Error);
  125. $core.addMethod(
  126. $core.method({
  127. selector: "jsStack",
  128. protocol: 'accessing',
  129. fn: function (){
  130. var self=this;
  131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  132. return $core.withContext(function($ctx1) {
  133. //>>excludeEnd("ctx");
  134. return self.stack;
  135. return self;
  136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  137. }, function($ctx1) {$ctx1.fill(self,"jsStack",{},$globals.Error)});
  138. //>>excludeEnd("ctx");
  139. },
  140. //>>excludeStart("ide", pragmas.excludeIdeData);
  141. args: [],
  142. source: "jsStack\x0a\x09<return self.stack>",
  143. referencedClasses: [],
  144. //>>excludeEnd("ide");
  145. messageSends: []
  146. }),
  147. $globals.Error);
  148. $core.addMethod(
  149. $core.method({
  150. selector: "messageText",
  151. protocol: 'accessing',
  152. fn: function (){
  153. var self=this;
  154. var $1;
  155. $1=self["@messageText"];
  156. return $1;
  157. },
  158. //>>excludeStart("ide", pragmas.excludeIdeData);
  159. args: [],
  160. source: "messageText\x0a\x09^ messageText",
  161. referencedClasses: [],
  162. //>>excludeEnd("ide");
  163. messageSends: []
  164. }),
  165. $globals.Error);
  166. $core.addMethod(
  167. $core.method({
  168. selector: "messageText:",
  169. protocol: 'accessing',
  170. fn: function (aString){
  171. var self=this;
  172. self["@messageText"]=aString;
  173. return self;
  174. },
  175. //>>excludeStart("ide", pragmas.excludeIdeData);
  176. args: ["aString"],
  177. source: "messageText: aString\x0a\x09messageText := aString",
  178. referencedClasses: [],
  179. //>>excludeEnd("ide");
  180. messageSends: []
  181. }),
  182. $globals.Error);
  183. $core.addMethod(
  184. $core.method({
  185. selector: "resignal",
  186. protocol: 'signaling',
  187. fn: function (){
  188. var self=this;
  189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  190. return $core.withContext(function($ctx1) {
  191. //>>excludeEnd("ctx");
  192. self.amberHandled = false;
  193. throw(self);
  194. ;
  195. return self;
  196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  197. }, function($ctx1) {$ctx1.fill(self,"resignal",{},$globals.Error)});
  198. //>>excludeEnd("ctx");
  199. },
  200. //>>excludeStart("ide", pragmas.excludeIdeData);
  201. args: [],
  202. source: "resignal\x0a\x09\x22Resignal the receiver without changing its exception context\x22\x0a\x09\x0a\x09<\x0a\x09\x09self.amberHandled = false;\x0a\x09\x09throw(self);\x0a\x09>",
  203. referencedClasses: [],
  204. //>>excludeEnd("ide");
  205. messageSends: []
  206. }),
  207. $globals.Error);
  208. $core.addMethod(
  209. $core.method({
  210. selector: "signal",
  211. protocol: 'signaling',
  212. fn: function (){
  213. var self=this;
  214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  215. return $core.withContext(function($ctx1) {
  216. //>>excludeEnd("ctx");
  217. self.amberHandled = false;
  218. self.context = $core.getThisContext();
  219. self.smalltalkError = true;
  220. throw self;
  221. ;
  222. return self;
  223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  224. }, function($ctx1) {$ctx1.fill(self,"signal",{},$globals.Error)});
  225. //>>excludeEnd("ctx");
  226. },
  227. //>>excludeStart("ide", pragmas.excludeIdeData);
  228. args: [],
  229. source: "signal\x0a\x09<\x0a\x09\x09self.amberHandled = false;\x0a\x09\x09self.context = $core.getThisContext(); \x0a\x09\x09self.smalltalkError = true;\x0a\x09\x09throw self;\x0a\x09>",
  230. referencedClasses: [],
  231. //>>excludeEnd("ide");
  232. messageSends: []
  233. }),
  234. $globals.Error);
  235. $core.addMethod(
  236. $core.method({
  237. selector: "signal:",
  238. protocol: 'signaling',
  239. fn: function (aString){
  240. var self=this;
  241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  242. return $core.withContext(function($ctx1) {
  243. //>>excludeEnd("ctx");
  244. self._messageText_(aString);
  245. self._signal();
  246. return self;
  247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  248. }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},$globals.Error)});
  249. //>>excludeEnd("ctx");
  250. },
  251. //>>excludeStart("ide", pragmas.excludeIdeData);
  252. args: ["aString"],
  253. source: "signal: aString\x0a\x09self messageText: aString.\x0a\x09self signal",
  254. referencedClasses: [],
  255. //>>excludeEnd("ide");
  256. messageSends: ["messageText:", "signal"]
  257. }),
  258. $globals.Error);
  259. $core.addMethod(
  260. $core.method({
  261. selector: "signalerContext",
  262. protocol: 'accessing',
  263. fn: function (){
  264. var self=this;
  265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  266. return $core.withContext(function($ctx1) {
  267. //>>excludeEnd("ctx");
  268. var $1;
  269. $1=self._signalerContextFrom_(self._context());
  270. return $1;
  271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  272. }, function($ctx1) {$ctx1.fill(self,"signalerContext",{},$globals.Error)});
  273. //>>excludeEnd("ctx");
  274. },
  275. //>>excludeStart("ide", pragmas.excludeIdeData);
  276. args: [],
  277. source: "signalerContext\x0a\x09^ self signalerContextFrom: self context",
  278. referencedClasses: [],
  279. //>>excludeEnd("ide");
  280. messageSends: ["signalerContextFrom:", "context"]
  281. }),
  282. $globals.Error);
  283. $core.addMethod(
  284. $core.method({
  285. selector: "signalerContextFrom:",
  286. protocol: 'accessing',
  287. fn: function (aContext){
  288. var self=this;
  289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  290. return $core.withContext(function($ctx1) {
  291. //>>excludeEnd("ctx");
  292. var $4,$3,$2,$1;
  293. $1=$recv(aContext)._findContextSuchThat_((function(context){
  294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  295. return $core.withContext(function($ctx2) {
  296. //>>excludeEnd("ctx");
  297. $4=$recv(context)._receiver();
  298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  299. $ctx2.sendIdx["receiver"]=1;
  300. //>>excludeEnd("ctx");
  301. $3=$recv($4).__eq_eq(self);
  302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  303. $ctx2.sendIdx["=="]=1;
  304. //>>excludeEnd("ctx");
  305. $2=$recv($3)._or_((function(){
  306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  307. return $core.withContext(function($ctx3) {
  308. //>>excludeEnd("ctx");
  309. return $recv($recv(context)._receiver()).__eq_eq(self._class());
  310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  311. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  312. //>>excludeEnd("ctx");
  313. }));
  314. return $recv($2)._not();
  315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  316. }, function($ctx2) {$ctx2.fillBlock({context:context},$ctx1,1)});
  317. //>>excludeEnd("ctx");
  318. }));
  319. return $1;
  320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  321. }, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext},$globals.Error)});
  322. //>>excludeEnd("ctx");
  323. },
  324. //>>excludeStart("ide", pragmas.excludeIdeData);
  325. args: ["aContext"],
  326. source: "signalerContextFrom: aContext\x0a\x09\x22Find the first sender of signal(:), the first context which is neither \x0a\x09for an instance method nor for a class side method of Exception (or subclass).\x0a\x09This will make sure that the same context is found for both, `Error signal` \x0a\x09and `Error new signal`\x22\x0a\x0a\x09^ aContext findContextSuchThat: [ :context |\x0a\x09\x09(context receiver == self \x0a\x09\x09or: [ context receiver == self class ]) not ]",
  327. referencedClasses: [],
  328. //>>excludeEnd("ide");
  329. messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class"]
  330. }),
  331. $globals.Error);
  332. $core.addMethod(
  333. $core.method({
  334. selector: "wasHandled",
  335. protocol: 'testing',
  336. fn: function (){
  337. var self=this;
  338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  339. return $core.withContext(function($ctx1) {
  340. //>>excludeEnd("ctx");
  341. return self.amberHandled || false;
  342. return self;
  343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  344. }, function($ctx1) {$ctx1.fill(self,"wasHandled",{},$globals.Error)});
  345. //>>excludeEnd("ctx");
  346. },
  347. //>>excludeStart("ide", pragmas.excludeIdeData);
  348. args: [],
  349. source: "wasHandled\x0a\x09<return self.amberHandled || false>",
  350. referencedClasses: [],
  351. //>>excludeEnd("ide");
  352. messageSends: []
  353. }),
  354. $globals.Error);
  355. $core.addMethod(
  356. $core.method({
  357. selector: "classTag",
  358. protocol: 'accessing',
  359. fn: function (){
  360. var self=this;
  361. return "exception";
  362. },
  363. //>>excludeStart("ide", pragmas.excludeIdeData);
  364. args: [],
  365. source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'exception'",
  366. referencedClasses: [],
  367. //>>excludeEnd("ide");
  368. messageSends: []
  369. }),
  370. $globals.Error.klass);
  371. $core.addMethod(
  372. $core.method({
  373. selector: "signal",
  374. protocol: 'instance creation',
  375. fn: function (){
  376. var self=this;
  377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  378. return $core.withContext(function($ctx1) {
  379. //>>excludeEnd("ctx");
  380. var $1;
  381. $1=$recv(self._new())._signal();
  382. return $1;
  383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  384. }, function($ctx1) {$ctx1.fill(self,"signal",{},$globals.Error.klass)});
  385. //>>excludeEnd("ctx");
  386. },
  387. //>>excludeStart("ide", pragmas.excludeIdeData);
  388. args: [],
  389. source: "signal\x0a\x09^ self new signal",
  390. referencedClasses: [],
  391. //>>excludeEnd("ide");
  392. messageSends: ["signal", "new"]
  393. }),
  394. $globals.Error.klass);
  395. $core.addMethod(
  396. $core.method({
  397. selector: "signal:",
  398. protocol: 'instance creation',
  399. fn: function (aString){
  400. var self=this;
  401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  402. return $core.withContext(function($ctx1) {
  403. //>>excludeEnd("ctx");
  404. var $1;
  405. $1=$recv(self._new())._signal_(aString);
  406. return $1;
  407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  408. }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},$globals.Error.klass)});
  409. //>>excludeEnd("ctx");
  410. },
  411. //>>excludeStart("ide", pragmas.excludeIdeData);
  412. args: ["aString"],
  413. source: "signal: aString\x0a\x09^ self new\x0a\x09\x09signal: aString",
  414. referencedClasses: [],
  415. //>>excludeEnd("ide");
  416. messageSends: ["signal:", "new"]
  417. }),
  418. $globals.Error.klass);
  419. $core.addClass('Halt', $globals.Error, [], 'Kernel-Exceptions');
  420. //>>excludeStart("ide", pragmas.excludeIdeData);
  421. $globals.Halt.comment="I am provided to support `Object>>#halt`.";
  422. //>>excludeEnd("ide");
  423. $core.addMethod(
  424. $core.method({
  425. selector: "messageText",
  426. protocol: 'accessing',
  427. fn: function (){
  428. var self=this;
  429. return "Halt encountered";
  430. },
  431. //>>excludeStart("ide", pragmas.excludeIdeData);
  432. args: [],
  433. source: "messageText\x0a\x09^ 'Halt encountered'",
  434. referencedClasses: [],
  435. //>>excludeEnd("ide");
  436. messageSends: []
  437. }),
  438. $globals.Halt);
  439. $core.addMethod(
  440. $core.method({
  441. selector: "signalerContextFrom:",
  442. protocol: 'accessing',
  443. fn: function (aContext){
  444. var self=this;
  445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  446. return $core.withContext(function($ctx1) {
  447. //>>excludeEnd("ctx");
  448. var $4,$3,$2,$1;
  449. $1=$recv(aContext)._findContextSuchThat_((function(context){
  450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  451. return $core.withContext(function($ctx2) {
  452. //>>excludeEnd("ctx");
  453. $4=$recv(context)._receiver();
  454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  455. $ctx2.sendIdx["receiver"]=1;
  456. //>>excludeEnd("ctx");
  457. $3=$recv($4).__eq_eq(self);
  458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  459. $ctx2.sendIdx["=="]=1;
  460. //>>excludeEnd("ctx");
  461. $2=$recv($3)._or_((function(){
  462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  463. return $core.withContext(function($ctx3) {
  464. //>>excludeEnd("ctx");
  465. return $recv($recv($recv(context)._receiver()).__eq_eq(self._class()))._or_((function(){
  466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  467. return $core.withContext(function($ctx4) {
  468. //>>excludeEnd("ctx");
  469. return $recv($recv($recv(context)._method())._selector()).__eq("halt");
  470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  471. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)});
  472. //>>excludeEnd("ctx");
  473. }));
  474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  475. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  476. //>>excludeEnd("ctx");
  477. }));
  478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  479. $ctx2.sendIdx["or:"]=1;
  480. //>>excludeEnd("ctx");
  481. return $recv($2)._not();
  482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  483. }, function($ctx2) {$ctx2.fillBlock({context:context},$ctx1,1)});
  484. //>>excludeEnd("ctx");
  485. }));
  486. return $1;
  487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  488. }, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext},$globals.Halt)});
  489. //>>excludeEnd("ctx");
  490. },
  491. //>>excludeStart("ide", pragmas.excludeIdeData);
  492. args: ["aContext"],
  493. source: "signalerContextFrom: aContext\x0a\x09\x22specialized version to find the proper context to open the debugger on.\x0a\x09This will find the first context whose method is no longer on `Halt` or \x0a\x09`Halt class` nor is `#halt` method itself.\x22\x0a\x09\x0a\x09^ aContext findContextSuchThat: [ :context |\x0a\x09\x09(context receiver == self \x0a\x09\x09or: [ (context receiver == self class) \x0a\x09\x09or: [ context method selector = #halt ]]) not ]",
  494. referencedClasses: [],
  495. //>>excludeEnd("ide");
  496. messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class", "=", "selector", "method"]
  497. }),
  498. $globals.Halt);
  499. $core.addClass('JavaScriptException', $globals.Error, ['exception'], 'Kernel-Exceptions');
  500. //>>excludeStart("ide", pragmas.excludeIdeData);
  501. $globals.JavaScriptException.comment="A JavaScriptException is thrown when a non-Smalltalk exception occurs while in the Smalltalk stack.\x0aSee `boot.js` `inContext()` and `BlockClosure >> on:do:`";
  502. //>>excludeEnd("ide");
  503. $core.addMethod(
  504. $core.method({
  505. selector: "context:",
  506. protocol: 'accessing',
  507. fn: function (aMethodContext){
  508. var self=this;
  509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  510. return $core.withContext(function($ctx1) {
  511. //>>excludeEnd("ctx");
  512. self.context = aMethodContext;
  513. return self;
  514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  515. }, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},$globals.JavaScriptException)});
  516. //>>excludeEnd("ctx");
  517. },
  518. //>>excludeStart("ide", pragmas.excludeIdeData);
  519. args: ["aMethodContext"],
  520. source: "context: aMethodContext\x0a\x09\x22Set the context from the outside.\x0a\x09See boot.js `inContext()` exception handling\x22\x0a\x09\x0a\x09<self.context = aMethodContext>",
  521. referencedClasses: [],
  522. //>>excludeEnd("ide");
  523. messageSends: []
  524. }),
  525. $globals.JavaScriptException);
  526. $core.addMethod(
  527. $core.method({
  528. selector: "exception",
  529. protocol: 'accessing',
  530. fn: function (){
  531. var self=this;
  532. var $1;
  533. $1=self["@exception"];
  534. return $1;
  535. },
  536. //>>excludeStart("ide", pragmas.excludeIdeData);
  537. args: [],
  538. source: "exception\x0a\x09^ exception",
  539. referencedClasses: [],
  540. //>>excludeEnd("ide");
  541. messageSends: []
  542. }),
  543. $globals.JavaScriptException);
  544. $core.addMethod(
  545. $core.method({
  546. selector: "exception:",
  547. protocol: 'accessing',
  548. fn: function (anException){
  549. var self=this;
  550. self["@exception"]=anException;
  551. return self;
  552. },
  553. //>>excludeStart("ide", pragmas.excludeIdeData);
  554. args: ["anException"],
  555. source: "exception: anException\x0a\x09exception := anException",
  556. referencedClasses: [],
  557. //>>excludeEnd("ide");
  558. messageSends: []
  559. }),
  560. $globals.JavaScriptException);
  561. $core.addMethod(
  562. $core.method({
  563. selector: "messageText",
  564. protocol: 'accessing',
  565. fn: function (){
  566. var self=this;
  567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  568. return $core.withContext(function($ctx1) {
  569. //>>excludeEnd("ctx");
  570. return 'JavaScript exception: ' + self["@exception"].toString();
  571. return self;
  572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  573. }, function($ctx1) {$ctx1.fill(self,"messageText",{},$globals.JavaScriptException)});
  574. //>>excludeEnd("ctx");
  575. },
  576. //>>excludeStart("ide", pragmas.excludeIdeData);
  577. args: [],
  578. source: "messageText\x0a\x09<return 'JavaScript exception: ' + self[\x22@exception\x22].toString()>",
  579. referencedClasses: [],
  580. //>>excludeEnd("ide");
  581. messageSends: []
  582. }),
  583. $globals.JavaScriptException);
  584. $core.addMethod(
  585. $core.method({
  586. selector: "on:",
  587. protocol: 'instance creation',
  588. fn: function (anException){
  589. var self=this;
  590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  591. return $core.withContext(function($ctx1) {
  592. //>>excludeEnd("ctx");
  593. var $2,$3,$1;
  594. $2=self._new();
  595. $recv($2)._exception_(anException);
  596. $3=$recv($2)._yourself();
  597. $1=$3;
  598. return $1;
  599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  600. }, function($ctx1) {$ctx1.fill(self,"on:",{anException:anException},$globals.JavaScriptException.klass)});
  601. //>>excludeEnd("ctx");
  602. },
  603. //>>excludeStart("ide", pragmas.excludeIdeData);
  604. args: ["anException"],
  605. source: "on: anException\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09yourself",
  606. referencedClasses: [],
  607. //>>excludeEnd("ide");
  608. messageSends: ["exception:", "new", "yourself"]
  609. }),
  610. $globals.JavaScriptException.klass);
  611. $core.addMethod(
  612. $core.method({
  613. selector: "on:context:",
  614. protocol: 'instance creation',
  615. fn: function (anException,aMethodContext){
  616. var self=this;
  617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  618. return $core.withContext(function($ctx1) {
  619. //>>excludeEnd("ctx");
  620. var $2,$3,$1;
  621. $2=self._new();
  622. $recv($2)._exception_(anException);
  623. $recv($2)._context_(aMethodContext);
  624. $3=$recv($2)._yourself();
  625. $1=$3;
  626. return $1;
  627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  628. }, function($ctx1) {$ctx1.fill(self,"on:context:",{anException:anException,aMethodContext:aMethodContext},$globals.JavaScriptException.klass)});
  629. //>>excludeEnd("ctx");
  630. },
  631. //>>excludeStart("ide", pragmas.excludeIdeData);
  632. args: ["anException", "aMethodContext"],
  633. source: "on: anException context: aMethodContext\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09context: aMethodContext;\x0a\x09\x09yourself",
  634. referencedClasses: [],
  635. //>>excludeEnd("ide");
  636. messageSends: ["exception:", "new", "context:", "yourself"]
  637. }),
  638. $globals.JavaScriptException.klass);
  639. $core.addClass('MessageNotUnderstood', $globals.Error, ['message', 'receiver'], 'Kernel-Exceptions');
  640. //>>excludeStart("ide", pragmas.excludeIdeData);
  641. $globals.MessageNotUnderstood.comment="This exception is provided to support `Object>>doesNotUnderstand:`.";
  642. //>>excludeEnd("ide");
  643. $core.addMethod(
  644. $core.method({
  645. selector: "message",
  646. protocol: 'accessing',
  647. fn: function (){
  648. var self=this;
  649. var $1;
  650. $1=self["@message"];
  651. return $1;
  652. },
  653. //>>excludeStart("ide", pragmas.excludeIdeData);
  654. args: [],
  655. source: "message\x0a\x09^ message",
  656. referencedClasses: [],
  657. //>>excludeEnd("ide");
  658. messageSends: []
  659. }),
  660. $globals.MessageNotUnderstood);
  661. $core.addMethod(
  662. $core.method({
  663. selector: "message:",
  664. protocol: 'accessing',
  665. fn: function (aMessage){
  666. var self=this;
  667. self["@message"]=aMessage;
  668. return self;
  669. },
  670. //>>excludeStart("ide", pragmas.excludeIdeData);
  671. args: ["aMessage"],
  672. source: "message: aMessage\x0a\x09message := aMessage",
  673. referencedClasses: [],
  674. //>>excludeEnd("ide");
  675. messageSends: []
  676. }),
  677. $globals.MessageNotUnderstood);
  678. $core.addMethod(
  679. $core.method({
  680. selector: "messageText",
  681. protocol: 'accessing',
  682. fn: function (){
  683. var self=this;
  684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  685. return $core.withContext(function($ctx1) {
  686. //>>excludeEnd("ctx");
  687. var $1;
  688. $1=$recv($recv($recv(self._receiver())._asString()).__comma(" does not understand #")).__comma($recv(self._message())._selector());
  689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  690. $ctx1.sendIdx[","]=1;
  691. //>>excludeEnd("ctx");
  692. return $1;
  693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  694. }, function($ctx1) {$ctx1.fill(self,"messageText",{},$globals.MessageNotUnderstood)});
  695. //>>excludeEnd("ctx");
  696. },
  697. //>>excludeStart("ide", pragmas.excludeIdeData);
  698. args: [],
  699. source: "messageText\x0a\x09^ self receiver asString, ' does not understand #', self message selector",
  700. referencedClasses: [],
  701. //>>excludeEnd("ide");
  702. messageSends: [",", "asString", "receiver", "selector", "message"]
  703. }),
  704. $globals.MessageNotUnderstood);
  705. $core.addMethod(
  706. $core.method({
  707. selector: "receiver",
  708. protocol: 'accessing',
  709. fn: function (){
  710. var self=this;
  711. var $1;
  712. $1=self["@receiver"];
  713. return $1;
  714. },
  715. //>>excludeStart("ide", pragmas.excludeIdeData);
  716. args: [],
  717. source: "receiver\x0a\x09^ receiver",
  718. referencedClasses: [],
  719. //>>excludeEnd("ide");
  720. messageSends: []
  721. }),
  722. $globals.MessageNotUnderstood);
  723. $core.addMethod(
  724. $core.method({
  725. selector: "receiver:",
  726. protocol: 'accessing',
  727. fn: function (anObject){
  728. var self=this;
  729. self["@receiver"]=anObject;
  730. return self;
  731. },
  732. //>>excludeStart("ide", pragmas.excludeIdeData);
  733. args: ["anObject"],
  734. source: "receiver: anObject\x0a\x09receiver := anObject",
  735. referencedClasses: [],
  736. //>>excludeEnd("ide");
  737. messageSends: []
  738. }),
  739. $globals.MessageNotUnderstood);
  740. $core.addClass('NonBooleanReceiver', $globals.Error, ['object'], 'Kernel-Exceptions');
  741. //>>excludeStart("ide", pragmas.excludeIdeData);
  742. $globals.NonBooleanReceiver.comment="NonBooleanReceiver exceptions may be thrown when executing inlined methods such as `#ifTrue:` with a non boolean receiver.";
  743. //>>excludeEnd("ide");
  744. $core.addMethod(
  745. $core.method({
  746. selector: "object",
  747. protocol: 'accessing',
  748. fn: function (){
  749. var self=this;
  750. var $1;
  751. $1=self["@object"];
  752. return $1;
  753. },
  754. //>>excludeStart("ide", pragmas.excludeIdeData);
  755. args: [],
  756. source: "object\x0a\x09^ object",
  757. referencedClasses: [],
  758. //>>excludeEnd("ide");
  759. messageSends: []
  760. }),
  761. $globals.NonBooleanReceiver);
  762. $core.addMethod(
  763. $core.method({
  764. selector: "object:",
  765. protocol: 'accessing',
  766. fn: function (anObject){
  767. var self=this;
  768. self["@object"]=anObject;
  769. return self;
  770. },
  771. //>>excludeStart("ide", pragmas.excludeIdeData);
  772. args: ["anObject"],
  773. source: "object: anObject\x0a\x09object := anObject",
  774. referencedClasses: [],
  775. //>>excludeEnd("ide");
  776. messageSends: []
  777. }),
  778. $globals.NonBooleanReceiver);
  779. $core.addClass('PackageCommitError', $globals.Error, [], 'Kernel-Exceptions');
  780. //>>excludeStart("ide", pragmas.excludeIdeData);
  781. $globals.PackageCommitError.comment="I get signaled when an attempt to commit a package has failed.";
  782. //>>excludeEnd("ide");
  783. });