1
0

amber-cli.js 3.4 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413584145841558416584175841858419584205842158422584235842458425584265842758428584295843058431584325843358434584355843658437584385843958440584415844258443584445844558446584475844858449584505845158452584535845458455584565845758458584595846058461584625846358464584655846658467584685846958470584715847258473584745847558476584775847858479584805848158482584835848458485584865848758488584895849058491584925849358494584955849658497584985849958500585015850258503585045850558506585075850858509585105851158512585135851458515585165851758518585195852058521585225852358524585255852658527585285852958530585315853258533585345853558536585375853858539585405854158542585435854458545585465854758548585495855058551585525855358554585555855658557585585855958560585615856258563585645856558566585675856858569585705857158572585735857458575585765857758578585795858058581585825858358584585855858658587585885858958590585915859258593585945859558596585975859858599586005860158602586035860458605586065860758608586095861058611586125861358614586155861658617586185861958620586215862258623586245862558626586275862858629586305863158632586335863458635586365863758638586395864058641586425864358644586455864658647586485864958650586515865258653586545865558656586575865858659586605866158662586635866458665586665866758668586695867058671586725867358674586755867658677586785867958680586815868258683586845868558686586875868858689586905869158692586935869458695586965869758698586995870058701587025870358704587055870658707587085870958710587115871258713587145871558716587175871858719587205872158722587235872458725587265872758728587295873058731587325873358734587355873658737587385873958740587415874258743587445874558746587475874858749587505875158752587535875458755587565875758758587595876058761587625876358764587655876658767587685876958770587715877258773587745877558776587775877858779587805878158782587835878458785587865878758788587895879058791587925879358794587955879658797587985879958800588015880258803588045880558806588075880858809588105881158812588135881458815588165881758818588195882058821588225882358824588255882658827588285882958830588315883258833588345883558836588375883858839588405884158842588435884458845588465884758848588495885058851588525885358854588555885658857588585885958860588615886258863588645886558866588675886858869588705887158872588735887458875588765887758878588795888058881588825888358884588855888658887588885888958890588915889258893588945889558896588975889858899589005890158902589035890458905589065890758908589095891058911589125891358914589155891658917589185891958920589215892258923589245892558926589275892858929589305893158932589335893458935589365893758938589395894058941589425894358944589455894658947589485894958950589515895258953589545895558956589575895858959589605896158962589635896458965589665896758968589695897058971589725897358974589755897658977589785897958980589815898258983589845898558986589875898858989589905899158992589935899458995589965899758998589995900059001590025900359004590055900659007590085900959010590115901259013590145901559016590175901859019590205902159022590235902459025590265902759028590295903059031590325903359034590355903659037590385903959040590415904259043590445904559046590475904859049590505905159052590535905459055590565905759058590595906059061590625906359064590655906659067590685906959070590715907259073590745907559076590775907859079590805908159082590835908459085590865908759088590895909059091590925909359094590955909659097590985909959100591015910259103591045910559106591075910859109591105911159112591135911459115591165911759118591195912059121591225912359124591255912659127591285912959130591315913259133591345913559136591375913859139591405914159142591435914459145591465914759148591495915059151591525915359154591555915659157591585915959160591615916259163591645916559166591675916859169591705917159172591735917459175591765917759178591795918059181591825918359184591855918659187591885918959190591915919259193591945919559196591975919859199592005920159202592035920459205592065920759208592095921059211592125921359214592155921659217592185921959220592215922259223592245922559226592275922859229592305923159232592335923459235592365923759238592395924059241592425924359244592455924659247592485924959250592515925259253592545925559256592575925859259592605926159262592635926459265592665926759268592695927059271592725927359274592755927659277592785927959280592815928259283592845928559286592875928859289592905929159292592935929459295592965929759298592995930059301593025930359304593055930659307593085930959310593115931259313593145931559316593175931859319593205932159322593235932459325593265932759328593295933059331593325933359334593355933659337593385933959340593415934259343593445934559346593475934859349593505935159352593535935459355593565935759358593595936059361593625936359364593655936659367593685936959370593715937259373593745937559376593775937859379593805938159382593835938459385593865938759388593895939059391593925939359394593955939659397593985939959400594015940259403594045940559406594075940859409594105941159412594135941459415594165941759418594195942059421594225942359424594255942659427594285942959430594315943259433594345943559436594375943859439594405944159442594435944459445594465944759448594495945059451594525945359454594555945659457594585945959460594615946259463594645946559466594675946859469594705947159472594735947459475594765947759478594795948059481594825948359484594855948659487594885948959490594915949259493594945949559496594975949859499595005950159502595035950459505595065950759508595095951059511595125951359514595155951659517595185951959520595215952259523595245952559526595275952859529595305953159532595335953459535595365953759538595395954059541595425954359544595455954659547595485954959550595515955259553595545955559556595575955859559595605956159562595635956459565595665956759568595695957059571595725957359574595755957659577595785957959580595815958259583595845958559586595875958859589595905959159592595935959459595595965959759598595995960059601596025960359604596055960659607596085960959610596115961259613596145961559616596175961859619596205962159622596235962459625596265962759628596295963059631596325963359634596355963659637596385963959640596415964259643596445964559646596475964859649596505965159652596535965459655596565965759658596595966059661596625966359664596655966659667596685966959670596715967259673596745967559676596775967859679596805968159682596835968459685596865968759688596895969059691596925969359694596955969659697596985969959700597015970259703597045970559706597075970859709597105971159712597135971459715597165971759718597195972059721597225972359724597255972659727597285972959730597315973259733597345973559736597375973859739597405974159742597435974459745597465974759748597495975059751597525975359754597555975659757597585975959760597615976259763597645976559766597675976859769597705977159772597735977459775597765977759778597795978059781597825978359784597855978659787597885978959790597915979259793597945979559796597975979859799598005980159802598035980459805598065980759808598095981059811598125981359814598155981659817598185981959820598215982259823598245982559826598275982859829598305983159832598335983459835598365983759838598395984059841598425984359844598455984659847598485984959850598515985259853598545985559856598575985859859598605986159862598635986459865598665986759868598695987059871598725987359874598755987659877598785987959880598815988259883598845988559886598875988859889598905989159892598935989459895598965989759898598995990059901599025990359904599055990659907599085990959910599115991259913599145991559916599175991859919599205992159922599235992459925599265992759928599295993059931599325993359934599355993659937599385993959940599415994259943599445994559946599475994859949599505995159952599535995459955599565995759958599595996059961599625996359964599655996659967599685996959970599715997259973599745997559976599775997859979599805998159982599835998459985599865998759988599895999059991599925999359994599955999659997599985999960000600016000260003600046000560006600076000860009600106001160012600136001460015600166001760018600196002060021600226002360024600256002660027600286002960030600316003260033600346003560036600376003860039600406004160042600436004460045600466004760048600496005060051600526005360054600556005660057600586005960060600616006260063600646006560066600676006860069600706007160072600736007460075600766007760078600796008060081600826008360084600856008660087600886008960090600916009260093600946009560096600976009860099601006010160102601036010460105601066010760108601096011060111601126011360114601156011660117601186011960120601216012260123601246012560126601276012860129601306013160132601336013460135601366013760138601396014060141601426014360144601456014660147601486014960150601516015260153601546015560156601576015860159601606016160162601636016460165601666016760168601696017060171601726017360174601756017660177601786017960180601816018260183601846018560186601876018860189601906019160192601936019460195601966019760198601996020060201602026020360204602056020660207602086020960210602116021260213602146021560216602176021860219602206022160222602236022460225602266022760228602296023060231602326023360234602356023660237602386023960240602416024260243602446024560246602476024860249602506025160252602536025460255602566025760258602596026060261602626026360264602656026660267602686026960270602716027260273602746027560276602776027860279602806028160282602836028460285602866028760288602896029060291602926029360294602956029660297602986029960300603016030260303603046030560306603076030860309603106031160312603136031460315603166031760318603196032060321603226032360324603256032660327603286032960330603316033260333603346033560336603376033860339603406034160342603436034460345603466034760348603496035060351603526035360354603556035660357603586035960360603616036260363603646036560366603676036860369603706037160372603736037460375603766037760378603796038060381603826038360384603856038660387603886038960390603916039260393603946039560396603976039860399604006040160402604036040460405604066040760408604096041060411604126041360414604156041660417604186041960420604216042260423604246042560426604276042860429604306043160432604336043460435604366043760438604396044060441604426044360444604456044660447604486044960450604516045260453604546045560456604576045860459604606046160462604636046460465604666046760468604696047060471604726047360474604756047660477604786047960480604816048260483604846048560486604876048860489604906049160492604936049460495604966049760498604996050060501605026050360504605056050660507605086050960510605116051260513605146051560516605176051860519605206052160522605236052460525605266052760528605296053060531605326053360534605356053660537605386053960540605416054260543605446054560546605476054860549605506055160552605536055460555605566055760558605596056060561605626056360564605656056660567605686056960570605716057260573605746057560576605776057860579605806058160582605836058460585605866058760588605896059060591605926059360594605956059660597605986059960600606016060260603606046060560606606076060860609606106061160612606136061460615606166061760618606196062060621606226062360624606256062660627606286062960630606316063260633606346063560636606376063860639606406064160642606436064460645606466064760648606496065060651606526065360654606556065660657606586065960660606616066260663606646066560666606676066860669606706067160672606736067460675606766067760678606796068060681606826068360684606856068660687606886068960690606916069260693606946069560696606976069860699607006070160702607036070460705607066070760708607096071060711607126071360714607156071660717607186071960720607216072260723607246072560726607276072860729607306073160732607336073460735607366073760738607396074060741607426074360744607456074660747607486074960750607516075260753607546075560756607576075860759607606076160762607636076460765607666076760768607696077060771607726077360774607756077660777607786077960780607816078260783607846078560786607876078860789607906079160792607936079460795607966079760798607996080060801608026080360804608056080660807608086080960810608116081260813608146081560816608176081860819608206082160822608236082460825608266082760828608296083060831608326083360834608356083660837608386083960840608416084260843608446084560846608476084860849608506085160852608536085460855608566085760858608596086060861608626086360864608656086660867608686086960870608716087260873608746087560876608776087860879608806088160882608836088460885608866088760888608896089060891608926089360894608956089660897608986089960900609016090260903609046090560906609076090860909609106091160912609136091460915609166091760918609196092060921609226092360924609256092660927609286092960930609316093260933609346093560936609376093860939609406094160942609436094460945609466094760948609496095060951609526095360954609556095660957609586095960960609616096260963609646096560966609676096860969609706097160972609736097460975609766097760978609796098060981609826098360984609856098660987609886098960990609916099260993609946099560996609976099860999610006100161002610036100461005610066100761008610096101061011610126101361014610156101661017610186101961020610216102261023610246102561026610276102861029610306103161032610336103461035610366103761038610396104061041610426104361044610456104661047610486104961050610516105261053610546105561056610576105861059610606106161062610636106461065610666106761068610696107061071610726107361074610756107661077610786107961080610816108261083610846108561086610876108861089610906109161092610936109461095610966109761098610996110061101611026110361104611056110661107611086110961110611116111261113611146111561116611176111861119611206112161122611236112461125611266112761128611296113061131611326113361134611356113661137611386113961140611416114261143611446114561146611476114861149611506115161152611536115461155611566115761158611596116061161611626116361164611656116661167611686116961170611716117261173611746117561176611776117861179611806118161182611836118461185611866118761188611896119061191611926119361194611956119661197611986119961200612016120261203612046120561206612076120861209612106121161212612136121461215612166121761218612196122061221612226122361224612256122661227612286122961230612316123261233612346123561236612376123861239612406124161242612436124461245612466124761248612496125061251612526125361254612556125661257612586125961260612616126261263612646126561266612676126861269612706127161272612736127461275612766127761278612796128061281612826128361284612856128661287612886128961290612916129261293612946129561296612976129861299613006130161302613036130461305613066130761308613096131061311613126131361314613156131661317613186131961320613216132261323613246132561326613276132861329613306133161332613336133461335613366133761338613396134061341613426134361344613456134661347613486134961350613516135261353613546135561356613576135861359613606136161362613636136461365613666136761368613696137061371613726137361374613756137661377613786137961380613816138261383613846138561386613876138861389613906139161392613936139461395613966139761398613996140061401614026140361404614056140661407614086140961410614116141261413614146141561416614176141861419614206142161422614236142461425614266142761428614296143061431614326143361434614356143661437614386143961440614416144261443614446144561446614476144861449614506145161452614536145461455614566145761458614596146061461614626146361464614656146661467614686146961470614716147261473614746147561476614776147861479614806148161482614836148461485614866148761488614896149061491614926149361494614956149661497614986149961500615016150261503615046150561506615076150861509615106151161512615136151461515615166151761518615196152061521615226152361524615256152661527615286152961530615316153261533615346153561536615376153861539615406154161542615436154461545615466154761548615496155061551615526155361554615556155661557615586155961560615616156261563615646156561566615676156861569615706157161572615736157461575615766157761578615796158061581615826158361584615856158661587615886158961590615916159261593615946159561596615976159861599616006160161602616036160461605616066160761608616096161061611616126161361614616156161661617616186161961620616216162261623616246162561626616276162861629616306163161632616336163461635616366163761638616396164061641616426164361644616456164661647616486164961650616516165261653616546165561656616576165861659616606166161662616636166461665616666166761668616696167061671616726167361674616756167661677616786167961680616816168261683616846168561686616876168861689616906169161692616936169461695616966169761698616996170061701617026170361704617056170661707617086170961710617116171261713617146171561716617176171861719617206172161722617236172461725617266172761728617296173061731617326173361734617356173661737617386173961740617416174261743617446174561746617476174861749617506175161752617536175461755617566175761758617596176061761617626176361764617656176661767617686176961770617716177261773617746177561776617776177861779617806178161782617836178461785617866178761788617896179061791617926179361794617956179661797617986179961800618016180261803618046180561806618076180861809618106181161812618136181461815618166181761818618196182061821618226182361824618256182661827618286182961830618316183261833618346183561836618376183861839618406184161842618436184461845618466184761848618496185061851618526185361854618556185661857618586185961860618616186261863618646186561866618676186861869618706187161872618736187461875618766187761878618796188061881618826188361884618856188661887618886188961890618916189261893618946189561896618976189861899619006190161902619036190461905619066190761908619096191061911619126191361914619156191661917619186191961920619216192261923619246192561926619276192861929619306193161932619336193461935619366193761938619396194061941619426194361944619456194661947619486194961950619516195261953619546195561956619576195861959619606196161962619636196461965619666196761968619696197061971619726197361974619756197661977619786197961980619816198261983619846198561986619876198861989619906199161992619936199461995619966199761998619996200062001620026200362004620056200662007620086200962010620116201262013620146201562016620176201862019620206202162022620236202462025620266202762028620296203062031620326203362034620356203662037620386203962040620416204262043620446204562046620476204862049620506205162052620536205462055620566205762058620596206062061620626206362064620656206662067620686206962070620716207262073620746207562076620776207862079620806208162082620836208462085620866208762088620896209062091620926209362094620956209662097620986209962100621016210262103621046210562106621076210862109621106211162112621136211462115621166211762118621196212062121621226212362124621256212662127621286212962130621316213262133621346213562136621376213862139621406214162142621436214462145621466214762148621496215062151621526215362154621556215662157621586215962160621616216262163621646216562166621676216862169621706217162172621736217462175621766217762178621796218062181621826218362184621856218662187621886218962190621916219262193621946219562196621976219862199622006220162202622036220462205622066220762208622096221062211622126221362214622156221662217622186221962220622216222262223622246222562226622276222862229622306223162232622336223462235622366223762238622396224062241622426224362244622456224662247622486224962250622516225262253622546225562256622576225862259622606226162262622636226462265622666226762268622696227062271622726227362274622756227662277622786227962280622816228262283622846228562286622876228862289622906229162292622936229462295622966229762298622996230062301623026230362304623056230662307623086230962310623116231262313623146231562316623176231862319623206232162322623236232462325623266232762328623296233062331623326233362334623356233662337623386233962340623416234262343623446234562346623476234862349623506235162352623536235462355623566235762358623596236062361623626236362364623656236662367623686236962370623716237262373623746237562376623776237862379623806238162382623836238462385623866238762388623896239062391623926239362394623956239662397623986239962400624016240262403624046240562406624076240862409624106241162412624136241462415624166241762418624196242062421624226242362424624256242662427624286242962430624316243262433624346243562436624376243862439624406244162442624436244462445624466244762448624496245062451624526245362454624556245662457624586245962460624616246262463624646246562466624676246862469624706247162472624736247462475624766247762478624796248062481624826248362484624856248662487624886248962490624916249262493624946249562496624976249862499625006250162502625036250462505625066250762508625096251062511625126251362514625156251662517625186251962520625216252262523625246252562526625276252862529625306253162532625336253462535625366253762538625396254062541625426254362544625456254662547625486254962550625516255262553625546255562556625576255862559625606256162562625636256462565625666256762568625696257062571625726257362574625756257662577625786257962580625816258262583625846258562586625876258862589625906259162592625936259462595625966259762598625996260062601626026260362604626056260662607626086260962610626116261262613626146261562616626176261862619626206262162622626236262462625626266262762628626296263062631626326263362634626356263662637626386263962640626416264262643626446264562646626476264862649626506265162652626536265462655626566265762658626596266062661626626266362664626656266662667626686266962670626716267262673626746267562676626776267862679626806268162682626836268462685626866268762688626896269062691626926269362694626956269662697626986269962700627016270262703627046270562706627076270862709627106271162712627136271462715627166271762718627196272062721627226272362724627256272662727627286272962730627316273262733627346273562736627376273862739627406274162742627436274462745627466274762748627496275062751627526275362754627556275662757627586275962760627616276262763627646276562766627676276862769627706277162772627736277462775627766277762778627796278062781627826278362784627856278662787627886278962790627916279262793627946279562796627976279862799628006280162802628036280462805628066280762808628096281062811628126281362814628156281662817628186281962820628216282262823628246282562826628276282862829628306283162832628336283462835628366283762838628396284062841628426284362844628456284662847628486284962850628516285262853628546285562856628576285862859628606286162862628636286462865628666286762868628696287062871628726287362874628756287662877628786287962880628816288262883628846288562886628876288862889628906289162892628936289462895628966289762898628996290062901629026290362904629056290662907629086290962910629116291262913629146291562916629176291862919629206292162922629236292462925629266292762928629296293062931629326293362934629356293662937629386293962940629416294262943629446294562946629476294862949629506295162952629536295462955629566295762958629596296062961629626296362964629656296662967629686296962970629716297262973629746297562976629776297862979629806298162982629836298462985629866298762988629896299062991629926299362994629956299662997629986299963000630016300263003630046300563006630076300863009630106301163012630136301463015630166301763018630196302063021630226302363024630256302663027630286302963030630316303263033630346303563036630376303863039630406304163042630436304463045630466304763048630496305063051630526305363054630556305663057630586305963060630616306263063630646306563066630676306863069630706307163072630736307463075630766307763078630796308063081630826308363084630856308663087630886308963090630916309263093630946309563096630976309863099631006310163102631036310463105631066310763108631096311063111631126311363114631156311663117631186311963120631216312263123631246312563126631276312863129631306313163132631336313463135631366313763138631396314063141631426314363144631456314663147631486314963150631516315263153631546315563156631576315863159631606316163162631636316463165631666316763168631696317063171631726317363174631756317663177631786317963180631816318263183631846318563186631876318863189631906319163192631936319463195631966319763198631996320063201632026320363204632056320663207632086320963210632116321263213632146321563216632176321863219632206322163222632236322463225632266322763228632296323063231632326323363234632356323663237632386323963240632416324263243632446324563246632476324863249632506325163252632536325463255632566325763258632596326063261632626326363264632656326663267632686326963270632716327263273632746327563276632776327863279632806328163282632836328463285632866328763288632896329063291632926329363294632956329663297632986329963300633016330263303633046330563306633076330863309633106331163312633136331463315633166331763318633196332063321633226332363324633256332663327633286332963330633316333263333633346333563336633376333863339633406334163342633436334463345633466334763348633496335063351633526335363354633556335663357633586335963360633616336263363633646336563366633676336863369633706337163372633736337463375633766337763378633796338063381633826338363384633856338663387633886338963390633916339263393633946339563396633976339863399634006340163402634036340463405634066340763408634096341063411634126341363414634156341663417634186341963420634216342263423634246342563426634276342863429634306343163432634336343463435634366343763438634396344063441634426344363444634456344663447634486344963450634516345263453634546345563456634576345863459634606346163462634636346463465634666346763468634696347063471634726347363474634756347663477634786347963480634816348263483634846348563486634876348863489634906349163492634936349463495634966349763498634996350063501635026350363504635056350663507635086350963510635116351263513635146351563516635176351863519635206352163522635236352463525635266352763528635296353063531635326353363534635356353663537635386353963540635416354263543635446354563546635476354863549635506355163552635536355463555635566355763558635596356063561635626356363564635656356663567635686356963570635716357263573635746357563576635776357863579635806358163582635836358463585635866358763588635896359063591635926359363594635956359663597635986359963600636016360263603636046360563606636076360863609636106361163612636136361463615636166361763618636196362063621636226362363624636256362663627636286362963630636316363263633636346363563636636376363863639636406364163642636436364463645636466364763648636496365063651636526365363654636556365663657636586365963660636616366263663636646366563666636676366863669636706367163672636736367463675636766367763678636796368063681636826368363684636856368663687636886368963690636916369263693636946369563696636976369863699637006370163702637036370463705637066370763708637096371063711637126371363714637156371663717637186371963720637216372263723637246372563726637276372863729637306373163732637336373463735637366373763738637396374063741637426374363744637456374663747637486374963750637516375263753637546375563756637576375863759637606376163762637636376463765637666376763768637696377063771637726377363774637756377663777637786377963780637816378263783637846378563786637876378863789637906379163792637936379463795637966379763798637996380063801638026380363804638056380663807638086380963810638116381263813638146381563816638176381863819638206382163822638236382463825638266382763828638296383063831638326383363834638356383663837638386383963840638416384263843638446384563846638476384863849638506385163852638536385463855638566385763858638596386063861638626386363864638656386663867638686386963870638716387263873638746387563876638776387863879638806388163882638836388463885638866388763888638896389063891638926389363894638956389663897638986389963900639016390263903639046390563906639076390863909639106391163912639136391463915639166391763918639196392063921639226392363924639256392663927639286392963930639316393263933639346393563936639376393863939639406394163942639436394463945639466394763948639496395063951639526395363954639556395663957639586395963960639616396263963639646396563966639676396863969639706397163972639736397463975639766397763978639796398063981639826398363984639856398663987639886398963990639916399263993639946399563996639976399863999640006400164002640036400464005640066400764008640096401064011640126401364014640156401664017640186401964020640216402264023640246402564026640276402864029640306403164032640336403464035640366403764038640396404064041640426404364044640456404664047640486404964050640516405264053640546405564056640576405864059640606406164062640636406464065640666406764068640696407064071640726407364074640756407664077640786407964080640816408264083640846408564086640876408864089640906409164092640936409464095640966409764098640996410064101641026410364104641056410664107641086410964110641116411264113641146411564116641176411864119641206412164122641236412464125641266412764128641296413064131641326413364134641356413664137641386413964140641416414264143641446414564146641476414864149641506415164152641536415464155641566415764158641596416064161641626416364164641656416664167641686416964170641716417264173641746417564176641776417864179641806418164182641836418464185641866418764188641896419064191641926419364194641956419664197641986419964200642016420264203642046420564206642076420864209642106421164212642136421464215642166421764218642196422064221642226422364224642256422664227642286422964230642316423264233642346423564236642376423864239642406424164242642436424464245642466424764248642496425064251642526425364254642556425664257642586425964260642616426264263642646426564266642676426864269642706427164272642736427464275642766427764278642796428064281642826428364284642856428664287642886428964290642916429264293642946429564296642976429864299643006430164302643036430464305643066430764308643096431064311643126431364314643156431664317643186431964320643216432264323643246432564326643276432864329643306433164332643336433464335643366433764338643396434064341643426434364344643456434664347643486434964350643516435264353643546435564356643576435864359643606436164362643636436464365643666436764368643696437064371643726437364374643756437664377643786437964380643816438264383643846438564386643876438864389643906439164392643936439464395643966439764398643996440064401644026440364404644056440664407644086440964410644116441264413644146441564416644176441864419644206442164422644236442464425644266442764428644296443064431644326443364434644356443664437644386443964440644416444264443644446444564446644476444864449644506445164452644536445464455644566445764458644596446064461644626446364464644656446664467644686446964470644716447264473644746447564476644776447864479644806448164482644836448464485644866448764488644896449064491644926449364494644956449664497644986449964500645016450264503645046450564506645076450864509645106451164512645136451464515645166451764518645196452064521645226452364524645256452664527645286452964530645316453264533645346453564536645376453864539645406454164542645436454464545645466454764548645496455064551645526455364554645556455664557645586455964560645616456264563645646456564566645676456864569645706457164572645736457464575645766457764578645796458064581645826458364584645856458664587645886458964590645916459264593645946459564596645976459864599646006460164602646036460464605646066460764608646096461064611646126461364614646156461664617646186461964620646216462264623646246462564626646276462864629646306463164632646336463464635646366463764638646396464064641646426464364644646456464664647646486464964650646516465264653646546465564656646576465864659646606466164662646636466464665646666466764668646696467064671646726467364674646756467664677646786467964680646816468264683646846468564686646876468864689646906469164692646936469464695646966469764698646996470064701647026470364704647056470664707647086470964710647116471264713647146471564716647176471864719647206472164722647236472464725647266472764728647296473064731647326473364734647356473664737647386473964740647416474264743647446474564746647476474864749647506475164752647536475464755647566475764758647596476064761647626476364764647656476664767647686476964770647716477264773647746477564776647776477864779647806478164782647836478464785647866478764788647896479064791647926479364794647956479664797647986479964800648016480264803648046480564806648076480864809648106481164812648136481464815648166481764818648196482064821648226482364824648256482664827648286482964830648316483264833648346483564836648376483864839648406484164842648436484464845648466484764848648496485064851648526485364854648556485664857648586485964860648616486264863648646486564866648676486864869648706487164872648736487464875648766487764878648796488064881648826488364884648856488664887648886488964890648916489264893648946489564896648976489864899649006490164902649036490464905649066490764908649096491064911649126491364914649156491664917649186491964920649216492264923649246492564926649276492864929649306493164932649336493464935649366493764938649396494064941649426494364944649456494664947649486494964950649516495264953649546495564956649576495864959649606496164962649636496464965649666496764968649696497064971649726497364974649756497664977649786497964980649816498264983649846498564986649876498864989649906499164992649936499464995649966499764998649996500065001650026500365004650056500665007650086500965010650116501265013650146501565016650176501865019650206502165022650236502465025650266502765028650296503065031650326503365034650356503665037650386503965040650416504265043650446504565046650476504865049650506505165052650536505465055650566505765058650596506065061650626506365064650656506665067650686506965070650716507265073650746507565076650776507865079650806508165082650836508465085650866508765088650896509065091650926509365094650956509665097650986509965100651016510265103651046510565106651076510865109651106511165112651136511465115651166511765118651196512065121651226512365124651256512665127651286512965130651316513265133651346513565136651376513865139651406514165142651436514465145651466514765148651496515065151651526515365154651556515665157651586515965160651616516265163651646516565166651676516865169651706517165172651736517465175651766517765178651796518065181651826518365184651856518665187651886518965190651916519265193651946519565196651976519865199652006520165202652036520465205652066520765208652096521065211652126521365214652156521665217652186521965220652216522265223652246522565226652276522865229652306523165232652336523465235652366523765238652396524065241652426524365244652456524665247652486524965250652516525265253652546525565256652576525865259652606526165262652636526465265652666526765268652696527065271652726527365274652756527665277652786527965280652816528265283652846528565286652876528865289652906529165292652936529465295652966529765298652996530065301653026530365304653056530665307653086530965310653116531265313653146531565316653176531865319653206532165322653236532465325653266532765328653296533065331653326533365334653356533665337653386533965340653416534265343653446534565346653476534865349653506535165352653536535465355653566535765358653596536065361653626536365364653656536665367653686536965370653716537265373653746537565376653776537865379653806538165382653836538465385653866538765388653896539065391653926539365394653956539665397653986539965400654016540265403654046540565406654076540865409654106541165412654136541465415654166541765418654196542065421654226542365424654256542665427654286542965430654316543265433654346543565436654376543865439654406544165442654436544465445654466544765448654496545065451654526545365454654556545665457654586545965460654616546265463654646546565466654676546865469654706547165472654736547465475654766547765478654796548065481654826548365484654856548665487654886548965490654916549265493654946549565496654976549865499655006550165502655036550465505655066550765508655096551065511655126551365514655156551665517655186551965520655216552265523655246552565526655276552865529655306553165532655336553465535655366553765538655396554065541655426554365544655456554665547655486554965550655516555265553655546555565556655576555865559655606556165562655636556465565655666556765568655696557065571655726557365574655756557665577655786557965580655816558265583655846558565586655876558865589655906559165592655936559465595655966559765598655996560065601656026560365604656056560665607656086560965610656116561265613656146561565616656176561865619656206562165622656236562465625656266562765628656296563065631656326563365634656356563665637656386563965640656416564265643656446564565646656476564865649656506565165652656536565465655656566565765658656596566065661656626566365664656656566665667656686566965670656716567265673656746567565676656776567865679656806568165682656836568465685656866568765688656896569065691656926569365694656956569665697656986569965700657016570265703657046570565706657076570865709657106571165712657136571465715657166571765718657196572065721657226572365724657256572665727657286572965730657316573265733657346573565736657376573865739657406574165742657436574465745657466574765748657496575065751657526575365754657556575665757657586575965760657616576265763657646576565766657676576865769657706577165772657736577465775657766577765778657796578065781657826578365784657856578665787657886578965790657916579265793657946579565796657976579865799658006580165802658036580465805658066580765808658096581065811658126581365814658156581665817658186581965820658216582265823658246582565826658276582865829658306583165832658336583465835658366583765838658396584065841658426584365844658456584665847658486584965850658516585265853658546585565856658576585865859658606586165862658636586465865658666586765868658696587065871658726587365874658756587665877658786587965880658816588265883658846588565886658876588865889658906589165892658936589465895658966589765898658996590065901659026590365904659056590665907659086590965910659116591265913659146591565916659176591865919659206592165922659236592465925659266592765928659296593065931659326593365934659356593665937659386593965940659416594265943659446594565946659476594865949659506595165952659536595465955659566595765958659596596065961659626596365964659656596665967659686596965970659716597265973659746597565976659776597865979659806598165982659836598465985659866598765988659896599065991659926599365994659956599665997659986599966000660016600266003660046600566006660076600866009660106601166012660136601466015660166601766018660196602066021660226602366024660256602666027660286602966030660316603266033660346603566036660376603866039660406604166042660436604466045660466604766048660496605066051660526605366054660556605666057660586605966060660616606266063660646606566066660676606866069660706607166072660736607466075660766607766078660796608066081660826608366084660856608666087660886608966090660916609266093660946609566096660976609866099661006610166102661036610466105661066610766108661096611066111661126611366114661156611666117661186611966120661216612266123661246612566126661276612866129661306613166132661336613466135661366613766138661396614066141661426614366144661456614666147661486614966150661516615266153661546615566156661576615866159661606616166162661636616466165661666616766168661696617066171661726617366174661756617666177661786617966180661816618266183661846618566186661876618866189661906619166192661936619466195661966619766198661996620066201662026620366204662056620666207662086620966210662116621266213662146621566216662176621866219662206622166222662236622466225662266622766228662296623066231662326623366234662356623666237662386623966240662416624266243662446624566246662476624866249662506625166252662536625466255662566625766258662596626066261662626626366264662656626666267662686626966270662716627266273662746627566276662776627866279662806628166282662836628466285662866628766288662896629066291662926629366294662956629666297662986629966300663016630266303663046630566306663076630866309663106631166312663136631466315663166631766318663196632066321663226632366324663256632666327663286632966330663316633266333663346633566336663376633866339663406634166342663436634466345663466634766348663496635066351663526635366354663556635666357663586635966360663616636266363663646636566366663676636866369663706637166372663736637466375663766637766378663796638066381663826638366384663856638666387663886638966390663916639266393663946639566396663976639866399664006640166402664036640466405664066640766408664096641066411664126641366414664156641666417664186641966420664216642266423664246642566426664276642866429664306643166432664336643466435664366643766438664396644066441664426644366444664456644666447664486644966450664516645266453664546645566456664576645866459664606646166462664636646466465664666646766468664696647066471664726647366474664756647666477664786647966480664816648266483664846648566486664876648866489664906649166492664936649466495664966649766498664996650066501665026650366504665056650666507665086650966510665116651266513665146651566516665176651866519665206652166522665236652466525665266652766528665296653066531665326653366534665356653666537665386653966540665416654266543665446654566546665476654866549665506655166552665536655466555665566655766558665596656066561665626656366564665656656666567665686656966570665716657266573665746657566576665776657866579665806658166582665836658466585665866658766588665896659066591665926659366594665956659666597665986659966600666016660266603666046660566606666076660866609666106661166612666136661466615666166661766618666196662066621666226662366624666256662666627666286662966630666316663266633666346663566636666376663866639666406664166642666436664466645666466664766648666496665066651666526665366654666556665666657666586665966660666616666266663666646666566666666676666866669666706667166672666736667466675666766667766678666796668066681666826668366684666856668666687666886668966690666916669266693666946669566696666976669866699667006670166702667036670466705667066670766708667096671066711667126671366714667156671666717667186671966720667216672266723667246672566726667276672866729667306673166732667336673466735667366673766738667396674066741667426674366744667456674666747667486674966750667516675266753667546675566756667576675866759667606676166762667636676466765667666676766768667696677066771667726677366774667756677666777667786677966780667816678266783667846678566786667876678866789667906679166792667936679466795667966679766798667996680066801668026680366804668056680666807668086680966810668116681266813668146681566816668176681866819668206682166822668236682466825668266682766828668296683066831668326683366834668356683666837668386683966840668416684266843668446684566846668476684866849668506685166852668536685466855668566685766858668596686066861668626686366864668656686666867668686686966870668716687266873668746687566876668776687866879668806688166882668836688466885668866688766888668896689066891668926689366894668956689666897668986689966900669016690266903669046690566906669076690866909669106691166912669136691466915669166691766918669196692066921669226692366924669256692666927669286692966930669316693266933669346693566936669376693866939669406694166942669436694466945669466694766948669496695066951669526695366954669556695666957669586695966960669616696266963669646696566966669676696866969669706697166972669736697466975669766697766978669796698066981669826698366984669856698666987669886698966990669916699266993669946699566996669976699866999670006700167002670036700467005670066700767008670096701067011670126701367014670156701667017670186701967020670216702267023670246702567026670276702867029670306703167032670336703467035670366703767038670396704067041670426704367044670456704667047670486704967050670516705267053670546705567056670576705867059670606706167062670636706467065670666706767068670696707067071670726707367074670756707667077670786707967080670816708267083670846708567086670876708867089670906709167092670936709467095670966709767098670996710067101671026710367104671056710667107671086710967110671116711267113671146711567116671176711867119671206712167122671236712467125671266712767128671296713067131671326713367134671356713667137671386713967140671416714267143671446714567146671476714867149671506715167152671536715467155671566715767158671596716067161671626716367164671656716667167671686716967170671716717267173671746717567176671776717867179671806718167182671836718467185671866718767188671896719067191671926719367194671956719667197671986719967200672016720267203672046720567206672076720867209672106721167212672136721467215672166721767218672196722067221672226722367224672256722667227672286722967230672316723267233672346723567236672376723867239672406724167242672436724467245672466724767248672496725067251672526725367254672556725667257672586725967260672616726267263672646726567266672676726867269672706727167272672736727467275672766727767278672796728067281672826728367284672856728667287672886728967290672916729267293672946729567296672976729867299673006730167302673036730467305673066730767308673096731067311673126731367314673156731667317673186731967320673216732267323673246732567326673276732867329673306733167332673336733467335673366733767338673396734067341673426734367344673456734667347673486734967350673516735267353673546735567356673576735867359673606736167362673636736467365673666736767368673696737067371673726737367374673756737667377673786737967380673816738267383673846738567386673876738867389673906739167392673936739467395673966739767398673996740067401674026740367404674056740667407674086740967410674116741267413674146741567416674176741867419674206742167422674236742467425674266742767428674296743067431674326743367434674356743667437674386743967440674416744267443674446744567446674476744867449674506745167452674536745467455674566745767458674596746067461674626746367464674656746667467674686746967470674716747267473674746747567476674776747867479674806748167482674836748467485674866748767488674896749067491674926749367494674956749667497674986749967500675016750267503675046750567506675076750867509675106751167512675136751467515675166751767518675196752067521675226752367524675256752667527675286752967530675316753267533675346753567536675376753867539675406754167542675436754467545675466754767548675496755067551675526755367554675556755667557675586755967560675616756267563675646756567566675676756867569675706757167572675736757467575675766757767578675796758067581675826758367584675856758667587675886758967590675916759267593675946759567596675976759867599676006760167602676036760467605676066760767608676096761067611676126761367614676156761667617676186761967620676216762267623676246762567626676276762867629676306763167632676336763467635676366763767638676396764067641676426764367644676456764667647676486764967650676516765267653676546765567656676576765867659676606766167662676636766467665676666766767668676696767067671676726767367674676756767667677676786767967680676816768267683676846768567686676876768867689676906769167692676936769467695676966769767698676996770067701677026770367704677056770667707677086770967710677116771267713677146771567716677176771867719677206772167722677236772467725677266772767728677296773067731677326773367734677356773667737677386773967740677416774267743677446774567746677476774867749677506775167752677536775467755677566775767758677596776067761677626776367764677656776667767677686776967770677716777267773677746777567776677776777867779677806778167782677836778467785677866778767788677896779067791677926779367794677956779667797677986779967800678016780267803678046780567806678076780867809678106781167812678136781467815678166781767818678196782067821678226782367824678256782667827678286782967830678316783267833678346783567836678376783867839678406784167842678436784467845678466784767848678496785067851678526785367854678556785667857678586785967860678616786267863678646786567866678676786867869678706787167872678736787467875678766787767878678796788067881678826788367884678856788667887678886788967890678916789267893678946789567896678976789867899679006790167902679036790467905679066790767908679096791067911679126791367914679156791667917679186791967920679216792267923679246792567926679276792867929679306793167932679336793467935679366793767938679396794067941679426794367944679456794667947679486794967950679516795267953679546795567956679576795867959679606796167962679636796467965679666796767968679696797067971679726797367974679756797667977679786797967980679816798267983679846798567986679876798867989679906799167992679936799467995679966799767998679996800068001680026800368004680056800668007680086800968010680116801268013680146801568016680176801868019680206802168022680236802468025680266802768028680296803068031680326803368034680356803668037680386803968040680416804268043680446804568046680476804868049680506805168052680536805468055680566805768058680596806068061680626806368064680656806668067680686806968070680716807268073680746807568076680776807868079680806808168082680836808468085680866808768088680896809068091680926809368094680956809668097680986809968100681016810268103681046810568106681076810868109681106811168112681136811468115681166811768118681196812068121681226812368124681256812668127681286812968130681316813268133681346813568136681376813868139681406814168142681436814468145681466814768148681496815068151681526815368154681556815668157681586815968160681616816268163681646816568166681676816868169681706817168172681736817468175681766817768178681796818068181681826818368184681856818668187681886818968190681916819268193681946819568196681976819868199682006820168202682036820468205682066820768208682096821068211682126821368214682156821668217682186821968220682216822268223682246822568226682276822868229682306823168232682336823468235682366823768238682396824068241682426824368244682456824668247682486824968250682516825268253682546825568256682576825868259682606826168262682636826468265682666826768268682696827068271682726827368274682756827668277682786827968280682816828268283682846828568286682876828868289682906829168292682936829468295682966829768298682996830068301683026830368304683056830668307683086830968310683116831268313683146831568316683176831868319683206832168322683236832468325683266832768328683296833068331683326833368334683356833668337683386833968340683416834268343683446834568346683476834868349683506835168352683536835468355683566835768358683596836068361683626836368364683656836668367683686836968370683716837268373683746837568376683776837868379683806838168382683836838468385683866838768388683896839068391683926839368394683956839668397683986839968400684016840268403684046840568406684076840868409684106841168412684136841468415684166841768418684196842068421684226842368424684256842668427684286842968430684316843268433684346843568436684376843868439684406844168442684436844468445684466844768448684496845068451684526845368454684556845668457684586845968460684616846268463684646846568466684676846868469684706847168472684736847468475684766847768478684796848068481684826848368484684856848668487684886848968490684916849268493684946849568496684976849868499685006850168502685036850468505685066850768508685096851068511685126851368514685156851668517685186851968520685216852268523685246852568526685276852868529685306853168532685336853468535685366853768538685396854068541685426854368544685456854668547685486854968550685516855268553685546855568556685576855868559685606856168562685636856468565685666856768568685696857068571685726857368574685756857668577685786857968580685816858268583685846858568586685876858868589685906859168592685936859468595685966859768598685996860068601686026860368604686056860668607686086860968610686116861268613686146861568616686176861868619686206862168622686236862468625686266862768628686296863068631686326863368634686356863668637686386863968640686416864268643686446864568646686476864868649686506865168652686536865468655686566865768658686596866068661686626866368664686656866668667686686866968670686716867268673686746867568676686776867868679686806868168682686836868468685686866868768688686896869068691686926869368694686956869668697686986869968700687016870268703687046870568706687076870868709687106871168712687136871468715687166871768718687196872068721687226872368724687256872668727687286872968730687316873268733687346873568736687376873868739687406874168742687436874468745687466874768748687496875068751687526875368754687556875668757687586875968760687616876268763687646876568766687676876868769687706877168772687736877468775687766877768778687796878068781687826878368784687856878668787687886878968790687916879268793687946879568796687976879868799688006880168802688036880468805688066880768808688096881068811688126881368814688156881668817688186881968820688216882268823688246882568826688276882868829688306883168832688336883468835688366883768838688396884068841688426884368844688456884668847688486884968850688516885268853688546885568856688576885868859688606886168862688636886468865688666886768868688696887068871688726887368874688756887668877688786887968880688816888268883688846888568886688876888868889688906889168892688936889468895688966889768898688996890068901689026890368904689056890668907689086890968910689116891268913689146891568916689176891868919689206892168922689236892468925689266892768928689296893068931689326893368934689356893668937689386893968940689416894268943689446894568946689476894868949689506895168952689536895468955689566895768958689596896068961689626896368964689656896668967689686896968970689716897268973689746897568976689776897868979689806898168982689836898468985689866898768988689896899068991689926899368994689956899668997689986899969000690016900269003690046900569006690076900869009690106901169012690136901469015690166901769018690196902069021690226902369024690256902669027690286902969030690316903269033690346903569036690376903869039690406904169042690436904469045690466904769048690496905069051690526905369054690556905669057690586905969060690616906269063690646906569066690676906869069690706907169072690736907469075690766907769078690796908069081690826908369084690856908669087690886908969090690916909269093690946909569096690976909869099691006910169102691036910469105691066910769108691096911069111691126911369114691156911669117691186911969120691216912269123691246912569126691276912869129691306913169132691336913469135691366913769138691396914069141691426914369144691456914669147691486914969150691516915269153691546915569156691576915869159691606916169162691636916469165691666916769168691696917069171691726917369174691756917669177691786917969180691816918269183691846918569186691876918869189691906919169192691936919469195691966919769198691996920069201692026920369204692056920669207692086920969210692116921269213692146921569216692176921869219692206922169222692236922469225692266922769228692296923069231692326923369234692356923669237692386923969240692416924269243692446924569246692476924869249692506925169252692536925469255692566925769258692596926069261692626926369264692656926669267692686926969270692716927269273692746927569276692776927869279692806928169282692836928469285692866928769288692896929069291692926929369294692956929669297692986929969300693016930269303693046930569306693076930869309693106931169312693136931469315693166931769318693196932069321693226932369324693256932669327693286932969330693316933269333693346933569336693376933869339693406934169342693436934469345693466934769348693496935069351693526935369354693556935669357693586935969360693616936269363693646936569366693676936869369693706937169372693736937469375693766937769378693796938069381693826938369384693856938669387693886938969390693916939269393693946939569396693976939869399694006940169402694036940469405694066940769408694096941069411694126941369414694156941669417694186941969420694216942269423694246942569426694276942869429694306943169432694336943469435694366943769438694396944069441694426944369444694456944669447694486944969450694516945269453694546945569456694576945869459694606946169462694636946469465694666946769468694696947069471694726947369474694756947669477694786947969480694816948269483694846948569486694876948869489694906949169492694936949469495694966949769498694996950069501695026950369504695056950669507695086950969510695116951269513695146951569516695176951869519695206952169522695236952469525695266952769528695296953069531695326953369534695356953669537695386953969540695416954269543695446954569546695476954869549695506955169552695536955469555695566955769558695596956069561695626956369564695656956669567695686956969570695716957269573695746957569576695776957869579695806958169582695836958469585695866958769588695896959069591695926959369594695956959669597695986959969600696016960269603696046960569606696076960869609696106961169612696136961469615696166961769618696196962069621696226962369624696256962669627696286962969630696316963269633696346963569636696376963869639696406964169642696436964469645696466964769648696496965069651696526965369654696556965669657696586965969660696616966269663696646966569666696676966869669696706967169672696736967469675696766967769678696796968069681696826968369684696856968669687696886968969690696916969269693696946969569696696976969869699697006970169702697036970469705697066970769708697096971069711697126971369714697156971669717697186971969720697216972269723697246972569726697276972869729697306973169732697336973469735697366973769738697396974069741697426974369744697456974669747697486974969750697516975269753697546975569756697576975869759697606976169762697636976469765697666976769768697696977069771697726977369774697756977669777697786977969780697816978269783697846978569786697876978869789697906979169792697936979469795697966979769798697996980069801698026980369804698056980669807698086980969810698116981269813698146981569816698176981869819698206982169822698236982469825698266982769828698296983069831698326983369834698356983669837698386983969840698416984269843698446984569846698476984869849698506985169852698536985469855698566985769858698596986069861698626986369864698656986669867698686986969870698716987269873698746987569876698776987869879698806988169882698836988469885698866988769888698896989069891698926989369894698956989669897698986989969900699016990269903699046990569906699076990869909699106991169912699136991469915699166991769918699196992069921699226992369924699256992669927699286992969930699316993269933699346993569936699376993869939699406994169942699436994469945699466994769948699496995069951699526995369954699556995669957699586995969960699616996269963699646996569966699676996869969699706997169972699736997469975699766997769978699796998069981699826998369984699856998669987699886998969990699916999269993699946999569996699976999869999700007000170002700037000470005700067000770008700097001070011700127001370014700157001670017700187001970020700217002270023700247002570026700277002870029700307003170032700337003470035700367003770038700397004070041700427004370044700457004670047700487004970050700517005270053700547005570056700577005870059700607006170062700637006470065700667006770068700697007070071700727007370074700757007670077700787007970080700817008270083700847008570086700877008870089700907009170092700937009470095700967009770098700997010070101701027010370104701057010670107701087010970110701117011270113701147011570116701177011870119701207012170122701237012470125701267012770128701297013070131701327013370134701357013670137701387013970140701417014270143701447014570146701477014870149701507015170152701537015470155701567015770158701597016070161701627016370164701657016670167701687016970170701717017270173701747017570176701777017870179701807018170182701837018470185701867018770188701897019070191701927019370194701957019670197701987019970200702017020270203702047020570206702077020870209702107021170212702137021470215702167021770218702197022070221702227022370224702257022670227702287022970230702317023270233702347023570236702377023870239702407024170242702437024470245702467024770248702497025070251702527025370254702557025670257702587025970260702617026270263702647026570266702677026870269702707027170272702737027470275702767027770278702797028070281702827028370284702857028670287702887028970290702917029270293702947029570296702977029870299703007030170302703037030470305703067030770308703097031070311703127031370314703157031670317703187031970320703217032270323703247032570326703277032870329703307033170332703337033470335703367033770338703397034070341703427034370344703457034670347703487034970350703517035270353703547035570356703577035870359703607036170362703637036470365703667036770368703697037070371703727037370374703757037670377703787037970380703817038270383703847038570386703877038870389703907039170392703937039470395703967039770398703997040070401704027040370404704057040670407704087040970410704117041270413704147041570416704177041870419704207042170422704237042470425704267042770428704297043070431704327043370434704357043670437704387043970440704417044270443704447044570446704477044870449704507045170452704537045470455704567045770458704597046070461704627046370464704657046670467704687046970470704717047270473704747047570476704777047870479704807048170482704837048470485704867048770488704897049070491704927049370494704957049670497704987049970500705017050270503705047050570506705077050870509705107051170512705137051470515705167051770518705197052070521705227052370524705257052670527705287052970530705317053270533705347053570536705377053870539705407054170542705437054470545705467054770548705497055070551705527055370554705557055670557705587055970560705617056270563705647056570566705677056870569705707057170572705737057470575705767057770578705797058070581705827058370584705857058670587705887058970590705917059270593705947059570596705977059870599706007060170602706037060470605706067060770608706097061070611706127061370614706157061670617706187061970620706217062270623706247062570626706277062870629706307063170632706337063470635706367063770638706397064070641706427064370644706457064670647706487064970650706517065270653706547065570656706577065870659706607066170662706637066470665706667066770668706697067070671706727067370674706757067670677706787067970680706817068270683706847068570686706877068870689706907069170692706937069470695706967069770698706997070070701707027070370704707057070670707707087070970710707117071270713707147071570716707177071870719707207072170722707237072470725707267072770728707297073070731707327073370734707357073670737707387073970740707417074270743707447074570746707477074870749707507075170752707537075470755707567075770758707597076070761707627076370764707657076670767707687076970770707717077270773707747077570776707777077870779707807078170782707837078470785707867078770788707897079070791707927079370794707957079670797707987079970800708017080270803708047080570806708077080870809708107081170812708137081470815708167081770818708197082070821708227082370824708257082670827708287082970830708317083270833708347083570836708377083870839708407084170842708437084470845708467084770848708497085070851708527085370854708557085670857708587085970860708617086270863708647086570866708677086870869708707087170872708737087470875708767087770878708797088070881708827088370884708857088670887708887088970890708917089270893708947089570896708977089870899709007090170902709037090470905709067090770908709097091070911709127091370914709157091670917709187091970920709217092270923709247092570926709277092870929709307093170932709337093470935709367093770938709397094070941709427094370944709457094670947709487094970950709517095270953709547095570956709577095870959709607096170962709637096470965709667096770968709697097070971709727097370974709757097670977709787097970980709817098270983709847098570986709877098870989709907099170992709937099470995709967099770998709997100071001710027100371004710057100671007710087100971010710117101271013710147101571016710177101871019710207102171022710237102471025710267102771028710297103071031710327103371034710357103671037710387103971040710417104271043710447104571046710477104871049710507105171052710537105471055710567105771058710597106071061710627106371064710657106671067710687106971070710717107271073710747107571076710777107871079710807108171082710837108471085710867108771088710897109071091710927109371094710957109671097710987109971100711017110271103711047110571106711077110871109711107111171112711137111471115711167111771118711197112071121711227112371124711257112671127711287112971130711317113271133711347113571136711377113871139711407114171142711437114471145711467114771148711497115071151711527115371154711557115671157711587115971160711617116271163711647116571166711677116871169711707117171172711737117471175711767117771178711797118071181711827118371184711857118671187711887118971190711917119271193711947119571196711977119871199712007120171202712037120471205712067120771208712097121071211712127121371214712157121671217712187121971220712217122271223712247122571226712277122871229712307123171232712337123471235712367123771238712397124071241712427124371244712457124671247712487124971250712517125271253712547125571256712577125871259712607126171262712637126471265712667126771268712697127071271712727127371274712757127671277712787127971280712817128271283712847128571286712877128871289712907129171292712937129471295712967129771298712997130071301713027130371304713057130671307713087130971310713117131271313713147131571316713177131871319713207132171322713237132471325713267132771328713297133071331713327133371334713357133671337713387133971340713417134271343713447134571346713477134871349713507135171352713537135471355713567135771358713597136071361713627136371364713657136671367713687136971370713717137271373713747137571376713777137871379713807138171382713837138471385713867138771388713897139071391713927139371394713957139671397713987139971400714017140271403714047140571406714077140871409714107141171412714137141471415714167141771418714197142071421714227142371424714257142671427714287142971430714317143271433714347143571436714377143871439714407144171442714437144471445714467144771448714497145071451714527145371454714557145671457714587145971460714617146271463714647146571466714677146871469714707147171472714737147471475714767147771478714797148071481714827148371484714857148671487714887148971490714917149271493714947149571496714977149871499715007150171502715037150471505715067150771508715097151071511715127151371514715157151671517715187151971520715217152271523715247152571526715277152871529715307153171532715337153471535715367153771538715397154071541715427154371544715457154671547715487154971550715517155271553715547155571556715577155871559715607156171562715637156471565715667156771568715697157071571715727157371574715757157671577715787157971580715817158271583715847158571586715877158871589715907159171592715937159471595715967159771598715997160071601716027160371604716057160671607716087160971610716117161271613716147161571616716177161871619716207162171622716237162471625716267162771628716297163071631716327163371634716357163671637716387163971640716417164271643716447164571646716477164871649716507165171652716537165471655716567165771658716597166071661716627166371664716657166671667716687166971670716717167271673716747167571676716777167871679716807168171682716837168471685716867168771688716897169071691716927169371694716957169671697716987169971700717017170271703717047170571706717077170871709717107171171712717137171471715717167171771718717197172071721717227172371724717257172671727717287172971730717317173271733717347173571736717377173871739717407174171742717437174471745717467174771748717497175071751717527175371754717557175671757717587175971760717617176271763717647176571766717677176871769717707177171772717737177471775717767177771778717797178071781717827178371784717857178671787717887178971790717917179271793717947179571796717977179871799718007180171802718037180471805718067180771808718097181071811718127181371814718157181671817718187181971820718217182271823718247182571826718277182871829718307183171832718337183471835718367183771838718397184071841718427184371844718457184671847718487184971850718517185271853718547185571856718577185871859718607186171862718637186471865718667186771868718697187071871718727187371874718757187671877718787187971880718817188271883718847188571886718877188871889718907189171892718937189471895718967189771898718997190071901719027190371904719057190671907719087190971910719117191271913719147191571916719177191871919719207192171922719237192471925719267192771928719297193071931719327193371934719357193671937719387193971940719417194271943719447194571946719477194871949719507195171952719537195471955719567195771958719597196071961719627196371964719657196671967719687196971970719717197271973719747197571976719777197871979719807198171982719837198471985719867198771988719897199071991719927199371994719957199671997719987199972000720017200272003720047200572006720077200872009720107201172012720137201472015720167201772018720197202072021720227202372024720257202672027720287202972030720317203272033720347203572036720377203872039720407204172042720437204472045720467204772048720497205072051720527205372054720557205672057720587205972060720617206272063720647206572066720677206872069720707207172072720737207472075720767207772078720797208072081720827208372084720857208672087720887208972090720917209272093720947209572096720977209872099721007210172102721037210472105721067210772108721097211072111721127211372114721157211672117721187211972120721217212272123721247212572126721277212872129721307213172132721337213472135721367213772138721397214072141721427214372144721457214672147721487214972150721517215272153721547215572156721577215872159721607216172162721637216472165721667216772168721697217072171721727217372174721757217672177721787217972180721817218272183721847218572186721877218872189721907219172192721937219472195721967219772198721997220072201722027220372204722057220672207722087220972210722117221272213722147221572216722177221872219722207222172222722237222472225722267222772228722297223072231722327223372234722357223672237722387223972240722417224272243722447224572246722477224872249722507225172252722537225472255722567225772258722597226072261722627226372264722657226672267722687226972270722717227272273722747227572276722777227872279722807228172282722837228472285722867228772288722897229072291722927229372294722957229672297722987229972300723017230272303723047230572306723077230872309723107231172312723137231472315723167231772318723197232072321723227232372324723257232672327723287232972330723317233272333723347233572336723377233872339723407234172342723437234472345723467234772348723497235072351723527235372354723557235672357723587235972360723617236272363723647236572366723677236872369723707237172372723737237472375723767237772378723797238072381723827238372384723857238672387723887238972390723917239272393723947239572396723977239872399724007240172402724037240472405724067240772408724097241072411724127241372414724157241672417724187241972420724217242272423724247242572426724277242872429724307243172432724337243472435724367243772438724397244072441724427244372444724457244672447724487244972450724517245272453724547245572456724577245872459724607246172462724637246472465724667246772468724697247072471724727247372474724757247672477724787247972480724817248272483724847248572486724877248872489724907249172492724937249472495724967249772498724997250072501725027250372504725057250672507725087250972510725117251272513725147251572516725177251872519725207252172522725237252472525725267252772528725297253072531725327253372534725357253672537725387253972540725417254272543725447254572546725477254872549725507255172552725537255472555725567255772558725597256072561725627256372564725657256672567725687256972570725717257272573725747257572576725777257872579725807258172582725837258472585725867258772588725897259072591725927259372594725957259672597725987259972600726017260272603726047260572606726077260872609726107261172612726137261472615726167261772618726197262072621726227262372624726257262672627726287262972630726317263272633726347263572636726377263872639726407264172642726437264472645726467264772648726497265072651726527265372654726557265672657726587265972660726617266272663726647266572666726677266872669726707267172672726737267472675726767267772678726797268072681726827268372684726857268672687726887268972690726917269272693726947269572696726977269872699727007270172702727037270472705727067270772708727097271072711727127271372714727157271672717727187271972720727217272272723727247272572726727277272872729727307273172732727337273472735727367273772738727397274072741727427274372744727457274672747727487274972750727517275272753727547275572756727577275872759727607276172762727637276472765727667276772768727697277072771727727277372774727757277672777727787277972780727817278272783727847278572786727877278872789727907279172792727937279472795727967279772798727997280072801728027280372804728057280672807728087280972810728117281272813728147281572816728177281872819728207282172822728237282472825728267282772828728297283072831728327283372834728357283672837728387283972840728417284272843728447284572846728477284872849728507285172852728537285472855728567285772858728597286072861728627286372864728657286672867728687286972870728717287272873728747287572876728777287872879728807288172882728837288472885728867288772888728897289072891728927289372894728957289672897728987289972900729017290272903729047290572906729077290872909729107291172912729137291472915729167291772918729197292072921729227292372924729257292672927729287292972930729317293272933729347293572936729377293872939729407294172942729437294472945729467294772948729497295072951729527295372954729557295672957729587295972960729617296272963729647296572966729677296872969729707297172972729737297472975729767297772978729797298072981729827298372984729857298672987729887298972990729917299272993729947299572996729977299872999730007300173002730037300473005730067300773008730097301073011730127301373014730157301673017730187301973020730217302273023730247302573026730277302873029730307303173032730337303473035730367303773038730397304073041730427304373044730457304673047730487304973050730517305273053730547305573056730577305873059730607306173062730637306473065730667306773068730697307073071730727307373074730757307673077730787307973080730817308273083730847308573086730877308873089730907309173092730937309473095730967309773098730997310073101731027310373104731057310673107731087310973110731117311273113731147311573116731177311873119731207312173122731237312473125731267312773128731297313073131731327313373134731357313673137731387313973140731417314273143731447314573146731477314873149731507315173152731537315473155731567315773158731597316073161731627316373164731657316673167731687316973170731717317273173731747317573176731777317873179731807318173182731837318473185731867318773188731897319073191731927319373194731957319673197731987319973200732017320273203732047320573206732077320873209732107321173212732137321473215732167321773218732197322073221732227322373224732257322673227732287322973230732317323273233732347323573236732377323873239732407324173242732437324473245732467324773248732497325073251732527325373254732557325673257732587325973260732617326273263732647326573266732677326873269732707327173272732737327473275732767327773278732797328073281732827328373284732857328673287732887328973290732917329273293732947329573296732977329873299733007330173302733037330473305733067330773308733097331073311733127331373314733157331673317733187331973320733217332273323733247332573326733277332873329733307333173332733337333473335733367333773338733397334073341733427334373344733457334673347733487334973350733517335273353733547335573356733577335873359733607336173362733637336473365733667336773368733697337073371733727337373374733757337673377733787337973380733817338273383733847338573386733877338873389733907339173392733937339473395733967339773398733997340073401734027340373404734057340673407734087340973410734117341273413734147341573416734177341873419734207342173422734237342473425734267342773428734297343073431734327343373434734357343673437734387343973440734417344273443734447344573446734477344873449734507345173452734537345473455734567345773458734597346073461734627346373464734657346673467734687346973470734717347273473734747347573476734777347873479734807348173482734837348473485734867348773488734897349073491734927349373494734957349673497734987349973500735017350273503735047350573506735077350873509735107351173512735137351473515735167351773518735197352073521735227352373524735257352673527735287352973530735317353273533735347353573536735377353873539735407354173542735437354473545735467354773548735497355073551735527355373554735557355673557735587355973560735617356273563735647356573566735677356873569735707357173572735737357473575735767357773578735797358073581735827358373584735857358673587735887358973590735917359273593735947359573596735977359873599736007360173602736037360473605736067360773608736097361073611736127361373614736157361673617736187361973620736217362273623736247362573626736277362873629736307363173632736337363473635736367363773638736397364073641736427364373644736457364673647736487364973650736517365273653736547365573656736577365873659736607366173662736637366473665736667366773668736697367073671736727367373674736757367673677736787367973680736817368273683736847368573686736877368873689736907369173692736937369473695736967369773698736997370073701737027370373704737057370673707737087370973710737117371273713737147371573716737177371873719737207372173722737237372473725737267372773728737297373073731737327373373734737357373673737737387373973740737417374273743737447374573746737477374873749737507375173752737537375473755737567375773758737597376073761737627376373764737657376673767737687376973770737717377273773737747377573776737777377873779737807378173782737837378473785737867378773788737897379073791737927379373794737957379673797737987379973800738017380273803738047380573806738077380873809738107381173812738137381473815738167381773818738197382073821738227382373824738257382673827738287382973830738317383273833738347383573836738377383873839738407384173842738437384473845738467384773848738497385073851738527385373854738557385673857738587385973860738617386273863738647386573866738677386873869738707387173872738737387473875738767387773878738797388073881738827388373884738857388673887738887388973890738917389273893738947389573896738977389873899739007390173902739037390473905739067390773908739097391073911739127391373914739157391673917739187391973920739217392273923739247392573926739277392873929739307393173932739337393473935739367393773938739397394073941739427394373944739457394673947739487394973950739517395273953739547395573956739577395873959739607396173962739637396473965739667396773968739697397073971739727397373974739757397673977739787397973980739817398273983739847398573986739877398873989739907399173992739937399473995739967399773998739997400074001740027400374004740057400674007740087400974010740117401274013740147401574016740177401874019740207402174022740237402474025740267402774028740297403074031740327403374034740357403674037740387403974040740417404274043740447404574046740477404874049740507405174052740537405474055740567405774058740597406074061740627406374064740657406674067740687406974070740717407274073740747407574076740777407874079740807408174082740837408474085740867408774088740897409074091740927409374094740957409674097740987409974100741017410274103741047410574106741077410874109741107411174112741137411474115741167411774118741197412074121741227412374124741257412674127741287412974130741317413274133741347413574136741377413874139741407414174142741437414474145741467414774148741497415074151741527415374154741557415674157741587415974160741617416274163741647416574166741677416874169741707417174172741737417474175741767417774178741797418074181741827418374184741857418674187741887418974190741917419274193741947419574196741977419874199742007420174202742037420474205742067420774208742097421074211742127421374214742157421674217742187421974220742217422274223742247422574226742277422874229742307423174232742337423474235742367423774238742397424074241742427424374244742457424674247742487424974250742517425274253742547425574256742577425874259742607426174262742637426474265742667426774268742697427074271742727427374274742757427674277742787427974280742817428274283742847428574286742877428874289742907429174292742937429474295742967429774298742997430074301743027430374304743057430674307743087430974310743117431274313743147431574316743177431874319743207432174322743237432474325743267432774328743297433074331743327433374334743357433674337743387433974340743417434274343743447434574346743477434874349743507435174352743537435474355743567435774358743597436074361743627436374364743657436674367743687436974370743717437274373743747437574376743777437874379743807438174382743837438474385743867438774388743897439074391743927439374394743957439674397743987439974400744017440274403744047440574406744077440874409744107441174412744137441474415744167441774418744197442074421744227442374424744257442674427744287442974430744317443274433744347443574436744377443874439744407444174442744437444474445744467444774448744497445074451744527445374454744557445674457744587445974460744617446274463744647446574466744677446874469744707447174472744737447474475744767447774478744797448074481744827448374484744857448674487744887448974490744917449274493744947449574496744977449874499745007450174502745037450474505745067450774508745097451074511745127451374514745157451674517745187451974520745217452274523745247452574526745277452874529745307453174532745337453474535745367453774538745397454074541745427454374544745457454674547745487454974550745517455274553745547455574556745577455874559745607456174562745637456474565745667456774568745697457074571745727457374574745757457674577745787457974580745817458274583745847458574586745877458874589745907459174592745937459474595745967459774598745997460074601746027460374604746057460674607746087460974610746117461274613746147461574616746177461874619746207462174622746237462474625746267462774628746297463074631746327463374634746357463674637746387463974640746417464274643746447464574646746477464874649746507465174652746537465474655746567465774658746597466074661746627466374664746657466674667746687466974670746717467274673746747467574676746777467874679746807468174682746837468474685746867468774688746897469074691746927469374694746957469674697746987469974700747017470274703747047470574706747077470874709747107471174712747137471474715747167471774718747197472074721747227472374724747257472674727747287472974730747317473274733747347473574736747377473874739747407474174742747437474474745747467474774748747497475074751747527475374754747557475674757747587475974760747617476274763747647476574766747677476874769747707477174772747737477474775747767477774778747797478074781747827478374784747857478674787747887478974790747917479274793747947479574796747977479874799748007480174802748037480474805748067480774808748097481074811748127481374814748157481674817748187481974820748217482274823748247482574826748277482874829748307483174832748337483474835748367483774838748397484074841748427484374844748457484674847748487484974850748517485274853748547485574856748577485874859748607486174862748637486474865748667486774868748697487074871748727487374874748757487674877748787487974880748817488274883748847488574886748877488874889748907489174892748937489474895748967489774898748997490074901749027490374904749057490674907749087490974910749117491274913749147491574916749177491874919749207492174922749237492474925749267492774928749297493074931749327493374934749357493674937749387493974940749417494274943749447494574946749477494874949749507495174952749537495474955749567495774958749597496074961749627496374964749657496674967749687496974970749717497274973749747497574976749777497874979749807498174982749837498474985749867498774988749897499074991749927499374994749957499674997749987499975000750017500275003750047500575006750077500875009750107501175012750137501475015750167501775018750197502075021750227502375024750257502675027750287502975030750317503275033750347503575036750377503875039750407504175042750437504475045750467504775048750497505075051750527505375054750557505675057750587505975060750617506275063750647506575066750677506875069750707507175072750737507475075750767507775078750797508075081750827508375084750857508675087750887508975090750917509275093750947509575096750977509875099751007510175102751037510475105751067510775108751097511075111751127511375114751157511675117751187511975120751217512275123751247512575126751277512875129751307513175132751337513475135751367513775138751397514075141751427514375144751457514675147751487514975150751517515275153751547515575156751577515875159751607516175162751637516475165751667516775168751697517075171751727517375174751757517675177751787517975180751817518275183751847518575186751877518875189751907519175192751937519475195751967519775198751997520075201752027520375204752057520675207752087520975210752117521275213752147521575216752177521875219752207522175222752237522475225752267522775228752297523075231752327523375234752357523675237752387523975240752417524275243752447524575246752477524875249752507525175252752537525475255752567525775258752597526075261752627526375264752657526675267752687526975270752717527275273752747527575276752777527875279752807528175282752837528475285752867528775288752897529075291752927529375294752957529675297752987529975300753017530275303753047530575306753077530875309753107531175312753137531475315753167531775318753197532075321753227532375324753257532675327753287532975330753317533275333753347533575336753377533875339753407534175342753437534475345753467534775348753497535075351753527535375354753557535675357753587535975360753617536275363753647536575366753677536875369753707537175372753737537475375753767537775378753797538075381753827538375384753857538675387753887538975390753917539275393753947539575396753977539875399754007540175402754037540475405754067540775408754097541075411754127541375414754157541675417754187541975420754217542275423754247542575426754277542875429754307543175432754337543475435754367543775438754397544075441754427544375444754457544675447754487544975450754517545275453754547545575456754577545875459754607546175462754637546475465754667546775468754697547075471754727547375474754757547675477754787547975480754817548275483754847548575486754877548875489754907549175492754937549475495754967549775498754997550075501755027550375504755057550675507755087550975510755117551275513755147551575516755177551875519755207552175522755237552475525755267552775528755297553075531755327553375534755357553675537755387553975540755417554275543755447554575546755477554875549755507555175552755537555475555755567555775558755597556075561755627556375564755657556675567755687556975570755717557275573755747557575576755777557875579755807558175582755837558475585755867558775588755897559075591755927559375594755957559675597755987559975600756017560275603756047560575606756077560875609756107561175612756137561475615756167561775618756197562075621756227562375624756257562675627756287562975630756317563275633756347563575636756377563875639756407564175642756437564475645756467564775648756497565075651756527565375654756557565675657756587565975660756617566275663756647566575666756677566875669756707567175672756737567475675756767567775678756797568075681756827568375684756857568675687756887568975690756917569275693756947569575696756977569875699757007570175702757037570475705757067570775708757097571075711757127571375714757157571675717757187571975720757217572275723757247572575726757277572875729757307573175732757337573475735757367573775738757397574075741757427574375744757457574675747757487574975750757517575275753757547575575756757577575875759757607576175762757637576475765757667576775768757697577075771757727577375774757757577675777757787577975780757817578275783757847578575786757877578875789757907579175792757937579475795757967579775798757997580075801758027580375804758057580675807758087580975810758117581275813758147581575816758177581875819758207582175822758237582475825758267582775828758297583075831758327583375834758357583675837758387583975840758417584275843758447584575846758477584875849758507585175852758537585475855758567585775858758597586075861758627586375864758657586675867758687586975870758717587275873758747587575876758777587875879758807588175882758837588475885758867588775888758897589075891758927589375894758957589675897758987589975900759017590275903759047590575906759077590875909759107591175912759137591475915759167591775918759197592075921759227592375924759257592675927759287592975930759317593275933759347593575936759377593875939759407594175942759437594475945759467594775948759497595075951759527595375954759557595675957759587595975960759617596275963759647596575966759677596875969759707597175972759737597475975759767597775978759797598075981759827598375984759857598675987759887598975990759917599275993759947599575996759977599875999760007600176002760037600476005760067600776008760097601076011760127601376014760157601676017760187601976020760217602276023760247602576026760277602876029760307603176032760337603476035760367603776038760397604076041760427604376044760457604676047760487604976050760517605276053760547605576056760577605876059760607606176062760637606476065760667606776068760697607076071760727607376074760757607676077760787607976080760817608276083760847608576086760877608876089760907609176092760937609476095760967609776098760997610076101761027610376104761057610676107761087610976110761117611276113761147611576116761177611876119761207612176122761237612476125761267612776128761297613076131761327613376134761357613676137761387613976140761417614276143761447614576146761477614876149761507615176152761537615476155761567615776158761597616076161761627616376164761657616676167761687616976170761717617276173761747617576176761777617876179761807618176182761837618476185761867618776188761897619076191761927619376194761957619676197761987619976200762017620276203762047620576206762077620876209762107621176212762137621476215762167621776218762197622076221762227622376224762257622676227762287622976230762317623276233762347623576236762377623876239762407624176242762437624476245762467624776248762497625076251762527625376254762557625676257762587625976260762617626276263762647626576266762677626876269762707627176272762737627476275762767627776278762797628076281762827628376284762857628676287762887628976290762917629276293762947629576296762977629876299763007630176302763037630476305763067630776308763097631076311763127631376314763157631676317763187631976320763217632276323763247632576326763277632876329763307633176332763337633476335763367633776338763397634076341763427634376344763457634676347763487634976350763517635276353763547635576356763577635876359763607636176362763637636476365763667636776368763697637076371763727637376374763757637676377763787637976380763817638276383763847638576386763877638876389763907639176392763937639476395763967639776398763997640076401764027640376404764057640676407764087640976410764117641276413764147641576416764177641876419764207642176422764237642476425764267642776428764297643076431764327643376434764357643676437764387643976440764417644276443764447644576446764477644876449764507645176452764537645476455764567645776458764597646076461764627646376464764657646676467764687646976470764717647276473764747647576476764777647876479764807648176482764837648476485764867648776488764897649076491764927649376494764957649676497764987649976500765017650276503765047650576506765077650876509765107651176512765137651476515765167651776518765197652076521765227652376524765257652676527765287652976530765317653276533765347653576536765377653876539765407654176542765437654476545765467654776548765497655076551765527655376554765557655676557765587655976560765617656276563765647656576566765677656876569765707657176572765737657476575765767657776578765797658076581765827658376584765857658676587765887658976590765917659276593765947659576596765977659876599766007660176602766037660476605766067660776608766097661076611766127661376614766157661676617766187661976620766217662276623766247662576626766277662876629766307663176632766337663476635766367663776638766397664076641766427664376644766457664676647766487664976650766517665276653766547665576656766577665876659766607666176662766637666476665766667666776668766697667076671766727667376674766757667676677766787667976680766817668276683766847668576686766877668876689766907669176692766937669476695766967669776698766997670076701767027670376704767057670676707767087670976710767117671276713767147671576716767177671876719767207672176722767237672476725767267672776728767297673076731767327673376734767357673676737767387673976740767417674276743767447674576746767477674876749767507675176752767537675476755767567675776758767597676076761767627676376764767657676676767767687676976770767717677276773767747677576776767777677876779767807678176782767837678476785767867678776788767897679076791767927679376794767957679676797767987679976800768017680276803768047680576806768077680876809768107681176812768137681476815768167681776818768197682076821768227682376824768257682676827768287682976830768317683276833768347683576836768377683876839768407684176842768437684476845768467684776848768497685076851768527685376854768557685676857768587685976860768617686276863768647686576866768677686876869768707687176872768737687476875768767687776878768797688076881768827688376884768857688676887768887688976890768917689276893768947689576896768977689876899769007690176902769037690476905769067690776908769097691076911769127691376914769157691676917769187691976920769217692276923769247692576926769277692876929769307693176932769337693476935769367693776938769397694076941769427694376944769457694676947769487694976950769517695276953769547695576956769577695876959769607696176962769637696476965769667696776968769697697076971769727697376974769757697676977769787697976980769817698276983769847698576986769877698876989769907699176992769937699476995769967699776998769997700077001770027700377004770057700677007770087700977010770117701277013770147701577016770177701877019770207702177022770237702477025770267702777028770297703077031770327703377034770357703677037770387703977040770417704277043770447704577046770477704877049770507705177052770537705477055770567705777058770597706077061770627706377064770657706677067770687706977070770717707277073770747707577076770777707877079770807708177082770837708477085770867708777088770897709077091770927709377094770957709677097770987709977100771017710277103771047710577106771077710877109771107711177112771137711477115771167711777118771197712077121771227712377124771257712677127771287712977130771317713277133771347713577136771377713877139771407714177142771437714477145771467714777148771497715077151771527715377154771557715677157771587715977160771617716277163771647716577166771677716877169771707717177172771737717477175771767717777178771797718077181771827718377184771857718677187771887718977190771917719277193771947719577196771977719877199772007720177202772037720477205772067720777208772097721077211772127721377214772157721677217772187721977220772217722277223772247722577226772277722877229772307723177232772337723477235772367723777238772397724077241772427724377244772457724677247772487724977250772517725277253772547725577256772577725877259772607726177262772637726477265772667726777268772697727077271772727727377274772757727677277772787727977280772817728277283772847728577286772877728877289772907729177292772937729477295772967729777298772997730077301773027730377304773057730677307773087730977310773117731277313773147731577316773177731877319773207732177322773237732477325773267732777328773297733077331773327733377334773357733677337773387733977340773417734277343773447734577346773477734877349773507735177352773537735477355773567735777358773597736077361773627736377364773657736677367773687736977370773717737277373773747737577376773777737877379773807738177382773837738477385773867738777388773897739077391773927739377394773957739677397773987739977400774017740277403774047740577406774077740877409774107741177412774137741477415774167741777418774197742077421774227742377424774257742677427774287742977430774317743277433774347743577436774377743877439774407744177442774437744477445774467744777448774497745077451774527745377454774557745677457774587745977460774617746277463774647746577466774677746877469774707747177472774737747477475774767747777478774797748077481774827748377484774857748677487774887748977490774917749277493774947749577496774977749877499775007750177502775037750477505775067750777508775097751077511775127751377514775157751677517775187751977520775217752277523775247752577526775277752877529775307753177532775337753477535775367753777538775397754077541775427754377544775457754677547775487754977550775517755277553775547755577556775577755877559775607756177562775637756477565775667756777568775697757077571775727757377574775757757677577775787757977580775817758277583775847758577586775877758877589775907759177592775937759477595775967759777598775997760077601776027760377604776057760677607776087760977610776117761277613776147761577616776177761877619776207762177622776237762477625776267762777628776297763077631776327763377634776357763677637776387763977640776417764277643776447764577646776477764877649776507765177652776537765477655776567765777658776597766077661776627766377664776657766677667776687766977670776717767277673776747767577676776777767877679776807768177682776837768477685776867768777688776897769077691776927769377694776957769677697776987769977700777017770277703777047770577706777077770877709777107771177712777137771477715777167771777718777197772077721777227772377724777257772677727777287772977730777317773277733777347773577736777377773877739777407774177742777437774477745777467774777748777497775077751777527775377754777557775677757777587775977760777617776277763777647776577766777677776877769777707777177772777737777477775777767777777778777797778077781777827778377784777857778677787777887778977790777917779277793777947779577796777977779877799778007780177802778037780477805778067780777808778097781077811778127781377814778157781677817778187781977820778217782277823778247782577826778277782877829778307783177832778337783477835778367783777838778397784077841778427784377844778457784677847778487784977850778517785277853778547785577856778577785877859778607786177862778637786477865778667786777868778697787077871778727787377874778757787677877778787787977880778817788277883778847788577886778877788877889778907789177892778937789477895778967789777898778997790077901779027790377904779057790677907779087790977910779117791277913779147791577916779177791877919779207792177922779237792477925779267792777928779297793077931779327793377934779357793677937779387793977940779417794277943779447794577946779477794877949779507795177952779537795477955779567795777958779597796077961779627796377964779657796677967779687796977970779717797277973779747797577976779777797877979779807798177982779837798477985779867798777988779897799077991779927799377994779957799677997779987799978000780017800278003780047800578006780077800878009780107801178012780137801478015780167801778018780197802078021780227802378024780257802678027780287802978030780317803278033780347803578036780377803878039780407804178042780437804478045780467804778048780497805078051780527805378054780557805678057780587805978060780617806278063780647806578066780677806878069780707807178072780737807478075780767807778078780797808078081780827808378084780857808678087780887808978090780917809278093780947809578096780977809878099781007810178102781037810478105781067810778108781097811078111781127811378114781157811678117781187811978120781217812278123781247812578126781277812878129781307813178132781337813478135781367813778138781397814078141781427814378144781457814678147781487814978150781517815278153781547815578156781577815878159781607816178162781637816478165781667816778168781697817078171781727817378174781757817678177781787817978180781817818278183781847818578186781877818878189781907819178192781937819478195781967819778198781997820078201782027820378204782057820678207782087820978210782117821278213782147821578216782177821878219782207822178222782237822478225782267822778228782297823078231782327823378234782357823678237782387823978240782417824278243782447824578246782477824878249782507825178252782537825478255782567825778258782597826078261782627826378264782657826678267782687826978270782717827278273782747827578276782777827878279782807828178282782837828478285782867828778288782897829078291782927829378294782957829678297782987829978300783017830278303783047830578306783077830878309783107831178312783137831478315783167831778318783197832078321783227832378324783257832678327783287832978330783317833278333783347833578336783377833878339783407834178342783437834478345783467834778348783497835078351783527835378354783557835678357783587835978360783617836278363783647836578366783677836878369783707837178372783737837478375783767837778378783797838078381783827838378384783857838678387783887838978390783917839278393783947839578396783977839878399784007840178402784037840478405784067840778408784097841078411784127841378414784157841678417784187841978420784217842278423784247842578426784277842878429784307843178432784337843478435784367843778438784397844078441784427844378444784457844678447784487844978450784517845278453784547845578456784577845878459784607846178462784637846478465784667846778468784697847078471784727847378474784757847678477784787847978480784817848278483784847848578486784877848878489784907849178492784937849478495784967849778498784997850078501785027850378504785057850678507785087850978510785117851278513785147851578516785177851878519785207852178522785237852478525785267852778528785297853078531785327853378534785357853678537785387853978540785417854278543785447854578546785477854878549785507855178552785537855478555785567855778558785597856078561785627856378564785657856678567785687856978570785717857278573785747857578576785777857878579785807858178582785837858478585785867858778588785897859078591785927859378594785957859678597785987859978600786017860278603786047860578606786077860878609786107861178612786137861478615786167861778618786197862078621786227862378624786257862678627786287862978630786317863278633786347863578636786377863878639786407864178642786437864478645786467864778648786497865078651786527865378654786557865678657786587865978660786617866278663786647866578666786677866878669786707867178672786737867478675786767867778678786797868078681786827868378684786857868678687786887868978690786917869278693786947869578696786977869878699787007870178702787037870478705787067870778708787097871078711787127871378714787157871678717787187871978720787217872278723787247872578726787277872878729787307873178732787337873478735787367873778738787397874078741787427874378744787457874678747787487874978750787517875278753787547875578756787577875878759787607876178762787637876478765787667876778768787697877078771787727877378774787757877678777787787877978780787817878278783787847878578786787877878878789787907879178792787937879478795787967879778798787997880078801788027880378804788057880678807788087880978810788117881278813788147881578816788177881878819788207882178822788237882478825788267882778828788297883078831788327883378834788357883678837788387883978840788417884278843788447884578846788477884878849788507885178852788537885478855788567885778858788597886078861788627886378864788657886678867788687886978870788717887278873788747887578876788777887878879788807888178882788837888478885788867888778888788897889078891788927889378894788957889678897788987889978900789017890278903789047890578906789077890878909789107891178912789137891478915789167891778918789197892078921789227892378924789257892678927789287892978930789317893278933789347893578936789377893878939789407894178942789437894478945789467894778948789497895078951789527895378954789557895678957789587895978960789617896278963789647896578966789677896878969789707897178972789737897478975789767897778978789797898078981789827898378984789857898678987789887898978990789917899278993789947899578996789977899878999790007900179002790037900479005790067900779008790097901079011790127901379014790157901679017790187901979020790217902279023790247902579026790277902879029790307903179032790337903479035790367903779038790397904079041790427904379044790457904679047790487904979050790517905279053790547905579056790577905879059790607906179062790637906479065790667906779068790697907079071790727907379074790757907679077790787907979080790817908279083790847908579086790877908879089790907909179092790937909479095790967909779098790997910079101791027910379104791057910679107791087910979110791117911279113791147911579116791177911879119791207912179122791237912479125791267912779128791297913079131791327913379134791357913679137791387913979140791417914279143791447914579146791477914879149791507915179152791537915479155791567915779158791597916079161791627916379164791657916679167791687916979170791717917279173791747917579176791777917879179791807918179182791837918479185791867918779188791897919079191791927919379194791957919679197791987919979200792017920279203792047920579206792077920879209792107921179212792137921479215792167921779218792197922079221792227922379224792257922679227792287922979230792317923279233792347923579236792377923879239792407924179242792437924479245792467924779248792497925079251792527925379254792557925679257792587925979260792617926279263792647926579266792677926879269792707927179272792737927479275792767927779278792797928079281792827928379284792857928679287792887928979290792917929279293792947929579296792977929879299793007930179302793037930479305793067930779308793097931079311793127931379314793157931679317793187931979320793217932279323793247932579326793277932879329793307933179332793337933479335793367933779338793397934079341793427934379344793457934679347793487934979350793517935279353793547935579356793577935879359793607936179362793637936479365793667936779368793697937079371793727937379374793757937679377793787937979380793817938279383793847938579386793877938879389793907939179392793937939479395793967939779398793997940079401794027940379404794057940679407794087940979410794117941279413794147941579416794177941879419794207942179422794237942479425794267942779428794297943079431794327943379434794357943679437794387943979440794417944279443794447944579446794477944879449794507945179452794537945479455794567945779458794597946079461794627946379464794657946679467794687946979470794717947279473794747947579476794777947879479794807948179482794837948479485794867948779488794897949079491794927949379494794957949679497794987949979500795017950279503795047950579506795077950879509795107951179512795137951479515795167951779518795197952079521795227952379524795257952679527795287952979530795317953279533795347953579536795377953879539795407954179542795437954479545795467954779548795497955079551795527955379554795557955679557795587955979560795617956279563795647956579566795677956879569795707957179572795737957479575795767957779578795797958079581795827958379584795857958679587795887958979590795917959279593795947959579596795977959879599796007960179602796037960479605796067960779608796097961079611796127961379614796157961679617796187961979620796217962279623796247962579626796277962879629796307963179632796337963479635796367963779638796397964079641796427964379644796457964679647796487964979650796517965279653796547965579656796577965879659796607966179662796637966479665796667966779668796697967079671796727967379674796757967679677796787967979680796817968279683796847968579686796877968879689796907969179692796937969479695796967969779698796997970079701797027970379704797057970679707797087970979710797117971279713797147971579716797177971879719797207972179722797237972479725797267972779728797297973079731797327973379734797357973679737797387973979740797417974279743797447974579746797477974879749797507975179752797537975479755797567975779758797597976079761797627976379764797657976679767797687976979770797717977279773797747977579776797777977879779797807978179782797837978479785797867978779788797897979079791797927979379794797957979679797797987979979800798017980279803798047980579806798077980879809798107981179812798137981479815798167981779818798197982079821798227982379824798257982679827798287982979830798317983279833798347983579836798377983879839798407984179842798437984479845798467984779848798497985079851798527985379854798557985679857798587985979860798617986279863798647986579866798677986879869798707987179872798737987479875798767987779878798797988079881798827988379884798857988679887798887988979890798917989279893798947989579896798977989879899799007990179902799037990479905799067990779908799097991079911799127991379914799157991679917799187991979920799217992279923799247992579926799277992879929799307993179932799337993479935799367993779938799397994079941799427994379944799457994679947799487994979950799517995279953799547995579956799577995879959799607996179962799637996479965799667996779968799697997079971799727997379974799757997679977799787997979980799817998279983799847998579986799877998879989799907999179992799937999479995799967999779998799998000080001800028000380004800058000680007800088000980010800118001280013800148001580016800178001880019800208002180022800238002480025800268002780028800298003080031800328003380034800358003680037800388003980040800418004280043800448004580046800478004880049800508005180052800538005480055800568005780058800598006080061800628006380064800658006680067800688006980070800718007280073800748007580076800778007880079800808008180082800838008480085800868008780088800898009080091800928009380094800958009680097800988009980100801018010280103801048010580106801078010880109801108011180112801138011480115801168011780118801198012080121801228012380124801258012680127801288012980130801318013280133801348013580136801378013880139801408014180142801438014480145801468014780148801498015080151801528015380154801558015680157801588015980160801618016280163801648016580166801678016880169801708017180172801738017480175801768017780178801798018080181801828018380184801858018680187801888018980190801918019280193801948019580196801978019880199802008020180202802038020480205802068020780208802098021080211802128021380214802158021680217802188021980220802218022280223802248022580226802278022880229802308023180232802338023480235802368023780238802398024080241802428024380244802458024680247802488024980250802518025280253802548025580256802578025880259802608026180262802638026480265802668026780268802698027080271802728027380274802758027680277802788027980280802818028280283802848028580286802878028880289802908029180292802938029480295802968029780298802998030080301803028030380304803058030680307803088030980310803118031280313803148031580316803178031880319803208032180322803238032480325803268032780328803298033080331803328033380334803358033680337803388033980340803418034280343803448034580346803478034880349803508035180352803538035480355803568035780358803598036080361803628036380364803658036680367803688036980370803718037280373803748037580376803778037880379803808038180382803838038480385803868038780388803898039080391803928039380394803958039680397803988039980400804018040280403804048040580406804078040880409804108041180412804138041480415804168041780418804198042080421804228042380424804258042680427804288042980430804318043280433804348043580436804378043880439804408044180442804438044480445804468044780448804498045080451804528045380454804558045680457804588045980460804618046280463804648046580466804678046880469804708047180472804738047480475804768047780478804798048080481804828048380484804858048680487804888048980490804918049280493804948049580496804978049880499805008050180502805038050480505805068050780508805098051080511805128051380514805158051680517805188051980520805218052280523805248052580526805278052880529805308053180532805338053480535805368053780538805398054080541805428054380544805458054680547805488054980550805518055280553805548055580556805578055880559805608056180562805638056480565805668056780568805698057080571805728057380574805758057680577805788057980580805818058280583805848058580586805878058880589805908059180592805938059480595805968059780598805998060080601806028060380604806058060680607806088060980610806118061280613806148061580616806178061880619806208062180622806238062480625806268062780628806298063080631806328063380634806358063680637806388063980640806418064280643806448064580646806478064880649806508065180652806538065480655806568065780658806598066080661806628066380664806658066680667806688066980670806718067280673806748067580676806778067880679806808068180682806838068480685806868068780688806898069080691806928069380694806958069680697806988069980700807018070280703807048070580706807078070880709807108071180712807138071480715807168071780718807198072080721807228072380724807258072680727807288072980730807318073280733807348073580736807378073880739807408074180742807438074480745807468074780748807498075080751807528075380754807558075680757807588075980760807618076280763807648076580766807678076880769807708077180772807738077480775807768077780778807798078080781807828078380784807858078680787807888078980790807918079280793807948079580796807978079880799808008080180802808038080480805808068080780808808098081080811808128081380814808158081680817808188081980820808218082280823808248082580826808278082880829808308083180832808338083480835808368083780838808398084080841808428084380844808458084680847808488084980850808518085280853808548085580856808578085880859808608086180862808638086480865808668086780868808698087080871808728087380874808758087680877808788087980880808818088280883808848088580886808878088880889808908089180892808938089480895808968089780898808998090080901809028090380904809058090680907809088090980910809118091280913809148091580916809178091880919809208092180922809238092480925809268092780928809298093080931809328093380934809358093680937809388093980940809418094280943809448094580946809478094880949809508095180952809538095480955809568095780958809598096080961809628096380964809658096680967809688096980970809718097280973809748097580976809778097880979809808098180982809838098480985809868098780988809898099080991809928099380994809958099680997809988099981000810018100281003810048100581006810078100881009810108101181012810138101481015810168101781018810198102081021810228102381024810258102681027810288102981030810318103281033810348103581036810378103881039810408104181042810438104481045810468104781048810498105081051810528105381054810558105681057810588105981060810618106281063810648106581066810678106881069810708107181072810738107481075810768107781078810798108081081810828108381084810858108681087810888108981090810918109281093810948109581096810978109881099811008110181102811038110481105811068110781108811098111081111811128111381114811158111681117811188111981120811218112281123811248112581126811278112881129811308113181132811338113481135811368113781138811398114081141811428114381144811458114681147811488114981150811518115281153811548115581156811578115881159811608116181162811638116481165811668116781168811698117081171811728117381174811758117681177811788117981180811818118281183811848118581186811878118881189811908119181192811938119481195811968119781198811998120081201812028120381204812058120681207812088120981210812118121281213812148121581216812178121881219812208122181222812238122481225812268122781228812298123081231812328123381234812358123681237812388123981240812418124281243812448124581246812478124881249812508125181252812538125481255812568125781258812598126081261812628126381264812658126681267812688126981270812718127281273812748127581276812778127881279812808128181282812838128481285812868128781288812898129081291812928129381294812958129681297812988129981300813018130281303813048130581306813078130881309813108131181312813138131481315813168131781318813198132081321813228132381324813258132681327813288132981330813318133281333813348133581336813378133881339813408134181342813438134481345813468134781348813498135081351813528135381354813558135681357813588135981360813618136281363813648136581366813678136881369813708137181372813738137481375813768137781378813798138081381813828138381384813858138681387813888138981390813918139281393813948139581396813978139881399814008140181402814038140481405814068140781408814098141081411814128141381414814158141681417814188141981420814218142281423814248142581426814278142881429814308143181432814338143481435814368143781438814398144081441814428144381444814458144681447814488144981450814518145281453814548145581456814578145881459814608146181462814638146481465814668146781468814698147081471814728147381474814758147681477814788147981480814818148281483814848148581486814878148881489814908149181492814938149481495814968149781498814998150081501815028150381504815058150681507815088150981510815118151281513815148151581516815178151881519815208152181522815238152481525815268152781528815298153081531815328153381534815358153681537815388153981540815418154281543815448154581546815478154881549815508155181552815538155481555815568155781558815598156081561815628156381564815658156681567815688156981570815718157281573815748157581576815778157881579815808158181582815838158481585815868158781588815898159081591815928159381594815958159681597815988159981600816018160281603816048160581606816078160881609816108161181612816138161481615816168161781618816198162081621816228162381624816258162681627816288162981630816318163281633816348163581636816378163881639816408164181642816438164481645816468164781648816498165081651816528165381654816558165681657816588165981660816618166281663816648166581666816678166881669816708167181672816738167481675816768167781678816798168081681816828168381684816858168681687816888168981690816918169281693816948169581696816978169881699817008170181702817038170481705817068170781708817098171081711817128171381714817158171681717817188171981720817218172281723817248172581726817278172881729817308173181732817338173481735817368173781738817398174081741817428174381744817458174681747817488174981750817518175281753817548175581756817578175881759817608176181762817638176481765817668176781768817698177081771817728177381774817758177681777817788177981780817818178281783817848178581786817878178881789817908179181792817938179481795817968179781798817998180081801818028180381804818058180681807818088180981810818118181281813818148181581816818178181881819818208182181822818238182481825818268182781828818298183081831818328183381834818358183681837818388183981840818418184281843818448184581846818478184881849818508185181852818538185481855818568185781858818598186081861818628186381864818658186681867818688186981870818718187281873818748187581876818778187881879818808188181882818838188481885818868188781888818898189081891818928189381894818958189681897818988189981900819018190281903819048190581906819078190881909819108191181912819138191481915819168191781918819198192081921819228192381924819258192681927819288192981930819318193281933819348193581936819378193881939819408194181942819438194481945819468194781948819498195081951819528195381954819558195681957819588195981960819618196281963819648196581966819678196881969819708197181972819738197481975819768197781978819798198081981819828198381984819858198681987819888198981990819918199281993819948199581996819978199881999820008200182002820038200482005820068200782008820098201082011820128201382014820158201682017820188201982020820218202282023820248202582026820278202882029820308203182032820338203482035820368203782038820398204082041820428204382044820458204682047820488204982050820518205282053820548205582056820578205882059820608206182062820638206482065820668206782068820698207082071820728207382074820758207682077820788207982080820818208282083820848208582086820878208882089820908209182092820938209482095820968209782098820998210082101821028210382104821058210682107821088210982110821118211282113821148211582116821178211882119821208212182122821238212482125821268212782128821298213082131821328213382134821358213682137821388213982140821418214282143821448214582146821478214882149821508215182152821538215482155821568215782158821598216082161821628216382164821658216682167821688216982170821718217282173821748217582176821778217882179821808218182182821838218482185821868218782188821898219082191821928219382194821958219682197821988219982200822018220282203822048220582206822078220882209822108221182212822138221482215822168221782218822198222082221822228222382224822258222682227822288222982230822318223282233822348223582236822378223882239822408224182242822438224482245822468224782248822498225082251822528225382254822558225682257822588225982260822618226282263822648226582266822678226882269822708227182272822738227482275822768227782278822798228082281822828228382284822858228682287822888228982290822918229282293822948229582296822978229882299823008230182302823038230482305823068230782308823098231082311823128231382314823158231682317823188231982320823218232282323823248232582326823278232882329823308233182332823338233482335823368233782338823398234082341823428234382344823458234682347823488234982350823518235282353823548235582356823578235882359823608236182362823638236482365823668236782368823698237082371823728237382374823758237682377823788237982380823818238282383823848238582386823878238882389823908239182392823938239482395823968239782398823998240082401824028240382404824058240682407824088240982410824118241282413824148241582416824178241882419824208242182422824238242482425824268242782428824298243082431824328243382434824358243682437824388243982440824418244282443824448244582446824478244882449824508245182452824538245482455824568245782458824598246082461824628246382464824658246682467824688246982470824718247282473824748247582476824778247882479824808248182482824838248482485824868248782488824898249082491824928249382494824958249682497824988249982500825018250282503825048250582506825078250882509825108251182512825138251482515825168251782518825198252082521825228252382524825258252682527825288252982530825318253282533825348253582536825378253882539825408254182542825438254482545825468254782548825498255082551825528255382554825558255682557825588255982560825618256282563825648256582566825678256882569825708257182572825738257482575825768257782578825798258082581825828258382584825858258682587825888258982590825918259282593825948259582596825978259882599826008260182602826038260482605826068260782608826098261082611826128261382614826158261682617826188261982620826218262282623826248262582626826278262882629826308263182632826338263482635826368263782638826398264082641826428264382644826458264682647826488264982650826518265282653826548265582656826578265882659826608266182662826638266482665826668266782668826698267082671826728267382674826758267682677826788267982680826818268282683826848268582686826878268882689826908269182692826938269482695826968269782698826998270082701827028270382704827058270682707827088270982710827118271282713827148271582716827178271882719827208272182722827238272482725827268272782728827298273082731827328273382734827358273682737827388273982740827418274282743827448274582746827478274882749827508275182752827538275482755827568275782758827598276082761827628276382764827658276682767827688276982770827718277282773827748277582776827778277882779827808278182782827838278482785827868278782788827898279082791827928279382794827958279682797827988279982800828018280282803828048280582806828078280882809828108281182812828138281482815828168281782818828198282082821828228282382824828258282682827828288282982830828318283282833828348283582836828378283882839828408284182842828438284482845828468284782848828498285082851828528285382854828558285682857828588285982860828618286282863828648286582866828678286882869828708287182872828738287482875828768287782878828798288082881828828288382884828858288682887828888288982890828918289282893828948289582896828978289882899829008290182902829038290482905829068290782908829098291082911829128291382914829158291682917829188291982920829218292282923829248292582926829278292882929829308293182932829338293482935829368293782938829398294082941829428294382944829458294682947829488294982950829518295282953829548295582956829578295882959829608296182962829638296482965829668296782968829698297082971829728297382974829758297682977829788297982980829818298282983829848298582986829878298882989829908299182992829938299482995829968299782998829998300083001830028300383004830058300683007830088300983010830118301283013830148301583016830178301883019830208302183022830238302483025830268302783028830298303083031830328303383034830358303683037830388303983040830418304283043830448304583046830478304883049830508305183052830538305483055830568305783058830598306083061830628306383064830658306683067830688306983070830718307283073830748307583076830778307883079830808308183082830838308483085830868308783088830898309083091830928309383094830958309683097830988309983100831018310283103831048310583106831078310883109831108311183112831138311483115831168311783118831198312083121831228312383124831258312683127831288312983130831318313283133831348313583136831378313883139831408314183142831438314483145831468314783148831498315083151831528315383154831558315683157831588315983160831618316283163831648316583166831678316883169831708317183172831738317483175831768317783178831798318083181831828318383184831858318683187831888318983190831918319283193831948319583196831978319883199832008320183202832038320483205832068320783208832098321083211832128321383214832158321683217832188321983220832218322283223832248322583226832278322883229832308323183232832338323483235832368323783238832398324083241832428324383244832458324683247832488324983250832518325283253832548325583256832578325883259832608326183262832638326483265832668326783268832698327083271832728327383274832758327683277832788327983280832818328283283832848328583286832878328883289832908329183292832938329483295832968329783298832998330083301833028330383304833058330683307833088330983310833118331283313833148331583316833178331883319833208332183322833238332483325833268332783328833298333083331833328333383334833358333683337833388333983340833418334283343833448334583346833478334883349833508335183352833538335483355833568335783358833598336083361833628336383364833658336683367833688336983370833718337283373833748337583376833778337883379833808338183382833838338483385833868338783388833898339083391833928339383394833958339683397833988339983400834018340283403834048340583406834078340883409834108341183412834138341483415834168341783418834198342083421834228342383424834258342683427834288342983430834318343283433834348343583436834378343883439834408344183442834438344483445834468344783448834498345083451834528345383454834558345683457834588345983460834618346283463834648346583466834678346883469834708347183472834738347483475834768347783478834798348083481834828348383484834858348683487834888348983490834918349283493834948349583496834978349883499835008350183502835038350483505835068350783508835098351083511835128351383514835158351683517835188351983520835218352283523835248352583526835278352883529835308353183532835338353483535835368353783538835398354083541835428354383544835458354683547835488354983550835518355283553835548355583556835578355883559835608356183562835638356483565835668356783568835698357083571835728357383574835758357683577835788357983580835818358283583835848358583586835878358883589835908359183592835938359483595835968359783598835998360083601836028360383604836058360683607836088360983610836118361283613836148361583616836178361883619836208362183622836238362483625836268362783628836298363083631836328363383634836358363683637836388363983640836418364283643836448364583646836478364883649836508365183652836538365483655836568365783658836598366083661836628366383664836658366683667836688366983670836718367283673836748367583676836778367883679836808368183682836838368483685836868368783688836898369083691836928369383694836958369683697836988369983700837018370283703837048370583706837078370883709837108371183712837138371483715837168371783718837198372083721837228372383724837258372683727837288372983730837318373283733837348373583736837378373883739837408374183742837438374483745837468374783748837498375083751837528375383754837558375683757837588375983760837618376283763837648376583766837678376883769837708377183772837738377483775837768377783778837798378083781837828378383784837858378683787837888378983790837918379283793837948379583796837978379883799838008380183802838038380483805838068380783808838098381083811838128381383814838158381683817838188381983820838218382283823838248382583826838278382883829838308383183832838338383483835838368383783838838398384083841838428384383844838458384683847838488384983850838518385283853838548385583856838578385883859838608386183862838638386483865838668386783868838698387083871838728387383874838758387683877838788387983880838818388283883838848388583886838878388883889838908389183892838938389483895838968389783898838998390083901839028390383904839058390683907839088390983910839118391283913839148391583916839178391883919839208392183922839238392483925839268392783928839298393083931839328393383934839358393683937839388393983940839418394283943839448394583946839478394883949839508395183952839538395483955839568395783958839598396083961839628396383964839658396683967839688396983970839718397283973839748397583976839778397883979839808398183982839838398483985839868398783988839898399083991839928399383994839958399683997839988399984000840018400284003840048400584006840078400884009840108401184012840138401484015840168401784018840198402084021840228402384024840258402684027840288402984030840318403284033840348403584036840378403884039840408404184042840438404484045840468404784048840498405084051840528405384054840558405684057840588405984060840618406284063840648406584066840678406884069840708407184072840738407484075840768407784078840798408084081840828408384084840858408684087840888408984090840918409284093840948409584096840978409884099841008410184102841038410484105841068410784108841098411084111841128411384114841158411684117841188411984120841218412284123841248412584126841278412884129841308413184132841338413484135841368413784138841398414084141841428414384144841458414684147841488414984150841518415284153841548415584156841578415884159841608416184162841638416484165841668416784168841698417084171841728417384174841758417684177841788417984180841818418284183841848418584186841878418884189841908419184192841938419484195841968419784198841998420084201842028420384204842058420684207842088420984210842118421284213842148421584216842178421884219842208422184222842238422484225842268422784228842298423084231842328423384234842358423684237842388423984240842418424284243842448424584246842478424884249842508425184252842538425484255842568425784258842598426084261842628426384264842658426684267842688426984270842718427284273842748427584276842778427884279842808428184282842838428484285842868428784288842898429084291842928429384294842958429684297842988429984300843018430284303843048430584306843078430884309843108431184312843138431484315843168431784318843198432084321843228432384324843258432684327843288432984330843318433284333843348433584336843378433884339843408434184342843438434484345843468434784348843498435084351843528435384354843558435684357843588435984360843618436284363843648436584366843678436884369843708437184372843738437484375843768437784378843798438084381843828438384384843858438684387843888438984390843918439284393843948439584396843978439884399844008440184402844038440484405844068440784408844098441084411844128441384414844158441684417844188441984420844218442284423844248442584426844278442884429844308443184432844338443484435844368443784438844398444084441844428444384444844458444684447844488444984450844518445284453844548445584456844578445884459844608446184462844638446484465844668446784468844698447084471844728447384474844758447684477844788447984480844818448284483844848448584486844878448884489844908449184492844938449484495844968449784498844998450084501845028450384504845058450684507845088450984510845118451284513845148451584516845178451884519845208452184522845238452484525845268452784528845298453084531845328453384534845358453684537845388453984540845418454284543845448454584546845478454884549845508455184552845538455484555845568455784558845598456084561845628456384564845658456684567845688456984570845718457284573845748457584576845778457884579845808458184582845838458484585845868458784588845898459084591845928459384594845958459684597845988459984600846018460284603846048460584606846078460884609846108461184612846138461484615846168461784618846198462084621846228462384624846258462684627846288462984630846318463284633846348463584636846378463884639846408464184642846438464484645846468464784648846498465084651846528465384654846558465684657846588465984660846618466284663846648466584666846678466884669846708467184672846738467484675846768467784678846798468084681846828468384684846858468684687846888468984690846918469284693846948469584696846978469884699847008470184702847038470484705847068470784708847098471084711847128471384714847158471684717847188471984720847218472284723847248472584726847278472884729847308473184732847338473484735847368473784738847398474084741847428474384744847458474684747847488474984750847518475284753847548475584756847578475884759847608476184762847638476484765847668476784768847698477084771847728477384774847758477684777847788477984780847818478284783847848478584786847878478884789847908479184792847938479484795847968479784798847998480084801848028480384804848058480684807848088480984810848118481284813848148481584816848178481884819848208482184822848238482484825848268482784828848298483084831848328483384834848358483684837848388483984840848418484284843848448484584846848478484884849848508485184852848538485484855848568485784858848598486084861848628486384864848658486684867848688486984870848718487284873848748487584876848778487884879848808488184882848838488484885848868488784888848898489084891848928489384894848958489684897848988489984900849018490284903849048490584906849078490884909849108491184912849138491484915849168491784918849198492084921849228492384924849258492684927849288492984930849318493284933849348493584936849378493884939849408494184942849438494484945849468494784948849498495084951849528495384954849558495684957849588495984960849618496284963849648496584966849678496884969849708497184972849738497484975849768497784978849798498084981849828498384984849858498684987849888498984990849918499284993849948499584996849978499884999850008500185002850038500485005850068500785008850098501085011850128501385014850158501685017850188501985020850218502285023850248502585026850278502885029850308503185032850338503485035850368503785038850398504085041850428504385044850458504685047850488504985050850518505285053850548505585056850578505885059850608506185062850638506485065850668506785068850698507085071850728507385074850758507685077850788507985080850818508285083850848508585086850878508885089850908509185092850938509485095850968509785098850998510085101851028510385104851058510685107851088510985110851118511285113851148511585116851178511885119851208512185122851238512485125851268512785128851298513085131851328513385134851358513685137851388513985140851418514285143851448514585146851478514885149851508515185152851538515485155851568515785158851598516085161851628516385164851658516685167851688516985170851718517285173851748517585176851778517885179851808518185182851838518485185851868518785188851898519085191851928519385194851958519685197851988519985200852018520285203852048520585206852078520885209852108521185212852138521485215852168521785218852198522085221852228522385224852258522685227852288522985230852318523285233852348523585236852378523885239852408524185242852438524485245852468524785248852498525085251852528525385254852558525685257852588525985260852618526285263852648526585266852678526885269852708527185272852738527485275852768527785278852798528085281852828528385284852858528685287852888528985290852918529285293852948529585296852978529885299853008530185302853038530485305853068530785308853098531085311853128531385314853158531685317853188531985320853218532285323853248532585326853278532885329853308533185332853338533485335853368533785338853398534085341853428534385344853458534685347853488534985350853518535285353853548535585356853578535885359853608536185362853638536485365853668536785368853698537085371853728537385374853758537685377853788537985380853818538285383853848538585386853878538885389853908539185392853938539485395853968539785398853998540085401854028540385404854058540685407854088540985410854118541285413854148541585416854178541885419854208542185422854238542485425854268542785428854298543085431854328543385434854358543685437854388543985440854418544285443854448544585446854478544885449854508545185452854538545485455854568545785458854598546085461854628546385464854658546685467854688546985470854718547285473854748547585476854778547885479854808548185482854838548485485854868548785488854898549085491854928549385494854958549685497854988549985500855018550285503855048550585506855078550885509855108551185512855138551485515855168551785518855198552085521855228552385524855258552685527855288552985530855318553285533855348553585536855378553885539855408554185542855438554485545855468554785548855498555085551855528555385554855558555685557855588555985560855618556285563855648556585566855678556885569855708557185572855738557485575855768557785578855798558085581855828558385584855858558685587855888558985590855918559285593855948559585596855978559885599856008560185602856038560485605856068560785608856098561085611856128561385614856158561685617856188561985620856218562285623856248562585626856278562885629856308563185632856338563485635856368563785638856398564085641856428564385644856458564685647856488564985650856518565285653856548565585656856578565885659856608566185662856638566485665856668566785668856698567085671856728567385674856758567685677856788567985680856818568285683856848568585686856878568885689856908569185692856938569485695856968569785698856998570085701857028570385704857058570685707857088570985710857118571285713857148571585716857178571885719857208572185722857238572485725857268572785728857298573085731857328573385734857358573685737857388573985740857418574285743857448574585746857478574885749857508575185752857538575485755857568575785758857598576085761857628576385764857658576685767857688576985770857718577285773857748577585776857778577885779857808578185782857838578485785857868578785788857898579085791857928579385794857958579685797857988579985800858018580285803858048580585806858078580885809858108581185812858138581485815858168581785818858198582085821858228582385824858258582685827858288582985830858318583285833858348583585836858378583885839858408584185842858438584485845858468584785848858498585085851858528585385854858558585685857858588585985860858618586285863858648586585866858678586885869858708587185872858738587485875858768587785878858798588085881858828588385884858858588685887858888588985890858918589285893858948589585896858978589885899859008590185902859038590485905859068590785908859098591085911859128591385914859158591685917859188591985920859218592285923859248592585926859278592885929859308593185932859338593485935859368593785938859398594085941859428594385944859458594685947859488594985950859518595285953859548595585956859578595885959859608596185962859638596485965859668596785968859698597085971859728597385974859758597685977859788597985980859818598285983859848598585986859878598885989859908599185992859938599485995859968599785998859998600086001860028600386004860058600686007860088600986010860118601286013860148601586016860178601886019860208602186022860238602486025860268602786028860298603086031860328603386034860358603686037860388603986040860418604286043860448604586046860478604886049860508605186052860538605486055860568605786058860598606086061860628606386064860658606686067860688606986070860718607286073860748607586076860778607886079860808608186082860838608486085860868608786088860898609086091860928609386094860958609686097860988609986100861018610286103861048610586106861078610886109861108611186112861138611486115861168611786118861198612086121861228612386124861258612686127861288612986130861318613286133861348613586136861378613886139861408614186142861438614486145861468614786148861498615086151861528615386154861558615686157861588615986160861618616286163861648616586166861678616886169861708617186172861738617486175861768617786178861798618086181861828618386184861858618686187861888618986190861918619286193861948619586196861978619886199862008620186202862038620486205862068620786208862098621086211862128621386214862158621686217862188621986220862218622286223862248622586226862278622886229862308623186232862338623486235862368623786238862398624086241862428624386244862458624686247862488624986250862518625286253862548625586256862578625886259862608626186262862638626486265862668626786268862698627086271862728627386274862758627686277862788627986280862818628286283862848628586286862878628886289862908629186292862938629486295862968629786298862998630086301863028630386304863058630686307863088630986310863118631286313863148631586316863178631886319863208632186322863238632486325863268632786328863298633086331863328633386334863358633686337863388633986340863418634286343863448634586346863478634886349863508635186352863538635486355863568635786358863598636086361863628636386364863658636686367863688636986370863718637286373863748637586376863778637886379863808638186382863838638486385863868638786388863898639086391863928639386394863958639686397863988639986400864018640286403864048640586406864078640886409864108641186412864138641486415864168641786418864198642086421864228642386424864258642686427864288642986430864318643286433864348643586436864378643886439864408644186442864438644486445864468644786448864498645086451864528645386454864558645686457864588645986460864618646286463864648646586466864678646886469864708647186472864738647486475864768647786478864798648086481864828648386484864858648686487864888648986490864918649286493864948649586496864978649886499865008650186502865038650486505865068650786508865098651086511865128651386514865158651686517865188651986520865218652286523865248652586526865278652886529865308653186532865338653486535865368653786538865398654086541865428654386544865458654686547865488654986550865518655286553865548655586556865578655886559865608656186562865638656486565865668656786568865698657086571865728657386574865758657686577865788657986580865818658286583865848658586586865878658886589865908659186592865938659486595865968659786598865998660086601866028660386604866058660686607866088660986610866118661286613866148661586616866178661886619866208662186622866238662486625866268662786628866298663086631866328663386634866358663686637866388663986640866418664286643866448664586646866478664886649866508665186652866538665486655866568665786658866598666086661866628666386664866658666686667866688666986670866718667286673866748667586676866778667886679866808668186682866838668486685866868668786688866898669086691866928669386694866958669686697866988669986700867018670286703867048670586706867078670886709867108671186712867138671486715867168671786718867198672086721867228672386724867258672686727867288672986730867318673286733867348673586736867378673886739867408674186742867438674486745867468674786748867498675086751867528675386754867558675686757867588675986760867618676286763867648676586766867678676886769867708677186772867738677486775867768677786778867798678086781867828678386784867858678686787867888678986790867918679286793867948679586796867978679886799868008680186802868038680486805868068680786808868098681086811868128681386814868158681686817868188681986820868218682286823868248682586826868278682886829868308683186832868338683486835868368683786838868398684086841868428684386844868458684686847868488684986850868518685286853868548685586856868578685886859868608686186862868638686486865868668686786868868698687086871868728687386874868758687686877868788687986880868818688286883868848688586886868878688886889868908689186892868938689486895868968689786898868998690086901869028690386904869058690686907869088690986910869118691286913869148691586916869178691886919869208692186922869238692486925869268692786928869298693086931869328693386934869358693686937869388693986940869418694286943869448694586946869478694886949869508695186952869538695486955869568695786958869598696086961869628696386964869658696686967869688696986970869718697286973869748697586976869778697886979869808698186982869838698486985869868698786988869898699086991869928699386994869958699686997869988699987000870018700287003870048700587006870078700887009870108701187012870138701487015870168701787018870198702087021870228702387024870258702687027870288702987030870318703287033870348703587036870378703887039870408704187042870438704487045870468704787048870498705087051870528705387054870558705687057870588705987060870618706287063870648706587066870678706887069870708707187072870738707487075870768707787078870798708087081870828708387084870858708687087870888708987090870918709287093870948709587096870978709887099871008710187102871038710487105871068710787108871098711087111871128711387114871158711687117871188711987120871218712287123871248712587126871278712887129871308713187132871338713487135871368713787138871398714087141871428714387144871458714687147871488714987150871518715287153871548715587156871578715887159871608716187162871638716487165871668716787168871698717087171871728717387174871758717687177871788717987180871818718287183871848718587186871878718887189871908719187192871938719487195871968719787198871998720087201872028720387204872058720687207872088720987210872118721287213872148721587216872178721887219872208722187222872238722487225872268722787228872298723087231872328723387234872358723687237872388723987240872418724287243872448724587246872478724887249872508725187252872538725487255872568725787258872598726087261872628726387264872658726687267872688726987270872718727287273872748727587276872778727887279872808728187282872838728487285872868728787288872898729087291872928729387294872958729687297872988729987300873018730287303873048730587306873078730887309873108731187312873138731487315873168731787318873198732087321873228732387324873258732687327873288732987330873318733287333873348733587336873378733887339873408734187342873438734487345873468734787348873498735087351873528735387354873558735687357873588735987360873618736287363873648736587366873678736887369873708737187372873738737487375873768737787378873798738087381873828738387384873858738687387873888738987390873918739287393873948739587396873978739887399874008740187402874038740487405874068740787408874098741087411874128741387414874158741687417874188741987420874218742287423874248742587426874278742887429874308743187432874338743487435874368743787438874398744087441874428744387444874458744687447874488744987450874518745287453874548745587456874578745887459874608746187462874638746487465874668746787468874698747087471874728747387474874758747687477874788747987480874818748287483874848748587486874878748887489874908749187492874938749487495874968749787498874998750087501875028750387504875058750687507875088750987510875118751287513875148751587516875178751887519875208752187522875238752487525875268752787528875298753087531875328753387534875358753687537875388753987540875418754287543875448754587546875478754887549875508755187552875538755487555875568755787558875598756087561875628756387564875658756687567875688756987570875718757287573875748757587576875778757887579875808758187582875838758487585875868758787588875898759087591875928759387594875958759687597875988759987600876018760287603876048760587606876078760887609876108761187612876138761487615876168761787618876198762087621876228762387624876258762687627876288762987630876318763287633876348763587636876378763887639876408764187642876438764487645876468764787648876498765087651876528765387654876558765687657876588765987660876618766287663876648766587666876678766887669876708767187672876738767487675876768767787678876798768087681876828768387684876858768687687876888768987690876918769287693876948769587696876978769887699877008770187702877038770487705877068770787708877098771087711877128771387714877158771687717877188771987720877218772287723877248772587726877278772887729877308773187732877338773487735877368773787738877398774087741877428774387744877458774687747877488774987750877518775287753877548775587756877578775887759877608776187762877638776487765877668776787768877698777087771877728777387774877758777687777877788777987780877818778287783877848778587786877878778887789877908779187792877938779487795877968779787798877998780087801878028780387804878058780687807878088780987810878118781287813878148781587816878178781887819878208782187822878238782487825878268782787828878298783087831878328783387834878358783687837878388783987840878418784287843878448784587846878478784887849878508785187852878538785487855878568785787858878598786087861878628786387864878658786687867878688786987870878718787287873878748787587876878778787887879878808788187882878838788487885878868788787888878898789087891878928789387894878958789687897878988789987900879018790287903879048790587906879078790887909879108791187912879138791487915879168791787918879198792087921879228792387924879258792687927879288792987930879318793287933879348793587936879378793887939879408794187942879438794487945879468794787948879498795087951879528795387954879558795687957879588795987960879618796287963879648796587966879678796887969879708797187972879738797487975879768797787978879798798087981879828798387984879858798687987879888798987990879918799287993879948799587996879978799887999880008800188002880038800488005880068800788008880098801088011880128801388014880158801688017880188801988020880218802288023880248802588026880278802888029880308803188032880338803488035880368803788038880398804088041880428804388044880458804688047880488804988050880518805288053880548805588056880578805888059880608806188062880638806488065880668806788068880698807088071880728807388074880758807688077880788807988080880818808288083880848808588086880878808888089880908809188092880938809488095880968809788098880998810088101881028810388104881058810688107881088810988110881118811288113881148811588116881178811888119881208812188122881238812488125881268812788128881298813088131881328813388134881358813688137881388813988140881418814288143881448814588146881478814888149881508815188152881538815488155881568815788158881598816088161881628816388164881658816688167881688816988170881718817288173881748817588176881778817888179881808818188182881838818488185881868818788188881898819088191881928819388194881958819688197881988819988200882018820288203882048820588206882078820888209882108821188212882138821488215882168821788218882198822088221882228822388224882258822688227882288822988230882318823288233882348823588236882378823888239882408824188242882438824488245882468824788248882498825088251882528825388254882558825688257882588825988260882618826288263882648826588266882678826888269882708827188272882738827488275882768827788278882798828088281882828828388284882858828688287882888828988290882918829288293882948829588296882978829888299883008830188302883038830488305883068830788308883098831088311883128831388314883158831688317883188831988320883218832288323883248832588326883278832888329883308833188332883338833488335883368833788338883398834088341883428834388344883458834688347883488834988350883518835288353883548835588356883578835888359883608836188362883638836488365883668836788368883698837088371883728837388374883758837688377883788837988380883818838288383883848838588386883878838888389883908839188392883938839488395883968839788398883998840088401884028840388404884058840688407884088840988410884118841288413884148841588416884178841888419884208842188422884238842488425884268842788428884298843088431884328843388434884358843688437884388843988440884418844288443884448844588446884478844888449884508845188452884538845488455884568845788458884598846088461884628846388464884658846688467884688846988470884718847288473884748847588476884778847888479884808848188482884838848488485884868848788488884898849088491884928849388494884958849688497884988849988500885018850288503885048850588506885078850888509885108851188512885138851488515885168851788518885198852088521885228852388524885258852688527885288852988530885318853288533885348853588536885378853888539885408854188542885438854488545885468854788548885498855088551885528855388554885558855688557885588855988560885618856288563885648856588566885678856888569885708857188572885738857488575885768857788578885798858088581885828858388584885858858688587885888858988590885918859288593885948859588596885978859888599886008860188602886038860488605886068860788608886098861088611886128861388614886158861688617886188861988620886218862288623886248862588626886278862888629886308863188632886338863488635886368863788638886398864088641886428864388644886458864688647886488864988650886518865288653886548865588656886578865888659886608866188662886638866488665886668866788668886698867088671886728867388674886758867688677886788867988680886818868288683886848868588686886878868888689886908869188692886938869488695886968869788698886998870088701887028870388704887058870688707887088870988710887118871288713887148871588716887178871888719887208872188722887238872488725887268872788728887298873088731887328873388734887358873688737887388873988740887418874288743887448874588746887478874888749887508875188752887538875488755887568875788758887598876088761887628876388764887658876688767887688876988770887718877288773887748877588776887778877888779887808878188782887838878488785887868878788788887898879088791887928879388794887958879688797887988879988800888018880288803888048880588806888078880888809888108881188812888138881488815888168881788818888198882088821888228882388824888258882688827888288882988830888318883288833888348883588836888378883888839888408884188842888438884488845888468884788848888498885088851888528885388854888558885688857888588885988860888618886288863888648886588866888678886888869888708887188872888738887488875888768887788878888798888088881888828888388884888858888688887888888888988890888918889288893888948889588896888978889888899889008890188902889038890488905889068890788908889098891088911889128891388914889158891688917889188891988920889218892288923889248892588926889278892888929889308893188932889338893488935889368893788938889398894088941889428894388944889458894688947889488894988950889518895288953889548895588956889578895888959889608896188962889638896488965889668896788968889698897088971889728897388974889758897688977889788897988980889818898288983889848898588986889878898888989889908899188992889938899488995889968899788998889998900089001890028900389004890058900689007890088900989010890118901289013890148901589016890178901889019890208902189022890238902489025890268902789028890298903089031890328903389034890358903689037890388903989040890418904289043890448904589046890478904889049890508905189052890538905489055890568905789058890598906089061890628906389064890658906689067890688906989070890718907289073890748907589076890778907889079890808908189082890838908489085890868908789088890898909089091890928909389094890958909689097890988909989100891018910289103891048910589106891078910889109891108911189112891138911489115891168911789118891198912089121891228912389124891258912689127891288912989130891318913289133891348913589136891378913889139891408914189142891438914489145891468914789148891498915089151891528915389154891558915689157891588915989160891618916289163891648916589166891678916889169891708917189172891738917489175891768917789178891798918089181891828918389184891858918689187891888918989190891918919289193891948919589196891978919889199892008920189202892038920489205892068920789208892098921089211892128921389214892158921689217892188921989220892218922289223892248922589226892278922889229892308923189232892338923489235892368923789238892398924089241892428924389244892458924689247892488924989250892518925289253892548925589256892578925889259892608926189262892638926489265892668926789268892698927089271892728927389274892758927689277892788927989280892818928289283892848928589286892878928889289892908929189292892938929489295892968929789298892998930089301893028930389304893058930689307893088930989310893118931289313893148931589316893178931889319893208932189322893238932489325893268932789328893298933089331893328933389334893358933689337893388933989340893418934289343893448934589346893478934889349893508935189352893538935489355893568935789358893598936089361893628936389364893658936689367893688936989370893718937289373893748937589376893778937889379893808938189382893838938489385893868938789388893898939089391893928939389394893958939689397893988939989400894018940289403894048940589406894078940889409894108941189412894138941489415894168941789418894198942089421894228942389424894258942689427894288942989430894318943289433894348943589436894378943889439894408944189442894438944489445894468944789448894498945089451894528945389454894558945689457894588945989460894618946289463894648946589466894678946889469894708947189472894738947489475894768947789478894798948089481894828948389484894858948689487894888948989490894918949289493894948949589496894978949889499895008950189502895038950489505895068950789508895098951089511895128951389514895158951689517895188951989520895218952289523895248952589526895278952889529895308953189532895338953489535895368953789538895398954089541895428954389544895458954689547895488954989550895518955289553895548955589556895578955889559895608956189562895638956489565895668956789568895698957089571895728957389574895758957689577895788957989580895818958289583895848958589586895878958889589895908959189592895938959489595895968959789598895998960089601896028960389604896058960689607896088960989610896118961289613896148961589616896178961889619896208962189622896238962489625896268962789628896298963089631896328963389634896358963689637896388963989640896418964289643896448964589646896478964889649896508965189652896538965489655896568965789658896598966089661896628966389664896658966689667896688966989670896718967289673896748967589676896778967889679896808968189682896838968489685896868968789688896898969089691896928969389694896958969689697896988969989700897018970289703897048970589706897078970889709897108971189712897138971489715897168971789718897198972089721897228972389724897258972689727897288972989730897318973289733897348973589736897378973889739897408974189742897438974489745897468974789748897498975089751897528975389754897558975689757897588975989760897618976289763897648976589766897678976889769897708977189772897738977489775897768977789778897798978089781897828978389784897858978689787897888978989790897918979289793897948979589796897978979889799898008980189802898038980489805898068980789808898098981089811898128981389814898158981689817898188981989820898218982289823898248982589826898278982889829898308983189832898338983489835898368983789838898398984089841898428984389844898458984689847898488984989850898518985289853898548985589856898578985889859898608986189862898638986489865898668986789868898698987089871898728987389874898758987689877898788987989880898818988289883898848988589886898878988889889898908989189892898938989489895898968989789898898998990089901899028990389904899058990689907899088990989910899118991289913899148991589916899178991889919899208992189922899238992489925899268992789928899298993089931899328993389934899358993689937899388993989940899418994289943899448994589946899478994889949899508995189952899538995489955899568995789958899598996089961899628996389964899658996689967899688996989970899718997289973899748997589976899778997889979899808998189982899838998489985899868998789988899898999089991899928999389994899958999689997899988999990000900019000290003900049000590006900079000890009900109001190012900139001490015900169001790018900199002090021900229002390024900259002690027900289002990030900319003290033900349003590036900379003890039900409004190042900439004490045900469004790048900499005090051900529005390054900559005690057900589005990060900619006290063900649006590066900679006890069900709007190072900739007490075900769007790078900799008090081900829008390084900859008690087900889008990090900919009290093900949009590096900979009890099901009010190102901039010490105901069010790108901099011090111901129011390114901159011690117901189011990120901219012290123901249012590126901279012890129901309013190132901339013490135901369013790138901399014090141901429014390144901459014690147901489014990150901519015290153901549015590156901579015890159901609016190162901639016490165901669016790168901699017090171901729017390174901759017690177901789017990180901819018290183901849018590186901879018890189901909019190192901939019490195901969019790198901999020090201902029020390204902059020690207902089020990210902119021290213902149021590216902179021890219902209022190222902239022490225902269022790228902299023090231902329023390234902359023690237902389023990240902419024290243902449024590246902479024890249902509025190252902539025490255902569025790258902599026090261902629026390264902659026690267902689026990270902719027290273902749027590276902779027890279902809028190282902839028490285902869028790288902899029090291902929029390294902959029690297902989029990300903019030290303903049030590306903079030890309903109031190312903139031490315903169031790318903199032090321903229032390324903259032690327903289032990330903319033290333903349033590336903379033890339903409034190342903439034490345903469034790348903499035090351903529035390354903559035690357903589035990360903619036290363903649036590366903679036890369903709037190372903739037490375903769037790378903799038090381903829038390384903859038690387903889038990390903919039290393903949039590396903979039890399904009040190402904039040490405904069040790408904099041090411904129041390414904159041690417904189041990420904219042290423904249042590426904279042890429904309043190432904339043490435904369043790438904399044090441904429044390444904459044690447904489044990450904519045290453904549045590456904579045890459904609046190462904639046490465904669046790468904699047090471904729047390474904759047690477904789047990480904819048290483904849048590486904879048890489904909049190492904939049490495904969049790498904999050090501905029050390504905059050690507905089050990510905119051290513905149051590516905179051890519905209052190522905239052490525905269052790528905299053090531905329053390534905359053690537905389053990540905419054290543905449054590546905479054890549905509055190552905539055490555905569055790558905599056090561905629056390564905659056690567905689056990570905719057290573905749057590576905779057890579905809058190582905839058490585905869058790588905899059090591905929059390594905959059690597905989059990600906019060290603906049060590606906079060890609906109061190612906139061490615906169061790618906199062090621906229062390624906259062690627906289062990630906319063290633906349063590636906379063890639906409064190642906439064490645906469064790648906499065090651906529065390654906559065690657906589065990660906619066290663906649066590666906679066890669906709067190672906739067490675906769067790678906799068090681906829068390684906859068690687906889068990690906919069290693906949069590696906979069890699907009070190702907039070490705907069070790708907099071090711907129071390714907159071690717907189071990720907219072290723907249072590726907279072890729907309073190732907339073490735907369073790738907399074090741907429074390744907459074690747907489074990750907519075290753907549075590756907579075890759907609076190762907639076490765907669076790768907699077090771907729077390774907759077690777907789077990780907819078290783907849078590786907879078890789907909079190792907939079490795907969079790798907999080090801908029080390804908059080690807908089080990810908119081290813908149081590816908179081890819908209082190822908239082490825908269082790828908299083090831908329083390834908359083690837908389083990840908419084290843908449084590846908479084890849908509085190852908539085490855908569085790858908599086090861908629086390864908659086690867908689086990870908719087290873908749087590876908779087890879908809088190882908839088490885908869088790888908899089090891908929089390894908959089690897908989089990900909019090290903909049090590906909079090890909909109091190912909139091490915909169091790918909199092090921909229092390924909259092690927909289092990930909319093290933909349093590936909379093890939909409094190942909439094490945909469094790948909499095090951909529095390954909559095690957909589095990960909619096290963909649096590966909679096890969909709097190972909739097490975909769097790978909799098090981909829098390984909859098690987909889098990990909919099290993909949099590996909979099890999910009100191002910039100491005910069100791008910099101091011910129101391014910159101691017910189101991020910219102291023910249102591026910279102891029910309103191032910339103491035910369103791038910399104091041910429104391044910459104691047910489104991050910519105291053910549105591056910579105891059910609106191062910639106491065910669106791068910699107091071910729107391074910759107691077910789107991080910819108291083910849108591086910879108891089910909109191092910939109491095910969109791098910999110091101911029110391104911059110691107911089110991110911119111291113911149111591116911179111891119911209112191122911239112491125911269112791128911299113091131911329113391134911359113691137911389113991140911419114291143911449114591146911479114891149911509115191152911539115491155911569115791158911599116091161911629116391164911659116691167911689116991170911719117291173911749117591176911779117891179911809118191182911839118491185911869118791188911899119091191911929119391194911959119691197911989119991200912019120291203912049120591206912079120891209912109121191212912139121491215912169121791218912199122091221912229122391224912259122691227912289122991230912319123291233912349123591236912379123891239912409124191242912439124491245912469124791248912499125091251912529125391254912559125691257912589125991260912619126291263912649126591266912679126891269912709127191272912739127491275912769127791278912799128091281912829128391284912859128691287912889128991290912919129291293912949129591296912979129891299913009130191302913039130491305913069130791308913099131091311913129131391314913159131691317913189131991320913219132291323913249132591326913279132891329913309133191332913339133491335913369133791338913399134091341913429134391344913459134691347913489134991350913519135291353913549135591356913579135891359913609136191362913639136491365913669136791368913699137091371913729137391374913759137691377913789137991380913819138291383913849138591386913879138891389913909139191392913939139491395913969139791398913999140091401914029140391404914059140691407914089140991410914119141291413914149141591416914179141891419914209142191422914239142491425914269142791428914299143091431914329143391434914359143691437914389143991440914419144291443914449144591446914479144891449914509145191452914539145491455914569145791458914599146091461914629146391464914659146691467914689146991470914719147291473914749147591476914779147891479914809148191482914839148491485914869148791488914899149091491914929149391494914959149691497914989149991500915019150291503915049150591506915079150891509915109151191512915139151491515915169151791518915199152091521915229152391524915259152691527915289152991530915319153291533915349153591536915379153891539915409154191542915439154491545915469154791548915499155091551915529155391554915559155691557915589155991560915619156291563915649156591566915679156891569915709157191572915739157491575915769157791578915799158091581915829158391584915859158691587915889158991590915919159291593915949159591596915979159891599916009160191602916039160491605916069160791608916099161091611916129161391614916159161691617916189161991620916219162291623916249162591626916279162891629916309163191632916339163491635916369163791638916399164091641916429164391644916459164691647916489164991650916519165291653916549165591656916579165891659916609166191662916639166491665916669166791668916699167091671916729167391674916759167691677916789167991680916819168291683916849168591686916879168891689916909169191692916939169491695916969169791698916999170091701917029170391704917059170691707917089170991710917119171291713917149171591716917179171891719917209172191722917239172491725917269172791728917299173091731917329173391734917359173691737917389173991740917419174291743917449174591746917479174891749917509175191752917539175491755917569175791758917599176091761917629176391764917659176691767917689176991770917719177291773917749177591776917779177891779917809178191782917839178491785917869178791788917899179091791917929179391794917959179691797917989179991800918019180291803918049180591806918079180891809918109181191812918139181491815918169181791818918199182091821918229182391824918259182691827918289182991830918319183291833918349183591836918379183891839918409184191842918439184491845918469184791848918499185091851918529185391854918559185691857918589185991860918619186291863918649186591866918679186891869918709187191872918739187491875918769187791878918799188091881918829188391884918859188691887918889188991890918919189291893918949189591896918979189891899919009190191902919039190491905919069190791908919099191091911919129191391914919159191691917919189191991920919219192291923919249192591926919279192891929919309193191932919339193491935919369193791938919399194091941919429194391944919459194691947919489194991950919519195291953919549195591956919579195891959919609196191962919639196491965919669196791968919699197091971919729197391974919759197691977919789197991980919819198291983919849198591986919879198891989919909199191992919939199491995919969199791998919999200092001920029200392004920059200692007920089200992010920119201292013920149201592016920179201892019920209202192022920239202492025920269202792028920299203092031920329203392034920359203692037920389203992040920419204292043920449204592046920479204892049920509205192052920539205492055920569205792058920599206092061920629206392064920659206692067920689206992070920719207292073920749207592076920779207892079920809208192082920839208492085920869208792088920899209092091920929209392094920959209692097920989209992100921019210292103921049210592106921079210892109921109211192112921139211492115921169211792118921199212092121921229212392124921259212692127921289212992130921319213292133921349213592136921379213892139921409214192142921439214492145921469214792148921499215092151921529215392154921559215692157921589215992160921619216292163921649216592166921679216892169921709217192172921739217492175921769217792178921799218092181921829218392184921859218692187921889218992190921919219292193921949219592196921979219892199922009220192202922039220492205922069220792208922099221092211922129221392214922159221692217922189221992220922219222292223922249222592226922279222892229922309223192232922339223492235922369223792238922399224092241922429224392244922459224692247922489224992250922519225292253922549225592256922579225892259922609226192262922639226492265922669226792268922699227092271922729227392274922759227692277922789227992280922819228292283922849228592286922879228892289922909229192292922939229492295922969229792298922999230092301923029230392304923059230692307923089230992310923119231292313923149231592316923179231892319923209232192322923239232492325923269232792328923299233092331923329233392334923359233692337923389233992340923419234292343923449234592346923479234892349923509235192352923539235492355923569235792358923599236092361923629236392364923659236692367923689236992370923719237292373923749237592376923779237892379923809238192382923839238492385923869238792388923899239092391923929239392394923959239692397923989239992400924019240292403924049240592406924079240892409924109241192412924139241492415924169241792418924199242092421924229242392424924259242692427924289242992430924319243292433924349243592436924379243892439924409244192442924439244492445924469244792448924499245092451924529245392454924559245692457924589245992460924619246292463924649246592466924679246892469924709247192472924739247492475924769247792478924799248092481924829248392484924859248692487924889248992490924919249292493924949249592496924979249892499925009250192502925039250492505925069250792508925099251092511925129251392514925159251692517925189251992520925219252292523925249252592526925279252892529925309253192532925339253492535925369253792538925399254092541925429254392544925459254692547925489254992550925519255292553925549255592556925579255892559925609256192562925639256492565925669256792568925699257092571925729257392574925759257692577925789257992580925819258292583925849258592586925879258892589925909259192592925939259492595925969259792598925999260092601926029260392604926059260692607926089260992610926119261292613926149261592616926179261892619926209262192622926239262492625926269262792628926299263092631926329263392634926359263692637926389263992640926419264292643926449264592646926479264892649926509265192652926539265492655926569265792658926599266092661926629266392664926659266692667926689266992670926719267292673926749267592676926779267892679926809268192682926839268492685926869268792688926899269092691926929269392694926959269692697926989269992700927019270292703927049270592706927079270892709927109271192712927139271492715927169271792718927199272092721927229272392724927259272692727927289272992730927319273292733927349273592736927379273892739927409274192742927439274492745927469274792748927499275092751927529275392754927559275692757927589275992760927619276292763927649276592766927679276892769927709277192772927739277492775927769277792778927799278092781927829278392784927859278692787927889278992790927919279292793927949279592796927979279892799928009280192802928039280492805928069280792808928099281092811928129281392814928159281692817928189281992820928219282292823928249282592826928279282892829928309283192832928339283492835928369283792838928399284092841928429284392844928459284692847928489284992850928519285292853928549285592856928579285892859928609286192862928639286492865928669286792868928699287092871928729287392874928759287692877928789287992880928819288292883928849288592886928879288892889928909289192892928939289492895928969289792898928999290092901929029290392904929059290692907929089290992910929119291292913929149291592916929179291892919929209292192922929239292492925929269292792928929299293092931929329293392934929359293692937929389293992940929419294292943929449294592946929479294892949929509295192952929539295492955929569295792958929599296092961929629296392964929659296692967929689296992970929719297292973929749297592976929779297892979929809298192982929839298492985929869298792988929899299092991929929299392994929959299692997929989299993000930019300293003930049300593006930079300893009930109301193012930139301493015930169301793018930199302093021930229302393024930259302693027930289302993030930319303293033930349303593036930379303893039930409304193042930439304493045930469304793048930499305093051930529305393054930559305693057930589305993060930619306293063930649306593066930679306893069930709307193072930739307493075930769307793078930799308093081930829308393084930859308693087930889308993090930919309293093930949309593096930979309893099931009310193102931039310493105931069310793108931099311093111931129311393114931159311693117931189311993120931219312293123931249312593126931279312893129931309313193132931339313493135931369313793138931399314093141931429314393144931459314693147931489314993150931519315293153931549315593156931579315893159931609316193162931639316493165931669316793168931699317093171931729317393174931759317693177931789317993180931819318293183931849318593186931879318893189931909319193192931939319493195931969319793198931999320093201932029320393204932059320693207932089320993210932119321293213932149321593216932179321893219932209322193222932239322493225932269322793228932299323093231932329323393234932359323693237932389323993240932419324293243932449324593246932479324893249932509325193252932539325493255932569325793258932599326093261932629326393264932659326693267932689326993270932719327293273932749327593276932779327893279932809328193282932839328493285932869328793288932899329093291932929329393294932959329693297932989329993300933019330293303933049330593306933079330893309933109331193312933139331493315933169331793318933199332093321933229332393324933259332693327933289332993330933319333293333933349333593336933379333893339933409334193342933439334493345933469334793348933499335093351933529335393354933559335693357933589335993360933619336293363933649336593366933679336893369933709337193372933739337493375933769337793378933799338093381933829338393384933859338693387933889338993390933919339293393933949339593396933979339893399934009340193402934039340493405934069340793408934099341093411934129341393414934159341693417934189341993420934219342293423934249342593426934279342893429934309343193432934339343493435934369343793438934399344093441934429344393444934459344693447934489344993450934519345293453934549345593456934579345893459934609346193462934639346493465934669346793468934699347093471934729347393474934759347693477934789347993480934819348293483934849348593486934879348893489934909349193492934939349493495934969349793498934999350093501935029350393504935059350693507935089350993510935119351293513935149351593516935179351893519935209352193522935239352493525935269352793528935299353093531935329353393534935359353693537935389353993540935419354293543935449354593546935479354893549935509355193552935539355493555935569355793558935599356093561935629356393564935659356693567935689356993570935719357293573935749357593576935779357893579935809358193582935839358493585935869358793588935899359093591935929359393594935959359693597935989359993600936019360293603936049360593606936079360893609936109361193612936139361493615936169361793618936199362093621936229362393624936259362693627936289362993630936319363293633936349363593636936379363893639936409364193642936439364493645936469364793648936499365093651936529365393654936559365693657936589365993660936619366293663936649366593666936679366893669936709367193672936739367493675936769367793678936799368093681936829368393684936859368693687936889368993690936919369293693936949369593696936979369893699937009370193702937039370493705937069370793708937099371093711937129371393714937159371693717937189371993720937219372293723937249372593726937279372893729937309373193732937339373493735937369373793738937399374093741937429374393744937459374693747937489374993750937519375293753937549375593756937579375893759937609376193762937639376493765937669376793768937699377093771937729377393774937759377693777937789377993780937819378293783937849378593786937879378893789937909379193792937939379493795937969379793798937999380093801938029380393804938059380693807938089380993810938119381293813938149381593816938179381893819938209382193822938239382493825938269382793828938299383093831938329383393834938359383693837938389383993840938419384293843938449384593846938479384893849938509385193852938539385493855938569385793858938599386093861938629386393864938659386693867938689386993870938719387293873938749387593876938779387893879938809388193882938839388493885938869388793888938899389093891938929389393894938959389693897938989389993900939019390293903939049390593906939079390893909939109391193912939139391493915939169391793918939199392093921939229392393924939259392693927939289392993930939319393293933939349393593936939379393893939939409394193942939439394493945939469394793948939499395093951939529395393954939559395693957939589395993960939619396293963939649396593966939679396893969939709397193972939739397493975939769397793978939799398093981939829398393984939859398693987939889398993990939919399293993939949399593996939979399893999940009400194002940039400494005940069400794008940099401094011940129401394014940159401694017940189401994020940219402294023940249402594026940279402894029940309403194032940339403494035940369403794038940399404094041940429404394044940459404694047940489404994050940519405294053940549405594056940579405894059940609406194062940639406494065940669406794068940699407094071940729407394074940759407694077940789407994080940819408294083940849408594086940879408894089940909409194092940939409494095940969409794098940999410094101941029410394104941059410694107941089410994110941119411294113941149411594116941179411894119941209412194122941239412494125941269412794128941299413094131941329413394134941359413694137941389413994140941419414294143941449414594146941479414894149941509415194152941539415494155941569415794158941599416094161941629416394164941659416694167941689416994170941719417294173941749417594176941779417894179941809418194182941839418494185941869418794188941899419094191941929419394194941959419694197941989419994200942019420294203942049420594206942079420894209942109421194212942139421494215942169421794218942199422094221942229422394224942259422694227942289422994230942319423294233942349423594236942379423894239942409424194242942439424494245942469424794248942499425094251942529425394254942559425694257942589425994260942619426294263942649426594266942679426894269942709427194272942739427494275942769427794278942799428094281942829428394284942859428694287942889428994290942919429294293942949429594296942979429894299943009430194302943039430494305943069430794308943099431094311943129431394314943159431694317943189431994320943219432294323943249432594326943279432894329943309433194332943339433494335943369433794338943399434094341943429434394344943459434694347943489434994350943519435294353943549435594356943579435894359943609436194362943639436494365943669436794368943699437094371943729437394374943759437694377943789437994380943819438294383943849438594386943879438894389943909439194392943939439494395943969439794398943999440094401944029440394404944059440694407944089440994410944119441294413944149441594416944179441894419944209442194422944239442494425944269442794428944299443094431944329443394434944359443694437944389443994440944419444294443944449444594446944479444894449944509445194452944539445494455944569445794458944599446094461944629446394464944659446694467944689446994470944719447294473944749447594476944779447894479944809448194482944839448494485944869448794488944899449094491944929449394494944959449694497944989449994500945019450294503945049450594506945079450894509945109451194512945139451494515945169451794518945199452094521945229452394524945259452694527945289452994530945319453294533945349453594536945379453894539945409454194542945439454494545945469454794548945499455094551945529455394554945559455694557945589455994560945619456294563945649456594566945679456894569945709457194572945739457494575945769457794578945799458094581945829458394584945859458694587945889458994590945919459294593945949459594596945979459894599946009460194602946039460494605946069460794608946099461094611946129461394614946159461694617946189461994620946219462294623946249462594626946279462894629946309463194632946339463494635946369463794638946399464094641946429464394644946459464694647946489464994650946519465294653946549465594656946579465894659946609466194662946639466494665946669466794668946699467094671946729467394674946759467694677946789467994680946819468294683946849468594686946879468894689946909469194692946939469494695946969469794698946999470094701947029470394704947059470694707947089470994710947119471294713947149471594716947179471894719947209472194722947239472494725947269472794728947299473094731947329473394734947359473694737947389473994740947419474294743947449474594746947479474894749947509475194752947539475494755947569475794758947599476094761947629476394764947659476694767947689476994770947719477294773947749477594776947779477894779947809478194782947839478494785947869478794788947899479094791947929479394794947959479694797947989479994800948019480294803948049480594806948079480894809948109481194812948139481494815948169481794818948199482094821948229482394824948259482694827948289482994830948319483294833948349483594836948379483894839948409484194842948439484494845948469484794848948499485094851948529485394854948559485694857948589485994860948619486294863948649486594866948679486894869948709487194872948739487494875948769487794878948799488094881948829488394884948859488694887948889488994890948919489294893948949489594896948979489894899949009490194902949039490494905949069490794908949099491094911949129491394914949159491694917949189491994920949219492294923949249492594926949279492894929949309493194932949339493494935949369493794938949399494094941949429494394944949459494694947949489494994950949519495294953949549495594956949579495894959949609496194962949639496494965949669496794968949699497094971949729497394974949759497694977949789497994980949819498294983949849498594986949879498894989949909499194992949939499494995949969499794998949999500095001950029500395004950059500695007950089500995010950119501295013950149501595016950179501895019950209502195022950239502495025950269502795028950299503095031950329503395034950359503695037950389503995040950419504295043950449504595046950479504895049950509505195052950539505495055950569505795058950599506095061950629506395064950659506695067950689506995070950719507295073950749507595076950779507895079950809508195082950839508495085950869508795088950899509095091950929509395094950959509695097950989509995100951019510295103951049510595106951079510895109951109511195112951139511495115951169511795118951199512095121951229512395124951259512695127951289512995130951319513295133951349513595136951379513895139951409514195142951439514495145951469514795148951499515095151951529515395154951559515695157951589515995160951619516295163951649516595166951679516895169951709517195172951739517495175951769517795178951799518095181951829518395184951859518695187951889518995190951919519295193951949519595196951979519895199952009520195202952039520495205952069520795208952099521095211952129521395214952159521695217952189521995220952219522295223952249522595226952279522895229952309523195232952339523495235952369523795238952399524095241952429524395244952459524695247952489524995250952519525295253952549525595256952579525895259952609526195262952639526495265952669526795268952699527095271952729527395274952759527695277952789527995280952819528295283952849528595286952879528895289952909529195292952939529495295952969529795298952999530095301953029530395304953059530695307953089530995310953119531295313953149531595316953179531895319953209532195322953239532495325953269532795328953299533095331953329533395334953359533695337953389533995340953419534295343953449534595346953479534895349953509535195352953539535495355953569535795358953599536095361953629536395364953659536695367953689536995370953719537295373953749537595376953779537895379953809538195382953839538495385953869538795388953899539095391953929539395394953959539695397953989539995400954019540295403954049540595406954079540895409954109541195412954139541495415954169541795418954199542095421954229542395424954259542695427954289542995430954319543295433954349543595436954379543895439954409544195442954439544495445954469544795448954499545095451954529545395454954559545695457954589545995460954619546295463954649546595466954679546895469954709547195472954739547495475954769547795478954799548095481954829548395484954859548695487954889548995490954919549295493954949549595496954979549895499955009550195502955039550495505955069550795508955099551095511955129551395514955159551695517955189551995520955219552295523955249552595526955279552895529955309553195532955339553495535955369553795538955399554095541955429554395544955459554695547955489554995550955519555295553955549555595556955579555895559955609556195562955639556495565955669556795568955699557095571955729557395574955759557695577955789557995580955819558295583955849558595586955879558895589955909559195592955939559495595955969559795598955999560095601956029560395604956059560695607956089560995610956119561295613956149561595616956179561895619956209562195622956239562495625956269562795628956299563095631956329563395634956359563695637956389563995640956419564295643956449564595646956479564895649956509565195652956539565495655956569565795658956599566095661956629566395664956659566695667956689566995670956719567295673956749567595676956779567895679956809568195682956839568495685956869568795688956899569095691956929569395694956959569695697956989569995700957019570295703957049570595706957079570895709957109571195712957139571495715957169571795718957199572095721957229572395724957259572695727957289572995730957319573295733957349573595736957379573895739957409574195742957439574495745957469574795748957499575095751957529575395754957559575695757957589575995760957619576295763957649576595766957679576895769957709577195772957739577495775957769577795778957799578095781957829578395784957859578695787957889578995790957919579295793957949579595796957979579895799958009580195802958039580495805958069580795808958099581095811958129581395814958159581695817958189581995820958219582295823958249582595826958279582895829958309583195832958339583495835958369583795838958399584095841958429584395844958459584695847958489584995850958519585295853958549585595856958579585895859958609586195862958639586495865958669586795868958699587095871958729587395874958759587695877958789587995880958819588295883958849588595886958879588895889958909589195892958939589495895958969589795898958999590095901959029590395904959059590695907959089590995910959119591295913959149591595916959179591895919959209592195922959239592495925959269592795928959299593095931959329593395934959359593695937959389593995940959419594295943959449594595946959479594895949959509595195952959539595495955959569595795958959599596095961959629596395964959659596695967959689596995970959719597295973959749597595976959779597895979959809598195982959839598495985959869598795988959899599095991959929599395994959959599695997959989599996000960019600296003960049600596006960079600896009960109601196012960139601496015960169601796018960199602096021960229602396024960259602696027960289602996030960319603296033960349603596036960379603896039960409604196042960439604496045960469604796048960499605096051960529605396054960559605696057960589605996060960619606296063960649606596066960679606896069960709607196072960739607496075960769607796078960799608096081960829608396084960859608696087960889608996090960919609296093960949609596096960979609896099961009610196102961039610496105961069610796108961099611096111961129611396114961159611696117961189611996120961219612296123961249612596126961279612896129961309613196132961339613496135961369613796138961399614096141961429614396144961459614696147961489614996150961519615296153961549615596156961579615896159961609616196162961639616496165961669616796168961699617096171961729617396174961759617696177961789617996180961819618296183961849618596186961879618896189961909619196192961939619496195961969619796198961999620096201962029620396204962059620696207962089620996210962119621296213962149621596216962179621896219962209622196222962239622496225962269622796228962299623096231962329623396234962359623696237962389623996240962419624296243962449624596246962479624896249962509625196252962539625496255962569625796258962599626096261962629626396264962659626696267962689626996270962719627296273962749627596276962779627896279962809628196282962839628496285962869628796288962899629096291962929629396294962959629696297962989629996300963019630296303963049630596306963079630896309963109631196312963139631496315963169631796318963199632096321963229632396324963259632696327963289632996330963319633296333963349633596336963379633896339963409634196342963439634496345963469634796348963499635096351963529635396354963559635696357963589635996360963619636296363963649636596366963679636896369963709637196372963739637496375963769637796378963799638096381963829638396384963859638696387963889638996390963919639296393963949639596396963979639896399964009640196402964039640496405964069640796408964099641096411964129641396414964159641696417964189641996420964219642296423964249642596426964279642896429964309643196432964339643496435964369643796438964399644096441964429644396444964459644696447964489644996450964519645296453964549645596456964579645896459964609646196462964639646496465964669646796468964699647096471964729647396474964759647696477964789647996480964819648296483964849648596486964879648896489964909649196492964939649496495964969649796498964999650096501965029650396504965059650696507965089650996510965119651296513965149651596516965179651896519965209652196522965239652496525965269652796528965299653096531965329653396534965359653696537965389653996540965419654296543965449654596546965479654896549965509655196552965539655496555965569655796558965599656096561965629656396564965659656696567965689656996570965719657296573965749657596576965779657896579965809658196582965839658496585965869658796588965899659096591965929659396594965959659696597965989659996600966019660296603966049660596606966079660896609966109661196612966139661496615966169661796618966199662096621966229662396624966259662696627966289662996630966319663296633966349663596636966379663896639966409664196642966439664496645966469664796648966499665096651966529665396654966559665696657966589665996660966619666296663966649666596666966679666896669966709667196672966739667496675966769667796678966799668096681966829668396684966859668696687966889668996690966919669296693966949669596696966979669896699967009670196702967039670496705967069670796708967099671096711967129671396714967159671696717967189671996720967219672296723967249672596726967279672896729967309673196732967339673496735967369673796738967399674096741967429674396744967459674696747967489674996750967519675296753967549675596756967579675896759967609676196762967639676496765967669676796768967699677096771967729677396774967759677696777967789677996780967819678296783967849678596786967879678896789967909679196792967939679496795967969679796798967999680096801968029680396804968059680696807968089680996810968119681296813968149681596816968179681896819968209682196822968239682496825968269682796828968299683096831968329683396834968359683696837968389683996840968419684296843968449684596846968479684896849968509685196852968539685496855968569685796858968599686096861968629686396864968659686696867968689686996870968719687296873968749687596876968779687896879968809688196882968839688496885968869688796888968899689096891968929689396894968959689696897968989689996900969019690296903969049690596906969079690896909969109691196912969139691496915969169691796918969199692096921969229692396924969259692696927969289692996930969319693296933969349693596936969379693896939969409694196942969439694496945969469694796948969499695096951969529695396954969559695696957969589695996960969619696296963969649696596966969679696896969969709697196972969739697496975969769697796978969799698096981969829698396984969859698696987969889698996990969919699296993969949699596996969979699896999970009700197002970039700497005970069700797008970099701097011970129701397014970159701697017970189701997020970219702297023970249702597026970279702897029970309703197032970339703497035970369703797038970399704097041970429704397044970459704697047970489704997050970519705297053970549705597056970579705897059970609706197062970639706497065970669706797068970699707097071970729707397074970759707697077970789707997080970819708297083970849708597086970879708897089970909709197092970939709497095970969709797098970999710097101971029710397104971059710697107971089710997110971119711297113971149711597116971179711897119971209712197122971239712497125971269712797128971299713097131971329713397134971359713697137971389713997140971419714297143971449714597146971479714897149971509715197152971539715497155971569715797158971599716097161971629716397164971659716697167971689716997170971719717297173971749717597176971779717897179971809718197182971839718497185971869718797188971899719097191971929719397194971959719697197971989719997200972019720297203972049720597206972079720897209972109721197212972139721497215972169721797218972199722097221972229722397224972259722697227972289722997230972319723297233972349723597236972379723897239972409724197242972439724497245972469724797248972499725097251972529725397254972559725697257972589725997260972619726297263972649726597266972679726897269972709727197272972739727497275972769727797278972799728097281972829728397284972859728697287972889728997290972919729297293972949729597296972979729897299973009730197302973039730497305973069730797308973099731097311973129731397314973159731697317973189731997320973219732297323973249732597326973279732897329973309733197332973339733497335973369733797338973399734097341973429734397344973459734697347973489734997350973519735297353973549735597356973579735897359973609736197362973639736497365973669736797368973699737097371973729737397374973759737697377973789737997380973819738297383973849738597386973879738897389973909739197392973939739497395973969739797398973999740097401974029740397404974059740697407974089740997410974119741297413974149741597416974179741897419974209742197422974239742497425974269742797428974299743097431974329743397434974359743697437974389743997440974419744297443974449744597446974479744897449974509745197452974539745497455974569745797458974599746097461974629746397464974659746697467974689746997470974719747297473974749747597476974779747897479974809748197482974839748497485974869748797488974899749097491974929749397494974959749697497974989749997500975019750297503975049750597506975079750897509975109751197512975139751497515975169751797518975199752097521975229752397524975259752697527975289752997530975319753297533975349753597536975379753897539975409754197542975439754497545975469754797548975499755097551975529755397554975559755697557975589755997560975619756297563975649756597566975679756897569975709757197572975739757497575975769757797578975799758097581975829758397584975859758697587975889758997590975919759297593975949759597596975979759897599976009760197602976039760497605976069760797608976099761097611976129761397614976159761697617976189761997620976219762297623976249762597626976279762897629976309763197632976339763497635976369763797638976399764097641976429764397644976459764697647976489764997650976519765297653976549765597656976579765897659976609766197662976639766497665976669766797668976699767097671976729767397674976759767697677976789767997680976819768297683976849768597686976879768897689976909769197692976939769497695976969769797698976999770097701977029770397704977059770697707977089770997710977119771297713977149771597716977179771897719977209772197722977239772497725977269772797728977299773097731977329773397734977359773697737977389773997740977419774297743977449774597746977479774897749977509775197752977539775497755977569775797758977599776097761977629776397764977659776697767977689776997770977719777297773977749777597776977779777897779977809778197782977839778497785977869778797788977899779097791977929779397794977959779697797977989779997800978019780297803978049780597806978079780897809978109781197812978139781497815978169781797818978199782097821978229782397824978259782697827978289782997830978319783297833978349783597836978379783897839978409784197842978439784497845978469784797848978499785097851978529785397854978559785697857978589785997860978619786297863978649786597866978679786897869978709787197872978739787497875978769787797878978799788097881978829788397884978859788697887978889788997890978919789297893978949789597896978979789897899979009790197902979039790497905979069790797908979099791097911979129791397914979159791697917979189791997920979219792297923979249792597926979279792897929979309793197932979339793497935979369793797938979399794097941979429794397944979459794697947979489794997950979519795297953979549795597956979579795897959979609796197962979639796497965979669796797968979699797097971979729797397974979759797697977979789797997980979819798297983979849798597986979879798897989979909799197992979939799497995979969799797998979999800098001980029800398004980059800698007980089800998010980119801298013980149801598016980179801898019980209802198022980239802498025980269802798028980299803098031980329803398034980359803698037980389803998040980419804298043980449804598046980479804898049980509805198052980539805498055980569805798058980599806098061980629806398064980659806698067980689806998070980719807298073980749807598076980779807898079980809808198082980839808498085980869808798088980899809098091980929809398094980959809698097980989809998100981019810298103981049810598106981079810898109981109811198112981139811498115981169811798118981199812098121981229812398124981259812698127981289812998130981319813298133981349813598136981379813898139981409814198142981439814498145981469814798148981499815098151981529815398154981559815698157981589815998160981619816298163981649816598166981679816898169981709817198172981739817498175981769817798178981799818098181981829818398184981859818698187981889818998190981919819298193981949819598196981979819898199982009820198202982039820498205982069820798208982099821098211982129821398214982159821698217982189821998220982219822298223982249822598226982279822898229982309823198232982339823498235982369823798238982399824098241982429824398244982459824698247982489824998250982519825298253982549825598256982579825898259982609826198262982639826498265982669826798268982699827098271982729827398274982759827698277982789827998280982819828298283982849828598286982879828898289982909829198292982939829498295982969829798298982999830098301983029830398304983059830698307983089830998310983119831298313983149831598316983179831898319983209832198322983239832498325983269832798328983299833098331983329833398334983359833698337983389833998340983419834298343983449834598346983479834898349983509835198352983539835498355983569835798358983599836098361983629836398364983659836698367983689836998370983719837298373983749837598376983779837898379983809838198382983839838498385983869838798388983899839098391983929839398394983959839698397983989839998400984019840298403984049840598406984079840898409984109841198412984139841498415984169841798418984199842098421984229842398424984259842698427984289842998430984319843298433984349843598436984379843898439984409844198442984439844498445984469844798448984499845098451984529845398454984559845698457984589845998460984619846298463984649846598466984679846898469984709847198472984739847498475984769847798478984799848098481984829848398484984859848698487984889848998490984919849298493984949849598496984979849898499985009850198502985039850498505985069850798508985099851098511985129851398514985159851698517985189851998520985219852298523985249852598526985279852898529985309853198532985339853498535985369853798538985399854098541985429854398544985459854698547985489854998550985519855298553985549855598556985579855898559985609856198562985639856498565985669856798568985699857098571985729857398574985759857698577985789857998580985819858298583985849858598586985879858898589985909859198592985939859498595985969859798598985999860098601986029860398604986059860698607986089860998610986119861298613986149861598616986179861898619986209862198622986239862498625986269862798628986299863098631986329863398634986359863698637986389863998640986419864298643986449864598646986479864898649986509865198652986539865498655986569865798658986599866098661986629866398664986659866698667986689866998670986719867298673986749867598676986779867898679986809868198682986839868498685986869868798688986899869098691986929869398694986959869698697986989869998700987019870298703987049870598706987079870898709987109871198712987139871498715987169871798718987199872098721987229872398724987259872698727987289872998730987319873298733987349873598736987379873898739987409874198742987439874498745987469874798748987499875098751987529875398754987559875698757987589875998760987619876298763987649876598766987679876898769987709877198772987739877498775987769877798778987799878098781987829878398784987859878698787987889878998790987919879298793987949879598796987979879898799988009880198802988039880498805988069880798808988099881098811988129881398814988159881698817988189881998820988219882298823988249882598826988279882898829988309883198832988339883498835988369883798838988399884098841988429884398844988459884698847988489884998850988519885298853988549885598856988579885898859988609886198862988639886498865988669886798868988699887098871988729887398874988759887698877988789887998880988819888298883988849888598886988879888898889988909889198892988939889498895988969889798898988999890098901989029890398904989059890698907989089890998910989119891298913989149891598916989179891898919989209892198922989239892498925989269892798928989299893098931989329893398934989359893698937989389893998940989419894298943989449894598946989479894898949989509895198952989539895498955989569895798958989599896098961989629896398964989659896698967989689896998970989719897298973989749897598976989779897898979989809898198982989839898498985989869898798988989899899098991989929899398994989959899698997989989899999000990019900299003990049900599006990079900899009990109901199012990139901499015990169901799018990199902099021990229902399024990259902699027990289902999030990319903299033990349903599036990379903899039990409904199042990439904499045990469904799048990499905099051990529905399054990559905699057990589905999060990619906299063990649906599066990679906899069990709907199072990739907499075990769907799078990799908099081990829908399084990859908699087990889908999090990919909299093990949909599096990979909899099991009910199102991039910499105991069910799108991099911099111991129911399114991159911699117991189911999120991219912299123991249912599126991279912899129991309913199132991339913499135991369913799138991399914099141991429914399144991459914699147991489914999150991519915299153991549915599156991579915899159991609916199162991639916499165991669916799168991699917099171991729917399174991759917699177991789917999180991819918299183991849918599186991879918899189991909919199192991939919499195991969919799198991999920099201992029920399204992059920699207992089920999210992119921299213992149921599216992179921899219992209922199222992239922499225992269922799228992299923099231992329923399234992359923699237992389923999240992419924299243992449924599246992479924899249992509925199252992539925499255992569925799258992599926099261992629926399264992659926699267992689926999270992719927299273992749927599276992779927899279992809928199282992839928499285992869928799288992899929099291992929929399294992959929699297992989929999300993019930299303993049930599306993079930899309993109931199312993139931499315993169931799318993199932099321993229932399324993259932699327993289932999330993319933299333993349933599336993379933899339993409934199342993439934499345993469934799348993499935099351993529935399354993559935699357993589935999360993619936299363993649936599366993679936899369993709937199372993739937499375993769937799378993799938099381993829938399384993859938699387993889938999390993919939299393993949939599396993979939899399994009940199402994039940499405994069940799408994099941099411994129941399414994159941699417994189941999420994219942299423994249942599426994279942899429994309943199432994339943499435994369943799438994399944099441994429944399444994459944699447994489944999450994519945299453994549945599456994579945899459994609946199462994639946499465994669946799468994699947099471994729947399474994759947699477994789947999480994819948299483994849948599486994879948899489994909949199492994939949499495994969949799498994999950099501995029950399504995059950699507995089950999510995119951299513995149951599516995179951899519995209952199522995239952499525995269952799528995299953099531995329953399534995359953699537995389953999540995419954299543995449954599546995479954899549995509955199552995539955499555995569955799558995599956099561995629956399564995659956699567995689956999570995719957299573995749957599576995779957899579995809958199582995839958499585995869958799588995899959099591995929959399594995959959699597995989959999600996019960299603996049960599606996079960899609996109961199612996139961499615996169961799618996199962099621996229962399624996259962699627996289962999630996319963299633996349963599636996379963899639996409964199642996439964499645996469964799648996499965099651996529965399654996559965699657996589965999660996619966299663996649966599666996679966899669996709967199672996739967499675996769967799678996799968099681996829968399684996859968699687996889968999690996919969299693996949969599696996979969899699997009970199702997039970499705997069970799708997099971099711997129971399714997159971699717997189971999720997219972299723997249972599726997279972899729997309973199732997339973499735997369973799738997399974099741997429974399744997459974699747997489974999750997519975299753997549975599756997579975899759997609976199762997639976499765997669976799768997699977099771997729977399774997759977699777997789977999780997819978299783997849978599786997879978899789997909979199792997939979499795997969979799798997999980099801998029980399804998059980699807998089980999810998119981299813998149981599816998179981899819998209982199822998239982499825998269982799828998299983099831998329983399834998359983699837998389983999840998419984299843998449984599846998479984899849998509985199852998539985499855998569985799858998599986099861998629986399864998659986699867998689986999870998719987299873998749987599876998779987899879998809988199882998839988499885998869988799888998899989099891998929989399894998959989699897998989989999900999019990299903999049990599906999079990899909999109991199912999139991499915999169991799918999199992099921999229992399924999259992699927999289992999930999319993299933999349993599936999379993899939999409994199942999439994499945999469994799948999499995099951999529995399954999559995699957999589995999960999619996299963999649996599966999679996899969999709997199972999739997499975999769997799978999799998099981999829998399984999859998699987999889998999990999919999299993999949999599996999979999899999100000100001100002100003100004100005100006100007100008100009100010100011100012100013100014100015100016100017100018100019100020100021100022100023100024100025100026100027100028100029100030100031100032100033100034100035100036100037100038100039100040100041100042100043100044100045100046100047100048100049100050100051100052100053100054100055100056100057100058100059100060100061100062100063100064100065100066100067100068100069100070100071100072100073100074100075100076100077100078100079100080100081100082100083100084100085100086100087100088100089100090100091100092100093100094100095100096100097100098100099100100100101100102100103100104100105100106100107100108100109100110100111100112100113100114100115100116100117100118100119100120100121100122100123100124100125100126100127100128100129100130100131100132100133100134100135100136100137100138100139100140100141100142100143100144100145100146100147100148100149100150100151100152100153100154100155100156100157100158100159100160100161100162100163100164100165100166100167100168100169100170100171100172100173100174100175100176100177100178100179100180100181100182100183100184100185100186100187100188100189100190100191100192100193100194100195100196100197100198100199100200100201100202100203100204100205100206100207100208100209100210100211100212100213100214
  1. #!/usr/bin/env node
  2. (function(define, require){
  3. define(function (requirejs) {
  4. var module = void 0; // Bad UMDs workaround
  5. requirejs.resolve = require.resolve;
  6. require = requirejs;
  7. /*!
  8. * @overview es6-promise - a tiny implementation of Promises/A+.
  9. * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
  10. * @license Licensed under MIT license
  11. * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
  12. * @version v4.2.8+1e68dce6
  13. */
  14. (function (global, factory) {
  15. typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  16. typeof define === 'function' && define.amd ? define('amber/es6-promise',factory) :
  17. (global.ES6Promise = factory());
  18. }(this, (function () { 'use strict';
  19. function objectOrFunction(x) {
  20. var type = typeof x;
  21. return x !== null && (type === 'object' || type === 'function');
  22. }
  23. function isFunction(x) {
  24. return typeof x === 'function';
  25. }
  26. var _isArray = void 0;
  27. if (Array.isArray) {
  28. _isArray = Array.isArray;
  29. } else {
  30. _isArray = function (x) {
  31. return Object.prototype.toString.call(x) === '[object Array]';
  32. };
  33. }
  34. var isArray = _isArray;
  35. var len = 0;
  36. var vertxNext = void 0;
  37. var customSchedulerFn = void 0;
  38. var asap = function asap(callback, arg) {
  39. queue[len] = callback;
  40. queue[len + 1] = arg;
  41. len += 2;
  42. if (len === 2) {
  43. // If len is 2, that means that we need to schedule an async flush.
  44. // If additional callbacks are queued before the queue is flushed, they
  45. // will be processed by this flush that we are scheduling.
  46. if (customSchedulerFn) {
  47. customSchedulerFn(flush);
  48. } else {
  49. scheduleFlush();
  50. }
  51. }
  52. };
  53. function setScheduler(scheduleFn) {
  54. customSchedulerFn = scheduleFn;
  55. }
  56. function setAsap(asapFn) {
  57. asap = asapFn;
  58. }
  59. var browserWindow = typeof window !== 'undefined' ? window : undefined;
  60. var browserGlobal = browserWindow || {};
  61. var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
  62. var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
  63. // test for web worker but not in IE10
  64. var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
  65. // node
  66. function useNextTick() {
  67. // node version 0.10.x displays a deprecation warning when nextTick is used recursively
  68. // see https://github.com/cujojs/when/issues/410 for details
  69. return function () {
  70. return process.nextTick(flush);
  71. };
  72. }
  73. // vertx
  74. function useVertxTimer() {
  75. if (typeof vertxNext !== 'undefined') {
  76. return function () {
  77. vertxNext(flush);
  78. };
  79. }
  80. return useSetTimeout();
  81. }
  82. function useMutationObserver() {
  83. var iterations = 0;
  84. var observer = new BrowserMutationObserver(flush);
  85. var node = document.createTextNode('');
  86. observer.observe(node, { characterData: true });
  87. return function () {
  88. node.data = iterations = ++iterations % 2;
  89. };
  90. }
  91. // web worker
  92. function useMessageChannel() {
  93. var channel = new MessageChannel();
  94. channel.port1.onmessage = flush;
  95. return function () {
  96. return channel.port2.postMessage(0);
  97. };
  98. }
  99. function useSetTimeout() {
  100. // Store setTimeout reference so es6-promise will be unaffected by
  101. // other code modifying setTimeout (like sinon.useFakeTimers())
  102. var globalSetTimeout = setTimeout;
  103. return function () {
  104. return globalSetTimeout(flush, 1);
  105. };
  106. }
  107. var queue = new Array(1000);
  108. function flush() {
  109. for (var i = 0; i < len; i += 2) {
  110. var callback = queue[i];
  111. var arg = queue[i + 1];
  112. callback(arg);
  113. queue[i] = undefined;
  114. queue[i + 1] = undefined;
  115. }
  116. len = 0;
  117. }
  118. function attemptVertx() {
  119. try {
  120. var vertx = Function('return this')().require('vertx');
  121. vertxNext = vertx.runOnLoop || vertx.runOnContext;
  122. return useVertxTimer();
  123. } catch (e) {
  124. return useSetTimeout();
  125. }
  126. }
  127. var scheduleFlush = void 0;
  128. // Decide what async method to use to triggering processing of queued callbacks:
  129. if (isNode) {
  130. scheduleFlush = useNextTick();
  131. } else if (BrowserMutationObserver) {
  132. scheduleFlush = useMutationObserver();
  133. } else if (isWorker) {
  134. scheduleFlush = useMessageChannel();
  135. } else if (browserWindow === undefined && typeof require === 'function') {
  136. scheduleFlush = attemptVertx();
  137. } else {
  138. scheduleFlush = useSetTimeout();
  139. }
  140. function then(onFulfillment, onRejection) {
  141. var parent = this;
  142. var child = new this.constructor(noop);
  143. if (child[PROMISE_ID] === undefined) {
  144. makePromise(child);
  145. }
  146. var _state = parent._state;
  147. if (_state) {
  148. var callback = arguments[_state - 1];
  149. asap(function () {
  150. return invokeCallback(_state, child, callback, parent._result);
  151. });
  152. } else {
  153. subscribe(parent, child, onFulfillment, onRejection);
  154. }
  155. return child;
  156. }
  157. /**
  158. `Promise.resolve` returns a promise that will become resolved with the
  159. passed `value`. It is shorthand for the following:
  160. ```javascript
  161. let promise = new Promise(function(resolve, reject){
  162. resolve(1);
  163. });
  164. promise.then(function(value){
  165. // value === 1
  166. });
  167. ```
  168. Instead of writing the above, your code now simply becomes the following:
  169. ```javascript
  170. let promise = Promise.resolve(1);
  171. promise.then(function(value){
  172. // value === 1
  173. });
  174. ```
  175. @method resolve
  176. @static
  177. @param {Any} value value that the returned promise will be resolved with
  178. Useful for tooling.
  179. @return {Promise} a promise that will become fulfilled with the given
  180. `value`
  181. */
  182. function resolve$1(object) {
  183. /*jshint validthis:true */
  184. var Constructor = this;
  185. if (object && typeof object === 'object' && object.constructor === Constructor) {
  186. return object;
  187. }
  188. var promise = new Constructor(noop);
  189. resolve(promise, object);
  190. return promise;
  191. }
  192. var PROMISE_ID = Math.random().toString(36).substring(2);
  193. function noop() {}
  194. var PENDING = void 0;
  195. var FULFILLED = 1;
  196. var REJECTED = 2;
  197. function selfFulfillment() {
  198. return new TypeError("You cannot resolve a promise with itself");
  199. }
  200. function cannotReturnOwn() {
  201. return new TypeError('A promises callback cannot return that same promise.');
  202. }
  203. function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
  204. try {
  205. then$$1.call(value, fulfillmentHandler, rejectionHandler);
  206. } catch (e) {
  207. return e;
  208. }
  209. }
  210. function handleForeignThenable(promise, thenable, then$$1) {
  211. asap(function (promise) {
  212. var sealed = false;
  213. var error = tryThen(then$$1, thenable, function (value) {
  214. if (sealed) {
  215. return;
  216. }
  217. sealed = true;
  218. if (thenable !== value) {
  219. resolve(promise, value);
  220. } else {
  221. fulfill(promise, value);
  222. }
  223. }, function (reason) {
  224. if (sealed) {
  225. return;
  226. }
  227. sealed = true;
  228. reject(promise, reason);
  229. }, 'Settle: ' + (promise._label || ' unknown promise'));
  230. if (!sealed && error) {
  231. sealed = true;
  232. reject(promise, error);
  233. }
  234. }, promise);
  235. }
  236. function handleOwnThenable(promise, thenable) {
  237. if (thenable._state === FULFILLED) {
  238. fulfill(promise, thenable._result);
  239. } else if (thenable._state === REJECTED) {
  240. reject(promise, thenable._result);
  241. } else {
  242. subscribe(thenable, undefined, function (value) {
  243. return resolve(promise, value);
  244. }, function (reason) {
  245. return reject(promise, reason);
  246. });
  247. }
  248. }
  249. function handleMaybeThenable(promise, maybeThenable, then$$1) {
  250. if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
  251. handleOwnThenable(promise, maybeThenable);
  252. } else {
  253. if (then$$1 === undefined) {
  254. fulfill(promise, maybeThenable);
  255. } else if (isFunction(then$$1)) {
  256. handleForeignThenable(promise, maybeThenable, then$$1);
  257. } else {
  258. fulfill(promise, maybeThenable);
  259. }
  260. }
  261. }
  262. function resolve(promise, value) {
  263. if (promise === value) {
  264. reject(promise, selfFulfillment());
  265. } else if (objectOrFunction(value)) {
  266. var then$$1 = void 0;
  267. try {
  268. then$$1 = value.then;
  269. } catch (error) {
  270. reject(promise, error);
  271. return;
  272. }
  273. handleMaybeThenable(promise, value, then$$1);
  274. } else {
  275. fulfill(promise, value);
  276. }
  277. }
  278. function publishRejection(promise) {
  279. if (promise._onerror) {
  280. promise._onerror(promise._result);
  281. }
  282. publish(promise);
  283. }
  284. function fulfill(promise, value) {
  285. if (promise._state !== PENDING) {
  286. return;
  287. }
  288. promise._result = value;
  289. promise._state = FULFILLED;
  290. if (promise._subscribers.length !== 0) {
  291. asap(publish, promise);
  292. }
  293. }
  294. function reject(promise, reason) {
  295. if (promise._state !== PENDING) {
  296. return;
  297. }
  298. promise._state = REJECTED;
  299. promise._result = reason;
  300. asap(publishRejection, promise);
  301. }
  302. function subscribe(parent, child, onFulfillment, onRejection) {
  303. var _subscribers = parent._subscribers;
  304. var length = _subscribers.length;
  305. parent._onerror = null;
  306. _subscribers[length] = child;
  307. _subscribers[length + FULFILLED] = onFulfillment;
  308. _subscribers[length + REJECTED] = onRejection;
  309. if (length === 0 && parent._state) {
  310. asap(publish, parent);
  311. }
  312. }
  313. function publish(promise) {
  314. var subscribers = promise._subscribers;
  315. var settled = promise._state;
  316. if (subscribers.length === 0) {
  317. return;
  318. }
  319. var child = void 0,
  320. callback = void 0,
  321. detail = promise._result;
  322. for (var i = 0; i < subscribers.length; i += 3) {
  323. child = subscribers[i];
  324. callback = subscribers[i + settled];
  325. if (child) {
  326. invokeCallback(settled, child, callback, detail);
  327. } else {
  328. callback(detail);
  329. }
  330. }
  331. promise._subscribers.length = 0;
  332. }
  333. function invokeCallback(settled, promise, callback, detail) {
  334. var hasCallback = isFunction(callback),
  335. value = void 0,
  336. error = void 0,
  337. succeeded = true;
  338. if (hasCallback) {
  339. try {
  340. value = callback(detail);
  341. } catch (e) {
  342. succeeded = false;
  343. error = e;
  344. }
  345. if (promise === value) {
  346. reject(promise, cannotReturnOwn());
  347. return;
  348. }
  349. } else {
  350. value = detail;
  351. }
  352. if (promise._state !== PENDING) {
  353. // noop
  354. } else if (hasCallback && succeeded) {
  355. resolve(promise, value);
  356. } else if (succeeded === false) {
  357. reject(promise, error);
  358. } else if (settled === FULFILLED) {
  359. fulfill(promise, value);
  360. } else if (settled === REJECTED) {
  361. reject(promise, value);
  362. }
  363. }
  364. function initializePromise(promise, resolver) {
  365. try {
  366. resolver(function resolvePromise(value) {
  367. resolve(promise, value);
  368. }, function rejectPromise(reason) {
  369. reject(promise, reason);
  370. });
  371. } catch (e) {
  372. reject(promise, e);
  373. }
  374. }
  375. var id = 0;
  376. function nextId() {
  377. return id++;
  378. }
  379. function makePromise(promise) {
  380. promise[PROMISE_ID] = id++;
  381. promise._state = undefined;
  382. promise._result = undefined;
  383. promise._subscribers = [];
  384. }
  385. function validationError() {
  386. return new Error('Array Methods must be provided an Array');
  387. }
  388. var Enumerator = function () {
  389. function Enumerator(Constructor, input) {
  390. this._instanceConstructor = Constructor;
  391. this.promise = new Constructor(noop);
  392. if (!this.promise[PROMISE_ID]) {
  393. makePromise(this.promise);
  394. }
  395. if (isArray(input)) {
  396. this.length = input.length;
  397. this._remaining = input.length;
  398. this._result = new Array(this.length);
  399. if (this.length === 0) {
  400. fulfill(this.promise, this._result);
  401. } else {
  402. this.length = this.length || 0;
  403. this._enumerate(input);
  404. if (this._remaining === 0) {
  405. fulfill(this.promise, this._result);
  406. }
  407. }
  408. } else {
  409. reject(this.promise, validationError());
  410. }
  411. }
  412. Enumerator.prototype._enumerate = function _enumerate(input) {
  413. for (var i = 0; this._state === PENDING && i < input.length; i++) {
  414. this._eachEntry(input[i], i);
  415. }
  416. };
  417. Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
  418. var c = this._instanceConstructor;
  419. var resolve$$1 = c.resolve;
  420. if (resolve$$1 === resolve$1) {
  421. var _then = void 0;
  422. var error = void 0;
  423. var didError = false;
  424. try {
  425. _then = entry.then;
  426. } catch (e) {
  427. didError = true;
  428. error = e;
  429. }
  430. if (_then === then && entry._state !== PENDING) {
  431. this._settledAt(entry._state, i, entry._result);
  432. } else if (typeof _then !== 'function') {
  433. this._remaining--;
  434. this._result[i] = entry;
  435. } else if (c === Promise$1) {
  436. var promise = new c(noop);
  437. if (didError) {
  438. reject(promise, error);
  439. } else {
  440. handleMaybeThenable(promise, entry, _then);
  441. }
  442. this._willSettleAt(promise, i);
  443. } else {
  444. this._willSettleAt(new c(function (resolve$$1) {
  445. return resolve$$1(entry);
  446. }), i);
  447. }
  448. } else {
  449. this._willSettleAt(resolve$$1(entry), i);
  450. }
  451. };
  452. Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
  453. var promise = this.promise;
  454. if (promise._state === PENDING) {
  455. this._remaining--;
  456. if (state === REJECTED) {
  457. reject(promise, value);
  458. } else {
  459. this._result[i] = value;
  460. }
  461. }
  462. if (this._remaining === 0) {
  463. fulfill(promise, this._result);
  464. }
  465. };
  466. Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
  467. var enumerator = this;
  468. subscribe(promise, undefined, function (value) {
  469. return enumerator._settledAt(FULFILLED, i, value);
  470. }, function (reason) {
  471. return enumerator._settledAt(REJECTED, i, reason);
  472. });
  473. };
  474. return Enumerator;
  475. }();
  476. /**
  477. `Promise.all` accepts an array of promises, and returns a new promise which
  478. is fulfilled with an array of fulfillment values for the passed promises, or
  479. rejected with the reason of the first passed promise to be rejected. It casts all
  480. elements of the passed iterable to promises as it runs this algorithm.
  481. Example:
  482. ```javascript
  483. let promise1 = resolve(1);
  484. let promise2 = resolve(2);
  485. let promise3 = resolve(3);
  486. let promises = [ promise1, promise2, promise3 ];
  487. Promise.all(promises).then(function(array){
  488. // The array here would be [ 1, 2, 3 ];
  489. });
  490. ```
  491. If any of the `promises` given to `all` are rejected, the first promise
  492. that is rejected will be given as an argument to the returned promises's
  493. rejection handler. For example:
  494. Example:
  495. ```javascript
  496. let promise1 = resolve(1);
  497. let promise2 = reject(new Error("2"));
  498. let promise3 = reject(new Error("3"));
  499. let promises = [ promise1, promise2, promise3 ];
  500. Promise.all(promises).then(function(array){
  501. // Code here never runs because there are rejected promises!
  502. }, function(error) {
  503. // error.message === "2"
  504. });
  505. ```
  506. @method all
  507. @static
  508. @param {Array} entries array of promises
  509. @param {String} label optional string for labeling the promise.
  510. Useful for tooling.
  511. @return {Promise} promise that is fulfilled when all `promises` have been
  512. fulfilled, or rejected if any of them become rejected.
  513. @static
  514. */
  515. function all(entries) {
  516. return new Enumerator(this, entries).promise;
  517. }
  518. /**
  519. `Promise.race` returns a new promise which is settled in the same way as the
  520. first passed promise to settle.
  521. Example:
  522. ```javascript
  523. let promise1 = new Promise(function(resolve, reject){
  524. setTimeout(function(){
  525. resolve('promise 1');
  526. }, 200);
  527. });
  528. let promise2 = new Promise(function(resolve, reject){
  529. setTimeout(function(){
  530. resolve('promise 2');
  531. }, 100);
  532. });
  533. Promise.race([promise1, promise2]).then(function(result){
  534. // result === 'promise 2' because it was resolved before promise1
  535. // was resolved.
  536. });
  537. ```
  538. `Promise.race` is deterministic in that only the state of the first
  539. settled promise matters. For example, even if other promises given to the
  540. `promises` array argument are resolved, but the first settled promise has
  541. become rejected before the other promises became fulfilled, the returned
  542. promise will become rejected:
  543. ```javascript
  544. let promise1 = new Promise(function(resolve, reject){
  545. setTimeout(function(){
  546. resolve('promise 1');
  547. }, 200);
  548. });
  549. let promise2 = new Promise(function(resolve, reject){
  550. setTimeout(function(){
  551. reject(new Error('promise 2'));
  552. }, 100);
  553. });
  554. Promise.race([promise1, promise2]).then(function(result){
  555. // Code here never runs
  556. }, function(reason){
  557. // reason.message === 'promise 2' because promise 2 became rejected before
  558. // promise 1 became fulfilled
  559. });
  560. ```
  561. An example real-world use case is implementing timeouts:
  562. ```javascript
  563. Promise.race([ajax('foo.json'), timeout(5000)])
  564. ```
  565. @method race
  566. @static
  567. @param {Array} promises array of promises to observe
  568. Useful for tooling.
  569. @return {Promise} a promise which settles in the same way as the first passed
  570. promise to settle.
  571. */
  572. function race(entries) {
  573. /*jshint validthis:true */
  574. var Constructor = this;
  575. if (!isArray(entries)) {
  576. return new Constructor(function (_, reject) {
  577. return reject(new TypeError('You must pass an array to race.'));
  578. });
  579. } else {
  580. return new Constructor(function (resolve, reject) {
  581. var length = entries.length;
  582. for (var i = 0; i < length; i++) {
  583. Constructor.resolve(entries[i]).then(resolve, reject);
  584. }
  585. });
  586. }
  587. }
  588. /**
  589. `Promise.reject` returns a promise rejected with the passed `reason`.
  590. It is shorthand for the following:
  591. ```javascript
  592. let promise = new Promise(function(resolve, reject){
  593. reject(new Error('WHOOPS'));
  594. });
  595. promise.then(function(value){
  596. // Code here doesn't run because the promise is rejected!
  597. }, function(reason){
  598. // reason.message === 'WHOOPS'
  599. });
  600. ```
  601. Instead of writing the above, your code now simply becomes the following:
  602. ```javascript
  603. let promise = Promise.reject(new Error('WHOOPS'));
  604. promise.then(function(value){
  605. // Code here doesn't run because the promise is rejected!
  606. }, function(reason){
  607. // reason.message === 'WHOOPS'
  608. });
  609. ```
  610. @method reject
  611. @static
  612. @param {Any} reason value that the returned promise will be rejected with.
  613. Useful for tooling.
  614. @return {Promise} a promise rejected with the given `reason`.
  615. */
  616. function reject$1(reason) {
  617. /*jshint validthis:true */
  618. var Constructor = this;
  619. var promise = new Constructor(noop);
  620. reject(promise, reason);
  621. return promise;
  622. }
  623. function needsResolver() {
  624. throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
  625. }
  626. function needsNew() {
  627. throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
  628. }
  629. /**
  630. Promise objects represent the eventual result of an asynchronous operation. The
  631. primary way of interacting with a promise is through its `then` method, which
  632. registers callbacks to receive either a promise's eventual value or the reason
  633. why the promise cannot be fulfilled.
  634. Terminology
  635. -----------
  636. - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
  637. - `thenable` is an object or function that defines a `then` method.
  638. - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
  639. - `exception` is a value that is thrown using the throw statement.
  640. - `reason` is a value that indicates why a promise was rejected.
  641. - `settled` the final resting state of a promise, fulfilled or rejected.
  642. A promise can be in one of three states: pending, fulfilled, or rejected.
  643. Promises that are fulfilled have a fulfillment value and are in the fulfilled
  644. state. Promises that are rejected have a rejection reason and are in the
  645. rejected state. A fulfillment value is never a thenable.
  646. Promises can also be said to *resolve* a value. If this value is also a
  647. promise, then the original promise's settled state will match the value's
  648. settled state. So a promise that *resolves* a promise that rejects will
  649. itself reject, and a promise that *resolves* a promise that fulfills will
  650. itself fulfill.
  651. Basic Usage:
  652. ------------
  653. ```js
  654. let promise = new Promise(function(resolve, reject) {
  655. // on success
  656. resolve(value);
  657. // on failure
  658. reject(reason);
  659. });
  660. promise.then(function(value) {
  661. // on fulfillment
  662. }, function(reason) {
  663. // on rejection
  664. });
  665. ```
  666. Advanced Usage:
  667. ---------------
  668. Promises shine when abstracting away asynchronous interactions such as
  669. `XMLHttpRequest`s.
  670. ```js
  671. function getJSON(url) {
  672. return new Promise(function(resolve, reject){
  673. let xhr = new XMLHttpRequest();
  674. xhr.open('GET', url);
  675. xhr.onreadystatechange = handler;
  676. xhr.responseType = 'json';
  677. xhr.setRequestHeader('Accept', 'application/json');
  678. xhr.send();
  679. function handler() {
  680. if (this.readyState === this.DONE) {
  681. if (this.status === 200) {
  682. resolve(this.response);
  683. } else {
  684. reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
  685. }
  686. }
  687. };
  688. });
  689. }
  690. getJSON('/posts.json').then(function(json) {
  691. // on fulfillment
  692. }, function(reason) {
  693. // on rejection
  694. });
  695. ```
  696. Unlike callbacks, promises are great composable primitives.
  697. ```js
  698. Promise.all([
  699. getJSON('/posts'),
  700. getJSON('/comments')
  701. ]).then(function(values){
  702. values[0] // => postsJSON
  703. values[1] // => commentsJSON
  704. return values;
  705. });
  706. ```
  707. @class Promise
  708. @param {Function} resolver
  709. Useful for tooling.
  710. @constructor
  711. */
  712. var Promise$1 = function () {
  713. function Promise(resolver) {
  714. this[PROMISE_ID] = nextId();
  715. this._result = this._state = undefined;
  716. this._subscribers = [];
  717. if (noop !== resolver) {
  718. typeof resolver !== 'function' && needsResolver();
  719. this instanceof Promise ? initializePromise(this, resolver) : needsNew();
  720. }
  721. }
  722. /**
  723. The primary way of interacting with a promise is through its `then` method,
  724. which registers callbacks to receive either a promise's eventual value or the
  725. reason why the promise cannot be fulfilled.
  726. ```js
  727. findUser().then(function(user){
  728. // user is available
  729. }, function(reason){
  730. // user is unavailable, and you are given the reason why
  731. });
  732. ```
  733. Chaining
  734. --------
  735. The return value of `then` is itself a promise. This second, 'downstream'
  736. promise is resolved with the return value of the first promise's fulfillment
  737. or rejection handler, or rejected if the handler throws an exception.
  738. ```js
  739. findUser().then(function (user) {
  740. return user.name;
  741. }, function (reason) {
  742. return 'default name';
  743. }).then(function (userName) {
  744. // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
  745. // will be `'default name'`
  746. });
  747. findUser().then(function (user) {
  748. throw new Error('Found user, but still unhappy');
  749. }, function (reason) {
  750. throw new Error('`findUser` rejected and we're unhappy');
  751. }).then(function (value) {
  752. // never reached
  753. }, function (reason) {
  754. // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
  755. // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
  756. });
  757. ```
  758. If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
  759. ```js
  760. findUser().then(function (user) {
  761. throw new PedagogicalException('Upstream error');
  762. }).then(function (value) {
  763. // never reached
  764. }).then(function (value) {
  765. // never reached
  766. }, function (reason) {
  767. // The `PedgagocialException` is propagated all the way down to here
  768. });
  769. ```
  770. Assimilation
  771. ------------
  772. Sometimes the value you want to propagate to a downstream promise can only be
  773. retrieved asynchronously. This can be achieved by returning a promise in the
  774. fulfillment or rejection handler. The downstream promise will then be pending
  775. until the returned promise is settled. This is called *assimilation*.
  776. ```js
  777. findUser().then(function (user) {
  778. return findCommentsByAuthor(user);
  779. }).then(function (comments) {
  780. // The user's comments are now available
  781. });
  782. ```
  783. If the assimliated promise rejects, then the downstream promise will also reject.
  784. ```js
  785. findUser().then(function (user) {
  786. return findCommentsByAuthor(user);
  787. }).then(function (comments) {
  788. // If `findCommentsByAuthor` fulfills, we'll have the value here
  789. }, function (reason) {
  790. // If `findCommentsByAuthor` rejects, we'll have the reason here
  791. });
  792. ```
  793. Simple Example
  794. --------------
  795. Synchronous Example
  796. ```javascript
  797. let result;
  798. try {
  799. result = findResult();
  800. // success
  801. } catch(reason) {
  802. // failure
  803. }
  804. ```
  805. Errback Example
  806. ```js
  807. findResult(function(result, err){
  808. if (err) {
  809. // failure
  810. } else {
  811. // success
  812. }
  813. });
  814. ```
  815. Promise Example;
  816. ```javascript
  817. findResult().then(function(result){
  818. // success
  819. }, function(reason){
  820. // failure
  821. });
  822. ```
  823. Advanced Example
  824. --------------
  825. Synchronous Example
  826. ```javascript
  827. let author, books;
  828. try {
  829. author = findAuthor();
  830. books = findBooksByAuthor(author);
  831. // success
  832. } catch(reason) {
  833. // failure
  834. }
  835. ```
  836. Errback Example
  837. ```js
  838. function foundBooks(books) {
  839. }
  840. function failure(reason) {
  841. }
  842. findAuthor(function(author, err){
  843. if (err) {
  844. failure(err);
  845. // failure
  846. } else {
  847. try {
  848. findBoooksByAuthor(author, function(books, err) {
  849. if (err) {
  850. failure(err);
  851. } else {
  852. try {
  853. foundBooks(books);
  854. } catch(reason) {
  855. failure(reason);
  856. }
  857. }
  858. });
  859. } catch(error) {
  860. failure(err);
  861. }
  862. // success
  863. }
  864. });
  865. ```
  866. Promise Example;
  867. ```javascript
  868. findAuthor().
  869. then(findBooksByAuthor).
  870. then(function(books){
  871. // found books
  872. }).catch(function(reason){
  873. // something went wrong
  874. });
  875. ```
  876. @method then
  877. @param {Function} onFulfilled
  878. @param {Function} onRejected
  879. Useful for tooling.
  880. @return {Promise}
  881. */
  882. /**
  883. `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
  884. as the catch block of a try/catch statement.
  885. ```js
  886. function findAuthor(){
  887. throw new Error('couldn't find that author');
  888. }
  889. // synchronous
  890. try {
  891. findAuthor();
  892. } catch(reason) {
  893. // something went wrong
  894. }
  895. // async with promises
  896. findAuthor().catch(function(reason){
  897. // something went wrong
  898. });
  899. ```
  900. @method catch
  901. @param {Function} onRejection
  902. Useful for tooling.
  903. @return {Promise}
  904. */
  905. Promise.prototype.catch = function _catch(onRejection) {
  906. return this.then(null, onRejection);
  907. };
  908. /**
  909. `finally` will be invoked regardless of the promise's fate just as native
  910. try/catch/finally behaves
  911. Synchronous example:
  912. ```js
  913. findAuthor() {
  914. if (Math.random() > 0.5) {
  915. throw new Error();
  916. }
  917. return new Author();
  918. }
  919. try {
  920. return findAuthor(); // succeed or fail
  921. } catch(error) {
  922. return findOtherAuther();
  923. } finally {
  924. // always runs
  925. // doesn't affect the return value
  926. }
  927. ```
  928. Asynchronous example:
  929. ```js
  930. findAuthor().catch(function(reason){
  931. return findOtherAuther();
  932. }).finally(function(){
  933. // author was either found, or not
  934. });
  935. ```
  936. @method finally
  937. @param {Function} callback
  938. @return {Promise}
  939. */
  940. Promise.prototype.finally = function _finally(callback) {
  941. var promise = this;
  942. var constructor = promise.constructor;
  943. if (isFunction(callback)) {
  944. return promise.then(function (value) {
  945. return constructor.resolve(callback()).then(function () {
  946. return value;
  947. });
  948. }, function (reason) {
  949. return constructor.resolve(callback()).then(function () {
  950. throw reason;
  951. });
  952. });
  953. }
  954. return promise.then(callback, callback);
  955. };
  956. return Promise;
  957. }();
  958. Promise$1.prototype.then = then;
  959. Promise$1.all = all;
  960. Promise$1.race = race;
  961. Promise$1.resolve = resolve$1;
  962. Promise$1.reject = reject$1;
  963. Promise$1._setScheduler = setScheduler;
  964. Promise$1._setAsap = setAsap;
  965. Promise$1._asap = asap;
  966. /*global self*/
  967. function polyfill() {
  968. var local = void 0;
  969. if (typeof global !== 'undefined') {
  970. local = global;
  971. } else if (typeof self !== 'undefined') {
  972. local = self;
  973. } else {
  974. try {
  975. local = Function('return this')();
  976. } catch (e) {
  977. throw new Error('polyfill failed because global object is unavailable in this environment');
  978. }
  979. }
  980. var P = local.Promise;
  981. if (P) {
  982. var promiseToString = null;
  983. try {
  984. promiseToString = Object.prototype.toString.call(P.resolve());
  985. } catch (e) {
  986. // silently ignored
  987. }
  988. if (promiseToString === '[object Promise]' && !P.cast) {
  989. return;
  990. }
  991. }
  992. local.Promise = Promise$1;
  993. }
  994. // Strange compat..
  995. Promise$1.polyfill = polyfill;
  996. Promise$1.Promise = Promise$1;
  997. return Promise$1;
  998. })));
  999. //# sourceMappingURL=es6-promise.map
  1000. ;
  1001. //jshint eqnull:true
  1002. define('amber/kernel-checks',[],function () {
  1003. "use strict";
  1004. function assert (fn) {
  1005. try {
  1006. if (fn()) return;
  1007. } catch (ex) {
  1008. throw new Error("Error:\n" + ex + "in assertion:\n" + fn);
  1009. }
  1010. throw new Error("Assertion failed:\n" + fn);
  1011. }
  1012. assert(function () {
  1013. return !("hasOwnProperty" in Object.create(null));
  1014. });
  1015. assert(function () {
  1016. return Object.getPrototypeOf(Object.create(null)) === null;
  1017. });
  1018. assert(function () {
  1019. var p = {};
  1020. return Object.getPrototypeOf(Object.create(p)) === p;
  1021. });
  1022. assert(function () {
  1023. var p = {x: 4, y: 5}, q = {x: 6};
  1024. var r = Object.setPrototypeOf(q, p);
  1025. return r === q &&
  1026. q.x === 6 &&
  1027. q.y === 5;
  1028. });
  1029. // assert(function () {
  1030. // return new Function("return this")().Object === Object;
  1031. // });
  1032. // assert(function () {
  1033. // return Object.create(new Function("return this")()).Object === Object;
  1034. // });
  1035. assert(function () {
  1036. return typeof global !== "undefined";
  1037. });
  1038. assert(function () {
  1039. return global.Object === Object;
  1040. });
  1041. assert(function () {
  1042. return Object.create(global).Object === Object;
  1043. });
  1044. assert(function () {
  1045. return (function () {
  1046. return this;
  1047. }).apply(void 0) === void 0;
  1048. });
  1049. assert(function () {
  1050. return (function () {
  1051. return this;
  1052. }).apply(null) === null;
  1053. });
  1054. assert(function () {
  1055. return (function () {
  1056. return this;
  1057. }).apply(3) === 3;
  1058. });
  1059. assert(function () {
  1060. return (function () {
  1061. return this;
  1062. }).apply("foo") === "foo";
  1063. });
  1064. assert(function () {
  1065. return (function () {
  1066. return this;
  1067. }).apply(true) === true;
  1068. });
  1069. assert(function () {
  1070. var o = Object.freeze({});
  1071. try {
  1072. o.foo = "bar";
  1073. } catch (ex) {
  1074. }
  1075. return o.foo == null;
  1076. });
  1077. assert(function () {
  1078. return typeof Promise === "function";
  1079. });
  1080. assert(function () {
  1081. return typeof Promise.resolve === "function";
  1082. });
  1083. assert(function () {
  1084. return typeof Promise.reject === "function";
  1085. });
  1086. assert(function () {
  1087. return typeof new Promise(function () {
  1088. }).then === "function";
  1089. });
  1090. });
  1091. define('amber/brikz',[], function () {
  1092. return function Brikz(api, apiKey, initKey, backupKey) {
  1093. "use strict";
  1094. //jshint eqnull:true
  1095. var backup = {};
  1096. apiKey = apiKey || 'exports';
  1097. initKey = initKey || '__init__';
  1098. backupKey = backupKey || 'backup';
  1099. function mixin(src, target, what) {
  1100. for (var keys = Object.keys(what || src), l = keys.length, i = 0; i < l; ++i) {
  1101. if (src == null) {
  1102. target[keys[i]] = undefined;
  1103. } else {
  1104. var value = src[keys[i]];
  1105. if (typeof value !== "undefined") {
  1106. target[keys[i]] = value;
  1107. }
  1108. }
  1109. }
  1110. return target;
  1111. }
  1112. return function brikz() {
  1113. Object.keys(backup).forEach(function (key) {
  1114. mixin(null, api, (backup[key] || 0)[apiKey] || {});
  1115. });
  1116. var oapi = mixin(api, {}),
  1117. order = [],
  1118. chk = {};
  1119. function ensure(key) {
  1120. var b = brikz[key],
  1121. bak = backup[key];
  1122. while (typeof b === "function") {
  1123. (b.deps || []).forEach(ensure);
  1124. b[backupKey] = bak;
  1125. mixin(null, api, api);
  1126. b = new b(brikz, api);
  1127. }
  1128. brikz[key] = b;
  1129. if (b && !chk[key]) {
  1130. chk[key] = true;
  1131. order.push(b);
  1132. }
  1133. if (b && !b[apiKey]) {
  1134. b[apiKey] = mixin(api, {});
  1135. }
  1136. }
  1137. Object.keys(brikz).forEach(ensure);
  1138. mixin(oapi, mixin(null, api, api));
  1139. order.forEach(function (brik) {
  1140. mixin(brik[apiKey] || {}, api);
  1141. });
  1142. order.forEach(function (brik) {
  1143. if (brik[initKey]) {
  1144. brik[initKey]();
  1145. if (brik[initKey].once) {
  1146. delete brik[initKey];
  1147. }
  1148. }
  1149. });
  1150. backup = mixin(brikz, {});
  1151. };
  1152. };
  1153. });
  1154. //jshint eqnull:true
  1155. define('amber/junk-drawer',[],function () {
  1156. "use strict";
  1157. function inherits (child, parent) {
  1158. child.prototype = Object.create(parent.prototype, {
  1159. constructor: {
  1160. value: child,
  1161. enumerable: false, configurable: true, writable: true
  1162. }
  1163. });
  1164. return child;
  1165. }
  1166. function installMethodOfJsObject (obj, name, fn) {
  1167. Object.defineProperty(obj, name, {
  1168. value: fn,
  1169. enumerable: false, configurable: true, writable: true
  1170. });
  1171. }
  1172. function noop () {
  1173. }
  1174. function declareJsMethod (obj, name) {
  1175. if (obj[name] == null) installMethodOfJsObject(obj, name, noop);
  1176. }
  1177. var table = {
  1178. ':': '_',
  1179. '&': '_and',
  1180. '|': '_or',
  1181. '+': '_plus',
  1182. '-': '_minus',
  1183. '*': '_star',
  1184. '/': '_slash',
  1185. '\\': '_backslash',
  1186. '~': '_tild',
  1187. '%': '_percent',
  1188. '>': '_gt',
  1189. '<': '_lt',
  1190. '=': '_eq',
  1191. ',': '_comma',
  1192. '@': '_at'
  1193. };
  1194. /* Convert a Smalltalk selector into a JS selector */
  1195. function st2js (string) {
  1196. return '_' + string
  1197. .replace(/[:&|+\-*/\\~%><=,@]/g, function (ch) {
  1198. return table[ch];
  1199. });
  1200. };
  1201. function js2st (selector) {
  1202. if (selector.match(/^__/)) {
  1203. return binaryJsToSt(selector);
  1204. } else {
  1205. return keywordJsToSt(selector);
  1206. }
  1207. }
  1208. function keywordJsToSt (selector) {
  1209. return selector.replace(/^_/, '').replace(/_/g, ':');
  1210. }
  1211. function binaryJsToSt (selector) {
  1212. return selector
  1213. .replace(/^_/, '')
  1214. .replace(/_and/g, '&')
  1215. .replace(/_or/g, '|')
  1216. .replace(/_plus/g, '+')
  1217. .replace(/_minus/g, '-')
  1218. .replace(/_star/g, '*')
  1219. .replace(/_slash/g, '/')
  1220. .replace(/_backslash/g, '\\')
  1221. .replace(/_tild/g, '~')
  1222. .replace(/_percent/g, '%')
  1223. .replace(/_gt/g, '>')
  1224. .replace(/_lt/g, '<')
  1225. .replace(/_eq/g, '=')
  1226. .replace(/_comma/g, ',')
  1227. .replace(/_at/g, '@');
  1228. }
  1229. function addElement (array, el) {
  1230. if (typeof el === 'undefined') {
  1231. return;
  1232. }
  1233. if (array.indexOf(el) === -1) {
  1234. array.push(el);
  1235. }
  1236. }
  1237. function removeElement (array, el) {
  1238. var i = array.indexOf(el);
  1239. if (i !== -1) {
  1240. array.splice(i, 1);
  1241. }
  1242. }
  1243. function extend (target, source) {
  1244. Object.keys(source).forEach(function (key) {
  1245. target[key] = source[key];
  1246. });
  1247. return target;
  1248. }
  1249. function extendWithMethods (target, source) {
  1250. Object.keys(source).forEach(function (key) {
  1251. installMethodOfJsObject(target, key, source[key]);
  1252. });
  1253. return target;
  1254. }
  1255. function deleteKeysFrom (keys, obj) {
  1256. keys.forEach(function (each) {
  1257. delete obj[each];
  1258. });
  1259. }
  1260. return {
  1261. deleteKeysFrom: deleteKeysFrom,
  1262. extendWithMethods: extendWithMethods,
  1263. extend: extend,
  1264. removeElement: removeElement,
  1265. addElement: addElement,
  1266. js2st: js2st,
  1267. st2js: st2js,
  1268. declareJsMethod: declareJsMethod,
  1269. installMethodOfJsObject: installMethodOfJsObject,
  1270. inherits: inherits
  1271. }
  1272. });
  1273. //jshint eqnull:true
  1274. define('amber/kernel-fundamentals',['./junk-drawer'], function ($goodies) {
  1275. "use strict";
  1276. var inherits = $goodies.inherits;
  1277. var declareJsMethod = $goodies.declareJsMethod;
  1278. var addElement = $goodies.addElement;
  1279. var removeElement = $goodies.removeElement;
  1280. var hop = Object.prototype.hasOwnProperty;
  1281. function SelectorsBrik (brikz, st) {
  1282. var selectorSet = Object.create(null);
  1283. var selectors = this.selectors = [];
  1284. this.registerSelector = function (stSelector) {
  1285. if (selectorSet[stSelector]) return false;
  1286. selectors.push(stSelector);
  1287. return selectorSet[stSelector] = true;
  1288. };
  1289. st.allSelectors = function () {
  1290. return selectors;
  1291. };
  1292. }
  1293. function PackagesBrik (brikz, st) {
  1294. st.packageDescriptors = {};
  1295. /* Add a package load descriptor to the system */
  1296. st.addPackage = function (name, properties) {
  1297. if (!name) return null;
  1298. return st.packageDescriptors[name] = {properties: properties};
  1299. };
  1300. }
  1301. function FundamentalsFactory (globals, emit) {
  1302. var specialConstructors = Object.create(null);
  1303. function declareEvent (name) {
  1304. declareJsMethod(emit, name);
  1305. }
  1306. function RootBrik (brikz, st) {
  1307. /* Smalltalk foundational objects */
  1308. /* SmalltalkRoot is the hidden root of the normal Amber hierarchy.
  1309. All objects including `ProtoObject` inherit from SmalltalkRoot.
  1310. Detached roots (eg. wrapped JS classes like Number or Date)
  1311. do not directly inherit from SmalltalkRoot, but employ a workaround.*/
  1312. function SmalltalkRoot () {
  1313. }
  1314. function SmalltalkProtoObject () {
  1315. }
  1316. function SmalltalkObject () {
  1317. }
  1318. specialConstructors.ProtoObject = inherits(SmalltalkProtoObject, SmalltalkRoot);
  1319. specialConstructors.Object = inherits(SmalltalkObject, SmalltalkProtoObject);
  1320. this.Root = SmalltalkRoot;
  1321. this.Object = SmalltalkObject;
  1322. }
  1323. BehavioralsBrik.deps = ["root"];
  1324. function BehavioralsBrik (brikz, st) {
  1325. /* Smalltalk classes and traits */
  1326. var traitsOrClasses = [];
  1327. this.buildTraitOrClass = function (builder) {
  1328. var traitOrClass = globals.hasOwnProperty(builder.name) && globals[builder.name];
  1329. if (traitOrClass) {
  1330. builder.updateExisting(traitOrClass);
  1331. return traitOrClass;
  1332. } else {
  1333. return addTraitOrClass(builder.make());
  1334. }
  1335. };
  1336. declareEvent("behavioralAdded");
  1337. function addTraitOrClass (traitOrClass) {
  1338. globals[traitOrClass.name] = traitOrClass;
  1339. addElement(traitsOrClasses, traitOrClass);
  1340. traitOrClass.added();
  1341. emit.behavioralAdded(traitOrClass);
  1342. return traitOrClass;
  1343. }
  1344. declareEvent("behavioralRemoved");
  1345. function removeTraitOrClass (traitOrClass) {
  1346. emit.behavioralRemoved(traitOrClass);
  1347. traitOrClass.removed();
  1348. removeElement(traitsOrClasses, traitOrClass);
  1349. delete globals[traitOrClass.name];
  1350. return traitOrClass;
  1351. }
  1352. this.removeTraitOrClass = removeTraitOrClass;
  1353. st.traitsOrClasses = this.traitsOrClasses = traitsOrClasses;
  1354. }
  1355. MethodsBrik.deps = ["selectors", "root"];
  1356. function MethodsBrik (brikz, st) {
  1357. var registerSelector = brikz.selectors.registerSelector;
  1358. var SmalltalkObject = brikz.root.Object;
  1359. function SmalltalkMethod () {
  1360. }
  1361. specialConstructors.CompiledMethod = inherits(SmalltalkMethod, SmalltalkObject);
  1362. /* Smalltalk method object. To add a method to a class,
  1363. use api.addMethod() */
  1364. st.method = function (spec, factory) {
  1365. var that = new SmalltalkMethod();
  1366. that.selector = spec.selector;
  1367. that.args = spec.args || [];
  1368. that.protocol = spec.protocol;
  1369. that.source = spec.source;
  1370. that.pragmas = spec.pragmas;
  1371. that.messageSends = spec.messageSends || [];
  1372. // TODO remove .referencedClasses, have .referencedGlobals
  1373. that.referencedClasses = spec.referencedClasses || [];
  1374. that.fn = spec.fn;
  1375. if (factory) that.instantiateFn = factory;
  1376. return that;
  1377. };
  1378. /* Add/remove a method to/from a class */
  1379. st.addMethod = function (method, traitOrBehavior) {
  1380. if (method.owner != null) {
  1381. throw new Error("addMethod: Method " + method.selector + " already bound to " + method.owner);
  1382. }
  1383. method.owner = traitOrBehavior;
  1384. registerNewSelectors(method);
  1385. traitOrBehavior.localMethods[method.selector] = method;
  1386. updateMethod(method.selector, traitOrBehavior);
  1387. };
  1388. declareEvent("selectorsAdded");
  1389. function registerNewSelectors (method) {
  1390. var newSelectors = [];
  1391. function selectorInUse (stSelector) {
  1392. if (registerSelector(stSelector)) {
  1393. newSelectors.push(stSelector);
  1394. }
  1395. }
  1396. selectorInUse(method.selector);
  1397. method.messageSends.forEach(selectorInUse);
  1398. emit.selectorsAdded(newSelectors);
  1399. }
  1400. st.removeMethod = function (method, traitOrBehavior) {
  1401. if (traitOrBehavior.localMethods[method.selector] !== method) return;
  1402. delete traitOrBehavior.localMethods[method.selector];
  1403. updateMethod(method.selector, traitOrBehavior);
  1404. };
  1405. this.setupMethods = function (traitOrBehavior) {
  1406. traitOrBehavior.localMethods = Object.create(null);
  1407. var superclass = traitOrBehavior.superclass;
  1408. traitOrBehavior.methods = Object.create(superclass ? superclass.methods : null);
  1409. };
  1410. function setLocalMethods (traitOrBehavior, newLocalMethods) {
  1411. var oldLocalMethods = traitOrBehavior.localMethods;
  1412. traitOrBehavior.localMethods = newLocalMethods;
  1413. var selector;
  1414. for (selector in newLocalMethods) {
  1415. updateMethod(selector, traitOrBehavior);
  1416. }
  1417. for (selector in oldLocalMethods) {
  1418. updateMethod(selector, traitOrBehavior);
  1419. }
  1420. }
  1421. this.setLocalMethods = setLocalMethods;
  1422. declareEvent("methodReplaced");
  1423. function updateMethod (selector, traitOrBehavior) {
  1424. var oldMethod,
  1425. newMethod = traitOrBehavior.localMethods[selector],
  1426. methods = traitOrBehavior.methods;
  1427. if (hop.call(methods, selector)) {
  1428. oldMethod = methods[selector];
  1429. if (newMethod === oldMethod) return;
  1430. } else {
  1431. if (newMethod == null) {
  1432. console.warn("Removal of nonexistent method " + traitOrBehavior + " >> " + selector);
  1433. return;
  1434. }
  1435. oldMethod = null;
  1436. }
  1437. if (newMethod != null) {
  1438. if (newMethod.methodClass && newMethod.methodClass !== traitOrBehavior) {
  1439. console.warn("Resetting methodClass of " + newMethod.methodClass.name + " >> " + selector + " to " + traitOrBehavior.name);
  1440. }
  1441. newMethod.methodClass = traitOrBehavior;
  1442. methods[selector] = newMethod;
  1443. traitOrBehavior.methodAdded(newMethod);
  1444. } else {
  1445. delete methods[selector];
  1446. traitOrBehavior.methodRemoved(oldMethod);
  1447. }
  1448. emit.methodReplaced(newMethod, oldMethod, traitOrBehavior);
  1449. }
  1450. this.updateMethod = updateMethod;
  1451. }
  1452. NilBrik.deps = ["root"];
  1453. function NilBrik (brikz, st) {
  1454. var SmalltalkObject = brikz.root.Object;
  1455. function SmalltalkNil () {
  1456. }
  1457. specialConstructors.UndefinedObject = inherits(SmalltalkNil, SmalltalkObject);
  1458. this.nilAsReceiver = new SmalltalkNil();
  1459. this.nilAsValue = this.nilAsReceiver; // TODO null
  1460. // Adds an `a$nil` property to the `nil` object. When sending
  1461. // nil objects from one environment to another, doing
  1462. // `anObject == nil` (in JavaScript) does not always answer
  1463. // true as the referenced nil object might come from the other
  1464. // environment.
  1465. Object.defineProperty(this.nilAsReceiver, 'a$nil', {
  1466. value: true,
  1467. enumerable: false, configurable: false, writable: false
  1468. });
  1469. }
  1470. /* Making smalltalk that has basic building blocks */
  1471. function configure (brikz) {
  1472. brikz.root = RootBrik;
  1473. brikz.nil = NilBrik;
  1474. brikz.selectors = SelectorsBrik;
  1475. brikz.packages = PackagesBrik;
  1476. brikz.behaviorals = BehavioralsBrik;
  1477. brikz.methods = MethodsBrik;
  1478. brikz();
  1479. }
  1480. return {configure: configure, specialConstructors: specialConstructors};
  1481. }
  1482. return FundamentalsFactory;
  1483. });
  1484. //jshint eqnull:true
  1485. define('amber/kernel-language',['./junk-drawer'], function ($goodies) {
  1486. "use strict";
  1487. var inherits = $goodies.inherits;
  1488. var declareJsMethod = $goodies.declareJsMethod;
  1489. var addElement = $goodies.addElement;
  1490. var removeElement = $goodies.removeElement;
  1491. var extend = $goodies.extend;
  1492. var deleteKeysFrom = $goodies.deleteKeysFrom;
  1493. MethodCompositionBrik.deps = ["methods"];
  1494. function MethodCompositionBrik (brikz, st) {
  1495. var setLocalMethods = brikz.methods.setLocalMethods;
  1496. var updateMethod = brikz.methods.updateMethod;
  1497. function aliased (selector, method) {
  1498. var result = st.method(method, method.instantiateFn);
  1499. if (method.selector !== selector) {
  1500. result.selector = selector;
  1501. result.source = '"Aliased as ' + selector + '"\n' + method.source;
  1502. }
  1503. result.owner = method.owner;
  1504. return result;
  1505. }
  1506. function fillTraitTransformation (traitTransformation, obj) {
  1507. // assert(Object.getOwnProperties(obj).length === 0)
  1508. var traitMethods = traitTransformation.trait.methods;
  1509. Object.keys(traitMethods).forEach(function (selector) {
  1510. obj[selector] = aliased(selector, traitMethods[selector]);
  1511. });
  1512. var traitAliases = traitTransformation.aliases;
  1513. if (traitAliases) {
  1514. Object.keys(traitAliases).forEach(function (aliasSelector) {
  1515. var aliasedMethod = traitMethods[traitAliases[aliasSelector]];
  1516. if (aliasedMethod) obj[aliasSelector] = aliased(aliasSelector, aliasedMethod);
  1517. // else delete obj[aliasSelector]; // semantically correct; optimized away
  1518. });
  1519. }
  1520. var traitExclusions = traitTransformation.exclusions;
  1521. if (traitExclusions) {
  1522. deleteKeysFrom(traitExclusions, obj);
  1523. }
  1524. return obj;
  1525. }
  1526. function buildCompositionChain (traitComposition) {
  1527. return traitComposition.reduce(function (soFar, each) {
  1528. return fillTraitTransformation(each, Object.create(soFar));
  1529. }, null);
  1530. }
  1531. st.setTraitComposition = function (traitComposition, traitOrBehavior) {
  1532. var oldLocalMethods = traitOrBehavior.localMethods,
  1533. newLocalMethodsTemplate = Object.create(buildCompositionChain(traitComposition));
  1534. setLocalMethods(traitOrBehavior, extend(newLocalMethodsTemplate, oldLocalMethods));
  1535. (traitOrBehavior.traitComposition || []).forEach(function (each) {
  1536. removeElement(each.trait.traitUsers, traitOrBehavior);
  1537. });
  1538. traitOrBehavior.traitComposition = traitComposition && traitComposition.length ? traitComposition : null;
  1539. (traitOrBehavior.traitComposition || []).forEach(function (each) {
  1540. addElement(each.trait.traitUsers, traitOrBehavior);
  1541. });
  1542. };
  1543. function aliasesOfSelector (selector, traitAliases) {
  1544. if (!traitAliases) return [selector];
  1545. var result = Object.keys(traitAliases).filter(function (aliasSelector) {
  1546. return traitAliases[aliasSelector] === selector
  1547. });
  1548. if (!traitAliases[selector]) result.push(selector);
  1549. return result;
  1550. }
  1551. function applyTraitMethodAddition (selector, method, traitTransformation, obj) {
  1552. var changes = aliasesOfSelector(selector, traitTransformation.aliases);
  1553. changes.forEach(function (aliasSelector) {
  1554. obj[aliasSelector] = aliased(aliasSelector, method);
  1555. });
  1556. var traitExclusions = traitTransformation.exclusions;
  1557. if (traitExclusions) {
  1558. deleteKeysFrom(traitExclusions, obj);
  1559. }
  1560. return changes;
  1561. }
  1562. function applyTraitMethodDeletion (selector, traitTransformation, obj) {
  1563. var changes = aliasesOfSelector(selector, traitTransformation.aliases);
  1564. deleteKeysFrom(changes, obj);
  1565. return changes;
  1566. }
  1567. function traitMethodChanged (selector, method, trait, traitOrBehavior) {
  1568. var traitComposition = traitOrBehavior.traitComposition,
  1569. chain = traitOrBehavior.localMethods,
  1570. changes = [];
  1571. for (var i = traitComposition.length - 1; i >= 0; --i) {
  1572. chain = Object.getPrototypeOf(chain);
  1573. var traitTransformation = traitComposition[i];
  1574. if (traitTransformation.trait !== trait) continue;
  1575. changes.push.apply(changes, method ?
  1576. applyTraitMethodAddition(selector, method, traitTransformation, chain) :
  1577. applyTraitMethodDeletion(selector, traitTransformation, chain));
  1578. }
  1579. // assert(chain === null);
  1580. changes.forEach(function (each) {
  1581. updateMethod(each, traitOrBehavior);
  1582. });
  1583. }
  1584. this.traitMethodChanged = traitMethodChanged;
  1585. }
  1586. function LanguageFactory (specialConstructors, emit) {
  1587. function declareEvent (name) {
  1588. declareJsMethod(emit, name);
  1589. }
  1590. TraitsBrik.deps = ["behaviorals", "methods", "composition", "root"];
  1591. function TraitsBrik (brikz, st) {
  1592. var SmalltalkObject = brikz.root.Object;
  1593. var setupMethods = brikz.methods.setupMethods;
  1594. var traitMethodChanged = brikz.composition.traitMethodChanged;
  1595. var buildTraitOrClass = brikz.behaviorals.buildTraitOrClass;
  1596. function SmalltalkTrait () {
  1597. }
  1598. specialConstructors.Trait = inherits(SmalltalkTrait, SmalltalkObject);
  1599. SmalltalkTrait.prototype.trait = true;
  1600. declareJsMethod(SmalltalkTrait.prototype, "toString");
  1601. declareJsMethod(SmalltalkTrait.prototype, "added");
  1602. declareJsMethod(SmalltalkTrait.prototype, "removed");
  1603. declareJsMethod(SmalltalkTrait.prototype, "methodAdded");
  1604. declareJsMethod(SmalltalkTrait.prototype, "methodRemoved");
  1605. SmalltalkTrait.prototype.toString = function () {
  1606. return 'Smalltalk Trait ' + this.name;
  1607. };
  1608. SmalltalkTrait.prototype.methodAdded = function (method) {
  1609. propagateMethodChange(this, method.selector, method);
  1610. };
  1611. SmalltalkTrait.prototype.methodRemoved = function (method) {
  1612. propagateMethodChange(this, method.selector, null);
  1613. };
  1614. function propagateMethodChange (trait, selector, method) {
  1615. trait.traitUsers.forEach(function (each) {
  1616. traitMethodChanged(selector, method, trait, each);
  1617. });
  1618. }
  1619. function traitBuilder (traitName, category) {
  1620. return {
  1621. name: traitName,
  1622. make: function () {
  1623. var that = new SmalltalkTrait();
  1624. that.name = traitName;
  1625. that.category = category;
  1626. that.traitUsers = [];
  1627. setupMethods(that);
  1628. return that;
  1629. },
  1630. updateExisting: function (trait) {
  1631. }
  1632. };
  1633. }
  1634. st.addTrait = function (className, category) {
  1635. return buildTraitOrClass(traitBuilder(className, category));
  1636. };
  1637. }
  1638. ClassModelBrik.deps = ["root", "nil"];
  1639. function ClassModelBrik (brikz, st) {
  1640. var SmalltalkRoot = brikz.root.Root;
  1641. var SmalltalkObject = brikz.root.Object;
  1642. var nilAsReceiver = brikz.nil.nilAsReceiver;
  1643. function SmalltalkBehavior () {
  1644. }
  1645. function SmalltalkClass () {
  1646. }
  1647. function SmalltalkMetaclass () {
  1648. }
  1649. this.newMetaclass = function () {
  1650. return new SmalltalkMetaclass();
  1651. };
  1652. specialConstructors.Behavior = inherits(SmalltalkBehavior, SmalltalkObject);
  1653. specialConstructors.Class = inherits(SmalltalkClass, SmalltalkBehavior);
  1654. specialConstructors.Metaclass = inherits(SmalltalkMetaclass, SmalltalkBehavior);
  1655. SmalltalkMetaclass.prototype.meta = true;
  1656. declareJsMethod(SmalltalkClass.prototype, "toString");
  1657. declareJsMethod(SmalltalkMetaclass.prototype, "toString");
  1658. declareJsMethod(SmalltalkClass.prototype, "added");
  1659. declareJsMethod(SmalltalkClass.prototype, "removed");
  1660. declareJsMethod(SmalltalkBehavior.prototype, "methodAdded");
  1661. declareJsMethod(SmalltalkBehavior.prototype, "methodRemoved");
  1662. SmalltalkClass.prototype.toString = function () {
  1663. return 'Smalltalk ' + this.name;
  1664. };
  1665. SmalltalkMetaclass.prototype.toString = function () {
  1666. return 'Smalltalk Metaclass ' + this.instanceClass.name;
  1667. };
  1668. declareEvent("classCreated");
  1669. SmalltalkClass.prototype.added = function () {
  1670. registerToSuperclass(this);
  1671. emit.classCreated(this);
  1672. };
  1673. SmalltalkClass.prototype.removed = function () {
  1674. unregisterFromSuperclass(this);
  1675. };
  1676. declareEvent("behaviorMethodAdded");
  1677. SmalltalkBehavior.prototype.methodAdded = function (method) {
  1678. emit.behaviorMethodAdded(method, this);
  1679. };
  1680. declareEvent("behaviorMethodRemoved");
  1681. SmalltalkBehavior.prototype.methodRemoved = function (method) {
  1682. emit.behaviorMethodRemoved(method, this);
  1683. };
  1684. // Fake root class of the system.
  1685. // Effective superclass of all classes created with `nil subclass: ...`.
  1686. var nilAsClass = this.nilAsClass = {
  1687. fn: SmalltalkRoot,
  1688. subclasses: [],
  1689. a$cls: {fn: SmalltalkClass, methods: Object.create(null)}
  1690. };
  1691. this.bootstrapHierarchy = function (realClass) {
  1692. nilAsClass.a$cls = realClass;
  1693. nilAsClass.subclasses.forEach(function (each) {
  1694. each.a$cls.superclass = realClass;
  1695. Object.setPrototypeOf(each.a$cls.methods, realClass.methods);
  1696. registerToSuperclass(each.a$cls);
  1697. });
  1698. };
  1699. function registerToSuperclass (klass) {
  1700. addElement((klass.superclass || nilAsClass).subclasses, klass);
  1701. }
  1702. function unregisterFromSuperclass (klass) {
  1703. removeElement((klass.superclass || nilAsClass).subclasses, klass);
  1704. }
  1705. function metaSubclasses (metaclass) {
  1706. return metaclass.instanceClass.subclasses
  1707. .filter(function (each) {
  1708. return !each.meta;
  1709. })
  1710. .map(function (each) {
  1711. return each.a$cls;
  1712. });
  1713. }
  1714. st.metaSubclasses = metaSubclasses;
  1715. st.traverseClassTree = function (klass, fn) {
  1716. var queue = [klass], sentinel = {};
  1717. for (var i = 0; i < queue.length; ++i) {
  1718. var item = queue[i];
  1719. if (fn(item, sentinel) === sentinel) continue;
  1720. var subclasses = item.meta ? metaSubclasses(item) : item.subclasses;
  1721. queue.push.apply(queue, subclasses);
  1722. }
  1723. };
  1724. /**
  1725. * This function is used all over the compiled amber code.
  1726. * It takes any value (JavaScript or Smalltalk)
  1727. * and returns a proper Amber Smalltalk receiver.
  1728. *
  1729. * null or undefined -> nilAsReceiver,
  1730. * object having Smalltalk signature -> unchanged,
  1731. * otherwise wrapped foreign (JS) object
  1732. */
  1733. this.asReceiver = function (o) {
  1734. if (o == null) return nilAsReceiver;
  1735. else if (o.a$cls != null) return o;
  1736. else return st.wrapJavaScript(o);
  1737. };
  1738. // TODO remove, .iVarNames backward compatibility
  1739. this.__init__ = function () {
  1740. brikz.classConstruction.iVarNamesCompat(SmalltalkBehavior);
  1741. };
  1742. }
  1743. ClassConstructionBrik.deps = ["classModel", "behaviorals", "methods"];
  1744. function ClassConstructionBrik (brikz, st) {
  1745. var nilAsClass = brikz.classModel.nilAsClass;
  1746. var newMetaclass = brikz.classModel.newMetaclass;
  1747. var buildTraitOrClass = brikz.behaviorals.buildTraitOrClass;
  1748. var setupMethods = brikz.methods.setupMethods;
  1749. var removeTraitOrClass = brikz.behaviorals.removeTraitOrClass;
  1750. declareEvent("slotsChanged");
  1751. function setSlots (klass, slots) {
  1752. slots.forEach(function (name) {
  1753. if (!name.match(/^[a-zA-Z][a-zA-Z0-9]*$/))
  1754. throw new Error("Wrong identifier name: " + name);
  1755. });
  1756. klass.slots = slots;
  1757. emit.slotsChanged(klass);
  1758. }
  1759. st.setSlots = setSlots;
  1760. // TODO remove, .iVarNames backward compatibility
  1761. this.iVarNamesCompat = function (SmalltalkBehavior) {
  1762. Object.defineProperty(SmalltalkBehavior.prototype, "iVarNames", {
  1763. enumerable: true,
  1764. configurable: true,
  1765. get: function () {
  1766. return this.slots;
  1767. },
  1768. set: function (instanceVariableNames) {
  1769. setSlots(this, instanceVariableNames);
  1770. }
  1771. });
  1772. };
  1773. /* Smalltalk class creation. A class is an instance of an automatically
  1774. created metaclass object. Newly created classes (not their metaclass)
  1775. should be added to the system, see smalltalk.addClass().
  1776. Superclass linking is *not* handled here, see api.initialize() */
  1777. function classBuilder (className, superclass, category, fn) {
  1778. var logicalSuperclass = superclass;
  1779. if (superclass == null || superclass.a$nil) {
  1780. superclass = nilAsClass;
  1781. logicalSuperclass = null;
  1782. }
  1783. function klass () {
  1784. var that = metaclass().instanceClass;
  1785. that.superclass = logicalSuperclass;
  1786. that.fn = fn || inherits(function () {
  1787. }, superclass.fn);
  1788. that.slots = [];
  1789. that.name = className;
  1790. that.category = category;
  1791. that.subclasses = [];
  1792. setupMethods(that);
  1793. return that;
  1794. }
  1795. function metaclass () {
  1796. var that = newMetaclass();
  1797. that.superclass = superclass.a$cls;
  1798. that.fn = inherits(function () {
  1799. }, that.superclass.fn);
  1800. that.slots = [];
  1801. that.instanceClass = new that.fn();
  1802. wireKlass(that);
  1803. setupMethods(that);
  1804. return that;
  1805. }
  1806. return {
  1807. name: className,
  1808. make: klass,
  1809. updateExisting: function (klass) {
  1810. if (logicalSuperclass == null && klass.superclass != null || logicalSuperclass != null && klass.superclass !== logicalSuperclass || fn != null && fn !== klass.fn)
  1811. throw new Error("Incompatible change of class: " + klass.name);
  1812. }
  1813. };
  1814. }
  1815. function wireKlass (klass) {
  1816. Object.defineProperty(klass.fn.prototype, "a$cls", {
  1817. value: klass,
  1818. enumerable: false, configurable: true, writable: true
  1819. });
  1820. }
  1821. this.wireKlass = wireKlass;
  1822. /* Add a class to the system, creating a new one if needed.
  1823. A Package is lazily created if one with given name does not exist. */
  1824. st.addClass = function (className, superclass, category) {
  1825. // TODO remove, backward compatibility (note: only deprecated as of this note)
  1826. if (arguments[3]) {
  1827. var added = st.addClass(className, superclass, arguments[3]);
  1828. setSlots(added, category);
  1829. return added;
  1830. }
  1831. // While subclassing nil is allowed, it might be an error, so
  1832. // warn about it.
  1833. if (typeof superclass === 'undefined' || superclass && superclass.a$nil) {
  1834. console.warn('Compiling ' + className + ' as a subclass of `nil`. A dependency might be missing.');
  1835. }
  1836. return buildTraitOrClass(classBuilder(className, superclass, category, specialConstructors[className]));
  1837. };
  1838. st.removeClass = removeTraitOrClass;
  1839. }
  1840. /* Making smalltalk that can load */
  1841. function configure (brikz) {
  1842. brikz.traits = TraitsBrik;
  1843. brikz.composition = MethodCompositionBrik;
  1844. brikz.classModel = ClassModelBrik;
  1845. brikz.classConstruction = ClassConstructionBrik;
  1846. brikz();
  1847. }
  1848. return {configure: configure};
  1849. }
  1850. return LanguageFactory;
  1851. });
  1852. //jshint eqnull:true
  1853. define('amber/kernel-runtime',['./junk-drawer'], function ($goodies) {
  1854. "use strict";
  1855. var installMethodOfJsObject = $goodies.installMethodOfJsObject;
  1856. var declareJsMethod = $goodies.declareJsMethod;
  1857. var st2js = $goodies.st2js;
  1858. var js2st = $goodies.js2st;
  1859. var deleteKeysFrom = $goodies.deleteKeysFrom;
  1860. var extendWithMethods = $goodies.extendWithMethods;
  1861. var hop = Object.prototype.hasOwnProperty;
  1862. function cleanMethodOfJsObjectEx (obj, name) {
  1863. var attachments;
  1864. var old = Object.getOwnPropertyDescriptor(obj, name);
  1865. if (old != null && (old = old.value) != null) {
  1866. attachments = old.a$atx;
  1867. if (attachments != null) {
  1868. deleteKeysFrom(Object.keys(attachments), obj);
  1869. }
  1870. }
  1871. }
  1872. function installMethodOfJsObjectEx (obj, name, fn) {
  1873. cleanMethodOfJsObjectEx(obj, name);
  1874. var attachments = fn.a$atx;
  1875. if (attachments != null) {
  1876. extendWithMethods(obj, attachments);
  1877. }
  1878. return installMethodOfJsObject(obj, name, fn);
  1879. }
  1880. function SelectorConversionBrik (brikz, st) {
  1881. var st2jsMemo = Object.create(null);
  1882. st.st2js = function (stSelector) {
  1883. return st2jsMemo[stSelector] || st2js(stSelector);
  1884. };
  1885. this.st2js = function (stSelector) {
  1886. return st2jsMemo[stSelector] || (st2jsMemo[stSelector] = st2js(stSelector));
  1887. };
  1888. /* Convert a string to a valid smalltalk selector.
  1889. if you modify the following functions, also change st2js
  1890. accordingly */
  1891. st.js2st = js2st;
  1892. st.st2prop = function (stSelector) {
  1893. var colonPosition = stSelector.indexOf(':');
  1894. return colonPosition === -1 ? stSelector : stSelector.slice(0, colonPosition);
  1895. };
  1896. }
  1897. function RuntimeFactory (globals, emit) {
  1898. RuntimeSelectorsBrik.deps = ["selectors", "selectorConversion", "classModel"];
  1899. function RuntimeSelectorsBrik (brikz, st) {
  1900. var selectors = brikz.selectors.selectors;
  1901. var nilAsClass = brikz.classModel.nilAsClass;
  1902. var st2js = brikz.selectorConversion.st2js;
  1903. var jsSelectors = this.jsSelectors = [];
  1904. /* Method not implemented handlers */
  1905. function installNewSelectors (newSelectors, targetClasses) {
  1906. newSelectors.forEach(function (selector) {
  1907. var jsSelector = st2js(selector);
  1908. jsSelectors.push(jsSelector);
  1909. var fn = createDnuHandler(selector);
  1910. installMethodOfJsObject(nilAsClass.fn.prototype, jsSelector, fn);
  1911. targetClasses.forEach(function (target) {
  1912. installMethodOfJsObject(target.fn.prototype, jsSelector, fn);
  1913. });
  1914. });
  1915. }
  1916. this.installNewSelectors = installNewSelectors;
  1917. /* Dnu handler method */
  1918. function createDnuHandler (stSelector) {
  1919. return function () {
  1920. return globals.Message._selector_arguments_notUnderstoodBy_(
  1921. stSelector, [].slice.call(arguments), this
  1922. );
  1923. };
  1924. }
  1925. installNewSelectors(selectors, []);
  1926. }
  1927. RuntimeClassesBrik.deps = ["runtimeSelectors", "behaviorals", "classConstruction", "runtimeMethods"];
  1928. function RuntimeClassesBrik (brikz, st) {
  1929. var jsSelectors = brikz.runtimeSelectors.jsSelectors;
  1930. var installNewSelectors = brikz.runtimeSelectors.installNewSelectors;
  1931. var installAmberMethodIntoAmberClass = brikz.runtimeMethods.installAmberMethodIntoAmberClass;
  1932. var traitsOrClasses = brikz.behaviorals.traitsOrClasses;
  1933. var wireKlass = brikz.classConstruction.wireKlass;
  1934. var detachedRootClasses = [];
  1935. function detachClass (klass) {
  1936. klass.detachedRoot = true;
  1937. detachedRootClasses = traitsOrClasses.filter(function (klass) {
  1938. return klass.detachedRoot;
  1939. });
  1940. initClass(klass);
  1941. }
  1942. st.detachClass = detachClass;
  1943. emit.selectorsAdded = function (newSelectors) {
  1944. installNewSelectors(newSelectors, detachedRootClasses);
  1945. };
  1946. /* Initialize a class in its class hierarchy. Handle both classes and
  1947. metaclasses. */
  1948. function initClassAndMetaclass (klass) {
  1949. initClass(klass);
  1950. initClass(klass.a$cls);
  1951. }
  1952. traitsOrClasses.forEach(function (traitOrClass) {
  1953. if (!traitOrClass.trait) initClassAndMetaclass(traitOrClass);
  1954. });
  1955. function installStHooks () {
  1956. emit.behavioralAdded = function (traitOrClass) {
  1957. traitOrClass._enterOrganization();
  1958. };
  1959. emit.behavioralRemoved = function (traitOrClass) {
  1960. traitOrClass._leaveOrganization();
  1961. };
  1962. }
  1963. this.installStHooks = installStHooks;
  1964. emit.classCreated = initClassAndMetaclass;
  1965. emit.slotsChanged = initClassSlots;
  1966. function initClass (klass) {
  1967. wireKlass(klass);
  1968. initClassMethods(klass);
  1969. initClassSlots(klass);
  1970. }
  1971. function initClassMethods (klass) {
  1972. if (klass.detachedRoot) {
  1973. copySuperclass(klass);
  1974. }
  1975. installMethods(klass);
  1976. }
  1977. function initClassSlots (klass) {
  1978. installIvarCompat(klass);
  1979. }
  1980. function copySuperclass (klass) {
  1981. var myproto = klass.fn.prototype,
  1982. superproto = klass.superclass.fn.prototype;
  1983. jsSelectors.forEach(function (jsSelector) {
  1984. installMethodOfJsObjectEx(myproto, jsSelector, superproto[jsSelector]);
  1985. });
  1986. }
  1987. function installMethods (klass) {
  1988. var methods = klass.methods;
  1989. Object.keys(methods).forEach(function (selector) {
  1990. installAmberMethodIntoAmberClass(methods[selector], klass);
  1991. });
  1992. }
  1993. // TODO remove, ["@foo"] backward compatibility
  1994. function installIvarCompat (klass) {
  1995. var ivars = klass.slots;
  1996. ivars.forEach(function (ivar) {
  1997. Object.defineProperty(klass.fn.prototype, "@" + ivar, {
  1998. get: function () {
  1999. return this[ivar];
  2000. },
  2001. set: function (value) {
  2002. return this[ivar] = value;
  2003. },
  2004. enumerable: false,
  2005. configurable: true
  2006. });
  2007. });
  2008. }
  2009. /* Create an alias for an existing class */
  2010. st.alias = function (traitOrClass, alias) {
  2011. globals[alias] = traitOrClass;
  2012. };
  2013. /* Manually set the constructor of an existing Smalltalk klass, making it a detached root class. */
  2014. st.setClassConstructor = this.setClassConstructor = function (klass, constructor) {
  2015. klass.fn = constructor;
  2016. detachClass(klass);
  2017. var prototype = constructor.prototype;
  2018. klass.subclasses.forEach(function (subclass) {
  2019. Object.setPrototypeOf(subclass.fn.prototype, prototype);
  2020. });
  2021. };
  2022. }
  2023. FrameBindingBrik.deps = ["runtimeClasses"];
  2024. function FrameBindingBrik (brikz, st) {
  2025. var setClassConstructor = brikz.runtimeClasses.setClassConstructor;
  2026. setClassConstructor(globals.Number, Number);
  2027. setClassConstructor(globals.BlockClosure, Function);
  2028. setClassConstructor(globals.Boolean, Boolean);
  2029. setClassConstructor(globals.Date, Date);
  2030. setClassConstructor(globals.String, String);
  2031. setClassConstructor(globals.Array, Array);
  2032. setClassConstructor(globals.RegularExpression, RegExp);
  2033. setClassConstructor(globals.Error, Error);
  2034. setClassConstructor(globals.Promise, Promise);
  2035. this.__init__ = function () {
  2036. st.alias(globals.Array, "OrderedCollection");
  2037. st.alias(globals.Date, "Time");
  2038. }
  2039. }
  2040. RuntimeMethodsBrik.deps = ["selectorConversion"];
  2041. function RuntimeMethodsBrik (brikz, st) {
  2042. var st2js = brikz.selectorConversion.st2js;
  2043. function installAmberMethodIntoAmberClass (method, klass) {
  2044. if (method.fn == null) {
  2045. if (method.instantiateFn) {
  2046. method.fn = method.instantiateFn(method.methodClass);
  2047. }
  2048. }
  2049. var jsSelector = method.jsSelector;
  2050. if (!jsSelector) {
  2051. jsSelector = method.jsSelector = st2js(method.selector);
  2052. }
  2053. return installMethodOfJsObjectEx(klass.fn.prototype, jsSelector, method.fn);
  2054. }
  2055. this.installAmberMethodIntoAmberClass = installAmberMethodIntoAmberClass;
  2056. emit.behaviorMethodAdded = function (method, klass) {
  2057. installAmberMethodIntoAmberClass(method, klass);
  2058. propagateMethodChange(klass, method, klass);
  2059. };
  2060. emit.behaviorMethodRemoved = function (method, klass) {
  2061. cleanMethodOfJsObjectEx(klass.fn.prototype, method.jsSelector);
  2062. delete klass.fn.prototype[method.jsSelector];
  2063. propagateMethodChange(klass, method, null);
  2064. };
  2065. function installStHooks () {
  2066. emit.methodReplaced = function (newMethod, oldMethod, traitOrBehavior) {
  2067. traitOrBehavior._methodOrganizationEnter_andLeave_(newMethod, oldMethod);
  2068. };
  2069. }
  2070. this.installStHooks = installStHooks;
  2071. function propagateMethodChange (klass, method, exclude) {
  2072. var selector = method.selector;
  2073. var jsSelector = method.jsSelector;
  2074. st.traverseClassTree(klass, function (subclass, sentinel) {
  2075. if (subclass === exclude) return;
  2076. if (hop.call(subclass.methods, selector)) return sentinel;
  2077. if (subclass.detachedRoot) {
  2078. installMethodOfJsObjectEx(subclass.fn.prototype, jsSelector, subclass.superclass.fn.prototype[jsSelector]);
  2079. }
  2080. });
  2081. }
  2082. }
  2083. function PrimitivesBrik (brikz, st) {
  2084. /* Converts a JavaScript object to valid Smalltalk Object */
  2085. st.readJSObject = function (js) {
  2086. if (js == null) return null;
  2087. else if (Array.isArray(js)) return js.map(st.readJSObject);
  2088. else if (js.constructor !== Object) return js;
  2089. var pairs = [];
  2090. for (var i in js) {
  2091. pairs.push(i, st.readJSObject(js[i]));
  2092. }
  2093. return globals.Dictionary._newFromPairs_(pairs);
  2094. };
  2095. /* Boolean assertion */
  2096. st.assert = function (shouldBeBoolean) {
  2097. if (typeof shouldBeBoolean === "boolean") return shouldBeBoolean;
  2098. else if (shouldBeBoolean != null && typeof shouldBeBoolean === "object") {
  2099. shouldBeBoolean = shouldBeBoolean.valueOf();
  2100. if (typeof shouldBeBoolean === "boolean") return shouldBeBoolean;
  2101. }
  2102. globals.NonBooleanReceiver._signalOn_(shouldBeBoolean);
  2103. };
  2104. }
  2105. RuntimeBrik.deps = ["selectorConversion", "runtimeClasses"];
  2106. function RuntimeBrik (brikz, st) {
  2107. var setClassConstructor = brikz.runtimeClasses.setClassConstructor;
  2108. function SmalltalkMethodContext (home, setup) {
  2109. // TODO lazy fill of .sendIdx
  2110. this.sendIdx = {};
  2111. // TODO very likely .senderContext, not .homeContext here
  2112. this.homeContext = home;
  2113. this.setup = setup;
  2114. }
  2115. // Fallbacks
  2116. SmalltalkMethodContext.prototype.supercall = false;
  2117. SmalltalkMethodContext.prototype.locals = Object.freeze({});
  2118. SmalltalkMethodContext.prototype.receiver = null;
  2119. SmalltalkMethodContext.prototype.selector = null;
  2120. SmalltalkMethodContext.prototype.outerContext = null;
  2121. SmalltalkMethodContext.prototype.index = 0;
  2122. declareJsMethod(SmalltalkMethodContext.prototype, "fill");
  2123. declareJsMethod(SmalltalkMethodContext.prototype, "fillBlock");
  2124. SmalltalkMethodContext.prototype.fill = function (receiver, selector, locals) {
  2125. this.receiver = receiver;
  2126. this.selector = selector;
  2127. if (locals != null) this.locals = locals;
  2128. if (this.homeContext) {
  2129. this.homeContext.evaluatedSelector = selector;
  2130. }
  2131. };
  2132. SmalltalkMethodContext.prototype.fillBlock = function (locals, ctx, index) {
  2133. if (locals != null) this.locals = locals;
  2134. this.outerContext = ctx;
  2135. if (index) this.index = index;
  2136. };
  2137. setClassConstructor(globals.MethodContext, SmalltalkMethodContext);
  2138. /* This is the current call context object.
  2139. In Smalltalk code, it is accessible just by using 'thisContext' variable.
  2140. In JS code, use api.getThisContext() (see below).
  2141. */
  2142. var thisContext = null;
  2143. function resultWithNoErrorHandling (worker) {
  2144. try {
  2145. return worker(thisContext);
  2146. } finally {
  2147. thisContext = null;
  2148. }
  2149. }
  2150. // TODO deprecated, remove
  2151. st.seamless = function (worker) {
  2152. return worker();
  2153. // return st.withContext(worker, new SmalltalkMethodContext(thisContext, function (ctx) {
  2154. // ctx.fill(null, "seamlessDoIt", {}, globals.UndefinedObject);
  2155. // }));
  2156. };
  2157. /*
  2158. Standard way to run within context.
  2159. Sets up error handler if entering first ST context in a stack.
  2160. */
  2161. st.withContext = function (worker, setup) {
  2162. var oldContext = thisContext;
  2163. thisContext = new SmalltalkMethodContext(thisContext, setup);
  2164. var result = oldContext == null ? resultWithNoErrorHandling(worker) : worker(thisContext);
  2165. thisContext = oldContext;
  2166. return result;
  2167. };
  2168. /* Handle thisContext pseudo variable */
  2169. st.getThisContext = function () {
  2170. if (!thisContext) return null;
  2171. thisContext.setup(thisContext);
  2172. return thisContext;
  2173. };
  2174. }
  2175. MessageSendBrik.deps = ["selectorConversion"];
  2176. function MessageSendBrik (brikz, st) {
  2177. /* Send message programmatically. Used to implement #perform: & Co. */
  2178. st.send2 = function (self, selector, args, klass) {
  2179. var method = klass ? klass.fn.prototype[st.st2js(selector)] : self.a$cls && self[st.st2js(selector)];
  2180. return method != null ?
  2181. method.apply(self, args || []) :
  2182. globals.Message._selector_arguments_notUnderstoodBy_(
  2183. selector, [].slice.call(args), self.a$cls ? self : wrapJavaScript(self)
  2184. );
  2185. };
  2186. function wrapJavaScript (o) {
  2187. return globals.JSObjectProxy._on_(o);
  2188. }
  2189. st.wrapJavaScript = wrapJavaScript;
  2190. /* If the object property is a function, then call it, except if it starts with
  2191. an uppercase character (we probably want to answer the function itself in this
  2192. case and send it #new from Amber).
  2193. */
  2194. st.accessJavaScript = function (self, propertyName, args) {
  2195. var propertyValue = self[propertyName];
  2196. if (typeof propertyValue === "function" && !(args.length === 0 && /^[A-Z]/.test(propertyName)))
  2197. return propertyValue.apply(self, args);
  2198. switch (args.length) {
  2199. case 0:
  2200. return propertyValue;
  2201. case 1:
  2202. self[propertyName] = args[0];
  2203. return self;
  2204. default:
  2205. throw new Error("Cannot interpret " + propertyName + " with " + args.length + " arguments; field is a " + typeof propertyValue + ", not a function")
  2206. }
  2207. };
  2208. }
  2209. StartImageBrik.deps = ["runtimeClasses", "runtimeMethods"];
  2210. function StartImageBrik (brikz, st) {
  2211. this.run = function () {
  2212. brikz.runtimeClasses.installStHooks();
  2213. brikz.runtimeMethods.installStHooks();
  2214. return globals.AmberBootstrapInitialization._run();
  2215. };
  2216. }
  2217. /* Making smalltalk that can run */
  2218. function configure (brikz) {
  2219. brikz.runtimeSelectors = RuntimeSelectorsBrik;
  2220. brikz.runtimeClasses = RuntimeClassesBrik;
  2221. brikz.frameBinding = FrameBindingBrik;
  2222. brikz.runtimeMethods = RuntimeMethodsBrik;
  2223. brikz.messageSend = MessageSendBrik;
  2224. brikz.runtime = RuntimeBrik;
  2225. brikz.primitives = PrimitivesBrik;
  2226. brikz.selectorConversion = SelectorConversionBrik;
  2227. brikz.startImage = StartImageBrik;
  2228. brikz();
  2229. }
  2230. return {configure: configure};
  2231. }
  2232. return RuntimeFactory;
  2233. });
  2234. /* ====================================================================
  2235. |
  2236. | Amber Smalltalk
  2237. | http://amber-lang.net
  2238. |
  2239. ======================================================================
  2240. ======================================================================
  2241. |
  2242. | Copyright (c) 2010-2014
  2243. | Nicolas Petton <petton.nicolas@gmail.com>
  2244. |
  2245. | Copyright (c) 2012-2019
  2246. | The Amber team https://lolg.it/org/amber/members
  2247. | Amber contributors (see /CONTRIBUTORS)
  2248. |
  2249. | Amber is released under the MIT license
  2250. |
  2251. | Permission is hereby granted, free of charge, to any person obtaining
  2252. | a copy of this software and associated documentation files (the
  2253. | 'Software'), to deal in the Software without restriction, including
  2254. | without limitation the rights to use, copy, modify, merge, publish,
  2255. | distribute, sublicense, and/or sell copies of the Software, and to
  2256. | permit persons to whom the Software is furnished to do so, subject to
  2257. | the following conditions:
  2258. |
  2259. | The above copyright notice and this permission notice shall be
  2260. | included in all copies or substantial portions of the Software.
  2261. |
  2262. | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
  2263. | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  2264. | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  2265. | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  2266. | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  2267. | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  2268. | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  2269. |
  2270. ==================================================================== */
  2271. //jshint eqnull:true
  2272. define('amber/boot',[
  2273. 'require', './kernel-checks', './brikz', './kernel-fundamentals', './kernel-language'
  2274. ], function (require, _, Brikz, FundamentalsFactory, LanguageFactory) {
  2275. "use strict";
  2276. var globals = Object.create(global);
  2277. var emit = Object.create(null);
  2278. var runtimeLoadedPromise = new Promise(function (resolve, reject) {
  2279. require(['./kernel-runtime'], resolve, reject);
  2280. });
  2281. function SmalltalkInitBrik (brikz, st) {
  2282. var initialized = false;
  2283. globals.SmalltalkSettings = {};
  2284. /* Smalltalk initialization. Called on page load */
  2285. st.initialize = function () {
  2286. return runtimeLoadedPromise.then(function (RuntimeFactory) {
  2287. if (initialized) return;
  2288. brikz.classModel.bootstrapHierarchy(globals.Class);
  2289. RuntimeFactory(globals, emit).configure(brikz);
  2290. return Promise.resolve(brikz.startImage.run())
  2291. .then(function () {
  2292. initialized = true;
  2293. });
  2294. });
  2295. };
  2296. }
  2297. var api = {};
  2298. var brikz = Brikz(api);
  2299. var fundamentals = FundamentalsFactory(globals, emit);
  2300. fundamentals.configure(brikz);
  2301. LanguageFactory(fundamentals.specialConstructors, emit).configure(brikz);
  2302. brikz.stInit = SmalltalkInitBrik;
  2303. brikz();
  2304. // TODO deprecated, remove
  2305. Object.defineProperty(globals, "CharacterArray", {
  2306. enumerable: true,
  2307. configurable: true,
  2308. get: function () {
  2309. return this.String;
  2310. }
  2311. });
  2312. return {
  2313. api: api,
  2314. nilAsReceiver: brikz.nil.nilAsReceiver,
  2315. nilAsValue: brikz.nil.nilAsValue,
  2316. nilAsClass: brikz.classModel.nilAsClass,
  2317. globals: globals,
  2318. asReceiver: brikz.classModel.asReceiver
  2319. };
  2320. });
  2321. define('amber/helpers',["./boot", "./junk-drawer", "require"], function (boot, $goodies, require) {
  2322. var globals = boot.globals,
  2323. exports = {},
  2324. extend = $goodies.extend,
  2325. api = boot.api;
  2326. // API
  2327. exports.popupHelios = function () {
  2328. require(['helios/index'], function (helios) {
  2329. helios.popup();
  2330. }, function (err) {
  2331. window.alert("Error loading helios.\nIf not present, you can install it with 'npm install @ambers/helios --save-dev'.\nThe error follows:\n" + err);
  2332. });
  2333. };
  2334. Object.defineProperty(exports, "api", {
  2335. value: api,
  2336. enumerable: true, configurable: true, writable: false
  2337. });
  2338. Object.defineProperty(exports, "globals", {
  2339. value: globals,
  2340. enumerable: true, configurable: true, writable: false
  2341. });
  2342. Object.defineProperty(exports, "$nil", {
  2343. value: boot.nilAsReceiver,
  2344. enumerable: true, configurable: true, writable: false
  2345. });
  2346. Object.defineProperty(exports, "nil", {
  2347. value: boot.nilAsValue,
  2348. enumerable: true, configurable: true, writable: false
  2349. });
  2350. function settingsInLocalStorage () {
  2351. var storage;
  2352. try {
  2353. storage = 'localStorage' in global && global.localStorage;
  2354. } catch (ex) {
  2355. console.warn("Access denied to localStorage, " +
  2356. "settings not loaded nor, subsequently, saved.");
  2357. return;
  2358. }
  2359. if (storage) {
  2360. var fromStorage;
  2361. try {
  2362. fromStorage = JSON.parse(storage.getItem('amber.SmalltalkSettings'));
  2363. } catch (ex) {
  2364. // pass
  2365. }
  2366. extend(globals.SmalltalkSettings, fromStorage || {});
  2367. if (typeof window !== "undefined") {
  2368. window.addEventListener('beforeunload', function () {
  2369. storage.setItem('amber.SmalltalkSettings', JSON.stringify(globals.SmalltalkSettings));
  2370. });
  2371. }
  2372. }
  2373. }
  2374. exports.initialize = function (options) {
  2375. return new Promise(function (resolve) {
  2376. globals.SmalltalkSettings['transport.defaultAmdNamespace'] = "amber/core";
  2377. api.amdRequire = require; // TODO better
  2378. settingsInLocalStorage();
  2379. extend(globals.SmalltalkSettings, options || {});
  2380. resolve(api.initialize());
  2381. });
  2382. };
  2383. exports.loadPackages = function (modules) {
  2384. return new Promise(function (resolve, reject) {
  2385. require(modules, resolve, reject);
  2386. }).then(function () {
  2387. return globals.Smalltalk._postLoad();
  2388. });
  2389. };
  2390. exports.beClean = function () {
  2391. return globals.Smalltalk._beClean();
  2392. };
  2393. // Exports
  2394. return exports;
  2395. });
  2396. define('amber/core/Kernel-Helpers',["amber/boot", "require"], function($boot,requirejs){"use strict";
  2397. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  2398. var $pkg = $core.addPackage("Kernel-Helpers");
  2399. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  2400. $core.addTrait("TIsInGroup", "Kernel-Helpers");
  2401. //>>excludeStart("ide", pragmas.excludeIdeData);
  2402. $globals.TIsInGroup.comment="I contain all `isXxx` checking methods that check\x0aif receiver is part of some group of objects (`isBehavior` etc.)\x0a\x0aI should NOT contain tests for\x0ahaving a certain property (`isImmutable` etc.).";
  2403. //>>excludeEnd("ide");
  2404. $core.addMethod(
  2405. $core.method({
  2406. selector: "isBehavior",
  2407. protocol: "testing",
  2408. //>>excludeStart("ide", pragmas.excludeIdeData);
  2409. args: [],
  2410. source: "isBehavior\x0a\x09^ false",
  2411. referencedClasses: [],
  2412. //>>excludeEnd("ide");
  2413. pragmas: [],
  2414. messageSends: []
  2415. }, function ($methodClass){ return function (){
  2416. var self=this,$self=this;
  2417. return false;
  2418. }; }),
  2419. $globals.TIsInGroup);
  2420. $core.addMethod(
  2421. $core.method({
  2422. selector: "isBoolean",
  2423. protocol: "testing",
  2424. //>>excludeStart("ide", pragmas.excludeIdeData);
  2425. args: [],
  2426. source: "isBoolean\x0a\x09^ false",
  2427. referencedClasses: [],
  2428. //>>excludeEnd("ide");
  2429. pragmas: [],
  2430. messageSends: []
  2431. }, function ($methodClass){ return function (){
  2432. var self=this,$self=this;
  2433. return false;
  2434. }; }),
  2435. $globals.TIsInGroup);
  2436. $core.addMethod(
  2437. $core.method({
  2438. selector: "isClass",
  2439. protocol: "testing",
  2440. //>>excludeStart("ide", pragmas.excludeIdeData);
  2441. args: [],
  2442. source: "isClass\x0a\x09^ false",
  2443. referencedClasses: [],
  2444. //>>excludeEnd("ide");
  2445. pragmas: [],
  2446. messageSends: []
  2447. }, function ($methodClass){ return function (){
  2448. var self=this,$self=this;
  2449. return false;
  2450. }; }),
  2451. $globals.TIsInGroup);
  2452. $core.addMethod(
  2453. $core.method({
  2454. selector: "isCompiledMethod",
  2455. protocol: "testing",
  2456. //>>excludeStart("ide", pragmas.excludeIdeData);
  2457. args: [],
  2458. source: "isCompiledMethod\x0a\x09^ false",
  2459. referencedClasses: [],
  2460. //>>excludeEnd("ide");
  2461. pragmas: [],
  2462. messageSends: []
  2463. }, function ($methodClass){ return function (){
  2464. var self=this,$self=this;
  2465. return false;
  2466. }; }),
  2467. $globals.TIsInGroup);
  2468. $core.addMethod(
  2469. $core.method({
  2470. selector: "isError",
  2471. protocol: "testing",
  2472. //>>excludeStart("ide", pragmas.excludeIdeData);
  2473. args: [],
  2474. source: "isError\x0a\x09^ false",
  2475. referencedClasses: [],
  2476. //>>excludeEnd("ide");
  2477. pragmas: [],
  2478. messageSends: []
  2479. }, function ($methodClass){ return function (){
  2480. var self=this,$self=this;
  2481. return false;
  2482. }; }),
  2483. $globals.TIsInGroup);
  2484. $core.addMethod(
  2485. $core.method({
  2486. selector: "isMetaclass",
  2487. protocol: "testing",
  2488. //>>excludeStart("ide", pragmas.excludeIdeData);
  2489. args: [],
  2490. source: "isMetaclass\x0a\x09^ false",
  2491. referencedClasses: [],
  2492. //>>excludeEnd("ide");
  2493. pragmas: [],
  2494. messageSends: []
  2495. }, function ($methodClass){ return function (){
  2496. var self=this,$self=this;
  2497. return false;
  2498. }; }),
  2499. $globals.TIsInGroup);
  2500. $core.addMethod(
  2501. $core.method({
  2502. selector: "isNumber",
  2503. protocol: "testing",
  2504. //>>excludeStart("ide", pragmas.excludeIdeData);
  2505. args: [],
  2506. source: "isNumber\x0a\x09^ false",
  2507. referencedClasses: [],
  2508. //>>excludeEnd("ide");
  2509. pragmas: [],
  2510. messageSends: []
  2511. }, function ($methodClass){ return function (){
  2512. var self=this,$self=this;
  2513. return false;
  2514. }; }),
  2515. $globals.TIsInGroup);
  2516. $core.addMethod(
  2517. $core.method({
  2518. selector: "isPackage",
  2519. protocol: "testing",
  2520. //>>excludeStart("ide", pragmas.excludeIdeData);
  2521. args: [],
  2522. source: "isPackage\x0a\x09^ false",
  2523. referencedClasses: [],
  2524. //>>excludeEnd("ide");
  2525. pragmas: [],
  2526. messageSends: []
  2527. }, function ($methodClass){ return function (){
  2528. var self=this,$self=this;
  2529. return false;
  2530. }; }),
  2531. $globals.TIsInGroup);
  2532. $core.addMethod(
  2533. $core.method({
  2534. selector: "isString",
  2535. protocol: "testing",
  2536. //>>excludeStart("ide", pragmas.excludeIdeData);
  2537. args: [],
  2538. source: "isString\x0a\x09^ false",
  2539. referencedClasses: [],
  2540. //>>excludeEnd("ide");
  2541. pragmas: [],
  2542. messageSends: []
  2543. }, function ($methodClass){ return function (){
  2544. var self=this,$self=this;
  2545. return false;
  2546. }; }),
  2547. $globals.TIsInGroup);
  2548. $core.addMethod(
  2549. $core.method({
  2550. selector: "isSymbol",
  2551. protocol: "testing",
  2552. //>>excludeStart("ide", pragmas.excludeIdeData);
  2553. args: [],
  2554. source: "isSymbol\x0a\x09^ false",
  2555. referencedClasses: [],
  2556. //>>excludeEnd("ide");
  2557. pragmas: [],
  2558. messageSends: []
  2559. }, function ($methodClass){ return function (){
  2560. var self=this,$self=this;
  2561. return false;
  2562. }; }),
  2563. $globals.TIsInGroup);
  2564. $core.addMethod(
  2565. $core.method({
  2566. selector: "isThenable",
  2567. protocol: "testing",
  2568. //>>excludeStart("ide", pragmas.excludeIdeData);
  2569. args: [],
  2570. source: "isThenable\x0a\x09^ false",
  2571. referencedClasses: [],
  2572. //>>excludeEnd("ide");
  2573. pragmas: [],
  2574. messageSends: []
  2575. }, function ($methodClass){ return function (){
  2576. var self=this,$self=this;
  2577. return false;
  2578. }; }),
  2579. $globals.TIsInGroup);
  2580. $core.addTrait("TSubclassable", "Kernel-Helpers");
  2581. $core.addMethod(
  2582. $core.method({
  2583. selector: "subclass:",
  2584. protocol: "class creation",
  2585. //>>excludeStart("ide", pragmas.excludeIdeData);
  2586. args: ["aString"],
  2587. source: "subclass: aString \x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: #() package: nil",
  2588. referencedClasses: [],
  2589. //>>excludeEnd("ide");
  2590. pragmas: [],
  2591. messageSends: ["subclass:slots:package:"]
  2592. }, function ($methodClass){ return function (aString){
  2593. var self=this,$self=this;
  2594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2595. return $core.withContext(function($ctx1) {
  2596. //>>excludeEnd("ctx");
  2597. return $self._subclass_slots_package_(aString,[],nil);
  2598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2599. }, function($ctx1) {$ctx1.fill(self,"subclass:",{aString:aString})});
  2600. //>>excludeEnd("ctx");
  2601. }; }),
  2602. $globals.TSubclassable);
  2603. $core.addMethod(
  2604. $core.method({
  2605. selector: "subclass:instanceVariableNames:",
  2606. protocol: "class creation",
  2607. //>>excludeStart("ide", pragmas.excludeIdeData);
  2608. args: ["aString", "anotherString"],
  2609. source: "subclass: aString instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: anotherString package: nil",
  2610. referencedClasses: [],
  2611. //>>excludeEnd("ide");
  2612. pragmas: [],
  2613. messageSends: ["subclass:instanceVariableNames:package:"]
  2614. }, function ($methodClass){ return function (aString,anotherString){
  2615. var self=this,$self=this;
  2616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2617. return $core.withContext(function($ctx1) {
  2618. //>>excludeEnd("ctx");
  2619. return $self._subclass_instanceVariableNames_package_(aString,anotherString,nil);
  2620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2621. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:",{aString:aString,anotherString:anotherString})});
  2622. //>>excludeEnd("ctx");
  2623. }; }),
  2624. $globals.TSubclassable);
  2625. $core.addMethod(
  2626. $core.method({
  2627. selector: "subclass:instanceVariableNames:category:",
  2628. protocol: "class creation",
  2629. //>>excludeStart("ide", pragmas.excludeIdeData);
  2630. args: ["aString", "aString2", "aString3"],
  2631. source: "subclass: aString instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
  2632. referencedClasses: [],
  2633. //>>excludeEnd("ide");
  2634. pragmas: [],
  2635. messageSends: ["subclass:instanceVariableNames:package:"]
  2636. }, function ($methodClass){ return function (aString,aString2,aString3){
  2637. var self=this,$self=this;
  2638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2639. return $core.withContext(function($ctx1) {
  2640. //>>excludeEnd("ctx");
  2641. return $self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
  2642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2643. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:category:",{aString:aString,aString2:aString2,aString3:aString3})});
  2644. //>>excludeEnd("ctx");
  2645. }; }),
  2646. $globals.TSubclassable);
  2647. $core.addMethod(
  2648. $core.method({
  2649. selector: "subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",
  2650. protocol: "class creation",
  2651. //>>excludeStart("ide", pragmas.excludeIdeData);
  2652. args: ["aString", "aString2", "classVars", "pools", "aString3"],
  2653. source: "subclass: aString instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
  2654. referencedClasses: [],
  2655. //>>excludeEnd("ide");
  2656. pragmas: [],
  2657. messageSends: ["subclass:instanceVariableNames:package:"]
  2658. }, function ($methodClass){ return function (aString,aString2,classVars,pools,aString3){
  2659. var self=this,$self=this;
  2660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2661. return $core.withContext(function($ctx1) {
  2662. //>>excludeEnd("ctx");
  2663. return $self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
  2664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2665. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3})});
  2666. //>>excludeEnd("ctx");
  2667. }; }),
  2668. $globals.TSubclassable);
  2669. $core.addMethod(
  2670. $core.method({
  2671. selector: "subclass:instanceVariableNames:package:",
  2672. protocol: "class creation",
  2673. //>>excludeStart("ide", pragmas.excludeIdeData);
  2674. args: ["aString", "aString2", "aString3"],
  2675. source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: aString2 instanceVariablesStringAsSlotList package: aString3",
  2676. referencedClasses: [],
  2677. //>>excludeEnd("ide");
  2678. pragmas: [],
  2679. messageSends: ["subclass:slots:package:", "instanceVariablesStringAsSlotList"]
  2680. }, function ($methodClass){ return function (aString,aString2,aString3){
  2681. var self=this,$self=this;
  2682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2683. return $core.withContext(function($ctx1) {
  2684. //>>excludeEnd("ctx");
  2685. return $self._subclass_slots_package_(aString,$recv(aString2)._instanceVariablesStringAsSlotList(),aString3);
  2686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2687. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3})});
  2688. //>>excludeEnd("ctx");
  2689. }; }),
  2690. $globals.TSubclassable);
  2691. $core.addMethod(
  2692. $core.method({
  2693. selector: "subclass:slots:",
  2694. protocol: "class creation",
  2695. //>>excludeStart("ide", pragmas.excludeIdeData);
  2696. args: ["aString", "aCollection"],
  2697. source: "subclass: aString slots: aCollection\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: aCollection package: nil",
  2698. referencedClasses: [],
  2699. //>>excludeEnd("ide");
  2700. pragmas: [],
  2701. messageSends: ["subclass:slots:package:"]
  2702. }, function ($methodClass){ return function (aString,aCollection){
  2703. var self=this,$self=this;
  2704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2705. return $core.withContext(function($ctx1) {
  2706. //>>excludeEnd("ctx");
  2707. return $self._subclass_slots_package_(aString,aCollection,nil);
  2708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2709. }, function($ctx1) {$ctx1.fill(self,"subclass:slots:",{aString:aString,aCollection:aCollection})});
  2710. //>>excludeEnd("ctx");
  2711. }; }),
  2712. $globals.TSubclassable);
  2713. $core.addMethod(
  2714. $core.method({
  2715. selector: "subclass:slots:classVariables:package:",
  2716. protocol: "class creation",
  2717. //>>excludeStart("ide", pragmas.excludeIdeData);
  2718. args: ["aString", "aCollection", "anObject", "anotherString"],
  2719. source: "subclass: aString slots: aCollection classVariables: anObject package: anotherString\x0a\x09\x22Kept for file-in compatibility. ignores class variables.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
  2720. referencedClasses: ["ClassBuilder"],
  2721. //>>excludeEnd("ide");
  2722. pragmas: [],
  2723. messageSends: ["superclass:subclass:slots:package:", "new"]
  2724. }, function ($methodClass){ return function (aString,aCollection,anObject,anotherString){
  2725. var self=this,$self=this;
  2726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2727. return $core.withContext(function($ctx1) {
  2728. //>>excludeEnd("ctx");
  2729. return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
  2730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2731. }, function($ctx1) {$ctx1.fill(self,"subclass:slots:classVariables:package:",{aString:aString,aCollection:aCollection,anObject:anObject,anotherString:anotherString})});
  2732. //>>excludeEnd("ctx");
  2733. }; }),
  2734. $globals.TSubclassable);
  2735. $core.addMethod(
  2736. $core.method({
  2737. selector: "subclass:slots:classVariables:poolDictionaries:package:",
  2738. protocol: "class creation",
  2739. //>>excludeStart("ide", pragmas.excludeIdeData);
  2740. args: ["aString", "aCollection", "anObject", "anotherObject", "anotherString"],
  2741. source: "subclass: aString slots: aCollection classVariables: anObject poolDictionaries: anotherObject package: anotherString\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
  2742. referencedClasses: ["ClassBuilder"],
  2743. //>>excludeEnd("ide");
  2744. pragmas: [],
  2745. messageSends: ["superclass:subclass:slots:package:", "new"]
  2746. }, function ($methodClass){ return function (aString,aCollection,anObject,anotherObject,anotherString){
  2747. var self=this,$self=this;
  2748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2749. return $core.withContext(function($ctx1) {
  2750. //>>excludeEnd("ctx");
  2751. return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
  2752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2753. }, function($ctx1) {$ctx1.fill(self,"subclass:slots:classVariables:poolDictionaries:package:",{aString:aString,aCollection:aCollection,anObject:anObject,anotherObject:anotherObject,anotherString:anotherString})});
  2754. //>>excludeEnd("ctx");
  2755. }; }),
  2756. $globals.TSubclassable);
  2757. $core.addMethod(
  2758. $core.method({
  2759. selector: "subclass:slots:package:",
  2760. protocol: "class creation",
  2761. //>>excludeStart("ide", pragmas.excludeIdeData);
  2762. args: ["aString", "aCollection", "anotherString"],
  2763. source: "subclass: aString slots: aCollection package: anotherString\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
  2764. referencedClasses: ["ClassBuilder"],
  2765. //>>excludeEnd("ide");
  2766. pragmas: [],
  2767. messageSends: ["superclass:subclass:slots:package:", "new"]
  2768. }, function ($methodClass){ return function (aString,aCollection,anotherString){
  2769. var self=this,$self=this;
  2770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2771. return $core.withContext(function($ctx1) {
  2772. //>>excludeEnd("ctx");
  2773. return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
  2774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2775. }, function($ctx1) {$ctx1.fill(self,"subclass:slots:package:",{aString:aString,aCollection:aCollection,anotherString:anotherString})});
  2776. //>>excludeEnd("ctx");
  2777. }; }),
  2778. $globals.TSubclassable);
  2779. $core.addMethod(
  2780. $core.method({
  2781. selector: "subclass:uses:",
  2782. protocol: "class creation",
  2783. //>>excludeStart("ide", pragmas.excludeIdeData);
  2784. args: ["aString", "aTraitCompositionDescription"],
  2785. source: "subclass: aString uses: aTraitCompositionDescription \x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: #() package: nil",
  2786. referencedClasses: [],
  2787. //>>excludeEnd("ide");
  2788. pragmas: [],
  2789. messageSends: ["subclass:uses:slots:package:"]
  2790. }, function ($methodClass){ return function (aString,aTraitCompositionDescription){
  2791. var self=this,$self=this;
  2792. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2793. return $core.withContext(function($ctx1) {
  2794. //>>excludeEnd("ctx");
  2795. return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,[],nil);
  2796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2797. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription})});
  2798. //>>excludeEnd("ctx");
  2799. }; }),
  2800. $globals.TSubclassable);
  2801. $core.addMethod(
  2802. $core.method({
  2803. selector: "subclass:uses:instanceVariableNames:",
  2804. protocol: "class creation",
  2805. //>>excludeStart("ide", pragmas.excludeIdeData);
  2806. args: ["aString", "aTraitCompositionDescription", "anotherString"],
  2807. source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: anotherString package: nil",
  2808. referencedClasses: [],
  2809. //>>excludeEnd("ide");
  2810. pragmas: [],
  2811. messageSends: ["subclass:uses:instanceVariableNames:package:"]
  2812. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,anotherString){
  2813. var self=this,$self=this;
  2814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2815. return $core.withContext(function($ctx1) {
  2816. //>>excludeEnd("ctx");
  2817. return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,anotherString,nil);
  2818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2819. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,anotherString:anotherString})});
  2820. //>>excludeEnd("ctx");
  2821. }; }),
  2822. $globals.TSubclassable);
  2823. $core.addMethod(
  2824. $core.method({
  2825. selector: "subclass:uses:instanceVariableNames:category:",
  2826. protocol: "class creation",
  2827. //>>excludeStart("ide", pragmas.excludeIdeData);
  2828. args: ["aString", "aTraitCompositionDescription", "aString2", "aString3"],
  2829. source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3",
  2830. referencedClasses: [],
  2831. //>>excludeEnd("ide");
  2832. pragmas: [],
  2833. messageSends: ["subclass:uses:instanceVariableNames:package:"]
  2834. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,aString3){
  2835. var self=this,$self=this;
  2836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2837. return $core.withContext(function($ctx1) {
  2838. //>>excludeEnd("ctx");
  2839. return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,aString2,aString3);
  2840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2841. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:category:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,aString3:aString3})});
  2842. //>>excludeEnd("ctx");
  2843. }; }),
  2844. $globals.TSubclassable);
  2845. $core.addMethod(
  2846. $core.method({
  2847. selector: "subclass:uses:instanceVariableNames:classVariableNames:poolDictionaries:category:",
  2848. protocol: "class creation",
  2849. //>>excludeStart("ide", pragmas.excludeIdeData);
  2850. args: ["aString", "aTraitCompositionDescription", "aString2", "classVars", "pools", "aString3"],
  2851. source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3",
  2852. referencedClasses: [],
  2853. //>>excludeEnd("ide");
  2854. pragmas: [],
  2855. messageSends: ["subclass:uses:instanceVariableNames:package:"]
  2856. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,classVars,pools,aString3){
  2857. var self=this,$self=this;
  2858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2859. return $core.withContext(function($ctx1) {
  2860. //>>excludeEnd("ctx");
  2861. return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,aString2,aString3);
  2862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2863. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3})});
  2864. //>>excludeEnd("ctx");
  2865. }; }),
  2866. $globals.TSubclassable);
  2867. $core.addMethod(
  2868. $core.method({
  2869. selector: "subclass:uses:instanceVariableNames:package:",
  2870. protocol: "class creation",
  2871. //>>excludeStart("ide", pragmas.excludeIdeData);
  2872. args: ["aString", "aTraitCompositionDescription", "aString2", "aString3"],
  2873. source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: aString2 instanceVariablesStringAsSlotList package: aString3",
  2874. referencedClasses: [],
  2875. //>>excludeEnd("ide");
  2876. pragmas: [],
  2877. messageSends: ["subclass:uses:slots:package:", "instanceVariablesStringAsSlotList"]
  2878. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,aString3){
  2879. var self=this,$self=this;
  2880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2881. return $core.withContext(function($ctx1) {
  2882. //>>excludeEnd("ctx");
  2883. return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,$recv(aString2)._instanceVariablesStringAsSlotList(),aString3);
  2884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2885. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:package:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,aString3:aString3})});
  2886. //>>excludeEnd("ctx");
  2887. }; }),
  2888. $globals.TSubclassable);
  2889. $core.addMethod(
  2890. $core.method({
  2891. selector: "subclass:uses:slots:",
  2892. protocol: "class creation",
  2893. //>>excludeStart("ide", pragmas.excludeIdeData);
  2894. args: ["aString", "aTraitCompositionDescription", "aCollection"],
  2895. source: "subclass: aString uses: aTraitCompositionDescription slots: aCollection\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: aCollection package: nil",
  2896. referencedClasses: [],
  2897. //>>excludeEnd("ide");
  2898. pragmas: [],
  2899. messageSends: ["subclass:uses:slots:package:"]
  2900. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aCollection){
  2901. var self=this,$self=this;
  2902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2903. return $core.withContext(function($ctx1) {
  2904. //>>excludeEnd("ctx");
  2905. return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,aCollection,nil);
  2906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2907. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:slots:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aCollection:aCollection})});
  2908. //>>excludeEnd("ctx");
  2909. }; }),
  2910. $globals.TSubclassable);
  2911. $core.addMethod(
  2912. $core.method({
  2913. selector: "subclass:uses:slots:package:",
  2914. protocol: "class creation",
  2915. //>>excludeStart("ide", pragmas.excludeIdeData);
  2916. args: ["aString", "aTraitCompositionDescription", "aCollection", "aString3"],
  2917. source: "subclass: aString uses: aTraitCompositionDescription slots: aCollection package: aString3\x0a\x09| cls |\x0a\x09cls := self subclass: aString slots: aCollection package: aString3.\x0a\x09cls setTraitComposition: aTraitCompositionDescription asTraitComposition.\x0a\x09^ cls",
  2918. referencedClasses: [],
  2919. //>>excludeEnd("ide");
  2920. pragmas: [],
  2921. messageSends: ["subclass:slots:package:", "setTraitComposition:", "asTraitComposition"]
  2922. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aCollection,aString3){
  2923. var self=this,$self=this;
  2924. var cls;
  2925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2926. return $core.withContext(function($ctx1) {
  2927. //>>excludeEnd("ctx");
  2928. cls=$self._subclass_slots_package_(aString,aCollection,aString3);
  2929. $recv(cls)._setTraitComposition_($recv(aTraitCompositionDescription)._asTraitComposition());
  2930. return cls;
  2931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2932. }, function($ctx1) {$ctx1.fill(self,"subclass:uses:slots:package:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aCollection:aCollection,aString3:aString3,cls:cls})});
  2933. //>>excludeEnd("ctx");
  2934. }; }),
  2935. $globals.TSubclassable);
  2936. });
  2937. define('amber/core/Kernel-Objects',["amber/boot", "require", "amber/core/Kernel-Helpers"], function($boot,requirejs){"use strict";
  2938. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  2939. var $pkg = $core.addPackage("Kernel-Objects");
  2940. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  2941. $core.addClass("ProtoObject", null, "Kernel-Objects");
  2942. //>>excludeStart("ide", pragmas.excludeIdeData);
  2943. $globals.ProtoObject.comment="I implement the basic behavior required for any object in Amber.\x0a\x0aIn most cases, subclassing `ProtoObject` is wrong and `Object` should be used instead. However subclassing `ProtoObject` can be useful in some special cases like proxy implementations.";
  2944. //>>excludeEnd("ide");
  2945. $core.addMethod(
  2946. $core.method({
  2947. selector: "=",
  2948. protocol: "comparing",
  2949. //>>excludeStart("ide", pragmas.excludeIdeData);
  2950. args: ["anObject"],
  2951. source: "= anObject\x0a\x09^ self == anObject",
  2952. referencedClasses: [],
  2953. //>>excludeEnd("ide");
  2954. pragmas: [],
  2955. messageSends: ["=="]
  2956. }, function ($methodClass){ return function (anObject){
  2957. var self=this,$self=this;
  2958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2959. return $core.withContext(function($ctx1) {
  2960. //>>excludeEnd("ctx");
  2961. return $self.__eq_eq(anObject);
  2962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2963. }, function($ctx1) {$ctx1.fill(self,"=",{anObject:anObject})});
  2964. //>>excludeEnd("ctx");
  2965. }; }),
  2966. $globals.ProtoObject);
  2967. $core.addMethod(
  2968. $core.method({
  2969. selector: "==",
  2970. protocol: "comparing",
  2971. //>>excludeStart("ide", pragmas.excludeIdeData);
  2972. args: ["anObject"],
  2973. source: "== anObject\x0a<inlineJS: 'return self === anObject'>",
  2974. referencedClasses: [],
  2975. //>>excludeEnd("ide");
  2976. pragmas: [["inlineJS:", ["return self === anObject"]]],
  2977. messageSends: []
  2978. }, function ($methodClass){ return function (anObject){
  2979. var self=this,$self=this;
  2980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2981. return $core.withContext(function($ctx1) {
  2982. //>>excludeEnd("ctx");
  2983. return self === anObject;
  2984. return self;
  2985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2986. }, function($ctx1) {$ctx1.fill(self,"==",{anObject:anObject})});
  2987. //>>excludeEnd("ctx");
  2988. }; }),
  2989. $globals.ProtoObject);
  2990. $core.addMethod(
  2991. $core.method({
  2992. selector: "asString",
  2993. protocol: "converting",
  2994. //>>excludeStart("ide", pragmas.excludeIdeData);
  2995. args: [],
  2996. source: "asString\x0a\x09^ self printString",
  2997. referencedClasses: [],
  2998. //>>excludeEnd("ide");
  2999. pragmas: [],
  3000. messageSends: ["printString"]
  3001. }, function ($methodClass){ return function (){
  3002. var self=this,$self=this;
  3003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3004. return $core.withContext(function($ctx1) {
  3005. //>>excludeEnd("ctx");
  3006. return $self._printString();
  3007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3008. }, function($ctx1) {$ctx1.fill(self,"asString",{})});
  3009. //>>excludeEnd("ctx");
  3010. }; }),
  3011. $globals.ProtoObject);
  3012. $core.addMethod(
  3013. $core.method({
  3014. selector: "class",
  3015. protocol: "accessing",
  3016. //>>excludeStart("ide", pragmas.excludeIdeData);
  3017. args: [],
  3018. source: "class\x0a\x09<inlineJS: 'return $self.a$cls'>",
  3019. referencedClasses: [],
  3020. //>>excludeEnd("ide");
  3021. pragmas: [["inlineJS:", ["return $self.a$cls"]]],
  3022. messageSends: []
  3023. }, function ($methodClass){ return function (){
  3024. var self=this,$self=this;
  3025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3026. return $core.withContext(function($ctx1) {
  3027. //>>excludeEnd("ctx");
  3028. return $self.a$cls;
  3029. return self;
  3030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3031. }, function($ctx1) {$ctx1.fill(self,"class",{})});
  3032. //>>excludeEnd("ctx");
  3033. }; }),
  3034. $globals.ProtoObject);
  3035. $core.addMethod(
  3036. $core.method({
  3037. selector: "doesNotUnderstand:",
  3038. protocol: "error handling",
  3039. //>>excludeStart("ide", pragmas.excludeIdeData);
  3040. args: ["aMessage"],
  3041. source: "doesNotUnderstand: aMessage\x0a\x09MessageNotUnderstood new\x0a\x09\x09receiver: self;\x0a\x09\x09message: aMessage;\x0a\x09\x09signal",
  3042. referencedClasses: ["MessageNotUnderstood"],
  3043. //>>excludeEnd("ide");
  3044. pragmas: [],
  3045. messageSends: ["receiver:", "new", "message:", "signal"]
  3046. }, function ($methodClass){ return function (aMessage){
  3047. var self=this,$self=this;
  3048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3049. return $core.withContext(function($ctx1) {
  3050. //>>excludeEnd("ctx");
  3051. var $1;
  3052. $1=$recv($globals.MessageNotUnderstood)._new();
  3053. $recv($1)._receiver_(self);
  3054. $recv($1)._message_(aMessage);
  3055. $recv($1)._signal();
  3056. return self;
  3057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3058. }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage})});
  3059. //>>excludeEnd("ctx");
  3060. }; }),
  3061. $globals.ProtoObject);
  3062. $core.addMethod(
  3063. $core.method({
  3064. selector: "evaluate:on:",
  3065. protocol: "evaluating",
  3066. //>>excludeStart("ide", pragmas.excludeIdeData);
  3067. args: ["aString", "anEvaluator"],
  3068. source: "evaluate: aString on: anEvaluator\x0a\x09^ anEvaluator evaluate: aString receiver: self",
  3069. referencedClasses: [],
  3070. //>>excludeEnd("ide");
  3071. pragmas: [],
  3072. messageSends: ["evaluate:receiver:"]
  3073. }, function ($methodClass){ return function (aString,anEvaluator){
  3074. var self=this,$self=this;
  3075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3076. return $core.withContext(function($ctx1) {
  3077. //>>excludeEnd("ctx");
  3078. return $recv(anEvaluator)._evaluate_receiver_(aString,self);
  3079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3080. }, function($ctx1) {$ctx1.fill(self,"evaluate:on:",{aString:aString,anEvaluator:anEvaluator})});
  3081. //>>excludeEnd("ctx");
  3082. }; }),
  3083. $globals.ProtoObject);
  3084. $core.addMethod(
  3085. $core.method({
  3086. selector: "identityHash",
  3087. protocol: "accessing",
  3088. //>>excludeStart("ide", pragmas.excludeIdeData);
  3089. args: [],
  3090. source: "identityHash\x0a\x09<inlineJS: '\x0a\x09\x09self._deprecatedAPI();\x0a\x09\x09var hash=self.identityHash;\x0a\x09\x09if (hash) return hash;\x0a\x09\x09hash=$core.nextId();\x0a\x09\x09Object.defineProperty(self, ''identityHash'', {value:hash});\x0a\x09\x09return hash;\x0a\x09'>",
  3091. referencedClasses: [],
  3092. //>>excludeEnd("ide");
  3093. pragmas: [["inlineJS:", ["\x0a\x09\x09self._deprecatedAPI();\x0a\x09\x09var hash=self.identityHash;\x0a\x09\x09if (hash) return hash;\x0a\x09\x09hash=$core.nextId();\x0a\x09\x09Object.defineProperty(self, 'identityHash', {value:hash});\x0a\x09\x09return hash;\x0a\x09"]]],
  3094. messageSends: []
  3095. }, function ($methodClass){ return function (){
  3096. var self=this,$self=this;
  3097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3098. return $core.withContext(function($ctx1) {
  3099. //>>excludeEnd("ctx");
  3100. self._deprecatedAPI();
  3101. var hash=self.identityHash;
  3102. if (hash) return hash;
  3103. hash=$core.nextId();
  3104. Object.defineProperty(self, 'identityHash', {value:hash});
  3105. return hash;
  3106. ;
  3107. return self;
  3108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3109. }, function($ctx1) {$ctx1.fill(self,"identityHash",{})});
  3110. //>>excludeEnd("ctx");
  3111. }; }),
  3112. $globals.ProtoObject);
  3113. $core.addMethod(
  3114. $core.method({
  3115. selector: "ifNil:",
  3116. protocol: "testing",
  3117. //>>excludeStart("ide", pragmas.excludeIdeData);
  3118. args: ["aBlock"],
  3119. source: "ifNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self",
  3120. referencedClasses: [],
  3121. //>>excludeEnd("ide");
  3122. pragmas: [],
  3123. messageSends: []
  3124. }, function ($methodClass){ return function (aBlock){
  3125. var self=this,$self=this;
  3126. return self;
  3127. }; }),
  3128. $globals.ProtoObject);
  3129. $core.addMethod(
  3130. $core.method({
  3131. selector: "ifNil:ifNotNil:",
  3132. protocol: "testing",
  3133. //>>excludeStart("ide", pragmas.excludeIdeData);
  3134. args: ["aBlock", "anotherBlock"],
  3135. source: "ifNil: aBlock ifNotNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ anotherBlock value: self",
  3136. referencedClasses: [],
  3137. //>>excludeEnd("ide");
  3138. pragmas: [],
  3139. messageSends: ["value:"]
  3140. }, function ($methodClass){ return function (aBlock,anotherBlock){
  3141. var self=this,$self=this;
  3142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3143. return $core.withContext(function($ctx1) {
  3144. //>>excludeEnd("ctx");
  3145. return $recv(anotherBlock)._value_(self);
  3146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3147. }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  3148. //>>excludeEnd("ctx");
  3149. }; }),
  3150. $globals.ProtoObject);
  3151. $core.addMethod(
  3152. $core.method({
  3153. selector: "ifNotNil:",
  3154. protocol: "testing",
  3155. //>>excludeStart("ide", pragmas.excludeIdeData);
  3156. args: ["aBlock"],
  3157. source: "ifNotNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value: self",
  3158. referencedClasses: [],
  3159. //>>excludeEnd("ide");
  3160. pragmas: [],
  3161. messageSends: ["value:"]
  3162. }, function ($methodClass){ return function (aBlock){
  3163. var self=this,$self=this;
  3164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3165. return $core.withContext(function($ctx1) {
  3166. //>>excludeEnd("ctx");
  3167. return $recv(aBlock)._value_(self);
  3168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3169. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{aBlock:aBlock})});
  3170. //>>excludeEnd("ctx");
  3171. }; }),
  3172. $globals.ProtoObject);
  3173. $core.addMethod(
  3174. $core.method({
  3175. selector: "ifNotNil:ifNil:",
  3176. protocol: "testing",
  3177. //>>excludeStart("ide", pragmas.excludeIdeData);
  3178. args: ["aBlock", "anotherBlock"],
  3179. source: "ifNotNil: aBlock ifNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value: self",
  3180. referencedClasses: [],
  3181. //>>excludeEnd("ide");
  3182. pragmas: [],
  3183. messageSends: ["value:"]
  3184. }, function ($methodClass){ return function (aBlock,anotherBlock){
  3185. var self=this,$self=this;
  3186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3187. return $core.withContext(function($ctx1) {
  3188. //>>excludeEnd("ctx");
  3189. return $recv(aBlock)._value_(self);
  3190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3191. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  3192. //>>excludeEnd("ctx");
  3193. }; }),
  3194. $globals.ProtoObject);
  3195. $core.addMethod(
  3196. $core.method({
  3197. selector: "initialize",
  3198. protocol: "initialization",
  3199. //>>excludeStart("ide", pragmas.excludeIdeData);
  3200. args: [],
  3201. source: "initialize",
  3202. referencedClasses: [],
  3203. //>>excludeEnd("ide");
  3204. pragmas: [],
  3205. messageSends: []
  3206. }, function ($methodClass){ return function (){
  3207. var self=this,$self=this;
  3208. return self;
  3209. }; }),
  3210. $globals.ProtoObject);
  3211. $core.addMethod(
  3212. $core.method({
  3213. selector: "inspect",
  3214. protocol: "inspecting",
  3215. //>>excludeStart("ide", pragmas.excludeIdeData);
  3216. args: [],
  3217. source: "inspect\x0a\x09Inspector inspect: self",
  3218. referencedClasses: ["Inspector"],
  3219. //>>excludeEnd("ide");
  3220. pragmas: [],
  3221. messageSends: ["inspect:"]
  3222. }, function ($methodClass){ return function (){
  3223. var self=this,$self=this;
  3224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3225. return $core.withContext(function($ctx1) {
  3226. //>>excludeEnd("ctx");
  3227. $recv($globals.Inspector)._inspect_(self);
  3228. return self;
  3229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3230. }, function($ctx1) {$ctx1.fill(self,"inspect",{})});
  3231. //>>excludeEnd("ctx");
  3232. }; }),
  3233. $globals.ProtoObject);
  3234. $core.addMethod(
  3235. $core.method({
  3236. selector: "inspectOn:",
  3237. protocol: "inspecting",
  3238. //>>excludeStart("ide", pragmas.excludeIdeData);
  3239. args: ["anInspector"],
  3240. source: "inspectOn: anInspector",
  3241. referencedClasses: [],
  3242. //>>excludeEnd("ide");
  3243. pragmas: [],
  3244. messageSends: []
  3245. }, function ($methodClass){ return function (anInspector){
  3246. var self=this,$self=this;
  3247. return self;
  3248. }; }),
  3249. $globals.ProtoObject);
  3250. $core.addMethod(
  3251. $core.method({
  3252. selector: "instVarNamed:",
  3253. protocol: "accessing",
  3254. //>>excludeStart("ide", pragmas.excludeIdeData);
  3255. args: ["aString"],
  3256. source: "instVarNamed: aString\x0a\x09<inlineJS: 'return $self[aString]'>",
  3257. referencedClasses: [],
  3258. //>>excludeEnd("ide");
  3259. pragmas: [["inlineJS:", ["return $self[aString]"]]],
  3260. messageSends: []
  3261. }, function ($methodClass){ return function (aString){
  3262. var self=this,$self=this;
  3263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3264. return $core.withContext(function($ctx1) {
  3265. //>>excludeEnd("ctx");
  3266. return $self[aString];
  3267. return self;
  3268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3269. }, function($ctx1) {$ctx1.fill(self,"instVarNamed:",{aString:aString})});
  3270. //>>excludeEnd("ctx");
  3271. }; }),
  3272. $globals.ProtoObject);
  3273. $core.addMethod(
  3274. $core.method({
  3275. selector: "instVarNamed:put:",
  3276. protocol: "accessing",
  3277. //>>excludeStart("ide", pragmas.excludeIdeData);
  3278. args: ["aString", "anObject"],
  3279. source: "instVarNamed: aString put: anObject\x0a\x09<inlineJS: '$self[aString] = anObject'>",
  3280. referencedClasses: [],
  3281. //>>excludeEnd("ide");
  3282. pragmas: [["inlineJS:", ["$self[aString] = anObject"]]],
  3283. messageSends: []
  3284. }, function ($methodClass){ return function (aString,anObject){
  3285. var self=this,$self=this;
  3286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3287. return $core.withContext(function($ctx1) {
  3288. //>>excludeEnd("ctx");
  3289. $self[aString] = anObject;
  3290. return self;
  3291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3292. }, function($ctx1) {$ctx1.fill(self,"instVarNamed:put:",{aString:aString,anObject:anObject})});
  3293. //>>excludeEnd("ctx");
  3294. }; }),
  3295. $globals.ProtoObject);
  3296. $core.addMethod(
  3297. $core.method({
  3298. selector: "isKindOf:",
  3299. protocol: "testing",
  3300. //>>excludeStart("ide", pragmas.excludeIdeData);
  3301. args: ["aClass"],
  3302. source: "isKindOf: aClass\x0a\x09^ (self isMemberOf: aClass) or: [ self class inheritsFrom: aClass ]",
  3303. referencedClasses: [],
  3304. //>>excludeEnd("ide");
  3305. pragmas: [],
  3306. messageSends: ["or:", "isMemberOf:", "inheritsFrom:", "class"]
  3307. }, function ($methodClass){ return function (aClass){
  3308. var self=this,$self=this;
  3309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3310. return $core.withContext(function($ctx1) {
  3311. //>>excludeEnd("ctx");
  3312. if($core.assert($self._isMemberOf_(aClass))){
  3313. return true;
  3314. } else {
  3315. return $recv($self._class())._inheritsFrom_(aClass);
  3316. }
  3317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3318. }, function($ctx1) {$ctx1.fill(self,"isKindOf:",{aClass:aClass})});
  3319. //>>excludeEnd("ctx");
  3320. }; }),
  3321. $globals.ProtoObject);
  3322. $core.addMethod(
  3323. $core.method({
  3324. selector: "isNil",
  3325. protocol: "testing",
  3326. //>>excludeStart("ide", pragmas.excludeIdeData);
  3327. args: [],
  3328. source: "isNil\x0a\x09^ false",
  3329. referencedClasses: [],
  3330. //>>excludeEnd("ide");
  3331. pragmas: [],
  3332. messageSends: []
  3333. }, function ($methodClass){ return function (){
  3334. var self=this,$self=this;
  3335. return false;
  3336. }; }),
  3337. $globals.ProtoObject);
  3338. $core.addMethod(
  3339. $core.method({
  3340. selector: "notNil",
  3341. protocol: "testing",
  3342. //>>excludeStart("ide", pragmas.excludeIdeData);
  3343. args: [],
  3344. source: "notNil\x0a\x09^ true",
  3345. referencedClasses: [],
  3346. //>>excludeEnd("ide");
  3347. pragmas: [],
  3348. messageSends: []
  3349. }, function ($methodClass){ return function (){
  3350. var self=this,$self=this;
  3351. return true;
  3352. }; }),
  3353. $globals.ProtoObject);
  3354. $core.addMethod(
  3355. $core.method({
  3356. selector: "perform:",
  3357. protocol: "message handling",
  3358. //>>excludeStart("ide", pragmas.excludeIdeData);
  3359. args: ["aString"],
  3360. source: "perform: aString\x0a\x09^ self perform: aString withArguments: #()",
  3361. referencedClasses: [],
  3362. //>>excludeEnd("ide");
  3363. pragmas: [],
  3364. messageSends: ["perform:withArguments:"]
  3365. }, function ($methodClass){ return function (aString){
  3366. var self=this,$self=this;
  3367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3368. return $core.withContext(function($ctx1) {
  3369. //>>excludeEnd("ctx");
  3370. return $self._perform_withArguments_(aString,[]);
  3371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3372. }, function($ctx1) {$ctx1.fill(self,"perform:",{aString:aString})});
  3373. //>>excludeEnd("ctx");
  3374. }; }),
  3375. $globals.ProtoObject);
  3376. $core.addMethod(
  3377. $core.method({
  3378. selector: "perform:with:",
  3379. protocol: "message handling",
  3380. //>>excludeStart("ide", pragmas.excludeIdeData);
  3381. args: ["aString", "anObject"],
  3382. source: "perform: aString with: anObject\x0a\x09<inlineJS: 'return $core.send2(self, aString, [anObject])'>",
  3383. referencedClasses: [],
  3384. //>>excludeEnd("ide");
  3385. pragmas: [["inlineJS:", ["return $core.send2(self, aString, [anObject])"]]],
  3386. messageSends: []
  3387. }, function ($methodClass){ return function (aString,anObject){
  3388. var self=this,$self=this;
  3389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3390. return $core.withContext(function($ctx1) {
  3391. //>>excludeEnd("ctx");
  3392. return $core.send2(self, aString, [anObject]);
  3393. return self;
  3394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3395. }, function($ctx1) {$ctx1.fill(self,"perform:with:",{aString:aString,anObject:anObject})});
  3396. //>>excludeEnd("ctx");
  3397. }; }),
  3398. $globals.ProtoObject);
  3399. $core.addMethod(
  3400. $core.method({
  3401. selector: "perform:withArguments:",
  3402. protocol: "message handling",
  3403. //>>excludeStart("ide", pragmas.excludeIdeData);
  3404. args: ["aString", "aCollection"],
  3405. source: "perform: aString withArguments: aCollection\x0a\x09<inlineJS: 'return $core.send2(self, aString, aCollection)'>",
  3406. referencedClasses: [],
  3407. //>>excludeEnd("ide");
  3408. pragmas: [["inlineJS:", ["return $core.send2(self, aString, aCollection)"]]],
  3409. messageSends: []
  3410. }, function ($methodClass){ return function (aString,aCollection){
  3411. var self=this,$self=this;
  3412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3413. return $core.withContext(function($ctx1) {
  3414. //>>excludeEnd("ctx");
  3415. return $core.send2(self, aString, aCollection);
  3416. return self;
  3417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3418. }, function($ctx1) {$ctx1.fill(self,"perform:withArguments:",{aString:aString,aCollection:aCollection})});
  3419. //>>excludeEnd("ctx");
  3420. }; }),
  3421. $globals.ProtoObject);
  3422. $core.addMethod(
  3423. $core.method({
  3424. selector: "printOn:",
  3425. protocol: "printing",
  3426. //>>excludeStart("ide", pragmas.excludeIdeData);
  3427. args: ["aStream"],
  3428. source: "printOn: aStream\x0a\x09aStream nextPutAll: (self class name first isVowel\x0a\x09\x09ifTrue: [ 'an ' ]\x0a\x09\x09ifFalse: [ 'a ' ]).\x0a\x09aStream nextPutAll: self class name",
  3429. referencedClasses: [],
  3430. //>>excludeEnd("ide");
  3431. pragmas: [],
  3432. messageSends: ["nextPutAll:", "ifTrue:ifFalse:", "isVowel", "first", "name", "class"]
  3433. }, function ($methodClass){ return function (aStream){
  3434. var self=this,$self=this;
  3435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3436. return $core.withContext(function($ctx1) {
  3437. //>>excludeEnd("ctx");
  3438. var $1;
  3439. if($core.assert($recv($recv([$recv([$self._class()
  3440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3441. ,$ctx1.sendIdx["class"]=1
  3442. //>>excludeEnd("ctx");
  3443. ][0])._name()
  3444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3445. ,$ctx1.sendIdx["name"]=1
  3446. //>>excludeEnd("ctx");
  3447. ][0])._first())._isVowel())){
  3448. $1="an ";
  3449. } else {
  3450. $1="a ";
  3451. }
  3452. [$recv(aStream)._nextPutAll_($1)
  3453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3454. ,$ctx1.sendIdx["nextPutAll:"]=1
  3455. //>>excludeEnd("ctx");
  3456. ][0];
  3457. $recv(aStream)._nextPutAll_($recv($self._class())._name());
  3458. return self;
  3459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3460. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  3461. //>>excludeEnd("ctx");
  3462. }; }),
  3463. $globals.ProtoObject);
  3464. $core.addMethod(
  3465. $core.method({
  3466. selector: "printString",
  3467. protocol: "printing",
  3468. //>>excludeStart("ide", pragmas.excludeIdeData);
  3469. args: [],
  3470. source: "printString\x0a\x09^ String streamContents: [ :str | \x0a\x09\x09self printOn: str ]",
  3471. referencedClasses: ["String"],
  3472. //>>excludeEnd("ide");
  3473. pragmas: [],
  3474. messageSends: ["streamContents:", "printOn:"]
  3475. }, function ($methodClass){ return function (){
  3476. var self=this,$self=this;
  3477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3478. return $core.withContext(function($ctx1) {
  3479. //>>excludeEnd("ctx");
  3480. return $recv($globals.String)._streamContents_((function(str){
  3481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3482. return $core.withContext(function($ctx2) {
  3483. //>>excludeEnd("ctx");
  3484. return $self._printOn_(str);
  3485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3486. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  3487. //>>excludeEnd("ctx");
  3488. }));
  3489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3490. }, function($ctx1) {$ctx1.fill(self,"printString",{})});
  3491. //>>excludeEnd("ctx");
  3492. }; }),
  3493. $globals.ProtoObject);
  3494. $core.addMethod(
  3495. $core.method({
  3496. selector: "yourself",
  3497. protocol: "accessing",
  3498. //>>excludeStart("ide", pragmas.excludeIdeData);
  3499. args: [],
  3500. source: "yourself\x0a\x09^ self",
  3501. referencedClasses: [],
  3502. //>>excludeEnd("ide");
  3503. pragmas: [],
  3504. messageSends: []
  3505. }, function ($methodClass){ return function (){
  3506. var self=this,$self=this;
  3507. return self;
  3508. }; }),
  3509. $globals.ProtoObject);
  3510. $core.addMethod(
  3511. $core.method({
  3512. selector: "~=",
  3513. protocol: "comparing",
  3514. //>>excludeStart("ide", pragmas.excludeIdeData);
  3515. args: ["anObject"],
  3516. source: "~= anObject\x0a\x09^ (self = anObject) = false",
  3517. referencedClasses: [],
  3518. //>>excludeEnd("ide");
  3519. pragmas: [],
  3520. messageSends: ["="]
  3521. }, function ($methodClass){ return function (anObject){
  3522. var self=this,$self=this;
  3523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3524. return $core.withContext(function($ctx1) {
  3525. //>>excludeEnd("ctx");
  3526. return [$recv($self.__eq(anObject)).__eq(false)
  3527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3528. ,$ctx1.sendIdx["="]=1
  3529. //>>excludeEnd("ctx");
  3530. ][0];
  3531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3532. }, function($ctx1) {$ctx1.fill(self,"~=",{anObject:anObject})});
  3533. //>>excludeEnd("ctx");
  3534. }; }),
  3535. $globals.ProtoObject);
  3536. $core.addMethod(
  3537. $core.method({
  3538. selector: "~~",
  3539. protocol: "comparing",
  3540. //>>excludeStart("ide", pragmas.excludeIdeData);
  3541. args: ["anObject"],
  3542. source: "~~ anObject\x0a\x09^ (self == anObject) = false",
  3543. referencedClasses: [],
  3544. //>>excludeEnd("ide");
  3545. pragmas: [],
  3546. messageSends: ["=", "=="]
  3547. }, function ($methodClass){ return function (anObject){
  3548. var self=this,$self=this;
  3549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3550. return $core.withContext(function($ctx1) {
  3551. //>>excludeEnd("ctx");
  3552. return $recv($self.__eq_eq(anObject)).__eq(false);
  3553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3554. }, function($ctx1) {$ctx1.fill(self,"~~",{anObject:anObject})});
  3555. //>>excludeEnd("ctx");
  3556. }; }),
  3557. $globals.ProtoObject);
  3558. $core.addMethod(
  3559. $core.method({
  3560. selector: "initialize",
  3561. protocol: "initialization",
  3562. //>>excludeStart("ide", pragmas.excludeIdeData);
  3563. args: [],
  3564. source: "initialize",
  3565. referencedClasses: [],
  3566. //>>excludeEnd("ide");
  3567. pragmas: [],
  3568. messageSends: []
  3569. }, function ($methodClass){ return function (){
  3570. var self=this,$self=this;
  3571. return self;
  3572. }; }),
  3573. $globals.ProtoObject.a$cls);
  3574. $core.addClass("Object", $globals.ProtoObject, "Kernel-Objects");
  3575. //>>excludeStart("ide", pragmas.excludeIdeData);
  3576. $globals.Object.comment="**I am the root of the Smalltalk class system**. With the exception of unual subclasses of `ProtoObject`, all other classes in the system are subclasses of me.\x0a\x0aI provide default behavior common to all normal objects (some of it inherited from `ProtoObject`), such as:\x0a\x0a- accessing\x0a- copying\x0a- comparison\x0a- error handling\x0a- message sending\x0a- reflection\x0a\x0aAlso utility messages that all objects should respond to are defined here.\x0a\x0aI have no instance variable.\x0a\x0a##Access\x0a\x0aInstance variables can be accessed with `#instVarAt:` and `#instVarAt:put:`. `#instanceVariableNames` answers a collection of all instance variable names.\x0aAccessing JavaScript properties of an object is done through `#basicAt:`, `#basicAt:put:` and `basicDelete:`.\x0a\x0a##Copying\x0a\x0aCopying an object is handled by `#copy` and `#deepCopy`. The first one performs a shallow copy of the receiver, while the second one performs a deep copy.\x0aThe hook method `#postCopy` can be overriden in subclasses to copy fields as necessary to complete the full copy. It will be sent by the copy of the receiver.\x0a\x0a##Comparison\x0a\x0aI understand equality `#=` and identity `#==` comparison.\x0a\x0a##Error handling\x0a\x0a- `#halt` is the typical message to use for inserting breakpoints during debugging.\x0a- `#error:` throws a generic error exception\x0a- `#doesNotUnderstand:` handles the fact that there was an attempt to send the given message to the receiver but the receiver does not understand this message.\x0a\x09Overriding this message can be useful to implement proxies for example.";
  3577. //>>excludeEnd("ide");
  3578. $core.addMethod(
  3579. $core.method({
  3580. selector: "->",
  3581. protocol: "converting",
  3582. //>>excludeStart("ide", pragmas.excludeIdeData);
  3583. args: ["anObject"],
  3584. source: "-> anObject\x0a\x09^ Association key: self value: anObject",
  3585. referencedClasses: ["Association"],
  3586. //>>excludeEnd("ide");
  3587. pragmas: [],
  3588. messageSends: ["key:value:"]
  3589. }, function ($methodClass){ return function (anObject){
  3590. var self=this,$self=this;
  3591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3592. return $core.withContext(function($ctx1) {
  3593. //>>excludeEnd("ctx");
  3594. return $recv($globals.Association)._key_value_(self,anObject);
  3595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3596. }, function($ctx1) {$ctx1.fill(self,"->",{anObject:anObject})});
  3597. //>>excludeEnd("ctx");
  3598. }; }),
  3599. $globals.Object);
  3600. $core.addMethod(
  3601. $core.method({
  3602. selector: "andSelfToNumber:",
  3603. protocol: "converting",
  3604. //>>excludeStart("ide", pragmas.excludeIdeData);
  3605. args: ["aNumber"],
  3606. source: "andSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
  3607. referencedClasses: [],
  3608. //>>excludeEnd("ide");
  3609. pragmas: [],
  3610. messageSends: ["error:"]
  3611. }, function ($methodClass){ return function (aNumber){
  3612. var self=this,$self=this;
  3613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3614. return $core.withContext(function($ctx1) {
  3615. //>>excludeEnd("ctx");
  3616. $self._error_("I am not a number.");
  3617. return self;
  3618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3619. }, function($ctx1) {$ctx1.fill(self,"andSelfToNumber:",{aNumber:aNumber})});
  3620. //>>excludeEnd("ctx");
  3621. }; }),
  3622. $globals.Object);
  3623. $core.addMethod(
  3624. $core.method({
  3625. selector: "appendToString:",
  3626. protocol: "copying",
  3627. //>>excludeStart("ide", pragmas.excludeIdeData);
  3628. args: ["aString"],
  3629. source: "appendToString: aString\x0a\x09self error: 'Cannot add self to a string.'",
  3630. referencedClasses: [],
  3631. //>>excludeEnd("ide");
  3632. pragmas: [],
  3633. messageSends: ["error:"]
  3634. }, function ($methodClass){ return function (aString){
  3635. var self=this,$self=this;
  3636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3637. return $core.withContext(function($ctx1) {
  3638. //>>excludeEnd("ctx");
  3639. $self._error_("Cannot add self to a string.");
  3640. return self;
  3641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3642. }, function($ctx1) {$ctx1.fill(self,"appendToString:",{aString:aString})});
  3643. //>>excludeEnd("ctx");
  3644. }; }),
  3645. $globals.Object);
  3646. $core.addMethod(
  3647. $core.method({
  3648. selector: "asJSONString",
  3649. protocol: "converting",
  3650. //>>excludeStart("ide", pragmas.excludeIdeData);
  3651. args: [],
  3652. source: "asJSONString\x0a\x09^ JSON stringify: self asJavaScriptObject",
  3653. referencedClasses: ["JSON"],
  3654. //>>excludeEnd("ide");
  3655. pragmas: [],
  3656. messageSends: ["stringify:", "asJavaScriptObject"]
  3657. }, function ($methodClass){ return function (){
  3658. var self=this,$self=this;
  3659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3660. return $core.withContext(function($ctx1) {
  3661. //>>excludeEnd("ctx");
  3662. return $recv($globals.JSON)._stringify_($self._asJavaScriptObject());
  3663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3664. }, function($ctx1) {$ctx1.fill(self,"asJSONString",{})});
  3665. //>>excludeEnd("ctx");
  3666. }; }),
  3667. $globals.Object);
  3668. $core.addMethod(
  3669. $core.method({
  3670. selector: "asJavaScriptObject",
  3671. protocol: "converting",
  3672. //>>excludeStart("ide", pragmas.excludeIdeData);
  3673. args: [],
  3674. source: "asJavaScriptObject\x0a\x09| variables |\x0a\x09self deprecatedAPI: 'Implement domain-specific #asJavaScriptObject on your classes instead.'.\x0a\x09variables := HashedCollection new.\x0a\x09self class allInstanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarNamed: each) asJavaScriptObject ].\x0a\x09^ variables",
  3675. referencedClasses: ["HashedCollection"],
  3676. //>>excludeEnd("ide");
  3677. pragmas: [],
  3678. messageSends: ["deprecatedAPI:", "new", "do:", "allInstanceVariableNames", "class", "at:put:", "asJavaScriptObject", "instVarNamed:"]
  3679. }, function ($methodClass){ return function (){
  3680. var self=this,$self=this;
  3681. var variables;
  3682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3683. return $core.withContext(function($ctx1) {
  3684. //>>excludeEnd("ctx");
  3685. $self._deprecatedAPI_("Implement domain-specific #asJavaScriptObject on your classes instead.");
  3686. variables=$recv($globals.HashedCollection)._new();
  3687. $recv($recv($self._class())._allInstanceVariableNames())._do_((function(each){
  3688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3689. return $core.withContext(function($ctx2) {
  3690. //>>excludeEnd("ctx");
  3691. return $recv(variables)._at_put_(each,$recv($self._instVarNamed_(each))._asJavaScriptObject());
  3692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3693. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  3694. //>>excludeEnd("ctx");
  3695. }));
  3696. return variables;
  3697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3698. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{variables:variables})});
  3699. //>>excludeEnd("ctx");
  3700. }; }),
  3701. $globals.Object);
  3702. $core.addMethod(
  3703. $core.method({
  3704. selector: "asJavaScriptSource",
  3705. protocol: "converting",
  3706. //>>excludeStart("ide", pragmas.excludeIdeData);
  3707. args: [],
  3708. source: "asJavaScriptSource\x0a\x09self deprecatedAPI: 'Implement domain-specific #asJavaScriptSource on your classes instead.'.\x0a\x09^ self asString",
  3709. referencedClasses: [],
  3710. //>>excludeEnd("ide");
  3711. pragmas: [],
  3712. messageSends: ["deprecatedAPI:", "asString"]
  3713. }, function ($methodClass){ return function (){
  3714. var self=this,$self=this;
  3715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3716. return $core.withContext(function($ctx1) {
  3717. //>>excludeEnd("ctx");
  3718. $self._deprecatedAPI_("Implement domain-specific #asJavaScriptSource on your classes instead.");
  3719. return $self._asString();
  3720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3721. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  3722. //>>excludeEnd("ctx");
  3723. }; }),
  3724. $globals.Object);
  3725. $core.addMethod(
  3726. $core.method({
  3727. selector: "basicAt:",
  3728. protocol: "accessing",
  3729. //>>excludeStart("ide", pragmas.excludeIdeData);
  3730. args: ["aString"],
  3731. source: "basicAt: aString\x0a\x09<inlineJS: 'return self[aString]'>",
  3732. referencedClasses: [],
  3733. //>>excludeEnd("ide");
  3734. pragmas: [["inlineJS:", ["return self[aString]"]]],
  3735. messageSends: []
  3736. }, function ($methodClass){ return function (aString){
  3737. var self=this,$self=this;
  3738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3739. return $core.withContext(function($ctx1) {
  3740. //>>excludeEnd("ctx");
  3741. return self[aString];
  3742. return self;
  3743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3744. }, function($ctx1) {$ctx1.fill(self,"basicAt:",{aString:aString})});
  3745. //>>excludeEnd("ctx");
  3746. }; }),
  3747. $globals.Object);
  3748. $core.addMethod(
  3749. $core.method({
  3750. selector: "basicAt:put:",
  3751. protocol: "accessing",
  3752. //>>excludeStart("ide", pragmas.excludeIdeData);
  3753. args: ["aString", "anObject"],
  3754. source: "basicAt: aString put: anObject\x0a\x09<inlineJS: 'return self[aString] = anObject'>",
  3755. referencedClasses: [],
  3756. //>>excludeEnd("ide");
  3757. pragmas: [["inlineJS:", ["return self[aString] = anObject"]]],
  3758. messageSends: []
  3759. }, function ($methodClass){ return function (aString,anObject){
  3760. var self=this,$self=this;
  3761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3762. return $core.withContext(function($ctx1) {
  3763. //>>excludeEnd("ctx");
  3764. return self[aString] = anObject;
  3765. return self;
  3766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3767. }, function($ctx1) {$ctx1.fill(self,"basicAt:put:",{aString:aString,anObject:anObject})});
  3768. //>>excludeEnd("ctx");
  3769. }; }),
  3770. $globals.Object);
  3771. $core.addMethod(
  3772. $core.method({
  3773. selector: "basicDelete:",
  3774. protocol: "accessing",
  3775. //>>excludeStart("ide", pragmas.excludeIdeData);
  3776. args: ["aString"],
  3777. source: "basicDelete: aString\x0a\x09<inlineJS: 'delete self[aString]; return aString'>",
  3778. referencedClasses: [],
  3779. //>>excludeEnd("ide");
  3780. pragmas: [["inlineJS:", ["delete self[aString]; return aString"]]],
  3781. messageSends: []
  3782. }, function ($methodClass){ return function (aString){
  3783. var self=this,$self=this;
  3784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3785. return $core.withContext(function($ctx1) {
  3786. //>>excludeEnd("ctx");
  3787. delete self[aString]; return aString;
  3788. return self;
  3789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3790. }, function($ctx1) {$ctx1.fill(self,"basicDelete:",{aString:aString})});
  3791. //>>excludeEnd("ctx");
  3792. }; }),
  3793. $globals.Object);
  3794. $core.addMethod(
  3795. $core.method({
  3796. selector: "basicPerform:",
  3797. protocol: "message handling",
  3798. //>>excludeStart("ide", pragmas.excludeIdeData);
  3799. args: ["aString"],
  3800. source: "basicPerform: aString\x0a\x09^ self basicPerform: aString withArguments: #()",
  3801. referencedClasses: [],
  3802. //>>excludeEnd("ide");
  3803. pragmas: [],
  3804. messageSends: ["basicPerform:withArguments:"]
  3805. }, function ($methodClass){ return function (aString){
  3806. var self=this,$self=this;
  3807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3808. return $core.withContext(function($ctx1) {
  3809. //>>excludeEnd("ctx");
  3810. return $self._basicPerform_withArguments_(aString,[]);
  3811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3812. }, function($ctx1) {$ctx1.fill(self,"basicPerform:",{aString:aString})});
  3813. //>>excludeEnd("ctx");
  3814. }; }),
  3815. $globals.Object);
  3816. $core.addMethod(
  3817. $core.method({
  3818. selector: "basicPerform:withArguments:",
  3819. protocol: "message handling",
  3820. //>>excludeStart("ide", pragmas.excludeIdeData);
  3821. args: ["aString", "aCollection"],
  3822. source: "basicPerform: aString withArguments: aCollection\x0a\x09<inlineJS: 'return self[aString].apply(self, aCollection);'>",
  3823. referencedClasses: [],
  3824. //>>excludeEnd("ide");
  3825. pragmas: [["inlineJS:", ["return self[aString].apply(self, aCollection);"]]],
  3826. messageSends: []
  3827. }, function ($methodClass){ return function (aString,aCollection){
  3828. var self=this,$self=this;
  3829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3830. return $core.withContext(function($ctx1) {
  3831. //>>excludeEnd("ctx");
  3832. return self[aString].apply(self, aCollection);;
  3833. return self;
  3834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3835. }, function($ctx1) {$ctx1.fill(self,"basicPerform:withArguments:",{aString:aString,aCollection:aCollection})});
  3836. //>>excludeEnd("ctx");
  3837. }; }),
  3838. $globals.Object);
  3839. $core.addMethod(
  3840. $core.method({
  3841. selector: "browse",
  3842. protocol: "browsing",
  3843. //>>excludeStart("ide", pragmas.excludeIdeData);
  3844. args: [],
  3845. source: "browse\x0a\x09Finder findClass: self class",
  3846. referencedClasses: ["Finder"],
  3847. //>>excludeEnd("ide");
  3848. pragmas: [],
  3849. messageSends: ["findClass:", "class"]
  3850. }, function ($methodClass){ return function (){
  3851. var self=this,$self=this;
  3852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3853. return $core.withContext(function($ctx1) {
  3854. //>>excludeEnd("ctx");
  3855. $recv($globals.Finder)._findClass_($self._class());
  3856. return self;
  3857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3858. }, function($ctx1) {$ctx1.fill(self,"browse",{})});
  3859. //>>excludeEnd("ctx");
  3860. }; }),
  3861. $globals.Object);
  3862. $core.addMethod(
  3863. $core.method({
  3864. selector: "copy",
  3865. protocol: "copying",
  3866. //>>excludeStart("ide", pragmas.excludeIdeData);
  3867. args: [],
  3868. source: "copy\x0a\x09^ self shallowCopy postCopy",
  3869. referencedClasses: [],
  3870. //>>excludeEnd("ide");
  3871. pragmas: [],
  3872. messageSends: ["postCopy", "shallowCopy"]
  3873. }, function ($methodClass){ return function (){
  3874. var self=this,$self=this;
  3875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3876. return $core.withContext(function($ctx1) {
  3877. //>>excludeEnd("ctx");
  3878. return $recv($self._shallowCopy())._postCopy();
  3879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3880. }, function($ctx1) {$ctx1.fill(self,"copy",{})});
  3881. //>>excludeEnd("ctx");
  3882. }; }),
  3883. $globals.Object);
  3884. $core.addMethod(
  3885. $core.method({
  3886. selector: "deepCopy",
  3887. protocol: "copying",
  3888. //>>excludeStart("ide", pragmas.excludeIdeData);
  3889. args: [],
  3890. source: "deepCopy\x0a\x09<inlineJS: '\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function (i) {\x0a\x09\x09\x09copy[i] = $recv(self[i])._deepCopy();\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09'>",
  3891. referencedClasses: [],
  3892. //>>excludeEnd("ide");
  3893. pragmas: [["inlineJS:", ["\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function (i) {\x0a\x09\x09\x09copy[i] = $recv(self[i])._deepCopy();\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09"]]],
  3894. messageSends: []
  3895. }, function ($methodClass){ return function (){
  3896. var self=this,$self=this;
  3897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3898. return $core.withContext(function($ctx1) {
  3899. //>>excludeEnd("ctx");
  3900. var copy = self.a$cls._new();
  3901. Object.keys(self).forEach(function (i) {
  3902. copy[i] = $recv(self[i])._deepCopy();
  3903. });
  3904. return copy;
  3905. ;
  3906. return self;
  3907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3908. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})});
  3909. //>>excludeEnd("ctx");
  3910. }; }),
  3911. $globals.Object);
  3912. $core.addMethod(
  3913. $core.method({
  3914. selector: "deprecatedAPI",
  3915. protocol: "error handling",
  3916. //>>excludeStart("ide", pragmas.excludeIdeData);
  3917. args: [],
  3918. source: "deprecatedAPI\x0a\x09\x22Just a simple way to deprecate methods.\x0a\x09#deprecatedAPI is in the 'error handling' protocol even if it doesn't throw an error,\x0a\x09but it could in the future.\x22\x0a\x09console warn: thisContext home asString, ' is deprecated! (in ', thisContext home home asString, ')'.",
  3919. referencedClasses: [],
  3920. //>>excludeEnd("ide");
  3921. pragmas: [],
  3922. messageSends: ["warn:", ",", "asString", "home"]
  3923. }, function ($methodClass){ return function (){
  3924. var self=this,$self=this;
  3925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3926. return $core.withContext(function($ctx1) {
  3927. //>>excludeEnd("ctx");
  3928. $recv(console)._warn_([$recv([$recv($recv([$recv([$core.getThisContext()._home()
  3929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3930. ,$ctx1.sendIdx["home"]=1
  3931. //>>excludeEnd("ctx");
  3932. ][0])._asString()
  3933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3934. ,$ctx1.sendIdx["asString"]=1
  3935. //>>excludeEnd("ctx");
  3936. ][0]).__comma(" is deprecated! (in ")).__comma($recv([$recv($core.getThisContext()._home())._home()
  3937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3938. ,$ctx1.sendIdx["home"]=2
  3939. //>>excludeEnd("ctx");
  3940. ][0])._asString())
  3941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3942. ,$ctx1.sendIdx[","]=2
  3943. //>>excludeEnd("ctx");
  3944. ][0]).__comma(")")
  3945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3946. ,$ctx1.sendIdx[","]=1
  3947. //>>excludeEnd("ctx");
  3948. ][0]);
  3949. return self;
  3950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3951. }, function($ctx1) {$ctx1.fill(self,"deprecatedAPI",{})});
  3952. //>>excludeEnd("ctx");
  3953. }; }),
  3954. $globals.Object);
  3955. $core.addMethod(
  3956. $core.method({
  3957. selector: "deprecatedAPI:",
  3958. protocol: "error handling",
  3959. //>>excludeStart("ide", pragmas.excludeIdeData);
  3960. args: ["aString"],
  3961. source: "deprecatedAPI: aString\x0a\x09\x22Just a simple way to deprecate methods.\x0a\x09#deprecatedAPI is in the 'error handling' protocol even if it doesn't throw an error,\x0a\x09but it could in the future.\x22\x0a\x09console warn: thisContext home asString, ' is deprecated! (in ', thisContext home home asString, ')'.\x0a\x09console warn: aString",
  3962. referencedClasses: [],
  3963. //>>excludeEnd("ide");
  3964. pragmas: [],
  3965. messageSends: ["warn:", ",", "asString", "home"]
  3966. }, function ($methodClass){ return function (aString){
  3967. var self=this,$self=this;
  3968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3969. return $core.withContext(function($ctx1) {
  3970. //>>excludeEnd("ctx");
  3971. [$recv(console)._warn_([$recv([$recv($recv([$recv([$core.getThisContext()._home()
  3972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3973. ,$ctx1.sendIdx["home"]=1
  3974. //>>excludeEnd("ctx");
  3975. ][0])._asString()
  3976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3977. ,$ctx1.sendIdx["asString"]=1
  3978. //>>excludeEnd("ctx");
  3979. ][0]).__comma(" is deprecated! (in ")).__comma($recv([$recv($core.getThisContext()._home())._home()
  3980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3981. ,$ctx1.sendIdx["home"]=2
  3982. //>>excludeEnd("ctx");
  3983. ][0])._asString())
  3984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3985. ,$ctx1.sendIdx[","]=2
  3986. //>>excludeEnd("ctx");
  3987. ][0]).__comma(")")
  3988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3989. ,$ctx1.sendIdx[","]=1
  3990. //>>excludeEnd("ctx");
  3991. ][0])
  3992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3993. ,$ctx1.sendIdx["warn:"]=1
  3994. //>>excludeEnd("ctx");
  3995. ][0];
  3996. $recv(console)._warn_(aString);
  3997. return self;
  3998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3999. }, function($ctx1) {$ctx1.fill(self,"deprecatedAPI:",{aString:aString})});
  4000. //>>excludeEnd("ctx");
  4001. }; }),
  4002. $globals.Object);
  4003. $core.addMethod(
  4004. $core.method({
  4005. selector: "divideBySelfToNumber:",
  4006. protocol: "accessing",
  4007. //>>excludeStart("ide", pragmas.excludeIdeData);
  4008. args: ["aNumber"],
  4009. source: "divideBySelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
  4010. referencedClasses: [],
  4011. //>>excludeEnd("ide");
  4012. pragmas: [],
  4013. messageSends: ["error:"]
  4014. }, function ($methodClass){ return function (aNumber){
  4015. var self=this,$self=this;
  4016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4017. return $core.withContext(function($ctx1) {
  4018. //>>excludeEnd("ctx");
  4019. $self._error_("I am not a number.");
  4020. return self;
  4021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4022. }, function($ctx1) {$ctx1.fill(self,"divideBySelfToNumber:",{aNumber:aNumber})});
  4023. //>>excludeEnd("ctx");
  4024. }; }),
  4025. $globals.Object);
  4026. $core.addMethod(
  4027. $core.method({
  4028. selector: "divisionRemainderBySelfToNumber:",
  4029. protocol: "accessing",
  4030. //>>excludeStart("ide", pragmas.excludeIdeData);
  4031. args: ["aNumber"],
  4032. source: "divisionRemainderBySelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
  4033. referencedClasses: [],
  4034. //>>excludeEnd("ide");
  4035. pragmas: [],
  4036. messageSends: ["error:"]
  4037. }, function ($methodClass){ return function (aNumber){
  4038. var self=this,$self=this;
  4039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4040. return $core.withContext(function($ctx1) {
  4041. //>>excludeEnd("ctx");
  4042. $self._error_("I am not a number.");
  4043. return self;
  4044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4045. }, function($ctx1) {$ctx1.fill(self,"divisionRemainderBySelfToNumber:",{aNumber:aNumber})});
  4046. //>>excludeEnd("ctx");
  4047. }; }),
  4048. $globals.Object);
  4049. $core.addMethod(
  4050. $core.method({
  4051. selector: "error:",
  4052. protocol: "error handling",
  4053. //>>excludeStart("ide", pragmas.excludeIdeData);
  4054. args: ["aString"],
  4055. source: "error: aString\x0a\x09Error signal: aString",
  4056. referencedClasses: ["Error"],
  4057. //>>excludeEnd("ide");
  4058. pragmas: [],
  4059. messageSends: ["signal:"]
  4060. }, function ($methodClass){ return function (aString){
  4061. var self=this,$self=this;
  4062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4063. return $core.withContext(function($ctx1) {
  4064. //>>excludeEnd("ctx");
  4065. $recv($globals.Error)._signal_(aString);
  4066. return self;
  4067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4068. }, function($ctx1) {$ctx1.fill(self,"error:",{aString:aString})});
  4069. //>>excludeEnd("ctx");
  4070. }; }),
  4071. $globals.Object);
  4072. $core.addMethod(
  4073. $core.method({
  4074. selector: "halt",
  4075. protocol: "error handling",
  4076. //>>excludeStart("ide", pragmas.excludeIdeData);
  4077. args: [],
  4078. source: "halt\x0a\x09Halt signal",
  4079. referencedClasses: ["Halt"],
  4080. //>>excludeEnd("ide");
  4081. pragmas: [],
  4082. messageSends: ["signal"]
  4083. }, function ($methodClass){ return function (){
  4084. var self=this,$self=this;
  4085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4086. return $core.withContext(function($ctx1) {
  4087. //>>excludeEnd("ctx");
  4088. $recv($globals.Halt)._signal();
  4089. return self;
  4090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4091. }, function($ctx1) {$ctx1.fill(self,"halt",{})});
  4092. //>>excludeEnd("ctx");
  4093. }; }),
  4094. $globals.Object);
  4095. $core.addMethod(
  4096. $core.method({
  4097. selector: "in:",
  4098. protocol: "evaluating",
  4099. //>>excludeStart("ide", pragmas.excludeIdeData);
  4100. args: ["aValuable"],
  4101. source: "in: aValuable\x0a\x09^ aValuable value: self",
  4102. referencedClasses: [],
  4103. //>>excludeEnd("ide");
  4104. pragmas: [],
  4105. messageSends: ["value:"]
  4106. }, function ($methodClass){ return function (aValuable){
  4107. var self=this,$self=this;
  4108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4109. return $core.withContext(function($ctx1) {
  4110. //>>excludeEnd("ctx");
  4111. return $recv(aValuable)._value_(self);
  4112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4113. }, function($ctx1) {$ctx1.fill(self,"in:",{aValuable:aValuable})});
  4114. //>>excludeEnd("ctx");
  4115. }; }),
  4116. $globals.Object);
  4117. $core.addMethod(
  4118. $core.method({
  4119. selector: "isImmutable",
  4120. protocol: "testing",
  4121. //>>excludeStart("ide", pragmas.excludeIdeData);
  4122. args: [],
  4123. source: "isImmutable\x0a\x09^ false",
  4124. referencedClasses: [],
  4125. //>>excludeEnd("ide");
  4126. pragmas: [],
  4127. messageSends: []
  4128. }, function ($methodClass){ return function (){
  4129. var self=this,$self=this;
  4130. return false;
  4131. }; }),
  4132. $globals.Object);
  4133. $core.addMethod(
  4134. $core.method({
  4135. selector: "isMemberOf:",
  4136. protocol: "testing",
  4137. //>>excludeStart("ide", pragmas.excludeIdeData);
  4138. args: ["aClass"],
  4139. source: "isMemberOf: aClass\x0a\x09^ self class = aClass",
  4140. referencedClasses: [],
  4141. //>>excludeEnd("ide");
  4142. pragmas: [],
  4143. messageSends: ["=", "class"]
  4144. }, function ($methodClass){ return function (aClass){
  4145. var self=this,$self=this;
  4146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4147. return $core.withContext(function($ctx1) {
  4148. //>>excludeEnd("ctx");
  4149. return $recv($self._class()).__eq(aClass);
  4150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4151. }, function($ctx1) {$ctx1.fill(self,"isMemberOf:",{aClass:aClass})});
  4152. //>>excludeEnd("ctx");
  4153. }; }),
  4154. $globals.Object);
  4155. $core.addMethod(
  4156. $core.method({
  4157. selector: "isNumberEqualToSelf:",
  4158. protocol: "comparing",
  4159. //>>excludeStart("ide", pragmas.excludeIdeData);
  4160. args: ["aNumber"],
  4161. source: "isNumberEqualToSelf: aNumber\x0a\x09^ false",
  4162. referencedClasses: [],
  4163. //>>excludeEnd("ide");
  4164. pragmas: [],
  4165. messageSends: []
  4166. }, function ($methodClass){ return function (aNumber){
  4167. var self=this,$self=this;
  4168. return false;
  4169. }; }),
  4170. $globals.Object);
  4171. $core.addMethod(
  4172. $core.method({
  4173. selector: "isNumberGreaterThanOrEqualToSelf:",
  4174. protocol: "comparing",
  4175. //>>excludeStart("ide", pragmas.excludeIdeData);
  4176. args: ["aNumber"],
  4177. source: "isNumberGreaterThanOrEqualToSelf: aNumber\x0a\x09^ false",
  4178. referencedClasses: [],
  4179. //>>excludeEnd("ide");
  4180. pragmas: [],
  4181. messageSends: []
  4182. }, function ($methodClass){ return function (aNumber){
  4183. var self=this,$self=this;
  4184. return false;
  4185. }; }),
  4186. $globals.Object);
  4187. $core.addMethod(
  4188. $core.method({
  4189. selector: "isNumberGreaterThanSelf:",
  4190. protocol: "comparing",
  4191. //>>excludeStart("ide", pragmas.excludeIdeData);
  4192. args: ["aNumber"],
  4193. source: "isNumberGreaterThanSelf: aNumber\x0a\x09^ false",
  4194. referencedClasses: [],
  4195. //>>excludeEnd("ide");
  4196. pragmas: [],
  4197. messageSends: []
  4198. }, function ($methodClass){ return function (aNumber){
  4199. var self=this,$self=this;
  4200. return false;
  4201. }; }),
  4202. $globals.Object);
  4203. $core.addMethod(
  4204. $core.method({
  4205. selector: "isNumberLessThanOrEqualToSelf:",
  4206. protocol: "comparing",
  4207. //>>excludeStart("ide", pragmas.excludeIdeData);
  4208. args: ["aNumber"],
  4209. source: "isNumberLessThanOrEqualToSelf: aNumber\x0a\x09^ false",
  4210. referencedClasses: [],
  4211. //>>excludeEnd("ide");
  4212. pragmas: [],
  4213. messageSends: []
  4214. }, function ($methodClass){ return function (aNumber){
  4215. var self=this,$self=this;
  4216. return false;
  4217. }; }),
  4218. $globals.Object);
  4219. $core.addMethod(
  4220. $core.method({
  4221. selector: "isNumberLessThanSelf:",
  4222. protocol: "comparing",
  4223. //>>excludeStart("ide", pragmas.excludeIdeData);
  4224. args: ["aNumber"],
  4225. source: "isNumberLessThanSelf: aNumber\x0a\x09^ false",
  4226. referencedClasses: [],
  4227. //>>excludeEnd("ide");
  4228. pragmas: [],
  4229. messageSends: []
  4230. }, function ($methodClass){ return function (aNumber){
  4231. var self=this,$self=this;
  4232. return false;
  4233. }; }),
  4234. $globals.Object);
  4235. $core.addMethod(
  4236. $core.method({
  4237. selector: "isParseFailure",
  4238. protocol: "testing",
  4239. //>>excludeStart("ide", pragmas.excludeIdeData);
  4240. args: [],
  4241. source: "isParseFailure\x0a\x09^ false",
  4242. referencedClasses: [],
  4243. //>>excludeEnd("ide");
  4244. pragmas: [],
  4245. messageSends: []
  4246. }, function ($methodClass){ return function (){
  4247. var self=this,$self=this;
  4248. return false;
  4249. }; }),
  4250. $globals.Object);
  4251. $core.addMethod(
  4252. $core.method({
  4253. selector: "isStringEqualToSelf:",
  4254. protocol: "comparing",
  4255. //>>excludeStart("ide", pragmas.excludeIdeData);
  4256. args: ["aString"],
  4257. source: "isStringEqualToSelf: aString\x0a\x09^ false",
  4258. referencedClasses: [],
  4259. //>>excludeEnd("ide");
  4260. pragmas: [],
  4261. messageSends: []
  4262. }, function ($methodClass){ return function (aString){
  4263. var self=this,$self=this;
  4264. return false;
  4265. }; }),
  4266. $globals.Object);
  4267. $core.addMethod(
  4268. $core.method({
  4269. selector: "isStringGreaterThanOrEqualToSelf:",
  4270. protocol: "comparing",
  4271. //>>excludeStart("ide", pragmas.excludeIdeData);
  4272. args: ["aString"],
  4273. source: "isStringGreaterThanOrEqualToSelf: aString\x0a\x09^ false",
  4274. referencedClasses: [],
  4275. //>>excludeEnd("ide");
  4276. pragmas: [],
  4277. messageSends: []
  4278. }, function ($methodClass){ return function (aString){
  4279. var self=this,$self=this;
  4280. return false;
  4281. }; }),
  4282. $globals.Object);
  4283. $core.addMethod(
  4284. $core.method({
  4285. selector: "isStringGreaterThanSelf:",
  4286. protocol: "comparing",
  4287. //>>excludeStart("ide", pragmas.excludeIdeData);
  4288. args: ["aString"],
  4289. source: "isStringGreaterThanSelf: aString\x0a\x09^ false",
  4290. referencedClasses: [],
  4291. //>>excludeEnd("ide");
  4292. pragmas: [],
  4293. messageSends: []
  4294. }, function ($methodClass){ return function (aString){
  4295. var self=this,$self=this;
  4296. return false;
  4297. }; }),
  4298. $globals.Object);
  4299. $core.addMethod(
  4300. $core.method({
  4301. selector: "isStringLessThanOrEqualToSelf:",
  4302. protocol: "comparing",
  4303. //>>excludeStart("ide", pragmas.excludeIdeData);
  4304. args: ["aString"],
  4305. source: "isStringLessThanOrEqualToSelf: aString\x0a\x09^ false",
  4306. referencedClasses: [],
  4307. //>>excludeEnd("ide");
  4308. pragmas: [],
  4309. messageSends: []
  4310. }, function ($methodClass){ return function (aString){
  4311. var self=this,$self=this;
  4312. return false;
  4313. }; }),
  4314. $globals.Object);
  4315. $core.addMethod(
  4316. $core.method({
  4317. selector: "isStringLessThanSelf:",
  4318. protocol: "comparing",
  4319. //>>excludeStart("ide", pragmas.excludeIdeData);
  4320. args: ["aString"],
  4321. source: "isStringLessThanSelf: aString\x0a\x09^ false",
  4322. referencedClasses: [],
  4323. //>>excludeEnd("ide");
  4324. pragmas: [],
  4325. messageSends: []
  4326. }, function ($methodClass){ return function (aString){
  4327. var self=this,$self=this;
  4328. return false;
  4329. }; }),
  4330. $globals.Object);
  4331. $core.addMethod(
  4332. $core.method({
  4333. selector: "minusSelfToNumber:",
  4334. protocol: "accessing",
  4335. //>>excludeStart("ide", pragmas.excludeIdeData);
  4336. args: ["aNumber"],
  4337. source: "minusSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
  4338. referencedClasses: [],
  4339. //>>excludeEnd("ide");
  4340. pragmas: [],
  4341. messageSends: ["error:"]
  4342. }, function ($methodClass){ return function (aNumber){
  4343. var self=this,$self=this;
  4344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4345. return $core.withContext(function($ctx1) {
  4346. //>>excludeEnd("ctx");
  4347. $self._error_("I am not a number.");
  4348. return self;
  4349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4350. }, function($ctx1) {$ctx1.fill(self,"minusSelfToNumber:",{aNumber:aNumber})});
  4351. //>>excludeEnd("ctx");
  4352. }; }),
  4353. $globals.Object);
  4354. $core.addMethod(
  4355. $core.method({
  4356. selector: "orSelfToNumber:",
  4357. protocol: "converting",
  4358. //>>excludeStart("ide", pragmas.excludeIdeData);
  4359. args: ["aNumber"],
  4360. source: "orSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
  4361. referencedClasses: [],
  4362. //>>excludeEnd("ide");
  4363. pragmas: [],
  4364. messageSends: ["error:"]
  4365. }, function ($methodClass){ return function (aNumber){
  4366. var self=this,$self=this;
  4367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4368. return $core.withContext(function($ctx1) {
  4369. //>>excludeEnd("ctx");
  4370. $self._error_("I am not a number.");
  4371. return self;
  4372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4373. }, function($ctx1) {$ctx1.fill(self,"orSelfToNumber:",{aNumber:aNumber})});
  4374. //>>excludeEnd("ctx");
  4375. }; }),
  4376. $globals.Object);
  4377. $core.addMethod(
  4378. $core.method({
  4379. selector: "plusSelfToNumber:",
  4380. protocol: "accessing",
  4381. //>>excludeStart("ide", pragmas.excludeIdeData);
  4382. args: ["aNumber"],
  4383. source: "plusSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
  4384. referencedClasses: [],
  4385. //>>excludeEnd("ide");
  4386. pragmas: [],
  4387. messageSends: ["error:"]
  4388. }, function ($methodClass){ return function (aNumber){
  4389. var self=this,$self=this;
  4390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4391. return $core.withContext(function($ctx1) {
  4392. //>>excludeEnd("ctx");
  4393. $self._error_("I am not a number.");
  4394. return self;
  4395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4396. }, function($ctx1) {$ctx1.fill(self,"plusSelfToNumber:",{aNumber:aNumber})});
  4397. //>>excludeEnd("ctx");
  4398. }; }),
  4399. $globals.Object);
  4400. $core.addMethod(
  4401. $core.method({
  4402. selector: "postCopy",
  4403. protocol: "copying",
  4404. //>>excludeStart("ide", pragmas.excludeIdeData);
  4405. args: [],
  4406. source: "postCopy",
  4407. referencedClasses: [],
  4408. //>>excludeEnd("ide");
  4409. pragmas: [],
  4410. messageSends: []
  4411. }, function ($methodClass){ return function (){
  4412. var self=this,$self=this;
  4413. return self;
  4414. }; }),
  4415. $globals.Object);
  4416. $core.addMethod(
  4417. $core.method({
  4418. selector: "putOn:",
  4419. protocol: "streaming",
  4420. //>>excludeStart("ide", pragmas.excludeIdeData);
  4421. args: ["aStream"],
  4422. source: "putOn: aStream\x0a\x09aStream nextPut: self",
  4423. referencedClasses: [],
  4424. //>>excludeEnd("ide");
  4425. pragmas: [],
  4426. messageSends: ["nextPut:"]
  4427. }, function ($methodClass){ return function (aStream){
  4428. var self=this,$self=this;
  4429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4430. return $core.withContext(function($ctx1) {
  4431. //>>excludeEnd("ctx");
  4432. $recv(aStream)._nextPut_(self);
  4433. return self;
  4434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4435. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream})});
  4436. //>>excludeEnd("ctx");
  4437. }; }),
  4438. $globals.Object);
  4439. $core.addMethod(
  4440. $core.method({
  4441. selector: "respondsTo:",
  4442. protocol: "testing",
  4443. //>>excludeStart("ide", pragmas.excludeIdeData);
  4444. args: ["aSelector"],
  4445. source: "respondsTo: aSelector\x0a\x09^ self class canUnderstand: aSelector",
  4446. referencedClasses: [],
  4447. //>>excludeEnd("ide");
  4448. pragmas: [],
  4449. messageSends: ["canUnderstand:", "class"]
  4450. }, function ($methodClass){ return function (aSelector){
  4451. var self=this,$self=this;
  4452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4453. return $core.withContext(function($ctx1) {
  4454. //>>excludeEnd("ctx");
  4455. return $recv($self._class())._canUnderstand_(aSelector);
  4456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4457. }, function($ctx1) {$ctx1.fill(self,"respondsTo:",{aSelector:aSelector})});
  4458. //>>excludeEnd("ctx");
  4459. }; }),
  4460. $globals.Object);
  4461. $core.addMethod(
  4462. $core.method({
  4463. selector: "shallowCopy",
  4464. protocol: "copying",
  4465. //>>excludeStart("ide", pragmas.excludeIdeData);
  4466. args: [],
  4467. source: "shallowCopy\x0a\x09<inlineJS: '\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function(i) {\x0a\x09\x09\x09copy[i] = self[i];\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09'>",
  4468. referencedClasses: [],
  4469. //>>excludeEnd("ide");
  4470. pragmas: [["inlineJS:", ["\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function(i) {\x0a\x09\x09\x09copy[i] = self[i];\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09"]]],
  4471. messageSends: []
  4472. }, function ($methodClass){ return function (){
  4473. var self=this,$self=this;
  4474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4475. return $core.withContext(function($ctx1) {
  4476. //>>excludeEnd("ctx");
  4477. var copy = self.a$cls._new();
  4478. Object.keys(self).forEach(function(i) {
  4479. copy[i] = self[i];
  4480. });
  4481. return copy;
  4482. ;
  4483. return self;
  4484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4485. }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{})});
  4486. //>>excludeEnd("ctx");
  4487. }; }),
  4488. $globals.Object);
  4489. $core.addMethod(
  4490. $core.method({
  4491. selector: "shouldNotImplement",
  4492. protocol: "error handling",
  4493. //>>excludeStart("ide", pragmas.excludeIdeData);
  4494. args: [],
  4495. source: "shouldNotImplement\x0a\x09self error: 'This method should not be implemented in ', self class name",
  4496. referencedClasses: [],
  4497. //>>excludeEnd("ide");
  4498. pragmas: [],
  4499. messageSends: ["error:", ",", "name", "class"]
  4500. }, function ($methodClass){ return function (){
  4501. var self=this,$self=this;
  4502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4503. return $core.withContext(function($ctx1) {
  4504. //>>excludeEnd("ctx");
  4505. $self._error_("This method should not be implemented in ".__comma($recv($self._class())._name()));
  4506. return self;
  4507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4508. }, function($ctx1) {$ctx1.fill(self,"shouldNotImplement",{})});
  4509. //>>excludeEnd("ctx");
  4510. }; }),
  4511. $globals.Object);
  4512. $core.addMethod(
  4513. $core.method({
  4514. selector: "size",
  4515. protocol: "accessing",
  4516. //>>excludeStart("ide", pragmas.excludeIdeData);
  4517. args: [],
  4518. source: "size\x0a\x09self error: 'Object not indexable'",
  4519. referencedClasses: [],
  4520. //>>excludeEnd("ide");
  4521. pragmas: [],
  4522. messageSends: ["error:"]
  4523. }, function ($methodClass){ return function (){
  4524. var self=this,$self=this;
  4525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4526. return $core.withContext(function($ctx1) {
  4527. //>>excludeEnd("ctx");
  4528. $self._error_("Object not indexable");
  4529. return self;
  4530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4531. }, function($ctx1) {$ctx1.fill(self,"size",{})});
  4532. //>>excludeEnd("ctx");
  4533. }; }),
  4534. $globals.Object);
  4535. $core.addMethod(
  4536. $core.method({
  4537. selector: "subclassResponsibility",
  4538. protocol: "error handling",
  4539. //>>excludeStart("ide", pragmas.excludeIdeData);
  4540. args: [],
  4541. source: "subclassResponsibility\x0a\x09self error: 'This method is a responsibility of a subclass'",
  4542. referencedClasses: [],
  4543. //>>excludeEnd("ide");
  4544. pragmas: [],
  4545. messageSends: ["error:"]
  4546. }, function ($methodClass){ return function (){
  4547. var self=this,$self=this;
  4548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4549. return $core.withContext(function($ctx1) {
  4550. //>>excludeEnd("ctx");
  4551. $self._error_("This method is a responsibility of a subclass");
  4552. return self;
  4553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4554. }, function($ctx1) {$ctx1.fill(self,"subclassResponsibility",{})});
  4555. //>>excludeEnd("ctx");
  4556. }; }),
  4557. $globals.Object);
  4558. $core.addMethod(
  4559. $core.method({
  4560. selector: "timesSelfToNumber:",
  4561. protocol: "accessing",
  4562. //>>excludeStart("ide", pragmas.excludeIdeData);
  4563. args: ["aNumber"],
  4564. source: "timesSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
  4565. referencedClasses: [],
  4566. //>>excludeEnd("ide");
  4567. pragmas: [],
  4568. messageSends: ["error:"]
  4569. }, function ($methodClass){ return function (aNumber){
  4570. var self=this,$self=this;
  4571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4572. return $core.withContext(function($ctx1) {
  4573. //>>excludeEnd("ctx");
  4574. $self._error_("I am not a number.");
  4575. return self;
  4576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4577. }, function($ctx1) {$ctx1.fill(self,"timesSelfToNumber:",{aNumber:aNumber})});
  4578. //>>excludeEnd("ctx");
  4579. }; }),
  4580. $globals.Object);
  4581. $core.addMethod(
  4582. $core.method({
  4583. selector: "value",
  4584. protocol: "evaluating",
  4585. //>>excludeStart("ide", pragmas.excludeIdeData);
  4586. args: [],
  4587. source: "value\x0a\x09<inlineJS: 'return self.valueOf()'>",
  4588. referencedClasses: [],
  4589. //>>excludeEnd("ide");
  4590. pragmas: [["inlineJS:", ["return self.valueOf()"]]],
  4591. messageSends: []
  4592. }, function ($methodClass){ return function (){
  4593. var self=this,$self=this;
  4594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4595. return $core.withContext(function($ctx1) {
  4596. //>>excludeEnd("ctx");
  4597. return self.valueOf();
  4598. return self;
  4599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4600. }, function($ctx1) {$ctx1.fill(self,"value",{})});
  4601. //>>excludeEnd("ctx");
  4602. }; }),
  4603. $globals.Object);
  4604. $core.addMethod(
  4605. $core.method({
  4606. selector: "xorSelfToNumber:",
  4607. protocol: "converting",
  4608. //>>excludeStart("ide", pragmas.excludeIdeData);
  4609. args: ["aNumber"],
  4610. source: "xorSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
  4611. referencedClasses: [],
  4612. //>>excludeEnd("ide");
  4613. pragmas: [],
  4614. messageSends: ["error:"]
  4615. }, function ($methodClass){ return function (aNumber){
  4616. var self=this,$self=this;
  4617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4618. return $core.withContext(function($ctx1) {
  4619. //>>excludeEnd("ctx");
  4620. $self._error_("I am not a number.");
  4621. return self;
  4622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4623. }, function($ctx1) {$ctx1.fill(self,"xorSelfToNumber:",{aNumber:aNumber})});
  4624. //>>excludeEnd("ctx");
  4625. }; }),
  4626. $globals.Object);
  4627. $core.addMethod(
  4628. $core.method({
  4629. selector: "accessorProtocolWith:",
  4630. protocol: "helios",
  4631. //>>excludeStart("ide", pragmas.excludeIdeData);
  4632. args: ["aGenerator"],
  4633. source: "accessorProtocolWith: aGenerator\x0a\x09aGenerator accessorProtocolForObject",
  4634. referencedClasses: [],
  4635. //>>excludeEnd("ide");
  4636. pragmas: [],
  4637. messageSends: ["accessorProtocolForObject"]
  4638. }, function ($methodClass){ return function (aGenerator){
  4639. var self=this,$self=this;
  4640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4641. return $core.withContext(function($ctx1) {
  4642. //>>excludeEnd("ctx");
  4643. $recv(aGenerator)._accessorProtocolForObject();
  4644. return self;
  4645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4646. }, function($ctx1) {$ctx1.fill(self,"accessorProtocolWith:",{aGenerator:aGenerator})});
  4647. //>>excludeEnd("ctx");
  4648. }; }),
  4649. $globals.Object.a$cls);
  4650. $core.addMethod(
  4651. $core.method({
  4652. selector: "accessorsSourceCodesWith:",
  4653. protocol: "helios",
  4654. //>>excludeStart("ide", pragmas.excludeIdeData);
  4655. args: ["aGenerator"],
  4656. source: "accessorsSourceCodesWith: aGenerator\x0a\x09aGenerator accessorsForObject",
  4657. referencedClasses: [],
  4658. //>>excludeEnd("ide");
  4659. pragmas: [],
  4660. messageSends: ["accessorsForObject"]
  4661. }, function ($methodClass){ return function (aGenerator){
  4662. var self=this,$self=this;
  4663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4664. return $core.withContext(function($ctx1) {
  4665. //>>excludeEnd("ctx");
  4666. $recv(aGenerator)._accessorsForObject();
  4667. return self;
  4668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4669. }, function($ctx1) {$ctx1.fill(self,"accessorsSourceCodesWith:",{aGenerator:aGenerator})});
  4670. //>>excludeEnd("ctx");
  4671. }; }),
  4672. $globals.Object.a$cls);
  4673. $core.addMethod(
  4674. $core.method({
  4675. selector: "initialize",
  4676. protocol: "initialization",
  4677. //>>excludeStart("ide", pragmas.excludeIdeData);
  4678. args: [],
  4679. source: "initialize\x0a\x09\x22no op\x22",
  4680. referencedClasses: [],
  4681. //>>excludeEnd("ide");
  4682. pragmas: [],
  4683. messageSends: []
  4684. }, function ($methodClass){ return function (){
  4685. var self=this,$self=this;
  4686. return self;
  4687. }; }),
  4688. $globals.Object.a$cls);
  4689. $core.addMethod(
  4690. $core.method({
  4691. selector: "initializeProtocolWith:",
  4692. protocol: "helios",
  4693. //>>excludeStart("ide", pragmas.excludeIdeData);
  4694. args: ["aGenerator"],
  4695. source: "initializeProtocolWith: aGenerator\x0a\x09aGenerator initializeProtocolForObject",
  4696. referencedClasses: [],
  4697. //>>excludeEnd("ide");
  4698. pragmas: [],
  4699. messageSends: ["initializeProtocolForObject"]
  4700. }, function ($methodClass){ return function (aGenerator){
  4701. var self=this,$self=this;
  4702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4703. return $core.withContext(function($ctx1) {
  4704. //>>excludeEnd("ctx");
  4705. $recv(aGenerator)._initializeProtocolForObject();
  4706. return self;
  4707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4708. }, function($ctx1) {$ctx1.fill(self,"initializeProtocolWith:",{aGenerator:aGenerator})});
  4709. //>>excludeEnd("ctx");
  4710. }; }),
  4711. $globals.Object.a$cls);
  4712. $core.addMethod(
  4713. $core.method({
  4714. selector: "initializeSourceCodesWith:",
  4715. protocol: "helios",
  4716. //>>excludeStart("ide", pragmas.excludeIdeData);
  4717. args: ["aGenerator"],
  4718. source: "initializeSourceCodesWith: aGenerator\x0a\x09aGenerator initializeForObject",
  4719. referencedClasses: [],
  4720. //>>excludeEnd("ide");
  4721. pragmas: [],
  4722. messageSends: ["initializeForObject"]
  4723. }, function ($methodClass){ return function (aGenerator){
  4724. var self=this,$self=this;
  4725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4726. return $core.withContext(function($ctx1) {
  4727. //>>excludeEnd("ctx");
  4728. $recv(aGenerator)._initializeForObject();
  4729. return self;
  4730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4731. }, function($ctx1) {$ctx1.fill(self,"initializeSourceCodesWith:",{aGenerator:aGenerator})});
  4732. //>>excludeEnd("ctx");
  4733. }; }),
  4734. $globals.Object.a$cls);
  4735. $core.addClass("Boolean", $globals.Object, "Kernel-Objects");
  4736. //>>excludeStart("ide", pragmas.excludeIdeData);
  4737. $globals.Boolean.comment="I define the protocol for logic testing operations and conditional control structures for the logical values (see the `controlling` protocol).\x0a\x0aI have two instances, `true` and `false`.\x0a\x0aI am directly mapped to JavaScript Boolean. The `true` and `false` objects are the JavaScript boolean objects.\x0a\x0a## Usage Example:\x0a\x0a aBoolean not ifTrue: [ ... ] ifFalse: [ ... ]";
  4738. //>>excludeEnd("ide");
  4739. $core.addMethod(
  4740. $core.method({
  4741. selector: "&",
  4742. protocol: "controlling",
  4743. //>>excludeStart("ide", pragmas.excludeIdeData);
  4744. args: ["aBoolean"],
  4745. source: "& aBoolean\x0a\x09<inlineJS: '\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBoolean;\x0a\x09\x09} else {\x0a\x09\x09return false;\x0a\x09\x09}\x0a\x09'>",
  4746. referencedClasses: [],
  4747. //>>excludeEnd("ide");
  4748. pragmas: [["inlineJS:", ["\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBoolean;\x0a\x09\x09} else {\x0a\x09\x09return false;\x0a\x09\x09}\x0a\x09"]]],
  4749. messageSends: []
  4750. }, function ($methodClass){ return function (aBoolean){
  4751. var self=this,$self=this;
  4752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4753. return $core.withContext(function($ctx1) {
  4754. //>>excludeEnd("ctx");
  4755. if(self == true) {
  4756. return aBoolean;
  4757. } else {
  4758. return false;
  4759. }
  4760. ;
  4761. return self;
  4762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4763. }, function($ctx1) {$ctx1.fill(self,"&",{aBoolean:aBoolean})});
  4764. //>>excludeEnd("ctx");
  4765. }; }),
  4766. $globals.Boolean);
  4767. $core.addMethod(
  4768. $core.method({
  4769. selector: "==",
  4770. protocol: "comparing",
  4771. //>>excludeStart("ide", pragmas.excludeIdeData);
  4772. args: ["aBoolean"],
  4773. source: "== aBoolean\x0a<inlineJS: '\x0a\x09if (typeof aBoolean === \x22boolean\x22) return (self == true) === aBoolean;\x0a\x09else if (aBoolean != null && typeof aBoolean === \x22object\x22) return (self == true) === aBoolean.valueOf();\x0a\x09else return false;\x0a'>",
  4774. referencedClasses: [],
  4775. //>>excludeEnd("ide");
  4776. pragmas: [["inlineJS:", ["\x0a\x09if (typeof aBoolean === \x22boolean\x22) return (self == true) === aBoolean;\x0a\x09else if (aBoolean != null && typeof aBoolean === \x22object\x22) return (self == true) === aBoolean.valueOf();\x0a\x09else return false;"]]],
  4777. messageSends: []
  4778. }, function ($methodClass){ return function (aBoolean){
  4779. var self=this,$self=this;
  4780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4781. return $core.withContext(function($ctx1) {
  4782. //>>excludeEnd("ctx");
  4783. if (typeof aBoolean === "boolean") return (self == true) === aBoolean;
  4784. else if (aBoolean != null && typeof aBoolean === "object") return (self == true) === aBoolean.valueOf();
  4785. else return false;;
  4786. return self;
  4787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4788. }, function($ctx1) {$ctx1.fill(self,"==",{aBoolean:aBoolean})});
  4789. //>>excludeEnd("ctx");
  4790. }; }),
  4791. $globals.Boolean);
  4792. $core.addMethod(
  4793. $core.method({
  4794. selector: "and:",
  4795. protocol: "controlling",
  4796. //>>excludeStart("ide", pragmas.excludeIdeData);
  4797. args: ["aBlock"],
  4798. source: "and: aBlock\x0a\x09^ self\x0a\x09\x09ifTrue: \x22aBlock\x22 [ aBlock value ]\x0a\x09\x09ifFalse: [ false ]",
  4799. referencedClasses: [],
  4800. //>>excludeEnd("ide");
  4801. pragmas: [],
  4802. messageSends: ["ifTrue:ifFalse:", "value"]
  4803. }, function ($methodClass){ return function (aBlock){
  4804. var self=this,$self=this;
  4805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4806. return $core.withContext(function($ctx1) {
  4807. //>>excludeEnd("ctx");
  4808. if($core.assert(self)){
  4809. return $recv(aBlock)._value();
  4810. } else {
  4811. return false;
  4812. }
  4813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4814. }, function($ctx1) {$ctx1.fill(self,"and:",{aBlock:aBlock})});
  4815. //>>excludeEnd("ctx");
  4816. }; }),
  4817. $globals.Boolean);
  4818. $core.addMethod(
  4819. $core.method({
  4820. selector: "asBit",
  4821. protocol: "converting",
  4822. //>>excludeStart("ide", pragmas.excludeIdeData);
  4823. args: [],
  4824. source: "asBit\x0a\x09^ self ifTrue: [ 1 ] ifFalse: [ 0 ]",
  4825. referencedClasses: [],
  4826. //>>excludeEnd("ide");
  4827. pragmas: [],
  4828. messageSends: ["ifTrue:ifFalse:"]
  4829. }, function ($methodClass){ return function (){
  4830. var self=this,$self=this;
  4831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4832. return $core.withContext(function($ctx1) {
  4833. //>>excludeEnd("ctx");
  4834. if($core.assert(self)){
  4835. return (1);
  4836. } else {
  4837. return (0);
  4838. }
  4839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4840. }, function($ctx1) {$ctx1.fill(self,"asBit",{})});
  4841. //>>excludeEnd("ctx");
  4842. }; }),
  4843. $globals.Boolean);
  4844. $core.addMethod(
  4845. $core.method({
  4846. selector: "asJavaScriptObject",
  4847. protocol: "converting",
  4848. //>>excludeStart("ide", pragmas.excludeIdeData);
  4849. args: [],
  4850. source: "asJavaScriptObject\x0a\x09^ self",
  4851. referencedClasses: [],
  4852. //>>excludeEnd("ide");
  4853. pragmas: [],
  4854. messageSends: []
  4855. }, function ($methodClass){ return function (){
  4856. var self=this,$self=this;
  4857. return self;
  4858. }; }),
  4859. $globals.Boolean);
  4860. $core.addMethod(
  4861. $core.method({
  4862. selector: "asJavaScriptSource",
  4863. protocol: "converting",
  4864. //>>excludeStart("ide", pragmas.excludeIdeData);
  4865. args: [],
  4866. source: "asJavaScriptSource\x0a\x09^ self asString",
  4867. referencedClasses: [],
  4868. //>>excludeEnd("ide");
  4869. pragmas: [],
  4870. messageSends: ["asString"]
  4871. }, function ($methodClass){ return function (){
  4872. var self=this,$self=this;
  4873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4874. return $core.withContext(function($ctx1) {
  4875. //>>excludeEnd("ctx");
  4876. return $self._asString();
  4877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4878. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  4879. //>>excludeEnd("ctx");
  4880. }; }),
  4881. $globals.Boolean);
  4882. $core.addMethod(
  4883. $core.method({
  4884. selector: "asString",
  4885. protocol: "converting",
  4886. //>>excludeStart("ide", pragmas.excludeIdeData);
  4887. args: [],
  4888. source: "asString\x0a\x09<inlineJS: 'return self.toString()'>",
  4889. referencedClasses: [],
  4890. //>>excludeEnd("ide");
  4891. pragmas: [["inlineJS:", ["return self.toString()"]]],
  4892. messageSends: []
  4893. }, function ($methodClass){ return function (){
  4894. var self=this,$self=this;
  4895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4896. return $core.withContext(function($ctx1) {
  4897. //>>excludeEnd("ctx");
  4898. return self.toString();
  4899. return self;
  4900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4901. }, function($ctx1) {$ctx1.fill(self,"asString",{})});
  4902. //>>excludeEnd("ctx");
  4903. }; }),
  4904. $globals.Boolean);
  4905. $core.addMethod(
  4906. $core.method({
  4907. selector: "deepCopy",
  4908. protocol: "copying",
  4909. //>>excludeStart("ide", pragmas.excludeIdeData);
  4910. args: [],
  4911. source: "deepCopy\x0a\x09^ self",
  4912. referencedClasses: [],
  4913. //>>excludeEnd("ide");
  4914. pragmas: [],
  4915. messageSends: []
  4916. }, function ($methodClass){ return function (){
  4917. var self=this,$self=this;
  4918. return self;
  4919. }; }),
  4920. $globals.Boolean);
  4921. $core.addMethod(
  4922. $core.method({
  4923. selector: "ifFalse:",
  4924. protocol: "controlling",
  4925. //>>excludeStart("ide", pragmas.excludeIdeData);
  4926. args: ["aBlock"],
  4927. source: "ifFalse: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: [] ifFalse: aBlock",
  4928. referencedClasses: [],
  4929. //>>excludeEnd("ide");
  4930. pragmas: [],
  4931. messageSends: ["ifTrue:ifFalse:"]
  4932. }, function ($methodClass){ return function (aBlock){
  4933. var self=this,$self=this;
  4934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4935. return $core.withContext(function($ctx1) {
  4936. //>>excludeEnd("ctx");
  4937. return $self._ifTrue_ifFalse_((function(){
  4938. }),aBlock);
  4939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4940. }, function($ctx1) {$ctx1.fill(self,"ifFalse:",{aBlock:aBlock})});
  4941. //>>excludeEnd("ctx");
  4942. }; }),
  4943. $globals.Boolean);
  4944. $core.addMethod(
  4945. $core.method({
  4946. selector: "ifFalse:ifTrue:",
  4947. protocol: "controlling",
  4948. //>>excludeStart("ide", pragmas.excludeIdeData);
  4949. args: ["aBlock", "anotherBlock"],
  4950. source: "ifFalse: aBlock ifTrue: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: anotherBlock ifFalse: aBlock",
  4951. referencedClasses: [],
  4952. //>>excludeEnd("ide");
  4953. pragmas: [],
  4954. messageSends: ["ifTrue:ifFalse:"]
  4955. }, function ($methodClass){ return function (aBlock,anotherBlock){
  4956. var self=this,$self=this;
  4957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4958. return $core.withContext(function($ctx1) {
  4959. //>>excludeEnd("ctx");
  4960. return $self._ifTrue_ifFalse_(anotherBlock,aBlock);
  4961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4962. }, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  4963. //>>excludeEnd("ctx");
  4964. }; }),
  4965. $globals.Boolean);
  4966. $core.addMethod(
  4967. $core.method({
  4968. selector: "ifTrue:",
  4969. protocol: "controlling",
  4970. //>>excludeStart("ide", pragmas.excludeIdeData);
  4971. args: ["aBlock"],
  4972. source: "ifTrue: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: aBlock ifFalse: []",
  4973. referencedClasses: [],
  4974. //>>excludeEnd("ide");
  4975. pragmas: [],
  4976. messageSends: ["ifTrue:ifFalse:"]
  4977. }, function ($methodClass){ return function (aBlock){
  4978. var self=this,$self=this;
  4979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4980. return $core.withContext(function($ctx1) {
  4981. //>>excludeEnd("ctx");
  4982. return $self._ifTrue_ifFalse_(aBlock,(function(){
  4983. }));
  4984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4985. }, function($ctx1) {$ctx1.fill(self,"ifTrue:",{aBlock:aBlock})});
  4986. //>>excludeEnd("ctx");
  4987. }; }),
  4988. $globals.Boolean);
  4989. $core.addMethod(
  4990. $core.method({
  4991. selector: "ifTrue:ifFalse:",
  4992. protocol: "controlling",
  4993. //>>excludeStart("ide", pragmas.excludeIdeData);
  4994. args: ["aBlock", "anotherBlock"],
  4995. source: "ifTrue: aBlock ifFalse: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<inlineJS: '\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBlock._value();\x0a\x09\x09} else {\x0a\x09\x09return anotherBlock._value();\x0a\x09\x09}\x0a\x09'>",
  4996. referencedClasses: [],
  4997. //>>excludeEnd("ide");
  4998. pragmas: [["inlineJS:", ["\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBlock._value();\x0a\x09\x09} else {\x0a\x09\x09return anotherBlock._value();\x0a\x09\x09}\x0a\x09"]]],
  4999. messageSends: []
  5000. }, function ($methodClass){ return function (aBlock,anotherBlock){
  5001. var self=this,$self=this;
  5002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5003. return $core.withContext(function($ctx1) {
  5004. //>>excludeEnd("ctx");
  5005. if(self == true) {
  5006. return aBlock._value();
  5007. } else {
  5008. return anotherBlock._value();
  5009. }
  5010. ;
  5011. return self;
  5012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5013. }, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  5014. //>>excludeEnd("ctx");
  5015. }; }),
  5016. $globals.Boolean);
  5017. $core.addMethod(
  5018. $core.method({
  5019. selector: "isBoolean",
  5020. protocol: "testing",
  5021. //>>excludeStart("ide", pragmas.excludeIdeData);
  5022. args: [],
  5023. source: "isBoolean\x0a\x09^ true",
  5024. referencedClasses: [],
  5025. //>>excludeEnd("ide");
  5026. pragmas: [],
  5027. messageSends: []
  5028. }, function ($methodClass){ return function (){
  5029. var self=this,$self=this;
  5030. return true;
  5031. }; }),
  5032. $globals.Boolean);
  5033. $core.addMethod(
  5034. $core.method({
  5035. selector: "isImmutable",
  5036. protocol: "testing",
  5037. //>>excludeStart("ide", pragmas.excludeIdeData);
  5038. args: [],
  5039. source: "isImmutable\x0a\x09^ true",
  5040. referencedClasses: [],
  5041. //>>excludeEnd("ide");
  5042. pragmas: [],
  5043. messageSends: []
  5044. }, function ($methodClass){ return function (){
  5045. var self=this,$self=this;
  5046. return true;
  5047. }; }),
  5048. $globals.Boolean);
  5049. $core.addMethod(
  5050. $core.method({
  5051. selector: "not",
  5052. protocol: "controlling",
  5053. //>>excludeStart("ide", pragmas.excludeIdeData);
  5054. args: [],
  5055. source: "not\x0a\x09^ self = false",
  5056. referencedClasses: [],
  5057. //>>excludeEnd("ide");
  5058. pragmas: [],
  5059. messageSends: ["="]
  5060. }, function ($methodClass){ return function (){
  5061. var self=this,$self=this;
  5062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5063. return $core.withContext(function($ctx1) {
  5064. //>>excludeEnd("ctx");
  5065. return $self.__eq(false);
  5066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5067. }, function($ctx1) {$ctx1.fill(self,"not",{})});
  5068. //>>excludeEnd("ctx");
  5069. }; }),
  5070. $globals.Boolean);
  5071. $core.addMethod(
  5072. $core.method({
  5073. selector: "or:",
  5074. protocol: "controlling",
  5075. //>>excludeStart("ide", pragmas.excludeIdeData);
  5076. args: ["aBlock"],
  5077. source: "or: aBlock\x0a\x09^ self\x0a\x09\x09ifTrue: [ true ]\x0a\x09\x09ifFalse: \x22aBlock\x22 [ aBlock value ]",
  5078. referencedClasses: [],
  5079. //>>excludeEnd("ide");
  5080. pragmas: [],
  5081. messageSends: ["ifTrue:ifFalse:", "value"]
  5082. }, function ($methodClass){ return function (aBlock){
  5083. var self=this,$self=this;
  5084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5085. return $core.withContext(function($ctx1) {
  5086. //>>excludeEnd("ctx");
  5087. if($core.assert(self)){
  5088. return true;
  5089. } else {
  5090. return $recv(aBlock)._value();
  5091. }
  5092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5093. }, function($ctx1) {$ctx1.fill(self,"or:",{aBlock:aBlock})});
  5094. //>>excludeEnd("ctx");
  5095. }; }),
  5096. $globals.Boolean);
  5097. $core.addMethod(
  5098. $core.method({
  5099. selector: "printOn:",
  5100. protocol: "printing",
  5101. //>>excludeStart("ide", pragmas.excludeIdeData);
  5102. args: ["aStream"],
  5103. source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
  5104. referencedClasses: [],
  5105. //>>excludeEnd("ide");
  5106. pragmas: [],
  5107. messageSends: ["nextPutAll:", "asString"]
  5108. }, function ($methodClass){ return function (aStream){
  5109. var self=this,$self=this;
  5110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5111. return $core.withContext(function($ctx1) {
  5112. //>>excludeEnd("ctx");
  5113. $recv(aStream)._nextPutAll_($self._asString());
  5114. return self;
  5115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5116. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  5117. //>>excludeEnd("ctx");
  5118. }; }),
  5119. $globals.Boolean);
  5120. $core.addMethod(
  5121. $core.method({
  5122. selector: "shallowCopy",
  5123. protocol: "copying",
  5124. //>>excludeStart("ide", pragmas.excludeIdeData);
  5125. args: [],
  5126. source: "shallowCopy\x0a\x09^ self",
  5127. referencedClasses: [],
  5128. //>>excludeEnd("ide");
  5129. pragmas: [],
  5130. messageSends: []
  5131. }, function ($methodClass){ return function (){
  5132. var self=this,$self=this;
  5133. return self;
  5134. }; }),
  5135. $globals.Boolean);
  5136. $core.addMethod(
  5137. $core.method({
  5138. selector: "|",
  5139. protocol: "controlling",
  5140. //>>excludeStart("ide", pragmas.excludeIdeData);
  5141. args: ["aBoolean"],
  5142. source: "| aBoolean\x0a\x09<inlineJS: '\x0a\x09\x09if(self == true) {\x0a\x09\x09return true;\x0a\x09\x09} else {\x0a\x09\x09return aBoolean;\x0a\x09\x09}\x0a\x09'>",
  5143. referencedClasses: [],
  5144. //>>excludeEnd("ide");
  5145. pragmas: [["inlineJS:", ["\x0a\x09\x09if(self == true) {\x0a\x09\x09return true;\x0a\x09\x09} else {\x0a\x09\x09return aBoolean;\x0a\x09\x09}\x0a\x09"]]],
  5146. messageSends: []
  5147. }, function ($methodClass){ return function (aBoolean){
  5148. var self=this,$self=this;
  5149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5150. return $core.withContext(function($ctx1) {
  5151. //>>excludeEnd("ctx");
  5152. if(self == true) {
  5153. return true;
  5154. } else {
  5155. return aBoolean;
  5156. }
  5157. ;
  5158. return self;
  5159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5160. }, function($ctx1) {$ctx1.fill(self,"|",{aBoolean:aBoolean})});
  5161. //>>excludeEnd("ctx");
  5162. }; }),
  5163. $globals.Boolean);
  5164. $core.addClass("Date", $globals.Object, "Kernel-Objects");
  5165. //>>excludeStart("ide", pragmas.excludeIdeData);
  5166. $globals.Date.comment="I am used to work with both dates and times. Therefore `Date today` and `Date now` are both valid in\x0aAmber and answer the same date object.\x0a\x0aDate directly maps to the `Date()` JavaScript constructor, and Amber date objects are JavaScript date objects.\x0a\x0a## API\x0a\x0aThe class-side `instance creation` protocol contains some convenience methods for creating date/time objects such as `#fromSeconds:`.\x0a\x0aArithmetic and comparison is supported (see the `comparing` and `arithmetic` protocols).\x0a\x0aThe `converting` protocol provides convenience methods for various convertions (to numbers, strings, etc.).";
  5167. //>>excludeEnd("ide");
  5168. $core.addMethod(
  5169. $core.method({
  5170. selector: "+",
  5171. protocol: "arithmetic",
  5172. //>>excludeStart("ide", pragmas.excludeIdeData);
  5173. args: ["aNumber"],
  5174. source: "+ aNumber\x0a\x09<inlineJS: 'return new Date($self.getTime() + aNumber)'>",
  5175. referencedClasses: [],
  5176. //>>excludeEnd("ide");
  5177. pragmas: [["inlineJS:", ["return new Date($self.getTime() + aNumber)"]]],
  5178. messageSends: []
  5179. }, function ($methodClass){ return function (aNumber){
  5180. var self=this,$self=this;
  5181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5182. return $core.withContext(function($ctx1) {
  5183. //>>excludeEnd("ctx");
  5184. return new Date($self.getTime() + aNumber);
  5185. return self;
  5186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5187. }, function($ctx1) {$ctx1.fill(self,"+",{aNumber:aNumber})});
  5188. //>>excludeEnd("ctx");
  5189. }; }),
  5190. $globals.Date);
  5191. $core.addMethod(
  5192. $core.method({
  5193. selector: "-",
  5194. protocol: "arithmetic",
  5195. //>>excludeStart("ide", pragmas.excludeIdeData);
  5196. args: ["aDate"],
  5197. source: "- aDate\x0a\x09<inlineJS: 'return self - aDate'>",
  5198. referencedClasses: [],
  5199. //>>excludeEnd("ide");
  5200. pragmas: [["inlineJS:", ["return self - aDate"]]],
  5201. messageSends: []
  5202. }, function ($methodClass){ return function (aDate){
  5203. var self=this,$self=this;
  5204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5205. return $core.withContext(function($ctx1) {
  5206. //>>excludeEnd("ctx");
  5207. return self - aDate;
  5208. return self;
  5209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5210. }, function($ctx1) {$ctx1.fill(self,"-",{aDate:aDate})});
  5211. //>>excludeEnd("ctx");
  5212. }; }),
  5213. $globals.Date);
  5214. $core.addMethod(
  5215. $core.method({
  5216. selector: "<",
  5217. protocol: "comparing",
  5218. //>>excludeStart("ide", pragmas.excludeIdeData);
  5219. args: ["aDate"],
  5220. source: "< aDate\x0a\x09<inlineJS: 'return self < aDate'>",
  5221. referencedClasses: [],
  5222. //>>excludeEnd("ide");
  5223. pragmas: [["inlineJS:", ["return self < aDate"]]],
  5224. messageSends: []
  5225. }, function ($methodClass){ return function (aDate){
  5226. var self=this,$self=this;
  5227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5228. return $core.withContext(function($ctx1) {
  5229. //>>excludeEnd("ctx");
  5230. return self < aDate;
  5231. return self;
  5232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5233. }, function($ctx1) {$ctx1.fill(self,"<",{aDate:aDate})});
  5234. //>>excludeEnd("ctx");
  5235. }; }),
  5236. $globals.Date);
  5237. $core.addMethod(
  5238. $core.method({
  5239. selector: "<=",
  5240. protocol: "comparing",
  5241. //>>excludeStart("ide", pragmas.excludeIdeData);
  5242. args: ["aDate"],
  5243. source: "<= aDate\x0a\x09<inlineJS: 'return self <= aDate'>",
  5244. referencedClasses: [],
  5245. //>>excludeEnd("ide");
  5246. pragmas: [["inlineJS:", ["return self <= aDate"]]],
  5247. messageSends: []
  5248. }, function ($methodClass){ return function (aDate){
  5249. var self=this,$self=this;
  5250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5251. return $core.withContext(function($ctx1) {
  5252. //>>excludeEnd("ctx");
  5253. return self <= aDate;
  5254. return self;
  5255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5256. }, function($ctx1) {$ctx1.fill(self,"<=",{aDate:aDate})});
  5257. //>>excludeEnd("ctx");
  5258. }; }),
  5259. $globals.Date);
  5260. $core.addMethod(
  5261. $core.method({
  5262. selector: "=",
  5263. protocol: "comparing",
  5264. //>>excludeStart("ide", pragmas.excludeIdeData);
  5265. args: ["aDate"],
  5266. source: "= aDate\x0a\x09^ (aDate class == self class) and: [ self asMilliseconds == aDate asMilliseconds ]",
  5267. referencedClasses: [],
  5268. //>>excludeEnd("ide");
  5269. pragmas: [],
  5270. messageSends: ["and:", "==", "class", "asMilliseconds"]
  5271. }, function ($methodClass){ return function (aDate){
  5272. var self=this,$self=this;
  5273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5274. return $core.withContext(function($ctx1) {
  5275. //>>excludeEnd("ctx");
  5276. if($core.assert([$recv([$recv(aDate)._class()
  5277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5278. ,$ctx1.sendIdx["class"]=1
  5279. //>>excludeEnd("ctx");
  5280. ][0]).__eq_eq($self._class())
  5281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5282. ,$ctx1.sendIdx["=="]=1
  5283. //>>excludeEnd("ctx");
  5284. ][0])){
  5285. return $recv([$self._asMilliseconds()
  5286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5287. ,$ctx1.sendIdx["asMilliseconds"]=1
  5288. //>>excludeEnd("ctx");
  5289. ][0]).__eq_eq($recv(aDate)._asMilliseconds());
  5290. } else {
  5291. return false;
  5292. }
  5293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5294. }, function($ctx1) {$ctx1.fill(self,"=",{aDate:aDate})});
  5295. //>>excludeEnd("ctx");
  5296. }; }),
  5297. $globals.Date);
  5298. $core.addMethod(
  5299. $core.method({
  5300. selector: ">",
  5301. protocol: "comparing",
  5302. //>>excludeStart("ide", pragmas.excludeIdeData);
  5303. args: ["aDate"],
  5304. source: "> aDate\x0a\x09<inlineJS: 'return self > aDate'>",
  5305. referencedClasses: [],
  5306. //>>excludeEnd("ide");
  5307. pragmas: [["inlineJS:", ["return self > aDate"]]],
  5308. messageSends: []
  5309. }, function ($methodClass){ return function (aDate){
  5310. var self=this,$self=this;
  5311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5312. return $core.withContext(function($ctx1) {
  5313. //>>excludeEnd("ctx");
  5314. return self > aDate;
  5315. return self;
  5316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5317. }, function($ctx1) {$ctx1.fill(self,">",{aDate:aDate})});
  5318. //>>excludeEnd("ctx");
  5319. }; }),
  5320. $globals.Date);
  5321. $core.addMethod(
  5322. $core.method({
  5323. selector: ">=",
  5324. protocol: "comparing",
  5325. //>>excludeStart("ide", pragmas.excludeIdeData);
  5326. args: ["aDate"],
  5327. source: ">= aDate\x0a\x09<inlineJS: 'return self >= aDate'>",
  5328. referencedClasses: [],
  5329. //>>excludeEnd("ide");
  5330. pragmas: [["inlineJS:", ["return self >= aDate"]]],
  5331. messageSends: []
  5332. }, function ($methodClass){ return function (aDate){
  5333. var self=this,$self=this;
  5334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5335. return $core.withContext(function($ctx1) {
  5336. //>>excludeEnd("ctx");
  5337. return self >= aDate;
  5338. return self;
  5339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5340. }, function($ctx1) {$ctx1.fill(self,">=",{aDate:aDate})});
  5341. //>>excludeEnd("ctx");
  5342. }; }),
  5343. $globals.Date);
  5344. $core.addMethod(
  5345. $core.method({
  5346. selector: "asDateString",
  5347. protocol: "converting",
  5348. //>>excludeStart("ide", pragmas.excludeIdeData);
  5349. args: [],
  5350. source: "asDateString\x0a\x09<inlineJS: 'return self.toDateString()'>",
  5351. referencedClasses: [],
  5352. //>>excludeEnd("ide");
  5353. pragmas: [["inlineJS:", ["return self.toDateString()"]]],
  5354. messageSends: []
  5355. }, function ($methodClass){ return function (){
  5356. var self=this,$self=this;
  5357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5358. return $core.withContext(function($ctx1) {
  5359. //>>excludeEnd("ctx");
  5360. return self.toDateString();
  5361. return self;
  5362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5363. }, function($ctx1) {$ctx1.fill(self,"asDateString",{})});
  5364. //>>excludeEnd("ctx");
  5365. }; }),
  5366. $globals.Date);
  5367. $core.addMethod(
  5368. $core.method({
  5369. selector: "asLocaleString",
  5370. protocol: "converting",
  5371. //>>excludeStart("ide", pragmas.excludeIdeData);
  5372. args: [],
  5373. source: "asLocaleString\x0a\x09<inlineJS: 'return self.toLocaleString()'>",
  5374. referencedClasses: [],
  5375. //>>excludeEnd("ide");
  5376. pragmas: [["inlineJS:", ["return self.toLocaleString()"]]],
  5377. messageSends: []
  5378. }, function ($methodClass){ return function (){
  5379. var self=this,$self=this;
  5380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5381. return $core.withContext(function($ctx1) {
  5382. //>>excludeEnd("ctx");
  5383. return self.toLocaleString();
  5384. return self;
  5385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5386. }, function($ctx1) {$ctx1.fill(self,"asLocaleString",{})});
  5387. //>>excludeEnd("ctx");
  5388. }; }),
  5389. $globals.Date);
  5390. $core.addMethod(
  5391. $core.method({
  5392. selector: "asMilliseconds",
  5393. protocol: "converting",
  5394. //>>excludeStart("ide", pragmas.excludeIdeData);
  5395. args: [],
  5396. source: "asMilliseconds\x0a\x09^ self time",
  5397. referencedClasses: [],
  5398. //>>excludeEnd("ide");
  5399. pragmas: [],
  5400. messageSends: ["time"]
  5401. }, function ($methodClass){ return function (){
  5402. var self=this,$self=this;
  5403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5404. return $core.withContext(function($ctx1) {
  5405. //>>excludeEnd("ctx");
  5406. return $self._time();
  5407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5408. }, function($ctx1) {$ctx1.fill(self,"asMilliseconds",{})});
  5409. //>>excludeEnd("ctx");
  5410. }; }),
  5411. $globals.Date);
  5412. $core.addMethod(
  5413. $core.method({
  5414. selector: "asNumber",
  5415. protocol: "converting",
  5416. //>>excludeStart("ide", pragmas.excludeIdeData);
  5417. args: [],
  5418. source: "asNumber\x0a\x09^ self asMilliseconds",
  5419. referencedClasses: [],
  5420. //>>excludeEnd("ide");
  5421. pragmas: [],
  5422. messageSends: ["asMilliseconds"]
  5423. }, function ($methodClass){ return function (){
  5424. var self=this,$self=this;
  5425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5426. return $core.withContext(function($ctx1) {
  5427. //>>excludeEnd("ctx");
  5428. return $self._asMilliseconds();
  5429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5430. }, function($ctx1) {$ctx1.fill(self,"asNumber",{})});
  5431. //>>excludeEnd("ctx");
  5432. }; }),
  5433. $globals.Date);
  5434. $core.addMethod(
  5435. $core.method({
  5436. selector: "asString",
  5437. protocol: "converting",
  5438. //>>excludeStart("ide", pragmas.excludeIdeData);
  5439. args: [],
  5440. source: "asString\x0a\x09<inlineJS: 'return self.toString()'>",
  5441. referencedClasses: [],
  5442. //>>excludeEnd("ide");
  5443. pragmas: [["inlineJS:", ["return self.toString()"]]],
  5444. messageSends: []
  5445. }, function ($methodClass){ return function (){
  5446. var self=this,$self=this;
  5447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5448. return $core.withContext(function($ctx1) {
  5449. //>>excludeEnd("ctx");
  5450. return self.toString();
  5451. return self;
  5452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5453. }, function($ctx1) {$ctx1.fill(self,"asString",{})});
  5454. //>>excludeEnd("ctx");
  5455. }; }),
  5456. $globals.Date);
  5457. $core.addMethod(
  5458. $core.method({
  5459. selector: "asTimeString",
  5460. protocol: "converting",
  5461. //>>excludeStart("ide", pragmas.excludeIdeData);
  5462. args: [],
  5463. source: "asTimeString\x0a\x09<inlineJS: 'return self.toTimeString()'>",
  5464. referencedClasses: [],
  5465. //>>excludeEnd("ide");
  5466. pragmas: [["inlineJS:", ["return self.toTimeString()"]]],
  5467. messageSends: []
  5468. }, function ($methodClass){ return function (){
  5469. var self=this,$self=this;
  5470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5471. return $core.withContext(function($ctx1) {
  5472. //>>excludeEnd("ctx");
  5473. return self.toTimeString();
  5474. return self;
  5475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5476. }, function($ctx1) {$ctx1.fill(self,"asTimeString",{})});
  5477. //>>excludeEnd("ctx");
  5478. }; }),
  5479. $globals.Date);
  5480. $core.addMethod(
  5481. $core.method({
  5482. selector: "day",
  5483. protocol: "accessing",
  5484. //>>excludeStart("ide", pragmas.excludeIdeData);
  5485. args: [],
  5486. source: "day\x0a\x09^ self dayOfWeek",
  5487. referencedClasses: [],
  5488. //>>excludeEnd("ide");
  5489. pragmas: [],
  5490. messageSends: ["dayOfWeek"]
  5491. }, function ($methodClass){ return function (){
  5492. var self=this,$self=this;
  5493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5494. return $core.withContext(function($ctx1) {
  5495. //>>excludeEnd("ctx");
  5496. return $self._dayOfWeek();
  5497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5498. }, function($ctx1) {$ctx1.fill(self,"day",{})});
  5499. //>>excludeEnd("ctx");
  5500. }; }),
  5501. $globals.Date);
  5502. $core.addMethod(
  5503. $core.method({
  5504. selector: "day:",
  5505. protocol: "accessing",
  5506. //>>excludeStart("ide", pragmas.excludeIdeData);
  5507. args: ["aNumber"],
  5508. source: "day: aNumber\x0a\x09self dayOfWeek: aNumber",
  5509. referencedClasses: [],
  5510. //>>excludeEnd("ide");
  5511. pragmas: [],
  5512. messageSends: ["dayOfWeek:"]
  5513. }, function ($methodClass){ return function (aNumber){
  5514. var self=this,$self=this;
  5515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5516. return $core.withContext(function($ctx1) {
  5517. //>>excludeEnd("ctx");
  5518. $self._dayOfWeek_(aNumber);
  5519. return self;
  5520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5521. }, function($ctx1) {$ctx1.fill(self,"day:",{aNumber:aNumber})});
  5522. //>>excludeEnd("ctx");
  5523. }; }),
  5524. $globals.Date);
  5525. $core.addMethod(
  5526. $core.method({
  5527. selector: "dayOfMonth",
  5528. protocol: "accessing",
  5529. //>>excludeStart("ide", pragmas.excludeIdeData);
  5530. args: [],
  5531. source: "dayOfMonth\x0a\x09<inlineJS: 'return self.getDate()'>",
  5532. referencedClasses: [],
  5533. //>>excludeEnd("ide");
  5534. pragmas: [["inlineJS:", ["return self.getDate()"]]],
  5535. messageSends: []
  5536. }, function ($methodClass){ return function (){
  5537. var self=this,$self=this;
  5538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5539. return $core.withContext(function($ctx1) {
  5540. //>>excludeEnd("ctx");
  5541. return self.getDate();
  5542. return self;
  5543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5544. }, function($ctx1) {$ctx1.fill(self,"dayOfMonth",{})});
  5545. //>>excludeEnd("ctx");
  5546. }; }),
  5547. $globals.Date);
  5548. $core.addMethod(
  5549. $core.method({
  5550. selector: "dayOfMonth:",
  5551. protocol: "accessing",
  5552. //>>excludeStart("ide", pragmas.excludeIdeData);
  5553. args: ["aNumber"],
  5554. source: "dayOfMonth: aNumber\x0a\x09<inlineJS: 'self.setDate(aNumber)'>",
  5555. referencedClasses: [],
  5556. //>>excludeEnd("ide");
  5557. pragmas: [["inlineJS:", ["self.setDate(aNumber)"]]],
  5558. messageSends: []
  5559. }, function ($methodClass){ return function (aNumber){
  5560. var self=this,$self=this;
  5561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5562. return $core.withContext(function($ctx1) {
  5563. //>>excludeEnd("ctx");
  5564. self.setDate(aNumber);
  5565. return self;
  5566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5567. }, function($ctx1) {$ctx1.fill(self,"dayOfMonth:",{aNumber:aNumber})});
  5568. //>>excludeEnd("ctx");
  5569. }; }),
  5570. $globals.Date);
  5571. $core.addMethod(
  5572. $core.method({
  5573. selector: "dayOfWeek",
  5574. protocol: "accessing",
  5575. //>>excludeStart("ide", pragmas.excludeIdeData);
  5576. args: [],
  5577. source: "dayOfWeek\x0a\x09<inlineJS: 'return self.getDay() + 1'>",
  5578. referencedClasses: [],
  5579. //>>excludeEnd("ide");
  5580. pragmas: [["inlineJS:", ["return self.getDay() + 1"]]],
  5581. messageSends: []
  5582. }, function ($methodClass){ return function (){
  5583. var self=this,$self=this;
  5584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5585. return $core.withContext(function($ctx1) {
  5586. //>>excludeEnd("ctx");
  5587. return self.getDay() + 1;
  5588. return self;
  5589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5590. }, function($ctx1) {$ctx1.fill(self,"dayOfWeek",{})});
  5591. //>>excludeEnd("ctx");
  5592. }; }),
  5593. $globals.Date);
  5594. $core.addMethod(
  5595. $core.method({
  5596. selector: "dayOfWeek:",
  5597. protocol: "accessing",
  5598. //>>excludeStart("ide", pragmas.excludeIdeData);
  5599. args: ["aNumber"],
  5600. source: "dayOfWeek: aNumber\x0a\x09<inlineJS: 'return self.setDay(aNumber - 1)'>",
  5601. referencedClasses: [],
  5602. //>>excludeEnd("ide");
  5603. pragmas: [["inlineJS:", ["return self.setDay(aNumber - 1)"]]],
  5604. messageSends: []
  5605. }, function ($methodClass){ return function (aNumber){
  5606. var self=this,$self=this;
  5607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5608. return $core.withContext(function($ctx1) {
  5609. //>>excludeEnd("ctx");
  5610. return self.setDay(aNumber - 1);
  5611. return self;
  5612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5613. }, function($ctx1) {$ctx1.fill(self,"dayOfWeek:",{aNumber:aNumber})});
  5614. //>>excludeEnd("ctx");
  5615. }; }),
  5616. $globals.Date);
  5617. $core.addMethod(
  5618. $core.method({
  5619. selector: "hours",
  5620. protocol: "accessing",
  5621. //>>excludeStart("ide", pragmas.excludeIdeData);
  5622. args: [],
  5623. source: "hours\x0a\x09<inlineJS: 'return self.getHours()'>",
  5624. referencedClasses: [],
  5625. //>>excludeEnd("ide");
  5626. pragmas: [["inlineJS:", ["return self.getHours()"]]],
  5627. messageSends: []
  5628. }, function ($methodClass){ return function (){
  5629. var self=this,$self=this;
  5630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5631. return $core.withContext(function($ctx1) {
  5632. //>>excludeEnd("ctx");
  5633. return self.getHours();
  5634. return self;
  5635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5636. }, function($ctx1) {$ctx1.fill(self,"hours",{})});
  5637. //>>excludeEnd("ctx");
  5638. }; }),
  5639. $globals.Date);
  5640. $core.addMethod(
  5641. $core.method({
  5642. selector: "hours:",
  5643. protocol: "accessing",
  5644. //>>excludeStart("ide", pragmas.excludeIdeData);
  5645. args: ["aNumber"],
  5646. source: "hours: aNumber\x0a\x09<inlineJS: 'self.setHours(aNumber)'>",
  5647. referencedClasses: [],
  5648. //>>excludeEnd("ide");
  5649. pragmas: [["inlineJS:", ["self.setHours(aNumber)"]]],
  5650. messageSends: []
  5651. }, function ($methodClass){ return function (aNumber){
  5652. var self=this,$self=this;
  5653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5654. return $core.withContext(function($ctx1) {
  5655. //>>excludeEnd("ctx");
  5656. self.setHours(aNumber);
  5657. return self;
  5658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5659. }, function($ctx1) {$ctx1.fill(self,"hours:",{aNumber:aNumber})});
  5660. //>>excludeEnd("ctx");
  5661. }; }),
  5662. $globals.Date);
  5663. $core.addMethod(
  5664. $core.method({
  5665. selector: "milliseconds",
  5666. protocol: "accessing",
  5667. //>>excludeStart("ide", pragmas.excludeIdeData);
  5668. args: [],
  5669. source: "milliseconds\x0a\x09<inlineJS: 'return self.getMilliseconds()'>",
  5670. referencedClasses: [],
  5671. //>>excludeEnd("ide");
  5672. pragmas: [["inlineJS:", ["return self.getMilliseconds()"]]],
  5673. messageSends: []
  5674. }, function ($methodClass){ return function (){
  5675. var self=this,$self=this;
  5676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5677. return $core.withContext(function($ctx1) {
  5678. //>>excludeEnd("ctx");
  5679. return self.getMilliseconds();
  5680. return self;
  5681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5682. }, function($ctx1) {$ctx1.fill(self,"milliseconds",{})});
  5683. //>>excludeEnd("ctx");
  5684. }; }),
  5685. $globals.Date);
  5686. $core.addMethod(
  5687. $core.method({
  5688. selector: "milliseconds:",
  5689. protocol: "accessing",
  5690. //>>excludeStart("ide", pragmas.excludeIdeData);
  5691. args: ["aNumber"],
  5692. source: "milliseconds: aNumber\x0a\x09<inlineJS: 'self.setMilliseconds(aNumber)'>",
  5693. referencedClasses: [],
  5694. //>>excludeEnd("ide");
  5695. pragmas: [["inlineJS:", ["self.setMilliseconds(aNumber)"]]],
  5696. messageSends: []
  5697. }, function ($methodClass){ return function (aNumber){
  5698. var self=this,$self=this;
  5699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5700. return $core.withContext(function($ctx1) {
  5701. //>>excludeEnd("ctx");
  5702. self.setMilliseconds(aNumber);
  5703. return self;
  5704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5705. }, function($ctx1) {$ctx1.fill(self,"milliseconds:",{aNumber:aNumber})});
  5706. //>>excludeEnd("ctx");
  5707. }; }),
  5708. $globals.Date);
  5709. $core.addMethod(
  5710. $core.method({
  5711. selector: "minutes",
  5712. protocol: "accessing",
  5713. //>>excludeStart("ide", pragmas.excludeIdeData);
  5714. args: [],
  5715. source: "minutes\x0a\x09<inlineJS: 'return self.getMinutes()'>",
  5716. referencedClasses: [],
  5717. //>>excludeEnd("ide");
  5718. pragmas: [["inlineJS:", ["return self.getMinutes()"]]],
  5719. messageSends: []
  5720. }, function ($methodClass){ return function (){
  5721. var self=this,$self=this;
  5722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5723. return $core.withContext(function($ctx1) {
  5724. //>>excludeEnd("ctx");
  5725. return self.getMinutes();
  5726. return self;
  5727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5728. }, function($ctx1) {$ctx1.fill(self,"minutes",{})});
  5729. //>>excludeEnd("ctx");
  5730. }; }),
  5731. $globals.Date);
  5732. $core.addMethod(
  5733. $core.method({
  5734. selector: "minutes:",
  5735. protocol: "accessing",
  5736. //>>excludeStart("ide", pragmas.excludeIdeData);
  5737. args: ["aNumber"],
  5738. source: "minutes: aNumber\x0a\x09<inlineJS: 'self.setMinutes(aNumber)'>",
  5739. referencedClasses: [],
  5740. //>>excludeEnd("ide");
  5741. pragmas: [["inlineJS:", ["self.setMinutes(aNumber)"]]],
  5742. messageSends: []
  5743. }, function ($methodClass){ return function (aNumber){
  5744. var self=this,$self=this;
  5745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5746. return $core.withContext(function($ctx1) {
  5747. //>>excludeEnd("ctx");
  5748. self.setMinutes(aNumber);
  5749. return self;
  5750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5751. }, function($ctx1) {$ctx1.fill(self,"minutes:",{aNumber:aNumber})});
  5752. //>>excludeEnd("ctx");
  5753. }; }),
  5754. $globals.Date);
  5755. $core.addMethod(
  5756. $core.method({
  5757. selector: "month",
  5758. protocol: "accessing",
  5759. //>>excludeStart("ide", pragmas.excludeIdeData);
  5760. args: [],
  5761. source: "month\x0a\x09<inlineJS: 'return self.getMonth() + 1'>",
  5762. referencedClasses: [],
  5763. //>>excludeEnd("ide");
  5764. pragmas: [["inlineJS:", ["return self.getMonth() + 1"]]],
  5765. messageSends: []
  5766. }, function ($methodClass){ return function (){
  5767. var self=this,$self=this;
  5768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5769. return $core.withContext(function($ctx1) {
  5770. //>>excludeEnd("ctx");
  5771. return self.getMonth() + 1;
  5772. return self;
  5773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5774. }, function($ctx1) {$ctx1.fill(self,"month",{})});
  5775. //>>excludeEnd("ctx");
  5776. }; }),
  5777. $globals.Date);
  5778. $core.addMethod(
  5779. $core.method({
  5780. selector: "month:",
  5781. protocol: "accessing",
  5782. //>>excludeStart("ide", pragmas.excludeIdeData);
  5783. args: ["aNumber"],
  5784. source: "month: aNumber\x0a\x09<inlineJS: 'self.setMonth(aNumber - 1)'>",
  5785. referencedClasses: [],
  5786. //>>excludeEnd("ide");
  5787. pragmas: [["inlineJS:", ["self.setMonth(aNumber - 1)"]]],
  5788. messageSends: []
  5789. }, function ($methodClass){ return function (aNumber){
  5790. var self=this,$self=this;
  5791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5792. return $core.withContext(function($ctx1) {
  5793. //>>excludeEnd("ctx");
  5794. self.setMonth(aNumber - 1);
  5795. return self;
  5796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5797. }, function($ctx1) {$ctx1.fill(self,"month:",{aNumber:aNumber})});
  5798. //>>excludeEnd("ctx");
  5799. }; }),
  5800. $globals.Date);
  5801. $core.addMethod(
  5802. $core.method({
  5803. selector: "printOn:",
  5804. protocol: "printing",
  5805. //>>excludeStart("ide", pragmas.excludeIdeData);
  5806. args: ["aStream"],
  5807. source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
  5808. referencedClasses: [],
  5809. //>>excludeEnd("ide");
  5810. pragmas: [],
  5811. messageSends: ["nextPutAll:", "asString"]
  5812. }, function ($methodClass){ return function (aStream){
  5813. var self=this,$self=this;
  5814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5815. return $core.withContext(function($ctx1) {
  5816. //>>excludeEnd("ctx");
  5817. $recv(aStream)._nextPutAll_($self._asString());
  5818. return self;
  5819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5820. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  5821. //>>excludeEnd("ctx");
  5822. }; }),
  5823. $globals.Date);
  5824. $core.addMethod(
  5825. $core.method({
  5826. selector: "seconds",
  5827. protocol: "accessing",
  5828. //>>excludeStart("ide", pragmas.excludeIdeData);
  5829. args: [],
  5830. source: "seconds\x0a\x09<inlineJS: 'return self.getSeconds()'>",
  5831. referencedClasses: [],
  5832. //>>excludeEnd("ide");
  5833. pragmas: [["inlineJS:", ["return self.getSeconds()"]]],
  5834. messageSends: []
  5835. }, function ($methodClass){ return function (){
  5836. var self=this,$self=this;
  5837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5838. return $core.withContext(function($ctx1) {
  5839. //>>excludeEnd("ctx");
  5840. return self.getSeconds();
  5841. return self;
  5842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5843. }, function($ctx1) {$ctx1.fill(self,"seconds",{})});
  5844. //>>excludeEnd("ctx");
  5845. }; }),
  5846. $globals.Date);
  5847. $core.addMethod(
  5848. $core.method({
  5849. selector: "seconds:",
  5850. protocol: "accessing",
  5851. //>>excludeStart("ide", pragmas.excludeIdeData);
  5852. args: ["aNumber"],
  5853. source: "seconds: aNumber\x0a\x09<inlineJS: 'self.setSeconds(aNumber)'>",
  5854. referencedClasses: [],
  5855. //>>excludeEnd("ide");
  5856. pragmas: [["inlineJS:", ["self.setSeconds(aNumber)"]]],
  5857. messageSends: []
  5858. }, function ($methodClass){ return function (aNumber){
  5859. var self=this,$self=this;
  5860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5861. return $core.withContext(function($ctx1) {
  5862. //>>excludeEnd("ctx");
  5863. self.setSeconds(aNumber);
  5864. return self;
  5865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5866. }, function($ctx1) {$ctx1.fill(self,"seconds:",{aNumber:aNumber})});
  5867. //>>excludeEnd("ctx");
  5868. }; }),
  5869. $globals.Date);
  5870. $core.addMethod(
  5871. $core.method({
  5872. selector: "time",
  5873. protocol: "accessing",
  5874. //>>excludeStart("ide", pragmas.excludeIdeData);
  5875. args: [],
  5876. source: "time\x0a\x09<inlineJS: 'return self.getTime()'>",
  5877. referencedClasses: [],
  5878. //>>excludeEnd("ide");
  5879. pragmas: [["inlineJS:", ["return self.getTime()"]]],
  5880. messageSends: []
  5881. }, function ($methodClass){ return function (){
  5882. var self=this,$self=this;
  5883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5884. return $core.withContext(function($ctx1) {
  5885. //>>excludeEnd("ctx");
  5886. return self.getTime();
  5887. return self;
  5888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5889. }, function($ctx1) {$ctx1.fill(self,"time",{})});
  5890. //>>excludeEnd("ctx");
  5891. }; }),
  5892. $globals.Date);
  5893. $core.addMethod(
  5894. $core.method({
  5895. selector: "time:",
  5896. protocol: "accessing",
  5897. //>>excludeStart("ide", pragmas.excludeIdeData);
  5898. args: ["aNumber"],
  5899. source: "time: aNumber\x0a\x09<inlineJS: 'self.setTime(aNumber)'>",
  5900. referencedClasses: [],
  5901. //>>excludeEnd("ide");
  5902. pragmas: [["inlineJS:", ["self.setTime(aNumber)"]]],
  5903. messageSends: []
  5904. }, function ($methodClass){ return function (aNumber){
  5905. var self=this,$self=this;
  5906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5907. return $core.withContext(function($ctx1) {
  5908. //>>excludeEnd("ctx");
  5909. self.setTime(aNumber);
  5910. return self;
  5911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5912. }, function($ctx1) {$ctx1.fill(self,"time:",{aNumber:aNumber})});
  5913. //>>excludeEnd("ctx");
  5914. }; }),
  5915. $globals.Date);
  5916. $core.addMethod(
  5917. $core.method({
  5918. selector: "year",
  5919. protocol: "accessing",
  5920. //>>excludeStart("ide", pragmas.excludeIdeData);
  5921. args: [],
  5922. source: "year\x0a\x09<inlineJS: 'return self.getFullYear()'>",
  5923. referencedClasses: [],
  5924. //>>excludeEnd("ide");
  5925. pragmas: [["inlineJS:", ["return self.getFullYear()"]]],
  5926. messageSends: []
  5927. }, function ($methodClass){ return function (){
  5928. var self=this,$self=this;
  5929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5930. return $core.withContext(function($ctx1) {
  5931. //>>excludeEnd("ctx");
  5932. return self.getFullYear();
  5933. return self;
  5934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5935. }, function($ctx1) {$ctx1.fill(self,"year",{})});
  5936. //>>excludeEnd("ctx");
  5937. }; }),
  5938. $globals.Date);
  5939. $core.addMethod(
  5940. $core.method({
  5941. selector: "year:",
  5942. protocol: "accessing",
  5943. //>>excludeStart("ide", pragmas.excludeIdeData);
  5944. args: ["aNumber"],
  5945. source: "year: aNumber\x0a\x09<inlineJS: 'self.setFullYear(aNumber)'>",
  5946. referencedClasses: [],
  5947. //>>excludeEnd("ide");
  5948. pragmas: [["inlineJS:", ["self.setFullYear(aNumber)"]]],
  5949. messageSends: []
  5950. }, function ($methodClass){ return function (aNumber){
  5951. var self=this,$self=this;
  5952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5953. return $core.withContext(function($ctx1) {
  5954. //>>excludeEnd("ctx");
  5955. self.setFullYear(aNumber);
  5956. return self;
  5957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5958. }, function($ctx1) {$ctx1.fill(self,"year:",{aNumber:aNumber})});
  5959. //>>excludeEnd("ctx");
  5960. }; }),
  5961. $globals.Date);
  5962. $core.addMethod(
  5963. $core.method({
  5964. selector: "classTag",
  5965. protocol: "accessing",
  5966. //>>excludeStart("ide", pragmas.excludeIdeData);
  5967. args: [],
  5968. 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^ 'magnitude'",
  5969. referencedClasses: [],
  5970. //>>excludeEnd("ide");
  5971. pragmas: [],
  5972. messageSends: []
  5973. }, function ($methodClass){ return function (){
  5974. var self=this,$self=this;
  5975. return "magnitude";
  5976. }; }),
  5977. $globals.Date.a$cls);
  5978. $core.addMethod(
  5979. $core.method({
  5980. selector: "fromMilliseconds:",
  5981. protocol: "instance creation",
  5982. //>>excludeStart("ide", pragmas.excludeIdeData);
  5983. args: ["aNumber"],
  5984. source: "fromMilliseconds: aNumber\x0a\x09^ self new: aNumber",
  5985. referencedClasses: [],
  5986. //>>excludeEnd("ide");
  5987. pragmas: [],
  5988. messageSends: ["new:"]
  5989. }, function ($methodClass){ return function (aNumber){
  5990. var self=this,$self=this;
  5991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5992. return $core.withContext(function($ctx1) {
  5993. //>>excludeEnd("ctx");
  5994. return $self._new_(aNumber);
  5995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5996. }, function($ctx1) {$ctx1.fill(self,"fromMilliseconds:",{aNumber:aNumber})});
  5997. //>>excludeEnd("ctx");
  5998. }; }),
  5999. $globals.Date.a$cls);
  6000. $core.addMethod(
  6001. $core.method({
  6002. selector: "fromSeconds:",
  6003. protocol: "instance creation",
  6004. //>>excludeStart("ide", pragmas.excludeIdeData);
  6005. args: ["aNumber"],
  6006. source: "fromSeconds: aNumber\x0a\x09^ self fromMilliseconds: aNumber * 1000",
  6007. referencedClasses: [],
  6008. //>>excludeEnd("ide");
  6009. pragmas: [],
  6010. messageSends: ["fromMilliseconds:", "*"]
  6011. }, function ($methodClass){ return function (aNumber){
  6012. var self=this,$self=this;
  6013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6014. return $core.withContext(function($ctx1) {
  6015. //>>excludeEnd("ctx");
  6016. return $self._fromMilliseconds_($recv(aNumber).__star((1000)));
  6017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6018. }, function($ctx1) {$ctx1.fill(self,"fromSeconds:",{aNumber:aNumber})});
  6019. //>>excludeEnd("ctx");
  6020. }; }),
  6021. $globals.Date.a$cls);
  6022. $core.addMethod(
  6023. $core.method({
  6024. selector: "fromString:",
  6025. protocol: "instance creation",
  6026. //>>excludeStart("ide", pragmas.excludeIdeData);
  6027. args: ["aString"],
  6028. source: "fromString: aString\x0a\x09\x22Example: Date fromString('2011/04/15 00:00:00')\x22\x0a\x09^ self new: aString",
  6029. referencedClasses: [],
  6030. //>>excludeEnd("ide");
  6031. pragmas: [],
  6032. messageSends: ["new:"]
  6033. }, function ($methodClass){ return function (aString){
  6034. var self=this,$self=this;
  6035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6036. return $core.withContext(function($ctx1) {
  6037. //>>excludeEnd("ctx");
  6038. return $self._new_(aString);
  6039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6040. }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString})});
  6041. //>>excludeEnd("ctx");
  6042. }; }),
  6043. $globals.Date.a$cls);
  6044. $core.addMethod(
  6045. $core.method({
  6046. selector: "millisecondsToRun:",
  6047. protocol: "instance creation",
  6048. //>>excludeStart("ide", pragmas.excludeIdeData);
  6049. args: ["aBlock"],
  6050. source: "millisecondsToRun: aBlock\x0a\x09| t |\x0a\x09t := Date now.\x0a\x09aBlock value.\x0a\x09^ Date now - t",
  6051. referencedClasses: ["Date"],
  6052. //>>excludeEnd("ide");
  6053. pragmas: [],
  6054. messageSends: ["now", "value", "-"]
  6055. }, function ($methodClass){ return function (aBlock){
  6056. var self=this,$self=this;
  6057. var t;
  6058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6059. return $core.withContext(function($ctx1) {
  6060. //>>excludeEnd("ctx");
  6061. t=[$recv($globals.Date)._now()
  6062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6063. ,$ctx1.sendIdx["now"]=1
  6064. //>>excludeEnd("ctx");
  6065. ][0];
  6066. $recv(aBlock)._value();
  6067. return $recv($recv($globals.Date)._now()).__minus(t);
  6068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6069. }, function($ctx1) {$ctx1.fill(self,"millisecondsToRun:",{aBlock:aBlock,t:t})});
  6070. //>>excludeEnd("ctx");
  6071. }; }),
  6072. $globals.Date.a$cls);
  6073. $core.addMethod(
  6074. $core.method({
  6075. selector: "new:",
  6076. protocol: "instance creation",
  6077. //>>excludeStart("ide", pragmas.excludeIdeData);
  6078. args: ["anObject"],
  6079. source: "new: anObject\x0a\x09<inlineJS: 'return new Date(anObject)'>",
  6080. referencedClasses: [],
  6081. //>>excludeEnd("ide");
  6082. pragmas: [["inlineJS:", ["return new Date(anObject)"]]],
  6083. messageSends: []
  6084. }, function ($methodClass){ return function (anObject){
  6085. var self=this,$self=this;
  6086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6087. return $core.withContext(function($ctx1) {
  6088. //>>excludeEnd("ctx");
  6089. return new Date(anObject);
  6090. return self;
  6091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6092. }, function($ctx1) {$ctx1.fill(self,"new:",{anObject:anObject})});
  6093. //>>excludeEnd("ctx");
  6094. }; }),
  6095. $globals.Date.a$cls);
  6096. $core.addMethod(
  6097. $core.method({
  6098. selector: "now",
  6099. protocol: "instance creation",
  6100. //>>excludeStart("ide", pragmas.excludeIdeData);
  6101. args: [],
  6102. source: "now\x0a\x09^ self today",
  6103. referencedClasses: [],
  6104. //>>excludeEnd("ide");
  6105. pragmas: [],
  6106. messageSends: ["today"]
  6107. }, function ($methodClass){ return function (){
  6108. var self=this,$self=this;
  6109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6110. return $core.withContext(function($ctx1) {
  6111. //>>excludeEnd("ctx");
  6112. return $self._today();
  6113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6114. }, function($ctx1) {$ctx1.fill(self,"now",{})});
  6115. //>>excludeEnd("ctx");
  6116. }; }),
  6117. $globals.Date.a$cls);
  6118. $core.addMethod(
  6119. $core.method({
  6120. selector: "today",
  6121. protocol: "instance creation",
  6122. //>>excludeStart("ide", pragmas.excludeIdeData);
  6123. args: [],
  6124. source: "today\x0a\x09^ self new",
  6125. referencedClasses: [],
  6126. //>>excludeEnd("ide");
  6127. pragmas: [],
  6128. messageSends: ["new"]
  6129. }, function ($methodClass){ return function (){
  6130. var self=this,$self=this;
  6131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6132. return $core.withContext(function($ctx1) {
  6133. //>>excludeEnd("ctx");
  6134. return $self._new();
  6135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6136. }, function($ctx1) {$ctx1.fill(self,"today",{})});
  6137. //>>excludeEnd("ctx");
  6138. }; }),
  6139. $globals.Date.a$cls);
  6140. $core.addClass("Number", $globals.Object, "Kernel-Objects");
  6141. //>>excludeStart("ide", pragmas.excludeIdeData);
  6142. $globals.Number.comment="I am the Amber representation for all numbers.\x0aI am directly mapped to JavaScript Number.\x0a\x0a## API\x0a\x0aI provide all necessary methods for arithmetic operations, comparison, conversion and so on with numbers.\x0a\x0aMy instances can also be used to evaluate a block a fixed number of times:\x0a\x0a\x095 timesRepeat: [ Transcript show: 'This will be printed 5 times'; cr ].\x0a\x09\x0a\x091 to: 5 do: [ :aNumber| Transcript show: aNumber asString; cr ].\x0a\x09\x0a\x091 to: 10 by: 2 do: [ :aNumber| Transcript show: aNumber asString; cr ].";
  6143. //>>excludeEnd("ide");
  6144. $core.addMethod(
  6145. $core.method({
  6146. selector: "&",
  6147. protocol: "converting",
  6148. //>>excludeStart("ide", pragmas.excludeIdeData);
  6149. args: ["aNumber"],
  6150. source: "& aNumber\x0a\x09^ self bitAnd: aNumber",
  6151. referencedClasses: [],
  6152. //>>excludeEnd("ide");
  6153. pragmas: [],
  6154. messageSends: ["bitAnd:"]
  6155. }, function ($methodClass){ return function (aNumber){
  6156. var self=this,$self=this;
  6157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6158. return $core.withContext(function($ctx1) {
  6159. //>>excludeEnd("ctx");
  6160. return $self._bitAnd_(aNumber);
  6161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6162. }, function($ctx1) {$ctx1.fill(self,"&",{aNumber:aNumber})});
  6163. //>>excludeEnd("ctx");
  6164. }; }),
  6165. $globals.Number);
  6166. $core.addMethod(
  6167. $core.method({
  6168. selector: "*",
  6169. protocol: "arithmetic",
  6170. //>>excludeStart("ide", pragmas.excludeIdeData);
  6171. args: ["aNumber"],
  6172. source: "* aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self * aNumber :\x0a\x09\x09$recv(aNumber)._timesSelfToNumber_(self)'>",
  6173. referencedClasses: [],
  6174. //>>excludeEnd("ide");
  6175. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self * aNumber :\x0a\x09\x09$recv(aNumber)._timesSelfToNumber_(self)"]]],
  6176. messageSends: []
  6177. }, function ($methodClass){ return function (aNumber){
  6178. var self=this,$self=this;
  6179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6180. return $core.withContext(function($ctx1) {
  6181. //>>excludeEnd("ctx");
  6182. return typeof aNumber === "number" ?
  6183. self * aNumber :
  6184. $recv(aNumber)._timesSelfToNumber_(self);
  6185. return self;
  6186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6187. }, function($ctx1) {$ctx1.fill(self,"*",{aNumber:aNumber})});
  6188. //>>excludeEnd("ctx");
  6189. }; }),
  6190. $globals.Number);
  6191. $core.addMethod(
  6192. $core.method({
  6193. selector: "**",
  6194. protocol: "mathematical functions",
  6195. //>>excludeStart("ide", pragmas.excludeIdeData);
  6196. args: ["exponent"],
  6197. source: "** exponent\x0a\x09^ self raisedTo: exponent",
  6198. referencedClasses: [],
  6199. //>>excludeEnd("ide");
  6200. pragmas: [],
  6201. messageSends: ["raisedTo:"]
  6202. }, function ($methodClass){ return function (exponent){
  6203. var self=this,$self=this;
  6204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6205. return $core.withContext(function($ctx1) {
  6206. //>>excludeEnd("ctx");
  6207. return $self._raisedTo_(exponent);
  6208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6209. }, function($ctx1) {$ctx1.fill(self,"**",{exponent:exponent})});
  6210. //>>excludeEnd("ctx");
  6211. }; }),
  6212. $globals.Number);
  6213. $core.addMethod(
  6214. $core.method({
  6215. selector: "+",
  6216. protocol: "arithmetic",
  6217. //>>excludeStart("ide", pragmas.excludeIdeData);
  6218. args: ["aNumber"],
  6219. source: "+ aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self + aNumber :\x0a\x09\x09$recv(aNumber)._plusSelfToNumber_(self)'>",
  6220. referencedClasses: [],
  6221. //>>excludeEnd("ide");
  6222. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self + aNumber :\x0a\x09\x09$recv(aNumber)._plusSelfToNumber_(self)"]]],
  6223. messageSends: []
  6224. }, function ($methodClass){ return function (aNumber){
  6225. var self=this,$self=this;
  6226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6227. return $core.withContext(function($ctx1) {
  6228. //>>excludeEnd("ctx");
  6229. return typeof aNumber === "number" ?
  6230. self + aNumber :
  6231. $recv(aNumber)._plusSelfToNumber_(self);
  6232. return self;
  6233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6234. }, function($ctx1) {$ctx1.fill(self,"+",{aNumber:aNumber})});
  6235. //>>excludeEnd("ctx");
  6236. }; }),
  6237. $globals.Number);
  6238. $core.addMethod(
  6239. $core.method({
  6240. selector: "-",
  6241. protocol: "arithmetic",
  6242. //>>excludeStart("ide", pragmas.excludeIdeData);
  6243. args: ["aNumber"],
  6244. source: "- aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self - aNumber :\x0a\x09\x09$recv(aNumber)._minusSelfToNumber_(self)'>",
  6245. referencedClasses: [],
  6246. //>>excludeEnd("ide");
  6247. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self - aNumber :\x0a\x09\x09$recv(aNumber)._minusSelfToNumber_(self)"]]],
  6248. messageSends: []
  6249. }, function ($methodClass){ return function (aNumber){
  6250. var self=this,$self=this;
  6251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6252. return $core.withContext(function($ctx1) {
  6253. //>>excludeEnd("ctx");
  6254. return typeof aNumber === "number" ?
  6255. self - aNumber :
  6256. $recv(aNumber)._minusSelfToNumber_(self);
  6257. return self;
  6258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6259. }, function($ctx1) {$ctx1.fill(self,"-",{aNumber:aNumber})});
  6260. //>>excludeEnd("ctx");
  6261. }; }),
  6262. $globals.Number);
  6263. $core.addMethod(
  6264. $core.method({
  6265. selector: "/",
  6266. protocol: "arithmetic",
  6267. //>>excludeStart("ide", pragmas.excludeIdeData);
  6268. args: ["aNumber"],
  6269. source: "/ aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self / aNumber :\x0a\x09\x09$recv(aNumber)._divideBySelfToNumber_(self)'>",
  6270. referencedClasses: [],
  6271. //>>excludeEnd("ide");
  6272. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self / aNumber :\x0a\x09\x09$recv(aNumber)._divideBySelfToNumber_(self)"]]],
  6273. messageSends: []
  6274. }, function ($methodClass){ return function (aNumber){
  6275. var self=this,$self=this;
  6276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6277. return $core.withContext(function($ctx1) {
  6278. //>>excludeEnd("ctx");
  6279. return typeof aNumber === "number" ?
  6280. self / aNumber :
  6281. $recv(aNumber)._divideBySelfToNumber_(self);
  6282. return self;
  6283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6284. }, function($ctx1) {$ctx1.fill(self,"/",{aNumber:aNumber})});
  6285. //>>excludeEnd("ctx");
  6286. }; }),
  6287. $globals.Number);
  6288. $core.addMethod(
  6289. $core.method({
  6290. selector: "//",
  6291. protocol: "arithmetic",
  6292. //>>excludeStart("ide", pragmas.excludeIdeData);
  6293. args: ["aNumber"],
  6294. source: "// aNumber\x0a\x09^ (self / aNumber) floor",
  6295. referencedClasses: [],
  6296. //>>excludeEnd("ide");
  6297. pragmas: [],
  6298. messageSends: ["floor", "/"]
  6299. }, function ($methodClass){ return function (aNumber){
  6300. var self=this,$self=this;
  6301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6302. return $core.withContext(function($ctx1) {
  6303. //>>excludeEnd("ctx");
  6304. return $recv($self.__slash(aNumber))._floor();
  6305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6306. }, function($ctx1) {$ctx1.fill(self,"//",{aNumber:aNumber})});
  6307. //>>excludeEnd("ctx");
  6308. }; }),
  6309. $globals.Number);
  6310. $core.addMethod(
  6311. $core.method({
  6312. selector: "<",
  6313. protocol: "comparing",
  6314. //>>excludeStart("ide", pragmas.excludeIdeData);
  6315. args: ["aNumber"],
  6316. source: "< aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) < aNumber :\x0a\x09$recv(aNumber)._isNumberLessThanSelf_(self)'>",
  6317. referencedClasses: [],
  6318. //>>excludeEnd("ide");
  6319. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) < aNumber :\x0a\x09$recv(aNumber)._isNumberLessThanSelf_(self)"]]],
  6320. messageSends: []
  6321. }, function ($methodClass){ return function (aNumber){
  6322. var self=this,$self=this;
  6323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6324. return $core.withContext(function($ctx1) {
  6325. //>>excludeEnd("ctx");
  6326. return typeof aNumber === "number" ?
  6327. Number(self) < aNumber :
  6328. $recv(aNumber)._isNumberLessThanSelf_(self);
  6329. return self;
  6330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6331. }, function($ctx1) {$ctx1.fill(self,"<",{aNumber:aNumber})});
  6332. //>>excludeEnd("ctx");
  6333. }; }),
  6334. $globals.Number);
  6335. $core.addMethod(
  6336. $core.method({
  6337. selector: "<=",
  6338. protocol: "comparing",
  6339. //>>excludeStart("ide", pragmas.excludeIdeData);
  6340. args: ["aNumber"],
  6341. source: "<= aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) <= aNumber :\x0a\x09$recv(aNumber)._isNumberLessThanOrEqualToSelf_(self)'>",
  6342. referencedClasses: [],
  6343. //>>excludeEnd("ide");
  6344. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) <= aNumber :\x0a\x09$recv(aNumber)._isNumberLessThanOrEqualToSelf_(self)"]]],
  6345. messageSends: []
  6346. }, function ($methodClass){ return function (aNumber){
  6347. var self=this,$self=this;
  6348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6349. return $core.withContext(function($ctx1) {
  6350. //>>excludeEnd("ctx");
  6351. return typeof aNumber === "number" ?
  6352. Number(self) <= aNumber :
  6353. $recv(aNumber)._isNumberLessThanOrEqualToSelf_(self);
  6354. return self;
  6355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6356. }, function($ctx1) {$ctx1.fill(self,"<=",{aNumber:aNumber})});
  6357. //>>excludeEnd("ctx");
  6358. }; }),
  6359. $globals.Number);
  6360. $core.addMethod(
  6361. $core.method({
  6362. selector: "==",
  6363. protocol: "comparing",
  6364. //>>excludeStart("ide", pragmas.excludeIdeData);
  6365. args: ["aNumber"],
  6366. source: "== aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) === aNumber :\x0a\x09$recv(aNumber)._isNumberEqualToSelf_(self)'>",
  6367. referencedClasses: [],
  6368. //>>excludeEnd("ide");
  6369. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) === aNumber :\x0a\x09$recv(aNumber)._isNumberEqualToSelf_(self)"]]],
  6370. messageSends: []
  6371. }, function ($methodClass){ return function (aNumber){
  6372. var self=this,$self=this;
  6373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6374. return $core.withContext(function($ctx1) {
  6375. //>>excludeEnd("ctx");
  6376. return typeof aNumber === "number" ?
  6377. Number(self) === aNumber :
  6378. $recv(aNumber)._isNumberEqualToSelf_(self);
  6379. return self;
  6380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6381. }, function($ctx1) {$ctx1.fill(self,"==",{aNumber:aNumber})});
  6382. //>>excludeEnd("ctx");
  6383. }; }),
  6384. $globals.Number);
  6385. $core.addMethod(
  6386. $core.method({
  6387. selector: ">",
  6388. protocol: "comparing",
  6389. //>>excludeStart("ide", pragmas.excludeIdeData);
  6390. args: ["aNumber"],
  6391. source: "> aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) > aNumber :\x0a\x09$recv(aNumber)._isNumberGreaterThanSelf_(self)'>",
  6392. referencedClasses: [],
  6393. //>>excludeEnd("ide");
  6394. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) > aNumber :\x0a\x09$recv(aNumber)._isNumberGreaterThanSelf_(self)"]]],
  6395. messageSends: []
  6396. }, function ($methodClass){ return function (aNumber){
  6397. var self=this,$self=this;
  6398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6399. return $core.withContext(function($ctx1) {
  6400. //>>excludeEnd("ctx");
  6401. return typeof aNumber === "number" ?
  6402. Number(self) > aNumber :
  6403. $recv(aNumber)._isNumberGreaterThanSelf_(self);
  6404. return self;
  6405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6406. }, function($ctx1) {$ctx1.fill(self,">",{aNumber:aNumber})});
  6407. //>>excludeEnd("ctx");
  6408. }; }),
  6409. $globals.Number);
  6410. $core.addMethod(
  6411. $core.method({
  6412. selector: ">=",
  6413. protocol: "comparing",
  6414. //>>excludeStart("ide", pragmas.excludeIdeData);
  6415. args: ["aNumber"],
  6416. source: ">= aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) >= aNumber :\x0a\x09$recv(aNumber)._isNumberGreaterThanOrEqualToSelf_(self)'>",
  6417. referencedClasses: [],
  6418. //>>excludeEnd("ide");
  6419. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) >= aNumber :\x0a\x09$recv(aNumber)._isNumberGreaterThanOrEqualToSelf_(self)"]]],
  6420. messageSends: []
  6421. }, function ($methodClass){ return function (aNumber){
  6422. var self=this,$self=this;
  6423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6424. return $core.withContext(function($ctx1) {
  6425. //>>excludeEnd("ctx");
  6426. return typeof aNumber === "number" ?
  6427. Number(self) >= aNumber :
  6428. $recv(aNumber)._isNumberGreaterThanOrEqualToSelf_(self);
  6429. return self;
  6430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6431. }, function($ctx1) {$ctx1.fill(self,">=",{aNumber:aNumber})});
  6432. //>>excludeEnd("ctx");
  6433. }; }),
  6434. $globals.Number);
  6435. $core.addMethod(
  6436. $core.method({
  6437. selector: "@",
  6438. protocol: "converting",
  6439. //>>excludeStart("ide", pragmas.excludeIdeData);
  6440. args: ["aNumber"],
  6441. source: "@ aNumber\x0a\x09^ Point x: self y: aNumber",
  6442. referencedClasses: ["Point"],
  6443. //>>excludeEnd("ide");
  6444. pragmas: [],
  6445. messageSends: ["x:y:"]
  6446. }, function ($methodClass){ return function (aNumber){
  6447. var self=this,$self=this;
  6448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6449. return $core.withContext(function($ctx1) {
  6450. //>>excludeEnd("ctx");
  6451. return $recv($globals.Point)._x_y_(self,aNumber);
  6452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6453. }, function($ctx1) {$ctx1.fill(self,"@",{aNumber:aNumber})});
  6454. //>>excludeEnd("ctx");
  6455. }; }),
  6456. $globals.Number);
  6457. $core.addMethod(
  6458. $core.method({
  6459. selector: "\x5c\x5c",
  6460. protocol: "arithmetic",
  6461. //>>excludeStart("ide", pragmas.excludeIdeData);
  6462. args: ["aNumber"],
  6463. source: "\x5c\x5c aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self % aNumber :\x0a\x09\x09$recv(aNumber)._divisionRemainderBySelfToNumber_(self)'>",
  6464. referencedClasses: [],
  6465. //>>excludeEnd("ide");
  6466. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self % aNumber :\x0a\x09\x09$recv(aNumber)._divisionRemainderBySelfToNumber_(self)"]]],
  6467. messageSends: []
  6468. }, function ($methodClass){ return function (aNumber){
  6469. var self=this,$self=this;
  6470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6471. return $core.withContext(function($ctx1) {
  6472. //>>excludeEnd("ctx");
  6473. return typeof aNumber === "number" ?
  6474. self % aNumber :
  6475. $recv(aNumber)._divisionRemainderBySelfToNumber_(self);
  6476. return self;
  6477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6478. }, function($ctx1) {$ctx1.fill(self,"\x5c\x5c",{aNumber:aNumber})});
  6479. //>>excludeEnd("ctx");
  6480. }; }),
  6481. $globals.Number);
  6482. $core.addMethod(
  6483. $core.method({
  6484. selector: "abs",
  6485. protocol: "arithmetic",
  6486. //>>excludeStart("ide", pragmas.excludeIdeData);
  6487. args: [],
  6488. source: "abs\x0a\x09<inlineJS: 'return Math.abs(self);'>",
  6489. referencedClasses: [],
  6490. //>>excludeEnd("ide");
  6491. pragmas: [["inlineJS:", ["return Math.abs(self);"]]],
  6492. messageSends: []
  6493. }, function ($methodClass){ return function (){
  6494. var self=this,$self=this;
  6495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6496. return $core.withContext(function($ctx1) {
  6497. //>>excludeEnd("ctx");
  6498. return Math.abs(self);;
  6499. return self;
  6500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6501. }, function($ctx1) {$ctx1.fill(self,"abs",{})});
  6502. //>>excludeEnd("ctx");
  6503. }; }),
  6504. $globals.Number);
  6505. $core.addMethod(
  6506. $core.method({
  6507. selector: "andSelfToNumber:",
  6508. protocol: "converting",
  6509. //>>excludeStart("ide", pragmas.excludeIdeData);
  6510. args: ["aNumber"],
  6511. source: "andSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber & self'>",
  6512. referencedClasses: [],
  6513. //>>excludeEnd("ide");
  6514. pragmas: [["inlineJS:", ["return aNumber & self"]]],
  6515. messageSends: []
  6516. }, function ($methodClass){ return function (aNumber){
  6517. var self=this,$self=this;
  6518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6519. return $core.withContext(function($ctx1) {
  6520. //>>excludeEnd("ctx");
  6521. return aNumber & self;
  6522. return self;
  6523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6524. }, function($ctx1) {$ctx1.fill(self,"andSelfToNumber:",{aNumber:aNumber})});
  6525. //>>excludeEnd("ctx");
  6526. }; }),
  6527. $globals.Number);
  6528. $core.addMethod(
  6529. $core.method({
  6530. selector: "arcCos",
  6531. protocol: "mathematical functions",
  6532. //>>excludeStart("ide", pragmas.excludeIdeData);
  6533. args: [],
  6534. source: "arcCos\x0a\x09<inlineJS: 'return Math.acos(self);'>",
  6535. referencedClasses: [],
  6536. //>>excludeEnd("ide");
  6537. pragmas: [["inlineJS:", ["return Math.acos(self);"]]],
  6538. messageSends: []
  6539. }, function ($methodClass){ return function (){
  6540. var self=this,$self=this;
  6541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6542. return $core.withContext(function($ctx1) {
  6543. //>>excludeEnd("ctx");
  6544. return Math.acos(self);;
  6545. return self;
  6546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6547. }, function($ctx1) {$ctx1.fill(self,"arcCos",{})});
  6548. //>>excludeEnd("ctx");
  6549. }; }),
  6550. $globals.Number);
  6551. $core.addMethod(
  6552. $core.method({
  6553. selector: "arcSin",
  6554. protocol: "mathematical functions",
  6555. //>>excludeStart("ide", pragmas.excludeIdeData);
  6556. args: [],
  6557. source: "arcSin\x0a\x09<inlineJS: 'return Math.asin(self);'>",
  6558. referencedClasses: [],
  6559. //>>excludeEnd("ide");
  6560. pragmas: [["inlineJS:", ["return Math.asin(self);"]]],
  6561. messageSends: []
  6562. }, function ($methodClass){ return function (){
  6563. var self=this,$self=this;
  6564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6565. return $core.withContext(function($ctx1) {
  6566. //>>excludeEnd("ctx");
  6567. return Math.asin(self);;
  6568. return self;
  6569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6570. }, function($ctx1) {$ctx1.fill(self,"arcSin",{})});
  6571. //>>excludeEnd("ctx");
  6572. }; }),
  6573. $globals.Number);
  6574. $core.addMethod(
  6575. $core.method({
  6576. selector: "arcTan",
  6577. protocol: "mathematical functions",
  6578. //>>excludeStart("ide", pragmas.excludeIdeData);
  6579. args: [],
  6580. source: "arcTan\x0a\x09<inlineJS: 'return Math.atan(self);'>",
  6581. referencedClasses: [],
  6582. //>>excludeEnd("ide");
  6583. pragmas: [["inlineJS:", ["return Math.atan(self);"]]],
  6584. messageSends: []
  6585. }, function ($methodClass){ return function (){
  6586. var self=this,$self=this;
  6587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6588. return $core.withContext(function($ctx1) {
  6589. //>>excludeEnd("ctx");
  6590. return Math.atan(self);;
  6591. return self;
  6592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6593. }, function($ctx1) {$ctx1.fill(self,"arcTan",{})});
  6594. //>>excludeEnd("ctx");
  6595. }; }),
  6596. $globals.Number);
  6597. $core.addMethod(
  6598. $core.method({
  6599. selector: "arcTan:",
  6600. protocol: "mathematical functions",
  6601. //>>excludeStart("ide", pragmas.excludeIdeData);
  6602. args: ["aNumber"],
  6603. source: "arcTan: aNumber\x0a\x09<inlineJS: 'return Math.atan2(self, aNumber);'>",
  6604. referencedClasses: [],
  6605. //>>excludeEnd("ide");
  6606. pragmas: [["inlineJS:", ["return Math.atan2(self, aNumber);"]]],
  6607. messageSends: []
  6608. }, function ($methodClass){ return function (aNumber){
  6609. var self=this,$self=this;
  6610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6611. return $core.withContext(function($ctx1) {
  6612. //>>excludeEnd("ctx");
  6613. return Math.atan2(self, aNumber);;
  6614. return self;
  6615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6616. }, function($ctx1) {$ctx1.fill(self,"arcTan:",{aNumber:aNumber})});
  6617. //>>excludeEnd("ctx");
  6618. }; }),
  6619. $globals.Number);
  6620. $core.addMethod(
  6621. $core.method({
  6622. selector: "asJavaScriptObject",
  6623. protocol: "converting",
  6624. //>>excludeStart("ide", pragmas.excludeIdeData);
  6625. args: [],
  6626. source: "asJavaScriptObject\x0a\x09^ self",
  6627. referencedClasses: [],
  6628. //>>excludeEnd("ide");
  6629. pragmas: [],
  6630. messageSends: []
  6631. }, function ($methodClass){ return function (){
  6632. var self=this,$self=this;
  6633. return self;
  6634. }; }),
  6635. $globals.Number);
  6636. $core.addMethod(
  6637. $core.method({
  6638. selector: "asJavaScriptSource",
  6639. protocol: "converting",
  6640. //>>excludeStart("ide", pragmas.excludeIdeData);
  6641. args: [],
  6642. source: "asJavaScriptSource\x0a\x09^ '(', self printString, ')'",
  6643. referencedClasses: [],
  6644. //>>excludeEnd("ide");
  6645. pragmas: [],
  6646. messageSends: [",", "printString"]
  6647. }, function ($methodClass){ return function (){
  6648. var self=this,$self=this;
  6649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6650. return $core.withContext(function($ctx1) {
  6651. //>>excludeEnd("ctx");
  6652. return [$recv("(".__comma($self._printString())).__comma(")")
  6653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6654. ,$ctx1.sendIdx[","]=1
  6655. //>>excludeEnd("ctx");
  6656. ][0];
  6657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6658. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  6659. //>>excludeEnd("ctx");
  6660. }; }),
  6661. $globals.Number);
  6662. $core.addMethod(
  6663. $core.method({
  6664. selector: "asNumber",
  6665. protocol: "converting",
  6666. //>>excludeStart("ide", pragmas.excludeIdeData);
  6667. args: [],
  6668. source: "asNumber\x0a\x09^ self",
  6669. referencedClasses: [],
  6670. //>>excludeEnd("ide");
  6671. pragmas: [],
  6672. messageSends: []
  6673. }, function ($methodClass){ return function (){
  6674. var self=this,$self=this;
  6675. return self;
  6676. }; }),
  6677. $globals.Number);
  6678. $core.addMethod(
  6679. $core.method({
  6680. selector: "asPoint",
  6681. protocol: "converting",
  6682. //>>excludeStart("ide", pragmas.excludeIdeData);
  6683. args: [],
  6684. source: "asPoint\x0a\x09^ Point x: self y: self",
  6685. referencedClasses: ["Point"],
  6686. //>>excludeEnd("ide");
  6687. pragmas: [],
  6688. messageSends: ["x:y:"]
  6689. }, function ($methodClass){ return function (){
  6690. var self=this,$self=this;
  6691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6692. return $core.withContext(function($ctx1) {
  6693. //>>excludeEnd("ctx");
  6694. return $recv($globals.Point)._x_y_(self,self);
  6695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6696. }, function($ctx1) {$ctx1.fill(self,"asPoint",{})});
  6697. //>>excludeEnd("ctx");
  6698. }; }),
  6699. $globals.Number);
  6700. $core.addMethod(
  6701. $core.method({
  6702. selector: "asString",
  6703. protocol: "converting",
  6704. //>>excludeStart("ide", pragmas.excludeIdeData);
  6705. args: [],
  6706. source: "asString\x0a\x09<inlineJS: 'return String(self)'>",
  6707. referencedClasses: [],
  6708. //>>excludeEnd("ide");
  6709. pragmas: [["inlineJS:", ["return String(self)"]]],
  6710. messageSends: []
  6711. }, function ($methodClass){ return function (){
  6712. var self=this,$self=this;
  6713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6714. return $core.withContext(function($ctx1) {
  6715. //>>excludeEnd("ctx");
  6716. return String(self);
  6717. return self;
  6718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6719. }, function($ctx1) {$ctx1.fill(self,"asString",{})});
  6720. //>>excludeEnd("ctx");
  6721. }; }),
  6722. $globals.Number);
  6723. $core.addMethod(
  6724. $core.method({
  6725. selector: "atRandom",
  6726. protocol: "converting",
  6727. //>>excludeStart("ide", pragmas.excludeIdeData);
  6728. args: [],
  6729. source: "atRandom\x0a\x09^ (Random new next * self) truncated + 1",
  6730. referencedClasses: ["Random"],
  6731. //>>excludeEnd("ide");
  6732. pragmas: [],
  6733. messageSends: ["+", "truncated", "*", "next", "new"]
  6734. }, function ($methodClass){ return function (){
  6735. var self=this,$self=this;
  6736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6737. return $core.withContext(function($ctx1) {
  6738. //>>excludeEnd("ctx");
  6739. return $recv($recv($recv($recv($recv($globals.Random)._new())._next()).__star(self))._truncated()).__plus((1));
  6740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6741. }, function($ctx1) {$ctx1.fill(self,"atRandom",{})});
  6742. //>>excludeEnd("ctx");
  6743. }; }),
  6744. $globals.Number);
  6745. $core.addMethod(
  6746. $core.method({
  6747. selector: "between:and:",
  6748. protocol: "testing",
  6749. //>>excludeStart("ide", pragmas.excludeIdeData);
  6750. args: ["min", "max"],
  6751. source: "between: min and: max\x0a ^ self >= min and: [ self <= max ]",
  6752. referencedClasses: [],
  6753. //>>excludeEnd("ide");
  6754. pragmas: [],
  6755. messageSends: ["and:", ">=", "<="]
  6756. }, function ($methodClass){ return function (min,max){
  6757. var self=this,$self=this;
  6758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6759. return $core.withContext(function($ctx1) {
  6760. //>>excludeEnd("ctx");
  6761. if($core.assert($self.__gt_eq(min))){
  6762. return $self.__lt_eq(max);
  6763. } else {
  6764. return false;
  6765. }
  6766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6767. }, function($ctx1) {$ctx1.fill(self,"between:and:",{min:min,max:max})});
  6768. //>>excludeEnd("ctx");
  6769. }; }),
  6770. $globals.Number);
  6771. $core.addMethod(
  6772. $core.method({
  6773. selector: "bitAnd:",
  6774. protocol: "converting",
  6775. //>>excludeStart("ide", pragmas.excludeIdeData);
  6776. args: ["aNumber"],
  6777. source: "bitAnd: aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self & aNumber :\x0a\x09\x09$recv(aNumber)._andSelfToNumber_(self)'>",
  6778. referencedClasses: [],
  6779. //>>excludeEnd("ide");
  6780. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self & aNumber :\x0a\x09\x09$recv(aNumber)._andSelfToNumber_(self)"]]],
  6781. messageSends: []
  6782. }, function ($methodClass){ return function (aNumber){
  6783. var self=this,$self=this;
  6784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6785. return $core.withContext(function($ctx1) {
  6786. //>>excludeEnd("ctx");
  6787. return typeof aNumber === "number" ?
  6788. self & aNumber :
  6789. $recv(aNumber)._andSelfToNumber_(self);
  6790. return self;
  6791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6792. }, function($ctx1) {$ctx1.fill(self,"bitAnd:",{aNumber:aNumber})});
  6793. //>>excludeEnd("ctx");
  6794. }; }),
  6795. $globals.Number);
  6796. $core.addMethod(
  6797. $core.method({
  6798. selector: "bitNot",
  6799. protocol: "converting",
  6800. //>>excludeStart("ide", pragmas.excludeIdeData);
  6801. args: [],
  6802. source: "bitNot\x0a\x09<inlineJS: 'return ~self'>",
  6803. referencedClasses: [],
  6804. //>>excludeEnd("ide");
  6805. pragmas: [["inlineJS:", ["return ~self"]]],
  6806. messageSends: []
  6807. }, function ($methodClass){ return function (){
  6808. var self=this,$self=this;
  6809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6810. return $core.withContext(function($ctx1) {
  6811. //>>excludeEnd("ctx");
  6812. return ~self;
  6813. return self;
  6814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6815. }, function($ctx1) {$ctx1.fill(self,"bitNot",{})});
  6816. //>>excludeEnd("ctx");
  6817. }; }),
  6818. $globals.Number);
  6819. $core.addMethod(
  6820. $core.method({
  6821. selector: "bitOr:",
  6822. protocol: "converting",
  6823. //>>excludeStart("ide", pragmas.excludeIdeData);
  6824. args: ["aNumber"],
  6825. source: "bitOr: aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self | aNumber :\x0a\x09\x09$recv(aNumber)._orSelfToNumber_(self)'>",
  6826. referencedClasses: [],
  6827. //>>excludeEnd("ide");
  6828. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self | aNumber :\x0a\x09\x09$recv(aNumber)._orSelfToNumber_(self)"]]],
  6829. messageSends: []
  6830. }, function ($methodClass){ return function (aNumber){
  6831. var self=this,$self=this;
  6832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6833. return $core.withContext(function($ctx1) {
  6834. //>>excludeEnd("ctx");
  6835. return typeof aNumber === "number" ?
  6836. self | aNumber :
  6837. $recv(aNumber)._orSelfToNumber_(self);
  6838. return self;
  6839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6840. }, function($ctx1) {$ctx1.fill(self,"bitOr:",{aNumber:aNumber})});
  6841. //>>excludeEnd("ctx");
  6842. }; }),
  6843. $globals.Number);
  6844. $core.addMethod(
  6845. $core.method({
  6846. selector: "bitXor:",
  6847. protocol: "converting",
  6848. //>>excludeStart("ide", pragmas.excludeIdeData);
  6849. args: ["aNumber"],
  6850. source: "bitXor: aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self ^ aNumber :\x0a\x09\x09$recv(aNumber)._xorSelfToNumber_(self)'>",
  6851. referencedClasses: [],
  6852. //>>excludeEnd("ide");
  6853. pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self ^ aNumber :\x0a\x09\x09$recv(aNumber)._xorSelfToNumber_(self)"]]],
  6854. messageSends: []
  6855. }, function ($methodClass){ return function (aNumber){
  6856. var self=this,$self=this;
  6857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6858. return $core.withContext(function($ctx1) {
  6859. //>>excludeEnd("ctx");
  6860. return typeof aNumber === "number" ?
  6861. self ^ aNumber :
  6862. $recv(aNumber)._xorSelfToNumber_(self);
  6863. return self;
  6864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6865. }, function($ctx1) {$ctx1.fill(self,"bitXor:",{aNumber:aNumber})});
  6866. //>>excludeEnd("ctx");
  6867. }; }),
  6868. $globals.Number);
  6869. $core.addMethod(
  6870. $core.method({
  6871. selector: "ceiling",
  6872. protocol: "converting",
  6873. //>>excludeStart("ide", pragmas.excludeIdeData);
  6874. args: [],
  6875. source: "ceiling\x0a\x09<inlineJS: 'return Math.ceil(self);'>",
  6876. referencedClasses: [],
  6877. //>>excludeEnd("ide");
  6878. pragmas: [["inlineJS:", ["return Math.ceil(self);"]]],
  6879. messageSends: []
  6880. }, function ($methodClass){ return function (){
  6881. var self=this,$self=this;
  6882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6883. return $core.withContext(function($ctx1) {
  6884. //>>excludeEnd("ctx");
  6885. return Math.ceil(self);;
  6886. return self;
  6887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6888. }, function($ctx1) {$ctx1.fill(self,"ceiling",{})});
  6889. //>>excludeEnd("ctx");
  6890. }; }),
  6891. $globals.Number);
  6892. $core.addMethod(
  6893. $core.method({
  6894. selector: "copy",
  6895. protocol: "copying",
  6896. //>>excludeStart("ide", pragmas.excludeIdeData);
  6897. args: [],
  6898. source: "copy\x0a\x09^ self",
  6899. referencedClasses: [],
  6900. //>>excludeEnd("ide");
  6901. pragmas: [],
  6902. messageSends: []
  6903. }, function ($methodClass){ return function (){
  6904. var self=this,$self=this;
  6905. return self;
  6906. }; }),
  6907. $globals.Number);
  6908. $core.addMethod(
  6909. $core.method({
  6910. selector: "cos",
  6911. protocol: "mathematical functions",
  6912. //>>excludeStart("ide", pragmas.excludeIdeData);
  6913. args: [],
  6914. source: "cos\x0a\x09<inlineJS: 'return Math.cos(self);'>",
  6915. referencedClasses: [],
  6916. //>>excludeEnd("ide");
  6917. pragmas: [["inlineJS:", ["return Math.cos(self);"]]],
  6918. messageSends: []
  6919. }, function ($methodClass){ return function (){
  6920. var self=this,$self=this;
  6921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6922. return $core.withContext(function($ctx1) {
  6923. //>>excludeEnd("ctx");
  6924. return Math.cos(self);;
  6925. return self;
  6926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6927. }, function($ctx1) {$ctx1.fill(self,"cos",{})});
  6928. //>>excludeEnd("ctx");
  6929. }; }),
  6930. $globals.Number);
  6931. $core.addMethod(
  6932. $core.method({
  6933. selector: "deepCopy",
  6934. protocol: "copying",
  6935. //>>excludeStart("ide", pragmas.excludeIdeData);
  6936. args: [],
  6937. source: "deepCopy\x0a\x09^ self copy",
  6938. referencedClasses: [],
  6939. //>>excludeEnd("ide");
  6940. pragmas: [],
  6941. messageSends: ["copy"]
  6942. }, function ($methodClass){ return function (){
  6943. var self=this,$self=this;
  6944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6945. return $core.withContext(function($ctx1) {
  6946. //>>excludeEnd("ctx");
  6947. return $self._copy();
  6948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6949. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})});
  6950. //>>excludeEnd("ctx");
  6951. }; }),
  6952. $globals.Number);
  6953. $core.addMethod(
  6954. $core.method({
  6955. selector: "degreesToRadians",
  6956. protocol: "converting",
  6957. //>>excludeStart("ide", pragmas.excludeIdeData);
  6958. args: [],
  6959. source: "degreesToRadians\x0a\x09^ self * Number radiansPerDegree",
  6960. referencedClasses: ["Number"],
  6961. //>>excludeEnd("ide");
  6962. pragmas: [],
  6963. messageSends: ["*", "radiansPerDegree"]
  6964. }, function ($methodClass){ return function (){
  6965. var self=this,$self=this;
  6966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6967. return $core.withContext(function($ctx1) {
  6968. //>>excludeEnd("ctx");
  6969. return $self.__star($recv($globals.Number)._radiansPerDegree());
  6970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6971. }, function($ctx1) {$ctx1.fill(self,"degreesToRadians",{})});
  6972. //>>excludeEnd("ctx");
  6973. }; }),
  6974. $globals.Number);
  6975. $core.addMethod(
  6976. $core.method({
  6977. selector: "divideBySelfToNumber:",
  6978. protocol: "arithmetic",
  6979. //>>excludeStart("ide", pragmas.excludeIdeData);
  6980. args: ["aNumber"],
  6981. source: "divideBySelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber / self'>",
  6982. referencedClasses: [],
  6983. //>>excludeEnd("ide");
  6984. pragmas: [["inlineJS:", ["return aNumber / self"]]],
  6985. messageSends: []
  6986. }, function ($methodClass){ return function (aNumber){
  6987. var self=this,$self=this;
  6988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6989. return $core.withContext(function($ctx1) {
  6990. //>>excludeEnd("ctx");
  6991. return aNumber / self;
  6992. return self;
  6993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6994. }, function($ctx1) {$ctx1.fill(self,"divideBySelfToNumber:",{aNumber:aNumber})});
  6995. //>>excludeEnd("ctx");
  6996. }; }),
  6997. $globals.Number);
  6998. $core.addMethod(
  6999. $core.method({
  7000. selector: "divisionRemainderBySelfToNumber:",
  7001. protocol: "arithmetic",
  7002. //>>excludeStart("ide", pragmas.excludeIdeData);
  7003. args: ["aNumber"],
  7004. source: "divisionRemainderBySelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber % self'>",
  7005. referencedClasses: [],
  7006. //>>excludeEnd("ide");
  7007. pragmas: [["inlineJS:", ["return aNumber % self"]]],
  7008. messageSends: []
  7009. }, function ($methodClass){ return function (aNumber){
  7010. var self=this,$self=this;
  7011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7012. return $core.withContext(function($ctx1) {
  7013. //>>excludeEnd("ctx");
  7014. return aNumber % self;
  7015. return self;
  7016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7017. }, function($ctx1) {$ctx1.fill(self,"divisionRemainderBySelfToNumber:",{aNumber:aNumber})});
  7018. //>>excludeEnd("ctx");
  7019. }; }),
  7020. $globals.Number);
  7021. $core.addMethod(
  7022. $core.method({
  7023. selector: "even",
  7024. protocol: "testing",
  7025. //>>excludeStart("ide", pragmas.excludeIdeData);
  7026. args: [],
  7027. source: "even\x0a\x09^ 0 = (self \x5c\x5c 2)",
  7028. referencedClasses: [],
  7029. //>>excludeEnd("ide");
  7030. pragmas: [],
  7031. messageSends: ["=", "\x5c\x5c"]
  7032. }, function ($methodClass){ return function (){
  7033. var self=this,$self=this;
  7034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7035. return $core.withContext(function($ctx1) {
  7036. //>>excludeEnd("ctx");
  7037. return (0).__eq($self.__backslash_backslash((2)));
  7038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7039. }, function($ctx1) {$ctx1.fill(self,"even",{})});
  7040. //>>excludeEnd("ctx");
  7041. }; }),
  7042. $globals.Number);
  7043. $core.addMethod(
  7044. $core.method({
  7045. selector: "floor",
  7046. protocol: "converting",
  7047. //>>excludeStart("ide", pragmas.excludeIdeData);
  7048. args: [],
  7049. source: "floor\x0a\x09<inlineJS: 'return Math.floor(self);'>",
  7050. referencedClasses: [],
  7051. //>>excludeEnd("ide");
  7052. pragmas: [["inlineJS:", ["return Math.floor(self);"]]],
  7053. messageSends: []
  7054. }, function ($methodClass){ return function (){
  7055. var self=this,$self=this;
  7056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7057. return $core.withContext(function($ctx1) {
  7058. //>>excludeEnd("ctx");
  7059. return Math.floor(self);;
  7060. return self;
  7061. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7062. }, function($ctx1) {$ctx1.fill(self,"floor",{})});
  7063. //>>excludeEnd("ctx");
  7064. }; }),
  7065. $globals.Number);
  7066. $core.addMethod(
  7067. $core.method({
  7068. selector: "isFinite",
  7069. protocol: "testing",
  7070. //>>excludeStart("ide", pragmas.excludeIdeData);
  7071. args: [],
  7072. source: "isFinite\x0a\x09\x22Answer whether the receiver is finite\x22\x0a\x09<inlineJS: 'return Number.isFinite(self)'>",
  7073. referencedClasses: [],
  7074. //>>excludeEnd("ide");
  7075. pragmas: [["inlineJS:", ["return Number.isFinite(self)"]]],
  7076. messageSends: []
  7077. }, function ($methodClass){ return function (){
  7078. var self=this,$self=this;
  7079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7080. return $core.withContext(function($ctx1) {
  7081. //>>excludeEnd("ctx");
  7082. return Number.isFinite(self);
  7083. return self;
  7084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7085. }, function($ctx1) {$ctx1.fill(self,"isFinite",{})});
  7086. //>>excludeEnd("ctx");
  7087. }; }),
  7088. $globals.Number);
  7089. $core.addMethod(
  7090. $core.method({
  7091. selector: "isImmutable",
  7092. protocol: "testing",
  7093. //>>excludeStart("ide", pragmas.excludeIdeData);
  7094. args: [],
  7095. source: "isImmutable\x0a\x09^ true",
  7096. referencedClasses: [],
  7097. //>>excludeEnd("ide");
  7098. pragmas: [],
  7099. messageSends: []
  7100. }, function ($methodClass){ return function (){
  7101. var self=this,$self=this;
  7102. return true;
  7103. }; }),
  7104. $globals.Number);
  7105. $core.addMethod(
  7106. $core.method({
  7107. selector: "isNaN",
  7108. protocol: "testing",
  7109. //>>excludeStart("ide", pragmas.excludeIdeData);
  7110. args: [],
  7111. source: "isNaN\x0a\x09\x22Answer whether the receiver is IEEE-754 not-a-number\x22\x0a\x09<inlineJS: 'return Number.isNaN(self)'>",
  7112. referencedClasses: [],
  7113. //>>excludeEnd("ide");
  7114. pragmas: [["inlineJS:", ["return Number.isNaN(self)"]]],
  7115. messageSends: []
  7116. }, function ($methodClass){ return function (){
  7117. var self=this,$self=this;
  7118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7119. return $core.withContext(function($ctx1) {
  7120. //>>excludeEnd("ctx");
  7121. return Number.isNaN(self);
  7122. return self;
  7123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7124. }, function($ctx1) {$ctx1.fill(self,"isNaN",{})});
  7125. //>>excludeEnd("ctx");
  7126. }; }),
  7127. $globals.Number);
  7128. $core.addMethod(
  7129. $core.method({
  7130. selector: "isNumber",
  7131. protocol: "testing",
  7132. //>>excludeStart("ide", pragmas.excludeIdeData);
  7133. args: [],
  7134. source: "isNumber\x0a\x09^ true",
  7135. referencedClasses: [],
  7136. //>>excludeEnd("ide");
  7137. pragmas: [],
  7138. messageSends: []
  7139. }, function ($methodClass){ return function (){
  7140. var self=this,$self=this;
  7141. return true;
  7142. }; }),
  7143. $globals.Number);
  7144. $core.addMethod(
  7145. $core.method({
  7146. selector: "isNumberEqualToSelf:",
  7147. protocol: "comparing",
  7148. //>>excludeStart("ide", pragmas.excludeIdeData);
  7149. args: ["aNumber"],
  7150. source: "isNumberEqualToSelf: aNumber\x0a\x09<inlineJS: 'return aNumber === Number(self)'>",
  7151. referencedClasses: [],
  7152. //>>excludeEnd("ide");
  7153. pragmas: [["inlineJS:", ["return aNumber === Number(self)"]]],
  7154. messageSends: []
  7155. }, function ($methodClass){ return function (aNumber){
  7156. var self=this,$self=this;
  7157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7158. return $core.withContext(function($ctx1) {
  7159. //>>excludeEnd("ctx");
  7160. return aNumber === Number(self);
  7161. return self;
  7162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7163. }, function($ctx1) {$ctx1.fill(self,"isNumberEqualToSelf:",{aNumber:aNumber})});
  7164. //>>excludeEnd("ctx");
  7165. }; }),
  7166. $globals.Number);
  7167. $core.addMethod(
  7168. $core.method({
  7169. selector: "isNumberGreaterThanOrEqualToSelf:",
  7170. protocol: "comparing",
  7171. //>>excludeStart("ide", pragmas.excludeIdeData);
  7172. args: ["aNumber"],
  7173. source: "isNumberGreaterThanOrEqualToSelf: aNumber\x0a\x09<inlineJS: 'return aNumber >= self'>",
  7174. referencedClasses: [],
  7175. //>>excludeEnd("ide");
  7176. pragmas: [["inlineJS:", ["return aNumber >= self"]]],
  7177. messageSends: []
  7178. }, function ($methodClass){ return function (aNumber){
  7179. var self=this,$self=this;
  7180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7181. return $core.withContext(function($ctx1) {
  7182. //>>excludeEnd("ctx");
  7183. return aNumber >= self;
  7184. return self;
  7185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7186. }, function($ctx1) {$ctx1.fill(self,"isNumberGreaterThanOrEqualToSelf:",{aNumber:aNumber})});
  7187. //>>excludeEnd("ctx");
  7188. }; }),
  7189. $globals.Number);
  7190. $core.addMethod(
  7191. $core.method({
  7192. selector: "isNumberGreaterThanSelf:",
  7193. protocol: "comparing",
  7194. //>>excludeStart("ide", pragmas.excludeIdeData);
  7195. args: ["aNumber"],
  7196. source: "isNumberGreaterThanSelf: aNumber\x0a\x09<inlineJS: 'return aNumber > self'>",
  7197. referencedClasses: [],
  7198. //>>excludeEnd("ide");
  7199. pragmas: [["inlineJS:", ["return aNumber > self"]]],
  7200. messageSends: []
  7201. }, function ($methodClass){ return function (aNumber){
  7202. var self=this,$self=this;
  7203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7204. return $core.withContext(function($ctx1) {
  7205. //>>excludeEnd("ctx");
  7206. return aNumber > self;
  7207. return self;
  7208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7209. }, function($ctx1) {$ctx1.fill(self,"isNumberGreaterThanSelf:",{aNumber:aNumber})});
  7210. //>>excludeEnd("ctx");
  7211. }; }),
  7212. $globals.Number);
  7213. $core.addMethod(
  7214. $core.method({
  7215. selector: "isNumberLessThanOrEqualToSelf:",
  7216. protocol: "comparing",
  7217. //>>excludeStart("ide", pragmas.excludeIdeData);
  7218. args: ["aNumber"],
  7219. source: "isNumberLessThanOrEqualToSelf: aNumber\x0a\x09<inlineJS: 'return aNumber <= self'>",
  7220. referencedClasses: [],
  7221. //>>excludeEnd("ide");
  7222. pragmas: [["inlineJS:", ["return aNumber <= self"]]],
  7223. messageSends: []
  7224. }, function ($methodClass){ return function (aNumber){
  7225. var self=this,$self=this;
  7226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7227. return $core.withContext(function($ctx1) {
  7228. //>>excludeEnd("ctx");
  7229. return aNumber <= self;
  7230. return self;
  7231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7232. }, function($ctx1) {$ctx1.fill(self,"isNumberLessThanOrEqualToSelf:",{aNumber:aNumber})});
  7233. //>>excludeEnd("ctx");
  7234. }; }),
  7235. $globals.Number);
  7236. $core.addMethod(
  7237. $core.method({
  7238. selector: "isNumberLessThanSelf:",
  7239. protocol: "comparing",
  7240. //>>excludeStart("ide", pragmas.excludeIdeData);
  7241. args: ["aNumber"],
  7242. source: "isNumberLessThanSelf: aNumber\x0a\x09<inlineJS: 'return aNumber < self'>",
  7243. referencedClasses: [],
  7244. //>>excludeEnd("ide");
  7245. pragmas: [["inlineJS:", ["return aNumber < self"]]],
  7246. messageSends: []
  7247. }, function ($methodClass){ return function (aNumber){
  7248. var self=this,$self=this;
  7249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7250. return $core.withContext(function($ctx1) {
  7251. //>>excludeEnd("ctx");
  7252. return aNumber < self;
  7253. return self;
  7254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7255. }, function($ctx1) {$ctx1.fill(self,"isNumberLessThanSelf:",{aNumber:aNumber})});
  7256. //>>excludeEnd("ctx");
  7257. }; }),
  7258. $globals.Number);
  7259. $core.addMethod(
  7260. $core.method({
  7261. selector: "isZero",
  7262. protocol: "testing",
  7263. //>>excludeStart("ide", pragmas.excludeIdeData);
  7264. args: [],
  7265. source: "isZero\x0a\x09^ self = 0",
  7266. referencedClasses: [],
  7267. //>>excludeEnd("ide");
  7268. pragmas: [],
  7269. messageSends: ["="]
  7270. }, function ($methodClass){ return function (){
  7271. var self=this,$self=this;
  7272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7273. return $core.withContext(function($ctx1) {
  7274. //>>excludeEnd("ctx");
  7275. return $self.__eq((0));
  7276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7277. }, function($ctx1) {$ctx1.fill(self,"isZero",{})});
  7278. //>>excludeEnd("ctx");
  7279. }; }),
  7280. $globals.Number);
  7281. $core.addMethod(
  7282. $core.method({
  7283. selector: "ln",
  7284. protocol: "mathematical functions",
  7285. //>>excludeStart("ide", pragmas.excludeIdeData);
  7286. args: [],
  7287. source: "ln\x0a\x09<inlineJS: 'return Math.log(self);'>",
  7288. referencedClasses: [],
  7289. //>>excludeEnd("ide");
  7290. pragmas: [["inlineJS:", ["return Math.log(self);"]]],
  7291. messageSends: []
  7292. }, function ($methodClass){ return function (){
  7293. var self=this,$self=this;
  7294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7295. return $core.withContext(function($ctx1) {
  7296. //>>excludeEnd("ctx");
  7297. return Math.log(self);;
  7298. return self;
  7299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7300. }, function($ctx1) {$ctx1.fill(self,"ln",{})});
  7301. //>>excludeEnd("ctx");
  7302. }; }),
  7303. $globals.Number);
  7304. $core.addMethod(
  7305. $core.method({
  7306. selector: "ln1p",
  7307. protocol: "mathematical functions",
  7308. //>>excludeStart("ide", pragmas.excludeIdeData);
  7309. args: [],
  7310. source: "ln1p\x0a\x09<inlineJS: 'return Math.log1p(self);'>",
  7311. referencedClasses: [],
  7312. //>>excludeEnd("ide");
  7313. pragmas: [["inlineJS:", ["return Math.log1p(self);"]]],
  7314. messageSends: []
  7315. }, function ($methodClass){ return function (){
  7316. var self=this,$self=this;
  7317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7318. return $core.withContext(function($ctx1) {
  7319. //>>excludeEnd("ctx");
  7320. return Math.log1p(self);;
  7321. return self;
  7322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7323. }, function($ctx1) {$ctx1.fill(self,"ln1p",{})});
  7324. //>>excludeEnd("ctx");
  7325. }; }),
  7326. $globals.Number);
  7327. $core.addMethod(
  7328. $core.method({
  7329. selector: "log",
  7330. protocol: "mathematical functions",
  7331. //>>excludeStart("ide", pragmas.excludeIdeData);
  7332. args: [],
  7333. source: "log\x0a\x09<inlineJS: 'return Math.log(self) / Math.LN10;'>",
  7334. referencedClasses: [],
  7335. //>>excludeEnd("ide");
  7336. pragmas: [["inlineJS:", ["return Math.log(self) / Math.LN10;"]]],
  7337. messageSends: []
  7338. }, function ($methodClass){ return function (){
  7339. var self=this,$self=this;
  7340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7341. return $core.withContext(function($ctx1) {
  7342. //>>excludeEnd("ctx");
  7343. return Math.log(self) / Math.LN10;;
  7344. return self;
  7345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7346. }, function($ctx1) {$ctx1.fill(self,"log",{})});
  7347. //>>excludeEnd("ctx");
  7348. }; }),
  7349. $globals.Number);
  7350. $core.addMethod(
  7351. $core.method({
  7352. selector: "log:",
  7353. protocol: "mathematical functions",
  7354. //>>excludeStart("ide", pragmas.excludeIdeData);
  7355. args: ["aNumber"],
  7356. source: "log: aNumber\x0a\x09<inlineJS: 'return Math.log(self) / Math.log(aNumber);'>",
  7357. referencedClasses: [],
  7358. //>>excludeEnd("ide");
  7359. pragmas: [["inlineJS:", ["return Math.log(self) / Math.log(aNumber);"]]],
  7360. messageSends: []
  7361. }, function ($methodClass){ return function (aNumber){
  7362. var self=this,$self=this;
  7363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7364. return $core.withContext(function($ctx1) {
  7365. //>>excludeEnd("ctx");
  7366. return Math.log(self) / Math.log(aNumber);;
  7367. return self;
  7368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7369. }, function($ctx1) {$ctx1.fill(self,"log:",{aNumber:aNumber})});
  7370. //>>excludeEnd("ctx");
  7371. }; }),
  7372. $globals.Number);
  7373. $core.addMethod(
  7374. $core.method({
  7375. selector: "max:",
  7376. protocol: "arithmetic",
  7377. //>>excludeStart("ide", pragmas.excludeIdeData);
  7378. args: ["aNumber"],
  7379. source: "max: aNumber\x0a\x09<inlineJS: 'return Math.max(self, aNumber);'>",
  7380. referencedClasses: [],
  7381. //>>excludeEnd("ide");
  7382. pragmas: [["inlineJS:", ["return Math.max(self, aNumber);"]]],
  7383. messageSends: []
  7384. }, function ($methodClass){ return function (aNumber){
  7385. var self=this,$self=this;
  7386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7387. return $core.withContext(function($ctx1) {
  7388. //>>excludeEnd("ctx");
  7389. return Math.max(self, aNumber);;
  7390. return self;
  7391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7392. }, function($ctx1) {$ctx1.fill(self,"max:",{aNumber:aNumber})});
  7393. //>>excludeEnd("ctx");
  7394. }; }),
  7395. $globals.Number);
  7396. $core.addMethod(
  7397. $core.method({
  7398. selector: "min:",
  7399. protocol: "arithmetic",
  7400. //>>excludeStart("ide", pragmas.excludeIdeData);
  7401. args: ["aNumber"],
  7402. source: "min: aNumber\x0a\x09<inlineJS: 'return Math.min(self, aNumber);'>",
  7403. referencedClasses: [],
  7404. //>>excludeEnd("ide");
  7405. pragmas: [["inlineJS:", ["return Math.min(self, aNumber);"]]],
  7406. messageSends: []
  7407. }, function ($methodClass){ return function (aNumber){
  7408. var self=this,$self=this;
  7409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7410. return $core.withContext(function($ctx1) {
  7411. //>>excludeEnd("ctx");
  7412. return Math.min(self, aNumber);;
  7413. return self;
  7414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7415. }, function($ctx1) {$ctx1.fill(self,"min:",{aNumber:aNumber})});
  7416. //>>excludeEnd("ctx");
  7417. }; }),
  7418. $globals.Number);
  7419. $core.addMethod(
  7420. $core.method({
  7421. selector: "min:max:",
  7422. protocol: "arithmetic",
  7423. //>>excludeStart("ide", pragmas.excludeIdeData);
  7424. args: ["aMin", "aMax"],
  7425. source: "min: aMin max: aMax\x0a\x09^ (self min: aMin) max: aMax",
  7426. referencedClasses: [],
  7427. //>>excludeEnd("ide");
  7428. pragmas: [],
  7429. messageSends: ["max:", "min:"]
  7430. }, function ($methodClass){ return function (aMin,aMax){
  7431. var self=this,$self=this;
  7432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7433. return $core.withContext(function($ctx1) {
  7434. //>>excludeEnd("ctx");
  7435. return $recv($self._min_(aMin))._max_(aMax);
  7436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7437. }, function($ctx1) {$ctx1.fill(self,"min:max:",{aMin:aMin,aMax:aMax})});
  7438. //>>excludeEnd("ctx");
  7439. }; }),
  7440. $globals.Number);
  7441. $core.addMethod(
  7442. $core.method({
  7443. selector: "minusSelfToNumber:",
  7444. protocol: "arithmetic",
  7445. //>>excludeStart("ide", pragmas.excludeIdeData);
  7446. args: ["aNumber"],
  7447. source: "minusSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber - self'>",
  7448. referencedClasses: [],
  7449. //>>excludeEnd("ide");
  7450. pragmas: [["inlineJS:", ["return aNumber - self"]]],
  7451. messageSends: []
  7452. }, function ($methodClass){ return function (aNumber){
  7453. var self=this,$self=this;
  7454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7455. return $core.withContext(function($ctx1) {
  7456. //>>excludeEnd("ctx");
  7457. return aNumber - self;
  7458. return self;
  7459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7460. }, function($ctx1) {$ctx1.fill(self,"minusSelfToNumber:",{aNumber:aNumber})});
  7461. //>>excludeEnd("ctx");
  7462. }; }),
  7463. $globals.Number);
  7464. $core.addMethod(
  7465. $core.method({
  7466. selector: "negated",
  7467. protocol: "arithmetic",
  7468. //>>excludeStart("ide", pragmas.excludeIdeData);
  7469. args: [],
  7470. source: "negated\x0a\x09^ 0 - self",
  7471. referencedClasses: [],
  7472. //>>excludeEnd("ide");
  7473. pragmas: [],
  7474. messageSends: ["-"]
  7475. }, function ($methodClass){ return function (){
  7476. var self=this,$self=this;
  7477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7478. return $core.withContext(function($ctx1) {
  7479. //>>excludeEnd("ctx");
  7480. return (0).__minus(self);
  7481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7482. }, function($ctx1) {$ctx1.fill(self,"negated",{})});
  7483. //>>excludeEnd("ctx");
  7484. }; }),
  7485. $globals.Number);
  7486. $core.addMethod(
  7487. $core.method({
  7488. selector: "negative",
  7489. protocol: "testing",
  7490. //>>excludeStart("ide", pragmas.excludeIdeData);
  7491. args: [],
  7492. source: "negative\x0a\x09\x22Answer whether the receiver is mathematically negative.\x22\x0a\x0a\x09^ self < 0",
  7493. referencedClasses: [],
  7494. //>>excludeEnd("ide");
  7495. pragmas: [],
  7496. messageSends: ["<"]
  7497. }, function ($methodClass){ return function (){
  7498. var self=this,$self=this;
  7499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7500. return $core.withContext(function($ctx1) {
  7501. //>>excludeEnd("ctx");
  7502. return $self.__lt((0));
  7503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7504. }, function($ctx1) {$ctx1.fill(self,"negative",{})});
  7505. //>>excludeEnd("ctx");
  7506. }; }),
  7507. $globals.Number);
  7508. $core.addMethod(
  7509. $core.method({
  7510. selector: "odd",
  7511. protocol: "testing",
  7512. //>>excludeStart("ide", pragmas.excludeIdeData);
  7513. args: [],
  7514. source: "odd\x0a\x09^ self even not",
  7515. referencedClasses: [],
  7516. //>>excludeEnd("ide");
  7517. pragmas: [],
  7518. messageSends: ["not", "even"]
  7519. }, function ($methodClass){ return function (){
  7520. var self=this,$self=this;
  7521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7522. return $core.withContext(function($ctx1) {
  7523. //>>excludeEnd("ctx");
  7524. return $recv($self._even())._not();
  7525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7526. }, function($ctx1) {$ctx1.fill(self,"odd",{})});
  7527. //>>excludeEnd("ctx");
  7528. }; }),
  7529. $globals.Number);
  7530. $core.addMethod(
  7531. $core.method({
  7532. selector: "orSelfToNumber:",
  7533. protocol: "converting",
  7534. //>>excludeStart("ide", pragmas.excludeIdeData);
  7535. args: ["aNumber"],
  7536. source: "orSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber | self'>",
  7537. referencedClasses: [],
  7538. //>>excludeEnd("ide");
  7539. pragmas: [["inlineJS:", ["return aNumber | self"]]],
  7540. messageSends: []
  7541. }, function ($methodClass){ return function (aNumber){
  7542. var self=this,$self=this;
  7543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7544. return $core.withContext(function($ctx1) {
  7545. //>>excludeEnd("ctx");
  7546. return aNumber | self;
  7547. return self;
  7548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7549. }, function($ctx1) {$ctx1.fill(self,"orSelfToNumber:",{aNumber:aNumber})});
  7550. //>>excludeEnd("ctx");
  7551. }; }),
  7552. $globals.Number);
  7553. $core.addMethod(
  7554. $core.method({
  7555. selector: "plusSelfToNumber:",
  7556. protocol: "arithmetic",
  7557. //>>excludeStart("ide", pragmas.excludeIdeData);
  7558. args: ["aNumber"],
  7559. source: "plusSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber + self'>",
  7560. referencedClasses: [],
  7561. //>>excludeEnd("ide");
  7562. pragmas: [["inlineJS:", ["return aNumber + self"]]],
  7563. messageSends: []
  7564. }, function ($methodClass){ return function (aNumber){
  7565. var self=this,$self=this;
  7566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7567. return $core.withContext(function($ctx1) {
  7568. //>>excludeEnd("ctx");
  7569. return aNumber + self;
  7570. return self;
  7571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7572. }, function($ctx1) {$ctx1.fill(self,"plusSelfToNumber:",{aNumber:aNumber})});
  7573. //>>excludeEnd("ctx");
  7574. }; }),
  7575. $globals.Number);
  7576. $core.addMethod(
  7577. $core.method({
  7578. selector: "positive",
  7579. protocol: "testing",
  7580. //>>excludeStart("ide", pragmas.excludeIdeData);
  7581. args: [],
  7582. source: "positive\x0a\x09\x22Answer whether the receiver is positive or equal to 0. (ST-80 protocol).\x22\x0a\x0a\x09^ self >= 0",
  7583. referencedClasses: [],
  7584. //>>excludeEnd("ide");
  7585. pragmas: [],
  7586. messageSends: [">="]
  7587. }, function ($methodClass){ return function (){
  7588. var self=this,$self=this;
  7589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7590. return $core.withContext(function($ctx1) {
  7591. //>>excludeEnd("ctx");
  7592. return $self.__gt_eq((0));
  7593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7594. }, function($ctx1) {$ctx1.fill(self,"positive",{})});
  7595. //>>excludeEnd("ctx");
  7596. }; }),
  7597. $globals.Number);
  7598. $core.addMethod(
  7599. $core.method({
  7600. selector: "printOn:",
  7601. protocol: "printing",
  7602. //>>excludeStart("ide", pragmas.excludeIdeData);
  7603. args: ["aStream"],
  7604. source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
  7605. referencedClasses: [],
  7606. //>>excludeEnd("ide");
  7607. pragmas: [],
  7608. messageSends: ["nextPutAll:", "asString"]
  7609. }, function ($methodClass){ return function (aStream){
  7610. var self=this,$self=this;
  7611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7612. return $core.withContext(function($ctx1) {
  7613. //>>excludeEnd("ctx");
  7614. $recv(aStream)._nextPutAll_($self._asString());
  7615. return self;
  7616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7617. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  7618. //>>excludeEnd("ctx");
  7619. }; }),
  7620. $globals.Number);
  7621. $core.addMethod(
  7622. $core.method({
  7623. selector: "printShowingDecimalPlaces:",
  7624. protocol: "printing",
  7625. //>>excludeStart("ide", pragmas.excludeIdeData);
  7626. args: ["placesDesired"],
  7627. source: "printShowingDecimalPlaces: placesDesired\x0a\x09<inlineJS: 'return self.toFixed(placesDesired)'>",
  7628. referencedClasses: [],
  7629. //>>excludeEnd("ide");
  7630. pragmas: [["inlineJS:", ["return self.toFixed(placesDesired)"]]],
  7631. messageSends: []
  7632. }, function ($methodClass){ return function (placesDesired){
  7633. var self=this,$self=this;
  7634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7635. return $core.withContext(function($ctx1) {
  7636. //>>excludeEnd("ctx");
  7637. return self.toFixed(placesDesired);
  7638. return self;
  7639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7640. }, function($ctx1) {$ctx1.fill(self,"printShowingDecimalPlaces:",{placesDesired:placesDesired})});
  7641. //>>excludeEnd("ctx");
  7642. }; }),
  7643. $globals.Number);
  7644. $core.addMethod(
  7645. $core.method({
  7646. selector: "printStringBase:",
  7647. protocol: "converting",
  7648. //>>excludeStart("ide", pragmas.excludeIdeData);
  7649. args: ["aBase"],
  7650. source: "printStringBase: aBase\x0a\x09<inlineJS: 'return self.toString(aBase)'>",
  7651. referencedClasses: [],
  7652. //>>excludeEnd("ide");
  7653. pragmas: [["inlineJS:", ["return self.toString(aBase)"]]],
  7654. messageSends: []
  7655. }, function ($methodClass){ return function (aBase){
  7656. var self=this,$self=this;
  7657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7658. return $core.withContext(function($ctx1) {
  7659. //>>excludeEnd("ctx");
  7660. return self.toString(aBase);
  7661. return self;
  7662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7663. }, function($ctx1) {$ctx1.fill(self,"printStringBase:",{aBase:aBase})});
  7664. //>>excludeEnd("ctx");
  7665. }; }),
  7666. $globals.Number);
  7667. $core.addMethod(
  7668. $core.method({
  7669. selector: "radiansToDegrees",
  7670. protocol: "converting",
  7671. //>>excludeStart("ide", pragmas.excludeIdeData);
  7672. args: [],
  7673. source: "radiansToDegrees\x0a\x09^ self / Number radiansPerDegree",
  7674. referencedClasses: ["Number"],
  7675. //>>excludeEnd("ide");
  7676. pragmas: [],
  7677. messageSends: ["/", "radiansPerDegree"]
  7678. }, function ($methodClass){ return function (){
  7679. var self=this,$self=this;
  7680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7681. return $core.withContext(function($ctx1) {
  7682. //>>excludeEnd("ctx");
  7683. return $self.__slash($recv($globals.Number)._radiansPerDegree());
  7684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7685. }, function($ctx1) {$ctx1.fill(self,"radiansToDegrees",{})});
  7686. //>>excludeEnd("ctx");
  7687. }; }),
  7688. $globals.Number);
  7689. $core.addMethod(
  7690. $core.method({
  7691. selector: "raisedTo:",
  7692. protocol: "mathematical functions",
  7693. //>>excludeStart("ide", pragmas.excludeIdeData);
  7694. args: ["exponent"],
  7695. source: "raisedTo: exponent\x0a\x09<inlineJS: 'return Math.pow(self, exponent);'>",
  7696. referencedClasses: [],
  7697. //>>excludeEnd("ide");
  7698. pragmas: [["inlineJS:", ["return Math.pow(self, exponent);"]]],
  7699. messageSends: []
  7700. }, function ($methodClass){ return function (exponent){
  7701. var self=this,$self=this;
  7702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7703. return $core.withContext(function($ctx1) {
  7704. //>>excludeEnd("ctx");
  7705. return Math.pow(self, exponent);;
  7706. return self;
  7707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7708. }, function($ctx1) {$ctx1.fill(self,"raisedTo:",{exponent:exponent})});
  7709. //>>excludeEnd("ctx");
  7710. }; }),
  7711. $globals.Number);
  7712. $core.addMethod(
  7713. $core.method({
  7714. selector: "rounded",
  7715. protocol: "converting",
  7716. //>>excludeStart("ide", pragmas.excludeIdeData);
  7717. args: [],
  7718. source: "rounded\x0a\x09<inlineJS: 'return Math.round(self);'>",
  7719. referencedClasses: [],
  7720. //>>excludeEnd("ide");
  7721. pragmas: [["inlineJS:", ["return Math.round(self);"]]],
  7722. messageSends: []
  7723. }, function ($methodClass){ return function (){
  7724. var self=this,$self=this;
  7725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7726. return $core.withContext(function($ctx1) {
  7727. //>>excludeEnd("ctx");
  7728. return Math.round(self);;
  7729. return self;
  7730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7731. }, function($ctx1) {$ctx1.fill(self,"rounded",{})});
  7732. //>>excludeEnd("ctx");
  7733. }; }),
  7734. $globals.Number);
  7735. $core.addMethod(
  7736. $core.method({
  7737. selector: "sign",
  7738. protocol: "mathematical functions",
  7739. //>>excludeStart("ide", pragmas.excludeIdeData);
  7740. args: [],
  7741. source: "sign\x0a\x09self isZero \x0a\x09\x09ifTrue: [ ^ 0 ].\x0a\x09self positive\x0a\x09\x09ifTrue: [ ^ 1 ]\x0a\x09\x09ifFalse: [ ^ -1 ].",
  7742. referencedClasses: [],
  7743. //>>excludeEnd("ide");
  7744. pragmas: [],
  7745. messageSends: ["ifTrue:", "isZero", "ifTrue:ifFalse:", "positive"]
  7746. }, function ($methodClass){ return function (){
  7747. var self=this,$self=this;
  7748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7749. return $core.withContext(function($ctx1) {
  7750. //>>excludeEnd("ctx");
  7751. if($core.assert($self._isZero())){
  7752. return (0);
  7753. }
  7754. if($core.assert($self._positive())){
  7755. return (1);
  7756. } else {
  7757. return (-1);
  7758. }
  7759. return self;
  7760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7761. }, function($ctx1) {$ctx1.fill(self,"sign",{})});
  7762. //>>excludeEnd("ctx");
  7763. }; }),
  7764. $globals.Number);
  7765. $core.addMethod(
  7766. $core.method({
  7767. selector: "sin",
  7768. protocol: "mathematical functions",
  7769. //>>excludeStart("ide", pragmas.excludeIdeData);
  7770. args: [],
  7771. source: "sin\x0a\x09<inlineJS: 'return Math.sin(self);'>",
  7772. referencedClasses: [],
  7773. //>>excludeEnd("ide");
  7774. pragmas: [["inlineJS:", ["return Math.sin(self);"]]],
  7775. messageSends: []
  7776. }, function ($methodClass){ return function (){
  7777. var self=this,$self=this;
  7778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7779. return $core.withContext(function($ctx1) {
  7780. //>>excludeEnd("ctx");
  7781. return Math.sin(self);;
  7782. return self;
  7783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7784. }, function($ctx1) {$ctx1.fill(self,"sin",{})});
  7785. //>>excludeEnd("ctx");
  7786. }; }),
  7787. $globals.Number);
  7788. $core.addMethod(
  7789. $core.method({
  7790. selector: "sqrt",
  7791. protocol: "mathematical functions",
  7792. //>>excludeStart("ide", pragmas.excludeIdeData);
  7793. args: [],
  7794. source: "sqrt\x0a\x09<inlineJS: 'return Math.sqrt(self)'>",
  7795. referencedClasses: [],
  7796. //>>excludeEnd("ide");
  7797. pragmas: [["inlineJS:", ["return Math.sqrt(self)"]]],
  7798. messageSends: []
  7799. }, function ($methodClass){ return function (){
  7800. var self=this,$self=this;
  7801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7802. return $core.withContext(function($ctx1) {
  7803. //>>excludeEnd("ctx");
  7804. return Math.sqrt(self);
  7805. return self;
  7806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7807. }, function($ctx1) {$ctx1.fill(self,"sqrt",{})});
  7808. //>>excludeEnd("ctx");
  7809. }; }),
  7810. $globals.Number);
  7811. $core.addMethod(
  7812. $core.method({
  7813. selector: "squared",
  7814. protocol: "mathematical functions",
  7815. //>>excludeStart("ide", pragmas.excludeIdeData);
  7816. args: [],
  7817. source: "squared\x0a\x09^ self * self",
  7818. referencedClasses: [],
  7819. //>>excludeEnd("ide");
  7820. pragmas: [],
  7821. messageSends: ["*"]
  7822. }, function ($methodClass){ return function (){
  7823. var self=this,$self=this;
  7824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7825. return $core.withContext(function($ctx1) {
  7826. //>>excludeEnd("ctx");
  7827. return $self.__star(self);
  7828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7829. }, function($ctx1) {$ctx1.fill(self,"squared",{})});
  7830. //>>excludeEnd("ctx");
  7831. }; }),
  7832. $globals.Number);
  7833. $core.addMethod(
  7834. $core.method({
  7835. selector: "tan",
  7836. protocol: "mathematical functions",
  7837. //>>excludeStart("ide", pragmas.excludeIdeData);
  7838. args: [],
  7839. source: "tan\x0a\x09<inlineJS: 'return Math.tan(self);'>",
  7840. referencedClasses: [],
  7841. //>>excludeEnd("ide");
  7842. pragmas: [["inlineJS:", ["return Math.tan(self);"]]],
  7843. messageSends: []
  7844. }, function ($methodClass){ return function (){
  7845. var self=this,$self=this;
  7846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7847. return $core.withContext(function($ctx1) {
  7848. //>>excludeEnd("ctx");
  7849. return Math.tan(self);;
  7850. return self;
  7851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7852. }, function($ctx1) {$ctx1.fill(self,"tan",{})});
  7853. //>>excludeEnd("ctx");
  7854. }; }),
  7855. $globals.Number);
  7856. $core.addMethod(
  7857. $core.method({
  7858. selector: "timesRepeat:",
  7859. protocol: "enumerating",
  7860. //>>excludeStart("ide", pragmas.excludeIdeData);
  7861. args: ["aBlock"],
  7862. source: "timesRepeat: aBlock\x0a\x09| count |\x0a\x09count := 1.\x0a\x09[ count > self ] whileFalse: [\x0a\x09\x09aBlock value.\x0a\x09\x09count := count + 1 ]",
  7863. referencedClasses: [],
  7864. //>>excludeEnd("ide");
  7865. pragmas: [],
  7866. messageSends: ["whileFalse:", ">", "value", "+"]
  7867. }, function ($methodClass){ return function (aBlock){
  7868. var self=this,$self=this;
  7869. var count;
  7870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7871. return $core.withContext(function($ctx1) {
  7872. //>>excludeEnd("ctx");
  7873. count=(1);
  7874. $recv((function(){
  7875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7876. return $core.withContext(function($ctx2) {
  7877. //>>excludeEnd("ctx");
  7878. return $recv(count).__gt(self);
  7879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7880. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  7881. //>>excludeEnd("ctx");
  7882. }))._whileFalse_((function(){
  7883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7884. return $core.withContext(function($ctx2) {
  7885. //>>excludeEnd("ctx");
  7886. $recv(aBlock)._value();
  7887. count=$recv(count).__plus((1));
  7888. return count;
  7889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7890. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  7891. //>>excludeEnd("ctx");
  7892. }));
  7893. return self;
  7894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7895. }, function($ctx1) {$ctx1.fill(self,"timesRepeat:",{aBlock:aBlock,count:count})});
  7896. //>>excludeEnd("ctx");
  7897. }; }),
  7898. $globals.Number);
  7899. $core.addMethod(
  7900. $core.method({
  7901. selector: "timesSelfToNumber:",
  7902. protocol: "arithmetic",
  7903. //>>excludeStart("ide", pragmas.excludeIdeData);
  7904. args: ["aNumber"],
  7905. source: "timesSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber * self'>",
  7906. referencedClasses: [],
  7907. //>>excludeEnd("ide");
  7908. pragmas: [["inlineJS:", ["return aNumber * self"]]],
  7909. messageSends: []
  7910. }, function ($methodClass){ return function (aNumber){
  7911. var self=this,$self=this;
  7912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7913. return $core.withContext(function($ctx1) {
  7914. //>>excludeEnd("ctx");
  7915. return aNumber * self;
  7916. return self;
  7917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7918. }, function($ctx1) {$ctx1.fill(self,"timesSelfToNumber:",{aNumber:aNumber})});
  7919. //>>excludeEnd("ctx");
  7920. }; }),
  7921. $globals.Number);
  7922. $core.addMethod(
  7923. $core.method({
  7924. selector: "to:",
  7925. protocol: "converting",
  7926. //>>excludeStart("ide", pragmas.excludeIdeData);
  7927. args: ["aNumber"],
  7928. source: "to: aNumber\x0a\x09| array first last count |\x0a\x09first := self truncated.\x0a\x09last := aNumber truncated + 1.\x0a\x09count := 1.\x0a\x09array := Array new.\x0a\x09(last - first) timesRepeat: [\x0a\x09\x09array at: count put: first.\x0a\x09\x09count := count + 1.\x0a\x09\x09first := first + 1 ].\x0a\x09^ array",
  7929. referencedClasses: ["Array"],
  7930. //>>excludeEnd("ide");
  7931. pragmas: [],
  7932. messageSends: ["truncated", "+", "new", "timesRepeat:", "-", "at:put:"]
  7933. }, function ($methodClass){ return function (aNumber){
  7934. var self=this,$self=this;
  7935. var array,first,last,count;
  7936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7937. return $core.withContext(function($ctx1) {
  7938. //>>excludeEnd("ctx");
  7939. first=[$self._truncated()
  7940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7941. ,$ctx1.sendIdx["truncated"]=1
  7942. //>>excludeEnd("ctx");
  7943. ][0];
  7944. last=[$recv($recv(aNumber)._truncated()).__plus((1))
  7945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7946. ,$ctx1.sendIdx["+"]=1
  7947. //>>excludeEnd("ctx");
  7948. ][0];
  7949. count=(1);
  7950. array=$recv($globals.Array)._new();
  7951. $recv($recv(last).__minus(first))._timesRepeat_((function(){
  7952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7953. return $core.withContext(function($ctx2) {
  7954. //>>excludeEnd("ctx");
  7955. $recv(array)._at_put_(count,first);
  7956. count=[$recv(count).__plus((1))
  7957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7958. ,$ctx2.sendIdx["+"]=2
  7959. //>>excludeEnd("ctx");
  7960. ][0];
  7961. first=$recv(first).__plus((1));
  7962. return first;
  7963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7964. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  7965. //>>excludeEnd("ctx");
  7966. }));
  7967. return array;
  7968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7969. }, function($ctx1) {$ctx1.fill(self,"to:",{aNumber:aNumber,array:array,first:first,last:last,count:count})});
  7970. //>>excludeEnd("ctx");
  7971. }; }),
  7972. $globals.Number);
  7973. $core.addMethod(
  7974. $core.method({
  7975. selector: "to:by:",
  7976. protocol: "converting",
  7977. //>>excludeStart("ide", pragmas.excludeIdeData);
  7978. args: ["stop", "step"],
  7979. source: "to: stop by: step\x0a\x09| array value pos |\x0a\x09value := self.\x0a\x09array := Array new.\x0a\x09pos := 1.\x0a\x09step = 0 ifTrue: [ self error: 'step must be non-zero' ].\x0a\x09step < 0\x0a\x09\x09ifTrue: [ [ value >= stop ] whileTrue: [\x0a\x09\x09\x09\x09\x09array at: pos put: value.\x0a\x09\x09\x09\x09\x09pos := pos + 1.\x0a\x09\x09\x09\x09\x09value := value + step ]]\x0a\x09\x09ifFalse: [ [ value <= stop ] whileTrue: [\x0a\x09\x09\x09\x09\x09array at: pos put: value.\x0a\x09\x09\x09\x09pos := pos + 1.\x0a\x09\x09\x09\x09\x09value := value + step ]].\x0a\x09^ array",
  7980. referencedClasses: ["Array"],
  7981. //>>excludeEnd("ide");
  7982. pragmas: [],
  7983. messageSends: ["new", "ifTrue:", "=", "error:", "ifTrue:ifFalse:", "<", "whileTrue:", ">=", "at:put:", "+", "<="]
  7984. }, function ($methodClass){ return function (stop,step){
  7985. var self=this,$self=this;
  7986. var array,value,pos;
  7987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7988. return $core.withContext(function($ctx1) {
  7989. //>>excludeEnd("ctx");
  7990. value=self;
  7991. array=$recv($globals.Array)._new();
  7992. pos=(1);
  7993. if($core.assert($recv(step).__eq((0)))){
  7994. $self._error_("step must be non-zero");
  7995. }
  7996. if($core.assert($recv(step).__lt((0)))){
  7997. [$recv((function(){
  7998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7999. return $core.withContext(function($ctx2) {
  8000. //>>excludeEnd("ctx");
  8001. return $recv(value).__gt_eq(stop);
  8002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8003. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  8004. //>>excludeEnd("ctx");
  8005. }))._whileTrue_((function(){
  8006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8007. return $core.withContext(function($ctx2) {
  8008. //>>excludeEnd("ctx");
  8009. [$recv(array)._at_put_(pos,value)
  8010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8011. ,$ctx2.sendIdx["at:put:"]=1
  8012. //>>excludeEnd("ctx");
  8013. ][0];
  8014. pos=[$recv(pos).__plus((1))
  8015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8016. ,$ctx2.sendIdx["+"]=1
  8017. //>>excludeEnd("ctx");
  8018. ][0];
  8019. value=[$recv(value).__plus(step)
  8020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8021. ,$ctx2.sendIdx["+"]=2
  8022. //>>excludeEnd("ctx");
  8023. ][0];
  8024. return value;
  8025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8026. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  8027. //>>excludeEnd("ctx");
  8028. }))
  8029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8030. ,$ctx1.sendIdx["whileTrue:"]=1
  8031. //>>excludeEnd("ctx");
  8032. ][0];
  8033. } else {
  8034. $recv((function(){
  8035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8036. return $core.withContext(function($ctx2) {
  8037. //>>excludeEnd("ctx");
  8038. return $recv(value).__lt_eq(stop);
  8039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8040. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  8041. //>>excludeEnd("ctx");
  8042. }))._whileTrue_((function(){
  8043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8044. return $core.withContext(function($ctx2) {
  8045. //>>excludeEnd("ctx");
  8046. $recv(array)._at_put_(pos,value);
  8047. pos=[$recv(pos).__plus((1))
  8048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8049. ,$ctx2.sendIdx["+"]=3
  8050. //>>excludeEnd("ctx");
  8051. ][0];
  8052. value=$recv(value).__plus(step);
  8053. return value;
  8054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8055. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  8056. //>>excludeEnd("ctx");
  8057. }));
  8058. }
  8059. return array;
  8060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8061. }, function($ctx1) {$ctx1.fill(self,"to:by:",{stop:stop,step:step,array:array,value:value,pos:pos})});
  8062. //>>excludeEnd("ctx");
  8063. }; }),
  8064. $globals.Number);
  8065. $core.addMethod(
  8066. $core.method({
  8067. selector: "to:by:do:",
  8068. protocol: "enumerating",
  8069. //>>excludeStart("ide", pragmas.excludeIdeData);
  8070. args: ["stop", "step", "aBlock"],
  8071. source: "to: stop by: step do: aBlock\x0a\x09| value |\x0a\x09value := self.\x0a\x09step = 0 ifTrue: [ self error: 'step must be non-zero' ].\x0a\x09step < 0\x0a\x09\x09ifTrue: [ [ value >= stop ] whileTrue: [\x0a\x09\x09\x09\x09\x09aBlock value: value.\x0a\x09\x09\x09\x09\x09value := value + step ]]\x0a\x09\x09ifFalse: [ [ value <= stop ] whileTrue: [\x0a\x09\x09\x09\x09\x09aBlock value: value.\x0a\x09\x09\x09\x09\x09value := value + step ]]",
  8072. referencedClasses: [],
  8073. //>>excludeEnd("ide");
  8074. pragmas: [],
  8075. messageSends: ["ifTrue:", "=", "error:", "ifTrue:ifFalse:", "<", "whileTrue:", ">=", "value:", "+", "<="]
  8076. }, function ($methodClass){ return function (stop,step,aBlock){
  8077. var self=this,$self=this;
  8078. var value;
  8079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8080. return $core.withContext(function($ctx1) {
  8081. //>>excludeEnd("ctx");
  8082. value=self;
  8083. if($core.assert($recv(step).__eq((0)))){
  8084. $self._error_("step must be non-zero");
  8085. }
  8086. if($core.assert($recv(step).__lt((0)))){
  8087. [$recv((function(){
  8088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8089. return $core.withContext(function($ctx2) {
  8090. //>>excludeEnd("ctx");
  8091. return $recv(value).__gt_eq(stop);
  8092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8093. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  8094. //>>excludeEnd("ctx");
  8095. }))._whileTrue_((function(){
  8096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8097. return $core.withContext(function($ctx2) {
  8098. //>>excludeEnd("ctx");
  8099. [$recv(aBlock)._value_(value)
  8100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8101. ,$ctx2.sendIdx["value:"]=1
  8102. //>>excludeEnd("ctx");
  8103. ][0];
  8104. value=[$recv(value).__plus(step)
  8105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8106. ,$ctx2.sendIdx["+"]=1
  8107. //>>excludeEnd("ctx");
  8108. ][0];
  8109. return value;
  8110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8111. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  8112. //>>excludeEnd("ctx");
  8113. }))
  8114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8115. ,$ctx1.sendIdx["whileTrue:"]=1
  8116. //>>excludeEnd("ctx");
  8117. ][0];
  8118. } else {
  8119. $recv((function(){
  8120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8121. return $core.withContext(function($ctx2) {
  8122. //>>excludeEnd("ctx");
  8123. return $recv(value).__lt_eq(stop);
  8124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8125. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  8126. //>>excludeEnd("ctx");
  8127. }))._whileTrue_((function(){
  8128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8129. return $core.withContext(function($ctx2) {
  8130. //>>excludeEnd("ctx");
  8131. $recv(aBlock)._value_(value);
  8132. value=$recv(value).__plus(step);
  8133. return value;
  8134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8135. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  8136. //>>excludeEnd("ctx");
  8137. }));
  8138. }
  8139. return self;
  8140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8141. }, function($ctx1) {$ctx1.fill(self,"to:by:do:",{stop:stop,step:step,aBlock:aBlock,value:value})});
  8142. //>>excludeEnd("ctx");
  8143. }; }),
  8144. $globals.Number);
  8145. $core.addMethod(
  8146. $core.method({
  8147. selector: "to:do:",
  8148. protocol: "enumerating",
  8149. //>>excludeStart("ide", pragmas.excludeIdeData);
  8150. args: ["stop", "aBlock"],
  8151. source: "to: stop do: aBlock\x0a\x09\x22Evaluate aBlock for each number from self to aNumber.\x22\x0a\x09| nextValue |\x0a\x09nextValue := self.\x0a\x09[ nextValue <= stop ]\x0a\x09\x09whileTrue:\x0a\x09\x09\x09[ aBlock value: nextValue.\x0a\x09\x09\x09nextValue := nextValue + 1 ]",
  8152. referencedClasses: [],
  8153. //>>excludeEnd("ide");
  8154. pragmas: [],
  8155. messageSends: ["whileTrue:", "<=", "value:", "+"]
  8156. }, function ($methodClass){ return function (stop,aBlock){
  8157. var self=this,$self=this;
  8158. var nextValue;
  8159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8160. return $core.withContext(function($ctx1) {
  8161. //>>excludeEnd("ctx");
  8162. nextValue=self;
  8163. $recv((function(){
  8164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8165. return $core.withContext(function($ctx2) {
  8166. //>>excludeEnd("ctx");
  8167. return $recv(nextValue).__lt_eq(stop);
  8168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8169. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  8170. //>>excludeEnd("ctx");
  8171. }))._whileTrue_((function(){
  8172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8173. return $core.withContext(function($ctx2) {
  8174. //>>excludeEnd("ctx");
  8175. $recv(aBlock)._value_(nextValue);
  8176. nextValue=$recv(nextValue).__plus((1));
  8177. return nextValue;
  8178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8179. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  8180. //>>excludeEnd("ctx");
  8181. }));
  8182. return self;
  8183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8184. }, function($ctx1) {$ctx1.fill(self,"to:do:",{stop:stop,aBlock:aBlock,nextValue:nextValue})});
  8185. //>>excludeEnd("ctx");
  8186. }; }),
  8187. $globals.Number);
  8188. $core.addMethod(
  8189. $core.method({
  8190. selector: "truncated",
  8191. protocol: "converting",
  8192. //>>excludeStart("ide", pragmas.excludeIdeData);
  8193. args: [],
  8194. source: "truncated\x0a\x09<inlineJS: '\x0a\x09\x09if(self >= 0) {\x0a\x09\x09\x09return Math.floor(self);\x0a\x09\x09} else {\x0a\x09\x09\x09return Math.floor(self * (-1)) * (-1);\x0a\x09\x09};\x0a\x09'>",
  8195. referencedClasses: [],
  8196. //>>excludeEnd("ide");
  8197. pragmas: [["inlineJS:", ["\x0a\x09\x09if(self >= 0) {\x0a\x09\x09\x09return Math.floor(self);\x0a\x09\x09} else {\x0a\x09\x09\x09return Math.floor(self * (-1)) * (-1);\x0a\x09\x09};\x0a\x09"]]],
  8198. messageSends: []
  8199. }, function ($methodClass){ return function (){
  8200. var self=this,$self=this;
  8201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8202. return $core.withContext(function($ctx1) {
  8203. //>>excludeEnd("ctx");
  8204. if(self >= 0) {
  8205. return Math.floor(self);
  8206. } else {
  8207. return Math.floor(self * (-1)) * (-1);
  8208. };
  8209. ;
  8210. return self;
  8211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8212. }, function($ctx1) {$ctx1.fill(self,"truncated",{})});
  8213. //>>excludeEnd("ctx");
  8214. }; }),
  8215. $globals.Number);
  8216. $core.addMethod(
  8217. $core.method({
  8218. selector: "xorSelfToNumber:",
  8219. protocol: "converting",
  8220. //>>excludeStart("ide", pragmas.excludeIdeData);
  8221. args: ["aNumber"],
  8222. source: "xorSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber ^ self'>",
  8223. referencedClasses: [],
  8224. //>>excludeEnd("ide");
  8225. pragmas: [["inlineJS:", ["return aNumber ^ self"]]],
  8226. messageSends: []
  8227. }, function ($methodClass){ return function (aNumber){
  8228. var self=this,$self=this;
  8229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8230. return $core.withContext(function($ctx1) {
  8231. //>>excludeEnd("ctx");
  8232. return aNumber ^ self;
  8233. return self;
  8234. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8235. }, function($ctx1) {$ctx1.fill(self,"xorSelfToNumber:",{aNumber:aNumber})});
  8236. //>>excludeEnd("ctx");
  8237. }; }),
  8238. $globals.Number);
  8239. $core.addMethod(
  8240. $core.method({
  8241. selector: "|",
  8242. protocol: "converting",
  8243. //>>excludeStart("ide", pragmas.excludeIdeData);
  8244. args: ["aNumber"],
  8245. source: "| aNumber\x0a\x09^ self bitOr: aNumber",
  8246. referencedClasses: [],
  8247. //>>excludeEnd("ide");
  8248. pragmas: [],
  8249. messageSends: ["bitOr:"]
  8250. }, function ($methodClass){ return function (aNumber){
  8251. var self=this,$self=this;
  8252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8253. return $core.withContext(function($ctx1) {
  8254. //>>excludeEnd("ctx");
  8255. return $self._bitOr_(aNumber);
  8256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8257. }, function($ctx1) {$ctx1.fill(self,"|",{aNumber:aNumber})});
  8258. //>>excludeEnd("ctx");
  8259. }; }),
  8260. $globals.Number);
  8261. $core.addMethod(
  8262. $core.method({
  8263. selector: "classTag",
  8264. protocol: "accessing",
  8265. //>>excludeStart("ide", pragmas.excludeIdeData);
  8266. args: [],
  8267. 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^ 'magnitude'",
  8268. referencedClasses: [],
  8269. //>>excludeEnd("ide");
  8270. pragmas: [],
  8271. messageSends: []
  8272. }, function ($methodClass){ return function (){
  8273. var self=this,$self=this;
  8274. return "magnitude";
  8275. }; }),
  8276. $globals.Number.a$cls);
  8277. $core.addMethod(
  8278. $core.method({
  8279. selector: "e",
  8280. protocol: "instance creation",
  8281. //>>excludeStart("ide", pragmas.excludeIdeData);
  8282. args: [],
  8283. source: "e\x0a\x09<inlineJS: 'return Math.E;'>",
  8284. referencedClasses: [],
  8285. //>>excludeEnd("ide");
  8286. pragmas: [["inlineJS:", ["return Math.E;"]]],
  8287. messageSends: []
  8288. }, function ($methodClass){ return function (){
  8289. var self=this,$self=this;
  8290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8291. return $core.withContext(function($ctx1) {
  8292. //>>excludeEnd("ctx");
  8293. return Math.E;;
  8294. return self;
  8295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8296. }, function($ctx1) {$ctx1.fill(self,"e",{})});
  8297. //>>excludeEnd("ctx");
  8298. }; }),
  8299. $globals.Number.a$cls);
  8300. $core.addMethod(
  8301. $core.method({
  8302. selector: "negativeInfinity",
  8303. protocol: "instance creation",
  8304. //>>excludeStart("ide", pragmas.excludeIdeData);
  8305. args: [],
  8306. source: "negativeInfinity\x0a\x09<inlineJS: 'return Number.NEGATIVE_INFINITY'>",
  8307. referencedClasses: [],
  8308. //>>excludeEnd("ide");
  8309. pragmas: [["inlineJS:", ["return Number.NEGATIVE_INFINITY"]]],
  8310. messageSends: []
  8311. }, function ($methodClass){ return function (){
  8312. var self=this,$self=this;
  8313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8314. return $core.withContext(function($ctx1) {
  8315. //>>excludeEnd("ctx");
  8316. return Number.NEGATIVE_INFINITY;
  8317. return self;
  8318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8319. }, function($ctx1) {$ctx1.fill(self,"negativeInfinity",{})});
  8320. //>>excludeEnd("ctx");
  8321. }; }),
  8322. $globals.Number.a$cls);
  8323. $core.addMethod(
  8324. $core.method({
  8325. selector: "pi",
  8326. protocol: "instance creation",
  8327. //>>excludeStart("ide", pragmas.excludeIdeData);
  8328. args: [],
  8329. source: "pi\x0a\x09<inlineJS: 'return Math.PI'>",
  8330. referencedClasses: [],
  8331. //>>excludeEnd("ide");
  8332. pragmas: [["inlineJS:", ["return Math.PI"]]],
  8333. messageSends: []
  8334. }, function ($methodClass){ return function (){
  8335. var self=this,$self=this;
  8336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8337. return $core.withContext(function($ctx1) {
  8338. //>>excludeEnd("ctx");
  8339. return Math.PI;
  8340. return self;
  8341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8342. }, function($ctx1) {$ctx1.fill(self,"pi",{})});
  8343. //>>excludeEnd("ctx");
  8344. }; }),
  8345. $globals.Number.a$cls);
  8346. $core.addMethod(
  8347. $core.method({
  8348. selector: "positiveInfinity",
  8349. protocol: "instance creation",
  8350. //>>excludeStart("ide", pragmas.excludeIdeData);
  8351. args: [],
  8352. source: "positiveInfinity\x0a\x09<inlineJS: 'return Number.POSITIVE_INFINITY'>",
  8353. referencedClasses: [],
  8354. //>>excludeEnd("ide");
  8355. pragmas: [["inlineJS:", ["return Number.POSITIVE_INFINITY"]]],
  8356. messageSends: []
  8357. }, function ($methodClass){ return function (){
  8358. var self=this,$self=this;
  8359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8360. return $core.withContext(function($ctx1) {
  8361. //>>excludeEnd("ctx");
  8362. return Number.POSITIVE_INFINITY;
  8363. return self;
  8364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8365. }, function($ctx1) {$ctx1.fill(self,"positiveInfinity",{})});
  8366. //>>excludeEnd("ctx");
  8367. }; }),
  8368. $globals.Number.a$cls);
  8369. $core.addMethod(
  8370. $core.method({
  8371. selector: "radiansPerDegree",
  8372. protocol: "instance creation",
  8373. //>>excludeStart("ide", pragmas.excludeIdeData);
  8374. args: [],
  8375. source: "radiansPerDegree\x0a\x09^ (self pi) / 180",
  8376. referencedClasses: [],
  8377. //>>excludeEnd("ide");
  8378. pragmas: [],
  8379. messageSends: ["/", "pi"]
  8380. }, function ($methodClass){ return function (){
  8381. var self=this,$self=this;
  8382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8383. return $core.withContext(function($ctx1) {
  8384. //>>excludeEnd("ctx");
  8385. return $recv($self._pi()).__slash((180));
  8386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8387. }, function($ctx1) {$ctx1.fill(self,"radiansPerDegree",{})});
  8388. //>>excludeEnd("ctx");
  8389. }; }),
  8390. $globals.Number.a$cls);
  8391. $core.addClass("Point", $globals.Object, "Kernel-Objects");
  8392. $core.setSlots($globals.Point, ["x", "y"]);
  8393. //>>excludeStart("ide", pragmas.excludeIdeData);
  8394. $globals.Point.comment="I represent an x-y pair of numbers usually designating a geometric coordinate.\x0a\x0a## API\x0a\x0aInstances are traditionally created using the binary `#@` message to a number:\x0a\x0a\x09100@120\x0a\x0aPoints can then be arithmetically manipulated:\x0a\x0a\x09100@100 + (10@10)\x0a\x0a...or for example:\x0a\x0a\x09(100@100) * 2\x0a\x0a**NOTE:** Creating a point with a negative y-value will need a space after `@` in order to avoid a parsing error:\x0a\x0a\x09100@ -100 \x22but 100@-100 would not parse\x22";
  8395. //>>excludeEnd("ide");
  8396. $core.addMethod(
  8397. $core.method({
  8398. selector: "*",
  8399. protocol: "arithmetic",
  8400. //>>excludeStart("ide", pragmas.excludeIdeData);
  8401. args: ["aPoint"],
  8402. source: "* aPoint\x0a\x09^ Point x: self x * aPoint asPoint x y: self y * aPoint asPoint y",
  8403. referencedClasses: ["Point"],
  8404. //>>excludeEnd("ide");
  8405. pragmas: [],
  8406. messageSends: ["x:y:", "*", "x", "asPoint", "y"]
  8407. }, function ($methodClass){ return function (aPoint){
  8408. var self=this,$self=this;
  8409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8410. return $core.withContext(function($ctx1) {
  8411. //>>excludeEnd("ctx");
  8412. return $recv($globals.Point)._x_y_([$recv([$self._x()
  8413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8414. ,$ctx1.sendIdx["x"]=1
  8415. //>>excludeEnd("ctx");
  8416. ][0]).__star($recv([$recv(aPoint)._asPoint()
  8417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8418. ,$ctx1.sendIdx["asPoint"]=1
  8419. //>>excludeEnd("ctx");
  8420. ][0])._x())
  8421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8422. ,$ctx1.sendIdx["*"]=1
  8423. //>>excludeEnd("ctx");
  8424. ][0],$recv([$self._y()
  8425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8426. ,$ctx1.sendIdx["y"]=1
  8427. //>>excludeEnd("ctx");
  8428. ][0]).__star($recv($recv(aPoint)._asPoint())._y()));
  8429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8430. }, function($ctx1) {$ctx1.fill(self,"*",{aPoint:aPoint})});
  8431. //>>excludeEnd("ctx");
  8432. }; }),
  8433. $globals.Point);
  8434. $core.addMethod(
  8435. $core.method({
  8436. selector: "+",
  8437. protocol: "arithmetic",
  8438. //>>excludeStart("ide", pragmas.excludeIdeData);
  8439. args: ["aPoint"],
  8440. source: "+ aPoint\x0a\x09^ Point x: self x + aPoint asPoint x y: self y + aPoint asPoint y",
  8441. referencedClasses: ["Point"],
  8442. //>>excludeEnd("ide");
  8443. pragmas: [],
  8444. messageSends: ["x:y:", "+", "x", "asPoint", "y"]
  8445. }, function ($methodClass){ return function (aPoint){
  8446. var self=this,$self=this;
  8447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8448. return $core.withContext(function($ctx1) {
  8449. //>>excludeEnd("ctx");
  8450. return $recv($globals.Point)._x_y_([$recv([$self._x()
  8451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8452. ,$ctx1.sendIdx["x"]=1
  8453. //>>excludeEnd("ctx");
  8454. ][0]).__plus($recv([$recv(aPoint)._asPoint()
  8455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8456. ,$ctx1.sendIdx["asPoint"]=1
  8457. //>>excludeEnd("ctx");
  8458. ][0])._x())
  8459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8460. ,$ctx1.sendIdx["+"]=1
  8461. //>>excludeEnd("ctx");
  8462. ][0],$recv([$self._y()
  8463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8464. ,$ctx1.sendIdx["y"]=1
  8465. //>>excludeEnd("ctx");
  8466. ][0]).__plus($recv($recv(aPoint)._asPoint())._y()));
  8467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8468. }, function($ctx1) {$ctx1.fill(self,"+",{aPoint:aPoint})});
  8469. //>>excludeEnd("ctx");
  8470. }; }),
  8471. $globals.Point);
  8472. $core.addMethod(
  8473. $core.method({
  8474. selector: "-",
  8475. protocol: "arithmetic",
  8476. //>>excludeStart("ide", pragmas.excludeIdeData);
  8477. args: ["aPoint"],
  8478. source: "- aPoint\x0a\x09^ Point x: self x - aPoint asPoint x y: self y - aPoint asPoint y",
  8479. referencedClasses: ["Point"],
  8480. //>>excludeEnd("ide");
  8481. pragmas: [],
  8482. messageSends: ["x:y:", "-", "x", "asPoint", "y"]
  8483. }, function ($methodClass){ return function (aPoint){
  8484. var self=this,$self=this;
  8485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8486. return $core.withContext(function($ctx1) {
  8487. //>>excludeEnd("ctx");
  8488. return $recv($globals.Point)._x_y_([$recv([$self._x()
  8489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8490. ,$ctx1.sendIdx["x"]=1
  8491. //>>excludeEnd("ctx");
  8492. ][0]).__minus($recv([$recv(aPoint)._asPoint()
  8493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8494. ,$ctx1.sendIdx["asPoint"]=1
  8495. //>>excludeEnd("ctx");
  8496. ][0])._x())
  8497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8498. ,$ctx1.sendIdx["-"]=1
  8499. //>>excludeEnd("ctx");
  8500. ][0],$recv([$self._y()
  8501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8502. ,$ctx1.sendIdx["y"]=1
  8503. //>>excludeEnd("ctx");
  8504. ][0]).__minus($recv($recv(aPoint)._asPoint())._y()));
  8505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8506. }, function($ctx1) {$ctx1.fill(self,"-",{aPoint:aPoint})});
  8507. //>>excludeEnd("ctx");
  8508. }; }),
  8509. $globals.Point);
  8510. $core.addMethod(
  8511. $core.method({
  8512. selector: "/",
  8513. protocol: "arithmetic",
  8514. //>>excludeStart("ide", pragmas.excludeIdeData);
  8515. args: ["aPoint"],
  8516. source: "/ aPoint\x0a\x09^ Point x: self x / aPoint asPoint x y: self y / aPoint asPoint y",
  8517. referencedClasses: ["Point"],
  8518. //>>excludeEnd("ide");
  8519. pragmas: [],
  8520. messageSends: ["x:y:", "/", "x", "asPoint", "y"]
  8521. }, function ($methodClass){ return function (aPoint){
  8522. var self=this,$self=this;
  8523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8524. return $core.withContext(function($ctx1) {
  8525. //>>excludeEnd("ctx");
  8526. return $recv($globals.Point)._x_y_([$recv([$self._x()
  8527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8528. ,$ctx1.sendIdx["x"]=1
  8529. //>>excludeEnd("ctx");
  8530. ][0]).__slash($recv([$recv(aPoint)._asPoint()
  8531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8532. ,$ctx1.sendIdx["asPoint"]=1
  8533. //>>excludeEnd("ctx");
  8534. ][0])._x())
  8535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8536. ,$ctx1.sendIdx["/"]=1
  8537. //>>excludeEnd("ctx");
  8538. ][0],$recv([$self._y()
  8539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8540. ,$ctx1.sendIdx["y"]=1
  8541. //>>excludeEnd("ctx");
  8542. ][0]).__slash($recv($recv(aPoint)._asPoint())._y()));
  8543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8544. }, function($ctx1) {$ctx1.fill(self,"/",{aPoint:aPoint})});
  8545. //>>excludeEnd("ctx");
  8546. }; }),
  8547. $globals.Point);
  8548. $core.addMethod(
  8549. $core.method({
  8550. selector: "<",
  8551. protocol: "comparing",
  8552. //>>excludeStart("ide", pragmas.excludeIdeData);
  8553. args: ["aPoint"],
  8554. source: "< aPoint\x0a\x09^ self x < aPoint x and: [\x0a\x09\x09self y < aPoint y ]",
  8555. referencedClasses: [],
  8556. //>>excludeEnd("ide");
  8557. pragmas: [],
  8558. messageSends: ["and:", "<", "x", "y"]
  8559. }, function ($methodClass){ return function (aPoint){
  8560. var self=this,$self=this;
  8561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8562. return $core.withContext(function($ctx1) {
  8563. //>>excludeEnd("ctx");
  8564. if($core.assert([$recv([$self._x()
  8565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8566. ,$ctx1.sendIdx["x"]=1
  8567. //>>excludeEnd("ctx");
  8568. ][0]).__lt($recv(aPoint)._x())
  8569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8570. ,$ctx1.sendIdx["<"]=1
  8571. //>>excludeEnd("ctx");
  8572. ][0])){
  8573. return $recv([$self._y()
  8574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8575. ,$ctx1.sendIdx["y"]=1
  8576. //>>excludeEnd("ctx");
  8577. ][0]).__lt($recv(aPoint)._y());
  8578. } else {
  8579. return false;
  8580. }
  8581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8582. }, function($ctx1) {$ctx1.fill(self,"<",{aPoint:aPoint})});
  8583. //>>excludeEnd("ctx");
  8584. }; }),
  8585. $globals.Point);
  8586. $core.addMethod(
  8587. $core.method({
  8588. selector: "<=",
  8589. protocol: "comparing",
  8590. //>>excludeStart("ide", pragmas.excludeIdeData);
  8591. args: ["aPoint"],
  8592. source: "<= aPoint\x0a\x09^ self x <= aPoint x and: [\x0a\x09\x09self y <= aPoint y ]",
  8593. referencedClasses: [],
  8594. //>>excludeEnd("ide");
  8595. pragmas: [],
  8596. messageSends: ["and:", "<=", "x", "y"]
  8597. }, function ($methodClass){ return function (aPoint){
  8598. var self=this,$self=this;
  8599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8600. return $core.withContext(function($ctx1) {
  8601. //>>excludeEnd("ctx");
  8602. if($core.assert([$recv([$self._x()
  8603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8604. ,$ctx1.sendIdx["x"]=1
  8605. //>>excludeEnd("ctx");
  8606. ][0]).__lt_eq($recv(aPoint)._x())
  8607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8608. ,$ctx1.sendIdx["<="]=1
  8609. //>>excludeEnd("ctx");
  8610. ][0])){
  8611. return $recv([$self._y()
  8612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8613. ,$ctx1.sendIdx["y"]=1
  8614. //>>excludeEnd("ctx");
  8615. ][0]).__lt_eq($recv(aPoint)._y());
  8616. } else {
  8617. return false;
  8618. }
  8619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8620. }, function($ctx1) {$ctx1.fill(self,"<=",{aPoint:aPoint})});
  8621. //>>excludeEnd("ctx");
  8622. }; }),
  8623. $globals.Point);
  8624. $core.addMethod(
  8625. $core.method({
  8626. selector: "=",
  8627. protocol: "comparing",
  8628. //>>excludeStart("ide", pragmas.excludeIdeData);
  8629. args: ["aPoint"],
  8630. source: "= aPoint\x0a\x09^ aPoint class = self class and: [\x0a\x09\x09(aPoint x = self x) & (aPoint y = self y) ]",
  8631. referencedClasses: [],
  8632. //>>excludeEnd("ide");
  8633. pragmas: [],
  8634. messageSends: ["and:", "=", "class", "&", "x", "y"]
  8635. }, function ($methodClass){ return function (aPoint){
  8636. var self=this,$self=this;
  8637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8638. return $core.withContext(function($ctx1) {
  8639. //>>excludeEnd("ctx");
  8640. if($core.assert([$recv([$recv(aPoint)._class()
  8641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8642. ,$ctx1.sendIdx["class"]=1
  8643. //>>excludeEnd("ctx");
  8644. ][0]).__eq($self._class())
  8645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8646. ,$ctx1.sendIdx["="]=1
  8647. //>>excludeEnd("ctx");
  8648. ][0])){
  8649. return $recv([$recv([$recv(aPoint)._x()
  8650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8651. ,$ctx1.sendIdx["x"]=1
  8652. //>>excludeEnd("ctx");
  8653. ][0]).__eq($self._x())
  8654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8655. ,$ctx1.sendIdx["="]=2
  8656. //>>excludeEnd("ctx");
  8657. ][0]).__and($recv([$recv(aPoint)._y()
  8658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8659. ,$ctx1.sendIdx["y"]=1
  8660. //>>excludeEnd("ctx");
  8661. ][0]).__eq($self._y()));
  8662. } else {
  8663. return false;
  8664. }
  8665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8666. }, function($ctx1) {$ctx1.fill(self,"=",{aPoint:aPoint})});
  8667. //>>excludeEnd("ctx");
  8668. }; }),
  8669. $globals.Point);
  8670. $core.addMethod(
  8671. $core.method({
  8672. selector: ">",
  8673. protocol: "comparing",
  8674. //>>excludeStart("ide", pragmas.excludeIdeData);
  8675. args: ["aPoint"],
  8676. source: "> aPoint\x0a\x09^ self x > aPoint x and: [\x0a\x09\x09self y > aPoint y ]",
  8677. referencedClasses: [],
  8678. //>>excludeEnd("ide");
  8679. pragmas: [],
  8680. messageSends: ["and:", ">", "x", "y"]
  8681. }, function ($methodClass){ return function (aPoint){
  8682. var self=this,$self=this;
  8683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8684. return $core.withContext(function($ctx1) {
  8685. //>>excludeEnd("ctx");
  8686. if($core.assert([$recv([$self._x()
  8687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8688. ,$ctx1.sendIdx["x"]=1
  8689. //>>excludeEnd("ctx");
  8690. ][0]).__gt($recv(aPoint)._x())
  8691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8692. ,$ctx1.sendIdx[">"]=1
  8693. //>>excludeEnd("ctx");
  8694. ][0])){
  8695. return $recv([$self._y()
  8696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8697. ,$ctx1.sendIdx["y"]=1
  8698. //>>excludeEnd("ctx");
  8699. ][0]).__gt($recv(aPoint)._y());
  8700. } else {
  8701. return false;
  8702. }
  8703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8704. }, function($ctx1) {$ctx1.fill(self,">",{aPoint:aPoint})});
  8705. //>>excludeEnd("ctx");
  8706. }; }),
  8707. $globals.Point);
  8708. $core.addMethod(
  8709. $core.method({
  8710. selector: ">=",
  8711. protocol: "comparing",
  8712. //>>excludeStart("ide", pragmas.excludeIdeData);
  8713. args: ["aPoint"],
  8714. source: ">= aPoint\x0a\x09^ self x >= aPoint x and: [\x0a\x09\x09self y >= aPoint y ]",
  8715. referencedClasses: [],
  8716. //>>excludeEnd("ide");
  8717. pragmas: [],
  8718. messageSends: ["and:", ">=", "x", "y"]
  8719. }, function ($methodClass){ return function (aPoint){
  8720. var self=this,$self=this;
  8721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8722. return $core.withContext(function($ctx1) {
  8723. //>>excludeEnd("ctx");
  8724. if($core.assert([$recv([$self._x()
  8725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8726. ,$ctx1.sendIdx["x"]=1
  8727. //>>excludeEnd("ctx");
  8728. ][0]).__gt_eq($recv(aPoint)._x())
  8729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8730. ,$ctx1.sendIdx[">="]=1
  8731. //>>excludeEnd("ctx");
  8732. ][0])){
  8733. return $recv([$self._y()
  8734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8735. ,$ctx1.sendIdx["y"]=1
  8736. //>>excludeEnd("ctx");
  8737. ][0]).__gt_eq($recv(aPoint)._y());
  8738. } else {
  8739. return false;
  8740. }
  8741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8742. }, function($ctx1) {$ctx1.fill(self,">=",{aPoint:aPoint})});
  8743. //>>excludeEnd("ctx");
  8744. }; }),
  8745. $globals.Point);
  8746. $core.addMethod(
  8747. $core.method({
  8748. selector: "angle",
  8749. protocol: "geometry",
  8750. //>>excludeStart("ide", pragmas.excludeIdeData);
  8751. args: [],
  8752. source: "angle\x0a\x09^ self y arcTan: self x",
  8753. referencedClasses: [],
  8754. //>>excludeEnd("ide");
  8755. pragmas: [],
  8756. messageSends: ["arcTan:", "y", "x"]
  8757. }, function ($methodClass){ return function (){
  8758. var self=this,$self=this;
  8759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8760. return $core.withContext(function($ctx1) {
  8761. //>>excludeEnd("ctx");
  8762. return $recv($self._y())._arcTan_($self._x());
  8763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8764. }, function($ctx1) {$ctx1.fill(self,"angle",{})});
  8765. //>>excludeEnd("ctx");
  8766. }; }),
  8767. $globals.Point);
  8768. $core.addMethod(
  8769. $core.method({
  8770. selector: "asPoint",
  8771. protocol: "converting",
  8772. //>>excludeStart("ide", pragmas.excludeIdeData);
  8773. args: [],
  8774. source: "asPoint\x0a\x09^ self",
  8775. referencedClasses: [],
  8776. //>>excludeEnd("ide");
  8777. pragmas: [],
  8778. messageSends: []
  8779. }, function ($methodClass){ return function (){
  8780. var self=this,$self=this;
  8781. return self;
  8782. }; }),
  8783. $globals.Point);
  8784. $core.addMethod(
  8785. $core.method({
  8786. selector: "corner:",
  8787. protocol: "rectangle creation",
  8788. //>>excludeStart("ide", pragmas.excludeIdeData);
  8789. args: ["aPoint"],
  8790. source: "corner: aPoint\x0a\x09^ Rectangle origin: self corner: aPoint",
  8791. referencedClasses: ["Rectangle"],
  8792. //>>excludeEnd("ide");
  8793. pragmas: [],
  8794. messageSends: ["origin:corner:"]
  8795. }, function ($methodClass){ return function (aPoint){
  8796. var self=this,$self=this;
  8797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8798. return $core.withContext(function($ctx1) {
  8799. //>>excludeEnd("ctx");
  8800. return $recv($globals.Rectangle)._origin_corner_(self,aPoint);
  8801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8802. }, function($ctx1) {$ctx1.fill(self,"corner:",{aPoint:aPoint})});
  8803. //>>excludeEnd("ctx");
  8804. }; }),
  8805. $globals.Point);
  8806. $core.addMethod(
  8807. $core.method({
  8808. selector: "dist:",
  8809. protocol: "transforming",
  8810. //>>excludeStart("ide", pragmas.excludeIdeData);
  8811. args: ["aPoint"],
  8812. source: "dist: aPoint \x0a\x09\x22Answer the distance between aPoint and the receiver.\x22\x0a\x09| dx dy |\x0a\x09dx := aPoint x - x.\x0a\x09dy := aPoint y - y.\x0a\x09^ (dx * dx + (dy * dy)) sqrt",
  8813. referencedClasses: [],
  8814. //>>excludeEnd("ide");
  8815. pragmas: [],
  8816. messageSends: ["-", "x", "y", "sqrt", "+", "*"]
  8817. }, function ($methodClass){ return function (aPoint){
  8818. var self=this,$self=this;
  8819. var dx,dy;
  8820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8821. return $core.withContext(function($ctx1) {
  8822. //>>excludeEnd("ctx");
  8823. dx=[$recv($recv(aPoint)._x()).__minus($self.x)
  8824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8825. ,$ctx1.sendIdx["-"]=1
  8826. //>>excludeEnd("ctx");
  8827. ][0];
  8828. dy=$recv($recv(aPoint)._y()).__minus($self.y);
  8829. return $recv($recv([$recv(dx).__star(dx)
  8830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8831. ,$ctx1.sendIdx["*"]=1
  8832. //>>excludeEnd("ctx");
  8833. ][0]).__plus($recv(dy).__star(dy)))._sqrt();
  8834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8835. }, function($ctx1) {$ctx1.fill(self,"dist:",{aPoint:aPoint,dx:dx,dy:dy})});
  8836. //>>excludeEnd("ctx");
  8837. }; }),
  8838. $globals.Point);
  8839. $core.addMethod(
  8840. $core.method({
  8841. selector: "dotProduct:",
  8842. protocol: "point functions",
  8843. //>>excludeStart("ide", pragmas.excludeIdeData);
  8844. args: ["aPoint"],
  8845. source: "dotProduct: aPoint\x0a\x09^ (x * aPoint x) + (y * aPoint y)",
  8846. referencedClasses: [],
  8847. //>>excludeEnd("ide");
  8848. pragmas: [],
  8849. messageSends: ["+", "*", "x", "y"]
  8850. }, function ($methodClass){ return function (aPoint){
  8851. var self=this,$self=this;
  8852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8853. return $core.withContext(function($ctx1) {
  8854. //>>excludeEnd("ctx");
  8855. return $recv([$recv($self.x).__star($recv(aPoint)._x())
  8856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8857. ,$ctx1.sendIdx["*"]=1
  8858. //>>excludeEnd("ctx");
  8859. ][0]).__plus($recv($self.y).__star($recv(aPoint)._y()));
  8860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8861. }, function($ctx1) {$ctx1.fill(self,"dotProduct:",{aPoint:aPoint})});
  8862. //>>excludeEnd("ctx");
  8863. }; }),
  8864. $globals.Point);
  8865. $core.addMethod(
  8866. $core.method({
  8867. selector: "extent:",
  8868. protocol: "rectangle creation",
  8869. //>>excludeStart("ide", pragmas.excludeIdeData);
  8870. args: ["aPoint"],
  8871. source: "extent: aPoint\x0a\x09^ Rectangle origin: self extent: aPoint",
  8872. referencedClasses: ["Rectangle"],
  8873. //>>excludeEnd("ide");
  8874. pragmas: [],
  8875. messageSends: ["origin:extent:"]
  8876. }, function ($methodClass){ return function (aPoint){
  8877. var self=this,$self=this;
  8878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8879. return $core.withContext(function($ctx1) {
  8880. //>>excludeEnd("ctx");
  8881. return $recv($globals.Rectangle)._origin_extent_(self,aPoint);
  8882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8883. }, function($ctx1) {$ctx1.fill(self,"extent:",{aPoint:aPoint})});
  8884. //>>excludeEnd("ctx");
  8885. }; }),
  8886. $globals.Point);
  8887. $core.addMethod(
  8888. $core.method({
  8889. selector: "normal",
  8890. protocol: "point functions",
  8891. //>>excludeStart("ide", pragmas.excludeIdeData);
  8892. args: [],
  8893. source: "normal\x0a\x09\x22Answer a Point representing the unit vector rotated 90 deg clockwise. For the zero point return -1@0.\x22\x0a\x0a\x09| n d |\x0a\x09n := y negated @ x.\x0a\x09(d := (n x * n x + (n y * n y))) = 0\x0a\x09\x09 ifTrue: [ ^ -1 @0 ].\x0a\x09^ n / d sqrt",
  8894. referencedClasses: [],
  8895. //>>excludeEnd("ide");
  8896. pragmas: [],
  8897. messageSends: ["@", "negated", "ifTrue:", "=", "+", "*", "x", "y", "/", "sqrt"]
  8898. }, function ($methodClass){ return function (){
  8899. var self=this,$self=this;
  8900. var n,d;
  8901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8902. return $core.withContext(function($ctx1) {
  8903. //>>excludeEnd("ctx");
  8904. n=[$recv($recv($self.y)._negated()).__at($self.x)
  8905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8906. ,$ctx1.sendIdx["@"]=1
  8907. //>>excludeEnd("ctx");
  8908. ][0];
  8909. d=$recv([$recv([$recv(n)._x()
  8910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8911. ,$ctx1.sendIdx["x"]=1
  8912. //>>excludeEnd("ctx");
  8913. ][0]).__star($recv(n)._x())
  8914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8915. ,$ctx1.sendIdx["*"]=1
  8916. //>>excludeEnd("ctx");
  8917. ][0]).__plus($recv([$recv(n)._y()
  8918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8919. ,$ctx1.sendIdx["y"]=1
  8920. //>>excludeEnd("ctx");
  8921. ][0]).__star($recv(n)._y()));
  8922. if($core.assert($recv(d).__eq((0)))){
  8923. return (-1).__at((0));
  8924. }
  8925. return $recv(n).__slash($recv(d)._sqrt());
  8926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8927. }, function($ctx1) {$ctx1.fill(self,"normal",{n:n,d:d})});
  8928. //>>excludeEnd("ctx");
  8929. }; }),
  8930. $globals.Point);
  8931. $core.addMethod(
  8932. $core.method({
  8933. selector: "normalized",
  8934. protocol: "point functions",
  8935. //>>excludeStart("ide", pragmas.excludeIdeData);
  8936. args: [],
  8937. source: "normalized\x0a\x09| r |\x0a\x09r := self r.\x0a\x09\x0a\x09r = 0\x0a\x09\x09ifTrue: [ ^ Point x: 0 y: 0 ]\x0a\x09\x09ifFalse: [ ^ Point x: x / r y: y / r ]",
  8938. referencedClasses: ["Point"],
  8939. //>>excludeEnd("ide");
  8940. pragmas: [],
  8941. messageSends: ["r", "ifTrue:ifFalse:", "=", "x:y:", "/"]
  8942. }, function ($methodClass){ return function (){
  8943. var self=this,$self=this;
  8944. var r;
  8945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8946. return $core.withContext(function($ctx1) {
  8947. //>>excludeEnd("ctx");
  8948. r=$self._r();
  8949. if($core.assert($recv(r).__eq((0)))){
  8950. return [$recv($globals.Point)._x_y_((0),(0))
  8951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8952. ,$ctx1.sendIdx["x:y:"]=1
  8953. //>>excludeEnd("ctx");
  8954. ][0];
  8955. } else {
  8956. return $recv($globals.Point)._x_y_([$recv($self.x).__slash(r)
  8957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8958. ,$ctx1.sendIdx["/"]=1
  8959. //>>excludeEnd("ctx");
  8960. ][0],$recv($self.y).__slash(r));
  8961. }
  8962. return self;
  8963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8964. }, function($ctx1) {$ctx1.fill(self,"normalized",{r:r})});
  8965. //>>excludeEnd("ctx");
  8966. }; }),
  8967. $globals.Point);
  8968. $core.addMethod(
  8969. $core.method({
  8970. selector: "printOn:",
  8971. protocol: "printing",
  8972. //>>excludeStart("ide", pragmas.excludeIdeData);
  8973. args: ["aStream"],
  8974. source: "printOn: aStream\x0a\x09\x22Print receiver in classic x@y notation.\x22\x0a\x0a\x09x printOn: aStream.\x0a\x09\x0a\x09aStream nextPutAll: '@'.\x0a\x09(y notNil and: [ y negative ]) ifTrue: [\x0a\x09\x09\x09\x22Avoid ambiguous @- construct\x22\x0a\x09\x09\x09aStream space ].\x0a\x09\x0a\x09y printOn: aStream",
  8975. referencedClasses: [],
  8976. //>>excludeEnd("ide");
  8977. pragmas: [],
  8978. messageSends: ["printOn:", "nextPutAll:", "ifTrue:", "and:", "notNil", "negative", "space"]
  8979. }, function ($methodClass){ return function (aStream){
  8980. var self=this,$self=this;
  8981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8982. return $core.withContext(function($ctx1) {
  8983. //>>excludeEnd("ctx");
  8984. var $1;
  8985. [$recv($self.x)._printOn_(aStream)
  8986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8987. ,$ctx1.sendIdx["printOn:"]=1
  8988. //>>excludeEnd("ctx");
  8989. ][0];
  8990. $recv(aStream)._nextPutAll_("@");
  8991. if($core.assert($recv($self.y)._notNil())){
  8992. $1=$recv($self.y)._negative();
  8993. } else {
  8994. $1=false;
  8995. }
  8996. if($core.assert($1)){
  8997. $recv(aStream)._space();
  8998. }
  8999. $recv($self.y)._printOn_(aStream);
  9000. return self;
  9001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9002. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  9003. //>>excludeEnd("ctx");
  9004. }; }),
  9005. $globals.Point);
  9006. $core.addMethod(
  9007. $core.method({
  9008. selector: "r",
  9009. protocol: "polar coordinates",
  9010. //>>excludeStart("ide", pragmas.excludeIdeData);
  9011. args: [],
  9012. source: "r\x0a\x09^ ((x * x) + (y * y)) sqrt",
  9013. referencedClasses: [],
  9014. //>>excludeEnd("ide");
  9015. pragmas: [],
  9016. messageSends: ["sqrt", "+", "*"]
  9017. }, function ($methodClass){ return function (){
  9018. var self=this,$self=this;
  9019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9020. return $core.withContext(function($ctx1) {
  9021. //>>excludeEnd("ctx");
  9022. return $recv($recv([$recv($self.x).__star($self.x)
  9023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9024. ,$ctx1.sendIdx["*"]=1
  9025. //>>excludeEnd("ctx");
  9026. ][0]).__plus($recv($self.y).__star($self.y)))._sqrt();
  9027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9028. }, function($ctx1) {$ctx1.fill(self,"r",{})});
  9029. //>>excludeEnd("ctx");
  9030. }; }),
  9031. $globals.Point);
  9032. $core.addMethod(
  9033. $core.method({
  9034. selector: "rectangle:",
  9035. protocol: "rectangle creation",
  9036. //>>excludeStart("ide", pragmas.excludeIdeData);
  9037. args: ["aPoint"],
  9038. source: "rectangle: aPoint\x0a\x09^ Rectangle point: self point: aPoint",
  9039. referencedClasses: ["Rectangle"],
  9040. //>>excludeEnd("ide");
  9041. pragmas: [],
  9042. messageSends: ["point:point:"]
  9043. }, function ($methodClass){ return function (aPoint){
  9044. var self=this,$self=this;
  9045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9046. return $core.withContext(function($ctx1) {
  9047. //>>excludeEnd("ctx");
  9048. return $recv($globals.Rectangle)._point_point_(self,aPoint);
  9049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9050. }, function($ctx1) {$ctx1.fill(self,"rectangle:",{aPoint:aPoint})});
  9051. //>>excludeEnd("ctx");
  9052. }; }),
  9053. $globals.Point);
  9054. $core.addMethod(
  9055. $core.method({
  9056. selector: "translateBy:",
  9057. protocol: "transforming",
  9058. //>>excludeStart("ide", pragmas.excludeIdeData);
  9059. args: ["delta"],
  9060. source: "translateBy: delta\x0a\x09\x22Answer a Point translated by delta (an instance of Point).\x22\x0a\x09^ (delta x + x) @ (delta y + y)",
  9061. referencedClasses: [],
  9062. //>>excludeEnd("ide");
  9063. pragmas: [],
  9064. messageSends: ["@", "+", "x", "y"]
  9065. }, function ($methodClass){ return function (delta){
  9066. var self=this,$self=this;
  9067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9068. return $core.withContext(function($ctx1) {
  9069. //>>excludeEnd("ctx");
  9070. return $recv([$recv($recv(delta)._x()).__plus($self.x)
  9071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9072. ,$ctx1.sendIdx["+"]=1
  9073. //>>excludeEnd("ctx");
  9074. ][0]).__at($recv($recv(delta)._y()).__plus($self.y));
  9075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9076. }, function($ctx1) {$ctx1.fill(self,"translateBy:",{delta:delta})});
  9077. //>>excludeEnd("ctx");
  9078. }; }),
  9079. $globals.Point);
  9080. $core.addMethod(
  9081. $core.method({
  9082. selector: "x",
  9083. protocol: "accessing",
  9084. //>>excludeStart("ide", pragmas.excludeIdeData);
  9085. args: [],
  9086. source: "x\x0a\x09^ x",
  9087. referencedClasses: [],
  9088. //>>excludeEnd("ide");
  9089. pragmas: [],
  9090. messageSends: []
  9091. }, function ($methodClass){ return function (){
  9092. var self=this,$self=this;
  9093. return $self.x;
  9094. }; }),
  9095. $globals.Point);
  9096. $core.addMethod(
  9097. $core.method({
  9098. selector: "x:",
  9099. protocol: "accessing",
  9100. //>>excludeStart("ide", pragmas.excludeIdeData);
  9101. args: ["aNumber"],
  9102. source: "x: aNumber\x0a\x09x := aNumber",
  9103. referencedClasses: [],
  9104. //>>excludeEnd("ide");
  9105. pragmas: [],
  9106. messageSends: []
  9107. }, function ($methodClass){ return function (aNumber){
  9108. var self=this,$self=this;
  9109. $self.x=aNumber;
  9110. return self;
  9111. }; }),
  9112. $globals.Point);
  9113. $core.addMethod(
  9114. $core.method({
  9115. selector: "y",
  9116. protocol: "accessing",
  9117. //>>excludeStart("ide", pragmas.excludeIdeData);
  9118. args: [],
  9119. source: "y\x0a\x09^ y",
  9120. referencedClasses: [],
  9121. //>>excludeEnd("ide");
  9122. pragmas: [],
  9123. messageSends: []
  9124. }, function ($methodClass){ return function (){
  9125. var self=this,$self=this;
  9126. return $self.y;
  9127. }; }),
  9128. $globals.Point);
  9129. $core.addMethod(
  9130. $core.method({
  9131. selector: "y:",
  9132. protocol: "accessing",
  9133. //>>excludeStart("ide", pragmas.excludeIdeData);
  9134. args: ["aNumber"],
  9135. source: "y: aNumber\x0a\x09y := aNumber",
  9136. referencedClasses: [],
  9137. //>>excludeEnd("ide");
  9138. pragmas: [],
  9139. messageSends: []
  9140. }, function ($methodClass){ return function (aNumber){
  9141. var self=this,$self=this;
  9142. $self.y=aNumber;
  9143. return self;
  9144. }; }),
  9145. $globals.Point);
  9146. $core.addMethod(
  9147. $core.method({
  9148. selector: "classTag",
  9149. protocol: "accessing",
  9150. //>>excludeStart("ide", pragmas.excludeIdeData);
  9151. args: [],
  9152. 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^ 'magnitude'",
  9153. referencedClasses: [],
  9154. //>>excludeEnd("ide");
  9155. pragmas: [],
  9156. messageSends: []
  9157. }, function ($methodClass){ return function (){
  9158. var self=this,$self=this;
  9159. return "magnitude";
  9160. }; }),
  9161. $globals.Point.a$cls);
  9162. $core.addMethod(
  9163. $core.method({
  9164. selector: "x:y:",
  9165. protocol: "instance creation",
  9166. //>>excludeStart("ide", pragmas.excludeIdeData);
  9167. args: ["aNumber", "anotherNumber"],
  9168. source: "x: aNumber y: anotherNumber\x0a\x09^ self new\x0a\x09\x09x: aNumber;\x0a\x09\x09y: anotherNumber;\x0a\x09\x09yourself",
  9169. referencedClasses: [],
  9170. //>>excludeEnd("ide");
  9171. pragmas: [],
  9172. messageSends: ["x:", "new", "y:", "yourself"]
  9173. }, function ($methodClass){ return function (aNumber,anotherNumber){
  9174. var self=this,$self=this;
  9175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9176. return $core.withContext(function($ctx1) {
  9177. //>>excludeEnd("ctx");
  9178. var $1;
  9179. $1=$self._new();
  9180. $recv($1)._x_(aNumber);
  9181. $recv($1)._y_(anotherNumber);
  9182. return $recv($1)._yourself();
  9183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9184. }, function($ctx1) {$ctx1.fill(self,"x:y:",{aNumber:aNumber,anotherNumber:anotherNumber})});
  9185. //>>excludeEnd("ctx");
  9186. }; }),
  9187. $globals.Point.a$cls);
  9188. $core.addClass("Random", $globals.Object, "Kernel-Objects");
  9189. //>>excludeStart("ide", pragmas.excludeIdeData);
  9190. $globals.Random.comment="I an used to generate a random number and I am implemented as a trivial wrapper around javascript `Math.random()`.\x0a\x0a## API\x0a\x0aThe typical use case it to use the `#next` method like the following:\x0a\x0a\x09Random new next\x0a\x0aThis will return a float x where x < 1 and x > 0. If you want a random integer from 1 to 10 you can use `#atRandom`\x0a\x0a\x0910 atRandom\x0a\x0aA random number in a specific interval can be obtained with the following:\x0a\x0a\x09(3 to: 7) atRandom\x0a\x0aBe aware that `#to:` does not create an Interval as in other Smalltalk implementations but in fact an `Array` of numbers, so it's better to use:\x0a\x0a\x095 atRandom + 2\x0a\x0aSince `#atRandom` is implemented in `SequencableCollection` you can easy pick an element at random:\x0a\x0a\x09#('a' 'b' 'c') atRandom\x0a\x0aAs well as letter from a `String`:\x0a\x0a\x09'abc' atRandom\x0a\x0aSince Amber does not have Characters this will return a `String` of length 1 like for example `'b'`.";
  9191. //>>excludeEnd("ide");
  9192. $core.addMethod(
  9193. $core.method({
  9194. selector: "next",
  9195. protocol: "accessing",
  9196. //>>excludeStart("ide", pragmas.excludeIdeData);
  9197. args: [],
  9198. source: "next\x0a\x09<inlineJS: 'return Math.random()'>",
  9199. referencedClasses: [],
  9200. //>>excludeEnd("ide");
  9201. pragmas: [["inlineJS:", ["return Math.random()"]]],
  9202. messageSends: []
  9203. }, function ($methodClass){ return function (){
  9204. var self=this,$self=this;
  9205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9206. return $core.withContext(function($ctx1) {
  9207. //>>excludeEnd("ctx");
  9208. return Math.random();
  9209. return self;
  9210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9211. }, function($ctx1) {$ctx1.fill(self,"next",{})});
  9212. //>>excludeEnd("ctx");
  9213. }; }),
  9214. $globals.Random);
  9215. $core.addMethod(
  9216. $core.method({
  9217. selector: "next:",
  9218. protocol: "accessing",
  9219. //>>excludeStart("ide", pragmas.excludeIdeData);
  9220. args: ["anInteger"],
  9221. source: "next: anInteger\x0a\x09^ (1 to: anInteger) collect: [ :each | self next ]",
  9222. referencedClasses: [],
  9223. //>>excludeEnd("ide");
  9224. pragmas: [],
  9225. messageSends: ["collect:", "to:", "next"]
  9226. }, function ($methodClass){ return function (anInteger){
  9227. var self=this,$self=this;
  9228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9229. return $core.withContext(function($ctx1) {
  9230. //>>excludeEnd("ctx");
  9231. return $recv((1)._to_(anInteger))._collect_((function(each){
  9232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9233. return $core.withContext(function($ctx2) {
  9234. //>>excludeEnd("ctx");
  9235. return $self._next();
  9236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9237. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  9238. //>>excludeEnd("ctx");
  9239. }));
  9240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9241. }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger})});
  9242. //>>excludeEnd("ctx");
  9243. }; }),
  9244. $globals.Random);
  9245. $core.addClass("Rectangle", $globals.Object, "Kernel-Objects");
  9246. $core.setSlots($globals.Rectangle, ["origin", "corner"]);
  9247. //>>excludeStart("ide", pragmas.excludeIdeData);
  9248. $globals.Rectangle.comment="I represent a Rectangle defined by my two corners.\x0a\x0aThe simplest way to create an instance is using Point methods:\x0a\x0a 1@1 corner: 2@2\x0a\x0aWIll create a rectangle with 1@1 as the top left and 2@2 at the bottom right.\x0a\x0a 1@1 extent: 1@1\x0a\x0aWill create the same rectangle, defining an origin and a size instead of an origin and a corner.";
  9249. //>>excludeEnd("ide");
  9250. $core.addMethod(
  9251. $core.method({
  9252. selector: "=",
  9253. protocol: "testing",
  9254. //>>excludeStart("ide", pragmas.excludeIdeData);
  9255. args: ["aRectangle"],
  9256. source: "= aRectangle\x0a\x09^ origin = aRectangle origin and: [ corner = aRectangle corner ]",
  9257. referencedClasses: [],
  9258. //>>excludeEnd("ide");
  9259. pragmas: [],
  9260. messageSends: ["and:", "=", "origin", "corner"]
  9261. }, function ($methodClass){ return function (aRectangle){
  9262. var self=this,$self=this;
  9263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9264. return $core.withContext(function($ctx1) {
  9265. //>>excludeEnd("ctx");
  9266. if($core.assert([$recv($self.origin).__eq($recv(aRectangle)._origin())
  9267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9268. ,$ctx1.sendIdx["="]=1
  9269. //>>excludeEnd("ctx");
  9270. ][0])){
  9271. return $recv($self.corner).__eq($recv(aRectangle)._corner());
  9272. } else {
  9273. return false;
  9274. }
  9275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9276. }, function($ctx1) {$ctx1.fill(self,"=",{aRectangle:aRectangle})});
  9277. //>>excludeEnd("ctx");
  9278. }; }),
  9279. $globals.Rectangle);
  9280. $core.addMethod(
  9281. $core.method({
  9282. selector: "containsPoint:",
  9283. protocol: "testing",
  9284. //>>excludeStart("ide", pragmas.excludeIdeData);
  9285. args: ["aPoint"],
  9286. source: "containsPoint: aPoint\x0a\x09^ origin <= aPoint and: [ corner >= aPoint ]",
  9287. referencedClasses: [],
  9288. //>>excludeEnd("ide");
  9289. pragmas: [],
  9290. messageSends: ["and:", "<=", ">="]
  9291. }, function ($methodClass){ return function (aPoint){
  9292. var self=this,$self=this;
  9293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9294. return $core.withContext(function($ctx1) {
  9295. //>>excludeEnd("ctx");
  9296. if($core.assert($recv($self.origin).__lt_eq(aPoint))){
  9297. return $recv($self.corner).__gt_eq(aPoint);
  9298. } else {
  9299. return false;
  9300. }
  9301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9302. }, function($ctx1) {$ctx1.fill(self,"containsPoint:",{aPoint:aPoint})});
  9303. //>>excludeEnd("ctx");
  9304. }; }),
  9305. $globals.Rectangle);
  9306. $core.addMethod(
  9307. $core.method({
  9308. selector: "containsRect:",
  9309. protocol: "testing",
  9310. //>>excludeStart("ide", pragmas.excludeIdeData);
  9311. args: ["aRect"],
  9312. source: "containsRect: aRect\x0a\x09^ aRect origin >= origin and: [ aRect corner <= corner ]",
  9313. referencedClasses: [],
  9314. //>>excludeEnd("ide");
  9315. pragmas: [],
  9316. messageSends: ["and:", ">=", "origin", "<=", "corner"]
  9317. }, function ($methodClass){ return function (aRect){
  9318. var self=this,$self=this;
  9319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9320. return $core.withContext(function($ctx1) {
  9321. //>>excludeEnd("ctx");
  9322. if($core.assert($recv($recv(aRect)._origin()).__gt_eq($self.origin))){
  9323. return $recv($recv(aRect)._corner()).__lt_eq($self.corner);
  9324. } else {
  9325. return false;
  9326. }
  9327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9328. }, function($ctx1) {$ctx1.fill(self,"containsRect:",{aRect:aRect})});
  9329. //>>excludeEnd("ctx");
  9330. }; }),
  9331. $globals.Rectangle);
  9332. $core.addMethod(
  9333. $core.method({
  9334. selector: "corner",
  9335. protocol: "accessing",
  9336. //>>excludeStart("ide", pragmas.excludeIdeData);
  9337. args: [],
  9338. source: "corner\x0a\x09^ corner",
  9339. referencedClasses: [],
  9340. //>>excludeEnd("ide");
  9341. pragmas: [],
  9342. messageSends: []
  9343. }, function ($methodClass){ return function (){
  9344. var self=this,$self=this;
  9345. return $self.corner;
  9346. }; }),
  9347. $globals.Rectangle);
  9348. $core.addMethod(
  9349. $core.method({
  9350. selector: "origin",
  9351. protocol: "accessing",
  9352. //>>excludeStart("ide", pragmas.excludeIdeData);
  9353. args: [],
  9354. source: "origin\x0a\x09^ origin",
  9355. referencedClasses: [],
  9356. //>>excludeEnd("ide");
  9357. pragmas: [],
  9358. messageSends: []
  9359. }, function ($methodClass){ return function (){
  9360. var self=this,$self=this;
  9361. return $self.origin;
  9362. }; }),
  9363. $globals.Rectangle);
  9364. $core.addMethod(
  9365. $core.method({
  9366. selector: "printOn:",
  9367. protocol: "testing",
  9368. //>>excludeStart("ide", pragmas.excludeIdeData);
  9369. args: ["aStream"],
  9370. source: "printOn: aStream\x0a\x09origin printOn: aStream.\x0a\x09aStream nextPutAll: ' corner: '.\x0a\x09corner printOn: aStream.",
  9371. referencedClasses: [],
  9372. //>>excludeEnd("ide");
  9373. pragmas: [],
  9374. messageSends: ["printOn:", "nextPutAll:"]
  9375. }, function ($methodClass){ return function (aStream){
  9376. var self=this,$self=this;
  9377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9378. return $core.withContext(function($ctx1) {
  9379. //>>excludeEnd("ctx");
  9380. [$recv($self.origin)._printOn_(aStream)
  9381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9382. ,$ctx1.sendIdx["printOn:"]=1
  9383. //>>excludeEnd("ctx");
  9384. ][0];
  9385. $recv(aStream)._nextPutAll_(" corner: ");
  9386. $recv($self.corner)._printOn_(aStream);
  9387. return self;
  9388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9389. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  9390. //>>excludeEnd("ctx");
  9391. }; }),
  9392. $globals.Rectangle);
  9393. $core.addMethod(
  9394. $core.method({
  9395. selector: "setPoint:point:",
  9396. protocol: "private",
  9397. //>>excludeStart("ide", pragmas.excludeIdeData);
  9398. args: ["pt1", "pt2"],
  9399. source: "setPoint: pt1 point: pt2\x0a\x0a\x09origin := (pt1 x min: pt2 x)@(pt1 y min: pt2 y).\x0a\x09corner := (pt1 x max: pt2 x)@(pt1 y max: pt2 y).",
  9400. referencedClasses: [],
  9401. //>>excludeEnd("ide");
  9402. pragmas: [],
  9403. messageSends: ["@", "min:", "x", "y", "max:"]
  9404. }, function ($methodClass){ return function (pt1,pt2){
  9405. var self=this,$self=this;
  9406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9407. return $core.withContext(function($ctx1) {
  9408. //>>excludeEnd("ctx");
  9409. $self.origin=[$recv([$recv([$recv(pt1)._x()
  9410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9411. ,$ctx1.sendIdx["x"]=1
  9412. //>>excludeEnd("ctx");
  9413. ][0])._min_([$recv(pt2)._x()
  9414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9415. ,$ctx1.sendIdx["x"]=2
  9416. //>>excludeEnd("ctx");
  9417. ][0])
  9418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9419. ,$ctx1.sendIdx["min:"]=1
  9420. //>>excludeEnd("ctx");
  9421. ][0]).__at($recv([$recv(pt1)._y()
  9422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9423. ,$ctx1.sendIdx["y"]=1
  9424. //>>excludeEnd("ctx");
  9425. ][0])._min_([$recv(pt2)._y()
  9426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9427. ,$ctx1.sendIdx["y"]=2
  9428. //>>excludeEnd("ctx");
  9429. ][0]))
  9430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9431. ,$ctx1.sendIdx["@"]=1
  9432. //>>excludeEnd("ctx");
  9433. ][0];
  9434. $self.corner=$recv([$recv([$recv(pt1)._x()
  9435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9436. ,$ctx1.sendIdx["x"]=3
  9437. //>>excludeEnd("ctx");
  9438. ][0])._max_($recv(pt2)._x())
  9439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9440. ,$ctx1.sendIdx["max:"]=1
  9441. //>>excludeEnd("ctx");
  9442. ][0]).__at($recv([$recv(pt1)._y()
  9443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9444. ,$ctx1.sendIdx["y"]=3
  9445. //>>excludeEnd("ctx");
  9446. ][0])._max_($recv(pt2)._y()));
  9447. return self;
  9448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9449. }, function($ctx1) {$ctx1.fill(self,"setPoint:point:",{pt1:pt1,pt2:pt2})});
  9450. //>>excludeEnd("ctx");
  9451. }; }),
  9452. $globals.Rectangle);
  9453. $core.addMethod(
  9454. $core.method({
  9455. selector: "origin:corner:",
  9456. protocol: "instance creation",
  9457. //>>excludeStart("ide", pragmas.excludeIdeData);
  9458. args: ["anOrigin", "aCorner"],
  9459. source: "origin: anOrigin corner: aCorner\x0a\x09^ self basicNew setPoint: anOrigin point: aCorner.",
  9460. referencedClasses: [],
  9461. //>>excludeEnd("ide");
  9462. pragmas: [],
  9463. messageSends: ["setPoint:point:", "basicNew"]
  9464. }, function ($methodClass){ return function (anOrigin,aCorner){
  9465. var self=this,$self=this;
  9466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9467. return $core.withContext(function($ctx1) {
  9468. //>>excludeEnd("ctx");
  9469. return $recv($self._basicNew())._setPoint_point_(anOrigin,aCorner);
  9470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9471. }, function($ctx1) {$ctx1.fill(self,"origin:corner:",{anOrigin:anOrigin,aCorner:aCorner})});
  9472. //>>excludeEnd("ctx");
  9473. }; }),
  9474. $globals.Rectangle.a$cls);
  9475. $core.addMethod(
  9476. $core.method({
  9477. selector: "origin:extent:",
  9478. protocol: "instance creation",
  9479. //>>excludeStart("ide", pragmas.excludeIdeData);
  9480. args: ["anOrigin", "anExtent"],
  9481. source: "origin: anOrigin extent: anExtent\x0a\x09^ self basicNew setPoint: anOrigin point: anOrigin + anExtent.",
  9482. referencedClasses: [],
  9483. //>>excludeEnd("ide");
  9484. pragmas: [],
  9485. messageSends: ["setPoint:point:", "basicNew", "+"]
  9486. }, function ($methodClass){ return function (anOrigin,anExtent){
  9487. var self=this,$self=this;
  9488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9489. return $core.withContext(function($ctx1) {
  9490. //>>excludeEnd("ctx");
  9491. return $recv($self._basicNew())._setPoint_point_(anOrigin,$recv(anOrigin).__plus(anExtent));
  9492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9493. }, function($ctx1) {$ctx1.fill(self,"origin:extent:",{anOrigin:anOrigin,anExtent:anExtent})});
  9494. //>>excludeEnd("ctx");
  9495. }; }),
  9496. $globals.Rectangle.a$cls);
  9497. $core.addMethod(
  9498. $core.method({
  9499. selector: "point:point:",
  9500. protocol: "instance creation",
  9501. //>>excludeStart("ide", pragmas.excludeIdeData);
  9502. args: ["anOrigin", "aCorner"],
  9503. source: "point: anOrigin point: aCorner\x0a\x09^ self basicNew setPoint: anOrigin point: aCorner.",
  9504. referencedClasses: [],
  9505. //>>excludeEnd("ide");
  9506. pragmas: [],
  9507. messageSends: ["setPoint:point:", "basicNew"]
  9508. }, function ($methodClass){ return function (anOrigin,aCorner){
  9509. var self=this,$self=this;
  9510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9511. return $core.withContext(function($ctx1) {
  9512. //>>excludeEnd("ctx");
  9513. return $recv($self._basicNew())._setPoint_point_(anOrigin,aCorner);
  9514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9515. }, function($ctx1) {$ctx1.fill(self,"point:point:",{anOrigin:anOrigin,aCorner:aCorner})});
  9516. //>>excludeEnd("ctx");
  9517. }; }),
  9518. $globals.Rectangle.a$cls);
  9519. $core.addClass("UndefinedObject", $globals.Object, "Kernel-Objects");
  9520. //>>excludeStart("ide", pragmas.excludeIdeData);
  9521. $globals.UndefinedObject.comment="I describe the behavior of my sole instance, `nil`. `nil` represents a prior value for variables that have not been initialized, or for results which are meaningless.\x0a\x0a`nil` is the Smalltalk equivalent of the `undefined` JavaScript object.\x0a\x0a__note:__ When sending messages to the `undefined` JavaScript object, it will be replaced by `nil`.";
  9522. //>>excludeEnd("ide");
  9523. $core.addMethod(
  9524. $core.method({
  9525. selector: "==",
  9526. protocol: "testing",
  9527. //>>excludeStart("ide", pragmas.excludeIdeData);
  9528. args: ["anObject"],
  9529. source: "== anObject\x0a\x09^ anObject isNil",
  9530. referencedClasses: [],
  9531. //>>excludeEnd("ide");
  9532. pragmas: [],
  9533. messageSends: ["isNil"]
  9534. }, function ($methodClass){ return function (anObject){
  9535. var self=this,$self=this;
  9536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9537. return $core.withContext(function($ctx1) {
  9538. //>>excludeEnd("ctx");
  9539. return $recv(anObject)._isNil();
  9540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9541. }, function($ctx1) {$ctx1.fill(self,"==",{anObject:anObject})});
  9542. //>>excludeEnd("ctx");
  9543. }; }),
  9544. $globals.UndefinedObject);
  9545. $core.addMethod(
  9546. $core.method({
  9547. selector: "asJavaScriptObject",
  9548. protocol: "converting",
  9549. //>>excludeStart("ide", pragmas.excludeIdeData);
  9550. args: [],
  9551. source: "asJavaScriptObject\x0a\x09^ null",
  9552. referencedClasses: [],
  9553. //>>excludeEnd("ide");
  9554. pragmas: [],
  9555. messageSends: []
  9556. }, function ($methodClass){ return function (){
  9557. var self=this,$self=this;
  9558. return null;
  9559. }; }),
  9560. $globals.UndefinedObject);
  9561. $core.addMethod(
  9562. $core.method({
  9563. selector: "asJavaScriptSource",
  9564. protocol: "converting",
  9565. //>>excludeStart("ide", pragmas.excludeIdeData);
  9566. args: [],
  9567. source: "asJavaScriptSource\x0a\x09^ 'null'",
  9568. referencedClasses: [],
  9569. //>>excludeEnd("ide");
  9570. pragmas: [],
  9571. messageSends: []
  9572. }, function ($methodClass){ return function (){
  9573. var self=this,$self=this;
  9574. return "null";
  9575. }; }),
  9576. $globals.UndefinedObject);
  9577. $core.addMethod(
  9578. $core.method({
  9579. selector: "deepCopy",
  9580. protocol: "copying",
  9581. //>>excludeStart("ide", pragmas.excludeIdeData);
  9582. args: [],
  9583. source: "deepCopy\x0a\x09^ self",
  9584. referencedClasses: [],
  9585. //>>excludeEnd("ide");
  9586. pragmas: [],
  9587. messageSends: []
  9588. }, function ($methodClass){ return function (){
  9589. var self=this,$self=this;
  9590. return self;
  9591. }; }),
  9592. $globals.UndefinedObject);
  9593. $core.addMethod(
  9594. $core.method({
  9595. selector: "identityHash",
  9596. protocol: "accessing",
  9597. //>>excludeStart("ide", pragmas.excludeIdeData);
  9598. args: [],
  9599. source: "identityHash\x0a\x09^ 'NIL'",
  9600. referencedClasses: [],
  9601. //>>excludeEnd("ide");
  9602. pragmas: [],
  9603. messageSends: []
  9604. }, function ($methodClass){ return function (){
  9605. var self=this,$self=this;
  9606. return "NIL";
  9607. }; }),
  9608. $globals.UndefinedObject);
  9609. $core.addMethod(
  9610. $core.method({
  9611. selector: "ifNil:",
  9612. protocol: "testing",
  9613. //>>excludeStart("ide", pragmas.excludeIdeData);
  9614. args: ["aBlock"],
  9615. source: "ifNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifNil: aBlock ifNotNil: []",
  9616. referencedClasses: [],
  9617. //>>excludeEnd("ide");
  9618. pragmas: [],
  9619. messageSends: ["ifNil:ifNotNil:"]
  9620. }, function ($methodClass){ return function (aBlock){
  9621. var self=this,$self=this;
  9622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9623. return $core.withContext(function($ctx1) {
  9624. //>>excludeEnd("ctx");
  9625. return $self._ifNil_ifNotNil_(aBlock,(function(){
  9626. }));
  9627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9628. }, function($ctx1) {$ctx1.fill(self,"ifNil:",{aBlock:aBlock})});
  9629. //>>excludeEnd("ctx");
  9630. }; }),
  9631. $globals.UndefinedObject);
  9632. $core.addMethod(
  9633. $core.method({
  9634. selector: "ifNil:ifNotNil:",
  9635. protocol: "testing",
  9636. //>>excludeStart("ide", pragmas.excludeIdeData);
  9637. args: ["aBlock", "anotherBlock"],
  9638. source: "ifNil: aBlock ifNotNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value",
  9639. referencedClasses: [],
  9640. //>>excludeEnd("ide");
  9641. pragmas: [],
  9642. messageSends: ["value"]
  9643. }, function ($methodClass){ return function (aBlock,anotherBlock){
  9644. var self=this,$self=this;
  9645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9646. return $core.withContext(function($ctx1) {
  9647. //>>excludeEnd("ctx");
  9648. return $recv(aBlock)._value();
  9649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9650. }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  9651. //>>excludeEnd("ctx");
  9652. }; }),
  9653. $globals.UndefinedObject);
  9654. $core.addMethod(
  9655. $core.method({
  9656. selector: "ifNotNil:",
  9657. protocol: "testing",
  9658. //>>excludeStart("ide", pragmas.excludeIdeData);
  9659. args: ["aBlock"],
  9660. source: "ifNotNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self",
  9661. referencedClasses: [],
  9662. //>>excludeEnd("ide");
  9663. pragmas: [],
  9664. messageSends: []
  9665. }, function ($methodClass){ return function (aBlock){
  9666. var self=this,$self=this;
  9667. return self;
  9668. }; }),
  9669. $globals.UndefinedObject);
  9670. $core.addMethod(
  9671. $core.method({
  9672. selector: "ifNotNil:ifNil:",
  9673. protocol: "testing",
  9674. //>>excludeStart("ide", pragmas.excludeIdeData);
  9675. args: ["aBlock", "anotherBlock"],
  9676. source: "ifNotNil: aBlock ifNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ anotherBlock value",
  9677. referencedClasses: [],
  9678. //>>excludeEnd("ide");
  9679. pragmas: [],
  9680. messageSends: ["value"]
  9681. }, function ($methodClass){ return function (aBlock,anotherBlock){
  9682. var self=this,$self=this;
  9683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9684. return $core.withContext(function($ctx1) {
  9685. //>>excludeEnd("ctx");
  9686. return $recv(anotherBlock)._value();
  9687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9688. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  9689. //>>excludeEnd("ctx");
  9690. }; }),
  9691. $globals.UndefinedObject);
  9692. $core.addMethod(
  9693. $core.method({
  9694. selector: "isImmutable",
  9695. protocol: "testing",
  9696. //>>excludeStart("ide", pragmas.excludeIdeData);
  9697. args: [],
  9698. source: "isImmutable\x0a\x09^ true",
  9699. referencedClasses: [],
  9700. //>>excludeEnd("ide");
  9701. pragmas: [],
  9702. messageSends: []
  9703. }, function ($methodClass){ return function (){
  9704. var self=this,$self=this;
  9705. return true;
  9706. }; }),
  9707. $globals.UndefinedObject);
  9708. $core.addMethod(
  9709. $core.method({
  9710. selector: "isNil",
  9711. protocol: "testing",
  9712. //>>excludeStart("ide", pragmas.excludeIdeData);
  9713. args: [],
  9714. source: "isNil\x0a\x09^ true",
  9715. referencedClasses: [],
  9716. //>>excludeEnd("ide");
  9717. pragmas: [],
  9718. messageSends: []
  9719. }, function ($methodClass){ return function (){
  9720. var self=this,$self=this;
  9721. return true;
  9722. }; }),
  9723. $globals.UndefinedObject);
  9724. $core.addMethod(
  9725. $core.method({
  9726. selector: "notNil",
  9727. protocol: "testing",
  9728. //>>excludeStart("ide", pragmas.excludeIdeData);
  9729. args: [],
  9730. source: "notNil\x0a\x09^ false",
  9731. referencedClasses: [],
  9732. //>>excludeEnd("ide");
  9733. pragmas: [],
  9734. messageSends: []
  9735. }, function ($methodClass){ return function (){
  9736. var self=this,$self=this;
  9737. return false;
  9738. }; }),
  9739. $globals.UndefinedObject);
  9740. $core.addMethod(
  9741. $core.method({
  9742. selector: "printOn:",
  9743. protocol: "printing",
  9744. //>>excludeStart("ide", pragmas.excludeIdeData);
  9745. args: ["aStream"],
  9746. source: "printOn: aStream\x0a\x09aStream nextPutAll: 'nil'",
  9747. referencedClasses: [],
  9748. //>>excludeEnd("ide");
  9749. pragmas: [],
  9750. messageSends: ["nextPutAll:"]
  9751. }, function ($methodClass){ return function (aStream){
  9752. var self=this,$self=this;
  9753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9754. return $core.withContext(function($ctx1) {
  9755. //>>excludeEnd("ctx");
  9756. $recv(aStream)._nextPutAll_("nil");
  9757. return self;
  9758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9759. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  9760. //>>excludeEnd("ctx");
  9761. }; }),
  9762. $globals.UndefinedObject);
  9763. $core.addMethod(
  9764. $core.method({
  9765. selector: "shallowCopy",
  9766. protocol: "copying",
  9767. //>>excludeStart("ide", pragmas.excludeIdeData);
  9768. args: [],
  9769. source: "shallowCopy\x0a\x09^ self",
  9770. referencedClasses: [],
  9771. //>>excludeEnd("ide");
  9772. pragmas: [],
  9773. messageSends: []
  9774. }, function ($methodClass){ return function (){
  9775. var self=this,$self=this;
  9776. return self;
  9777. }; }),
  9778. $globals.UndefinedObject);
  9779. $core.addMethod(
  9780. $core.method({
  9781. selector: "value",
  9782. protocol: "evaluating",
  9783. //>>excludeStart("ide", pragmas.excludeIdeData);
  9784. args: [],
  9785. source: "value\x0a\x09<inlineJS: 'return null'>",
  9786. referencedClasses: [],
  9787. //>>excludeEnd("ide");
  9788. pragmas: [["inlineJS:", ["return null"]]],
  9789. messageSends: []
  9790. }, function ($methodClass){ return function (){
  9791. var self=this,$self=this;
  9792. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9793. return $core.withContext(function($ctx1) {
  9794. //>>excludeEnd("ctx");
  9795. return null;
  9796. return self;
  9797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9798. }, function($ctx1) {$ctx1.fill(self,"value",{})});
  9799. //>>excludeEnd("ctx");
  9800. }; }),
  9801. $globals.UndefinedObject);
  9802. $core.addMethod(
  9803. $core.method({
  9804. selector: "new",
  9805. protocol: "instance creation",
  9806. //>>excludeStart("ide", pragmas.excludeIdeData);
  9807. args: [],
  9808. source: "new\x0a\x09\x09self error: 'You cannot create new instances of UndefinedObject. Use nil'",
  9809. referencedClasses: [],
  9810. //>>excludeEnd("ide");
  9811. pragmas: [],
  9812. messageSends: ["error:"]
  9813. }, function ($methodClass){ return function (){
  9814. var self=this,$self=this;
  9815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9816. return $core.withContext(function($ctx1) {
  9817. //>>excludeEnd("ctx");
  9818. $self._error_("You cannot create new instances of UndefinedObject. Use nil");
  9819. return self;
  9820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9821. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  9822. //>>excludeEnd("ctx");
  9823. }; }),
  9824. $globals.UndefinedObject.a$cls);
  9825. $core.setTraitComposition([{trait: $globals.TIsInGroup}], $globals.Object);
  9826. $core.setTraitComposition([{trait: $globals.TSubclassable}], $globals.UndefinedObject);
  9827. });
  9828. define('amber/core/Kernel-Collections',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  9829. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  9830. var $pkg = $core.addPackage("Kernel-Collections");
  9831. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  9832. $core.addClass("Association", $globals.Object, "Kernel-Collections");
  9833. $core.setSlots($globals.Association, ["key", "value"]);
  9834. //>>excludeStart("ide", pragmas.excludeIdeData);
  9835. $globals.Association.comment="I represent a pair of associated objects, a key and a value. My instances can serve as entries in a dictionary.\x0a\x0aInstances can be created with the class-side method `#key:value:`";
  9836. //>>excludeEnd("ide");
  9837. $core.addMethod(
  9838. $core.method({
  9839. selector: "=",
  9840. protocol: "comparing",
  9841. //>>excludeStart("ide", pragmas.excludeIdeData);
  9842. args: ["anAssociation"],
  9843. source: "= anAssociation\x0a\x09^ self class = anAssociation class and: [\x0a\x09\x09self key = anAssociation key and: [\x0a\x09\x09self value = anAssociation value ]]",
  9844. referencedClasses: [],
  9845. //>>excludeEnd("ide");
  9846. pragmas: [],
  9847. messageSends: ["and:", "=", "class", "key", "value"]
  9848. }, function ($methodClass){ return function (anAssociation){
  9849. var self=this,$self=this;
  9850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9851. return $core.withContext(function($ctx1) {
  9852. //>>excludeEnd("ctx");
  9853. if($core.assert([$recv([$self._class()
  9854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9855. ,$ctx1.sendIdx["class"]=1
  9856. //>>excludeEnd("ctx");
  9857. ][0]).__eq($recv(anAssociation)._class())
  9858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9859. ,$ctx1.sendIdx["="]=1
  9860. //>>excludeEnd("ctx");
  9861. ][0])){
  9862. if($core.assert([$recv([$self._key()
  9863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9864. ,$ctx1.sendIdx["key"]=1
  9865. //>>excludeEnd("ctx");
  9866. ][0]).__eq($recv(anAssociation)._key())
  9867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9868. ,$ctx1.sendIdx["="]=2
  9869. //>>excludeEnd("ctx");
  9870. ][0])){
  9871. return $recv([$self._value()
  9872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9873. ,$ctx1.sendIdx["value"]=1
  9874. //>>excludeEnd("ctx");
  9875. ][0]).__eq($recv(anAssociation)._value());
  9876. } else {
  9877. return false;
  9878. }
  9879. } else {
  9880. return false;
  9881. }
  9882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9883. }, function($ctx1) {$ctx1.fill(self,"=",{anAssociation:anAssociation})});
  9884. //>>excludeEnd("ctx");
  9885. }; }),
  9886. $globals.Association);
  9887. $core.addMethod(
  9888. $core.method({
  9889. selector: "key",
  9890. protocol: "accessing",
  9891. //>>excludeStart("ide", pragmas.excludeIdeData);
  9892. args: [],
  9893. source: "key\x0a\x09^ key",
  9894. referencedClasses: [],
  9895. //>>excludeEnd("ide");
  9896. pragmas: [],
  9897. messageSends: []
  9898. }, function ($methodClass){ return function (){
  9899. var self=this,$self=this;
  9900. return $self.key;
  9901. }; }),
  9902. $globals.Association);
  9903. $core.addMethod(
  9904. $core.method({
  9905. selector: "key:",
  9906. protocol: "accessing",
  9907. //>>excludeStart("ide", pragmas.excludeIdeData);
  9908. args: ["aKey"],
  9909. source: "key: aKey\x0a\x09key := aKey",
  9910. referencedClasses: [],
  9911. //>>excludeEnd("ide");
  9912. pragmas: [],
  9913. messageSends: []
  9914. }, function ($methodClass){ return function (aKey){
  9915. var self=this,$self=this;
  9916. $self.key=aKey;
  9917. return self;
  9918. }; }),
  9919. $globals.Association);
  9920. $core.addMethod(
  9921. $core.method({
  9922. selector: "printOn:",
  9923. protocol: "printing",
  9924. //>>excludeStart("ide", pragmas.excludeIdeData);
  9925. args: ["aStream"],
  9926. source: "printOn: aStream\x0a\x09self key printOn: aStream.\x0a\x09aStream nextPutAll: ' -> '.\x0a\x09self value printOn: aStream",
  9927. referencedClasses: [],
  9928. //>>excludeEnd("ide");
  9929. pragmas: [],
  9930. messageSends: ["printOn:", "key", "nextPutAll:", "value"]
  9931. }, function ($methodClass){ return function (aStream){
  9932. var self=this,$self=this;
  9933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9934. return $core.withContext(function($ctx1) {
  9935. //>>excludeEnd("ctx");
  9936. [$recv($self._key())._printOn_(aStream)
  9937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9938. ,$ctx1.sendIdx["printOn:"]=1
  9939. //>>excludeEnd("ctx");
  9940. ][0];
  9941. $recv(aStream)._nextPutAll_(" -> ");
  9942. $recv($self._value())._printOn_(aStream);
  9943. return self;
  9944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9945. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  9946. //>>excludeEnd("ctx");
  9947. }; }),
  9948. $globals.Association);
  9949. $core.addMethod(
  9950. $core.method({
  9951. selector: "value",
  9952. protocol: "accessing",
  9953. //>>excludeStart("ide", pragmas.excludeIdeData);
  9954. args: [],
  9955. source: "value\x0a\x09^ value",
  9956. referencedClasses: [],
  9957. //>>excludeEnd("ide");
  9958. pragmas: [],
  9959. messageSends: []
  9960. }, function ($methodClass){ return function (){
  9961. var self=this,$self=this;
  9962. return $self.value;
  9963. }; }),
  9964. $globals.Association);
  9965. $core.addMethod(
  9966. $core.method({
  9967. selector: "value:",
  9968. protocol: "accessing",
  9969. //>>excludeStart("ide", pragmas.excludeIdeData);
  9970. args: ["aValue"],
  9971. source: "value: aValue\x0a\x09value := aValue",
  9972. referencedClasses: [],
  9973. //>>excludeEnd("ide");
  9974. pragmas: [],
  9975. messageSends: []
  9976. }, function ($methodClass){ return function (aValue){
  9977. var self=this,$self=this;
  9978. $self.value=aValue;
  9979. return self;
  9980. }; }),
  9981. $globals.Association);
  9982. $core.addMethod(
  9983. $core.method({
  9984. selector: "key:value:",
  9985. protocol: "instance creation",
  9986. //>>excludeStart("ide", pragmas.excludeIdeData);
  9987. args: ["aKey", "aValue"],
  9988. source: "key: aKey value: aValue\x0a\x09\x09^ self new\x0a\x09\x09key: aKey;\x0a\x09\x09value: aValue;\x0a\x09\x09yourself",
  9989. referencedClasses: [],
  9990. //>>excludeEnd("ide");
  9991. pragmas: [],
  9992. messageSends: ["key:", "new", "value:", "yourself"]
  9993. }, function ($methodClass){ return function (aKey,aValue){
  9994. var self=this,$self=this;
  9995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9996. return $core.withContext(function($ctx1) {
  9997. //>>excludeEnd("ctx");
  9998. var $1;
  9999. $1=$self._new();
  10000. $recv($1)._key_(aKey);
  10001. $recv($1)._value_(aValue);
  10002. return $recv($1)._yourself();
  10003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10004. }, function($ctx1) {$ctx1.fill(self,"key:value:",{aKey:aKey,aValue:aValue})});
  10005. //>>excludeEnd("ctx");
  10006. }; }),
  10007. $globals.Association.a$cls);
  10008. $core.addClass("BucketStore", $globals.Object, "Kernel-Collections");
  10009. $core.setSlots($globals.BucketStore, ["buckets", "hashBlock"]);
  10010. //>>excludeStart("ide", pragmas.excludeIdeData);
  10011. $globals.BucketStore.comment="I am an helper class for hash-based stores.\x0a\x0aI hold buckets which are selected by a hash, specified using `#hashBlock:`.\x0aThe hash can be any object, and\x0ait is used as a JS property (that is, in ES5\x0aits toString() value counts).\x0a\x0a## API\x0aI maintain a list of buckets. Client code can use this API:\x0a - `#bucketOfElement:` (to ask a bucket for element, I can return JS null if n/a)\x0a - `#do:` (to enumerate all elements of all buckets)\x0a - `#removeAll` (to remove all buckets)\x0a\x0aClient code itself should add/remove elements\x0ain a bucket. The `nil` object should not be put into any bucket.\x0a\x0aTypes of buckets are the responsibility of subclasses via `#newBucket`.";
  10012. //>>excludeEnd("ide");
  10013. $core.addMethod(
  10014. $core.method({
  10015. selector: "bucketOfElement:",
  10016. protocol: "accessing",
  10017. //>>excludeStart("ide", pragmas.excludeIdeData);
  10018. args: ["anObject"],
  10019. source: "bucketOfElement: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var hash = $self.hashBlock(anObject);\x0a\x09\x09if (!hash) return null;\x0a\x09\x09var buckets = $self.buckets,\x0a\x09\x09\x09bucket = buckets[hash];\x0a\x09\x09if (!bucket) { bucket = buckets[hash] = $self._newBucket(); }\x0a\x09\x09return bucket;\x0a\x09'>",
  10020. referencedClasses: [],
  10021. //>>excludeEnd("ide");
  10022. pragmas: [["inlineJS:", ["\x0a\x09\x09var hash = $self.hashBlock(anObject);\x0a\x09\x09if (!hash) return null;\x0a\x09\x09var buckets = $self.buckets,\x0a\x09\x09\x09bucket = buckets[hash];\x0a\x09\x09if (!bucket) { bucket = buckets[hash] = $self._newBucket(); }\x0a\x09\x09return bucket;\x0a\x09"]]],
  10023. messageSends: []
  10024. }, function ($methodClass){ return function (anObject){
  10025. var self=this,$self=this;
  10026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10027. return $core.withContext(function($ctx1) {
  10028. //>>excludeEnd("ctx");
  10029. var hash = $self.hashBlock(anObject);
  10030. if (!hash) return null;
  10031. var buckets = $self.buckets,
  10032. bucket = buckets[hash];
  10033. if (!bucket) { bucket = buckets[hash] = $self._newBucket(); }
  10034. return bucket;
  10035. ;
  10036. return self;
  10037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10038. }, function($ctx1) {$ctx1.fill(self,"bucketOfElement:",{anObject:anObject})});
  10039. //>>excludeEnd("ctx");
  10040. }; }),
  10041. $globals.BucketStore);
  10042. $core.addMethod(
  10043. $core.method({
  10044. selector: "do:",
  10045. protocol: "enumerating",
  10046. //>>excludeStart("ide", pragmas.excludeIdeData);
  10047. args: ["aBlock"],
  10048. source: "do: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var buckets = $self.buckets;\x0a\x09\x09var keys = Object.keys(buckets);\x0a\x09\x09for (var i = 0; i < keys.length; ++i) { buckets[keys[i]]._do_(aBlock); }\x0a\x09'>",
  10049. referencedClasses: [],
  10050. //>>excludeEnd("ide");
  10051. pragmas: [["inlineJS:", ["\x0a\x09\x09var buckets = $self.buckets;\x0a\x09\x09var keys = Object.keys(buckets);\x0a\x09\x09for (var i = 0; i < keys.length; ++i) { buckets[keys[i]]._do_(aBlock); }\x0a\x09"]]],
  10052. messageSends: []
  10053. }, function ($methodClass){ return function (aBlock){
  10054. var self=this,$self=this;
  10055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10056. return $core.withContext(function($ctx1) {
  10057. //>>excludeEnd("ctx");
  10058. var buckets = $self.buckets;
  10059. var keys = Object.keys(buckets);
  10060. for (var i = 0; i < keys.length; ++i) { buckets[keys[i]]._do_(aBlock); }
  10061. ;
  10062. return self;
  10063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10064. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
  10065. //>>excludeEnd("ctx");
  10066. }; }),
  10067. $globals.BucketStore);
  10068. $core.addMethod(
  10069. $core.method({
  10070. selector: "hashBlock:",
  10071. protocol: "accessing",
  10072. //>>excludeStart("ide", pragmas.excludeIdeData);
  10073. args: ["aBlock"],
  10074. source: "hashBlock: aBlock\x0a\x09hashBlock := aBlock",
  10075. referencedClasses: [],
  10076. //>>excludeEnd("ide");
  10077. pragmas: [],
  10078. messageSends: []
  10079. }, function ($methodClass){ return function (aBlock){
  10080. var self=this,$self=this;
  10081. $self.hashBlock=aBlock;
  10082. return self;
  10083. }; }),
  10084. $globals.BucketStore);
  10085. $core.addMethod(
  10086. $core.method({
  10087. selector: "initialize",
  10088. protocol: "initialization",
  10089. //>>excludeStart("ide", pragmas.excludeIdeData);
  10090. args: [],
  10091. source: "initialize\x0a\x09super initialize.\x0a\x09self removeAll",
  10092. referencedClasses: [],
  10093. //>>excludeEnd("ide");
  10094. pragmas: [],
  10095. messageSends: ["initialize", "removeAll"]
  10096. }, function ($methodClass){ return function (){
  10097. var self=this,$self=this;
  10098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10099. return $core.withContext(function($ctx1) {
  10100. //>>excludeEnd("ctx");
  10101. [(
  10102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10103. $ctx1.supercall = true,
  10104. //>>excludeEnd("ctx");
  10105. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  10106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10107. ,$ctx1.supercall = false
  10108. //>>excludeEnd("ctx");
  10109. ][0];
  10110. $self._removeAll();
  10111. return self;
  10112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10113. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  10114. //>>excludeEnd("ctx");
  10115. }; }),
  10116. $globals.BucketStore);
  10117. $core.addMethod(
  10118. $core.method({
  10119. selector: "newBucket",
  10120. protocol: "private",
  10121. //>>excludeStart("ide", pragmas.excludeIdeData);
  10122. args: [],
  10123. source: "newBucket\x0a\x09self subclassResponsibility",
  10124. referencedClasses: [],
  10125. //>>excludeEnd("ide");
  10126. pragmas: [],
  10127. messageSends: ["subclassResponsibility"]
  10128. }, function ($methodClass){ return function (){
  10129. var self=this,$self=this;
  10130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10131. return $core.withContext(function($ctx1) {
  10132. //>>excludeEnd("ctx");
  10133. $self._subclassResponsibility();
  10134. return self;
  10135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10136. }, function($ctx1) {$ctx1.fill(self,"newBucket",{})});
  10137. //>>excludeEnd("ctx");
  10138. }; }),
  10139. $globals.BucketStore);
  10140. $core.addMethod(
  10141. $core.method({
  10142. selector: "removeAll",
  10143. protocol: "adding/removing",
  10144. //>>excludeStart("ide", pragmas.excludeIdeData);
  10145. args: [],
  10146. source: "removeAll\x0a\x09<inlineJS: '$self.buckets = Object.create(null);'>",
  10147. referencedClasses: [],
  10148. //>>excludeEnd("ide");
  10149. pragmas: [["inlineJS:", ["$self.buckets = Object.create(null);"]]],
  10150. messageSends: []
  10151. }, function ($methodClass){ return function (){
  10152. var self=this,$self=this;
  10153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10154. return $core.withContext(function($ctx1) {
  10155. //>>excludeEnd("ctx");
  10156. $self.buckets = Object.create(null);;
  10157. return self;
  10158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10159. }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
  10160. //>>excludeEnd("ctx");
  10161. }; }),
  10162. $globals.BucketStore);
  10163. $core.addMethod(
  10164. $core.method({
  10165. selector: "hashBlock:",
  10166. protocol: "instance creation",
  10167. //>>excludeStart("ide", pragmas.excludeIdeData);
  10168. args: ["aBlock"],
  10169. source: "hashBlock: aBlock\x0a\x09^ self new\x0a\x09\x09hashBlock: aBlock;\x0a\x09\x09yourself",
  10170. referencedClasses: [],
  10171. //>>excludeEnd("ide");
  10172. pragmas: [],
  10173. messageSends: ["hashBlock:", "new", "yourself"]
  10174. }, function ($methodClass){ return function (aBlock){
  10175. var self=this,$self=this;
  10176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10177. return $core.withContext(function($ctx1) {
  10178. //>>excludeEnd("ctx");
  10179. var $1;
  10180. $1=$self._new();
  10181. $recv($1)._hashBlock_(aBlock);
  10182. return $recv($1)._yourself();
  10183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10184. }, function($ctx1) {$ctx1.fill(self,"hashBlock:",{aBlock:aBlock})});
  10185. //>>excludeEnd("ctx");
  10186. }; }),
  10187. $globals.BucketStore.a$cls);
  10188. $core.addClass("ArrayBucketStore", $globals.BucketStore, "Kernel-Collections");
  10189. //>>excludeStart("ide", pragmas.excludeIdeData);
  10190. $globals.ArrayBucketStore.comment="I am a concrete `BucketStore` with buckets being instance of `Array`.";
  10191. //>>excludeEnd("ide");
  10192. $core.addMethod(
  10193. $core.method({
  10194. selector: "newBucket",
  10195. protocol: "private",
  10196. //>>excludeStart("ide", pragmas.excludeIdeData);
  10197. args: [],
  10198. source: "newBucket\x0a\x09^ #()",
  10199. referencedClasses: [],
  10200. //>>excludeEnd("ide");
  10201. pragmas: [],
  10202. messageSends: []
  10203. }, function ($methodClass){ return function (){
  10204. var self=this,$self=this;
  10205. return [];
  10206. }; }),
  10207. $globals.ArrayBucketStore);
  10208. $core.addClass("Collection", $globals.Object, "Kernel-Collections");
  10209. //>>excludeStart("ide", pragmas.excludeIdeData);
  10210. $globals.Collection.comment="I am the abstract superclass of all classes that represent a group of elements.\x0a\x0aI provide a set of useful methods to the Collection hierarchy such as enumerating and converting methods.";
  10211. //>>excludeEnd("ide");
  10212. $core.addMethod(
  10213. $core.method({
  10214. selector: ",",
  10215. protocol: "copying",
  10216. //>>excludeStart("ide", pragmas.excludeIdeData);
  10217. args: ["aCollection"],
  10218. source: ", aCollection\x0a\x09^ self copy\x0a\x09\x09addAll: aCollection;\x0a\x09\x09yourself",
  10219. referencedClasses: [],
  10220. //>>excludeEnd("ide");
  10221. pragmas: [],
  10222. messageSends: ["addAll:", "copy", "yourself"]
  10223. }, function ($methodClass){ return function (aCollection){
  10224. var self=this,$self=this;
  10225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10226. return $core.withContext(function($ctx1) {
  10227. //>>excludeEnd("ctx");
  10228. var $1;
  10229. $1=$self._copy();
  10230. $recv($1)._addAll_(aCollection);
  10231. return $recv($1)._yourself();
  10232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10233. }, function($ctx1) {$ctx1.fill(self,",",{aCollection:aCollection})});
  10234. //>>excludeEnd("ctx");
  10235. }; }),
  10236. $globals.Collection);
  10237. $core.addMethod(
  10238. $core.method({
  10239. selector: "add:",
  10240. protocol: "adding/removing",
  10241. //>>excludeStart("ide", pragmas.excludeIdeData);
  10242. args: ["anObject"],
  10243. source: "add: anObject\x0a\x09self subclassResponsibility",
  10244. referencedClasses: [],
  10245. //>>excludeEnd("ide");
  10246. pragmas: [],
  10247. messageSends: ["subclassResponsibility"]
  10248. }, function ($methodClass){ return function (anObject){
  10249. var self=this,$self=this;
  10250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10251. return $core.withContext(function($ctx1) {
  10252. //>>excludeEnd("ctx");
  10253. $self._subclassResponsibility();
  10254. return self;
  10255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10256. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject})});
  10257. //>>excludeEnd("ctx");
  10258. }; }),
  10259. $globals.Collection);
  10260. $core.addMethod(
  10261. $core.method({
  10262. selector: "addAll:",
  10263. protocol: "adding/removing",
  10264. //>>excludeStart("ide", pragmas.excludeIdeData);
  10265. args: ["aCollection"],
  10266. source: "addAll: aCollection\x0a\x09aCollection do: [ :each |\x0a\x09\x09self add: each ].\x0a\x09^ aCollection",
  10267. referencedClasses: [],
  10268. //>>excludeEnd("ide");
  10269. pragmas: [],
  10270. messageSends: ["do:", "add:"]
  10271. }, function ($methodClass){ return function (aCollection){
  10272. var self=this,$self=this;
  10273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10274. return $core.withContext(function($ctx1) {
  10275. //>>excludeEnd("ctx");
  10276. $recv(aCollection)._do_((function(each){
  10277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10278. return $core.withContext(function($ctx2) {
  10279. //>>excludeEnd("ctx");
  10280. return $self._add_(each);
  10281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10282. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10283. //>>excludeEnd("ctx");
  10284. }));
  10285. return aCollection;
  10286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10287. }, function($ctx1) {$ctx1.fill(self,"addAll:",{aCollection:aCollection})});
  10288. //>>excludeEnd("ctx");
  10289. }; }),
  10290. $globals.Collection);
  10291. $core.addMethod(
  10292. $core.method({
  10293. selector: "allSatisfy:",
  10294. protocol: "enumerating",
  10295. //>>excludeStart("ide", pragmas.excludeIdeData);
  10296. args: ["aBlock"],
  10297. source: "allSatisfy: aBlock\x0a\x09\x22Evaluate aBlock with the elements of the receiver.\x0a\x09If aBlock returns false for any element return false.\x0a\x09Otherwise return true.\x22\x0a\x0a\x09self do: [ :each | (aBlock value: each) ifFalse: [ ^ false ] ].\x0a\x09^ true",
  10298. referencedClasses: [],
  10299. //>>excludeEnd("ide");
  10300. pragmas: [],
  10301. messageSends: ["do:", "ifFalse:", "value:"]
  10302. }, function ($methodClass){ return function (aBlock){
  10303. var self=this,$self=this;
  10304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10305. return $core.withContext(function($ctx1) {
  10306. //>>excludeEnd("ctx");
  10307. var $early={};
  10308. try {
  10309. $self._do_((function(each){
  10310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10311. return $core.withContext(function($ctx2) {
  10312. //>>excludeEnd("ctx");
  10313. if(!$core.assert($recv(aBlock)._value_(each))){
  10314. throw $early=[false];
  10315. }
  10316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10317. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10318. //>>excludeEnd("ctx");
  10319. }));
  10320. return true;
  10321. }
  10322. catch(e) {if(e===$early)return e[0]; throw e}
  10323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10324. }, function($ctx1) {$ctx1.fill(self,"allSatisfy:",{aBlock:aBlock})});
  10325. //>>excludeEnd("ctx");
  10326. }; }),
  10327. $globals.Collection);
  10328. $core.addMethod(
  10329. $core.method({
  10330. selector: "anyOne",
  10331. protocol: "accessing",
  10332. //>>excludeStart("ide", pragmas.excludeIdeData);
  10333. args: [],
  10334. source: "anyOne\x0a\x09\x22Answer a representative sample of the receiver. This method can\x0a\x09be helpful when needing to preinfer the nature of the contents of \x0a\x09semi-homogeneous collections.\x22\x0a\x0a\x09self ifEmpty: [ self error: 'Collection is empty' ].\x0a\x09self do: [ :each | ^ each ]",
  10335. referencedClasses: [],
  10336. //>>excludeEnd("ide");
  10337. pragmas: [],
  10338. messageSends: ["ifEmpty:", "error:", "do:"]
  10339. }, function ($methodClass){ return function (){
  10340. var self=this,$self=this;
  10341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10342. return $core.withContext(function($ctx1) {
  10343. //>>excludeEnd("ctx");
  10344. var $early={};
  10345. try {
  10346. $self._ifEmpty_((function(){
  10347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10348. return $core.withContext(function($ctx2) {
  10349. //>>excludeEnd("ctx");
  10350. return $self._error_("Collection is empty");
  10351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10352. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  10353. //>>excludeEnd("ctx");
  10354. }));
  10355. $self._do_((function(each){
  10356. throw $early=[each];
  10357. }));
  10358. return self;
  10359. }
  10360. catch(e) {if(e===$early)return e[0]; throw e}
  10361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10362. }, function($ctx1) {$ctx1.fill(self,"anyOne",{})});
  10363. //>>excludeEnd("ctx");
  10364. }; }),
  10365. $globals.Collection);
  10366. $core.addMethod(
  10367. $core.method({
  10368. selector: "anySatisfy:",
  10369. protocol: "enumerating",
  10370. //>>excludeStart("ide", pragmas.excludeIdeData);
  10371. args: ["aBlock"],
  10372. source: "anySatisfy: aBlock\x0a\x09\x22Evaluate aBlock with the elements of the receiver.\x0a\x09If aBlock returns true for any element return true.\x0a\x09Otherwise return false.\x22\x0a\x0a\x09self do: [ :each | (aBlock value: each) ifTrue: [ ^ true ] ].\x0a\x09^ false",
  10373. referencedClasses: [],
  10374. //>>excludeEnd("ide");
  10375. pragmas: [],
  10376. messageSends: ["do:", "ifTrue:", "value:"]
  10377. }, function ($methodClass){ return function (aBlock){
  10378. var self=this,$self=this;
  10379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10380. return $core.withContext(function($ctx1) {
  10381. //>>excludeEnd("ctx");
  10382. var $early={};
  10383. try {
  10384. $self._do_((function(each){
  10385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10386. return $core.withContext(function($ctx2) {
  10387. //>>excludeEnd("ctx");
  10388. if($core.assert($recv(aBlock)._value_(each))){
  10389. throw $early=[true];
  10390. }
  10391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10392. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10393. //>>excludeEnd("ctx");
  10394. }));
  10395. return false;
  10396. }
  10397. catch(e) {if(e===$early)return e[0]; throw e}
  10398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10399. }, function($ctx1) {$ctx1.fill(self,"anySatisfy:",{aBlock:aBlock})});
  10400. //>>excludeEnd("ctx");
  10401. }; }),
  10402. $globals.Collection);
  10403. $core.addMethod(
  10404. $core.method({
  10405. selector: "asArray",
  10406. protocol: "converting",
  10407. //>>excludeStart("ide", pragmas.excludeIdeData);
  10408. args: [],
  10409. source: "asArray\x0a\x09^ Array withAll: self",
  10410. referencedClasses: ["Array"],
  10411. //>>excludeEnd("ide");
  10412. pragmas: [],
  10413. messageSends: ["withAll:"]
  10414. }, function ($methodClass){ return function (){
  10415. var self=this,$self=this;
  10416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10417. return $core.withContext(function($ctx1) {
  10418. //>>excludeEnd("ctx");
  10419. return $recv($globals.Array)._withAll_(self);
  10420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10421. }, function($ctx1) {$ctx1.fill(self,"asArray",{})});
  10422. //>>excludeEnd("ctx");
  10423. }; }),
  10424. $globals.Collection);
  10425. $core.addMethod(
  10426. $core.method({
  10427. selector: "asJavaScriptObject",
  10428. protocol: "converting",
  10429. //>>excludeStart("ide", pragmas.excludeIdeData);
  10430. args: [],
  10431. source: "asJavaScriptObject\x0a\x09^ self asArray collect: [ :each | each asJavaScriptObject ]",
  10432. referencedClasses: [],
  10433. //>>excludeEnd("ide");
  10434. pragmas: [],
  10435. messageSends: ["collect:", "asArray", "asJavaScriptObject"]
  10436. }, function ($methodClass){ return function (){
  10437. var self=this,$self=this;
  10438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10439. return $core.withContext(function($ctx1) {
  10440. //>>excludeEnd("ctx");
  10441. return $recv($self._asArray())._collect_((function(each){
  10442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10443. return $core.withContext(function($ctx2) {
  10444. //>>excludeEnd("ctx");
  10445. return $recv(each)._asJavaScriptObject();
  10446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10447. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10448. //>>excludeEnd("ctx");
  10449. }));
  10450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10451. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{})});
  10452. //>>excludeEnd("ctx");
  10453. }; }),
  10454. $globals.Collection);
  10455. $core.addMethod(
  10456. $core.method({
  10457. selector: "asOrderedCollection",
  10458. protocol: "converting",
  10459. //>>excludeStart("ide", pragmas.excludeIdeData);
  10460. args: [],
  10461. source: "asOrderedCollection\x0a\x09^ self asArray",
  10462. referencedClasses: [],
  10463. //>>excludeEnd("ide");
  10464. pragmas: [],
  10465. messageSends: ["asArray"]
  10466. }, function ($methodClass){ return function (){
  10467. var self=this,$self=this;
  10468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10469. return $core.withContext(function($ctx1) {
  10470. //>>excludeEnd("ctx");
  10471. return $self._asArray();
  10472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10473. }, function($ctx1) {$ctx1.fill(self,"asOrderedCollection",{})});
  10474. //>>excludeEnd("ctx");
  10475. }; }),
  10476. $globals.Collection);
  10477. $core.addMethod(
  10478. $core.method({
  10479. selector: "asSet",
  10480. protocol: "converting",
  10481. //>>excludeStart("ide", pragmas.excludeIdeData);
  10482. args: [],
  10483. source: "asSet\x0a\x09^ Set withAll: self",
  10484. referencedClasses: ["Set"],
  10485. //>>excludeEnd("ide");
  10486. pragmas: [],
  10487. messageSends: ["withAll:"]
  10488. }, function ($methodClass){ return function (){
  10489. var self=this,$self=this;
  10490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10491. return $core.withContext(function($ctx1) {
  10492. //>>excludeEnd("ctx");
  10493. return $recv($globals.Set)._withAll_(self);
  10494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10495. }, function($ctx1) {$ctx1.fill(self,"asSet",{})});
  10496. //>>excludeEnd("ctx");
  10497. }; }),
  10498. $globals.Collection);
  10499. $core.addMethod(
  10500. $core.method({
  10501. selector: "collect:",
  10502. protocol: "enumerating",
  10503. //>>excludeStart("ide", pragmas.excludeIdeData);
  10504. args: ["aBlock"],
  10505. source: "collect: aBlock\x0a\x09| stream |\x0a\x09stream := self class new writeStream.\x0a\x09self do: [ :each |\x0a\x09\x09stream nextPut: (aBlock value: each) ].\x0a\x09^ stream contents",
  10506. referencedClasses: [],
  10507. //>>excludeEnd("ide");
  10508. pragmas: [],
  10509. messageSends: ["writeStream", "new", "class", "do:", "nextPut:", "value:", "contents"]
  10510. }, function ($methodClass){ return function (aBlock){
  10511. var self=this,$self=this;
  10512. var stream;
  10513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10514. return $core.withContext(function($ctx1) {
  10515. //>>excludeEnd("ctx");
  10516. stream=$recv($recv($self._class())._new())._writeStream();
  10517. $self._do_((function(each){
  10518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10519. return $core.withContext(function($ctx2) {
  10520. //>>excludeEnd("ctx");
  10521. return $recv(stream)._nextPut_($recv(aBlock)._value_(each));
  10522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10523. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10524. //>>excludeEnd("ctx");
  10525. }));
  10526. return $recv(stream)._contents();
  10527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10528. }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,stream:stream})});
  10529. //>>excludeEnd("ctx");
  10530. }; }),
  10531. $globals.Collection);
  10532. $core.addMethod(
  10533. $core.method({
  10534. selector: "copyEmpty",
  10535. protocol: "copying",
  10536. //>>excludeStart("ide", pragmas.excludeIdeData);
  10537. args: [],
  10538. source: "copyEmpty\x0a\x09^ self class new",
  10539. referencedClasses: [],
  10540. //>>excludeEnd("ide");
  10541. pragmas: [],
  10542. messageSends: ["new", "class"]
  10543. }, function ($methodClass){ return function (){
  10544. var self=this,$self=this;
  10545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10546. return $core.withContext(function($ctx1) {
  10547. //>>excludeEnd("ctx");
  10548. return $recv($self._class())._new();
  10549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10550. }, function($ctx1) {$ctx1.fill(self,"copyEmpty",{})});
  10551. //>>excludeEnd("ctx");
  10552. }; }),
  10553. $globals.Collection);
  10554. $core.addMethod(
  10555. $core.method({
  10556. selector: "copyWith:",
  10557. protocol: "copying",
  10558. //>>excludeStart("ide", pragmas.excludeIdeData);
  10559. args: ["anObject"],
  10560. source: "copyWith: anObject\x0a\x09^ self copy add: anObject; yourself",
  10561. referencedClasses: [],
  10562. //>>excludeEnd("ide");
  10563. pragmas: [],
  10564. messageSends: ["add:", "copy", "yourself"]
  10565. }, function ($methodClass){ return function (anObject){
  10566. var self=this,$self=this;
  10567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10568. return $core.withContext(function($ctx1) {
  10569. //>>excludeEnd("ctx");
  10570. var $1;
  10571. $1=$self._copy();
  10572. $recv($1)._add_(anObject);
  10573. return $recv($1)._yourself();
  10574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10575. }, function($ctx1) {$ctx1.fill(self,"copyWith:",{anObject:anObject})});
  10576. //>>excludeEnd("ctx");
  10577. }; }),
  10578. $globals.Collection);
  10579. $core.addMethod(
  10580. $core.method({
  10581. selector: "copyWithAll:",
  10582. protocol: "copying",
  10583. //>>excludeStart("ide", pragmas.excludeIdeData);
  10584. args: ["aCollection"],
  10585. source: "copyWithAll: aCollection\x0a\x09self deprecatedAPI: 'Use #, instead.'.\x0a\x09^ self, aCollection",
  10586. referencedClasses: [],
  10587. //>>excludeEnd("ide");
  10588. pragmas: [],
  10589. messageSends: ["deprecatedAPI:", ","]
  10590. }, function ($methodClass){ return function (aCollection){
  10591. var self=this,$self=this;
  10592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10593. return $core.withContext(function($ctx1) {
  10594. //>>excludeEnd("ctx");
  10595. $self._deprecatedAPI_("Use #, instead.");
  10596. return $self.__comma(aCollection);
  10597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10598. }, function($ctx1) {$ctx1.fill(self,"copyWithAll:",{aCollection:aCollection})});
  10599. //>>excludeEnd("ctx");
  10600. }; }),
  10601. $globals.Collection);
  10602. $core.addMethod(
  10603. $core.method({
  10604. selector: "copyWithout:",
  10605. protocol: "copying",
  10606. //>>excludeStart("ide", pragmas.excludeIdeData);
  10607. args: ["anObject"],
  10608. source: "copyWithout: anObject\x0a\x09\x22Answer a copy of the receiver that does not contain\x0a\x09any occurrences of anObject.\x22\x0a\x0a\x09^ self reject: [ :each | each = anObject ]",
  10609. referencedClasses: [],
  10610. //>>excludeEnd("ide");
  10611. pragmas: [],
  10612. messageSends: ["reject:", "="]
  10613. }, function ($methodClass){ return function (anObject){
  10614. var self=this,$self=this;
  10615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10616. return $core.withContext(function($ctx1) {
  10617. //>>excludeEnd("ctx");
  10618. return $self._reject_((function(each){
  10619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10620. return $core.withContext(function($ctx2) {
  10621. //>>excludeEnd("ctx");
  10622. return $recv(each).__eq(anObject);
  10623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10624. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10625. //>>excludeEnd("ctx");
  10626. }));
  10627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10628. }, function($ctx1) {$ctx1.fill(self,"copyWithout:",{anObject:anObject})});
  10629. //>>excludeEnd("ctx");
  10630. }; }),
  10631. $globals.Collection);
  10632. $core.addMethod(
  10633. $core.method({
  10634. selector: "copyWithoutAll:",
  10635. protocol: "copying",
  10636. //>>excludeStart("ide", pragmas.excludeIdeData);
  10637. args: ["aCollection"],
  10638. source: "copyWithoutAll: aCollection\x0a\x09\x22Answer a copy of the receiver that does not contain any elements\x0a\x09equal to those in aCollection.\x22\x0a\x0a\x09^ self reject: [ :each | aCollection includes: each ]",
  10639. referencedClasses: [],
  10640. //>>excludeEnd("ide");
  10641. pragmas: [],
  10642. messageSends: ["reject:", "includes:"]
  10643. }, function ($methodClass){ return function (aCollection){
  10644. var self=this,$self=this;
  10645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10646. return $core.withContext(function($ctx1) {
  10647. //>>excludeEnd("ctx");
  10648. return $self._reject_((function(each){
  10649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10650. return $core.withContext(function($ctx2) {
  10651. //>>excludeEnd("ctx");
  10652. return $recv(aCollection)._includes_(each);
  10653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10654. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10655. //>>excludeEnd("ctx");
  10656. }));
  10657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10658. }, function($ctx1) {$ctx1.fill(self,"copyWithoutAll:",{aCollection:aCollection})});
  10659. //>>excludeEnd("ctx");
  10660. }; }),
  10661. $globals.Collection);
  10662. $core.addMethod(
  10663. $core.method({
  10664. selector: "deepCopy",
  10665. protocol: "copying",
  10666. //>>excludeStart("ide", pragmas.excludeIdeData);
  10667. args: [],
  10668. source: "deepCopy\x0a\x09^ self collect: [ :each | each deepCopy ]",
  10669. referencedClasses: [],
  10670. //>>excludeEnd("ide");
  10671. pragmas: [],
  10672. messageSends: ["collect:", "deepCopy"]
  10673. }, function ($methodClass){ return function (){
  10674. var self=this,$self=this;
  10675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10676. return $core.withContext(function($ctx1) {
  10677. //>>excludeEnd("ctx");
  10678. return $self._collect_((function(each){
  10679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10680. return $core.withContext(function($ctx2) {
  10681. //>>excludeEnd("ctx");
  10682. return $recv(each)._deepCopy();
  10683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10684. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10685. //>>excludeEnd("ctx");
  10686. }));
  10687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10688. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})});
  10689. //>>excludeEnd("ctx");
  10690. }; }),
  10691. $globals.Collection);
  10692. $core.addMethod(
  10693. $core.method({
  10694. selector: "detect:",
  10695. protocol: "enumerating",
  10696. //>>excludeStart("ide", pragmas.excludeIdeData);
  10697. args: ["aBlock"],
  10698. source: "detect: aBlock\x0a\x09^ self detect: aBlock ifNone: [ self errorNotFound ]",
  10699. referencedClasses: [],
  10700. //>>excludeEnd("ide");
  10701. pragmas: [],
  10702. messageSends: ["detect:ifNone:", "errorNotFound"]
  10703. }, function ($methodClass){ return function (aBlock){
  10704. var self=this,$self=this;
  10705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10706. return $core.withContext(function($ctx1) {
  10707. //>>excludeEnd("ctx");
  10708. return $self._detect_ifNone_(aBlock,(function(){
  10709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10710. return $core.withContext(function($ctx2) {
  10711. //>>excludeEnd("ctx");
  10712. return $self._errorNotFound();
  10713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10714. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  10715. //>>excludeEnd("ctx");
  10716. }));
  10717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10718. }, function($ctx1) {$ctx1.fill(self,"detect:",{aBlock:aBlock})});
  10719. //>>excludeEnd("ctx");
  10720. }; }),
  10721. $globals.Collection);
  10722. $core.addMethod(
  10723. $core.method({
  10724. selector: "detect:ifNone:",
  10725. protocol: "enumerating",
  10726. //>>excludeStart("ide", pragmas.excludeIdeData);
  10727. args: ["aBlock", "anotherBlock"],
  10728. source: "detect: aBlock ifNone: anotherBlock\x0a\x09self do: [ :each | (aBlock value: each) ifTrue: [ ^each ] ].\x0a\x09^ anotherBlock value",
  10729. referencedClasses: [],
  10730. //>>excludeEnd("ide");
  10731. pragmas: [],
  10732. messageSends: ["do:", "ifTrue:", "value:", "value"]
  10733. }, function ($methodClass){ return function (aBlock,anotherBlock){
  10734. var self=this,$self=this;
  10735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10736. return $core.withContext(function($ctx1) {
  10737. //>>excludeEnd("ctx");
  10738. var $early={};
  10739. try {
  10740. $self._do_((function(each){
  10741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10742. return $core.withContext(function($ctx2) {
  10743. //>>excludeEnd("ctx");
  10744. if($core.assert($recv(aBlock)._value_(each))){
  10745. throw $early=[each];
  10746. }
  10747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10748. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10749. //>>excludeEnd("ctx");
  10750. }));
  10751. return $recv(anotherBlock)._value();
  10752. }
  10753. catch(e) {if(e===$early)return e[0]; throw e}
  10754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10755. }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  10756. //>>excludeEnd("ctx");
  10757. }; }),
  10758. $globals.Collection);
  10759. $core.addMethod(
  10760. $core.method({
  10761. selector: "do:",
  10762. protocol: "enumerating",
  10763. //>>excludeStart("ide", pragmas.excludeIdeData);
  10764. args: ["aBlock"],
  10765. source: "do: aBlock\x0a\x09self subclassResponsibility",
  10766. referencedClasses: [],
  10767. //>>excludeEnd("ide");
  10768. pragmas: [],
  10769. messageSends: ["subclassResponsibility"]
  10770. }, function ($methodClass){ return function (aBlock){
  10771. var self=this,$self=this;
  10772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10773. return $core.withContext(function($ctx1) {
  10774. //>>excludeEnd("ctx");
  10775. $self._subclassResponsibility();
  10776. return self;
  10777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10778. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
  10779. //>>excludeEnd("ctx");
  10780. }; }),
  10781. $globals.Collection);
  10782. $core.addMethod(
  10783. $core.method({
  10784. selector: "do:separatedBy:",
  10785. protocol: "enumerating",
  10786. //>>excludeStart("ide", pragmas.excludeIdeData);
  10787. args: ["aBlock", "anotherBlock"],
  10788. source: "do: aBlock separatedBy: anotherBlock\x0a\x09| actionBeforeElement |\x0a\x09actionBeforeElement := [ actionBeforeElement := anotherBlock ].\x0a\x09self do: [ :each |\x0a\x09\x09actionBeforeElement value.\x0a\x09\x09aBlock value: each ]",
  10789. referencedClasses: [],
  10790. //>>excludeEnd("ide");
  10791. pragmas: [],
  10792. messageSends: ["do:", "value", "value:"]
  10793. }, function ($methodClass){ return function (aBlock,anotherBlock){
  10794. var self=this,$self=this;
  10795. var actionBeforeElement;
  10796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10797. return $core.withContext(function($ctx1) {
  10798. //>>excludeEnd("ctx");
  10799. actionBeforeElement=(function(){
  10800. actionBeforeElement=anotherBlock;
  10801. return actionBeforeElement;
  10802. });
  10803. $self._do_((function(each){
  10804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10805. return $core.withContext(function($ctx2) {
  10806. //>>excludeEnd("ctx");
  10807. $recv(actionBeforeElement)._value();
  10808. return $recv(aBlock)._value_(each);
  10809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10810. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  10811. //>>excludeEnd("ctx");
  10812. }));
  10813. return self;
  10814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10815. }, function($ctx1) {$ctx1.fill(self,"do:separatedBy:",{aBlock:aBlock,anotherBlock:anotherBlock,actionBeforeElement:actionBeforeElement})});
  10816. //>>excludeEnd("ctx");
  10817. }; }),
  10818. $globals.Collection);
  10819. $core.addMethod(
  10820. $core.method({
  10821. selector: "errorNotFound",
  10822. protocol: "error handling",
  10823. //>>excludeStart("ide", pragmas.excludeIdeData);
  10824. args: [],
  10825. source: "errorNotFound\x0a\x09self error: 'Object is not in the collection'",
  10826. referencedClasses: [],
  10827. //>>excludeEnd("ide");
  10828. pragmas: [],
  10829. messageSends: ["error:"]
  10830. }, function ($methodClass){ return function (){
  10831. var self=this,$self=this;
  10832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10833. return $core.withContext(function($ctx1) {
  10834. //>>excludeEnd("ctx");
  10835. $self._error_("Object is not in the collection");
  10836. return self;
  10837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10838. }, function($ctx1) {$ctx1.fill(self,"errorNotFound",{})});
  10839. //>>excludeEnd("ctx");
  10840. }; }),
  10841. $globals.Collection);
  10842. $core.addMethod(
  10843. $core.method({
  10844. selector: "ifEmpty:",
  10845. protocol: "testing",
  10846. //>>excludeStart("ide", pragmas.excludeIdeData);
  10847. args: ["aBlock"],
  10848. source: "ifEmpty: aBlock\x0a\x09\x22Evaluate the given block with the receiver as argument, answering its value if the receiver is empty, otherwise answer the receiver. \x0a\x09Note that the fact that this method returns its argument in case the receiver is not empty allows one to write expressions like the following ones: \x0a\x09\x09self classifyMethodAs:\x0a\x09\x09\x09(myProtocol ifEmpty: ['As yet unclassified'])\x22\x0a\x09^ self isEmpty\x0a\x09\x09ifTrue: \x22aBlock\x22 [ aBlock value ]\x0a\x09\x09ifFalse: [ self ]",
  10849. referencedClasses: [],
  10850. //>>excludeEnd("ide");
  10851. pragmas: [],
  10852. messageSends: ["ifTrue:ifFalse:", "isEmpty", "value"]
  10853. }, function ($methodClass){ return function (aBlock){
  10854. var self=this,$self=this;
  10855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10856. return $core.withContext(function($ctx1) {
  10857. //>>excludeEnd("ctx");
  10858. if($core.assert($self._isEmpty())){
  10859. return $recv(aBlock)._value();
  10860. } else {
  10861. return self;
  10862. }
  10863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10864. }, function($ctx1) {$ctx1.fill(self,"ifEmpty:",{aBlock:aBlock})});
  10865. //>>excludeEnd("ctx");
  10866. }; }),
  10867. $globals.Collection);
  10868. $core.addMethod(
  10869. $core.method({
  10870. selector: "ifEmpty:ifNotEmpty:",
  10871. protocol: "testing",
  10872. //>>excludeStart("ide", pragmas.excludeIdeData);
  10873. args: ["aBlock", "anotherBlock"],
  10874. source: "ifEmpty: aBlock ifNotEmpty: anotherBlock\x0a\x09^ self isEmpty\x0a\x09\x09ifTrue: \x22aBlock\x22 [ aBlock value ]\x0a\x09\x09ifFalse: [ anotherBlock value: self ]",
  10875. referencedClasses: [],
  10876. //>>excludeEnd("ide");
  10877. pragmas: [],
  10878. messageSends: ["ifTrue:ifFalse:", "isEmpty", "value", "value:"]
  10879. }, function ($methodClass){ return function (aBlock,anotherBlock){
  10880. var self=this,$self=this;
  10881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10882. return $core.withContext(function($ctx1) {
  10883. //>>excludeEnd("ctx");
  10884. if($core.assert($self._isEmpty())){
  10885. return $recv(aBlock)._value();
  10886. } else {
  10887. return $recv(anotherBlock)._value_(self);
  10888. }
  10889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10890. }, function($ctx1) {$ctx1.fill(self,"ifEmpty:ifNotEmpty:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  10891. //>>excludeEnd("ctx");
  10892. }; }),
  10893. $globals.Collection);
  10894. $core.addMethod(
  10895. $core.method({
  10896. selector: "ifNotEmpty:",
  10897. protocol: "testing",
  10898. //>>excludeStart("ide", pragmas.excludeIdeData);
  10899. args: ["aBlock"],
  10900. source: "ifNotEmpty: aBlock\x0a\x09^ self notEmpty\x0a\x09\x09ifTrue: [ aBlock value: self ]\x0a\x09\x09ifFalse: [ self ]",
  10901. referencedClasses: [],
  10902. //>>excludeEnd("ide");
  10903. pragmas: [],
  10904. messageSends: ["ifTrue:ifFalse:", "notEmpty", "value:"]
  10905. }, function ($methodClass){ return function (aBlock){
  10906. var self=this,$self=this;
  10907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10908. return $core.withContext(function($ctx1) {
  10909. //>>excludeEnd("ctx");
  10910. if($core.assert($self._notEmpty())){
  10911. return $recv(aBlock)._value_(self);
  10912. } else {
  10913. return self;
  10914. }
  10915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10916. }, function($ctx1) {$ctx1.fill(self,"ifNotEmpty:",{aBlock:aBlock})});
  10917. //>>excludeEnd("ctx");
  10918. }; }),
  10919. $globals.Collection);
  10920. $core.addMethod(
  10921. $core.method({
  10922. selector: "ifNotEmpty:ifEmpty:",
  10923. protocol: "testing",
  10924. //>>excludeStart("ide", pragmas.excludeIdeData);
  10925. args: ["aBlock", "anotherBlock"],
  10926. source: "ifNotEmpty: aBlock ifEmpty: anotherBlock\x0a\x09^ self notEmpty\x0a\x09\x09ifTrue: [ aBlock value: self ]\x0a\x09\x09ifFalse: \x22anotherBlock\x22 [ anotherBlock value ]",
  10927. referencedClasses: [],
  10928. //>>excludeEnd("ide");
  10929. pragmas: [],
  10930. messageSends: ["ifTrue:ifFalse:", "notEmpty", "value:", "value"]
  10931. }, function ($methodClass){ return function (aBlock,anotherBlock){
  10932. var self=this,$self=this;
  10933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10934. return $core.withContext(function($ctx1) {
  10935. //>>excludeEnd("ctx");
  10936. if($core.assert($self._notEmpty())){
  10937. return $recv(aBlock)._value_(self);
  10938. } else {
  10939. return $recv(anotherBlock)._value();
  10940. }
  10941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10942. }, function($ctx1) {$ctx1.fill(self,"ifNotEmpty:ifEmpty:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  10943. //>>excludeEnd("ctx");
  10944. }; }),
  10945. $globals.Collection);
  10946. $core.addMethod(
  10947. $core.method({
  10948. selector: "includes:",
  10949. protocol: "testing",
  10950. //>>excludeStart("ide", pragmas.excludeIdeData);
  10951. args: ["anObject"],
  10952. source: "includes: anObject\x0a\x09^ self anySatisfy: [ :each | each = anObject ]",
  10953. referencedClasses: [],
  10954. //>>excludeEnd("ide");
  10955. pragmas: [],
  10956. messageSends: ["anySatisfy:", "="]
  10957. }, function ($methodClass){ return function (anObject){
  10958. var self=this,$self=this;
  10959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10960. return $core.withContext(function($ctx1) {
  10961. //>>excludeEnd("ctx");
  10962. return $self._anySatisfy_((function(each){
  10963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10964. return $core.withContext(function($ctx2) {
  10965. //>>excludeEnd("ctx");
  10966. return $recv(each).__eq(anObject);
  10967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10968. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10969. //>>excludeEnd("ctx");
  10970. }));
  10971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10972. }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject})});
  10973. //>>excludeEnd("ctx");
  10974. }; }),
  10975. $globals.Collection);
  10976. $core.addMethod(
  10977. $core.method({
  10978. selector: "inject:into:",
  10979. protocol: "enumerating",
  10980. //>>excludeStart("ide", pragmas.excludeIdeData);
  10981. args: ["anObject", "aBlock"],
  10982. source: "inject: anObject into: aBlock\x0a\x09| result |\x0a\x09result := anObject.\x0a\x09self do: [ :each |\x0a\x09\x09result := aBlock value: result value: each ].\x0a\x09^ result",
  10983. referencedClasses: [],
  10984. //>>excludeEnd("ide");
  10985. pragmas: [],
  10986. messageSends: ["do:", "value:value:"]
  10987. }, function ($methodClass){ return function (anObject,aBlock){
  10988. var self=this,$self=this;
  10989. var result;
  10990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10991. return $core.withContext(function($ctx1) {
  10992. //>>excludeEnd("ctx");
  10993. result=anObject;
  10994. $self._do_((function(each){
  10995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10996. return $core.withContext(function($ctx2) {
  10997. //>>excludeEnd("ctx");
  10998. result=$recv(aBlock)._value_value_(result,each);
  10999. return result;
  11000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11001. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11002. //>>excludeEnd("ctx");
  11003. }));
  11004. return result;
  11005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11006. }, function($ctx1) {$ctx1.fill(self,"inject:into:",{anObject:anObject,aBlock:aBlock,result:result})});
  11007. //>>excludeEnd("ctx");
  11008. }; }),
  11009. $globals.Collection);
  11010. $core.addMethod(
  11011. $core.method({
  11012. selector: "intersection:",
  11013. protocol: "enumerating",
  11014. //>>excludeStart("ide", pragmas.excludeIdeData);
  11015. args: ["aCollection"],
  11016. source: "intersection: aCollection\x0a\x09\x22Answer the set theoretic intersection of two collections.\x22\x0a\x0a\x09| set outputSet |\x0a\x09\x0a\x09set := self asSet.\x0a\x09outputSet := Set new.\x0a\x09\x0a\x09aCollection do: [ :each |\x0a\x09\x09((set includes: each) and: [ (outputSet includes: each) not ])\x0a\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09outputSet add: each ]].\x0a\x09\x09\x0a\x09^ self class withAll: outputSet asArray",
  11017. referencedClasses: ["Set"],
  11018. //>>excludeEnd("ide");
  11019. pragmas: [],
  11020. messageSends: ["asSet", "new", "do:", "ifTrue:", "and:", "includes:", "not", "add:", "withAll:", "class", "asArray"]
  11021. }, function ($methodClass){ return function (aCollection){
  11022. var self=this,$self=this;
  11023. var set,outputSet;
  11024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11025. return $core.withContext(function($ctx1) {
  11026. //>>excludeEnd("ctx");
  11027. var $1;
  11028. set=$self._asSet();
  11029. outputSet=$recv($globals.Set)._new();
  11030. $recv(aCollection)._do_((function(each){
  11031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11032. return $core.withContext(function($ctx2) {
  11033. //>>excludeEnd("ctx");
  11034. if($core.assert([$recv(set)._includes_(each)
  11035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11036. ,$ctx2.sendIdx["includes:"]=1
  11037. //>>excludeEnd("ctx");
  11038. ][0])){
  11039. $1=$recv($recv(outputSet)._includes_(each))._not();
  11040. } else {
  11041. $1=false;
  11042. }
  11043. if($core.assert($1)){
  11044. return $recv(outputSet)._add_(each);
  11045. }
  11046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11047. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11048. //>>excludeEnd("ctx");
  11049. }));
  11050. return $recv($self._class())._withAll_($recv(outputSet)._asArray());
  11051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11052. }, function($ctx1) {$ctx1.fill(self,"intersection:",{aCollection:aCollection,set:set,outputSet:outputSet})});
  11053. //>>excludeEnd("ctx");
  11054. }; }),
  11055. $globals.Collection);
  11056. $core.addMethod(
  11057. $core.method({
  11058. selector: "isEmpty",
  11059. protocol: "testing",
  11060. //>>excludeStart("ide", pragmas.excludeIdeData);
  11061. args: [],
  11062. source: "isEmpty\x0a\x09^ self size = 0",
  11063. referencedClasses: [],
  11064. //>>excludeEnd("ide");
  11065. pragmas: [],
  11066. messageSends: ["=", "size"]
  11067. }, function ($methodClass){ return function (){
  11068. var self=this,$self=this;
  11069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11070. return $core.withContext(function($ctx1) {
  11071. //>>excludeEnd("ctx");
  11072. return $recv($self._size()).__eq((0));
  11073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11074. }, function($ctx1) {$ctx1.fill(self,"isEmpty",{})});
  11075. //>>excludeEnd("ctx");
  11076. }; }),
  11077. $globals.Collection);
  11078. $core.addMethod(
  11079. $core.method({
  11080. selector: "noneSatisfy:",
  11081. protocol: "enumerating",
  11082. //>>excludeStart("ide", pragmas.excludeIdeData);
  11083. args: ["aBlock"],
  11084. source: "noneSatisfy: aBlock\x0a\x09\x22Evaluate aBlock with the elements of the receiver.\x0a\x09If aBlock returns false for all elements return true.\x0a\x09Otherwise return false\x22\x0a\x0a\x09self do: [ :item | (aBlock value: item) ifTrue: [ ^ false ] ].\x0a\x09^ true",
  11085. referencedClasses: [],
  11086. //>>excludeEnd("ide");
  11087. pragmas: [],
  11088. messageSends: ["do:", "ifTrue:", "value:"]
  11089. }, function ($methodClass){ return function (aBlock){
  11090. var self=this,$self=this;
  11091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11092. return $core.withContext(function($ctx1) {
  11093. //>>excludeEnd("ctx");
  11094. var $early={};
  11095. try {
  11096. $self._do_((function(item){
  11097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11098. return $core.withContext(function($ctx2) {
  11099. //>>excludeEnd("ctx");
  11100. if($core.assert($recv(aBlock)._value_(item))){
  11101. throw $early=[false];
  11102. }
  11103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11104. }, function($ctx2) {$ctx2.fillBlock({item:item},$ctx1,1)});
  11105. //>>excludeEnd("ctx");
  11106. }));
  11107. return true;
  11108. }
  11109. catch(e) {if(e===$early)return e[0]; throw e}
  11110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11111. }, function($ctx1) {$ctx1.fill(self,"noneSatisfy:",{aBlock:aBlock})});
  11112. //>>excludeEnd("ctx");
  11113. }; }),
  11114. $globals.Collection);
  11115. $core.addMethod(
  11116. $core.method({
  11117. selector: "notEmpty",
  11118. protocol: "testing",
  11119. //>>excludeStart("ide", pragmas.excludeIdeData);
  11120. args: [],
  11121. source: "notEmpty\x0a\x09^ self isEmpty not",
  11122. referencedClasses: [],
  11123. //>>excludeEnd("ide");
  11124. pragmas: [],
  11125. messageSends: ["not", "isEmpty"]
  11126. }, function ($methodClass){ return function (){
  11127. var self=this,$self=this;
  11128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11129. return $core.withContext(function($ctx1) {
  11130. //>>excludeEnd("ctx");
  11131. return $recv($self._isEmpty())._not();
  11132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11133. }, function($ctx1) {$ctx1.fill(self,"notEmpty",{})});
  11134. //>>excludeEnd("ctx");
  11135. }; }),
  11136. $globals.Collection);
  11137. $core.addMethod(
  11138. $core.method({
  11139. selector: "occurrencesOf:",
  11140. protocol: "accessing",
  11141. //>>excludeStart("ide", pragmas.excludeIdeData);
  11142. args: ["anObject"],
  11143. source: "occurrencesOf: anObject\x0a\x09\x22Answer how many of the receiver's elements are equal to anObject.\x22\x0a\x0a\x09| tally |\x0a\x09tally := 0.\x0a\x09self do: [ :each | anObject = each ifTrue: [ tally := tally + 1 ]].\x0a\x09^ tally",
  11144. referencedClasses: [],
  11145. //>>excludeEnd("ide");
  11146. pragmas: [],
  11147. messageSends: ["do:", "ifTrue:", "=", "+"]
  11148. }, function ($methodClass){ return function (anObject){
  11149. var self=this,$self=this;
  11150. var tally;
  11151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11152. return $core.withContext(function($ctx1) {
  11153. //>>excludeEnd("ctx");
  11154. tally=(0);
  11155. $self._do_((function(each){
  11156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11157. return $core.withContext(function($ctx2) {
  11158. //>>excludeEnd("ctx");
  11159. if($core.assert($recv(anObject).__eq(each))){
  11160. tally=$recv(tally).__plus((1));
  11161. return tally;
  11162. }
  11163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11164. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11165. //>>excludeEnd("ctx");
  11166. }));
  11167. return tally;
  11168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11169. }, function($ctx1) {$ctx1.fill(self,"occurrencesOf:",{anObject:anObject,tally:tally})});
  11170. //>>excludeEnd("ctx");
  11171. }; }),
  11172. $globals.Collection);
  11173. $core.addMethod(
  11174. $core.method({
  11175. selector: "putOn:",
  11176. protocol: "streaming",
  11177. //>>excludeStart("ide", pragmas.excludeIdeData);
  11178. args: ["aStream"],
  11179. source: "putOn: aStream\x0a\x09self do: [ :each | each putOn: aStream ]",
  11180. referencedClasses: [],
  11181. //>>excludeEnd("ide");
  11182. pragmas: [],
  11183. messageSends: ["do:", "putOn:"]
  11184. }, function ($methodClass){ return function (aStream){
  11185. var self=this,$self=this;
  11186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11187. return $core.withContext(function($ctx1) {
  11188. //>>excludeEnd("ctx");
  11189. $self._do_((function(each){
  11190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11191. return $core.withContext(function($ctx2) {
  11192. //>>excludeEnd("ctx");
  11193. return $recv(each)._putOn_(aStream);
  11194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11195. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11196. //>>excludeEnd("ctx");
  11197. }));
  11198. return self;
  11199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11200. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream})});
  11201. //>>excludeEnd("ctx");
  11202. }; }),
  11203. $globals.Collection);
  11204. $core.addMethod(
  11205. $core.method({
  11206. selector: "reject:",
  11207. protocol: "enumerating",
  11208. //>>excludeStart("ide", pragmas.excludeIdeData);
  11209. args: ["aBlock"],
  11210. source: "reject: aBlock\x0a\x09^ self select: [ :each | (aBlock value: each) = false ]",
  11211. referencedClasses: [],
  11212. //>>excludeEnd("ide");
  11213. pragmas: [],
  11214. messageSends: ["select:", "=", "value:"]
  11215. }, function ($methodClass){ return function (aBlock){
  11216. var self=this,$self=this;
  11217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11218. return $core.withContext(function($ctx1) {
  11219. //>>excludeEnd("ctx");
  11220. return $self._select_((function(each){
  11221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11222. return $core.withContext(function($ctx2) {
  11223. //>>excludeEnd("ctx");
  11224. return $recv($recv(aBlock)._value_(each)).__eq(false);
  11225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11226. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11227. //>>excludeEnd("ctx");
  11228. }));
  11229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11230. }, function($ctx1) {$ctx1.fill(self,"reject:",{aBlock:aBlock})});
  11231. //>>excludeEnd("ctx");
  11232. }; }),
  11233. $globals.Collection);
  11234. $core.addMethod(
  11235. $core.method({
  11236. selector: "remove:",
  11237. protocol: "adding/removing",
  11238. //>>excludeStart("ide", pragmas.excludeIdeData);
  11239. args: ["anObject"],
  11240. source: "remove: anObject\x0a\x09^ self remove: anObject ifAbsent: [ self errorNotFound ]",
  11241. referencedClasses: [],
  11242. //>>excludeEnd("ide");
  11243. pragmas: [],
  11244. messageSends: ["remove:ifAbsent:", "errorNotFound"]
  11245. }, function ($methodClass){ return function (anObject){
  11246. var self=this,$self=this;
  11247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11248. return $core.withContext(function($ctx1) {
  11249. //>>excludeEnd("ctx");
  11250. return $self._remove_ifAbsent_(anObject,(function(){
  11251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11252. return $core.withContext(function($ctx2) {
  11253. //>>excludeEnd("ctx");
  11254. return $self._errorNotFound();
  11255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11256. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  11257. //>>excludeEnd("ctx");
  11258. }));
  11259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11260. }, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject})});
  11261. //>>excludeEnd("ctx");
  11262. }; }),
  11263. $globals.Collection);
  11264. $core.addMethod(
  11265. $core.method({
  11266. selector: "remove:ifAbsent:",
  11267. protocol: "adding/removing",
  11268. //>>excludeStart("ide", pragmas.excludeIdeData);
  11269. args: ["anObject", "aBlock"],
  11270. source: "remove: anObject ifAbsent: aBlock\x0a\x09self subclassResponsibility",
  11271. referencedClasses: [],
  11272. //>>excludeEnd("ide");
  11273. pragmas: [],
  11274. messageSends: ["subclassResponsibility"]
  11275. }, function ($methodClass){ return function (anObject,aBlock){
  11276. var self=this,$self=this;
  11277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11278. return $core.withContext(function($ctx1) {
  11279. //>>excludeEnd("ctx");
  11280. $self._subclassResponsibility();
  11281. return self;
  11282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11283. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
  11284. //>>excludeEnd("ctx");
  11285. }; }),
  11286. $globals.Collection);
  11287. $core.addMethod(
  11288. $core.method({
  11289. selector: "removeAll",
  11290. protocol: "adding/removing",
  11291. //>>excludeStart("ide", pragmas.excludeIdeData);
  11292. args: [],
  11293. source: "removeAll\x0a\x09self subclassResponsibility",
  11294. referencedClasses: [],
  11295. //>>excludeEnd("ide");
  11296. pragmas: [],
  11297. messageSends: ["subclassResponsibility"]
  11298. }, function ($methodClass){ return function (){
  11299. var self=this,$self=this;
  11300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11301. return $core.withContext(function($ctx1) {
  11302. //>>excludeEnd("ctx");
  11303. $self._subclassResponsibility();
  11304. return self;
  11305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11306. }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
  11307. //>>excludeEnd("ctx");
  11308. }; }),
  11309. $globals.Collection);
  11310. $core.addMethod(
  11311. $core.method({
  11312. selector: "select:",
  11313. protocol: "enumerating",
  11314. //>>excludeStart("ide", pragmas.excludeIdeData);
  11315. args: ["aBlock"],
  11316. source: "select: aBlock\x0a\x09| stream |\x0a\x09stream := self class new writeStream.\x0a\x09self do: [ :each |\x0a\x09\x09(aBlock value: each) ifTrue: [\x0a\x09\x09stream nextPut: each ] ].\x0a\x09^ stream contents",
  11317. referencedClasses: [],
  11318. //>>excludeEnd("ide");
  11319. pragmas: [],
  11320. messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"]
  11321. }, function ($methodClass){ return function (aBlock){
  11322. var self=this,$self=this;
  11323. var stream;
  11324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11325. return $core.withContext(function($ctx1) {
  11326. //>>excludeEnd("ctx");
  11327. stream=$recv($recv($self._class())._new())._writeStream();
  11328. $self._do_((function(each){
  11329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11330. return $core.withContext(function($ctx2) {
  11331. //>>excludeEnd("ctx");
  11332. if($core.assert($recv(aBlock)._value_(each))){
  11333. return $recv(stream)._nextPut_(each);
  11334. }
  11335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11336. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11337. //>>excludeEnd("ctx");
  11338. }));
  11339. return $recv(stream)._contents();
  11340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11341. }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,stream:stream})});
  11342. //>>excludeEnd("ctx");
  11343. }; }),
  11344. $globals.Collection);
  11345. $core.addMethod(
  11346. $core.method({
  11347. selector: "select:thenCollect:",
  11348. protocol: "enumerating",
  11349. //>>excludeStart("ide", pragmas.excludeIdeData);
  11350. args: ["selectBlock", "collectBlock"],
  11351. source: "select: selectBlock thenCollect: collectBlock\x0a\x09| stream |\x0a\x09stream := self class new writeStream.\x0a\x09self do: [ :each |\x0a\x09\x09(selectBlock value: each) ifTrue: [\x0a\x09\x09stream nextPut: (collectBlock value: each) ] ].\x0a\x09^ stream contents",
  11352. referencedClasses: [],
  11353. //>>excludeEnd("ide");
  11354. pragmas: [],
  11355. messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"]
  11356. }, function ($methodClass){ return function (selectBlock,collectBlock){
  11357. var self=this,$self=this;
  11358. var stream;
  11359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11360. return $core.withContext(function($ctx1) {
  11361. //>>excludeEnd("ctx");
  11362. stream=$recv($recv($self._class())._new())._writeStream();
  11363. $self._do_((function(each){
  11364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11365. return $core.withContext(function($ctx2) {
  11366. //>>excludeEnd("ctx");
  11367. if($core.assert([$recv(selectBlock)._value_(each)
  11368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11369. ,$ctx2.sendIdx["value:"]=1
  11370. //>>excludeEnd("ctx");
  11371. ][0])){
  11372. return $recv(stream)._nextPut_($recv(collectBlock)._value_(each));
  11373. }
  11374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11375. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11376. //>>excludeEnd("ctx");
  11377. }));
  11378. return $recv(stream)._contents();
  11379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11380. }, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,stream:stream})});
  11381. //>>excludeEnd("ctx");
  11382. }; }),
  11383. $globals.Collection);
  11384. $core.addMethod(
  11385. $core.method({
  11386. selector: "shallowCopy",
  11387. protocol: "copying",
  11388. //>>excludeStart("ide", pragmas.excludeIdeData);
  11389. args: [],
  11390. source: "shallowCopy\x0a\x09^ self collect: [ :each | each ]",
  11391. referencedClasses: [],
  11392. //>>excludeEnd("ide");
  11393. pragmas: [],
  11394. messageSends: ["collect:"]
  11395. }, function ($methodClass){ return function (){
  11396. var self=this,$self=this;
  11397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11398. return $core.withContext(function($ctx1) {
  11399. //>>excludeEnd("ctx");
  11400. return $self._collect_((function(each){
  11401. return each;
  11402. }));
  11403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11404. }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{})});
  11405. //>>excludeEnd("ctx");
  11406. }; }),
  11407. $globals.Collection);
  11408. $core.addMethod(
  11409. $core.method({
  11410. selector: "shortenedPrintString",
  11411. protocol: "printing",
  11412. //>>excludeStart("ide", pragmas.excludeIdeData);
  11413. args: [],
  11414. source: "shortenedPrintString\x0a\x09^ self size <= 1\x0a\x09\x09ifTrue: [ self printString ]\x0a\x09\x09ifFalse: [ (self copyEmpty copyWith: self anyOne) printString, ' ... ', (self size - 1) asString, ' more items' ]",
  11415. referencedClasses: [],
  11416. //>>excludeEnd("ide");
  11417. pragmas: [],
  11418. messageSends: ["ifTrue:ifFalse:", "<=", "size", "printString", ",", "copyWith:", "copyEmpty", "anyOne", "asString", "-"]
  11419. }, function ($methodClass){ return function (){
  11420. var self=this,$self=this;
  11421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11422. return $core.withContext(function($ctx1) {
  11423. //>>excludeEnd("ctx");
  11424. if($core.assert($recv([$self._size()
  11425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11426. ,$ctx1.sendIdx["size"]=1
  11427. //>>excludeEnd("ctx");
  11428. ][0]).__lt_eq((1)))){
  11429. return [$self._printString()
  11430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11431. ,$ctx1.sendIdx["printString"]=1
  11432. //>>excludeEnd("ctx");
  11433. ][0];
  11434. } else {
  11435. return [$recv([$recv($recv($recv($recv($self._copyEmpty())._copyWith_($self._anyOne()))._printString()).__comma(" ... ")).__comma($recv($recv($self._size()).__minus((1)))._asString())
  11436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11437. ,$ctx1.sendIdx[","]=2
  11438. //>>excludeEnd("ctx");
  11439. ][0]).__comma(" more items")
  11440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11441. ,$ctx1.sendIdx[","]=1
  11442. //>>excludeEnd("ctx");
  11443. ][0];
  11444. }
  11445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11446. }, function($ctx1) {$ctx1.fill(self,"shortenedPrintString",{})});
  11447. //>>excludeEnd("ctx");
  11448. }; }),
  11449. $globals.Collection);
  11450. $core.addMethod(
  11451. $core.method({
  11452. selector: "single",
  11453. protocol: "accessing",
  11454. //>>excludeStart("ide", pragmas.excludeIdeData);
  11455. args: [],
  11456. source: "single\x0a\x09\x22Answer a single element.\x0a\x09Raise an error if collection holds less or more than one element.\x22\x0a\x0a\x09self ifEmpty: [ self error: 'Collection is empty' ].\x0a\x09self size > 1 ifTrue: [ self error: 'Collection holds more than one element' ].\x0a\x09^ self anyOne",
  11457. referencedClasses: [],
  11458. //>>excludeEnd("ide");
  11459. pragmas: [],
  11460. messageSends: ["ifEmpty:", "error:", "ifTrue:", ">", "size", "anyOne"]
  11461. }, function ($methodClass){ return function (){
  11462. var self=this,$self=this;
  11463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11464. return $core.withContext(function($ctx1) {
  11465. //>>excludeEnd("ctx");
  11466. $self._ifEmpty_((function(){
  11467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11468. return $core.withContext(function($ctx2) {
  11469. //>>excludeEnd("ctx");
  11470. return [$self._error_("Collection is empty")
  11471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11472. ,$ctx2.sendIdx["error:"]=1
  11473. //>>excludeEnd("ctx");
  11474. ][0];
  11475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11476. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  11477. //>>excludeEnd("ctx");
  11478. }));
  11479. if($core.assert($recv($self._size()).__gt((1)))){
  11480. $self._error_("Collection holds more than one element");
  11481. }
  11482. return $self._anyOne();
  11483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11484. }, function($ctx1) {$ctx1.fill(self,"single",{})});
  11485. //>>excludeEnd("ctx");
  11486. }; }),
  11487. $globals.Collection);
  11488. $core.addMethod(
  11489. $core.method({
  11490. selector: "size",
  11491. protocol: "accessing",
  11492. //>>excludeStart("ide", pragmas.excludeIdeData);
  11493. args: [],
  11494. source: "size\x0a\x09self subclassResponsibility",
  11495. referencedClasses: [],
  11496. //>>excludeEnd("ide");
  11497. pragmas: [],
  11498. messageSends: ["subclassResponsibility"]
  11499. }, function ($methodClass){ return function (){
  11500. var self=this,$self=this;
  11501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11502. return $core.withContext(function($ctx1) {
  11503. //>>excludeEnd("ctx");
  11504. $self._subclassResponsibility();
  11505. return self;
  11506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11507. }, function($ctx1) {$ctx1.fill(self,"size",{})});
  11508. //>>excludeEnd("ctx");
  11509. }; }),
  11510. $globals.Collection);
  11511. $core.addMethod(
  11512. $core.method({
  11513. selector: "classTag",
  11514. protocol: "accessing",
  11515. //>>excludeStart("ide", pragmas.excludeIdeData);
  11516. args: [],
  11517. 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^ 'collection'",
  11518. referencedClasses: [],
  11519. //>>excludeEnd("ide");
  11520. pragmas: [],
  11521. messageSends: []
  11522. }, function ($methodClass){ return function (){
  11523. var self=this,$self=this;
  11524. return "collection";
  11525. }; }),
  11526. $globals.Collection.a$cls);
  11527. $core.addMethod(
  11528. $core.method({
  11529. selector: "new:",
  11530. protocol: "instance creation",
  11531. //>>excludeStart("ide", pragmas.excludeIdeData);
  11532. args: ["anInteger"],
  11533. source: "new: anInteger\x0a\x09^ self new",
  11534. referencedClasses: [],
  11535. //>>excludeEnd("ide");
  11536. pragmas: [],
  11537. messageSends: ["new"]
  11538. }, function ($methodClass){ return function (anInteger){
  11539. var self=this,$self=this;
  11540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11541. return $core.withContext(function($ctx1) {
  11542. //>>excludeEnd("ctx");
  11543. return $self._new();
  11544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11545. }, function($ctx1) {$ctx1.fill(self,"new:",{anInteger:anInteger})});
  11546. //>>excludeEnd("ctx");
  11547. }; }),
  11548. $globals.Collection.a$cls);
  11549. $core.addMethod(
  11550. $core.method({
  11551. selector: "with:",
  11552. protocol: "instance creation",
  11553. //>>excludeStart("ide", pragmas.excludeIdeData);
  11554. args: ["anObject"],
  11555. source: "with: anObject\x0a\x09\x09^ self new\x0a\x09\x09add: anObject;\x0a\x09\x09yourself",
  11556. referencedClasses: [],
  11557. //>>excludeEnd("ide");
  11558. pragmas: [],
  11559. messageSends: ["add:", "new", "yourself"]
  11560. }, function ($methodClass){ return function (anObject){
  11561. var self=this,$self=this;
  11562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11563. return $core.withContext(function($ctx1) {
  11564. //>>excludeEnd("ctx");
  11565. var $1;
  11566. $1=$self._new();
  11567. $recv($1)._add_(anObject);
  11568. return $recv($1)._yourself();
  11569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11570. }, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject})});
  11571. //>>excludeEnd("ctx");
  11572. }; }),
  11573. $globals.Collection.a$cls);
  11574. $core.addMethod(
  11575. $core.method({
  11576. selector: "with:with:",
  11577. protocol: "instance creation",
  11578. //>>excludeStart("ide", pragmas.excludeIdeData);
  11579. args: ["anObject", "anotherObject"],
  11580. source: "with: anObject with: anotherObject\x0a\x09\x09^ self new\x0a\x09\x09add: anObject;\x0a\x09\x09add: anotherObject;\x0a\x09\x09yourself",
  11581. referencedClasses: [],
  11582. //>>excludeEnd("ide");
  11583. pragmas: [],
  11584. messageSends: ["add:", "new", "yourself"]
  11585. }, function ($methodClass){ return function (anObject,anotherObject){
  11586. var self=this,$self=this;
  11587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11588. return $core.withContext(function($ctx1) {
  11589. //>>excludeEnd("ctx");
  11590. var $1;
  11591. $1=$self._new();
  11592. [$recv($1)._add_(anObject)
  11593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11594. ,$ctx1.sendIdx["add:"]=1
  11595. //>>excludeEnd("ctx");
  11596. ][0];
  11597. $recv($1)._add_(anotherObject);
  11598. return $recv($1)._yourself();
  11599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11600. }, function($ctx1) {$ctx1.fill(self,"with:with:",{anObject:anObject,anotherObject:anotherObject})});
  11601. //>>excludeEnd("ctx");
  11602. }; }),
  11603. $globals.Collection.a$cls);
  11604. $core.addMethod(
  11605. $core.method({
  11606. selector: "with:with:with:",
  11607. protocol: "instance creation",
  11608. //>>excludeStart("ide", pragmas.excludeIdeData);
  11609. args: ["firstObject", "secondObject", "thirdObject"],
  11610. source: "with: firstObject with: secondObject with: thirdObject\x0a\x09\x09^ self new\x0a\x09\x09add: firstObject;\x0a\x09\x09add: secondObject;\x0a\x09\x09add: thirdObject;\x0a\x09\x09yourself",
  11611. referencedClasses: [],
  11612. //>>excludeEnd("ide");
  11613. pragmas: [],
  11614. messageSends: ["add:", "new", "yourself"]
  11615. }, function ($methodClass){ return function (firstObject,secondObject,thirdObject){
  11616. var self=this,$self=this;
  11617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11618. return $core.withContext(function($ctx1) {
  11619. //>>excludeEnd("ctx");
  11620. var $1;
  11621. $1=$self._new();
  11622. [$recv($1)._add_(firstObject)
  11623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11624. ,$ctx1.sendIdx["add:"]=1
  11625. //>>excludeEnd("ctx");
  11626. ][0];
  11627. [$recv($1)._add_(secondObject)
  11628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11629. ,$ctx1.sendIdx["add:"]=2
  11630. //>>excludeEnd("ctx");
  11631. ][0];
  11632. $recv($1)._add_(thirdObject);
  11633. return $recv($1)._yourself();
  11634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11635. }, function($ctx1) {$ctx1.fill(self,"with:with:with:",{firstObject:firstObject,secondObject:secondObject,thirdObject:thirdObject})});
  11636. //>>excludeEnd("ctx");
  11637. }; }),
  11638. $globals.Collection.a$cls);
  11639. $core.addMethod(
  11640. $core.method({
  11641. selector: "withAll:",
  11642. protocol: "instance creation",
  11643. //>>excludeStart("ide", pragmas.excludeIdeData);
  11644. args: ["aCollection"],
  11645. source: "withAll: aCollection\x0a\x09\x09^ self new\x0a\x09\x09addAll: aCollection;\x0a\x09\x09yourself",
  11646. referencedClasses: [],
  11647. //>>excludeEnd("ide");
  11648. pragmas: [],
  11649. messageSends: ["addAll:", "new", "yourself"]
  11650. }, function ($methodClass){ return function (aCollection){
  11651. var self=this,$self=this;
  11652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11653. return $core.withContext(function($ctx1) {
  11654. //>>excludeEnd("ctx");
  11655. var $1;
  11656. $1=$self._new();
  11657. $recv($1)._addAll_(aCollection);
  11658. return $recv($1)._yourself();
  11659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11660. }, function($ctx1) {$ctx1.fill(self,"withAll:",{aCollection:aCollection})});
  11661. //>>excludeEnd("ctx");
  11662. }; }),
  11663. $globals.Collection.a$cls);
  11664. $core.addClass("AssociativeCollection", $globals.Collection, "Kernel-Collections");
  11665. //>>excludeStart("ide", pragmas.excludeIdeData);
  11666. $globals.AssociativeCollection.comment="I am a base class for object-indexed collections (Dictionary et.al.).";
  11667. //>>excludeEnd("ide");
  11668. $core.addMethod(
  11669. $core.method({
  11670. selector: "=",
  11671. protocol: "comparing",
  11672. //>>excludeStart("ide", pragmas.excludeIdeData);
  11673. args: ["anAssociativeCollection"],
  11674. source: "= anAssociativeCollection\x0a\x09^ self class = anAssociativeCollection class and: [\x0a\x09\x09self size = anAssociativeCollection size and: [\x0a\x09\x09\x09| comparisons |\x0a\x09\x09\x09comparisons := OrderedCollection new.\x0a\x09\x09\x09(self associations allSatisfy: [ :each |\x0a\x09\x09\x09\x09anAssociativeCollection at: each key\x0a\x09\x09\x09\x09\x09ifPresent: [ :otherValue | comparisons add: { each value. otherValue }. true ]\x0a\x09\x09\x09\x09\x09ifAbsent: [ false ] ]) and: [\x0a\x09\x09\x09\x09\x09\x09comparisons allSatisfy: [ :each | each first = each second ] ] ] ]",
  11675. referencedClasses: ["OrderedCollection"],
  11676. //>>excludeEnd("ide");
  11677. pragmas: [],
  11678. messageSends: ["and:", "=", "class", "size", "new", "allSatisfy:", "associations", "at:ifPresent:ifAbsent:", "key", "add:", "value", "first", "second"]
  11679. }, function ($methodClass){ return function (anAssociativeCollection){
  11680. var self=this,$self=this;
  11681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11682. return $core.withContext(function($ctx1) {
  11683. //>>excludeEnd("ctx");
  11684. if($core.assert([$recv([$self._class()
  11685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11686. ,$ctx1.sendIdx["class"]=1
  11687. //>>excludeEnd("ctx");
  11688. ][0]).__eq($recv(anAssociativeCollection)._class())
  11689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11690. ,$ctx1.sendIdx["="]=1
  11691. //>>excludeEnd("ctx");
  11692. ][0])){
  11693. if($core.assert([$recv([$self._size()
  11694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11695. ,$ctx1.sendIdx["size"]=1
  11696. //>>excludeEnd("ctx");
  11697. ][0]).__eq($recv(anAssociativeCollection)._size())
  11698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11699. ,$ctx1.sendIdx["="]=2
  11700. //>>excludeEnd("ctx");
  11701. ][0])){
  11702. var comparisons;
  11703. comparisons=$recv($globals.OrderedCollection)._new();
  11704. if($core.assert([$recv($self._associations())._allSatisfy_((function(each){
  11705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11706. return $core.withContext(function($ctx2) {
  11707. //>>excludeEnd("ctx");
  11708. return $recv(anAssociativeCollection)._at_ifPresent_ifAbsent_($recv(each)._key(),(function(otherValue){
  11709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11710. return $core.withContext(function($ctx3) {
  11711. //>>excludeEnd("ctx");
  11712. $recv(comparisons)._add_([$recv(each)._value(),otherValue]);
  11713. return true;
  11714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11715. }, function($ctx3) {$ctx3.fillBlock({otherValue:otherValue},$ctx2,4)});
  11716. //>>excludeEnd("ctx");
  11717. }),(function(){
  11718. return false;
  11719. }));
  11720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11721. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  11722. //>>excludeEnd("ctx");
  11723. }))
  11724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11725. ,$ctx1.sendIdx["allSatisfy:"]=1
  11726. //>>excludeEnd("ctx");
  11727. ][0])){
  11728. return $recv(comparisons)._allSatisfy_((function(each){
  11729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11730. return $core.withContext(function($ctx2) {
  11731. //>>excludeEnd("ctx");
  11732. return $recv($recv(each)._first()).__eq($recv(each)._second());
  11733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11734. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,7)});
  11735. //>>excludeEnd("ctx");
  11736. }));
  11737. } else {
  11738. return false;
  11739. }
  11740. } else {
  11741. return false;
  11742. }
  11743. } else {
  11744. return false;
  11745. }
  11746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11747. }, function($ctx1) {$ctx1.fill(self,"=",{anAssociativeCollection:anAssociativeCollection})});
  11748. //>>excludeEnd("ctx");
  11749. }; }),
  11750. $globals.AssociativeCollection);
  11751. $core.addMethod(
  11752. $core.method({
  11753. selector: "add:",
  11754. protocol: "adding/removing",
  11755. //>>excludeStart("ide", pragmas.excludeIdeData);
  11756. args: ["anAssociation"],
  11757. source: "add: anAssociation\x0a\x09self at: anAssociation key put: anAssociation value",
  11758. referencedClasses: [],
  11759. //>>excludeEnd("ide");
  11760. pragmas: [],
  11761. messageSends: ["at:put:", "key", "value"]
  11762. }, function ($methodClass){ return function (anAssociation){
  11763. var self=this,$self=this;
  11764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11765. return $core.withContext(function($ctx1) {
  11766. //>>excludeEnd("ctx");
  11767. $self._at_put_($recv(anAssociation)._key(),$recv(anAssociation)._value());
  11768. return self;
  11769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11770. }, function($ctx1) {$ctx1.fill(self,"add:",{anAssociation:anAssociation})});
  11771. //>>excludeEnd("ctx");
  11772. }; }),
  11773. $globals.AssociativeCollection);
  11774. $core.addMethod(
  11775. $core.method({
  11776. selector: "addAll:",
  11777. protocol: "adding/removing",
  11778. //>>excludeStart("ide", pragmas.excludeIdeData);
  11779. args: ["anAssociativeCollection"],
  11780. source: "addAll: anAssociativeCollection\x0a\x09super addAll: anAssociativeCollection associations.\x0a\x09^ anAssociativeCollection",
  11781. referencedClasses: [],
  11782. //>>excludeEnd("ide");
  11783. pragmas: [],
  11784. messageSends: ["addAll:", "associations"]
  11785. }, function ($methodClass){ return function (anAssociativeCollection){
  11786. var self=this,$self=this;
  11787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11788. return $core.withContext(function($ctx1) {
  11789. //>>excludeEnd("ctx");
  11790. [(
  11791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11792. $ctx1.supercall = true,
  11793. //>>excludeEnd("ctx");
  11794. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._addAll_.call($self,$recv(anAssociativeCollection)._associations()))
  11795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11796. ,$ctx1.supercall = false
  11797. //>>excludeEnd("ctx");
  11798. ][0];
  11799. return anAssociativeCollection;
  11800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11801. }, function($ctx1) {$ctx1.fill(self,"addAll:",{anAssociativeCollection:anAssociativeCollection})});
  11802. //>>excludeEnd("ctx");
  11803. }; }),
  11804. $globals.AssociativeCollection);
  11805. $core.addMethod(
  11806. $core.method({
  11807. selector: "asDictionary",
  11808. protocol: "converting",
  11809. //>>excludeStart("ide", pragmas.excludeIdeData);
  11810. args: [],
  11811. source: "asDictionary\x0a\x09^ Dictionary from: self associations",
  11812. referencedClasses: ["Dictionary"],
  11813. //>>excludeEnd("ide");
  11814. pragmas: [],
  11815. messageSends: ["from:", "associations"]
  11816. }, function ($methodClass){ return function (){
  11817. var self=this,$self=this;
  11818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11819. return $core.withContext(function($ctx1) {
  11820. //>>excludeEnd("ctx");
  11821. return $recv($globals.Dictionary)._from_($self._associations());
  11822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11823. }, function($ctx1) {$ctx1.fill(self,"asDictionary",{})});
  11824. //>>excludeEnd("ctx");
  11825. }; }),
  11826. $globals.AssociativeCollection);
  11827. $core.addMethod(
  11828. $core.method({
  11829. selector: "asHashedCollection",
  11830. protocol: "converting",
  11831. //>>excludeStart("ide", pragmas.excludeIdeData);
  11832. args: [],
  11833. source: "asHashedCollection\x0a\x09^ HashedCollection from: self associations",
  11834. referencedClasses: ["HashedCollection"],
  11835. //>>excludeEnd("ide");
  11836. pragmas: [],
  11837. messageSends: ["from:", "associations"]
  11838. }, function ($methodClass){ return function (){
  11839. var self=this,$self=this;
  11840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11841. return $core.withContext(function($ctx1) {
  11842. //>>excludeEnd("ctx");
  11843. return $recv($globals.HashedCollection)._from_($self._associations());
  11844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11845. }, function($ctx1) {$ctx1.fill(self,"asHashedCollection",{})});
  11846. //>>excludeEnd("ctx");
  11847. }; }),
  11848. $globals.AssociativeCollection);
  11849. $core.addMethod(
  11850. $core.method({
  11851. selector: "asJavaScriptObject",
  11852. protocol: "converting",
  11853. //>>excludeStart("ide", pragmas.excludeIdeData);
  11854. args: [],
  11855. source: "asJavaScriptObject\x0a\x09| hash |\x0a\x09hash := HashedCollection new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09hash at: key put: value asJavaScriptObject ].\x0a\x09^ hash",
  11856. referencedClasses: ["HashedCollection"],
  11857. //>>excludeEnd("ide");
  11858. pragmas: [],
  11859. messageSends: ["new", "keysAndValuesDo:", "at:put:", "asJavaScriptObject"]
  11860. }, function ($methodClass){ return function (){
  11861. var self=this,$self=this;
  11862. var hash;
  11863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11864. return $core.withContext(function($ctx1) {
  11865. //>>excludeEnd("ctx");
  11866. hash=$recv($globals.HashedCollection)._new();
  11867. $self._keysAndValuesDo_((function(key,value){
  11868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11869. return $core.withContext(function($ctx2) {
  11870. //>>excludeEnd("ctx");
  11871. return $recv(hash)._at_put_(key,$recv(value)._asJavaScriptObject());
  11872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11873. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  11874. //>>excludeEnd("ctx");
  11875. }));
  11876. return hash;
  11877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11878. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{hash:hash})});
  11879. //>>excludeEnd("ctx");
  11880. }; }),
  11881. $globals.AssociativeCollection);
  11882. $core.addMethod(
  11883. $core.method({
  11884. selector: "associations",
  11885. protocol: "accessing",
  11886. //>>excludeStart("ide", pragmas.excludeIdeData);
  11887. args: [],
  11888. source: "associations\x0a\x09| associations |\x0a\x09associations := #().\x0a\x09self associationsDo: [ :each | associations add: each ].\x0a\x09^ associations",
  11889. referencedClasses: [],
  11890. //>>excludeEnd("ide");
  11891. pragmas: [],
  11892. messageSends: ["associationsDo:", "add:"]
  11893. }, function ($methodClass){ return function (){
  11894. var self=this,$self=this;
  11895. var associations;
  11896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11897. return $core.withContext(function($ctx1) {
  11898. //>>excludeEnd("ctx");
  11899. associations=[];
  11900. $self._associationsDo_((function(each){
  11901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11902. return $core.withContext(function($ctx2) {
  11903. //>>excludeEnd("ctx");
  11904. return $recv(associations)._add_(each);
  11905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11906. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11907. //>>excludeEnd("ctx");
  11908. }));
  11909. return associations;
  11910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11911. }, function($ctx1) {$ctx1.fill(self,"associations",{associations:associations})});
  11912. //>>excludeEnd("ctx");
  11913. }; }),
  11914. $globals.AssociativeCollection);
  11915. $core.addMethod(
  11916. $core.method({
  11917. selector: "associationsDo:",
  11918. protocol: "enumerating",
  11919. //>>excludeStart("ide", pragmas.excludeIdeData);
  11920. args: ["aBlock"],
  11921. source: "associationsDo: aBlock\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09aBlock value: (Association key: key value: value) ]",
  11922. referencedClasses: ["Association"],
  11923. //>>excludeEnd("ide");
  11924. pragmas: [],
  11925. messageSends: ["keysAndValuesDo:", "value:", "key:value:"]
  11926. }, function ($methodClass){ return function (aBlock){
  11927. var self=this,$self=this;
  11928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11929. return $core.withContext(function($ctx1) {
  11930. //>>excludeEnd("ctx");
  11931. $self._keysAndValuesDo_((function(key,value){
  11932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11933. return $core.withContext(function($ctx2) {
  11934. //>>excludeEnd("ctx");
  11935. return $recv(aBlock)._value_($recv($globals.Association)._key_value_(key,value));
  11936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11937. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  11938. //>>excludeEnd("ctx");
  11939. }));
  11940. return self;
  11941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11942. }, function($ctx1) {$ctx1.fill(self,"associationsDo:",{aBlock:aBlock})});
  11943. //>>excludeEnd("ctx");
  11944. }; }),
  11945. $globals.AssociativeCollection);
  11946. $core.addMethod(
  11947. $core.method({
  11948. selector: "at:ifPresent:ifAbsent:",
  11949. protocol: "accessing",
  11950. //>>excludeStart("ide", pragmas.excludeIdeData);
  11951. args: ["aKey", "aBlock", "anotherBlock"],
  11952. source: "at: aKey ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09\x22Lookup the given key in the receiver.\x0a\x09If it is present, answer the value of evaluating the oneArgBlock \x0a\x09with the value associated with the key, otherwise answer the value \x0a\x09of absentBlock.\x22\x0a\x09\x0a\x09^ (self includesKey: aKey)\x0a\x09\x09ifTrue: [ aBlock value: (self at: aKey) ]\x0a\x09\x09ifFalse: [ anotherBlock value ]",
  11953. referencedClasses: [],
  11954. //>>excludeEnd("ide");
  11955. pragmas: [],
  11956. messageSends: ["ifTrue:ifFalse:", "includesKey:", "value:", "at:", "value"]
  11957. }, function ($methodClass){ return function (aKey,aBlock,anotherBlock){
  11958. var self=this,$self=this;
  11959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11960. return $core.withContext(function($ctx1) {
  11961. //>>excludeEnd("ctx");
  11962. if($core.assert($self._includesKey_(aKey))){
  11963. return $recv(aBlock)._value_($self._at_(aKey));
  11964. } else {
  11965. return $recv(anotherBlock)._value();
  11966. }
  11967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11968. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aKey:aKey,aBlock:aBlock,anotherBlock:anotherBlock})});
  11969. //>>excludeEnd("ctx");
  11970. }; }),
  11971. $globals.AssociativeCollection);
  11972. $core.addMethod(
  11973. $core.method({
  11974. selector: "collect:",
  11975. protocol: "enumerating",
  11976. //>>excludeStart("ide", pragmas.excludeIdeData);
  11977. args: ["aBlock"],
  11978. source: "collect: aBlock\x0a\x09| newDict |\x0a\x09newDict := self class new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09newDict at: key put: (aBlock value: value) ].\x0a\x09^ newDict",
  11979. referencedClasses: [],
  11980. //>>excludeEnd("ide");
  11981. pragmas: [],
  11982. messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "value:"]
  11983. }, function ($methodClass){ return function (aBlock){
  11984. var self=this,$self=this;
  11985. var newDict;
  11986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11987. return $core.withContext(function($ctx1) {
  11988. //>>excludeEnd("ctx");
  11989. newDict=$recv($self._class())._new();
  11990. $self._keysAndValuesDo_((function(key,value){
  11991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11992. return $core.withContext(function($ctx2) {
  11993. //>>excludeEnd("ctx");
  11994. return $recv(newDict)._at_put_(key,$recv(aBlock)._value_(value));
  11995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11996. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  11997. //>>excludeEnd("ctx");
  11998. }));
  11999. return newDict;
  12000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12001. }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,newDict:newDict})});
  12002. //>>excludeEnd("ctx");
  12003. }; }),
  12004. $globals.AssociativeCollection);
  12005. $core.addMethod(
  12006. $core.method({
  12007. selector: "deepCopy",
  12008. protocol: "copying",
  12009. //>>excludeStart("ide", pragmas.excludeIdeData);
  12010. args: [],
  12011. source: "deepCopy\x0a\x09| copy |\x0a\x09copy := self class new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09copy at: key put: value deepCopy ].\x0a\x09^ copy",
  12012. referencedClasses: [],
  12013. //>>excludeEnd("ide");
  12014. pragmas: [],
  12015. messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "deepCopy"]
  12016. }, function ($methodClass){ return function (){
  12017. var self=this,$self=this;
  12018. var copy;
  12019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12020. return $core.withContext(function($ctx1) {
  12021. //>>excludeEnd("ctx");
  12022. copy=$recv($self._class())._new();
  12023. $self._keysAndValuesDo_((function(key,value){
  12024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12025. return $core.withContext(function($ctx2) {
  12026. //>>excludeEnd("ctx");
  12027. return $recv(copy)._at_put_(key,$recv(value)._deepCopy());
  12028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12029. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  12030. //>>excludeEnd("ctx");
  12031. }));
  12032. return copy;
  12033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12034. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{copy:copy})});
  12035. //>>excludeEnd("ctx");
  12036. }; }),
  12037. $globals.AssociativeCollection);
  12038. $core.addMethod(
  12039. $core.method({
  12040. selector: "detect:ifNone:",
  12041. protocol: "enumerating",
  12042. //>>excludeStart("ide", pragmas.excludeIdeData);
  12043. args: ["aBlock", "anotherBlock"],
  12044. source: "detect: aBlock ifNone: anotherBlock\x0a\x09^ self values detect: aBlock ifNone: anotherBlock",
  12045. referencedClasses: [],
  12046. //>>excludeEnd("ide");
  12047. pragmas: [],
  12048. messageSends: ["detect:ifNone:", "values"]
  12049. }, function ($methodClass){ return function (aBlock,anotherBlock){
  12050. var self=this,$self=this;
  12051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12052. return $core.withContext(function($ctx1) {
  12053. //>>excludeEnd("ctx");
  12054. return $recv($self._values())._detect_ifNone_(aBlock,anotherBlock);
  12055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12056. }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  12057. //>>excludeEnd("ctx");
  12058. }; }),
  12059. $globals.AssociativeCollection);
  12060. $core.addMethod(
  12061. $core.method({
  12062. selector: "do:",
  12063. protocol: "enumerating",
  12064. //>>excludeStart("ide", pragmas.excludeIdeData);
  12065. args: ["aBlock"],
  12066. source: "do: aBlock\x0a\x09self valuesDo: aBlock",
  12067. referencedClasses: [],
  12068. //>>excludeEnd("ide");
  12069. pragmas: [],
  12070. messageSends: ["valuesDo:"]
  12071. }, function ($methodClass){ return function (aBlock){
  12072. var self=this,$self=this;
  12073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12074. return $core.withContext(function($ctx1) {
  12075. //>>excludeEnd("ctx");
  12076. $self._valuesDo_(aBlock);
  12077. return self;
  12078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12079. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
  12080. //>>excludeEnd("ctx");
  12081. }; }),
  12082. $globals.AssociativeCollection);
  12083. $core.addMethod(
  12084. $core.method({
  12085. selector: "includes:",
  12086. protocol: "enumerating",
  12087. //>>excludeStart("ide", pragmas.excludeIdeData);
  12088. args: ["anObject"],
  12089. source: "includes: anObject\x0a\x09^ self values includes: anObject",
  12090. referencedClasses: [],
  12091. //>>excludeEnd("ide");
  12092. pragmas: [],
  12093. messageSends: ["includes:", "values"]
  12094. }, function ($methodClass){ return function (anObject){
  12095. var self=this,$self=this;
  12096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12097. return $core.withContext(function($ctx1) {
  12098. //>>excludeEnd("ctx");
  12099. return $recv($self._values())._includes_(anObject);
  12100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12101. }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject})});
  12102. //>>excludeEnd("ctx");
  12103. }; }),
  12104. $globals.AssociativeCollection);
  12105. $core.addMethod(
  12106. $core.method({
  12107. selector: "includesKey:",
  12108. protocol: "testing",
  12109. //>>excludeStart("ide", pragmas.excludeIdeData);
  12110. args: ["aKey"],
  12111. source: "includesKey: aKey\x0a\x09self subclassResponsibility",
  12112. referencedClasses: [],
  12113. //>>excludeEnd("ide");
  12114. pragmas: [],
  12115. messageSends: ["subclassResponsibility"]
  12116. }, function ($methodClass){ return function (aKey){
  12117. var self=this,$self=this;
  12118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12119. return $core.withContext(function($ctx1) {
  12120. //>>excludeEnd("ctx");
  12121. $self._subclassResponsibility();
  12122. return self;
  12123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12124. }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey})});
  12125. //>>excludeEnd("ctx");
  12126. }; }),
  12127. $globals.AssociativeCollection);
  12128. $core.addMethod(
  12129. $core.method({
  12130. selector: "indexOf:ifAbsent:",
  12131. protocol: "accessing",
  12132. //>>excludeStart("ide", pragmas.excludeIdeData);
  12133. args: ["anObject", "aBlock"],
  12134. source: "indexOf: anObject ifAbsent: aBlock\x0a\x09^ self keys \x0a\x09\x09detect: [ :each | (self at: each) = anObject ] \x0a\x09\x09ifNone: aBlock",
  12135. referencedClasses: [],
  12136. //>>excludeEnd("ide");
  12137. pragmas: [],
  12138. messageSends: ["detect:ifNone:", "keys", "=", "at:"]
  12139. }, function ($methodClass){ return function (anObject,aBlock){
  12140. var self=this,$self=this;
  12141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12142. return $core.withContext(function($ctx1) {
  12143. //>>excludeEnd("ctx");
  12144. return $recv($self._keys())._detect_ifNone_((function(each){
  12145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12146. return $core.withContext(function($ctx2) {
  12147. //>>excludeEnd("ctx");
  12148. return $recv($self._at_(each)).__eq(anObject);
  12149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12150. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  12151. //>>excludeEnd("ctx");
  12152. }),aBlock);
  12153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12154. }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
  12155. //>>excludeEnd("ctx");
  12156. }; }),
  12157. $globals.AssociativeCollection);
  12158. $core.addMethod(
  12159. $core.method({
  12160. selector: "keyAtValue:",
  12161. protocol: "accessing",
  12162. //>>excludeStart("ide", pragmas.excludeIdeData);
  12163. args: ["anObject"],
  12164. source: "keyAtValue: anObject\x0a\x09^ self keyAtValue: anObject ifAbsent: [ self errorNotFound ]",
  12165. referencedClasses: [],
  12166. //>>excludeEnd("ide");
  12167. pragmas: [],
  12168. messageSends: ["keyAtValue:ifAbsent:", "errorNotFound"]
  12169. }, function ($methodClass){ return function (anObject){
  12170. var self=this,$self=this;
  12171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12172. return $core.withContext(function($ctx1) {
  12173. //>>excludeEnd("ctx");
  12174. return $self._keyAtValue_ifAbsent_(anObject,(function(){
  12175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12176. return $core.withContext(function($ctx2) {
  12177. //>>excludeEnd("ctx");
  12178. return $self._errorNotFound();
  12179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12180. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  12181. //>>excludeEnd("ctx");
  12182. }));
  12183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12184. }, function($ctx1) {$ctx1.fill(self,"keyAtValue:",{anObject:anObject})});
  12185. //>>excludeEnd("ctx");
  12186. }; }),
  12187. $globals.AssociativeCollection);
  12188. $core.addMethod(
  12189. $core.method({
  12190. selector: "keyAtValue:ifAbsent:",
  12191. protocol: "accessing",
  12192. //>>excludeStart("ide", pragmas.excludeIdeData);
  12193. args: ["anObject", "aBlock"],
  12194. source: "keyAtValue: anObject ifAbsent: aBlock\x0a\x09^ self indexOf: anObject ifAbsent: aBlock",
  12195. referencedClasses: [],
  12196. //>>excludeEnd("ide");
  12197. pragmas: [],
  12198. messageSends: ["indexOf:ifAbsent:"]
  12199. }, function ($methodClass){ return function (anObject,aBlock){
  12200. var self=this,$self=this;
  12201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12202. return $core.withContext(function($ctx1) {
  12203. //>>excludeEnd("ctx");
  12204. return $self._indexOf_ifAbsent_(anObject,aBlock);
  12205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12206. }, function($ctx1) {$ctx1.fill(self,"keyAtValue:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
  12207. //>>excludeEnd("ctx");
  12208. }; }),
  12209. $globals.AssociativeCollection);
  12210. $core.addMethod(
  12211. $core.method({
  12212. selector: "keys",
  12213. protocol: "accessing",
  12214. //>>excludeStart("ide", pragmas.excludeIdeData);
  12215. args: [],
  12216. source: "keys\x0a\x09self subclassResponsibility",
  12217. referencedClasses: [],
  12218. //>>excludeEnd("ide");
  12219. pragmas: [],
  12220. messageSends: ["subclassResponsibility"]
  12221. }, function ($methodClass){ return function (){
  12222. var self=this,$self=this;
  12223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12224. return $core.withContext(function($ctx1) {
  12225. //>>excludeEnd("ctx");
  12226. $self._subclassResponsibility();
  12227. return self;
  12228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12229. }, function($ctx1) {$ctx1.fill(self,"keys",{})});
  12230. //>>excludeEnd("ctx");
  12231. }; }),
  12232. $globals.AssociativeCollection);
  12233. $core.addMethod(
  12234. $core.method({
  12235. selector: "keysAndValuesDo:",
  12236. protocol: "enumerating",
  12237. //>>excludeStart("ide", pragmas.excludeIdeData);
  12238. args: ["aBlock"],
  12239. source: "keysAndValuesDo: aBlock\x0a\x09self keysDo: [ :each |\x0a\x09\x09aBlock value: each value: (self at: each) ]",
  12240. referencedClasses: [],
  12241. //>>excludeEnd("ide");
  12242. pragmas: [],
  12243. messageSends: ["keysDo:", "value:value:", "at:"]
  12244. }, function ($methodClass){ return function (aBlock){
  12245. var self=this,$self=this;
  12246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12247. return $core.withContext(function($ctx1) {
  12248. //>>excludeEnd("ctx");
  12249. $self._keysDo_((function(each){
  12250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12251. return $core.withContext(function($ctx2) {
  12252. //>>excludeEnd("ctx");
  12253. return $recv(aBlock)._value_value_(each,$self._at_(each));
  12254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12255. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  12256. //>>excludeEnd("ctx");
  12257. }));
  12258. return self;
  12259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12260. }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock})});
  12261. //>>excludeEnd("ctx");
  12262. }; }),
  12263. $globals.AssociativeCollection);
  12264. $core.addMethod(
  12265. $core.method({
  12266. selector: "keysDo:",
  12267. protocol: "enumerating",
  12268. //>>excludeStart("ide", pragmas.excludeIdeData);
  12269. args: ["aBlock"],
  12270. source: "keysDo: aBlock\x0a\x09self subclassResponsibility",
  12271. referencedClasses: [],
  12272. //>>excludeEnd("ide");
  12273. pragmas: [],
  12274. messageSends: ["subclassResponsibility"]
  12275. }, function ($methodClass){ return function (aBlock){
  12276. var self=this,$self=this;
  12277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12278. return $core.withContext(function($ctx1) {
  12279. //>>excludeEnd("ctx");
  12280. $self._subclassResponsibility();
  12281. return self;
  12282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12283. }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock})});
  12284. //>>excludeEnd("ctx");
  12285. }; }),
  12286. $globals.AssociativeCollection);
  12287. $core.addMethod(
  12288. $core.method({
  12289. selector: "printOn:",
  12290. protocol: "printing",
  12291. //>>excludeStart("ide", pragmas.excludeIdeData);
  12292. args: ["aStream"],
  12293. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09\x0a\x09aStream nextPutAll: ' ('.\x0a\x09self associations\x0a\x09\x09do: [ :each | each printOn: aStream ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ' , ' ].\x0a\x09aStream nextPutAll: ')'",
  12294. referencedClasses: [],
  12295. //>>excludeEnd("ide");
  12296. pragmas: [],
  12297. messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:", "associations"]
  12298. }, function ($methodClass){ return function (aStream){
  12299. var self=this,$self=this;
  12300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12301. return $core.withContext(function($ctx1) {
  12302. //>>excludeEnd("ctx");
  12303. [(
  12304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12305. $ctx1.supercall = true,
  12306. //>>excludeEnd("ctx");
  12307. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  12308. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12309. ,$ctx1.sendIdx["printOn:"]=1,$ctx1.supercall = false
  12310. //>>excludeEnd("ctx");
  12311. ][0];
  12312. [$recv(aStream)._nextPutAll_(" (")
  12313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12314. ,$ctx1.sendIdx["nextPutAll:"]=1
  12315. //>>excludeEnd("ctx");
  12316. ][0];
  12317. $recv($self._associations())._do_separatedBy_((function(each){
  12318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12319. return $core.withContext(function($ctx2) {
  12320. //>>excludeEnd("ctx");
  12321. return $recv(each)._printOn_(aStream);
  12322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12323. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  12324. //>>excludeEnd("ctx");
  12325. }),(function(){
  12326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12327. return $core.withContext(function($ctx2) {
  12328. //>>excludeEnd("ctx");
  12329. return [$recv(aStream)._nextPutAll_(" , ")
  12330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12331. ,$ctx2.sendIdx["nextPutAll:"]=2
  12332. //>>excludeEnd("ctx");
  12333. ][0];
  12334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12335. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  12336. //>>excludeEnd("ctx");
  12337. }));
  12338. $recv(aStream)._nextPutAll_(")");
  12339. return self;
  12340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12341. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  12342. //>>excludeEnd("ctx");
  12343. }; }),
  12344. $globals.AssociativeCollection);
  12345. $core.addMethod(
  12346. $core.method({
  12347. selector: "remove:ifAbsent:",
  12348. protocol: "adding/removing",
  12349. //>>excludeStart("ide", pragmas.excludeIdeData);
  12350. args: ["aKey", "aBlock"],
  12351. source: "remove: aKey ifAbsent: aBlock\x0a\x09^ self removeKey: aKey ifAbsent: aBlock",
  12352. referencedClasses: [],
  12353. //>>excludeEnd("ide");
  12354. pragmas: [],
  12355. messageSends: ["removeKey:ifAbsent:"]
  12356. }, function ($methodClass){ return function (aKey,aBlock){
  12357. var self=this,$self=this;
  12358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12359. return $core.withContext(function($ctx1) {
  12360. //>>excludeEnd("ctx");
  12361. return $self._removeKey_ifAbsent_(aKey,aBlock);
  12362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12363. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
  12364. //>>excludeEnd("ctx");
  12365. }; }),
  12366. $globals.AssociativeCollection);
  12367. $core.addMethod(
  12368. $core.method({
  12369. selector: "removeAll",
  12370. protocol: "adding/removing",
  12371. //>>excludeStart("ide", pragmas.excludeIdeData);
  12372. args: [],
  12373. source: "removeAll\x0a\x09^ self keys do: [ :each | self removeKey: each ]",
  12374. referencedClasses: [],
  12375. //>>excludeEnd("ide");
  12376. pragmas: [],
  12377. messageSends: ["do:", "keys", "removeKey:"]
  12378. }, function ($methodClass){ return function (){
  12379. var self=this,$self=this;
  12380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12381. return $core.withContext(function($ctx1) {
  12382. //>>excludeEnd("ctx");
  12383. return $recv($self._keys())._do_((function(each){
  12384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12385. return $core.withContext(function($ctx2) {
  12386. //>>excludeEnd("ctx");
  12387. return $self._removeKey_(each);
  12388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12389. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  12390. //>>excludeEnd("ctx");
  12391. }));
  12392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12393. }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
  12394. //>>excludeEnd("ctx");
  12395. }; }),
  12396. $globals.AssociativeCollection);
  12397. $core.addMethod(
  12398. $core.method({
  12399. selector: "removeKey:",
  12400. protocol: "adding/removing",
  12401. //>>excludeStart("ide", pragmas.excludeIdeData);
  12402. args: ["aKey"],
  12403. source: "removeKey: aKey\x0a\x09^ self remove: aKey",
  12404. referencedClasses: [],
  12405. //>>excludeEnd("ide");
  12406. pragmas: [],
  12407. messageSends: ["remove:"]
  12408. }, function ($methodClass){ return function (aKey){
  12409. var self=this,$self=this;
  12410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12411. return $core.withContext(function($ctx1) {
  12412. //>>excludeEnd("ctx");
  12413. return $self._remove_(aKey);
  12414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12415. }, function($ctx1) {$ctx1.fill(self,"removeKey:",{aKey:aKey})});
  12416. //>>excludeEnd("ctx");
  12417. }; }),
  12418. $globals.AssociativeCollection);
  12419. $core.addMethod(
  12420. $core.method({
  12421. selector: "removeKey:ifAbsent:",
  12422. protocol: "adding/removing",
  12423. //>>excludeStart("ide", pragmas.excludeIdeData);
  12424. args: ["aKey", "aBlock"],
  12425. source: "removeKey: aKey ifAbsent: aBlock\x0a\x09self subclassResponsibility",
  12426. referencedClasses: [],
  12427. //>>excludeEnd("ide");
  12428. pragmas: [],
  12429. messageSends: ["subclassResponsibility"]
  12430. }, function ($methodClass){ return function (aKey,aBlock){
  12431. var self=this,$self=this;
  12432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12433. return $core.withContext(function($ctx1) {
  12434. //>>excludeEnd("ctx");
  12435. $self._subclassResponsibility();
  12436. return self;
  12437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12438. }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
  12439. //>>excludeEnd("ctx");
  12440. }; }),
  12441. $globals.AssociativeCollection);
  12442. $core.addMethod(
  12443. $core.method({
  12444. selector: "select:",
  12445. protocol: "enumerating",
  12446. //>>excludeStart("ide", pragmas.excludeIdeData);
  12447. args: ["aBlock"],
  12448. source: "select: aBlock\x0a\x09| newDict |\x0a\x09newDict := self class new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09(aBlock value: value) ifTrue: [ newDict at: key put: value ]].\x0a\x09^ newDict",
  12449. referencedClasses: [],
  12450. //>>excludeEnd("ide");
  12451. pragmas: [],
  12452. messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "value:", "at:put:"]
  12453. }, function ($methodClass){ return function (aBlock){
  12454. var self=this,$self=this;
  12455. var newDict;
  12456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12457. return $core.withContext(function($ctx1) {
  12458. //>>excludeEnd("ctx");
  12459. newDict=$recv($self._class())._new();
  12460. $self._keysAndValuesDo_((function(key,value){
  12461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12462. return $core.withContext(function($ctx2) {
  12463. //>>excludeEnd("ctx");
  12464. if($core.assert($recv(aBlock)._value_(value))){
  12465. return $recv(newDict)._at_put_(key,value);
  12466. }
  12467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12468. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  12469. //>>excludeEnd("ctx");
  12470. }));
  12471. return newDict;
  12472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12473. }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,newDict:newDict})});
  12474. //>>excludeEnd("ctx");
  12475. }; }),
  12476. $globals.AssociativeCollection);
  12477. $core.addMethod(
  12478. $core.method({
  12479. selector: "select:thenCollect:",
  12480. protocol: "enumerating",
  12481. //>>excludeStart("ide", pragmas.excludeIdeData);
  12482. args: ["selectBlock", "collectBlock"],
  12483. source: "select: selectBlock thenCollect: collectBlock\x0a\x09| newDict |\x0a\x09newDict := self class new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09(selectBlock value: value) ifTrue: [ newDict at: key put: (collectBlock value: value) ]].\x0a\x09^ newDict",
  12484. referencedClasses: [],
  12485. //>>excludeEnd("ide");
  12486. pragmas: [],
  12487. messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "value:", "at:put:"]
  12488. }, function ($methodClass){ return function (selectBlock,collectBlock){
  12489. var self=this,$self=this;
  12490. var newDict;
  12491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12492. return $core.withContext(function($ctx1) {
  12493. //>>excludeEnd("ctx");
  12494. newDict=$recv($self._class())._new();
  12495. $self._keysAndValuesDo_((function(key,value){
  12496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12497. return $core.withContext(function($ctx2) {
  12498. //>>excludeEnd("ctx");
  12499. if($core.assert([$recv(selectBlock)._value_(value)
  12500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12501. ,$ctx2.sendIdx["value:"]=1
  12502. //>>excludeEnd("ctx");
  12503. ][0])){
  12504. return $recv(newDict)._at_put_(key,$recv(collectBlock)._value_(value));
  12505. }
  12506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12507. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  12508. //>>excludeEnd("ctx");
  12509. }));
  12510. return newDict;
  12511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12512. }, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,newDict:newDict})});
  12513. //>>excludeEnd("ctx");
  12514. }; }),
  12515. $globals.AssociativeCollection);
  12516. $core.addMethod(
  12517. $core.method({
  12518. selector: "shallowCopy",
  12519. protocol: "copying",
  12520. //>>excludeStart("ide", pragmas.excludeIdeData);
  12521. args: [],
  12522. source: "shallowCopy\x0a\x09| copy |\x0a\x09copy := self class new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09copy at: key put: value ].\x0a\x09^ copy",
  12523. referencedClasses: [],
  12524. //>>excludeEnd("ide");
  12525. pragmas: [],
  12526. messageSends: ["new", "class", "keysAndValuesDo:", "at:put:"]
  12527. }, function ($methodClass){ return function (){
  12528. var self=this,$self=this;
  12529. var copy;
  12530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12531. return $core.withContext(function($ctx1) {
  12532. //>>excludeEnd("ctx");
  12533. copy=$recv($self._class())._new();
  12534. $self._keysAndValuesDo_((function(key,value){
  12535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12536. return $core.withContext(function($ctx2) {
  12537. //>>excludeEnd("ctx");
  12538. return $recv(copy)._at_put_(key,value);
  12539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12540. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  12541. //>>excludeEnd("ctx");
  12542. }));
  12543. return copy;
  12544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12545. }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{copy:copy})});
  12546. //>>excludeEnd("ctx");
  12547. }; }),
  12548. $globals.AssociativeCollection);
  12549. $core.addMethod(
  12550. $core.method({
  12551. selector: "shortenedPrintString",
  12552. protocol: "printing",
  12553. //>>excludeStart("ide", pragmas.excludeIdeData);
  12554. args: [],
  12555. source: "shortenedPrintString\x0a\x09^ self size <= 1\x0a\x09\x09ifTrue: [ self printString ]\x0a\x09\x09ifFalse: [ | key | key := self keys anyOne. (self copyEmpty at: key put: (self at: key); yourself) printString, ' ... ', (self size - 1) asString, ' more items' ]",
  12556. referencedClasses: [],
  12557. //>>excludeEnd("ide");
  12558. pragmas: [],
  12559. messageSends: ["ifTrue:ifFalse:", "<=", "size", "printString", "anyOne", "keys", ",", "at:put:", "copyEmpty", "at:", "yourself", "asString", "-"]
  12560. }, function ($methodClass){ return function (){
  12561. var self=this,$self=this;
  12562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12563. return $core.withContext(function($ctx1) {
  12564. //>>excludeEnd("ctx");
  12565. var $1;
  12566. if($core.assert($recv([$self._size()
  12567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12568. ,$ctx1.sendIdx["size"]=1
  12569. //>>excludeEnd("ctx");
  12570. ][0]).__lt_eq((1)))){
  12571. return [$self._printString()
  12572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12573. ,$ctx1.sendIdx["printString"]=1
  12574. //>>excludeEnd("ctx");
  12575. ][0];
  12576. } else {
  12577. var key;
  12578. key=$recv($self._keys())._anyOne();
  12579. $1=$self._copyEmpty();
  12580. $recv($1)._at_put_(key,$self._at_(key));
  12581. return [$recv([$recv($recv($recv($recv($1)._yourself())._printString()).__comma(" ... ")).__comma($recv($recv($self._size()).__minus((1)))._asString())
  12582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12583. ,$ctx1.sendIdx[","]=2
  12584. //>>excludeEnd("ctx");
  12585. ][0]).__comma(" more items")
  12586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12587. ,$ctx1.sendIdx[","]=1
  12588. //>>excludeEnd("ctx");
  12589. ][0];
  12590. }
  12591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12592. }, function($ctx1) {$ctx1.fill(self,"shortenedPrintString",{})});
  12593. //>>excludeEnd("ctx");
  12594. }; }),
  12595. $globals.AssociativeCollection);
  12596. $core.addMethod(
  12597. $core.method({
  12598. selector: "size",
  12599. protocol: "accessing",
  12600. //>>excludeStart("ide", pragmas.excludeIdeData);
  12601. args: [],
  12602. source: "size\x0a\x09^ self keys size",
  12603. referencedClasses: [],
  12604. //>>excludeEnd("ide");
  12605. pragmas: [],
  12606. messageSends: ["size", "keys"]
  12607. }, function ($methodClass){ return function (){
  12608. var self=this,$self=this;
  12609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12610. return $core.withContext(function($ctx1) {
  12611. //>>excludeEnd("ctx");
  12612. return $recv($self._keys())._size();
  12613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12614. }, function($ctx1) {$ctx1.fill(self,"size",{})});
  12615. //>>excludeEnd("ctx");
  12616. }; }),
  12617. $globals.AssociativeCollection);
  12618. $core.addMethod(
  12619. $core.method({
  12620. selector: "values",
  12621. protocol: "accessing",
  12622. //>>excludeStart("ide", pragmas.excludeIdeData);
  12623. args: [],
  12624. source: "values\x0a\x09self subclassResponsibility",
  12625. referencedClasses: [],
  12626. //>>excludeEnd("ide");
  12627. pragmas: [],
  12628. messageSends: ["subclassResponsibility"]
  12629. }, function ($methodClass){ return function (){
  12630. var self=this,$self=this;
  12631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12632. return $core.withContext(function($ctx1) {
  12633. //>>excludeEnd("ctx");
  12634. $self._subclassResponsibility();
  12635. return self;
  12636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12637. }, function($ctx1) {$ctx1.fill(self,"values",{})});
  12638. //>>excludeEnd("ctx");
  12639. }; }),
  12640. $globals.AssociativeCollection);
  12641. $core.addMethod(
  12642. $core.method({
  12643. selector: "valuesDo:",
  12644. protocol: "enumerating",
  12645. //>>excludeStart("ide", pragmas.excludeIdeData);
  12646. args: ["aBlock"],
  12647. source: "valuesDo: aBlock\x0a\x09self subclassResponsibility",
  12648. referencedClasses: [],
  12649. //>>excludeEnd("ide");
  12650. pragmas: [],
  12651. messageSends: ["subclassResponsibility"]
  12652. }, function ($methodClass){ return function (aBlock){
  12653. var self=this,$self=this;
  12654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12655. return $core.withContext(function($ctx1) {
  12656. //>>excludeEnd("ctx");
  12657. $self._subclassResponsibility();
  12658. return self;
  12659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12660. }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock})});
  12661. //>>excludeEnd("ctx");
  12662. }; }),
  12663. $globals.AssociativeCollection);
  12664. $core.addMethod(
  12665. $core.method({
  12666. selector: "withIndexDo:",
  12667. protocol: "enumerating",
  12668. //>>excludeStart("ide", pragmas.excludeIdeData);
  12669. args: ["aBlock"],
  12670. source: "withIndexDo: aBlock\x0a\x09self keysAndValuesDo: [ :key :value | aBlock value: value value: key ]",
  12671. referencedClasses: [],
  12672. //>>excludeEnd("ide");
  12673. pragmas: [],
  12674. messageSends: ["keysAndValuesDo:", "value:value:"]
  12675. }, function ($methodClass){ return function (aBlock){
  12676. var self=this,$self=this;
  12677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12678. return $core.withContext(function($ctx1) {
  12679. //>>excludeEnd("ctx");
  12680. $self._keysAndValuesDo_((function(key,value){
  12681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12682. return $core.withContext(function($ctx2) {
  12683. //>>excludeEnd("ctx");
  12684. return $recv(aBlock)._value_value_(value,key);
  12685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12686. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  12687. //>>excludeEnd("ctx");
  12688. }));
  12689. return self;
  12690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12691. }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock})});
  12692. //>>excludeEnd("ctx");
  12693. }; }),
  12694. $globals.AssociativeCollection);
  12695. $core.addMethod(
  12696. $core.method({
  12697. selector: "from:",
  12698. protocol: "instance creation",
  12699. //>>excludeStart("ide", pragmas.excludeIdeData);
  12700. args: ["aCollection"],
  12701. source: "from: aCollection\x0a\x09| newCollection |\x0a\x09newCollection := self new.\x0a\x09aCollection do: [ :each | newCollection add: each ].\x0a\x09^ newCollection",
  12702. referencedClasses: [],
  12703. //>>excludeEnd("ide");
  12704. pragmas: [],
  12705. messageSends: ["new", "do:", "add:"]
  12706. }, function ($methodClass){ return function (aCollection){
  12707. var self=this,$self=this;
  12708. var newCollection;
  12709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12710. return $core.withContext(function($ctx1) {
  12711. //>>excludeEnd("ctx");
  12712. newCollection=$self._new();
  12713. $recv(aCollection)._do_((function(each){
  12714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12715. return $core.withContext(function($ctx2) {
  12716. //>>excludeEnd("ctx");
  12717. return $recv(newCollection)._add_(each);
  12718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12719. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  12720. //>>excludeEnd("ctx");
  12721. }));
  12722. return newCollection;
  12723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12724. }, function($ctx1) {$ctx1.fill(self,"from:",{aCollection:aCollection,newCollection:newCollection})});
  12725. //>>excludeEnd("ctx");
  12726. }; }),
  12727. $globals.AssociativeCollection.a$cls);
  12728. $core.addMethod(
  12729. $core.method({
  12730. selector: "fromPairs:",
  12731. protocol: "instance creation",
  12732. //>>excludeStart("ide", pragmas.excludeIdeData);
  12733. args: ["aCollection"],
  12734. source: "fromPairs: aCollection\x0a\x09\x22This message is poorly named and has been replaced by #from:\x22\x0a\x09^ self from: aCollection",
  12735. referencedClasses: [],
  12736. //>>excludeEnd("ide");
  12737. pragmas: [],
  12738. messageSends: ["from:"]
  12739. }, function ($methodClass){ return function (aCollection){
  12740. var self=this,$self=this;
  12741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12742. return $core.withContext(function($ctx1) {
  12743. //>>excludeEnd("ctx");
  12744. return $self._from_(aCollection);
  12745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12746. }, function($ctx1) {$ctx1.fill(self,"fromPairs:",{aCollection:aCollection})});
  12747. //>>excludeEnd("ctx");
  12748. }; }),
  12749. $globals.AssociativeCollection.a$cls);
  12750. $core.addMethod(
  12751. $core.method({
  12752. selector: "newFromPairs:",
  12753. protocol: "instance creation",
  12754. //>>excludeStart("ide", pragmas.excludeIdeData);
  12755. args: ["aCollection"],
  12756. source: "newFromPairs: aCollection\x0a\x09\x22Accept an array of elements where every two elements form an \x0a\x09association - the odd element being the key, and the even element the value.\x22\x0a\x09\x0a\x09| newCollection |\x0a\x09\x0a\x09aCollection size even ifFalse: [ \x0a\x09\x09self error: '#newFromPairs only accepts arrays of an even length' ].\x0a\x09\x09\x0a\x09newCollection := self new.\x0a\x09( 1 to: aCollection size by: 2 ) do: [ :each | \x0a\x09\x09newCollection at: (aCollection at: each) put: (aCollection at: each + 1) ].\x0a\x09\x09\x0a\x09^ newCollection",
  12757. referencedClasses: [],
  12758. //>>excludeEnd("ide");
  12759. pragmas: [],
  12760. messageSends: ["ifFalse:", "even", "size", "error:", "new", "do:", "to:by:", "at:put:", "at:", "+"]
  12761. }, function ($methodClass){ return function (aCollection){
  12762. var self=this,$self=this;
  12763. var newCollection;
  12764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12765. return $core.withContext(function($ctx1) {
  12766. //>>excludeEnd("ctx");
  12767. if(!$core.assert($recv([$recv(aCollection)._size()
  12768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12769. ,$ctx1.sendIdx["size"]=1
  12770. //>>excludeEnd("ctx");
  12771. ][0])._even())){
  12772. $self._error_("#newFromPairs only accepts arrays of an even length");
  12773. }
  12774. newCollection=$self._new();
  12775. $recv((1)._to_by_($recv(aCollection)._size(),(2)))._do_((function(each){
  12776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12777. return $core.withContext(function($ctx2) {
  12778. //>>excludeEnd("ctx");
  12779. return $recv(newCollection)._at_put_([$recv(aCollection)._at_(each)
  12780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12781. ,$ctx2.sendIdx["at:"]=1
  12782. //>>excludeEnd("ctx");
  12783. ][0],$recv(aCollection)._at_($recv(each).__plus((1))));
  12784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12785. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  12786. //>>excludeEnd("ctx");
  12787. }));
  12788. return newCollection;
  12789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12790. }, function($ctx1) {$ctx1.fill(self,"newFromPairs:",{aCollection:aCollection,newCollection:newCollection})});
  12791. //>>excludeEnd("ctx");
  12792. }; }),
  12793. $globals.AssociativeCollection.a$cls);
  12794. $core.addClass("Dictionary", $globals.AssociativeCollection, "Kernel-Collections");
  12795. $core.setSlots($globals.Dictionary, ["keys", "values"]);
  12796. //>>excludeStart("ide", pragmas.excludeIdeData);
  12797. $globals.Dictionary.comment="I represent a set of elements that can be viewed from one of two perspectives: a set of associations,\x0aor a container of values that are externally named where the name can be any object that responds to `=`.\x0a\x0aThe external name is referred to as the key.";
  12798. //>>excludeEnd("ide");
  12799. $core.addMethod(
  12800. $core.method({
  12801. selector: "at:ifAbsent:",
  12802. protocol: "accessing",
  12803. //>>excludeStart("ide", pragmas.excludeIdeData);
  12804. args: ["aKey", "aBlock"],
  12805. source: "at: aKey ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09return index >=0 ? $self.values[index] : aBlock._value();\x0a\x09'>",
  12806. referencedClasses: [],
  12807. //>>excludeEnd("ide");
  12808. pragmas: [["inlineJS:", ["\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09return index >=0 ? $self.values[index] : aBlock._value();\x0a\x09"]]],
  12809. messageSends: []
  12810. }, function ($methodClass){ return function (aKey,aBlock){
  12811. var self=this,$self=this;
  12812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12813. return $core.withContext(function($ctx1) {
  12814. //>>excludeEnd("ctx");
  12815. var index = $self._positionOfKey_(aKey);
  12816. return index >=0 ? $self.values[index] : aBlock._value();
  12817. ;
  12818. return self;
  12819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12820. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
  12821. //>>excludeEnd("ctx");
  12822. }; }),
  12823. $globals.Dictionary);
  12824. $core.addMethod(
  12825. $core.method({
  12826. selector: "at:put:",
  12827. protocol: "accessing",
  12828. //>>excludeStart("ide", pragmas.excludeIdeData);
  12829. args: ["aKey", "aValue"],
  12830. source: "at: aKey put: aValue\x0a\x09<inlineJS: '\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09if(index === -1) {\x0a\x09\x09\x09var keys = $self.keys;\x0a\x09\x09\x09index = keys.length;\x0a\x09\x09\x09keys.push(aKey);\x0a\x09\x09}\x0a\x0a\x09\x09return $self.values[index] = aValue;\x0a\x09'>",
  12831. referencedClasses: [],
  12832. //>>excludeEnd("ide");
  12833. pragmas: [["inlineJS:", ["\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09if(index === -1) {\x0a\x09\x09\x09var keys = $self.keys;\x0a\x09\x09\x09index = keys.length;\x0a\x09\x09\x09keys.push(aKey);\x0a\x09\x09}\x0a\x0a\x09\x09return $self.values[index] = aValue;\x0a\x09"]]],
  12834. messageSends: []
  12835. }, function ($methodClass){ return function (aKey,aValue){
  12836. var self=this,$self=this;
  12837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12838. return $core.withContext(function($ctx1) {
  12839. //>>excludeEnd("ctx");
  12840. var index = $self._positionOfKey_(aKey);
  12841. if(index === -1) {
  12842. var keys = $self.keys;
  12843. index = keys.length;
  12844. keys.push(aKey);
  12845. }
  12846. return $self.values[index] = aValue;
  12847. ;
  12848. return self;
  12849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12850. }, function($ctx1) {$ctx1.fill(self,"at:put:",{aKey:aKey,aValue:aValue})});
  12851. //>>excludeEnd("ctx");
  12852. }; }),
  12853. $globals.Dictionary);
  12854. $core.addMethod(
  12855. $core.method({
  12856. selector: "includesKey:",
  12857. protocol: "testing",
  12858. //>>excludeStart("ide", pragmas.excludeIdeData);
  12859. args: ["aKey"],
  12860. source: "includesKey: aKey\x0a\x09<inlineJS: 'return $self._positionOfKey_(aKey) >= 0;'>",
  12861. referencedClasses: [],
  12862. //>>excludeEnd("ide");
  12863. pragmas: [["inlineJS:", ["return $self._positionOfKey_(aKey) >= 0;"]]],
  12864. messageSends: []
  12865. }, function ($methodClass){ return function (aKey){
  12866. var self=this,$self=this;
  12867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12868. return $core.withContext(function($ctx1) {
  12869. //>>excludeEnd("ctx");
  12870. return $self._positionOfKey_(aKey) >= 0;;
  12871. return self;
  12872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12873. }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey})});
  12874. //>>excludeEnd("ctx");
  12875. }; }),
  12876. $globals.Dictionary);
  12877. $core.addMethod(
  12878. $core.method({
  12879. selector: "indexOf:ifAbsent:",
  12880. protocol: "accessing",
  12881. //>>excludeStart("ide", pragmas.excludeIdeData);
  12882. args: ["anObject", "aBlock"],
  12883. source: "indexOf: anObject ifAbsent: aBlock\x0a\x09| index |\x0a\x09index := values \x0a\x09\x09indexOf: anObject \x0a\x09\x09ifAbsent: [ 0 ].\x0a\x09^ index = 0 \x0a\x09\x09ifTrue: [ aBlock value ] \x0a\x09\x09ifFalse: [ keys at: index ]",
  12884. referencedClasses: [],
  12885. //>>excludeEnd("ide");
  12886. pragmas: [],
  12887. messageSends: ["indexOf:ifAbsent:", "ifTrue:ifFalse:", "=", "value", "at:"]
  12888. }, function ($methodClass){ return function (anObject,aBlock){
  12889. var self=this,$self=this;
  12890. var index;
  12891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12892. return $core.withContext(function($ctx1) {
  12893. //>>excludeEnd("ctx");
  12894. index=$recv($self.values)._indexOf_ifAbsent_(anObject,(function(){
  12895. return (0);
  12896. }));
  12897. if($core.assert($recv(index).__eq((0)))){
  12898. return $recv(aBlock)._value();
  12899. } else {
  12900. return $recv($self.keys)._at_(index);
  12901. }
  12902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12903. }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index})});
  12904. //>>excludeEnd("ctx");
  12905. }; }),
  12906. $globals.Dictionary);
  12907. $core.addMethod(
  12908. $core.method({
  12909. selector: "initialize",
  12910. protocol: "initialization",
  12911. //>>excludeStart("ide", pragmas.excludeIdeData);
  12912. args: [],
  12913. source: "initialize\x0a\x09super initialize.\x0a\x09keys := #().\x0a\x09values := #()",
  12914. referencedClasses: [],
  12915. //>>excludeEnd("ide");
  12916. pragmas: [],
  12917. messageSends: ["initialize"]
  12918. }, function ($methodClass){ return function (){
  12919. var self=this,$self=this;
  12920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12921. return $core.withContext(function($ctx1) {
  12922. //>>excludeEnd("ctx");
  12923. [(
  12924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12925. $ctx1.supercall = true,
  12926. //>>excludeEnd("ctx");
  12927. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  12928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12929. ,$ctx1.supercall = false
  12930. //>>excludeEnd("ctx");
  12931. ][0];
  12932. $self.keys=[];
  12933. $self.values=[];
  12934. return self;
  12935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12936. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  12937. //>>excludeEnd("ctx");
  12938. }; }),
  12939. $globals.Dictionary);
  12940. $core.addMethod(
  12941. $core.method({
  12942. selector: "keys",
  12943. protocol: "accessing",
  12944. //>>excludeStart("ide", pragmas.excludeIdeData);
  12945. args: [],
  12946. source: "keys\x0a\x09^ keys copy",
  12947. referencedClasses: [],
  12948. //>>excludeEnd("ide");
  12949. pragmas: [],
  12950. messageSends: ["copy"]
  12951. }, function ($methodClass){ return function (){
  12952. var self=this,$self=this;
  12953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12954. return $core.withContext(function($ctx1) {
  12955. //>>excludeEnd("ctx");
  12956. return $recv($self.keys)._copy();
  12957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12958. }, function($ctx1) {$ctx1.fill(self,"keys",{})});
  12959. //>>excludeEnd("ctx");
  12960. }; }),
  12961. $globals.Dictionary);
  12962. $core.addMethod(
  12963. $core.method({
  12964. selector: "keysAndValuesDo:",
  12965. protocol: "enumerating",
  12966. //>>excludeStart("ide", pragmas.excludeIdeData);
  12967. args: ["aBlock"],
  12968. source: "keysAndValuesDo: aBlock\x0a\x09^ keys with: values do: aBlock",
  12969. referencedClasses: [],
  12970. //>>excludeEnd("ide");
  12971. pragmas: [],
  12972. messageSends: ["with:do:"]
  12973. }, function ($methodClass){ return function (aBlock){
  12974. var self=this,$self=this;
  12975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12976. return $core.withContext(function($ctx1) {
  12977. //>>excludeEnd("ctx");
  12978. return $recv($self.keys)._with_do_($self.values,aBlock);
  12979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12980. }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock})});
  12981. //>>excludeEnd("ctx");
  12982. }; }),
  12983. $globals.Dictionary);
  12984. $core.addMethod(
  12985. $core.method({
  12986. selector: "keysDo:",
  12987. protocol: "enumerating",
  12988. //>>excludeStart("ide", pragmas.excludeIdeData);
  12989. args: ["aBlock"],
  12990. source: "keysDo: aBlock\x0a\x09^ keys do: aBlock",
  12991. referencedClasses: [],
  12992. //>>excludeEnd("ide");
  12993. pragmas: [],
  12994. messageSends: ["do:"]
  12995. }, function ($methodClass){ return function (aBlock){
  12996. var self=this,$self=this;
  12997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12998. return $core.withContext(function($ctx1) {
  12999. //>>excludeEnd("ctx");
  13000. return $recv($self.keys)._do_(aBlock);
  13001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13002. }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock})});
  13003. //>>excludeEnd("ctx");
  13004. }; }),
  13005. $globals.Dictionary);
  13006. $core.addMethod(
  13007. $core.method({
  13008. selector: "positionOfKey:",
  13009. protocol: "private",
  13010. //>>excludeStart("ide", pragmas.excludeIdeData);
  13011. args: ["anObject"],
  13012. source: "positionOfKey: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var keys = $self.keys;\x0a\x09\x09for(var i=0;i<keys.length;i++){\x0a\x09\x09\x09if(keys[i].__eq(anObject)) { return i;}\x0a\x09\x09}\x0a\x09\x09return -1;\x0a\x09'>",
  13013. referencedClasses: [],
  13014. //>>excludeEnd("ide");
  13015. pragmas: [["inlineJS:", ["\x0a\x09\x09var keys = $self.keys;\x0a\x09\x09for(var i=0;i<keys.length;i++){\x0a\x09\x09\x09if(keys[i].__eq(anObject)) { return i;}\x0a\x09\x09}\x0a\x09\x09return -1;\x0a\x09"]]],
  13016. messageSends: []
  13017. }, function ($methodClass){ return function (anObject){
  13018. var self=this,$self=this;
  13019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13020. return $core.withContext(function($ctx1) {
  13021. //>>excludeEnd("ctx");
  13022. var keys = $self.keys;
  13023. for(var i=0;i<keys.length;i++){
  13024. if(keys[i].__eq(anObject)) { return i;}
  13025. }
  13026. return -1;
  13027. ;
  13028. return self;
  13029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13030. }, function($ctx1) {$ctx1.fill(self,"positionOfKey:",{anObject:anObject})});
  13031. //>>excludeEnd("ctx");
  13032. }; }),
  13033. $globals.Dictionary);
  13034. $core.addMethod(
  13035. $core.method({
  13036. selector: "removeAll",
  13037. protocol: "adding/removing",
  13038. //>>excludeStart("ide", pragmas.excludeIdeData);
  13039. args: [],
  13040. source: "removeAll\x0a\x09keys removeAll.\x0a\x09values removeAll",
  13041. referencedClasses: [],
  13042. //>>excludeEnd("ide");
  13043. pragmas: [],
  13044. messageSends: ["removeAll"]
  13045. }, function ($methodClass){ return function (){
  13046. var self=this,$self=this;
  13047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13048. return $core.withContext(function($ctx1) {
  13049. //>>excludeEnd("ctx");
  13050. [$recv($self.keys)._removeAll()
  13051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13052. ,$ctx1.sendIdx["removeAll"]=1
  13053. //>>excludeEnd("ctx");
  13054. ][0];
  13055. $recv($self.values)._removeAll();
  13056. return self;
  13057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13058. }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
  13059. //>>excludeEnd("ctx");
  13060. }; }),
  13061. $globals.Dictionary);
  13062. $core.addMethod(
  13063. $core.method({
  13064. selector: "removeKey:ifAbsent:",
  13065. protocol: "adding/removing",
  13066. //>>excludeStart("ide", pragmas.excludeIdeData);
  13067. args: ["aKey", "aBlock"],
  13068. source: "removeKey: aKey ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09if(index === -1) {\x0a\x09\x09\x09return aBlock._value()\x0a\x09\x09} else {\x0a\x09\x09\x09var keys = $self.keys, values = $self.values;\x0a\x09\x09\x09var value = values[index], l = keys.length;\x0a\x09\x09\x09keys[index] = keys[l-1];\x0a\x09\x09\x09keys.pop();\x0a\x09\x09\x09values[index] = values[l-1];\x0a\x09\x09\x09values.pop();\x0a\x09\x09\x09return value;\x0a\x09\x09}\x0a\x09'>",
  13069. referencedClasses: [],
  13070. //>>excludeEnd("ide");
  13071. pragmas: [["inlineJS:", ["\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09if(index === -1) {\x0a\x09\x09\x09return aBlock._value()\x0a\x09\x09} else {\x0a\x09\x09\x09var keys = $self.keys, values = $self.values;\x0a\x09\x09\x09var value = values[index], l = keys.length;\x0a\x09\x09\x09keys[index] = keys[l-1];\x0a\x09\x09\x09keys.pop();\x0a\x09\x09\x09values[index] = values[l-1];\x0a\x09\x09\x09values.pop();\x0a\x09\x09\x09return value;\x0a\x09\x09}\x0a\x09"]]],
  13072. messageSends: []
  13073. }, function ($methodClass){ return function (aKey,aBlock){
  13074. var self=this,$self=this;
  13075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13076. return $core.withContext(function($ctx1) {
  13077. //>>excludeEnd("ctx");
  13078. var index = $self._positionOfKey_(aKey);
  13079. if(index === -1) {
  13080. return aBlock._value()
  13081. } else {
  13082. var keys = $self.keys, values = $self.values;
  13083. var value = values[index], l = keys.length;
  13084. keys[index] = keys[l-1];
  13085. keys.pop();
  13086. values[index] = values[l-1];
  13087. values.pop();
  13088. return value;
  13089. }
  13090. ;
  13091. return self;
  13092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13093. }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
  13094. //>>excludeEnd("ctx");
  13095. }; }),
  13096. $globals.Dictionary);
  13097. $core.addMethod(
  13098. $core.method({
  13099. selector: "values",
  13100. protocol: "accessing",
  13101. //>>excludeStart("ide", pragmas.excludeIdeData);
  13102. args: [],
  13103. source: "values\x0a\x09^ values",
  13104. referencedClasses: [],
  13105. //>>excludeEnd("ide");
  13106. pragmas: [],
  13107. messageSends: []
  13108. }, function ($methodClass){ return function (){
  13109. var self=this,$self=this;
  13110. return $self.values;
  13111. }; }),
  13112. $globals.Dictionary);
  13113. $core.addMethod(
  13114. $core.method({
  13115. selector: "valuesDo:",
  13116. protocol: "enumerating",
  13117. //>>excludeStart("ide", pragmas.excludeIdeData);
  13118. args: ["aBlock"],
  13119. source: "valuesDo: aBlock\x0a\x09^ values do: aBlock",
  13120. referencedClasses: [],
  13121. //>>excludeEnd("ide");
  13122. pragmas: [],
  13123. messageSends: ["do:"]
  13124. }, function ($methodClass){ return function (aBlock){
  13125. var self=this,$self=this;
  13126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13127. return $core.withContext(function($ctx1) {
  13128. //>>excludeEnd("ctx");
  13129. return $recv($self.values)._do_(aBlock);
  13130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13131. }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock})});
  13132. //>>excludeEnd("ctx");
  13133. }; }),
  13134. $globals.Dictionary);
  13135. $core.addClass("HashedCollection", $globals.AssociativeCollection, "Kernel-Collections");
  13136. //>>excludeStart("ide", pragmas.excludeIdeData);
  13137. $globals.HashedCollection.comment="I am a traditional JavaScript object, or a Smalltalk `Dictionary`.\x0a\x0aUnlike a `Dictionary`, I can only have strings as keys.";
  13138. //>>excludeEnd("ide");
  13139. $core.addMethod(
  13140. $core.method({
  13141. selector: "asJavaScriptSource",
  13142. protocol: "accessing",
  13143. //>>excludeStart("ide", pragmas.excludeIdeData);
  13144. args: [],
  13145. source: "asJavaScriptSource\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09str nextPut: '{'.\x0a\x09\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09\x09str nextPutAll: key asJavaScriptSource; nextPut: ':'; nextPutAll: value asJavaScriptSource; nextPut: ',' ].\x0a\x09\x09str skip: -1; nextPut: '}' ]",
  13146. referencedClasses: ["String"],
  13147. //>>excludeEnd("ide");
  13148. pragmas: [],
  13149. messageSends: ["streamContents:", "nextPut:", "keysAndValuesDo:", "nextPutAll:", "asJavaScriptSource", "skip:"]
  13150. }, function ($methodClass){ return function (){
  13151. var self=this,$self=this;
  13152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13153. return $core.withContext(function($ctx1) {
  13154. //>>excludeEnd("ctx");
  13155. return $recv($globals.String)._streamContents_((function(str){
  13156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13157. return $core.withContext(function($ctx2) {
  13158. //>>excludeEnd("ctx");
  13159. [$recv(str)._nextPut_("{")
  13160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13161. ,$ctx2.sendIdx["nextPut:"]=1
  13162. //>>excludeEnd("ctx");
  13163. ][0];
  13164. $self._keysAndValuesDo_((function(key,value){
  13165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13166. return $core.withContext(function($ctx3) {
  13167. //>>excludeEnd("ctx");
  13168. [$recv(str)._nextPutAll_([$recv(key)._asJavaScriptSource()
  13169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13170. ,$ctx3.sendIdx["asJavaScriptSource"]=1
  13171. //>>excludeEnd("ctx");
  13172. ][0])
  13173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13174. ,$ctx3.sendIdx["nextPutAll:"]=1
  13175. //>>excludeEnd("ctx");
  13176. ][0];
  13177. [$recv(str)._nextPut_(":")
  13178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13179. ,$ctx3.sendIdx["nextPut:"]=2
  13180. //>>excludeEnd("ctx");
  13181. ][0];
  13182. $recv(str)._nextPutAll_($recv(value)._asJavaScriptSource());
  13183. return [$recv(str)._nextPut_(",")
  13184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13185. ,$ctx3.sendIdx["nextPut:"]=3
  13186. //>>excludeEnd("ctx");
  13187. ][0];
  13188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13189. }, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,2)});
  13190. //>>excludeEnd("ctx");
  13191. }));
  13192. $recv(str)._skip_((-1));
  13193. return $recv(str)._nextPut_("}");
  13194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13195. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  13196. //>>excludeEnd("ctx");
  13197. }));
  13198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13199. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  13200. //>>excludeEnd("ctx");
  13201. }; }),
  13202. $globals.HashedCollection);
  13203. $core.addMethod(
  13204. $core.method({
  13205. selector: "at:ifAbsent:",
  13206. protocol: "accessing",
  13207. //>>excludeStart("ide", pragmas.excludeIdeData);
  13208. args: ["aKey", "aBlock"],
  13209. source: "at: aKey ifAbsent: aBlock\x0a\x09^ (self includesKey: aKey)\x0a\x09\x09ifTrue: [ self basicAt: aKey ]\x0a\x09\x09ifFalse: [ aBlock value ]",
  13210. referencedClasses: [],
  13211. //>>excludeEnd("ide");
  13212. pragmas: [],
  13213. messageSends: ["ifTrue:ifFalse:", "includesKey:", "basicAt:", "value"]
  13214. }, function ($methodClass){ return function (aKey,aBlock){
  13215. var self=this,$self=this;
  13216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13217. return $core.withContext(function($ctx1) {
  13218. //>>excludeEnd("ctx");
  13219. if($core.assert($self._includesKey_(aKey))){
  13220. return $self._basicAt_(aKey);
  13221. } else {
  13222. return $recv(aBlock)._value();
  13223. }
  13224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13225. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
  13226. //>>excludeEnd("ctx");
  13227. }; }),
  13228. $globals.HashedCollection);
  13229. $core.addMethod(
  13230. $core.method({
  13231. selector: "at:put:",
  13232. protocol: "accessing",
  13233. //>>excludeStart("ide", pragmas.excludeIdeData);
  13234. args: ["aKey", "aValue"],
  13235. source: "at: aKey put: aValue\x0a\x09^ self basicAt: aKey put: aValue",
  13236. referencedClasses: [],
  13237. //>>excludeEnd("ide");
  13238. pragmas: [],
  13239. messageSends: ["basicAt:put:"]
  13240. }, function ($methodClass){ return function (aKey,aValue){
  13241. var self=this,$self=this;
  13242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13243. return $core.withContext(function($ctx1) {
  13244. //>>excludeEnd("ctx");
  13245. return $self._basicAt_put_(aKey,aValue);
  13246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13247. }, function($ctx1) {$ctx1.fill(self,"at:put:",{aKey:aKey,aValue:aValue})});
  13248. //>>excludeEnd("ctx");
  13249. }; }),
  13250. $globals.HashedCollection);
  13251. $core.addMethod(
  13252. $core.method({
  13253. selector: "includesKey:",
  13254. protocol: "testing",
  13255. //>>excludeStart("ide", pragmas.excludeIdeData);
  13256. args: ["aKey"],
  13257. source: "includesKey: aKey\x0a\x09<inlineJS: 'return self.hasOwnProperty(aKey)'>",
  13258. referencedClasses: [],
  13259. //>>excludeEnd("ide");
  13260. pragmas: [["inlineJS:", ["return self.hasOwnProperty(aKey)"]]],
  13261. messageSends: []
  13262. }, function ($methodClass){ return function (aKey){
  13263. var self=this,$self=this;
  13264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13265. return $core.withContext(function($ctx1) {
  13266. //>>excludeEnd("ctx");
  13267. return self.hasOwnProperty(aKey);
  13268. return self;
  13269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13270. }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey})});
  13271. //>>excludeEnd("ctx");
  13272. }; }),
  13273. $globals.HashedCollection);
  13274. $core.addMethod(
  13275. $core.method({
  13276. selector: "keys",
  13277. protocol: "accessing",
  13278. //>>excludeStart("ide", pragmas.excludeIdeData);
  13279. args: [],
  13280. source: "keys\x0a\x09<inlineJS: 'return Object.keys(self)'>",
  13281. referencedClasses: [],
  13282. //>>excludeEnd("ide");
  13283. pragmas: [["inlineJS:", ["return Object.keys(self)"]]],
  13284. messageSends: []
  13285. }, function ($methodClass){ return function (){
  13286. var self=this,$self=this;
  13287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13288. return $core.withContext(function($ctx1) {
  13289. //>>excludeEnd("ctx");
  13290. return Object.keys(self);
  13291. return self;
  13292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13293. }, function($ctx1) {$ctx1.fill(self,"keys",{})});
  13294. //>>excludeEnd("ctx");
  13295. }; }),
  13296. $globals.HashedCollection);
  13297. $core.addMethod(
  13298. $core.method({
  13299. selector: "keysDo:",
  13300. protocol: "enumerating",
  13301. //>>excludeStart("ide", pragmas.excludeIdeData);
  13302. args: ["aBlock"],
  13303. source: "keysDo: aBlock\x0a\x09self keys do: aBlock",
  13304. referencedClasses: [],
  13305. //>>excludeEnd("ide");
  13306. pragmas: [],
  13307. messageSends: ["do:", "keys"]
  13308. }, function ($methodClass){ return function (aBlock){
  13309. var self=this,$self=this;
  13310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13311. return $core.withContext(function($ctx1) {
  13312. //>>excludeEnd("ctx");
  13313. $recv($self._keys())._do_(aBlock);
  13314. return self;
  13315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13316. }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock})});
  13317. //>>excludeEnd("ctx");
  13318. }; }),
  13319. $globals.HashedCollection);
  13320. $core.addMethod(
  13321. $core.method({
  13322. selector: "removeKey:ifAbsent:",
  13323. protocol: "adding/removing",
  13324. //>>excludeStart("ide", pragmas.excludeIdeData);
  13325. args: ["aKey", "aBlock"],
  13326. source: "removeKey: aKey ifAbsent: aBlock\x0a\x09^ self\x0a\x09\x09at: aKey\x0a\x09\x09ifPresent: [ :removed | self basicDelete: aKey. removed ]\x0a\x09\x09ifAbsent: [ aBlock value ]",
  13327. referencedClasses: [],
  13328. //>>excludeEnd("ide");
  13329. pragmas: [],
  13330. messageSends: ["at:ifPresent:ifAbsent:", "basicDelete:", "value"]
  13331. }, function ($methodClass){ return function (aKey,aBlock){
  13332. var self=this,$self=this;
  13333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13334. return $core.withContext(function($ctx1) {
  13335. //>>excludeEnd("ctx");
  13336. return $self._at_ifPresent_ifAbsent_(aKey,(function(removed){
  13337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13338. return $core.withContext(function($ctx2) {
  13339. //>>excludeEnd("ctx");
  13340. $self._basicDelete_(aKey);
  13341. return removed;
  13342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13343. }, function($ctx2) {$ctx2.fillBlock({removed:removed},$ctx1,1)});
  13344. //>>excludeEnd("ctx");
  13345. }),(function(){
  13346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13347. return $core.withContext(function($ctx2) {
  13348. //>>excludeEnd("ctx");
  13349. return $recv(aBlock)._value();
  13350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13351. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  13352. //>>excludeEnd("ctx");
  13353. }));
  13354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13355. }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
  13356. //>>excludeEnd("ctx");
  13357. }; }),
  13358. $globals.HashedCollection);
  13359. $core.addMethod(
  13360. $core.method({
  13361. selector: "values",
  13362. protocol: "accessing",
  13363. //>>excludeStart("ide", pragmas.excludeIdeData);
  13364. args: [],
  13365. source: "values\x0a\x09<inlineJS: '\x0a\x09\x09return $self._keys().map(function(key){\x0a\x09\x09\x09return $self._at_(key);\x0a\x09\x09});\x0a\x09'>",
  13366. referencedClasses: [],
  13367. //>>excludeEnd("ide");
  13368. pragmas: [["inlineJS:", ["\x0a\x09\x09return $self._keys().map(function(key){\x0a\x09\x09\x09return $self._at_(key);\x0a\x09\x09});\x0a\x09"]]],
  13369. messageSends: []
  13370. }, function ($methodClass){ return function (){
  13371. var self=this,$self=this;
  13372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13373. return $core.withContext(function($ctx1) {
  13374. //>>excludeEnd("ctx");
  13375. return $self._keys().map(function(key){
  13376. return $self._at_(key);
  13377. });
  13378. ;
  13379. return self;
  13380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13381. }, function($ctx1) {$ctx1.fill(self,"values",{})});
  13382. //>>excludeEnd("ctx");
  13383. }; }),
  13384. $globals.HashedCollection);
  13385. $core.addMethod(
  13386. $core.method({
  13387. selector: "valuesDo:",
  13388. protocol: "enumerating",
  13389. //>>excludeStart("ide", pragmas.excludeIdeData);
  13390. args: ["aBlock"],
  13391. source: "valuesDo: aBlock\x0a\x09self values do: aBlock",
  13392. referencedClasses: [],
  13393. //>>excludeEnd("ide");
  13394. pragmas: [],
  13395. messageSends: ["do:", "values"]
  13396. }, function ($methodClass){ return function (aBlock){
  13397. var self=this,$self=this;
  13398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13399. return $core.withContext(function($ctx1) {
  13400. //>>excludeEnd("ctx");
  13401. $recv($self._values())._do_(aBlock);
  13402. return self;
  13403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13404. }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock})});
  13405. //>>excludeEnd("ctx");
  13406. }; }),
  13407. $globals.HashedCollection);
  13408. $core.addClass("SequenceableCollection", $globals.Collection, "Kernel-Collections");
  13409. //>>excludeStart("ide", pragmas.excludeIdeData);
  13410. $globals.SequenceableCollection.comment="I am an IndexableCollection\x0awith numeric indexes starting with 1.";
  13411. //>>excludeEnd("ide");
  13412. $core.addMethod(
  13413. $core.method({
  13414. selector: "=",
  13415. protocol: "comparing",
  13416. //>>excludeStart("ide", pragmas.excludeIdeData);
  13417. args: ["aCollection"],
  13418. source: "= aCollection\x0a\x09(self class = aCollection class and: [\x0a\x09\x09self size = aCollection size ]) ifFalse: [ ^ false ].\x0a\x09self withIndexDo: [ :each :i |\x0a\x09\x09\x09\x09(aCollection at: i) = each ifFalse: [ ^ false ]].\x0a\x09^ true",
  13419. referencedClasses: [],
  13420. //>>excludeEnd("ide");
  13421. pragmas: [],
  13422. messageSends: ["ifFalse:", "and:", "=", "class", "size", "withIndexDo:", "at:"]
  13423. }, function ($methodClass){ return function (aCollection){
  13424. var self=this,$self=this;
  13425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13426. return $core.withContext(function($ctx1) {
  13427. //>>excludeEnd("ctx");
  13428. var $1;
  13429. var $early={};
  13430. try {
  13431. if($core.assert([$recv([$self._class()
  13432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13433. ,$ctx1.sendIdx["class"]=1
  13434. //>>excludeEnd("ctx");
  13435. ][0]).__eq($recv(aCollection)._class())
  13436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13437. ,$ctx1.sendIdx["="]=1
  13438. //>>excludeEnd("ctx");
  13439. ][0])){
  13440. $1=[$recv([$self._size()
  13441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13442. ,$ctx1.sendIdx["size"]=1
  13443. //>>excludeEnd("ctx");
  13444. ][0]).__eq($recv(aCollection)._size())
  13445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13446. ,$ctx1.sendIdx["="]=2
  13447. //>>excludeEnd("ctx");
  13448. ][0];
  13449. } else {
  13450. $1=false;
  13451. }
  13452. if(!$core.assert($1)){
  13453. return false;
  13454. }
  13455. $self._withIndexDo_((function(each,i){
  13456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13457. return $core.withContext(function($ctx2) {
  13458. //>>excludeEnd("ctx");
  13459. if(!$core.assert($recv($recv(aCollection)._at_(i)).__eq(each))){
  13460. throw $early=[false];
  13461. }
  13462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13463. }, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,3)});
  13464. //>>excludeEnd("ctx");
  13465. }));
  13466. return true;
  13467. }
  13468. catch(e) {if(e===$early)return e[0]; throw e}
  13469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13470. }, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection})});
  13471. //>>excludeEnd("ctx");
  13472. }; }),
  13473. $globals.SequenceableCollection);
  13474. $core.addMethod(
  13475. $core.method({
  13476. selector: "addLast:",
  13477. protocol: "adding/removing",
  13478. //>>excludeStart("ide", pragmas.excludeIdeData);
  13479. args: ["anObject"],
  13480. source: "addLast: anObject\x0a\x09self add: anObject",
  13481. referencedClasses: [],
  13482. //>>excludeEnd("ide");
  13483. pragmas: [],
  13484. messageSends: ["add:"]
  13485. }, function ($methodClass){ return function (anObject){
  13486. var self=this,$self=this;
  13487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13488. return $core.withContext(function($ctx1) {
  13489. //>>excludeEnd("ctx");
  13490. $self._add_(anObject);
  13491. return self;
  13492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13493. }, function($ctx1) {$ctx1.fill(self,"addLast:",{anObject:anObject})});
  13494. //>>excludeEnd("ctx");
  13495. }; }),
  13496. $globals.SequenceableCollection);
  13497. $core.addMethod(
  13498. $core.method({
  13499. selector: "allButFirst",
  13500. protocol: "accessing",
  13501. //>>excludeStart("ide", pragmas.excludeIdeData);
  13502. args: [],
  13503. source: "allButFirst\x0a\x09^ self copyFrom: 2 to: self size",
  13504. referencedClasses: [],
  13505. //>>excludeEnd("ide");
  13506. pragmas: [],
  13507. messageSends: ["copyFrom:to:", "size"]
  13508. }, function ($methodClass){ return function (){
  13509. var self=this,$self=this;
  13510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13511. return $core.withContext(function($ctx1) {
  13512. //>>excludeEnd("ctx");
  13513. return $self._copyFrom_to_((2),$self._size());
  13514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13515. }, function($ctx1) {$ctx1.fill(self,"allButFirst",{})});
  13516. //>>excludeEnd("ctx");
  13517. }; }),
  13518. $globals.SequenceableCollection);
  13519. $core.addMethod(
  13520. $core.method({
  13521. selector: "allButLast",
  13522. protocol: "accessing",
  13523. //>>excludeStart("ide", pragmas.excludeIdeData);
  13524. args: [],
  13525. source: "allButLast\x0a\x09^ self copyFrom: 1 to: self size - 1",
  13526. referencedClasses: [],
  13527. //>>excludeEnd("ide");
  13528. pragmas: [],
  13529. messageSends: ["copyFrom:to:", "-", "size"]
  13530. }, function ($methodClass){ return function (){
  13531. var self=this,$self=this;
  13532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13533. return $core.withContext(function($ctx1) {
  13534. //>>excludeEnd("ctx");
  13535. return $self._copyFrom_to_((1),$recv($self._size()).__minus((1)));
  13536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13537. }, function($ctx1) {$ctx1.fill(self,"allButLast",{})});
  13538. //>>excludeEnd("ctx");
  13539. }; }),
  13540. $globals.SequenceableCollection);
  13541. $core.addMethod(
  13542. $core.method({
  13543. selector: "anyOne",
  13544. protocol: "accessing",
  13545. //>>excludeStart("ide", pragmas.excludeIdeData);
  13546. args: [],
  13547. source: "anyOne\x0a\x09^ self at: 1",
  13548. referencedClasses: [],
  13549. //>>excludeEnd("ide");
  13550. pragmas: [],
  13551. messageSends: ["at:"]
  13552. }, function ($methodClass){ return function (){
  13553. var self=this,$self=this;
  13554. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13555. return $core.withContext(function($ctx1) {
  13556. //>>excludeEnd("ctx");
  13557. return $self._at_((1));
  13558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13559. }, function($ctx1) {$ctx1.fill(self,"anyOne",{})});
  13560. //>>excludeEnd("ctx");
  13561. }; }),
  13562. $globals.SequenceableCollection);
  13563. $core.addMethod(
  13564. $core.method({
  13565. selector: "atRandom",
  13566. protocol: "accessing",
  13567. //>>excludeStart("ide", pragmas.excludeIdeData);
  13568. args: [],
  13569. source: "atRandom\x0a\x09^ self at: self size atRandom",
  13570. referencedClasses: [],
  13571. //>>excludeEnd("ide");
  13572. pragmas: [],
  13573. messageSends: ["at:", "atRandom", "size"]
  13574. }, function ($methodClass){ return function (){
  13575. var self=this,$self=this;
  13576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13577. return $core.withContext(function($ctx1) {
  13578. //>>excludeEnd("ctx");
  13579. return $self._at_($recv($self._size())._atRandom());
  13580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13581. }, function($ctx1) {$ctx1.fill(self,"atRandom",{})});
  13582. //>>excludeEnd("ctx");
  13583. }; }),
  13584. $globals.SequenceableCollection);
  13585. $core.addMethod(
  13586. $core.method({
  13587. selector: "beginsWith:",
  13588. protocol: "testing",
  13589. //>>excludeStart("ide", pragmas.excludeIdeData);
  13590. args: ["prefix"],
  13591. source: "beginsWith: prefix\x0a\x09self size < prefix size ifTrue: [ ^ false ].\x0a\x09^ (self first: prefix size) = prefix",
  13592. referencedClasses: [],
  13593. //>>excludeEnd("ide");
  13594. pragmas: [],
  13595. messageSends: ["ifTrue:", "<", "size", "=", "first:"]
  13596. }, function ($methodClass){ return function (prefix){
  13597. var self=this,$self=this;
  13598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13599. return $core.withContext(function($ctx1) {
  13600. //>>excludeEnd("ctx");
  13601. if($core.assert($recv([$self._size()
  13602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13603. ,$ctx1.sendIdx["size"]=1
  13604. //>>excludeEnd("ctx");
  13605. ][0]).__lt([$recv(prefix)._size()
  13606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13607. ,$ctx1.sendIdx["size"]=2
  13608. //>>excludeEnd("ctx");
  13609. ][0]))){
  13610. return false;
  13611. }
  13612. return $recv($self._first_($recv(prefix)._size())).__eq(prefix);
  13613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13614. }, function($ctx1) {$ctx1.fill(self,"beginsWith:",{prefix:prefix})});
  13615. //>>excludeEnd("ctx");
  13616. }; }),
  13617. $globals.SequenceableCollection);
  13618. $core.addMethod(
  13619. $core.method({
  13620. selector: "copyFrom:to:",
  13621. protocol: "copying",
  13622. //>>excludeStart("ide", pragmas.excludeIdeData);
  13623. args: ["anIndex", "anotherIndex"],
  13624. source: "copyFrom: anIndex to: anotherIndex\x0a\x09self subclassResponsibility",
  13625. referencedClasses: [],
  13626. //>>excludeEnd("ide");
  13627. pragmas: [],
  13628. messageSends: ["subclassResponsibility"]
  13629. }, function ($methodClass){ return function (anIndex,anotherIndex){
  13630. var self=this,$self=this;
  13631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13632. return $core.withContext(function($ctx1) {
  13633. //>>excludeEnd("ctx");
  13634. $self._subclassResponsibility();
  13635. return self;
  13636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13637. }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex})});
  13638. //>>excludeEnd("ctx");
  13639. }; }),
  13640. $globals.SequenceableCollection);
  13641. $core.addMethod(
  13642. $core.method({
  13643. selector: "copyWithFirst:",
  13644. protocol: "copying",
  13645. //>>excludeStart("ide", pragmas.excludeIdeData);
  13646. args: ["anObject"],
  13647. source: "copyWithFirst: anObject\x0a\x09^ (self class with: anObject) addAll: self; yourself",
  13648. referencedClasses: [],
  13649. //>>excludeEnd("ide");
  13650. pragmas: [],
  13651. messageSends: ["addAll:", "with:", "class", "yourself"]
  13652. }, function ($methodClass){ return function (anObject){
  13653. var self=this,$self=this;
  13654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13655. return $core.withContext(function($ctx1) {
  13656. //>>excludeEnd("ctx");
  13657. var $1;
  13658. $1=$recv($self._class())._with_(anObject);
  13659. $recv($1)._addAll_(self);
  13660. return $recv($1)._yourself();
  13661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13662. }, function($ctx1) {$ctx1.fill(self,"copyWithFirst:",{anObject:anObject})});
  13663. //>>excludeEnd("ctx");
  13664. }; }),
  13665. $globals.SequenceableCollection);
  13666. $core.addMethod(
  13667. $core.method({
  13668. selector: "endsWith:",
  13669. protocol: "testing",
  13670. //>>excludeStart("ide", pragmas.excludeIdeData);
  13671. args: ["suffix"],
  13672. source: "endsWith: suffix\x0a\x09self size < suffix size ifTrue: [ ^ false ].\x0a\x09^ (self last: suffix size) = suffix",
  13673. referencedClasses: [],
  13674. //>>excludeEnd("ide");
  13675. pragmas: [],
  13676. messageSends: ["ifTrue:", "<", "size", "=", "last:"]
  13677. }, function ($methodClass){ return function (suffix){
  13678. var self=this,$self=this;
  13679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13680. return $core.withContext(function($ctx1) {
  13681. //>>excludeEnd("ctx");
  13682. if($core.assert($recv([$self._size()
  13683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13684. ,$ctx1.sendIdx["size"]=1
  13685. //>>excludeEnd("ctx");
  13686. ][0]).__lt([$recv(suffix)._size()
  13687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13688. ,$ctx1.sendIdx["size"]=2
  13689. //>>excludeEnd("ctx");
  13690. ][0]))){
  13691. return false;
  13692. }
  13693. return $recv($self._last_($recv(suffix)._size())).__eq(suffix);
  13694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13695. }, function($ctx1) {$ctx1.fill(self,"endsWith:",{suffix:suffix})});
  13696. //>>excludeEnd("ctx");
  13697. }; }),
  13698. $globals.SequenceableCollection);
  13699. $core.addMethod(
  13700. $core.method({
  13701. selector: "first",
  13702. protocol: "accessing",
  13703. //>>excludeStart("ide", pragmas.excludeIdeData);
  13704. args: [],
  13705. source: "first\x0a\x09^ self at: 1",
  13706. referencedClasses: [],
  13707. //>>excludeEnd("ide");
  13708. pragmas: [],
  13709. messageSends: ["at:"]
  13710. }, function ($methodClass){ return function (){
  13711. var self=this,$self=this;
  13712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13713. return $core.withContext(function($ctx1) {
  13714. //>>excludeEnd("ctx");
  13715. return $self._at_((1));
  13716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13717. }, function($ctx1) {$ctx1.fill(self,"first",{})});
  13718. //>>excludeEnd("ctx");
  13719. }; }),
  13720. $globals.SequenceableCollection);
  13721. $core.addMethod(
  13722. $core.method({
  13723. selector: "first:",
  13724. protocol: "accessing",
  13725. //>>excludeStart("ide", pragmas.excludeIdeData);
  13726. args: ["aNumber"],
  13727. source: "first: aNumber\x0a\x09\x22Answer the first `aNumber` elements of the receiver.\x0a\x09Raise an error if there are not enough elements in the receiver.\x22\x0a\x0a\x09self size < aNumber ifTrue: [ self error: 'Invalid number of elements' ].\x0a\x0a\x09^ self copyFrom: 1 to: aNumber",
  13728. referencedClasses: [],
  13729. //>>excludeEnd("ide");
  13730. pragmas: [],
  13731. messageSends: ["ifTrue:", "<", "size", "error:", "copyFrom:to:"]
  13732. }, function ($methodClass){ return function (aNumber){
  13733. var self=this,$self=this;
  13734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13735. return $core.withContext(function($ctx1) {
  13736. //>>excludeEnd("ctx");
  13737. if($core.assert($recv($self._size()).__lt(aNumber))){
  13738. $self._error_("Invalid number of elements");
  13739. }
  13740. return $self._copyFrom_to_((1),aNumber);
  13741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13742. }, function($ctx1) {$ctx1.fill(self,"first:",{aNumber:aNumber})});
  13743. //>>excludeEnd("ctx");
  13744. }; }),
  13745. $globals.SequenceableCollection);
  13746. $core.addMethod(
  13747. $core.method({
  13748. selector: "fourth",
  13749. protocol: "accessing",
  13750. //>>excludeStart("ide", pragmas.excludeIdeData);
  13751. args: [],
  13752. source: "fourth\x0a\x09^ self at: 4",
  13753. referencedClasses: [],
  13754. //>>excludeEnd("ide");
  13755. pragmas: [],
  13756. messageSends: ["at:"]
  13757. }, function ($methodClass){ return function (){
  13758. var self=this,$self=this;
  13759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13760. return $core.withContext(function($ctx1) {
  13761. //>>excludeEnd("ctx");
  13762. return $self._at_((4));
  13763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13764. }, function($ctx1) {$ctx1.fill(self,"fourth",{})});
  13765. //>>excludeEnd("ctx");
  13766. }; }),
  13767. $globals.SequenceableCollection);
  13768. $core.addMethod(
  13769. $core.method({
  13770. selector: "includes:",
  13771. protocol: "testing",
  13772. //>>excludeStart("ide", pragmas.excludeIdeData);
  13773. args: ["anObject"],
  13774. source: "includes: anObject\x0a\x09^ (self indexOf: anObject ifAbsent: [ nil ]) notNil",
  13775. referencedClasses: [],
  13776. //>>excludeEnd("ide");
  13777. pragmas: [],
  13778. messageSends: ["notNil", "indexOf:ifAbsent:"]
  13779. }, function ($methodClass){ return function (anObject){
  13780. var self=this,$self=this;
  13781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13782. return $core.withContext(function($ctx1) {
  13783. //>>excludeEnd("ctx");
  13784. return $recv($self._indexOf_ifAbsent_(anObject,(function(){
  13785. return nil;
  13786. })))._notNil();
  13787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13788. }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject})});
  13789. //>>excludeEnd("ctx");
  13790. }; }),
  13791. $globals.SequenceableCollection);
  13792. $core.addMethod(
  13793. $core.method({
  13794. selector: "indexOf:startingAt:",
  13795. protocol: "accessing",
  13796. //>>excludeStart("ide", pragmas.excludeIdeData);
  13797. args: ["anObject", "start"],
  13798. source: "indexOf: anObject startingAt: start\x0a\x09\x22Answer the index of the first occurence of anElement after start\x0a\x09within the receiver. If the receiver does not contain anElement,\x0a\x09answer 0.\x22\x0a\x09^ self indexOf: anObject startingAt: start ifAbsent: [ 0 ]",
  13799. referencedClasses: [],
  13800. //>>excludeEnd("ide");
  13801. pragmas: [],
  13802. messageSends: ["indexOf:startingAt:ifAbsent:"]
  13803. }, function ($methodClass){ return function (anObject,start){
  13804. var self=this,$self=this;
  13805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13806. return $core.withContext(function($ctx1) {
  13807. //>>excludeEnd("ctx");
  13808. return $self._indexOf_startingAt_ifAbsent_(anObject,start,(function(){
  13809. return (0);
  13810. }));
  13811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13812. }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:",{anObject:anObject,start:start})});
  13813. //>>excludeEnd("ctx");
  13814. }; }),
  13815. $globals.SequenceableCollection);
  13816. $core.addMethod(
  13817. $core.method({
  13818. selector: "indexOf:startingAt:ifAbsent:",
  13819. protocol: "accessing",
  13820. //>>excludeStart("ide", pragmas.excludeIdeData);
  13821. args: ["anObject", "start", "aBlock"],
  13822. source: "indexOf: anObject startingAt: start ifAbsent: aBlock\x0a\x09self subclassResponsibility",
  13823. referencedClasses: [],
  13824. //>>excludeEnd("ide");
  13825. pragmas: [],
  13826. messageSends: ["subclassResponsibility"]
  13827. }, function ($methodClass){ return function (anObject,start,aBlock){
  13828. var self=this,$self=this;
  13829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13830. return $core.withContext(function($ctx1) {
  13831. //>>excludeEnd("ctx");
  13832. $self._subclassResponsibility();
  13833. return self;
  13834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13835. }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:ifAbsent:",{anObject:anObject,start:start,aBlock:aBlock})});
  13836. //>>excludeEnd("ctx");
  13837. }; }),
  13838. $globals.SequenceableCollection);
  13839. $core.addMethod(
  13840. $core.method({
  13841. selector: "last",
  13842. protocol: "accessing",
  13843. //>>excludeStart("ide", pragmas.excludeIdeData);
  13844. args: [],
  13845. source: "last\x0a\x09^ self at: self size",
  13846. referencedClasses: [],
  13847. //>>excludeEnd("ide");
  13848. pragmas: [],
  13849. messageSends: ["at:", "size"]
  13850. }, function ($methodClass){ return function (){
  13851. var self=this,$self=this;
  13852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13853. return $core.withContext(function($ctx1) {
  13854. //>>excludeEnd("ctx");
  13855. return $self._at_($self._size());
  13856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13857. }, function($ctx1) {$ctx1.fill(self,"last",{})});
  13858. //>>excludeEnd("ctx");
  13859. }; }),
  13860. $globals.SequenceableCollection);
  13861. $core.addMethod(
  13862. $core.method({
  13863. selector: "last:",
  13864. protocol: "accessing",
  13865. //>>excludeStart("ide", pragmas.excludeIdeData);
  13866. args: ["aNumber"],
  13867. source: "last: aNumber\x0a\x09\x22Answer the last aNumber elements of the receiver.\x0a\x09Raise an error if there are not enough elements in the receiver.\x22\x0a\x0a\x09self size < aNumber ifTrue: [ self error: 'Invalid number of elements' ].\x0a\x0a\x09^ self copyFrom: self size - aNumber + 1 to: self size",
  13868. referencedClasses: [],
  13869. //>>excludeEnd("ide");
  13870. pragmas: [],
  13871. messageSends: ["ifTrue:", "<", "size", "error:", "copyFrom:to:", "+", "-"]
  13872. }, function ($methodClass){ return function (aNumber){
  13873. var self=this,$self=this;
  13874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13875. return $core.withContext(function($ctx1) {
  13876. //>>excludeEnd("ctx");
  13877. if($core.assert($recv([$self._size()
  13878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13879. ,$ctx1.sendIdx["size"]=1
  13880. //>>excludeEnd("ctx");
  13881. ][0]).__lt(aNumber))){
  13882. $self._error_("Invalid number of elements");
  13883. }
  13884. return $self._copyFrom_to_($recv($recv([$self._size()
  13885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13886. ,$ctx1.sendIdx["size"]=2
  13887. //>>excludeEnd("ctx");
  13888. ][0]).__minus(aNumber)).__plus((1)),$self._size());
  13889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13890. }, function($ctx1) {$ctx1.fill(self,"last:",{aNumber:aNumber})});
  13891. //>>excludeEnd("ctx");
  13892. }; }),
  13893. $globals.SequenceableCollection);
  13894. $core.addMethod(
  13895. $core.method({
  13896. selector: "newStream",
  13897. protocol: "streaming",
  13898. //>>excludeStart("ide", pragmas.excludeIdeData);
  13899. args: [],
  13900. source: "newStream\x0a\x09^ self streamClass on: self",
  13901. referencedClasses: [],
  13902. //>>excludeEnd("ide");
  13903. pragmas: [],
  13904. messageSends: ["on:", "streamClass"]
  13905. }, function ($methodClass){ return function (){
  13906. var self=this,$self=this;
  13907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13908. return $core.withContext(function($ctx1) {
  13909. //>>excludeEnd("ctx");
  13910. return $recv($self._streamClass())._on_(self);
  13911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13912. }, function($ctx1) {$ctx1.fill(self,"newStream",{})});
  13913. //>>excludeEnd("ctx");
  13914. }; }),
  13915. $globals.SequenceableCollection);
  13916. $core.addMethod(
  13917. $core.method({
  13918. selector: "pairsCollect:",
  13919. protocol: "enumerating",
  13920. //>>excludeStart("ide", pragmas.excludeIdeData);
  13921. args: ["aBlock"],
  13922. source: "pairsCollect: aBlock\x0a\x09\x22Evaluate aBlock with my elements taken two at a time,\x0a\x09and return an Array with the results\x22\x0a\x0a\x09\x22(#(1 'fred' 2 'charlie' 3 'elmer') pairsCollect: [:a :b | b, ' is number ', a printString]) >>> #('fred is number 1' 'charlie is number 2' 'elmer is number 3')\x22\x0a\x0a\x09^ (1 to: self size // 2) collect: [ :index |\x0a\x09\x09aBlock value: (self at: 2 * index - 1) value: (self at: 2 * index) ]",
  13923. referencedClasses: [],
  13924. //>>excludeEnd("ide");
  13925. pragmas: [],
  13926. messageSends: ["collect:", "to:", "//", "size", "value:value:", "at:", "-", "*"]
  13927. }, function ($methodClass){ return function (aBlock){
  13928. var self=this,$self=this;
  13929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13930. return $core.withContext(function($ctx1) {
  13931. //>>excludeEnd("ctx");
  13932. return $recv((1)._to_($recv($self._size()).__slash_slash((2))))._collect_((function(index){
  13933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13934. return $core.withContext(function($ctx2) {
  13935. //>>excludeEnd("ctx");
  13936. return $recv(aBlock)._value_value_([$self._at_($recv([(2).__star(index)
  13937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13938. ,$ctx2.sendIdx["*"]=1
  13939. //>>excludeEnd("ctx");
  13940. ][0]).__minus((1)))
  13941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13942. ,$ctx2.sendIdx["at:"]=1
  13943. //>>excludeEnd("ctx");
  13944. ][0],$self._at_((2).__star(index)));
  13945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13946. }, function($ctx2) {$ctx2.fillBlock({index:index},$ctx1,1)});
  13947. //>>excludeEnd("ctx");
  13948. }));
  13949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13950. }, function($ctx1) {$ctx1.fill(self,"pairsCollect:",{aBlock:aBlock})});
  13951. //>>excludeEnd("ctx");
  13952. }; }),
  13953. $globals.SequenceableCollection);
  13954. $core.addMethod(
  13955. $core.method({
  13956. selector: "pairsDo:",
  13957. protocol: "enumerating",
  13958. //>>excludeStart("ide", pragmas.excludeIdeData);
  13959. args: ["aBlock"],
  13960. source: "pairsDo: aBlock\x0a\x09\x22Evaluate aBlock with my elements taken two at a time.\x0a\x09If there's an odd number of items, ignore the last one.\x0a\x09Allows use of a flattened array for things that naturally group into pairs.\x0a\x09See also pairsCollect:\x22\x0a\x0a\x09\x22(#(1 'fred' 2 'charlie' 3 'elmer') pairsDo: [:a :b | Transcript cr; show: b, ' is number ', a printString]) >>> #(1 'fred' 2 'charlie' 3 'elmer')\x22\x0a\x0a\x091 to: self size // 2 do: [ :index |\x0a\x09\x09aBlock value: (self at: 2 * index - 1) value: (self at: 2 * index) ]",
  13961. referencedClasses: [],
  13962. //>>excludeEnd("ide");
  13963. pragmas: [],
  13964. messageSends: ["to:do:", "//", "size", "value:value:", "at:", "-", "*"]
  13965. }, function ($methodClass){ return function (aBlock){
  13966. var self=this,$self=this;
  13967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13968. return $core.withContext(function($ctx1) {
  13969. //>>excludeEnd("ctx");
  13970. (1)._to_do_($recv($self._size()).__slash_slash((2)),(function(index){
  13971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13972. return $core.withContext(function($ctx2) {
  13973. //>>excludeEnd("ctx");
  13974. return $recv(aBlock)._value_value_([$self._at_($recv([(2).__star(index)
  13975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13976. ,$ctx2.sendIdx["*"]=1
  13977. //>>excludeEnd("ctx");
  13978. ][0]).__minus((1)))
  13979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13980. ,$ctx2.sendIdx["at:"]=1
  13981. //>>excludeEnd("ctx");
  13982. ][0],$self._at_((2).__star(index)));
  13983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13984. }, function($ctx2) {$ctx2.fillBlock({index:index},$ctx1,1)});
  13985. //>>excludeEnd("ctx");
  13986. }));
  13987. return self;
  13988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13989. }, function($ctx1) {$ctx1.fill(self,"pairsDo:",{aBlock:aBlock})});
  13990. //>>excludeEnd("ctx");
  13991. }; }),
  13992. $globals.SequenceableCollection);
  13993. $core.addMethod(
  13994. $core.method({
  13995. selector: "readStream",
  13996. protocol: "streaming",
  13997. //>>excludeStart("ide", pragmas.excludeIdeData);
  13998. args: [],
  13999. source: "readStream\x0a\x09\x22For Pharo compatibility\x22\x0a\x09\x0a\x09^ self stream",
  14000. referencedClasses: [],
  14001. //>>excludeEnd("ide");
  14002. pragmas: [],
  14003. messageSends: ["stream"]
  14004. }, function ($methodClass){ return function (){
  14005. var self=this,$self=this;
  14006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14007. return $core.withContext(function($ctx1) {
  14008. //>>excludeEnd("ctx");
  14009. return $self._stream();
  14010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14011. }, function($ctx1) {$ctx1.fill(self,"readStream",{})});
  14012. //>>excludeEnd("ctx");
  14013. }; }),
  14014. $globals.SequenceableCollection);
  14015. $core.addMethod(
  14016. $core.method({
  14017. selector: "removeLast",
  14018. protocol: "adding/removing",
  14019. //>>excludeStart("ide", pragmas.excludeIdeData);
  14020. args: [],
  14021. source: "removeLast\x0a\x09^ self remove: self last",
  14022. referencedClasses: [],
  14023. //>>excludeEnd("ide");
  14024. pragmas: [],
  14025. messageSends: ["remove:", "last"]
  14026. }, function ($methodClass){ return function (){
  14027. var self=this,$self=this;
  14028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14029. return $core.withContext(function($ctx1) {
  14030. //>>excludeEnd("ctx");
  14031. return $self._remove_($self._last());
  14032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14033. }, function($ctx1) {$ctx1.fill(self,"removeLast",{})});
  14034. //>>excludeEnd("ctx");
  14035. }; }),
  14036. $globals.SequenceableCollection);
  14037. $core.addMethod(
  14038. $core.method({
  14039. selector: "reverseDo:",
  14040. protocol: "enumerating",
  14041. //>>excludeStart("ide", pragmas.excludeIdeData);
  14042. args: ["aBlock"],
  14043. source: "reverseDo: aBlock\x0a\x09self reversed do: aBlock",
  14044. referencedClasses: [],
  14045. //>>excludeEnd("ide");
  14046. pragmas: [],
  14047. messageSends: ["do:", "reversed"]
  14048. }, function ($methodClass){ return function (aBlock){
  14049. var self=this,$self=this;
  14050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14051. return $core.withContext(function($ctx1) {
  14052. //>>excludeEnd("ctx");
  14053. $recv($self._reversed())._do_(aBlock);
  14054. return self;
  14055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14056. }, function($ctx1) {$ctx1.fill(self,"reverseDo:",{aBlock:aBlock})});
  14057. //>>excludeEnd("ctx");
  14058. }; }),
  14059. $globals.SequenceableCollection);
  14060. $core.addMethod(
  14061. $core.method({
  14062. selector: "reversed",
  14063. protocol: "converting",
  14064. //>>excludeStart("ide", pragmas.excludeIdeData);
  14065. args: [],
  14066. source: "reversed\x0a\x09self subclassResponsibility",
  14067. referencedClasses: [],
  14068. //>>excludeEnd("ide");
  14069. pragmas: [],
  14070. messageSends: ["subclassResponsibility"]
  14071. }, function ($methodClass){ return function (){
  14072. var self=this,$self=this;
  14073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14074. return $core.withContext(function($ctx1) {
  14075. //>>excludeEnd("ctx");
  14076. $self._subclassResponsibility();
  14077. return self;
  14078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14079. }, function($ctx1) {$ctx1.fill(self,"reversed",{})});
  14080. //>>excludeEnd("ctx");
  14081. }; }),
  14082. $globals.SequenceableCollection);
  14083. $core.addMethod(
  14084. $core.method({
  14085. selector: "second",
  14086. protocol: "accessing",
  14087. //>>excludeStart("ide", pragmas.excludeIdeData);
  14088. args: [],
  14089. source: "second\x0a\x09^ self at: 2",
  14090. referencedClasses: [],
  14091. //>>excludeEnd("ide");
  14092. pragmas: [],
  14093. messageSends: ["at:"]
  14094. }, function ($methodClass){ return function (){
  14095. var self=this,$self=this;
  14096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14097. return $core.withContext(function($ctx1) {
  14098. //>>excludeEnd("ctx");
  14099. return $self._at_((2));
  14100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14101. }, function($ctx1) {$ctx1.fill(self,"second",{})});
  14102. //>>excludeEnd("ctx");
  14103. }; }),
  14104. $globals.SequenceableCollection);
  14105. $core.addMethod(
  14106. $core.method({
  14107. selector: "stream",
  14108. protocol: "streaming",
  14109. //>>excludeStart("ide", pragmas.excludeIdeData);
  14110. args: [],
  14111. source: "stream\x0a\x09^ self newStream",
  14112. referencedClasses: [],
  14113. //>>excludeEnd("ide");
  14114. pragmas: [],
  14115. messageSends: ["newStream"]
  14116. }, function ($methodClass){ return function (){
  14117. var self=this,$self=this;
  14118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14119. return $core.withContext(function($ctx1) {
  14120. //>>excludeEnd("ctx");
  14121. return $self._newStream();
  14122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14123. }, function($ctx1) {$ctx1.fill(self,"stream",{})});
  14124. //>>excludeEnd("ctx");
  14125. }; }),
  14126. $globals.SequenceableCollection);
  14127. $core.addMethod(
  14128. $core.method({
  14129. selector: "streamClass",
  14130. protocol: "streaming",
  14131. //>>excludeStart("ide", pragmas.excludeIdeData);
  14132. args: [],
  14133. source: "streamClass\x0a\x09^ self class streamClass",
  14134. referencedClasses: [],
  14135. //>>excludeEnd("ide");
  14136. pragmas: [],
  14137. messageSends: ["streamClass", "class"]
  14138. }, function ($methodClass){ return function (){
  14139. var self=this,$self=this;
  14140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14141. return $core.withContext(function($ctx1) {
  14142. //>>excludeEnd("ctx");
  14143. return $recv($self._class())._streamClass();
  14144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14145. }, function($ctx1) {$ctx1.fill(self,"streamClass",{})});
  14146. //>>excludeEnd("ctx");
  14147. }; }),
  14148. $globals.SequenceableCollection);
  14149. $core.addMethod(
  14150. $core.method({
  14151. selector: "third",
  14152. protocol: "accessing",
  14153. //>>excludeStart("ide", pragmas.excludeIdeData);
  14154. args: [],
  14155. source: "third\x0a\x09^ self at: 3",
  14156. referencedClasses: [],
  14157. //>>excludeEnd("ide");
  14158. pragmas: [],
  14159. messageSends: ["at:"]
  14160. }, function ($methodClass){ return function (){
  14161. var self=this,$self=this;
  14162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14163. return $core.withContext(function($ctx1) {
  14164. //>>excludeEnd("ctx");
  14165. return $self._at_((3));
  14166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14167. }, function($ctx1) {$ctx1.fill(self,"third",{})});
  14168. //>>excludeEnd("ctx");
  14169. }; }),
  14170. $globals.SequenceableCollection);
  14171. $core.addMethod(
  14172. $core.method({
  14173. selector: "writeStream",
  14174. protocol: "streaming",
  14175. //>>excludeStart("ide", pragmas.excludeIdeData);
  14176. args: [],
  14177. source: "writeStream\x0a\x09\x22For Pharo compatibility\x22\x0a\x09\x0a\x09^ self stream",
  14178. referencedClasses: [],
  14179. //>>excludeEnd("ide");
  14180. pragmas: [],
  14181. messageSends: ["stream"]
  14182. }, function ($methodClass){ return function (){
  14183. var self=this,$self=this;
  14184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14185. return $core.withContext(function($ctx1) {
  14186. //>>excludeEnd("ctx");
  14187. return $self._stream();
  14188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14189. }, function($ctx1) {$ctx1.fill(self,"writeStream",{})});
  14190. //>>excludeEnd("ctx");
  14191. }; }),
  14192. $globals.SequenceableCollection);
  14193. $core.addMethod(
  14194. $core.method({
  14195. selector: "streamClass",
  14196. protocol: "accessing",
  14197. //>>excludeStart("ide", pragmas.excludeIdeData);
  14198. args: [],
  14199. source: "streamClass\x0a\x09\x09^ Stream",
  14200. referencedClasses: ["Stream"],
  14201. //>>excludeEnd("ide");
  14202. pragmas: [],
  14203. messageSends: []
  14204. }, function ($methodClass){ return function (){
  14205. var self=this,$self=this;
  14206. return $globals.Stream;
  14207. }; }),
  14208. $globals.SequenceableCollection.a$cls);
  14209. $core.addMethod(
  14210. $core.method({
  14211. selector: "streamContents:",
  14212. protocol: "streaming",
  14213. //>>excludeStart("ide", pragmas.excludeIdeData);
  14214. args: ["aBlock"],
  14215. source: "streamContents: aBlock\x0a\x09| stream |\x0a\x09stream := (self streamClass on: self new).\x0a\x09aBlock value: stream.\x0a\x09^ stream contents",
  14216. referencedClasses: [],
  14217. //>>excludeEnd("ide");
  14218. pragmas: [],
  14219. messageSends: ["on:", "streamClass", "new", "value:", "contents"]
  14220. }, function ($methodClass){ return function (aBlock){
  14221. var self=this,$self=this;
  14222. var stream;
  14223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14224. return $core.withContext(function($ctx1) {
  14225. //>>excludeEnd("ctx");
  14226. stream=$recv($self._streamClass())._on_($self._new());
  14227. $recv(aBlock)._value_(stream);
  14228. return $recv(stream)._contents();
  14229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14230. }, function($ctx1) {$ctx1.fill(self,"streamContents:",{aBlock:aBlock,stream:stream})});
  14231. //>>excludeEnd("ctx");
  14232. }; }),
  14233. $globals.SequenceableCollection.a$cls);
  14234. $core.addClass("Array", $globals.SequenceableCollection, "Kernel-Collections");
  14235. //>>excludeStart("ide", pragmas.excludeIdeData);
  14236. $globals.Array.comment="I represent a collection of objects ordered by the collector. The size of arrays is dynamic.\x0a\x0aI am directly mapped to JavaScript Number.\x0a\x0a*Note* In Amber, `OrderedCollection` is an alias for `Array`.";
  14237. //>>excludeEnd("ide");
  14238. $core.addMethod(
  14239. $core.method({
  14240. selector: "add:",
  14241. protocol: "adding/removing",
  14242. //>>excludeStart("ide", pragmas.excludeIdeData);
  14243. args: ["anObject"],
  14244. source: "add: anObject\x0a\x09<inlineJS: 'self.push(anObject); return anObject;'>",
  14245. referencedClasses: [],
  14246. //>>excludeEnd("ide");
  14247. pragmas: [["inlineJS:", ["self.push(anObject); return anObject;"]]],
  14248. messageSends: []
  14249. }, function ($methodClass){ return function (anObject){
  14250. var self=this,$self=this;
  14251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14252. return $core.withContext(function($ctx1) {
  14253. //>>excludeEnd("ctx");
  14254. self.push(anObject); return anObject;;
  14255. return self;
  14256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14257. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject})});
  14258. //>>excludeEnd("ctx");
  14259. }; }),
  14260. $globals.Array);
  14261. $core.addMethod(
  14262. $core.method({
  14263. selector: "addAll:",
  14264. protocol: "adding/removing",
  14265. //>>excludeStart("ide", pragmas.excludeIdeData);
  14266. args: ["aCollection"],
  14267. source: "addAll: aCollection\x0a<inlineJS: '\x0a\x09if (Array.isArray(aCollection) && aCollection.length < 65000) self.push.apply(self, aCollection);\x0a\x09else $globals.Array.superclass.fn.prototype._addAll_.call($self, aCollection);\x0a\x09return aCollection;\x0a'>",
  14268. referencedClasses: [],
  14269. //>>excludeEnd("ide");
  14270. pragmas: [["inlineJS:", ["\x0a\x09if (Array.isArray(aCollection) && aCollection.length < 65000) self.push.apply(self, aCollection);\x0a\x09else $globals.Array.superclass.fn.prototype._addAll_.call($self, aCollection);\x0a\x09return aCollection;"]]],
  14271. messageSends: []
  14272. }, function ($methodClass){ return function (aCollection){
  14273. var self=this,$self=this;
  14274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14275. return $core.withContext(function($ctx1) {
  14276. //>>excludeEnd("ctx");
  14277. if (Array.isArray(aCollection) && aCollection.length < 65000) self.push.apply(self, aCollection);
  14278. else $globals.Array.superclass.fn.prototype._addAll_.call($self, aCollection);
  14279. return aCollection;;
  14280. return self;
  14281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14282. }, function($ctx1) {$ctx1.fill(self,"addAll:",{aCollection:aCollection})});
  14283. //>>excludeEnd("ctx");
  14284. }; }),
  14285. $globals.Array);
  14286. $core.addMethod(
  14287. $core.method({
  14288. selector: "addFirst:",
  14289. protocol: "adding/removing",
  14290. //>>excludeStart("ide", pragmas.excludeIdeData);
  14291. args: ["anObject"],
  14292. source: "addFirst: anObject\x0a\x09<inlineJS: 'self.unshift(anObject); return anObject;'>",
  14293. referencedClasses: [],
  14294. //>>excludeEnd("ide");
  14295. pragmas: [["inlineJS:", ["self.unshift(anObject); return anObject;"]]],
  14296. messageSends: []
  14297. }, function ($methodClass){ return function (anObject){
  14298. var self=this,$self=this;
  14299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14300. return $core.withContext(function($ctx1) {
  14301. //>>excludeEnd("ctx");
  14302. self.unshift(anObject); return anObject;;
  14303. return self;
  14304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14305. }, function($ctx1) {$ctx1.fill(self,"addFirst:",{anObject:anObject})});
  14306. //>>excludeEnd("ctx");
  14307. }; }),
  14308. $globals.Array);
  14309. $core.addMethod(
  14310. $core.method({
  14311. selector: "allIn:",
  14312. protocol: "enumerating",
  14313. //>>excludeStart("ide", pragmas.excludeIdeData);
  14314. args: ["aBlock"],
  14315. source: "allIn: aBlock\x0a\x09^ aBlock valueWithPossibleArguments:\x0a\x09\x09\x22collect to match #in: behaviour\x22\x0a\x09\x09(self collect: [ :each | each in: [ :x | x ] ])",
  14316. referencedClasses: [],
  14317. //>>excludeEnd("ide");
  14318. pragmas: [],
  14319. messageSends: ["valueWithPossibleArguments:", "collect:", "in:"]
  14320. }, function ($methodClass){ return function (aBlock){
  14321. var self=this,$self=this;
  14322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14323. return $core.withContext(function($ctx1) {
  14324. //>>excludeEnd("ctx");
  14325. return $recv(aBlock)._valueWithPossibleArguments_($self._collect_((function(each){
  14326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14327. return $core.withContext(function($ctx2) {
  14328. //>>excludeEnd("ctx");
  14329. return $recv(each)._in_((function(x){
  14330. return x;
  14331. }));
  14332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14333. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14334. //>>excludeEnd("ctx");
  14335. })));
  14336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14337. }, function($ctx1) {$ctx1.fill(self,"allIn:",{aBlock:aBlock})});
  14338. //>>excludeEnd("ctx");
  14339. }; }),
  14340. $globals.Array);
  14341. $core.addMethod(
  14342. $core.method({
  14343. selector: "appendToString:",
  14344. protocol: "copying",
  14345. //>>excludeStart("ide", pragmas.excludeIdeData);
  14346. args: ["aString"],
  14347. source: "appendToString: aString\x0a<inlineJS: '\x0a\x09for (var i = 0, l = $self.length; i < l; ++i) {\x0a\x09\x09var el = $self[i];\x0a\x09\x09if ((typeof el === \x22string\x22) || $recv(el)._isString()) {\x0a\x09\x09\x09if (el.length === 1) { aString += el; continue; }\x0a\x09\x09}\x0a\x09\x09$self._error_(\x22Not a character.\x22);\x0a\x09}\x0a\x09return aString'>",
  14348. referencedClasses: [],
  14349. //>>excludeEnd("ide");
  14350. pragmas: [["inlineJS:", ["\x0a\x09for (var i = 0, l = $self.length; i < l; ++i) {\x0a\x09\x09var el = $self[i];\x0a\x09\x09if ((typeof el === \x22string\x22) || $recv(el)._isString()) {\x0a\x09\x09\x09if (el.length === 1) { aString += el; continue; }\x0a\x09\x09}\x0a\x09\x09$self._error_(\x22Not a character.\x22);\x0a\x09}\x0a\x09return aString"]]],
  14351. messageSends: []
  14352. }, function ($methodClass){ return function (aString){
  14353. var self=this,$self=this;
  14354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14355. return $core.withContext(function($ctx1) {
  14356. //>>excludeEnd("ctx");
  14357. for (var i = 0, l = $self.length; i < l; ++i) {
  14358. var el = $self[i];
  14359. if ((typeof el === "string") || $recv(el)._isString()) {
  14360. if (el.length === 1) { aString += el; continue; }
  14361. }
  14362. $self._error_("Not a character.");
  14363. }
  14364. return aString;
  14365. return self;
  14366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14367. }, function($ctx1) {$ctx1.fill(self,"appendToString:",{aString:aString})});
  14368. //>>excludeEnd("ctx");
  14369. }; }),
  14370. $globals.Array);
  14371. $core.addMethod(
  14372. $core.method({
  14373. selector: "asJavaScriptSource",
  14374. protocol: "converting",
  14375. //>>excludeStart("ide", pragmas.excludeIdeData);
  14376. args: [],
  14377. source: "asJavaScriptSource\x0a\x09^ '[', ((self collect: [:each | each asJavaScriptSource ]) join: ', '), ']'",
  14378. referencedClasses: [],
  14379. //>>excludeEnd("ide");
  14380. pragmas: [],
  14381. messageSends: [",", "join:", "collect:", "asJavaScriptSource"]
  14382. }, function ($methodClass){ return function (){
  14383. var self=this,$self=this;
  14384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14385. return $core.withContext(function($ctx1) {
  14386. //>>excludeEnd("ctx");
  14387. return [$recv("[".__comma($recv($self._collect_((function(each){
  14388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14389. return $core.withContext(function($ctx2) {
  14390. //>>excludeEnd("ctx");
  14391. return $recv(each)._asJavaScriptSource();
  14392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14393. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14394. //>>excludeEnd("ctx");
  14395. })))._join_(", "))).__comma("]")
  14396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14397. ,$ctx1.sendIdx[","]=1
  14398. //>>excludeEnd("ctx");
  14399. ][0];
  14400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14401. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  14402. //>>excludeEnd("ctx");
  14403. }; }),
  14404. $globals.Array);
  14405. $core.addMethod(
  14406. $core.method({
  14407. selector: "at:put:",
  14408. protocol: "accessing",
  14409. //>>excludeStart("ide", pragmas.excludeIdeData);
  14410. args: ["anIndex", "anObject"],
  14411. source: "at: anIndex put: anObject\x0a\x09<inlineJS: 'return self[anIndex - 1] = anObject'>",
  14412. referencedClasses: [],
  14413. //>>excludeEnd("ide");
  14414. pragmas: [["inlineJS:", ["return self[anIndex - 1] = anObject"]]],
  14415. messageSends: []
  14416. }, function ($methodClass){ return function (anIndex,anObject){
  14417. var self=this,$self=this;
  14418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14419. return $core.withContext(function($ctx1) {
  14420. //>>excludeEnd("ctx");
  14421. return self[anIndex - 1] = anObject;
  14422. return self;
  14423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14424. }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject})});
  14425. //>>excludeEnd("ctx");
  14426. }; }),
  14427. $globals.Array);
  14428. $core.addMethod(
  14429. $core.method({
  14430. selector: "collect:",
  14431. protocol: "enumerating",
  14432. //>>excludeStart("ide", pragmas.excludeIdeData);
  14433. args: ["aBlock"],
  14434. source: "collect: aBlock\x0a\x09\x22Optimized version\x22\x0a\x09\x0a\x09<inlineJS: 'return self.map(function(each) {return aBlock._value_(each)})'>",
  14435. referencedClasses: [],
  14436. //>>excludeEnd("ide");
  14437. pragmas: [["inlineJS:", ["return self.map(function(each) {return aBlock._value_(each)})"]]],
  14438. messageSends: []
  14439. }, function ($methodClass){ return function (aBlock){
  14440. var self=this,$self=this;
  14441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14442. return $core.withContext(function($ctx1) {
  14443. //>>excludeEnd("ctx");
  14444. return self.map(function(each) {return aBlock._value_(each)});
  14445. return self;
  14446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14447. }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock})});
  14448. //>>excludeEnd("ctx");
  14449. }; }),
  14450. $globals.Array);
  14451. $core.addMethod(
  14452. $core.method({
  14453. selector: "copyFrom:to:",
  14454. protocol: "copying",
  14455. //>>excludeStart("ide", pragmas.excludeIdeData);
  14456. args: ["anIndex", "anotherIndex"],
  14457. source: "copyFrom: anIndex to: anotherIndex\x0a<inlineJS: '\x0a\x09if (anIndex >= 1 && anotherIndex <= self.length) {\x0a\x09\x09return self.slice(anIndex - 1, anotherIndex);\x0a\x09} else {\x0a\x09\x09self._at_(anIndex);\x0a\x09\x09self._at_(self.length + 1);\x0a\x09\x09throw new Error(\x22Incorrect indexes in #copyFrom:to: not caught by #at:\x22);\x0a\x09}\x0a'>",
  14458. referencedClasses: [],
  14459. //>>excludeEnd("ide");
  14460. pragmas: [["inlineJS:", ["\x0a\x09if (anIndex >= 1 && anotherIndex <= self.length) {\x0a\x09\x09return self.slice(anIndex - 1, anotherIndex);\x0a\x09} else {\x0a\x09\x09self._at_(anIndex);\x0a\x09\x09self._at_(self.length + 1);\x0a\x09\x09throw new Error(\x22Incorrect indexes in #copyFrom:to: not caught by #at:\x22);\x0a\x09}"]]],
  14461. messageSends: []
  14462. }, function ($methodClass){ return function (anIndex,anotherIndex){
  14463. var self=this,$self=this;
  14464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14465. return $core.withContext(function($ctx1) {
  14466. //>>excludeEnd("ctx");
  14467. if (anIndex >= 1 && anotherIndex <= self.length) {
  14468. return self.slice(anIndex - 1, anotherIndex);
  14469. } else {
  14470. self._at_(anIndex);
  14471. self._at_(self.length + 1);
  14472. throw new Error("Incorrect indexes in #copyFrom:to: not caught by #at:");
  14473. };
  14474. return self;
  14475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14476. }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex})});
  14477. //>>excludeEnd("ctx");
  14478. }; }),
  14479. $globals.Array);
  14480. $core.addMethod(
  14481. $core.method({
  14482. selector: "join:",
  14483. protocol: "enumerating",
  14484. //>>excludeStart("ide", pragmas.excludeIdeData);
  14485. args: ["aString"],
  14486. source: "join: aString\x0a\x09<inlineJS: 'return self.join(aString)'>",
  14487. referencedClasses: [],
  14488. //>>excludeEnd("ide");
  14489. pragmas: [["inlineJS:", ["return self.join(aString)"]]],
  14490. messageSends: []
  14491. }, function ($methodClass){ return function (aString){
  14492. var self=this,$self=this;
  14493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14494. return $core.withContext(function($ctx1) {
  14495. //>>excludeEnd("ctx");
  14496. return self.join(aString);
  14497. return self;
  14498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14499. }, function($ctx1) {$ctx1.fill(self,"join:",{aString:aString})});
  14500. //>>excludeEnd("ctx");
  14501. }; }),
  14502. $globals.Array);
  14503. $core.addMethod(
  14504. $core.method({
  14505. selector: "printOn:",
  14506. protocol: "printing",
  14507. //>>excludeStart("ide", pragmas.excludeIdeData);
  14508. args: ["aStream"],
  14509. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09\x0a\x09aStream nextPutAll: ' ('.\x0a\x09self \x0a\x09\x09do: [ :each | each printOn: aStream ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ' ' ].\x0a\x09aStream nextPutAll: ')'",
  14510. referencedClasses: [],
  14511. //>>excludeEnd("ide");
  14512. pragmas: [],
  14513. messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:"]
  14514. }, function ($methodClass){ return function (aStream){
  14515. var self=this,$self=this;
  14516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14517. return $core.withContext(function($ctx1) {
  14518. //>>excludeEnd("ctx");
  14519. [(
  14520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14521. $ctx1.supercall = true,
  14522. //>>excludeEnd("ctx");
  14523. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  14524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14525. ,$ctx1.sendIdx["printOn:"]=1,$ctx1.supercall = false
  14526. //>>excludeEnd("ctx");
  14527. ][0];
  14528. [$recv(aStream)._nextPutAll_(" (")
  14529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14530. ,$ctx1.sendIdx["nextPutAll:"]=1
  14531. //>>excludeEnd("ctx");
  14532. ][0];
  14533. $self._do_separatedBy_((function(each){
  14534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14535. return $core.withContext(function($ctx2) {
  14536. //>>excludeEnd("ctx");
  14537. return $recv(each)._printOn_(aStream);
  14538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14539. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14540. //>>excludeEnd("ctx");
  14541. }),(function(){
  14542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14543. return $core.withContext(function($ctx2) {
  14544. //>>excludeEnd("ctx");
  14545. return [$recv(aStream)._nextPutAll_(" ")
  14546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14547. ,$ctx2.sendIdx["nextPutAll:"]=2
  14548. //>>excludeEnd("ctx");
  14549. ][0];
  14550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14551. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  14552. //>>excludeEnd("ctx");
  14553. }));
  14554. $recv(aStream)._nextPutAll_(")");
  14555. return self;
  14556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14557. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  14558. //>>excludeEnd("ctx");
  14559. }; }),
  14560. $globals.Array);
  14561. $core.addMethod(
  14562. $core.method({
  14563. selector: "remove:ifAbsent:",
  14564. protocol: "adding/removing",
  14565. //>>excludeStart("ide", pragmas.excludeIdeData);
  14566. args: ["anObject", "aBlock"],
  14567. source: "remove: anObject ifAbsent: aBlock\x0a\x09| index |\x0a\x09index := self indexOf: anObject ifAbsent: [ 0 ].\x0a\x09^ index = 0\x0a\x09\x09ifFalse: [ self removeIndex: index. anObject ]\x0a\x09\x09ifTrue: [ aBlock value ]",
  14568. referencedClasses: [],
  14569. //>>excludeEnd("ide");
  14570. pragmas: [],
  14571. messageSends: ["indexOf:ifAbsent:", "ifFalse:ifTrue:", "=", "removeIndex:", "value"]
  14572. }, function ($methodClass){ return function (anObject,aBlock){
  14573. var self=this,$self=this;
  14574. var index;
  14575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14576. return $core.withContext(function($ctx1) {
  14577. //>>excludeEnd("ctx");
  14578. index=$self._indexOf_ifAbsent_(anObject,(function(){
  14579. return (0);
  14580. }));
  14581. if($core.assert($recv(index).__eq((0)))){
  14582. return $recv(aBlock)._value();
  14583. } else {
  14584. $self._removeIndex_(index);
  14585. return anObject;
  14586. }
  14587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14588. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index})});
  14589. //>>excludeEnd("ctx");
  14590. }; }),
  14591. $globals.Array);
  14592. $core.addMethod(
  14593. $core.method({
  14594. selector: "removeAll",
  14595. protocol: "adding/removing",
  14596. //>>excludeStart("ide", pragmas.excludeIdeData);
  14597. args: [],
  14598. source: "removeAll\x0a\x09<inlineJS: 'self.length = 0'>",
  14599. referencedClasses: [],
  14600. //>>excludeEnd("ide");
  14601. pragmas: [["inlineJS:", ["self.length = 0"]]],
  14602. messageSends: []
  14603. }, function ($methodClass){ return function (){
  14604. var self=this,$self=this;
  14605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14606. return $core.withContext(function($ctx1) {
  14607. //>>excludeEnd("ctx");
  14608. self.length = 0;
  14609. return self;
  14610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14611. }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
  14612. //>>excludeEnd("ctx");
  14613. }; }),
  14614. $globals.Array);
  14615. $core.addMethod(
  14616. $core.method({
  14617. selector: "removeFrom:to:",
  14618. protocol: "adding/removing",
  14619. //>>excludeStart("ide", pragmas.excludeIdeData);
  14620. args: ["aNumber", "anotherNumber"],
  14621. source: "removeFrom: aNumber to: anotherNumber\x0a\x09<inlineJS: 'self.splice(aNumber -1, anotherNumber - aNumber + 1)'>",
  14622. referencedClasses: [],
  14623. //>>excludeEnd("ide");
  14624. pragmas: [["inlineJS:", ["self.splice(aNumber -1, anotherNumber - aNumber + 1)"]]],
  14625. messageSends: []
  14626. }, function ($methodClass){ return function (aNumber,anotherNumber){
  14627. var self=this,$self=this;
  14628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14629. return $core.withContext(function($ctx1) {
  14630. //>>excludeEnd("ctx");
  14631. self.splice(aNumber -1, anotherNumber - aNumber + 1);
  14632. return self;
  14633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14634. }, function($ctx1) {$ctx1.fill(self,"removeFrom:to:",{aNumber:aNumber,anotherNumber:anotherNumber})});
  14635. //>>excludeEnd("ctx");
  14636. }; }),
  14637. $globals.Array);
  14638. $core.addMethod(
  14639. $core.method({
  14640. selector: "removeIndex:",
  14641. protocol: "adding/removing",
  14642. //>>excludeStart("ide", pragmas.excludeIdeData);
  14643. args: ["anInteger"],
  14644. source: "removeIndex: anInteger\x0a\x09<inlineJS: 'self.splice(anInteger - 1, 1)'>",
  14645. referencedClasses: [],
  14646. //>>excludeEnd("ide");
  14647. pragmas: [["inlineJS:", ["self.splice(anInteger - 1, 1)"]]],
  14648. messageSends: []
  14649. }, function ($methodClass){ return function (anInteger){
  14650. var self=this,$self=this;
  14651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14652. return $core.withContext(function($ctx1) {
  14653. //>>excludeEnd("ctx");
  14654. self.splice(anInteger - 1, 1);
  14655. return self;
  14656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14657. }, function($ctx1) {$ctx1.fill(self,"removeIndex:",{anInteger:anInteger})});
  14658. //>>excludeEnd("ctx");
  14659. }; }),
  14660. $globals.Array);
  14661. $core.addMethod(
  14662. $core.method({
  14663. selector: "removeLast",
  14664. protocol: "adding/removing",
  14665. //>>excludeStart("ide", pragmas.excludeIdeData);
  14666. args: [],
  14667. source: "removeLast\x0a\x09<inlineJS: 'return self.pop();'>",
  14668. referencedClasses: [],
  14669. //>>excludeEnd("ide");
  14670. pragmas: [["inlineJS:", ["return self.pop();"]]],
  14671. messageSends: []
  14672. }, function ($methodClass){ return function (){
  14673. var self=this,$self=this;
  14674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14675. return $core.withContext(function($ctx1) {
  14676. //>>excludeEnd("ctx");
  14677. return self.pop();;
  14678. return self;
  14679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14680. }, function($ctx1) {$ctx1.fill(self,"removeLast",{})});
  14681. //>>excludeEnd("ctx");
  14682. }; }),
  14683. $globals.Array);
  14684. $core.addMethod(
  14685. $core.method({
  14686. selector: "reversed",
  14687. protocol: "converting",
  14688. //>>excludeStart("ide", pragmas.excludeIdeData);
  14689. args: [],
  14690. source: "reversed\x0a\x09<inlineJS: 'return self.slice().reverse()'>",
  14691. referencedClasses: [],
  14692. //>>excludeEnd("ide");
  14693. pragmas: [["inlineJS:", ["return self.slice().reverse()"]]],
  14694. messageSends: []
  14695. }, function ($methodClass){ return function (){
  14696. var self=this,$self=this;
  14697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14698. return $core.withContext(function($ctx1) {
  14699. //>>excludeEnd("ctx");
  14700. return self.slice().reverse();
  14701. return self;
  14702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14703. }, function($ctx1) {$ctx1.fill(self,"reversed",{})});
  14704. //>>excludeEnd("ctx");
  14705. }; }),
  14706. $globals.Array);
  14707. $core.addMethod(
  14708. $core.method({
  14709. selector: "select:",
  14710. protocol: "enumerating",
  14711. //>>excludeStart("ide", pragmas.excludeIdeData);
  14712. args: ["aBlock"],
  14713. source: "select: aBlock\x0a\x09\x22Optimized version\x22\x0a\x09\x0a\x09<inlineJS: 'return self.filter(function(each) {return aBlock._value_(each)})'>",
  14714. referencedClasses: [],
  14715. //>>excludeEnd("ide");
  14716. pragmas: [["inlineJS:", ["return self.filter(function(each) {return aBlock._value_(each)})"]]],
  14717. messageSends: []
  14718. }, function ($methodClass){ return function (aBlock){
  14719. var self=this,$self=this;
  14720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14721. return $core.withContext(function($ctx1) {
  14722. //>>excludeEnd("ctx");
  14723. return self.filter(function(each) {return aBlock._value_(each)});
  14724. return self;
  14725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14726. }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock})});
  14727. //>>excludeEnd("ctx");
  14728. }; }),
  14729. $globals.Array);
  14730. $core.addMethod(
  14731. $core.method({
  14732. selector: "shallowCopy",
  14733. protocol: "copying",
  14734. //>>excludeStart("ide", pragmas.excludeIdeData);
  14735. args: [],
  14736. source: "shallowCopy\x0a\x09<inlineJS: 'return self.slice()'>",
  14737. referencedClasses: [],
  14738. //>>excludeEnd("ide");
  14739. pragmas: [["inlineJS:", ["return self.slice()"]]],
  14740. messageSends: []
  14741. }, function ($methodClass){ return function (){
  14742. var self=this,$self=this;
  14743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14744. return $core.withContext(function($ctx1) {
  14745. //>>excludeEnd("ctx");
  14746. return self.slice();
  14747. return self;
  14748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14749. }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{})});
  14750. //>>excludeEnd("ctx");
  14751. }; }),
  14752. $globals.Array);
  14753. $core.addMethod(
  14754. $core.method({
  14755. selector: "sort",
  14756. protocol: "enumerating",
  14757. //>>excludeStart("ide", pragmas.excludeIdeData);
  14758. args: [],
  14759. source: "sort\x0a\x09^ self sort: [ :a :b | a < b ]",
  14760. referencedClasses: [],
  14761. //>>excludeEnd("ide");
  14762. pragmas: [],
  14763. messageSends: ["sort:", "<"]
  14764. }, function ($methodClass){ return function (){
  14765. var self=this,$self=this;
  14766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14767. return $core.withContext(function($ctx1) {
  14768. //>>excludeEnd("ctx");
  14769. return $self._sort_((function(a,b){
  14770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14771. return $core.withContext(function($ctx2) {
  14772. //>>excludeEnd("ctx");
  14773. return $recv(a).__lt(b);
  14774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14775. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  14776. //>>excludeEnd("ctx");
  14777. }));
  14778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14779. }, function($ctx1) {$ctx1.fill(self,"sort",{})});
  14780. //>>excludeEnd("ctx");
  14781. }; }),
  14782. $globals.Array);
  14783. $core.addMethod(
  14784. $core.method({
  14785. selector: "sort:",
  14786. protocol: "enumerating",
  14787. //>>excludeStart("ide", pragmas.excludeIdeData);
  14788. args: ["aBlock"],
  14789. source: "sort: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09return self.sort(function(a, b) {\x0a\x09\x09\x09if(aBlock._value_value_(a,b)) {return -1} else {return 1}\x0a\x09\x09})\x0a\x09'>",
  14790. referencedClasses: [],
  14791. //>>excludeEnd("ide");
  14792. pragmas: [["inlineJS:", ["\x0a\x09\x09return self.sort(function(a, b) {\x0a\x09\x09\x09if(aBlock._value_value_(a,b)) {return -1} else {return 1}\x0a\x09\x09})\x0a\x09"]]],
  14793. messageSends: []
  14794. }, function ($methodClass){ return function (aBlock){
  14795. var self=this,$self=this;
  14796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14797. return $core.withContext(function($ctx1) {
  14798. //>>excludeEnd("ctx");
  14799. return self.sort(function(a, b) {
  14800. if(aBlock._value_value_(a,b)) {return -1} else {return 1}
  14801. })
  14802. ;
  14803. return self;
  14804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14805. }, function($ctx1) {$ctx1.fill(self,"sort:",{aBlock:aBlock})});
  14806. //>>excludeEnd("ctx");
  14807. }; }),
  14808. $globals.Array);
  14809. $core.addMethod(
  14810. $core.method({
  14811. selector: "sorted",
  14812. protocol: "enumerating",
  14813. //>>excludeStart("ide", pragmas.excludeIdeData);
  14814. args: [],
  14815. source: "sorted\x0a\x09^ self copy sort",
  14816. referencedClasses: [],
  14817. //>>excludeEnd("ide");
  14818. pragmas: [],
  14819. messageSends: ["sort", "copy"]
  14820. }, function ($methodClass){ return function (){
  14821. var self=this,$self=this;
  14822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14823. return $core.withContext(function($ctx1) {
  14824. //>>excludeEnd("ctx");
  14825. return $recv($self._copy())._sort();
  14826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14827. }, function($ctx1) {$ctx1.fill(self,"sorted",{})});
  14828. //>>excludeEnd("ctx");
  14829. }; }),
  14830. $globals.Array);
  14831. $core.addMethod(
  14832. $core.method({
  14833. selector: "sorted:",
  14834. protocol: "enumerating",
  14835. //>>excludeStart("ide", pragmas.excludeIdeData);
  14836. args: ["aBlock"],
  14837. source: "sorted: aBlock\x0a\x09^ self copy sort: aBlock",
  14838. referencedClasses: [],
  14839. //>>excludeEnd("ide");
  14840. pragmas: [],
  14841. messageSends: ["sort:", "copy"]
  14842. }, function ($methodClass){ return function (aBlock){
  14843. var self=this,$self=this;
  14844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14845. return $core.withContext(function($ctx1) {
  14846. //>>excludeEnd("ctx");
  14847. return $recv($self._copy())._sort_(aBlock);
  14848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14849. }, function($ctx1) {$ctx1.fill(self,"sorted:",{aBlock:aBlock})});
  14850. //>>excludeEnd("ctx");
  14851. }; }),
  14852. $globals.Array);
  14853. $core.addMethod(
  14854. $core.method({
  14855. selector: "new:",
  14856. protocol: "instance creation",
  14857. //>>excludeStart("ide", pragmas.excludeIdeData);
  14858. args: ["anInteger"],
  14859. source: "new: anInteger\x0a\x09<inlineJS: 'return new Array(anInteger)'>",
  14860. referencedClasses: [],
  14861. //>>excludeEnd("ide");
  14862. pragmas: [["inlineJS:", ["return new Array(anInteger)"]]],
  14863. messageSends: []
  14864. }, function ($methodClass){ return function (anInteger){
  14865. var self=this,$self=this;
  14866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14867. return $core.withContext(function($ctx1) {
  14868. //>>excludeEnd("ctx");
  14869. return new Array(anInteger);
  14870. return self;
  14871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14872. }, function($ctx1) {$ctx1.fill(self,"new:",{anInteger:anInteger})});
  14873. //>>excludeEnd("ctx");
  14874. }; }),
  14875. $globals.Array.a$cls);
  14876. $core.addMethod(
  14877. $core.method({
  14878. selector: "with:",
  14879. protocol: "instance creation",
  14880. //>>excludeStart("ide", pragmas.excludeIdeData);
  14881. args: ["anObject"],
  14882. source: "with: anObject\x0a\x09\x09^ (self new: 1)\x0a\x09\x09at: 1 put: anObject;\x0a\x09\x09yourself",
  14883. referencedClasses: [],
  14884. //>>excludeEnd("ide");
  14885. pragmas: [],
  14886. messageSends: ["at:put:", "new:", "yourself"]
  14887. }, function ($methodClass){ return function (anObject){
  14888. var self=this,$self=this;
  14889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14890. return $core.withContext(function($ctx1) {
  14891. //>>excludeEnd("ctx");
  14892. var $1;
  14893. $1=$self._new_((1));
  14894. $recv($1)._at_put_((1),anObject);
  14895. return $recv($1)._yourself();
  14896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14897. }, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject})});
  14898. //>>excludeEnd("ctx");
  14899. }; }),
  14900. $globals.Array.a$cls);
  14901. $core.addMethod(
  14902. $core.method({
  14903. selector: "with:with:",
  14904. protocol: "instance creation",
  14905. //>>excludeStart("ide", pragmas.excludeIdeData);
  14906. args: ["anObject", "anObject2"],
  14907. source: "with: anObject with: anObject2\x0a\x09\x09^ (self new: 2)\x0a\x09\x09at: 1 put: anObject;\x0a\x09\x09at: 2 put: anObject2;\x0a\x09\x09yourself",
  14908. referencedClasses: [],
  14909. //>>excludeEnd("ide");
  14910. pragmas: [],
  14911. messageSends: ["at:put:", "new:", "yourself"]
  14912. }, function ($methodClass){ return function (anObject,anObject2){
  14913. var self=this,$self=this;
  14914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14915. return $core.withContext(function($ctx1) {
  14916. //>>excludeEnd("ctx");
  14917. var $1;
  14918. $1=$self._new_((2));
  14919. [$recv($1)._at_put_((1),anObject)
  14920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14921. ,$ctx1.sendIdx["at:put:"]=1
  14922. //>>excludeEnd("ctx");
  14923. ][0];
  14924. $recv($1)._at_put_((2),anObject2);
  14925. return $recv($1)._yourself();
  14926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14927. }, function($ctx1) {$ctx1.fill(self,"with:with:",{anObject:anObject,anObject2:anObject2})});
  14928. //>>excludeEnd("ctx");
  14929. }; }),
  14930. $globals.Array.a$cls);
  14931. $core.addMethod(
  14932. $core.method({
  14933. selector: "with:with:with:",
  14934. protocol: "instance creation",
  14935. //>>excludeStart("ide", pragmas.excludeIdeData);
  14936. args: ["anObject", "anObject2", "anObject3"],
  14937. source: "with: anObject with: anObject2 with: anObject3\x0a\x09\x09^ (self new: 3)\x0a\x09\x09at: 1 put: anObject;\x0a\x09\x09at: 2 put: anObject2;\x0a\x09\x09at: 3 put: anObject3;\x0a\x09\x09yourself",
  14938. referencedClasses: [],
  14939. //>>excludeEnd("ide");
  14940. pragmas: [],
  14941. messageSends: ["at:put:", "new:", "yourself"]
  14942. }, function ($methodClass){ return function (anObject,anObject2,anObject3){
  14943. var self=this,$self=this;
  14944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14945. return $core.withContext(function($ctx1) {
  14946. //>>excludeEnd("ctx");
  14947. var $1;
  14948. $1=$self._new_((3));
  14949. [$recv($1)._at_put_((1),anObject)
  14950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14951. ,$ctx1.sendIdx["at:put:"]=1
  14952. //>>excludeEnd("ctx");
  14953. ][0];
  14954. [$recv($1)._at_put_((2),anObject2)
  14955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14956. ,$ctx1.sendIdx["at:put:"]=2
  14957. //>>excludeEnd("ctx");
  14958. ][0];
  14959. $recv($1)._at_put_((3),anObject3);
  14960. return $recv($1)._yourself();
  14961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14962. }, function($ctx1) {$ctx1.fill(self,"with:with:with:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
  14963. //>>excludeEnd("ctx");
  14964. }; }),
  14965. $globals.Array.a$cls);
  14966. $core.addMethod(
  14967. $core.method({
  14968. selector: "withAll:",
  14969. protocol: "instance creation",
  14970. //>>excludeStart("ide", pragmas.excludeIdeData);
  14971. args: ["aCollection"],
  14972. source: "withAll: aCollection\x0a\x09| instance index |\x0a\x09index := 1.\x0a\x09instance := self new: aCollection size.\x0a\x09aCollection do: [ :each |\x0a\x09\x09instance at: index put: each.\x0a\x09\x09index := index + 1 ].\x0a\x09^ instance",
  14973. referencedClasses: [],
  14974. //>>excludeEnd("ide");
  14975. pragmas: [],
  14976. messageSends: ["new:", "size", "do:", "at:put:", "+"]
  14977. }, function ($methodClass){ return function (aCollection){
  14978. var self=this,$self=this;
  14979. var instance,index;
  14980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14981. return $core.withContext(function($ctx1) {
  14982. //>>excludeEnd("ctx");
  14983. index=(1);
  14984. instance=$self._new_($recv(aCollection)._size());
  14985. $recv(aCollection)._do_((function(each){
  14986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14987. return $core.withContext(function($ctx2) {
  14988. //>>excludeEnd("ctx");
  14989. $recv(instance)._at_put_(index,each);
  14990. index=$recv(index).__plus((1));
  14991. return index;
  14992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14993. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14994. //>>excludeEnd("ctx");
  14995. }));
  14996. return instance;
  14997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14998. }, function($ctx1) {$ctx1.fill(self,"withAll:",{aCollection:aCollection,instance:instance,index:index})});
  14999. //>>excludeEnd("ctx");
  15000. }; }),
  15001. $globals.Array.a$cls);
  15002. $core.addClass("String", $globals.SequenceableCollection, "Kernel-Collections");
  15003. //>>excludeStart("ide", pragmas.excludeIdeData);
  15004. $globals.String.comment="I am an indexed collection of Characters. Unlike most Smalltalk dialects, Amber doesn't provide the Character class. Instead, elements of a String are single character strings.\x0a\x0aString inherits many useful methods from its hierarchy, such as\x0a\x09`Collection >> #,`";
  15005. //>>excludeEnd("ide");
  15006. $core.addMethod(
  15007. $core.method({
  15008. selector: ",",
  15009. protocol: "copying",
  15010. //>>excludeStart("ide", pragmas.excludeIdeData);
  15011. args: ["aString"],
  15012. source: ", aString\x0a\x09<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09\x09String(self) + aString :\x0a\x09\x09$recv(aString)._appendToString_(String(self))'>",
  15013. referencedClasses: [],
  15014. //>>excludeEnd("ide");
  15015. pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09\x09String(self) + aString :\x0a\x09\x09$recv(aString)._appendToString_(String(self))"]]],
  15016. messageSends: []
  15017. }, function ($methodClass){ return function (aString){
  15018. var self=this,$self=this;
  15019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15020. return $core.withContext(function($ctx1) {
  15021. //>>excludeEnd("ctx");
  15022. return typeof aString === "string" ?
  15023. String(self) + aString :
  15024. $recv(aString)._appendToString_(String(self));
  15025. return self;
  15026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15027. }, function($ctx1) {$ctx1.fill(self,",",{aString:aString})});
  15028. //>>excludeEnd("ctx");
  15029. }; }),
  15030. $globals.String);
  15031. $core.addMethod(
  15032. $core.method({
  15033. selector: "<",
  15034. protocol: "comparing",
  15035. //>>excludeStart("ide", pragmas.excludeIdeData);
  15036. args: ["aString"],
  15037. source: "< aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) < aString :\x0a\x09$recv(aString)._isStringLessThanSelf_(String(self))'>",
  15038. referencedClasses: [],
  15039. //>>excludeEnd("ide");
  15040. pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) < aString :\x0a\x09$recv(aString)._isStringLessThanSelf_(String(self))"]]],
  15041. messageSends: []
  15042. }, function ($methodClass){ return function (aString){
  15043. var self=this,$self=this;
  15044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15045. return $core.withContext(function($ctx1) {
  15046. //>>excludeEnd("ctx");
  15047. return typeof aString === "string" ?
  15048. String(self) < aString :
  15049. $recv(aString)._isStringLessThanSelf_(String(self));
  15050. return self;
  15051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15052. }, function($ctx1) {$ctx1.fill(self,"<",{aString:aString})});
  15053. //>>excludeEnd("ctx");
  15054. }; }),
  15055. $globals.String);
  15056. $core.addMethod(
  15057. $core.method({
  15058. selector: "<=",
  15059. protocol: "comparing",
  15060. //>>excludeStart("ide", pragmas.excludeIdeData);
  15061. args: ["aString"],
  15062. source: "<= aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) <= aString :\x0a\x09$recv(aString)._isStringLessThanOrEqualToSelf_(String(self))'>",
  15063. referencedClasses: [],
  15064. //>>excludeEnd("ide");
  15065. pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) <= aString :\x0a\x09$recv(aString)._isStringLessThanOrEqualToSelf_(String(self))"]]],
  15066. messageSends: []
  15067. }, function ($methodClass){ return function (aString){
  15068. var self=this,$self=this;
  15069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15070. return $core.withContext(function($ctx1) {
  15071. //>>excludeEnd("ctx");
  15072. return typeof aString === "string" ?
  15073. String(self) <= aString :
  15074. $recv(aString)._isStringLessThanOrEqualToSelf_(String(self));
  15075. return self;
  15076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15077. }, function($ctx1) {$ctx1.fill(self,"<=",{aString:aString})});
  15078. //>>excludeEnd("ctx");
  15079. }; }),
  15080. $globals.String);
  15081. $core.addMethod(
  15082. $core.method({
  15083. selector: "=",
  15084. protocol: "comparing",
  15085. //>>excludeStart("ide", pragmas.excludeIdeData);
  15086. args: ["aString"],
  15087. source: "= aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) === aString :\x0a\x09$recv(aString)._isStringEqualToSelf_(String(self))'>",
  15088. referencedClasses: [],
  15089. //>>excludeEnd("ide");
  15090. pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) === aString :\x0a\x09$recv(aString)._isStringEqualToSelf_(String(self))"]]],
  15091. messageSends: []
  15092. }, function ($methodClass){ return function (aString){
  15093. var self=this,$self=this;
  15094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15095. return $core.withContext(function($ctx1) {
  15096. //>>excludeEnd("ctx");
  15097. return typeof aString === "string" ?
  15098. String(self) === aString :
  15099. $recv(aString)._isStringEqualToSelf_(String(self));
  15100. return self;
  15101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15102. }, function($ctx1) {$ctx1.fill(self,"=",{aString:aString})});
  15103. //>>excludeEnd("ctx");
  15104. }; }),
  15105. $globals.String);
  15106. $core.addMethod(
  15107. $core.method({
  15108. selector: "==",
  15109. protocol: "comparing",
  15110. //>>excludeStart("ide", pragmas.excludeIdeData);
  15111. args: ["aString"],
  15112. source: "== aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) === aString :\x0a\x09$recv(aString)._isStringEqualToSelf_(String(self))'>",
  15113. referencedClasses: [],
  15114. //>>excludeEnd("ide");
  15115. pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) === aString :\x0a\x09$recv(aString)._isStringEqualToSelf_(String(self))"]]],
  15116. messageSends: []
  15117. }, function ($methodClass){ return function (aString){
  15118. var self=this,$self=this;
  15119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15120. return $core.withContext(function($ctx1) {
  15121. //>>excludeEnd("ctx");
  15122. return typeof aString === "string" ?
  15123. String(self) === aString :
  15124. $recv(aString)._isStringEqualToSelf_(String(self));
  15125. return self;
  15126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15127. }, function($ctx1) {$ctx1.fill(self,"==",{aString:aString})});
  15128. //>>excludeEnd("ctx");
  15129. }; }),
  15130. $globals.String);
  15131. $core.addMethod(
  15132. $core.method({
  15133. selector: ">",
  15134. protocol: "comparing",
  15135. //>>excludeStart("ide", pragmas.excludeIdeData);
  15136. args: ["aString"],
  15137. source: "> aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) > aString :\x0a\x09$recv(aString)._isStringGreaterThanSelf_(String(self))'>",
  15138. referencedClasses: [],
  15139. //>>excludeEnd("ide");
  15140. pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) > aString :\x0a\x09$recv(aString)._isStringGreaterThanSelf_(String(self))"]]],
  15141. messageSends: []
  15142. }, function ($methodClass){ return function (aString){
  15143. var self=this,$self=this;
  15144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15145. return $core.withContext(function($ctx1) {
  15146. //>>excludeEnd("ctx");
  15147. return typeof aString === "string" ?
  15148. String(self) > aString :
  15149. $recv(aString)._isStringGreaterThanSelf_(String(self));
  15150. return self;
  15151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15152. }, function($ctx1) {$ctx1.fill(self,">",{aString:aString})});
  15153. //>>excludeEnd("ctx");
  15154. }; }),
  15155. $globals.String);
  15156. $core.addMethod(
  15157. $core.method({
  15158. selector: ">=",
  15159. protocol: "comparing",
  15160. //>>excludeStart("ide", pragmas.excludeIdeData);
  15161. args: ["aString"],
  15162. source: ">= aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) >= aString :\x0a\x09$recv(aString)._isStringGreaterThanOrEqualSelf_(String(self))'>",
  15163. referencedClasses: [],
  15164. //>>excludeEnd("ide");
  15165. pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) >= aString :\x0a\x09$recv(aString)._isStringGreaterThanOrEqualSelf_(String(self))"]]],
  15166. messageSends: []
  15167. }, function ($methodClass){ return function (aString){
  15168. var self=this,$self=this;
  15169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15170. return $core.withContext(function($ctx1) {
  15171. //>>excludeEnd("ctx");
  15172. return typeof aString === "string" ?
  15173. String(self) >= aString :
  15174. $recv(aString)._isStringGreaterThanOrEqualSelf_(String(self));
  15175. return self;
  15176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15177. }, function($ctx1) {$ctx1.fill(self,">=",{aString:aString})});
  15178. //>>excludeEnd("ctx");
  15179. }; }),
  15180. $globals.String);
  15181. $core.addMethod(
  15182. $core.method({
  15183. selector: "add:",
  15184. protocol: "adding/removing",
  15185. //>>excludeStart("ide", pragmas.excludeIdeData);
  15186. args: ["anObject"],
  15187. source: "add: anObject\x0a\x09self errorReadOnly",
  15188. referencedClasses: [],
  15189. //>>excludeEnd("ide");
  15190. pragmas: [],
  15191. messageSends: ["errorReadOnly"]
  15192. }, function ($methodClass){ return function (anObject){
  15193. var self=this,$self=this;
  15194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15195. return $core.withContext(function($ctx1) {
  15196. //>>excludeEnd("ctx");
  15197. $self._errorReadOnly();
  15198. return self;
  15199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15200. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject})});
  15201. //>>excludeEnd("ctx");
  15202. }; }),
  15203. $globals.String);
  15204. $core.addMethod(
  15205. $core.method({
  15206. selector: "appendToString:",
  15207. protocol: "copying",
  15208. //>>excludeStart("ide", pragmas.excludeIdeData);
  15209. args: ["aString"],
  15210. source: "appendToString: aString\x0a\x09<inlineJS: 'return aString + self'>",
  15211. referencedClasses: [],
  15212. //>>excludeEnd("ide");
  15213. pragmas: [["inlineJS:", ["return aString + self"]]],
  15214. messageSends: []
  15215. }, function ($methodClass){ return function (aString){
  15216. var self=this,$self=this;
  15217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15218. return $core.withContext(function($ctx1) {
  15219. //>>excludeEnd("ctx");
  15220. return aString + self;
  15221. return self;
  15222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15223. }, function($ctx1) {$ctx1.fill(self,"appendToString:",{aString:aString})});
  15224. //>>excludeEnd("ctx");
  15225. }; }),
  15226. $globals.String);
  15227. $core.addMethod(
  15228. $core.method({
  15229. selector: "asJavaScriptMethodName",
  15230. protocol: "converting",
  15231. //>>excludeStart("ide", pragmas.excludeIdeData);
  15232. args: [],
  15233. source: "asJavaScriptMethodName\x0a\x09<inlineJS: 'return $core.st2js(self)'>",
  15234. referencedClasses: [],
  15235. //>>excludeEnd("ide");
  15236. pragmas: [["inlineJS:", ["return $core.st2js(self)"]]],
  15237. messageSends: []
  15238. }, function ($methodClass){ return function (){
  15239. var self=this,$self=this;
  15240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15241. return $core.withContext(function($ctx1) {
  15242. //>>excludeEnd("ctx");
  15243. return $core.st2js(self);
  15244. return self;
  15245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15246. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptMethodName",{})});
  15247. //>>excludeEnd("ctx");
  15248. }; }),
  15249. $globals.String);
  15250. $core.addMethod(
  15251. $core.method({
  15252. selector: "asJavaScriptObject",
  15253. protocol: "converting",
  15254. //>>excludeStart("ide", pragmas.excludeIdeData);
  15255. args: [],
  15256. source: "asJavaScriptObject\x0a\x09^ self",
  15257. referencedClasses: [],
  15258. //>>excludeEnd("ide");
  15259. pragmas: [],
  15260. messageSends: []
  15261. }, function ($methodClass){ return function (){
  15262. var self=this,$self=this;
  15263. return self;
  15264. }; }),
  15265. $globals.String);
  15266. $core.addMethod(
  15267. $core.method({
  15268. selector: "asJavaScriptSource",
  15269. protocol: "converting",
  15270. //>>excludeStart("ide", pragmas.excludeIdeData);
  15271. args: [],
  15272. source: "asJavaScriptSource\x0a\x09<inlineJS: '\x0a\x09\x09if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)\x0a\x09\x09\x09return \x22\x5c\x22\x22 + self.replace(/[\x5cx00-\x5cx1f\x22\x5c\x5c\x5cx7f-\x5cx9f]/g, function(ch){var c=ch.charCodeAt(0);return \x22\x5c\x5cx\x22+(\x220\x22+c.toString(16)).slice(-2)}) + \x22\x5c\x22\x22;\x0a\x09\x09else\x0a\x09\x09\x09return \x22\x5c\x22\x22 + self + \x22\x5c\x22\x22;\x0a\x09'>",
  15273. referencedClasses: [],
  15274. //>>excludeEnd("ide");
  15275. pragmas: [["inlineJS:", ["\x0a\x09\x09if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)\x0a\x09\x09\x09return \x22\x5c\x22\x22 + self.replace(/[\x5cx00-\x5cx1f\x22\x5c\x5c\x5cx7f-\x5cx9f]/g, function(ch){var c=ch.charCodeAt(0);return \x22\x5c\x5cx\x22+(\x220\x22+c.toString(16)).slice(-2)}) + \x22\x5c\x22\x22;\x0a\x09\x09else\x0a\x09\x09\x09return \x22\x5c\x22\x22 + self + \x22\x5c\x22\x22;\x0a\x09"]]],
  15276. messageSends: []
  15277. }, function ($methodClass){ return function (){
  15278. var self=this,$self=this;
  15279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15280. return $core.withContext(function($ctx1) {
  15281. //>>excludeEnd("ctx");
  15282. if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)
  15283. return "\"" + self.replace(/[\x00-\x1f"\\\x7f-\x9f]/g, function(ch){var c=ch.charCodeAt(0);return "\\x"+("0"+c.toString(16)).slice(-2)}) + "\"";
  15284. else
  15285. return "\"" + self + "\"";
  15286. ;
  15287. return self;
  15288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15289. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  15290. //>>excludeEnd("ctx");
  15291. }; }),
  15292. $globals.String);
  15293. $core.addMethod(
  15294. $core.method({
  15295. selector: "asLowercase",
  15296. protocol: "converting",
  15297. //>>excludeStart("ide", pragmas.excludeIdeData);
  15298. args: [],
  15299. source: "asLowercase\x0a\x09<inlineJS: 'return self.toLowerCase()'>",
  15300. referencedClasses: [],
  15301. //>>excludeEnd("ide");
  15302. pragmas: [["inlineJS:", ["return self.toLowerCase()"]]],
  15303. messageSends: []
  15304. }, function ($methodClass){ return function (){
  15305. var self=this,$self=this;
  15306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15307. return $core.withContext(function($ctx1) {
  15308. //>>excludeEnd("ctx");
  15309. return self.toLowerCase();
  15310. return self;
  15311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15312. }, function($ctx1) {$ctx1.fill(self,"asLowercase",{})});
  15313. //>>excludeEnd("ctx");
  15314. }; }),
  15315. $globals.String);
  15316. $core.addMethod(
  15317. $core.method({
  15318. selector: "asMutator",
  15319. protocol: "converting",
  15320. //>>excludeStart("ide", pragmas.excludeIdeData);
  15321. args: [],
  15322. source: "asMutator\x0a\x09\x22Answer a setter selector. For example,\x0a\x09#name asMutator returns #name:\x22\x0a\x0a\x09self last = ':' ifFalse: [ ^ self, ':' ].\x0a\x09^ self",
  15323. referencedClasses: [],
  15324. //>>excludeEnd("ide");
  15325. pragmas: [],
  15326. messageSends: ["ifFalse:", "=", "last", ","]
  15327. }, function ($methodClass){ return function (){
  15328. var self=this,$self=this;
  15329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15330. return $core.withContext(function($ctx1) {
  15331. //>>excludeEnd("ctx");
  15332. if(!$core.assert($recv($self._last()).__eq(":"))){
  15333. return $self.__comma(":");
  15334. }
  15335. return self;
  15336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15337. }, function($ctx1) {$ctx1.fill(self,"asMutator",{})});
  15338. //>>excludeEnd("ctx");
  15339. }; }),
  15340. $globals.String);
  15341. $core.addMethod(
  15342. $core.method({
  15343. selector: "asNumber",
  15344. protocol: "converting",
  15345. //>>excludeStart("ide", pragmas.excludeIdeData);
  15346. args: [],
  15347. source: "asNumber\x0a\x09<inlineJS: 'return Number(self)'>",
  15348. referencedClasses: [],
  15349. //>>excludeEnd("ide");
  15350. pragmas: [["inlineJS:", ["return Number(self)"]]],
  15351. messageSends: []
  15352. }, function ($methodClass){ return function (){
  15353. var self=this,$self=this;
  15354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15355. return $core.withContext(function($ctx1) {
  15356. //>>excludeEnd("ctx");
  15357. return Number(self);
  15358. return self;
  15359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15360. }, function($ctx1) {$ctx1.fill(self,"asNumber",{})});
  15361. //>>excludeEnd("ctx");
  15362. }; }),
  15363. $globals.String);
  15364. $core.addMethod(
  15365. $core.method({
  15366. selector: "asRegexp",
  15367. protocol: "converting",
  15368. //>>excludeStart("ide", pragmas.excludeIdeData);
  15369. args: [],
  15370. source: "asRegexp\x0a\x09^ RegularExpression fromString: self",
  15371. referencedClasses: ["RegularExpression"],
  15372. //>>excludeEnd("ide");
  15373. pragmas: [],
  15374. messageSends: ["fromString:"]
  15375. }, function ($methodClass){ return function (){
  15376. var self=this,$self=this;
  15377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15378. return $core.withContext(function($ctx1) {
  15379. //>>excludeEnd("ctx");
  15380. return $recv($globals.RegularExpression)._fromString_(self);
  15381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15382. }, function($ctx1) {$ctx1.fill(self,"asRegexp",{})});
  15383. //>>excludeEnd("ctx");
  15384. }; }),
  15385. $globals.String);
  15386. $core.addMethod(
  15387. $core.method({
  15388. selector: "asString",
  15389. protocol: "converting",
  15390. //>>excludeStart("ide", pragmas.excludeIdeData);
  15391. args: [],
  15392. source: "asString\x0a\x09^ self",
  15393. referencedClasses: [],
  15394. //>>excludeEnd("ide");
  15395. pragmas: [],
  15396. messageSends: []
  15397. }, function ($methodClass){ return function (){
  15398. var self=this,$self=this;
  15399. return self;
  15400. }; }),
  15401. $globals.String);
  15402. $core.addMethod(
  15403. $core.method({
  15404. selector: "asSymbol",
  15405. protocol: "converting",
  15406. //>>excludeStart("ide", pragmas.excludeIdeData);
  15407. args: [],
  15408. source: "asSymbol\x0a\x09^ self",
  15409. referencedClasses: [],
  15410. //>>excludeEnd("ide");
  15411. pragmas: [],
  15412. messageSends: []
  15413. }, function ($methodClass){ return function (){
  15414. var self=this,$self=this;
  15415. return self;
  15416. }; }),
  15417. $globals.String);
  15418. $core.addMethod(
  15419. $core.method({
  15420. selector: "asSymbolPrintOn:",
  15421. protocol: "printing",
  15422. //>>excludeStart("ide", pragmas.excludeIdeData);
  15423. args: ["aStream"],
  15424. source: "asSymbolPrintOn: aStream\x0a\x09aStream nextPutAll: '#'.\x0a\x09self asString isSelector\x0a\x09\x09ifTrue: [ aStream nextPut: self ]\x0a\x09\x09ifFalse: [ self printOn: aStream ]",
  15425. referencedClasses: [],
  15426. //>>excludeEnd("ide");
  15427. pragmas: [],
  15428. messageSends: ["nextPutAll:", "ifTrue:ifFalse:", "isSelector", "asString", "nextPut:", "printOn:"]
  15429. }, function ($methodClass){ return function (aStream){
  15430. var self=this,$self=this;
  15431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15432. return $core.withContext(function($ctx1) {
  15433. //>>excludeEnd("ctx");
  15434. $recv(aStream)._nextPutAll_("#");
  15435. if($core.assert($recv($self._asString())._isSelector())){
  15436. $recv(aStream)._nextPut_(self);
  15437. } else {
  15438. $self._printOn_(aStream);
  15439. }
  15440. return self;
  15441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15442. }, function($ctx1) {$ctx1.fill(self,"asSymbolPrintOn:",{aStream:aStream})});
  15443. //>>excludeEnd("ctx");
  15444. }; }),
  15445. $globals.String);
  15446. $core.addMethod(
  15447. $core.method({
  15448. selector: "asUppercase",
  15449. protocol: "converting",
  15450. //>>excludeStart("ide", pragmas.excludeIdeData);
  15451. args: [],
  15452. source: "asUppercase\x0a\x09<inlineJS: 'return self.toUpperCase()'>",
  15453. referencedClasses: [],
  15454. //>>excludeEnd("ide");
  15455. pragmas: [["inlineJS:", ["return self.toUpperCase()"]]],
  15456. messageSends: []
  15457. }, function ($methodClass){ return function (){
  15458. var self=this,$self=this;
  15459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15460. return $core.withContext(function($ctx1) {
  15461. //>>excludeEnd("ctx");
  15462. return self.toUpperCase();
  15463. return self;
  15464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15465. }, function($ctx1) {$ctx1.fill(self,"asUppercase",{})});
  15466. //>>excludeEnd("ctx");
  15467. }; }),
  15468. $globals.String);
  15469. $core.addMethod(
  15470. $core.method({
  15471. selector: "asciiValue",
  15472. protocol: "accessing",
  15473. //>>excludeStart("ide", pragmas.excludeIdeData);
  15474. args: [],
  15475. source: "asciiValue\x0a\x09<inlineJS: 'return self.charCodeAt(0);'>",
  15476. referencedClasses: [],
  15477. //>>excludeEnd("ide");
  15478. pragmas: [["inlineJS:", ["return self.charCodeAt(0);"]]],
  15479. messageSends: []
  15480. }, function ($methodClass){ return function (){
  15481. var self=this,$self=this;
  15482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15483. return $core.withContext(function($ctx1) {
  15484. //>>excludeEnd("ctx");
  15485. return self.charCodeAt(0);;
  15486. return self;
  15487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15488. }, function($ctx1) {$ctx1.fill(self,"asciiValue",{})});
  15489. //>>excludeEnd("ctx");
  15490. }; }),
  15491. $globals.String);
  15492. $core.addMethod(
  15493. $core.method({
  15494. selector: "at:ifAbsent:",
  15495. protocol: "accessing",
  15496. //>>excludeStart("ide", pragmas.excludeIdeData);
  15497. args: ["anIndex", "aBlock"],
  15498. source: "at: anIndex ifAbsent: aBlock\x0a\x09<inlineJS: 'return String(self)[anIndex - 1] || aBlock._value()'>",
  15499. referencedClasses: [],
  15500. //>>excludeEnd("ide");
  15501. pragmas: [["inlineJS:", ["return String(self)[anIndex - 1] || aBlock._value()"]]],
  15502. messageSends: []
  15503. }, function ($methodClass){ return function (anIndex,aBlock){
  15504. var self=this,$self=this;
  15505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15506. return $core.withContext(function($ctx1) {
  15507. //>>excludeEnd("ctx");
  15508. return String(self)[anIndex - 1] || aBlock._value();
  15509. return self;
  15510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15511. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock})});
  15512. //>>excludeEnd("ctx");
  15513. }; }),
  15514. $globals.String);
  15515. $core.addMethod(
  15516. $core.method({
  15517. selector: "at:ifPresent:ifAbsent:",
  15518. protocol: "accessing",
  15519. //>>excludeStart("ide", pragmas.excludeIdeData);
  15520. args: ["anIndex", "aBlock", "anotherBlock"],
  15521. source: "at: anIndex ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09<inlineJS: '\x0a\x09\x09var result = String(self)[anIndex - 1];\x0a\x09\x09return result ? aBlock._value_(result) : anotherBlock._value();\x0a\x09'>",
  15522. referencedClasses: [],
  15523. //>>excludeEnd("ide");
  15524. pragmas: [["inlineJS:", ["\x0a\x09\x09var result = String(self)[anIndex - 1];\x0a\x09\x09return result ? aBlock._value_(result) : anotherBlock._value();\x0a\x09"]]],
  15525. messageSends: []
  15526. }, function ($methodClass){ return function (anIndex,aBlock,anotherBlock){
  15527. var self=this,$self=this;
  15528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15529. return $core.withContext(function($ctx1) {
  15530. //>>excludeEnd("ctx");
  15531. var result = String(self)[anIndex - 1];
  15532. return result ? aBlock._value_(result) : anotherBlock._value();
  15533. ;
  15534. return self;
  15535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15536. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock})});
  15537. //>>excludeEnd("ctx");
  15538. }; }),
  15539. $globals.String);
  15540. $core.addMethod(
  15541. $core.method({
  15542. selector: "at:put:",
  15543. protocol: "accessing",
  15544. //>>excludeStart("ide", pragmas.excludeIdeData);
  15545. args: ["anIndex", "anObject"],
  15546. source: "at: anIndex put: anObject\x0a\x09self errorReadOnly",
  15547. referencedClasses: [],
  15548. //>>excludeEnd("ide");
  15549. pragmas: [],
  15550. messageSends: ["errorReadOnly"]
  15551. }, function ($methodClass){ return function (anIndex,anObject){
  15552. var self=this,$self=this;
  15553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15554. return $core.withContext(function($ctx1) {
  15555. //>>excludeEnd("ctx");
  15556. $self._errorReadOnly();
  15557. return self;
  15558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15559. }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject})});
  15560. //>>excludeEnd("ctx");
  15561. }; }),
  15562. $globals.String);
  15563. $core.addMethod(
  15564. $core.method({
  15565. selector: "capitalized",
  15566. protocol: "converting",
  15567. //>>excludeStart("ide", pragmas.excludeIdeData);
  15568. args: [],
  15569. source: "capitalized\x0a\x09^ self ifNotEmpty: [ self first asUppercase, self allButFirst ]",
  15570. referencedClasses: [],
  15571. //>>excludeEnd("ide");
  15572. pragmas: [],
  15573. messageSends: ["ifNotEmpty:", ",", "asUppercase", "first", "allButFirst"]
  15574. }, function ($methodClass){ return function (){
  15575. var self=this,$self=this;
  15576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15577. return $core.withContext(function($ctx1) {
  15578. //>>excludeEnd("ctx");
  15579. return $self._ifNotEmpty_((function(){
  15580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15581. return $core.withContext(function($ctx2) {
  15582. //>>excludeEnd("ctx");
  15583. return $recv($recv($self._first())._asUppercase()).__comma($self._allButFirst());
  15584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15585. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  15586. //>>excludeEnd("ctx");
  15587. }));
  15588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15589. }, function($ctx1) {$ctx1.fill(self,"capitalized",{})});
  15590. //>>excludeEnd("ctx");
  15591. }; }),
  15592. $globals.String);
  15593. $core.addMethod(
  15594. $core.method({
  15595. selector: "charCodeAt:",
  15596. protocol: "accessing",
  15597. //>>excludeStart("ide", pragmas.excludeIdeData);
  15598. args: ["anInteger"],
  15599. source: "charCodeAt: anInteger\x0a\x09<inlineJS: 'return self.charCodeAt(anInteger - 1)'>",
  15600. referencedClasses: [],
  15601. //>>excludeEnd("ide");
  15602. pragmas: [["inlineJS:", ["return self.charCodeAt(anInteger - 1)"]]],
  15603. messageSends: []
  15604. }, function ($methodClass){ return function (anInteger){
  15605. var self=this,$self=this;
  15606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15607. return $core.withContext(function($ctx1) {
  15608. //>>excludeEnd("ctx");
  15609. return self.charCodeAt(anInteger - 1);
  15610. return self;
  15611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15612. }, function($ctx1) {$ctx1.fill(self,"charCodeAt:",{anInteger:anInteger})});
  15613. //>>excludeEnd("ctx");
  15614. }; }),
  15615. $globals.String);
  15616. $core.addMethod(
  15617. $core.method({
  15618. selector: "copyFrom:to:",
  15619. protocol: "copying",
  15620. //>>excludeStart("ide", pragmas.excludeIdeData);
  15621. args: ["anIndex", "anotherIndex"],
  15622. source: "copyFrom: anIndex to: anotherIndex\x0a\x09<inlineJS: 'return self.substring(anIndex - 1, anotherIndex)'>",
  15623. referencedClasses: [],
  15624. //>>excludeEnd("ide");
  15625. pragmas: [["inlineJS:", ["return self.substring(anIndex - 1, anotherIndex)"]]],
  15626. messageSends: []
  15627. }, function ($methodClass){ return function (anIndex,anotherIndex){
  15628. var self=this,$self=this;
  15629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15630. return $core.withContext(function($ctx1) {
  15631. //>>excludeEnd("ctx");
  15632. return self.substring(anIndex - 1, anotherIndex);
  15633. return self;
  15634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15635. }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex})});
  15636. //>>excludeEnd("ctx");
  15637. }; }),
  15638. $globals.String);
  15639. $core.addMethod(
  15640. $core.method({
  15641. selector: "copyWithFirst:",
  15642. protocol: "copying",
  15643. //>>excludeStart("ide", pragmas.excludeIdeData);
  15644. args: ["anObject"],
  15645. source: "copyWithFirst: anObject\x0a\x09(anObject isString and: [ anObject size = 1 ]) \x22character is one-char string in JS\x22\x0a\x09\x09ifFalse: [ self error: 'Cannot put ', anObject class name, ' in a String' ].\x0a\x09^ anObject, self",
  15646. referencedClasses: [],
  15647. //>>excludeEnd("ide");
  15648. pragmas: [],
  15649. messageSends: ["ifFalse:", "and:", "isString", "=", "size", "error:", ",", "name", "class"]
  15650. }, function ($methodClass){ return function (anObject){
  15651. var self=this,$self=this;
  15652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15653. return $core.withContext(function($ctx1) {
  15654. //>>excludeEnd("ctx");
  15655. var $1;
  15656. if($core.assert($recv(anObject)._isString())){
  15657. $1=$recv($recv(anObject)._size()).__eq((1));
  15658. } else {
  15659. $1=false;
  15660. }
  15661. if(!$core.assert($1)){
  15662. $self._error_([$recv(["Cannot put ".__comma($recv($recv(anObject)._class())._name())
  15663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15664. ,$ctx1.sendIdx[","]=2
  15665. //>>excludeEnd("ctx");
  15666. ][0]).__comma(" in a String")
  15667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15668. ,$ctx1.sendIdx[","]=1
  15669. //>>excludeEnd("ctx");
  15670. ][0]);
  15671. }
  15672. return $recv(anObject).__comma(self);
  15673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15674. }, function($ctx1) {$ctx1.fill(self,"copyWithFirst:",{anObject:anObject})});
  15675. //>>excludeEnd("ctx");
  15676. }; }),
  15677. $globals.String);
  15678. $core.addMethod(
  15679. $core.method({
  15680. selector: "crlfSanitized",
  15681. protocol: "converting",
  15682. //>>excludeStart("ide", pragmas.excludeIdeData);
  15683. args: [],
  15684. source: "crlfSanitized\x0a\x09^ self lines join: String lf",
  15685. referencedClasses: ["String"],
  15686. //>>excludeEnd("ide");
  15687. pragmas: [],
  15688. messageSends: ["join:", "lines", "lf"]
  15689. }, function ($methodClass){ return function (){
  15690. var self=this,$self=this;
  15691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15692. return $core.withContext(function($ctx1) {
  15693. //>>excludeEnd("ctx");
  15694. return $recv($self._lines())._join_($recv($globals.String)._lf());
  15695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15696. }, function($ctx1) {$ctx1.fill(self,"crlfSanitized",{})});
  15697. //>>excludeEnd("ctx");
  15698. }; }),
  15699. $globals.String);
  15700. $core.addMethod(
  15701. $core.method({
  15702. selector: "deepCopy",
  15703. protocol: "copying",
  15704. //>>excludeStart("ide", pragmas.excludeIdeData);
  15705. args: [],
  15706. source: "deepCopy\x0a\x09^ self shallowCopy",
  15707. referencedClasses: [],
  15708. //>>excludeEnd("ide");
  15709. pragmas: [],
  15710. messageSends: ["shallowCopy"]
  15711. }, function ($methodClass){ return function (){
  15712. var self=this,$self=this;
  15713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15714. return $core.withContext(function($ctx1) {
  15715. //>>excludeEnd("ctx");
  15716. return $self._shallowCopy();
  15717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15718. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})});
  15719. //>>excludeEnd("ctx");
  15720. }; }),
  15721. $globals.String);
  15722. $core.addMethod(
  15723. $core.method({
  15724. selector: "errorReadOnly",
  15725. protocol: "error handling",
  15726. //>>excludeStart("ide", pragmas.excludeIdeData);
  15727. args: [],
  15728. source: "errorReadOnly\x0a\x09self error: 'Object is read-only'",
  15729. referencedClasses: [],
  15730. //>>excludeEnd("ide");
  15731. pragmas: [],
  15732. messageSends: ["error:"]
  15733. }, function ($methodClass){ return function (){
  15734. var self=this,$self=this;
  15735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15736. return $core.withContext(function($ctx1) {
  15737. //>>excludeEnd("ctx");
  15738. $self._error_("Object is read-only");
  15739. return self;
  15740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15741. }, function($ctx1) {$ctx1.fill(self,"errorReadOnly",{})});
  15742. //>>excludeEnd("ctx");
  15743. }; }),
  15744. $globals.String);
  15745. $core.addMethod(
  15746. $core.method({
  15747. selector: "escaped",
  15748. protocol: "converting",
  15749. //>>excludeStart("ide", pragmas.excludeIdeData);
  15750. args: [],
  15751. source: "escaped\x0a\x09<inlineJS: 'return escape(self)'>",
  15752. referencedClasses: [],
  15753. //>>excludeEnd("ide");
  15754. pragmas: [["inlineJS:", ["return escape(self)"]]],
  15755. messageSends: []
  15756. }, function ($methodClass){ return function (){
  15757. var self=this,$self=this;
  15758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15759. return $core.withContext(function($ctx1) {
  15760. //>>excludeEnd("ctx");
  15761. return escape(self);
  15762. return self;
  15763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15764. }, function($ctx1) {$ctx1.fill(self,"escaped",{})});
  15765. //>>excludeEnd("ctx");
  15766. }; }),
  15767. $globals.String);
  15768. $core.addMethod(
  15769. $core.method({
  15770. selector: "includesSubString:",
  15771. protocol: "testing",
  15772. //>>excludeStart("ide", pragmas.excludeIdeData);
  15773. args: ["subString"],
  15774. source: "includesSubString: subString\x0a\x09<inlineJS: 'return self.indexOf(subString) != -1'>",
  15775. referencedClasses: [],
  15776. //>>excludeEnd("ide");
  15777. pragmas: [["inlineJS:", ["return self.indexOf(subString) != -1"]]],
  15778. messageSends: []
  15779. }, function ($methodClass){ return function (subString){
  15780. var self=this,$self=this;
  15781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15782. return $core.withContext(function($ctx1) {
  15783. //>>excludeEnd("ctx");
  15784. return self.indexOf(subString) != -1;
  15785. return self;
  15786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15787. }, function($ctx1) {$ctx1.fill(self,"includesSubString:",{subString:subString})});
  15788. //>>excludeEnd("ctx");
  15789. }; }),
  15790. $globals.String);
  15791. $core.addMethod(
  15792. $core.method({
  15793. selector: "isCapitalized",
  15794. protocol: "testing",
  15795. //>>excludeStart("ide", pragmas.excludeIdeData);
  15796. args: [],
  15797. source: "isCapitalized\x0a\x09^ self first asUppercase == self first",
  15798. referencedClasses: [],
  15799. //>>excludeEnd("ide");
  15800. pragmas: [],
  15801. messageSends: ["==", "asUppercase", "first"]
  15802. }, function ($methodClass){ return function (){
  15803. var self=this,$self=this;
  15804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15805. return $core.withContext(function($ctx1) {
  15806. //>>excludeEnd("ctx");
  15807. return $recv($recv([$self._first()
  15808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15809. ,$ctx1.sendIdx["first"]=1
  15810. //>>excludeEnd("ctx");
  15811. ][0])._asUppercase()).__eq_eq($self._first());
  15812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15813. }, function($ctx1) {$ctx1.fill(self,"isCapitalized",{})});
  15814. //>>excludeEnd("ctx");
  15815. }; }),
  15816. $globals.String);
  15817. $core.addMethod(
  15818. $core.method({
  15819. selector: "isImmutable",
  15820. protocol: "testing",
  15821. //>>excludeStart("ide", pragmas.excludeIdeData);
  15822. args: [],
  15823. source: "isImmutable\x0a\x09^ true",
  15824. referencedClasses: [],
  15825. //>>excludeEnd("ide");
  15826. pragmas: [],
  15827. messageSends: []
  15828. }, function ($methodClass){ return function (){
  15829. var self=this,$self=this;
  15830. return true;
  15831. }; }),
  15832. $globals.String);
  15833. $core.addMethod(
  15834. $core.method({
  15835. selector: "isSelector",
  15836. protocol: "testing",
  15837. //>>excludeStart("ide", pragmas.excludeIdeData);
  15838. args: [],
  15839. source: "isSelector\x0a<inlineJS:\x0a\x09'return !!self.match(/^([a-zA-Z][a-zA-Z0-9]*|[\x5c\x5c+*/=><,@%~|&-]+|([a-zA-Z][a-zA-Z0-9]*\x5c:)+)$/)'\x0a>",
  15840. referencedClasses: [],
  15841. //>>excludeEnd("ide");
  15842. pragmas: [["inlineJS:", ["return !!self.match(/^([a-zA-Z][a-zA-Z0-9]*|[\x5c\x5c+*/=><,@%~|&-]+|([a-zA-Z][a-zA-Z0-9]*\x5c:)+)$/)"]]],
  15843. messageSends: []
  15844. }, function ($methodClass){ return function (){
  15845. var self=this,$self=this;
  15846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15847. return $core.withContext(function($ctx1) {
  15848. //>>excludeEnd("ctx");
  15849. return !!self.match(/^([a-zA-Z][a-zA-Z0-9]*|[\\+*/=><,@%~|&-]+|([a-zA-Z][a-zA-Z0-9]*\:)+)$/);
  15850. return self;
  15851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15852. }, function($ctx1) {$ctx1.fill(self,"isSelector",{})});
  15853. //>>excludeEnd("ctx");
  15854. }; }),
  15855. $globals.String);
  15856. $core.addMethod(
  15857. $core.method({
  15858. selector: "isString",
  15859. protocol: "testing",
  15860. //>>excludeStart("ide", pragmas.excludeIdeData);
  15861. args: [],
  15862. source: "isString\x0a\x09^ true",
  15863. referencedClasses: [],
  15864. //>>excludeEnd("ide");
  15865. pragmas: [],
  15866. messageSends: []
  15867. }, function ($methodClass){ return function (){
  15868. var self=this,$self=this;
  15869. return true;
  15870. }; }),
  15871. $globals.String);
  15872. $core.addMethod(
  15873. $core.method({
  15874. selector: "isStringEqualToSelf:",
  15875. protocol: "comparing",
  15876. //>>excludeStart("ide", pragmas.excludeIdeData);
  15877. args: ["aString"],
  15878. source: "isStringEqualToSelf: aString\x0a\x09<inlineJS: 'return aString === String(self)'>",
  15879. referencedClasses: [],
  15880. //>>excludeEnd("ide");
  15881. pragmas: [["inlineJS:", ["return aString === String(self)"]]],
  15882. messageSends: []
  15883. }, function ($methodClass){ return function (aString){
  15884. var self=this,$self=this;
  15885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15886. return $core.withContext(function($ctx1) {
  15887. //>>excludeEnd("ctx");
  15888. return aString === String(self);
  15889. return self;
  15890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15891. }, function($ctx1) {$ctx1.fill(self,"isStringEqualToSelf:",{aString:aString})});
  15892. //>>excludeEnd("ctx");
  15893. }; }),
  15894. $globals.String);
  15895. $core.addMethod(
  15896. $core.method({
  15897. selector: "isStringGreaterThanOrEqualToSelf:",
  15898. protocol: "comparing",
  15899. //>>excludeStart("ide", pragmas.excludeIdeData);
  15900. args: ["aString"],
  15901. source: "isStringGreaterThanOrEqualToSelf: aString\x0a\x09<inlineJS: 'return aString >= self'>",
  15902. referencedClasses: [],
  15903. //>>excludeEnd("ide");
  15904. pragmas: [["inlineJS:", ["return aString >= self"]]],
  15905. messageSends: []
  15906. }, function ($methodClass){ return function (aString){
  15907. var self=this,$self=this;
  15908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15909. return $core.withContext(function($ctx1) {
  15910. //>>excludeEnd("ctx");
  15911. return aString >= self;
  15912. return self;
  15913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15914. }, function($ctx1) {$ctx1.fill(self,"isStringGreaterThanOrEqualToSelf:",{aString:aString})});
  15915. //>>excludeEnd("ctx");
  15916. }; }),
  15917. $globals.String);
  15918. $core.addMethod(
  15919. $core.method({
  15920. selector: "isStringGreaterThanSelf:",
  15921. protocol: "comparing",
  15922. //>>excludeStart("ide", pragmas.excludeIdeData);
  15923. args: ["aString"],
  15924. source: "isStringGreaterThanSelf: aString\x0a\x09<inlineJS: 'return aString > self'>",
  15925. referencedClasses: [],
  15926. //>>excludeEnd("ide");
  15927. pragmas: [["inlineJS:", ["return aString > self"]]],
  15928. messageSends: []
  15929. }, function ($methodClass){ return function (aString){
  15930. var self=this,$self=this;
  15931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15932. return $core.withContext(function($ctx1) {
  15933. //>>excludeEnd("ctx");
  15934. return aString > self;
  15935. return self;
  15936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15937. }, function($ctx1) {$ctx1.fill(self,"isStringGreaterThanSelf:",{aString:aString})});
  15938. //>>excludeEnd("ctx");
  15939. }; }),
  15940. $globals.String);
  15941. $core.addMethod(
  15942. $core.method({
  15943. selector: "isStringLessThanOrEqualToSelf:",
  15944. protocol: "comparing",
  15945. //>>excludeStart("ide", pragmas.excludeIdeData);
  15946. args: ["aString"],
  15947. source: "isStringLessThanOrEqualToSelf: aString\x0a\x09<inlineJS: 'return aString <= self'>",
  15948. referencedClasses: [],
  15949. //>>excludeEnd("ide");
  15950. pragmas: [["inlineJS:", ["return aString <= self"]]],
  15951. messageSends: []
  15952. }, function ($methodClass){ return function (aString){
  15953. var self=this,$self=this;
  15954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15955. return $core.withContext(function($ctx1) {
  15956. //>>excludeEnd("ctx");
  15957. return aString <= self;
  15958. return self;
  15959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15960. }, function($ctx1) {$ctx1.fill(self,"isStringLessThanOrEqualToSelf:",{aString:aString})});
  15961. //>>excludeEnd("ctx");
  15962. }; }),
  15963. $globals.String);
  15964. $core.addMethod(
  15965. $core.method({
  15966. selector: "isStringLessThanSelf:",
  15967. protocol: "comparing",
  15968. //>>excludeStart("ide", pragmas.excludeIdeData);
  15969. args: ["aString"],
  15970. source: "isStringLessThanSelf: aString\x0a\x09<inlineJS: 'return aString < self'>",
  15971. referencedClasses: [],
  15972. //>>excludeEnd("ide");
  15973. pragmas: [["inlineJS:", ["return aString < self"]]],
  15974. messageSends: []
  15975. }, function ($methodClass){ return function (aString){
  15976. var self=this,$self=this;
  15977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15978. return $core.withContext(function($ctx1) {
  15979. //>>excludeEnd("ctx");
  15980. return aString < self;
  15981. return self;
  15982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15983. }, function($ctx1) {$ctx1.fill(self,"isStringLessThanSelf:",{aString:aString})});
  15984. //>>excludeEnd("ctx");
  15985. }; }),
  15986. $globals.String);
  15987. $core.addMethod(
  15988. $core.method({
  15989. selector: "isVowel",
  15990. protocol: "testing",
  15991. //>>excludeStart("ide", pragmas.excludeIdeData);
  15992. args: [],
  15993. source: "isVowel\x0a\x09\x22Answer true if the receiver is a one character string containing a voyel\x22\x0a\x09\x0a\x09^ self size = 1 and: [ 'aeiou' includes: self asLowercase ]",
  15994. referencedClasses: [],
  15995. //>>excludeEnd("ide");
  15996. pragmas: [],
  15997. messageSends: ["and:", "=", "size", "includes:", "asLowercase"]
  15998. }, function ($methodClass){ return function (){
  15999. var self=this,$self=this;
  16000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16001. return $core.withContext(function($ctx1) {
  16002. //>>excludeEnd("ctx");
  16003. if($core.assert($recv($self._size()).__eq((1)))){
  16004. return "aeiou"._includes_($self._asLowercase());
  16005. } else {
  16006. return false;
  16007. }
  16008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16009. }, function($ctx1) {$ctx1.fill(self,"isVowel",{})});
  16010. //>>excludeEnd("ctx");
  16011. }; }),
  16012. $globals.String);
  16013. $core.addMethod(
  16014. $core.method({
  16015. selector: "join:",
  16016. protocol: "split join",
  16017. //>>excludeStart("ide", pragmas.excludeIdeData);
  16018. args: ["aCollection"],
  16019. source: "join: aCollection\x0a\x09^ String\x0a\x09\x09streamContents: [ :stream | aCollection\x0a\x09\x09\x09\x09do: [ :each | stream nextPutAll: each asString ]\x0a\x09\x09\x09\x09separatedBy: [ stream nextPutAll: self ]]",
  16020. referencedClasses: ["String"],
  16021. //>>excludeEnd("ide");
  16022. pragmas: [],
  16023. messageSends: ["streamContents:", "do:separatedBy:", "nextPutAll:", "asString"]
  16024. }, function ($methodClass){ return function (aCollection){
  16025. var self=this,$self=this;
  16026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16027. return $core.withContext(function($ctx1) {
  16028. //>>excludeEnd("ctx");
  16029. return $recv($globals.String)._streamContents_((function(stream){
  16030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16031. return $core.withContext(function($ctx2) {
  16032. //>>excludeEnd("ctx");
  16033. return $recv(aCollection)._do_separatedBy_((function(each){
  16034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16035. return $core.withContext(function($ctx3) {
  16036. //>>excludeEnd("ctx");
  16037. return [$recv(stream)._nextPutAll_($recv(each)._asString())
  16038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16039. ,$ctx3.sendIdx["nextPutAll:"]=1
  16040. //>>excludeEnd("ctx");
  16041. ][0];
  16042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16043. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  16044. //>>excludeEnd("ctx");
  16045. }),(function(){
  16046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16047. return $core.withContext(function($ctx3) {
  16048. //>>excludeEnd("ctx");
  16049. return $recv(stream)._nextPutAll_(self);
  16050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16051. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  16052. //>>excludeEnd("ctx");
  16053. }));
  16054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16055. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  16056. //>>excludeEnd("ctx");
  16057. }));
  16058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16059. }, function($ctx1) {$ctx1.fill(self,"join:",{aCollection:aCollection})});
  16060. //>>excludeEnd("ctx");
  16061. }; }),
  16062. $globals.String);
  16063. $core.addMethod(
  16064. $core.method({
  16065. selector: "lineIndicesDo:",
  16066. protocol: "split join",
  16067. //>>excludeStart("ide", pragmas.excludeIdeData);
  16068. args: ["aBlock"],
  16069. source: "lineIndicesDo: aBlock\x0a\x09\x22execute aBlock with 3 arguments for each line:\x0a\x09- start index of line\x0a\x09- end index of line without line delimiter\x0a\x09- end index of line including line delimiter(s) CR, LF or CRLF\x22\x0a\x09\x0a\x09| cr lf start sz nextLF nextCR |\x0a\x09start := 1.\x0a\x09sz := self size.\x0a\x09cr := String cr.\x0a\x09nextCR := self indexOf: cr startingAt: 1.\x0a\x09lf := String lf.\x0a\x09nextLF := self indexOf: lf startingAt: 1.\x0a\x09[ start <= sz ] whileTrue: [ \x0a\x09\x09(nextLF = 0 and: [ nextCR = 0 ])\x0a\x09\x09\x09ifTrue: [ \x22No more CR, nor LF, the string is over\x22\x0a\x09\x09\x09\x09\x09aBlock value: start value: sz value: sz.\x0a\x09\x09\x09\x09\x09^ self ].\x0a\x09\x09(nextCR = 0 or: [ 0 < nextLF and: [ nextLF < nextCR ] ])\x0a\x09\x09\x09ifTrue: [ \x22Found a LF\x22\x0a\x09\x09\x09\x09\x09aBlock value: start value: nextLF - 1 value: nextLF.\x0a\x09\x09\x09\x09\x09start := 1 + nextLF.\x0a\x09\x09\x09\x09\x09nextLF := self indexOf: lf startingAt: start ]\x0a\x09\x09\x09ifFalse: [ 1 + nextCR = nextLF\x0a\x09\x09\x09\x09ifTrue: [ \x22Found a CR-LF pair\x22\x0a\x09\x09\x09\x09\x09aBlock value: start value: nextCR - 1 value: nextLF.\x0a\x09\x09\x09\x09\x09start := 1 + nextLF.\x0a\x09\x09\x09\x09\x09nextCR := self indexOf: cr startingAt: start.\x0a\x09\x09\x09\x09\x09nextLF := self indexOf: lf startingAt: start ]\x0a\x09\x09\x09\x09ifFalse: [ \x22Found a CR\x22\x0a\x09\x09\x09\x09\x09aBlock value: start value: nextCR - 1 value: nextCR.\x0a\x09\x09\x09\x09\x09start := 1 + nextCR.\x0a\x09\x09\x09\x09\x09nextCR := self indexOf: cr startingAt: start ] ]]",
  16070. referencedClasses: ["String"],
  16071. //>>excludeEnd("ide");
  16072. pragmas: [],
  16073. messageSends: ["size", "cr", "indexOf:startingAt:", "lf", "whileTrue:", "<=", "ifTrue:", "and:", "=", "value:value:value:", "ifTrue:ifFalse:", "or:", "<", "-", "+"]
  16074. }, function ($methodClass){ return function (aBlock){
  16075. var self=this,$self=this;
  16076. var cr,lf,start,sz,nextLF,nextCR;
  16077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16078. return $core.withContext(function($ctx1) {
  16079. //>>excludeEnd("ctx");
  16080. var $1,$2;
  16081. var $early={};
  16082. try {
  16083. start=(1);
  16084. sz=$self._size();
  16085. cr=$recv($globals.String)._cr();
  16086. nextCR=[$self._indexOf_startingAt_(cr,(1))
  16087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16088. ,$ctx1.sendIdx["indexOf:startingAt:"]=1
  16089. //>>excludeEnd("ctx");
  16090. ][0];
  16091. lf=$recv($globals.String)._lf();
  16092. nextLF=[$self._indexOf_startingAt_(lf,(1))
  16093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16094. ,$ctx1.sendIdx["indexOf:startingAt:"]=2
  16095. //>>excludeEnd("ctx");
  16096. ][0];
  16097. $recv((function(){
  16098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16099. return $core.withContext(function($ctx2) {
  16100. //>>excludeEnd("ctx");
  16101. return $recv(start).__lt_eq(sz);
  16102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16103. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  16104. //>>excludeEnd("ctx");
  16105. }))._whileTrue_((function(){
  16106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16107. return $core.withContext(function($ctx2) {
  16108. //>>excludeEnd("ctx");
  16109. if($core.assert([$recv(nextLF).__eq((0))
  16110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16111. ,$ctx2.sendIdx["="]=1
  16112. //>>excludeEnd("ctx");
  16113. ][0])){
  16114. $1=[$recv(nextCR).__eq((0))
  16115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16116. ,$ctx2.sendIdx["="]=2
  16117. //>>excludeEnd("ctx");
  16118. ][0];
  16119. } else {
  16120. $1=false;
  16121. }
  16122. if($core.assert($1)){
  16123. [$recv(aBlock)._value_value_value_(start,sz,sz)
  16124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16125. ,$ctx2.sendIdx["value:value:value:"]=1
  16126. //>>excludeEnd("ctx");
  16127. ][0];
  16128. throw $early=[self];
  16129. }
  16130. if($core.assert([$recv(nextCR).__eq((0))
  16131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16132. ,$ctx2.sendIdx["="]=3
  16133. //>>excludeEnd("ctx");
  16134. ][0])){
  16135. $2=true;
  16136. } else {
  16137. if($core.assert([(0).__lt(nextLF)
  16138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16139. ,$ctx2.sendIdx["<"]=1
  16140. //>>excludeEnd("ctx");
  16141. ][0])){
  16142. $2=$recv(nextLF).__lt(nextCR);
  16143. } else {
  16144. $2=false;
  16145. }
  16146. }
  16147. if($core.assert($2)){
  16148. [$recv(aBlock)._value_value_value_(start,[$recv(nextLF).__minus((1))
  16149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16150. ,$ctx2.sendIdx["-"]=1
  16151. //>>excludeEnd("ctx");
  16152. ][0],nextLF)
  16153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16154. ,$ctx2.sendIdx["value:value:value:"]=2
  16155. //>>excludeEnd("ctx");
  16156. ][0];
  16157. start=[(1).__plus(nextLF)
  16158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16159. ,$ctx2.sendIdx["+"]=1
  16160. //>>excludeEnd("ctx");
  16161. ][0];
  16162. nextLF=[$self._indexOf_startingAt_(lf,start)
  16163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16164. ,$ctx2.sendIdx["indexOf:startingAt:"]=3
  16165. //>>excludeEnd("ctx");
  16166. ][0];
  16167. return nextLF;
  16168. } else {
  16169. if($core.assert($recv([(1).__plus(nextCR)
  16170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16171. ,$ctx2.sendIdx["+"]=2
  16172. //>>excludeEnd("ctx");
  16173. ][0]).__eq(nextLF))){
  16174. [$recv(aBlock)._value_value_value_(start,[$recv(nextCR).__minus((1))
  16175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16176. ,$ctx2.sendIdx["-"]=2
  16177. //>>excludeEnd("ctx");
  16178. ][0],nextLF)
  16179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16180. ,$ctx2.sendIdx["value:value:value:"]=3
  16181. //>>excludeEnd("ctx");
  16182. ][0];
  16183. start=[(1).__plus(nextLF)
  16184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16185. ,$ctx2.sendIdx["+"]=3
  16186. //>>excludeEnd("ctx");
  16187. ][0];
  16188. nextCR=[$self._indexOf_startingAt_(cr,start)
  16189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16190. ,$ctx2.sendIdx["indexOf:startingAt:"]=4
  16191. //>>excludeEnd("ctx");
  16192. ][0];
  16193. nextLF=[$self._indexOf_startingAt_(lf,start)
  16194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16195. ,$ctx2.sendIdx["indexOf:startingAt:"]=5
  16196. //>>excludeEnd("ctx");
  16197. ][0];
  16198. return nextLF;
  16199. } else {
  16200. $recv(aBlock)._value_value_value_(start,$recv(nextCR).__minus((1)),nextCR);
  16201. start=(1).__plus(nextCR);
  16202. nextCR=$self._indexOf_startingAt_(cr,start);
  16203. return nextCR;
  16204. }
  16205. }
  16206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16207. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  16208. //>>excludeEnd("ctx");
  16209. }));
  16210. return self;
  16211. }
  16212. catch(e) {if(e===$early)return e[0]; throw e}
  16213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16214. }, function($ctx1) {$ctx1.fill(self,"lineIndicesDo:",{aBlock:aBlock,cr:cr,lf:lf,start:start,sz:sz,nextLF:nextLF,nextCR:nextCR})});
  16215. //>>excludeEnd("ctx");
  16216. }; }),
  16217. $globals.String);
  16218. $core.addMethod(
  16219. $core.method({
  16220. selector: "lineNumber:",
  16221. protocol: "split join",
  16222. //>>excludeStart("ide", pragmas.excludeIdeData);
  16223. args: ["anIndex"],
  16224. source: "lineNumber: anIndex\x0a\x09\x22Answer a string containing the characters in the given line number.\x22\x0a\x0a\x09| lineCount |\x0a\x09lineCount := 0.\x0a\x09self lineIndicesDo: [ :start :endWithoutDelimiters :end |\x0a\x09\x09(lineCount := lineCount + 1) = anIndex ifTrue: [ ^ self copyFrom: start to: endWithoutDelimiters ]].\x0a\x09^ nil",
  16225. referencedClasses: [],
  16226. //>>excludeEnd("ide");
  16227. pragmas: [],
  16228. messageSends: ["lineIndicesDo:", "ifTrue:", "=", "+", "copyFrom:to:"]
  16229. }, function ($methodClass){ return function (anIndex){
  16230. var self=this,$self=this;
  16231. var lineCount;
  16232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16233. return $core.withContext(function($ctx1) {
  16234. //>>excludeEnd("ctx");
  16235. var $early={};
  16236. try {
  16237. lineCount=(0);
  16238. $self._lineIndicesDo_((function(start,endWithoutDelimiters,end){
  16239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16240. return $core.withContext(function($ctx2) {
  16241. //>>excludeEnd("ctx");
  16242. lineCount=$recv(lineCount).__plus((1));
  16243. if($core.assert($recv(lineCount).__eq(anIndex))){
  16244. throw $early=[$self._copyFrom_to_(start,endWithoutDelimiters)];
  16245. }
  16246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16247. }, function($ctx2) {$ctx2.fillBlock({start:start,endWithoutDelimiters:endWithoutDelimiters,end:end},$ctx1,1)});
  16248. //>>excludeEnd("ctx");
  16249. }));
  16250. return nil;
  16251. }
  16252. catch(e) {if(e===$early)return e[0]; throw e}
  16253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16254. }, function($ctx1) {$ctx1.fill(self,"lineNumber:",{anIndex:anIndex,lineCount:lineCount})});
  16255. //>>excludeEnd("ctx");
  16256. }; }),
  16257. $globals.String);
  16258. $core.addMethod(
  16259. $core.method({
  16260. selector: "lines",
  16261. protocol: "split join",
  16262. //>>excludeStart("ide", pragmas.excludeIdeData);
  16263. args: [],
  16264. source: "lines\x0a\x09\x22Answer an array of lines composing this receiver without the line ending delimiters.\x22\x0a<inlineJS: '\x0a\x09var result = self.split(/\x5cr\x5cn|\x5cr|\x5cn/);\x0a\x09if (!result[result.length-1]) result.pop();\x0a\x09return result;\x0a'>",
  16265. referencedClasses: [],
  16266. //>>excludeEnd("ide");
  16267. pragmas: [["inlineJS:", ["\x0a\x09var result = self.split(/\x5cr\x5cn|\x5cr|\x5cn/);\x0a\x09if (!result[result.length-1]) result.pop();\x0a\x09return result;"]]],
  16268. messageSends: []
  16269. }, function ($methodClass){ return function (){
  16270. var self=this,$self=this;
  16271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16272. return $core.withContext(function($ctx1) {
  16273. //>>excludeEnd("ctx");
  16274. var result = self.split(/\r\n|\r|\n/);
  16275. if (!result[result.length-1]) result.pop();
  16276. return result;;
  16277. return self;
  16278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16279. }, function($ctx1) {$ctx1.fill(self,"lines",{})});
  16280. //>>excludeEnd("ctx");
  16281. }; }),
  16282. $globals.String);
  16283. $core.addMethod(
  16284. $core.method({
  16285. selector: "linesDo:",
  16286. protocol: "split join",
  16287. //>>excludeStart("ide", pragmas.excludeIdeData);
  16288. args: ["aBlock"],
  16289. source: "linesDo: aBlock\x0a\x09\x22Execute aBlock with each line in this string. The terminating line\x0a\x09delimiters CR, LF or CRLF pairs are not included in what is passed to aBlock\x22\x0a\x0a\x09self lines do: aBlock",
  16290. referencedClasses: [],
  16291. //>>excludeEnd("ide");
  16292. pragmas: [],
  16293. messageSends: ["do:", "lines"]
  16294. }, function ($methodClass){ return function (aBlock){
  16295. var self=this,$self=this;
  16296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16297. return $core.withContext(function($ctx1) {
  16298. //>>excludeEnd("ctx");
  16299. $recv($self._lines())._do_(aBlock);
  16300. return self;
  16301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16302. }, function($ctx1) {$ctx1.fill(self,"linesDo:",{aBlock:aBlock})});
  16303. //>>excludeEnd("ctx");
  16304. }; }),
  16305. $globals.String);
  16306. $core.addMethod(
  16307. $core.method({
  16308. selector: "match:",
  16309. protocol: "regular expressions",
  16310. //>>excludeStart("ide", pragmas.excludeIdeData);
  16311. args: ["aRegexp"],
  16312. source: "match: aRegexp\x0a\x09<inlineJS: 'return self.search(aRegexp) != -1'>",
  16313. referencedClasses: [],
  16314. //>>excludeEnd("ide");
  16315. pragmas: [["inlineJS:", ["return self.search(aRegexp) != -1"]]],
  16316. messageSends: []
  16317. }, function ($methodClass){ return function (aRegexp){
  16318. var self=this,$self=this;
  16319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16320. return $core.withContext(function($ctx1) {
  16321. //>>excludeEnd("ctx");
  16322. return self.search(aRegexp) != -1;
  16323. return self;
  16324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16325. }, function($ctx1) {$ctx1.fill(self,"match:",{aRegexp:aRegexp})});
  16326. //>>excludeEnd("ctx");
  16327. }; }),
  16328. $globals.String);
  16329. $core.addMethod(
  16330. $core.method({
  16331. selector: "matchesOf:",
  16332. protocol: "regular expressions",
  16333. //>>excludeStart("ide", pragmas.excludeIdeData);
  16334. args: ["aRegularExpression"],
  16335. source: "matchesOf: aRegularExpression\x0a\x09<inlineJS: 'return self.match(aRegularExpression)'>",
  16336. referencedClasses: [],
  16337. //>>excludeEnd("ide");
  16338. pragmas: [["inlineJS:", ["return self.match(aRegularExpression)"]]],
  16339. messageSends: []
  16340. }, function ($methodClass){ return function (aRegularExpression){
  16341. var self=this,$self=this;
  16342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16343. return $core.withContext(function($ctx1) {
  16344. //>>excludeEnd("ctx");
  16345. return self.match(aRegularExpression);
  16346. return self;
  16347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16348. }, function($ctx1) {$ctx1.fill(self,"matchesOf:",{aRegularExpression:aRegularExpression})});
  16349. //>>excludeEnd("ctx");
  16350. }; }),
  16351. $globals.String);
  16352. $core.addMethod(
  16353. $core.method({
  16354. selector: "printNl",
  16355. protocol: "printing",
  16356. //>>excludeStart("ide", pragmas.excludeIdeData);
  16357. args: [],
  16358. source: "printNl\x0a\x09<inlineJS: 'console.log(self)'>",
  16359. referencedClasses: [],
  16360. //>>excludeEnd("ide");
  16361. pragmas: [["inlineJS:", ["console.log(self)"]]],
  16362. messageSends: []
  16363. }, function ($methodClass){ return function (){
  16364. var self=this,$self=this;
  16365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16366. return $core.withContext(function($ctx1) {
  16367. //>>excludeEnd("ctx");
  16368. console.log(self);
  16369. return self;
  16370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16371. }, function($ctx1) {$ctx1.fill(self,"printNl",{})});
  16372. //>>excludeEnd("ctx");
  16373. }; }),
  16374. $globals.String);
  16375. $core.addMethod(
  16376. $core.method({
  16377. selector: "printOn:",
  16378. protocol: "printing",
  16379. //>>excludeStart("ide", pragmas.excludeIdeData);
  16380. args: ["aStream"],
  16381. source: "printOn: aStream\x0a\x09aStream \x0a\x09\x09nextPutAll: '''';\x0a\x09\x09nextPutAll: (self replace: '''' with: '''''');\x0a\x09\x09nextPutAll: ''''",
  16382. referencedClasses: [],
  16383. //>>excludeEnd("ide");
  16384. pragmas: [],
  16385. messageSends: ["nextPutAll:", "replace:with:"]
  16386. }, function ($methodClass){ return function (aStream){
  16387. var self=this,$self=this;
  16388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16389. return $core.withContext(function($ctx1) {
  16390. //>>excludeEnd("ctx");
  16391. [$recv(aStream)._nextPutAll_("'")
  16392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16393. ,$ctx1.sendIdx["nextPutAll:"]=1
  16394. //>>excludeEnd("ctx");
  16395. ][0];
  16396. [$recv(aStream)._nextPutAll_($self._replace_with_("'","''"))
  16397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16398. ,$ctx1.sendIdx["nextPutAll:"]=2
  16399. //>>excludeEnd("ctx");
  16400. ][0];
  16401. $recv(aStream)._nextPutAll_("'");
  16402. return self;
  16403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16404. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  16405. //>>excludeEnd("ctx");
  16406. }; }),
  16407. $globals.String);
  16408. $core.addMethod(
  16409. $core.method({
  16410. selector: "putOn:",
  16411. protocol: "streaming",
  16412. //>>excludeStart("ide", pragmas.excludeIdeData);
  16413. args: ["aStream"],
  16414. source: "putOn: aStream\x0a\x09aStream nextPutString: self",
  16415. referencedClasses: [],
  16416. //>>excludeEnd("ide");
  16417. pragmas: [],
  16418. messageSends: ["nextPutString:"]
  16419. }, function ($methodClass){ return function (aStream){
  16420. var self=this,$self=this;
  16421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16422. return $core.withContext(function($ctx1) {
  16423. //>>excludeEnd("ctx");
  16424. $recv(aStream)._nextPutString_(self);
  16425. return self;
  16426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16427. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream})});
  16428. //>>excludeEnd("ctx");
  16429. }; }),
  16430. $globals.String);
  16431. $core.addMethod(
  16432. $core.method({
  16433. selector: "remove:",
  16434. protocol: "adding/removing",
  16435. //>>excludeStart("ide", pragmas.excludeIdeData);
  16436. args: ["anObject"],
  16437. source: "remove: anObject\x0a\x09self errorReadOnly",
  16438. referencedClasses: [],
  16439. //>>excludeEnd("ide");
  16440. pragmas: [],
  16441. messageSends: ["errorReadOnly"]
  16442. }, function ($methodClass){ return function (anObject){
  16443. var self=this,$self=this;
  16444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16445. return $core.withContext(function($ctx1) {
  16446. //>>excludeEnd("ctx");
  16447. $self._errorReadOnly();
  16448. return self;
  16449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16450. }, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject})});
  16451. //>>excludeEnd("ctx");
  16452. }; }),
  16453. $globals.String);
  16454. $core.addMethod(
  16455. $core.method({
  16456. selector: "remove:ifAbsent:",
  16457. protocol: "adding/removing",
  16458. //>>excludeStart("ide", pragmas.excludeIdeData);
  16459. args: ["anObject", "aBlock"],
  16460. source: "remove: anObject ifAbsent: aBlock\x0a\x09self errorReadOnly",
  16461. referencedClasses: [],
  16462. //>>excludeEnd("ide");
  16463. pragmas: [],
  16464. messageSends: ["errorReadOnly"]
  16465. }, function ($methodClass){ return function (anObject,aBlock){
  16466. var self=this,$self=this;
  16467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16468. return $core.withContext(function($ctx1) {
  16469. //>>excludeEnd("ctx");
  16470. $self._errorReadOnly();
  16471. return self;
  16472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16473. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
  16474. //>>excludeEnd("ctx");
  16475. }; }),
  16476. $globals.String);
  16477. $core.addMethod(
  16478. $core.method({
  16479. selector: "replace:with:",
  16480. protocol: "regular expressions",
  16481. //>>excludeStart("ide", pragmas.excludeIdeData);
  16482. args: ["aString", "anotherString"],
  16483. source: "replace: aString with: anotherString\x0a\x09^ self replaceRegexp: (RegularExpression fromString: aString flag: 'g') with: anotherString",
  16484. referencedClasses: ["RegularExpression"],
  16485. //>>excludeEnd("ide");
  16486. pragmas: [],
  16487. messageSends: ["replaceRegexp:with:", "fromString:flag:"]
  16488. }, function ($methodClass){ return function (aString,anotherString){
  16489. var self=this,$self=this;
  16490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16491. return $core.withContext(function($ctx1) {
  16492. //>>excludeEnd("ctx");
  16493. return $self._replaceRegexp_with_($recv($globals.RegularExpression)._fromString_flag_(aString,"g"),anotherString);
  16494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16495. }, function($ctx1) {$ctx1.fill(self,"replace:with:",{aString:aString,anotherString:anotherString})});
  16496. //>>excludeEnd("ctx");
  16497. }; }),
  16498. $globals.String);
  16499. $core.addMethod(
  16500. $core.method({
  16501. selector: "replaceRegexp:with:",
  16502. protocol: "regular expressions",
  16503. //>>excludeStart("ide", pragmas.excludeIdeData);
  16504. args: ["aRegexp", "aString"],
  16505. source: "replaceRegexp: aRegexp with: aString\x0a\x09<inlineJS: 'return self.replace(aRegexp, aString)'>",
  16506. referencedClasses: [],
  16507. //>>excludeEnd("ide");
  16508. pragmas: [["inlineJS:", ["return self.replace(aRegexp, aString)"]]],
  16509. messageSends: []
  16510. }, function ($methodClass){ return function (aRegexp,aString){
  16511. var self=this,$self=this;
  16512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16513. return $core.withContext(function($ctx1) {
  16514. //>>excludeEnd("ctx");
  16515. return self.replace(aRegexp, aString);
  16516. return self;
  16517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16518. }, function($ctx1) {$ctx1.fill(self,"replaceRegexp:with:",{aRegexp:aRegexp,aString:aString})});
  16519. //>>excludeEnd("ctx");
  16520. }; }),
  16521. $globals.String);
  16522. $core.addMethod(
  16523. $core.method({
  16524. selector: "reversed",
  16525. protocol: "converting",
  16526. //>>excludeStart("ide", pragmas.excludeIdeData);
  16527. args: [],
  16528. source: "reversed\x0a\x09<inlineJS: 'return self.split(\x22\x22).reverse().join(\x22\x22)'>",
  16529. referencedClasses: [],
  16530. //>>excludeEnd("ide");
  16531. pragmas: [["inlineJS:", ["return self.split(\x22\x22).reverse().join(\x22\x22)"]]],
  16532. messageSends: []
  16533. }, function ($methodClass){ return function (){
  16534. var self=this,$self=this;
  16535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16536. return $core.withContext(function($ctx1) {
  16537. //>>excludeEnd("ctx");
  16538. return self.split("").reverse().join("");
  16539. return self;
  16540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16541. }, function($ctx1) {$ctx1.fill(self,"reversed",{})});
  16542. //>>excludeEnd("ctx");
  16543. }; }),
  16544. $globals.String);
  16545. $core.addMethod(
  16546. $core.method({
  16547. selector: "shallowCopy",
  16548. protocol: "copying",
  16549. //>>excludeStart("ide", pragmas.excludeIdeData);
  16550. args: [],
  16551. source: "shallowCopy\x0a\x09^ self",
  16552. referencedClasses: [],
  16553. //>>excludeEnd("ide");
  16554. pragmas: [],
  16555. messageSends: []
  16556. }, function ($methodClass){ return function (){
  16557. var self=this,$self=this;
  16558. return self;
  16559. }; }),
  16560. $globals.String);
  16561. $core.addMethod(
  16562. $core.method({
  16563. selector: "shortenedPrintString",
  16564. protocol: "printing",
  16565. //>>excludeStart("ide", pragmas.excludeIdeData);
  16566. args: [],
  16567. source: "shortenedPrintString\x0a\x09^ self printString size > 30\x0a\x09\x09ifTrue: [ (self printString copyFrom: 1 to: 30), '...''' ]\x0a\x09\x09ifFalse: [ self printString ]",
  16568. referencedClasses: [],
  16569. //>>excludeEnd("ide");
  16570. pragmas: [],
  16571. messageSends: ["ifTrue:ifFalse:", ">", "size", "printString", ",", "copyFrom:to:"]
  16572. }, function ($methodClass){ return function (){
  16573. var self=this,$self=this;
  16574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16575. return $core.withContext(function($ctx1) {
  16576. //>>excludeEnd("ctx");
  16577. if($core.assert($recv($recv([$self._printString()
  16578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16579. ,$ctx1.sendIdx["printString"]=1
  16580. //>>excludeEnd("ctx");
  16581. ][0])._size()).__gt((30)))){
  16582. return $recv($recv([$self._printString()
  16583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16584. ,$ctx1.sendIdx["printString"]=2
  16585. //>>excludeEnd("ctx");
  16586. ][0])._copyFrom_to_((1),(30))).__comma("...'");
  16587. } else {
  16588. return $self._printString();
  16589. }
  16590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16591. }, function($ctx1) {$ctx1.fill(self,"shortenedPrintString",{})});
  16592. //>>excludeEnd("ctx");
  16593. }; }),
  16594. $globals.String);
  16595. $core.addMethod(
  16596. $core.method({
  16597. selector: "subStrings:",
  16598. protocol: "split join",
  16599. //>>excludeStart("ide", pragmas.excludeIdeData);
  16600. args: ["aString"],
  16601. source: "subStrings: aString\x0a\x09^ self tokenize: aString",
  16602. referencedClasses: [],
  16603. //>>excludeEnd("ide");
  16604. pragmas: [],
  16605. messageSends: ["tokenize:"]
  16606. }, function ($methodClass){ return function (aString){
  16607. var self=this,$self=this;
  16608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16609. return $core.withContext(function($ctx1) {
  16610. //>>excludeEnd("ctx");
  16611. return $self._tokenize_(aString);
  16612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16613. }, function($ctx1) {$ctx1.fill(self,"subStrings:",{aString:aString})});
  16614. //>>excludeEnd("ctx");
  16615. }; }),
  16616. $globals.String);
  16617. $core.addMethod(
  16618. $core.method({
  16619. selector: "symbolPrintString",
  16620. protocol: "printing",
  16621. //>>excludeStart("ide", pragmas.excludeIdeData);
  16622. args: [],
  16623. source: "symbolPrintString\x0a\x09^ String streamContents: [ :str | self asSymbolPrintOn: str ]",
  16624. referencedClasses: ["String"],
  16625. //>>excludeEnd("ide");
  16626. pragmas: [],
  16627. messageSends: ["streamContents:", "asSymbolPrintOn:"]
  16628. }, function ($methodClass){ return function (){
  16629. var self=this,$self=this;
  16630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16631. return $core.withContext(function($ctx1) {
  16632. //>>excludeEnd("ctx");
  16633. return $recv($globals.String)._streamContents_((function(str){
  16634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16635. return $core.withContext(function($ctx2) {
  16636. //>>excludeEnd("ctx");
  16637. return $self._asSymbolPrintOn_(str);
  16638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16639. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  16640. //>>excludeEnd("ctx");
  16641. }));
  16642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16643. }, function($ctx1) {$ctx1.fill(self,"symbolPrintString",{})});
  16644. //>>excludeEnd("ctx");
  16645. }; }),
  16646. $globals.String);
  16647. $core.addMethod(
  16648. $core.method({
  16649. selector: "tokenize:",
  16650. protocol: "split join",
  16651. //>>excludeStart("ide", pragmas.excludeIdeData);
  16652. args: ["aString"],
  16653. source: "tokenize: aString\x0a\x09<inlineJS: 'return self.split(aString)'>",
  16654. referencedClasses: [],
  16655. //>>excludeEnd("ide");
  16656. pragmas: [["inlineJS:", ["return self.split(aString)"]]],
  16657. messageSends: []
  16658. }, function ($methodClass){ return function (aString){
  16659. var self=this,$self=this;
  16660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16661. return $core.withContext(function($ctx1) {
  16662. //>>excludeEnd("ctx");
  16663. return self.split(aString);
  16664. return self;
  16665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16666. }, function($ctx1) {$ctx1.fill(self,"tokenize:",{aString:aString})});
  16667. //>>excludeEnd("ctx");
  16668. }; }),
  16669. $globals.String);
  16670. $core.addMethod(
  16671. $core.method({
  16672. selector: "trimBoth",
  16673. protocol: "regular expressions",
  16674. //>>excludeStart("ide", pragmas.excludeIdeData);
  16675. args: [],
  16676. source: "trimBoth\x0a\x09^ self trimBoth: '\x5cs'",
  16677. referencedClasses: [],
  16678. //>>excludeEnd("ide");
  16679. pragmas: [],
  16680. messageSends: ["trimBoth:"]
  16681. }, function ($methodClass){ return function (){
  16682. var self=this,$self=this;
  16683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16684. return $core.withContext(function($ctx1) {
  16685. //>>excludeEnd("ctx");
  16686. return $self._trimBoth_("\x5cs");
  16687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16688. }, function($ctx1) {$ctx1.fill(self,"trimBoth",{})});
  16689. //>>excludeEnd("ctx");
  16690. }; }),
  16691. $globals.String);
  16692. $core.addMethod(
  16693. $core.method({
  16694. selector: "trimBoth:",
  16695. protocol: "regular expressions",
  16696. //>>excludeStart("ide", pragmas.excludeIdeData);
  16697. args: ["separators"],
  16698. source: "trimBoth: separators\x0a\x09^ (self trimLeft: separators) trimRight: separators",
  16699. referencedClasses: [],
  16700. //>>excludeEnd("ide");
  16701. pragmas: [],
  16702. messageSends: ["trimRight:", "trimLeft:"]
  16703. }, function ($methodClass){ return function (separators){
  16704. var self=this,$self=this;
  16705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16706. return $core.withContext(function($ctx1) {
  16707. //>>excludeEnd("ctx");
  16708. return $recv($self._trimLeft_(separators))._trimRight_(separators);
  16709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16710. }, function($ctx1) {$ctx1.fill(self,"trimBoth:",{separators:separators})});
  16711. //>>excludeEnd("ctx");
  16712. }; }),
  16713. $globals.String);
  16714. $core.addMethod(
  16715. $core.method({
  16716. selector: "trimLeft",
  16717. protocol: "regular expressions",
  16718. //>>excludeStart("ide", pragmas.excludeIdeData);
  16719. args: [],
  16720. source: "trimLeft\x0a\x09^ self trimLeft: '\x5cs'",
  16721. referencedClasses: [],
  16722. //>>excludeEnd("ide");
  16723. pragmas: [],
  16724. messageSends: ["trimLeft:"]
  16725. }, function ($methodClass){ return function (){
  16726. var self=this,$self=this;
  16727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16728. return $core.withContext(function($ctx1) {
  16729. //>>excludeEnd("ctx");
  16730. return $self._trimLeft_("\x5cs");
  16731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16732. }, function($ctx1) {$ctx1.fill(self,"trimLeft",{})});
  16733. //>>excludeEnd("ctx");
  16734. }; }),
  16735. $globals.String);
  16736. $core.addMethod(
  16737. $core.method({
  16738. selector: "trimLeft:",
  16739. protocol: "regular expressions",
  16740. //>>excludeStart("ide", pragmas.excludeIdeData);
  16741. args: ["separators"],
  16742. source: "trimLeft: separators\x0a\x09^ self replaceRegexp: (RegularExpression fromString: '^[', separators, ']+' flag: 'g') with: ''",
  16743. referencedClasses: ["RegularExpression"],
  16744. //>>excludeEnd("ide");
  16745. pragmas: [],
  16746. messageSends: ["replaceRegexp:with:", "fromString:flag:", ","]
  16747. }, function ($methodClass){ return function (separators){
  16748. var self=this,$self=this;
  16749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16750. return $core.withContext(function($ctx1) {
  16751. //>>excludeEnd("ctx");
  16752. return $self._replaceRegexp_with_($recv($globals.RegularExpression)._fromString_flag_([$recv("^[".__comma(separators)).__comma("]+")
  16753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16754. ,$ctx1.sendIdx[","]=1
  16755. //>>excludeEnd("ctx");
  16756. ][0],"g"),"");
  16757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16758. }, function($ctx1) {$ctx1.fill(self,"trimLeft:",{separators:separators})});
  16759. //>>excludeEnd("ctx");
  16760. }; }),
  16761. $globals.String);
  16762. $core.addMethod(
  16763. $core.method({
  16764. selector: "trimRight",
  16765. protocol: "regular expressions",
  16766. //>>excludeStart("ide", pragmas.excludeIdeData);
  16767. args: [],
  16768. source: "trimRight\x0a\x09^ self trimRight: '\x5cs'",
  16769. referencedClasses: [],
  16770. //>>excludeEnd("ide");
  16771. pragmas: [],
  16772. messageSends: ["trimRight:"]
  16773. }, function ($methodClass){ return function (){
  16774. var self=this,$self=this;
  16775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16776. return $core.withContext(function($ctx1) {
  16777. //>>excludeEnd("ctx");
  16778. return $self._trimRight_("\x5cs");
  16779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16780. }, function($ctx1) {$ctx1.fill(self,"trimRight",{})});
  16781. //>>excludeEnd("ctx");
  16782. }; }),
  16783. $globals.String);
  16784. $core.addMethod(
  16785. $core.method({
  16786. selector: "trimRight:",
  16787. protocol: "regular expressions",
  16788. //>>excludeStart("ide", pragmas.excludeIdeData);
  16789. args: ["separators"],
  16790. source: "trimRight: separators\x0a\x09^ self replaceRegexp: (RegularExpression fromString: '[', separators, ']+$' flag: 'g') with: ''",
  16791. referencedClasses: ["RegularExpression"],
  16792. //>>excludeEnd("ide");
  16793. pragmas: [],
  16794. messageSends: ["replaceRegexp:with:", "fromString:flag:", ","]
  16795. }, function ($methodClass){ return function (separators){
  16796. var self=this,$self=this;
  16797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16798. return $core.withContext(function($ctx1) {
  16799. //>>excludeEnd("ctx");
  16800. return $self._replaceRegexp_with_($recv($globals.RegularExpression)._fromString_flag_([$recv("[".__comma(separators)).__comma("]+$")
  16801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16802. ,$ctx1.sendIdx[","]=1
  16803. //>>excludeEnd("ctx");
  16804. ][0],"g"),"");
  16805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16806. }, function($ctx1) {$ctx1.fill(self,"trimRight:",{separators:separators})});
  16807. //>>excludeEnd("ctx");
  16808. }; }),
  16809. $globals.String);
  16810. $core.addMethod(
  16811. $core.method({
  16812. selector: "unescaped",
  16813. protocol: "converting",
  16814. //>>excludeStart("ide", pragmas.excludeIdeData);
  16815. args: [],
  16816. source: "unescaped\x0a\x09<inlineJS: 'return unescape(self)'>",
  16817. referencedClasses: [],
  16818. //>>excludeEnd("ide");
  16819. pragmas: [["inlineJS:", ["return unescape(self)"]]],
  16820. messageSends: []
  16821. }, function ($methodClass){ return function (){
  16822. var self=this,$self=this;
  16823. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16824. return $core.withContext(function($ctx1) {
  16825. //>>excludeEnd("ctx");
  16826. return unescape(self);
  16827. return self;
  16828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16829. }, function($ctx1) {$ctx1.fill(self,"unescaped",{})});
  16830. //>>excludeEnd("ctx");
  16831. }; }),
  16832. $globals.String);
  16833. $core.addMethod(
  16834. $core.method({
  16835. selector: "uriComponentDecoded",
  16836. protocol: "converting",
  16837. //>>excludeStart("ide", pragmas.excludeIdeData);
  16838. args: [],
  16839. source: "uriComponentDecoded\x0a\x09<inlineJS: 'return decodeURIComponent(self)'>",
  16840. referencedClasses: [],
  16841. //>>excludeEnd("ide");
  16842. pragmas: [["inlineJS:", ["return decodeURIComponent(self)"]]],
  16843. messageSends: []
  16844. }, function ($methodClass){ return function (){
  16845. var self=this,$self=this;
  16846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16847. return $core.withContext(function($ctx1) {
  16848. //>>excludeEnd("ctx");
  16849. return decodeURIComponent(self);
  16850. return self;
  16851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16852. }, function($ctx1) {$ctx1.fill(self,"uriComponentDecoded",{})});
  16853. //>>excludeEnd("ctx");
  16854. }; }),
  16855. $globals.String);
  16856. $core.addMethod(
  16857. $core.method({
  16858. selector: "uriComponentEncoded",
  16859. protocol: "converting",
  16860. //>>excludeStart("ide", pragmas.excludeIdeData);
  16861. args: [],
  16862. source: "uriComponentEncoded\x0a\x09<inlineJS: 'return encodeURIComponent(self)'>",
  16863. referencedClasses: [],
  16864. //>>excludeEnd("ide");
  16865. pragmas: [["inlineJS:", ["return encodeURIComponent(self)"]]],
  16866. messageSends: []
  16867. }, function ($methodClass){ return function (){
  16868. var self=this,$self=this;
  16869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16870. return $core.withContext(function($ctx1) {
  16871. //>>excludeEnd("ctx");
  16872. return encodeURIComponent(self);
  16873. return self;
  16874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16875. }, function($ctx1) {$ctx1.fill(self,"uriComponentEncoded",{})});
  16876. //>>excludeEnd("ctx");
  16877. }; }),
  16878. $globals.String);
  16879. $core.addMethod(
  16880. $core.method({
  16881. selector: "uriDecoded",
  16882. protocol: "converting",
  16883. //>>excludeStart("ide", pragmas.excludeIdeData);
  16884. args: [],
  16885. source: "uriDecoded\x0a\x09<inlineJS: 'return decodeURI(self)'>",
  16886. referencedClasses: [],
  16887. //>>excludeEnd("ide");
  16888. pragmas: [["inlineJS:", ["return decodeURI(self)"]]],
  16889. messageSends: []
  16890. }, function ($methodClass){ return function (){
  16891. var self=this,$self=this;
  16892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16893. return $core.withContext(function($ctx1) {
  16894. //>>excludeEnd("ctx");
  16895. return decodeURI(self);
  16896. return self;
  16897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16898. }, function($ctx1) {$ctx1.fill(self,"uriDecoded",{})});
  16899. //>>excludeEnd("ctx");
  16900. }; }),
  16901. $globals.String);
  16902. $core.addMethod(
  16903. $core.method({
  16904. selector: "uriEncoded",
  16905. protocol: "converting",
  16906. //>>excludeStart("ide", pragmas.excludeIdeData);
  16907. args: [],
  16908. source: "uriEncoded\x0a\x09<inlineJS: 'return encodeURI(self)'>",
  16909. referencedClasses: [],
  16910. //>>excludeEnd("ide");
  16911. pragmas: [["inlineJS:", ["return encodeURI(self)"]]],
  16912. messageSends: []
  16913. }, function ($methodClass){ return function (){
  16914. var self=this,$self=this;
  16915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16916. return $core.withContext(function($ctx1) {
  16917. //>>excludeEnd("ctx");
  16918. return encodeURI(self);
  16919. return self;
  16920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16921. }, function($ctx1) {$ctx1.fill(self,"uriEncoded",{})});
  16922. //>>excludeEnd("ctx");
  16923. }; }),
  16924. $globals.String);
  16925. $core.addMethod(
  16926. $core.method({
  16927. selector: "value:",
  16928. protocol: "evaluating",
  16929. //>>excludeStart("ide", pragmas.excludeIdeData);
  16930. args: ["anObject"],
  16931. source: "value: anObject \x0a\x09^ anObject perform: self",
  16932. referencedClasses: [],
  16933. //>>excludeEnd("ide");
  16934. pragmas: [],
  16935. messageSends: ["perform:"]
  16936. }, function ($methodClass){ return function (anObject){
  16937. var self=this,$self=this;
  16938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16939. return $core.withContext(function($ctx1) {
  16940. //>>excludeEnd("ctx");
  16941. return $recv(anObject)._perform_(self);
  16942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16943. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
  16944. //>>excludeEnd("ctx");
  16945. }; }),
  16946. $globals.String);
  16947. $core.addMethod(
  16948. $core.method({
  16949. selector: "cr",
  16950. protocol: "accessing",
  16951. //>>excludeStart("ide", pragmas.excludeIdeData);
  16952. args: [],
  16953. source: "cr\x0a\x09<inlineJS: 'return \x22\x5cr\x22'>",
  16954. referencedClasses: [],
  16955. //>>excludeEnd("ide");
  16956. pragmas: [["inlineJS:", ["return \x22\x5cr\x22"]]],
  16957. messageSends: []
  16958. }, function ($methodClass){ return function (){
  16959. var self=this,$self=this;
  16960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16961. return $core.withContext(function($ctx1) {
  16962. //>>excludeEnd("ctx");
  16963. return "\r";
  16964. return self;
  16965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16966. }, function($ctx1) {$ctx1.fill(self,"cr",{})});
  16967. //>>excludeEnd("ctx");
  16968. }; }),
  16969. $globals.String.a$cls);
  16970. $core.addMethod(
  16971. $core.method({
  16972. selector: "crlf",
  16973. protocol: "accessing",
  16974. //>>excludeStart("ide", pragmas.excludeIdeData);
  16975. args: [],
  16976. source: "crlf\x0a\x09<inlineJS: 'return \x22\x5cr\x5cn\x22'>",
  16977. referencedClasses: [],
  16978. //>>excludeEnd("ide");
  16979. pragmas: [["inlineJS:", ["return \x22\x5cr\x5cn\x22"]]],
  16980. messageSends: []
  16981. }, function ($methodClass){ return function (){
  16982. var self=this,$self=this;
  16983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16984. return $core.withContext(function($ctx1) {
  16985. //>>excludeEnd("ctx");
  16986. return "\r\n";
  16987. return self;
  16988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16989. }, function($ctx1) {$ctx1.fill(self,"crlf",{})});
  16990. //>>excludeEnd("ctx");
  16991. }; }),
  16992. $globals.String.a$cls);
  16993. $core.addMethod(
  16994. $core.method({
  16995. selector: "esc",
  16996. protocol: "accessing",
  16997. //>>excludeStart("ide", pragmas.excludeIdeData);
  16998. args: [],
  16999. source: "esc\x0a\x09^ self fromCharCode: 27",
  17000. referencedClasses: [],
  17001. //>>excludeEnd("ide");
  17002. pragmas: [],
  17003. messageSends: ["fromCharCode:"]
  17004. }, function ($methodClass){ return function (){
  17005. var self=this,$self=this;
  17006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17007. return $core.withContext(function($ctx1) {
  17008. //>>excludeEnd("ctx");
  17009. return $self._fromCharCode_((27));
  17010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17011. }, function($ctx1) {$ctx1.fill(self,"esc",{})});
  17012. //>>excludeEnd("ctx");
  17013. }; }),
  17014. $globals.String.a$cls);
  17015. $core.addMethod(
  17016. $core.method({
  17017. selector: "fromCharCode:",
  17018. protocol: "instance creation",
  17019. //>>excludeStart("ide", pragmas.excludeIdeData);
  17020. args: ["anInteger"],
  17021. source: "fromCharCode: anInteger\x0a\x09<inlineJS: 'return String.fromCharCode(anInteger)'>",
  17022. referencedClasses: [],
  17023. //>>excludeEnd("ide");
  17024. pragmas: [["inlineJS:", ["return String.fromCharCode(anInteger)"]]],
  17025. messageSends: []
  17026. }, function ($methodClass){ return function (anInteger){
  17027. var self=this,$self=this;
  17028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17029. return $core.withContext(function($ctx1) {
  17030. //>>excludeEnd("ctx");
  17031. return String.fromCharCode(anInteger);
  17032. return self;
  17033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17034. }, function($ctx1) {$ctx1.fill(self,"fromCharCode:",{anInteger:anInteger})});
  17035. //>>excludeEnd("ctx");
  17036. }; }),
  17037. $globals.String.a$cls);
  17038. $core.addMethod(
  17039. $core.method({
  17040. selector: "fromString:",
  17041. protocol: "instance creation",
  17042. //>>excludeStart("ide", pragmas.excludeIdeData);
  17043. args: ["aString"],
  17044. source: "fromString: aString\x0a\x09\x09<inlineJS: 'return String(aString)'>",
  17045. referencedClasses: [],
  17046. //>>excludeEnd("ide");
  17047. pragmas: [["inlineJS:", ["return String(aString)"]]],
  17048. messageSends: []
  17049. }, function ($methodClass){ return function (aString){
  17050. var self=this,$self=this;
  17051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17052. return $core.withContext(function($ctx1) {
  17053. //>>excludeEnd("ctx");
  17054. return String(aString);
  17055. return self;
  17056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17057. }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString})});
  17058. //>>excludeEnd("ctx");
  17059. }; }),
  17060. $globals.String.a$cls);
  17061. $core.addMethod(
  17062. $core.method({
  17063. selector: "lf",
  17064. protocol: "accessing",
  17065. //>>excludeStart("ide", pragmas.excludeIdeData);
  17066. args: [],
  17067. source: "lf\x0a\x09<inlineJS: 'return \x22\x5cn\x22'>",
  17068. referencedClasses: [],
  17069. //>>excludeEnd("ide");
  17070. pragmas: [["inlineJS:", ["return \x22\x5cn\x22"]]],
  17071. messageSends: []
  17072. }, function ($methodClass){ return function (){
  17073. var self=this,$self=this;
  17074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17075. return $core.withContext(function($ctx1) {
  17076. //>>excludeEnd("ctx");
  17077. return "\n";
  17078. return self;
  17079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17080. }, function($ctx1) {$ctx1.fill(self,"lf",{})});
  17081. //>>excludeEnd("ctx");
  17082. }; }),
  17083. $globals.String.a$cls);
  17084. $core.addMethod(
  17085. $core.method({
  17086. selector: "random",
  17087. protocol: "random",
  17088. //>>excludeStart("ide", pragmas.excludeIdeData);
  17089. args: [],
  17090. source: "random\x0a\x09\x22Returns random alphanumeric string beginning with letter\x22\x0a\x09<inlineJS: 'return ((10+22*Math.random())/32).toString(32).slice(2);'>",
  17091. referencedClasses: [],
  17092. //>>excludeEnd("ide");
  17093. pragmas: [["inlineJS:", ["return ((10+22*Math.random())/32).toString(32).slice(2);"]]],
  17094. messageSends: []
  17095. }, function ($methodClass){ return function (){
  17096. var self=this,$self=this;
  17097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17098. return $core.withContext(function($ctx1) {
  17099. //>>excludeEnd("ctx");
  17100. return ((10+22*Math.random())/32).toString(32).slice(2);;
  17101. return self;
  17102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17103. }, function($ctx1) {$ctx1.fill(self,"random",{})});
  17104. //>>excludeEnd("ctx");
  17105. }; }),
  17106. $globals.String.a$cls);
  17107. $core.addMethod(
  17108. $core.method({
  17109. selector: "randomNotIn:",
  17110. protocol: "random",
  17111. //>>excludeStart("ide", pragmas.excludeIdeData);
  17112. args: ["aString"],
  17113. source: "randomNotIn: aString\x0a\x09| result |\x0a\x09[ result := self random. aString includesSubString: result ] whileTrue.\x0a\x09^ result",
  17114. referencedClasses: [],
  17115. //>>excludeEnd("ide");
  17116. pragmas: [],
  17117. messageSends: ["whileTrue", "random", "includesSubString:"]
  17118. }, function ($methodClass){ return function (aString){
  17119. var self=this,$self=this;
  17120. var result;
  17121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17122. return $core.withContext(function($ctx1) {
  17123. //>>excludeEnd("ctx");
  17124. $recv((function(){
  17125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17126. return $core.withContext(function($ctx2) {
  17127. //>>excludeEnd("ctx");
  17128. result=$self._random();
  17129. return $recv(aString)._includesSubString_(result);
  17130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17131. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  17132. //>>excludeEnd("ctx");
  17133. }))._whileTrue();
  17134. return result;
  17135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17136. }, function($ctx1) {$ctx1.fill(self,"randomNotIn:",{aString:aString,result:result})});
  17137. //>>excludeEnd("ctx");
  17138. }; }),
  17139. $globals.String.a$cls);
  17140. $core.addMethod(
  17141. $core.method({
  17142. selector: "space",
  17143. protocol: "accessing",
  17144. //>>excludeStart("ide", pragmas.excludeIdeData);
  17145. args: [],
  17146. source: "space\x0a\x09<inlineJS: 'return \x22 \x22'>",
  17147. referencedClasses: [],
  17148. //>>excludeEnd("ide");
  17149. pragmas: [["inlineJS:", ["return \x22 \x22"]]],
  17150. messageSends: []
  17151. }, function ($methodClass){ return function (){
  17152. var self=this,$self=this;
  17153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17154. return $core.withContext(function($ctx1) {
  17155. //>>excludeEnd("ctx");
  17156. return " ";
  17157. return self;
  17158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17159. }, function($ctx1) {$ctx1.fill(self,"space",{})});
  17160. //>>excludeEnd("ctx");
  17161. }; }),
  17162. $globals.String.a$cls);
  17163. $core.addMethod(
  17164. $core.method({
  17165. selector: "streamClass",
  17166. protocol: "accessing",
  17167. //>>excludeStart("ide", pragmas.excludeIdeData);
  17168. args: [],
  17169. source: "streamClass\x0a\x09\x09^ StringStream",
  17170. referencedClasses: ["StringStream"],
  17171. //>>excludeEnd("ide");
  17172. pragmas: [],
  17173. messageSends: []
  17174. }, function ($methodClass){ return function (){
  17175. var self=this,$self=this;
  17176. return $globals.StringStream;
  17177. }; }),
  17178. $globals.String.a$cls);
  17179. $core.addMethod(
  17180. $core.method({
  17181. selector: "tab",
  17182. protocol: "accessing",
  17183. //>>excludeStart("ide", pragmas.excludeIdeData);
  17184. args: [],
  17185. source: "tab\x0a\x09<inlineJS: 'return \x22\x5ct\x22'>",
  17186. referencedClasses: [],
  17187. //>>excludeEnd("ide");
  17188. pragmas: [["inlineJS:", ["return \x22\x5ct\x22"]]],
  17189. messageSends: []
  17190. }, function ($methodClass){ return function (){
  17191. var self=this,$self=this;
  17192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17193. return $core.withContext(function($ctx1) {
  17194. //>>excludeEnd("ctx");
  17195. return "\t";
  17196. return self;
  17197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17198. }, function($ctx1) {$ctx1.fill(self,"tab",{})});
  17199. //>>excludeEnd("ctx");
  17200. }; }),
  17201. $globals.String.a$cls);
  17202. $core.addMethod(
  17203. $core.method({
  17204. selector: "value:",
  17205. protocol: "instance creation",
  17206. //>>excludeStart("ide", pragmas.excludeIdeData);
  17207. args: ["aUTFCharCode"],
  17208. source: "value: aUTFCharCode\x0a\x0a\x09<inlineJS: 'return String.fromCharCode(aUTFCharCode);'>",
  17209. referencedClasses: [],
  17210. //>>excludeEnd("ide");
  17211. pragmas: [["inlineJS:", ["return String.fromCharCode(aUTFCharCode);"]]],
  17212. messageSends: []
  17213. }, function ($methodClass){ return function (aUTFCharCode){
  17214. var self=this,$self=this;
  17215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17216. return $core.withContext(function($ctx1) {
  17217. //>>excludeEnd("ctx");
  17218. return String.fromCharCode(aUTFCharCode);;
  17219. return self;
  17220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17221. }, function($ctx1) {$ctx1.fill(self,"value:",{aUTFCharCode:aUTFCharCode})});
  17222. //>>excludeEnd("ctx");
  17223. }; }),
  17224. $globals.String.a$cls);
  17225. $core.addClass("Set", $globals.Collection, "Kernel-Collections");
  17226. $core.setSlots($globals.Set, ["defaultBucket", "slowBucketStores", "fastBuckets", "size"]);
  17227. //>>excludeStart("ide", pragmas.excludeIdeData);
  17228. $globals.Set.comment="I represent an unordered set of objects without duplicates.\x0a\x0a## Implementation notes\x0a\x0aI put elements into different stores based on their type.\x0aThe goal is to store some elements into native JS object property names to be fast.\x0a\x0aIf an unboxed element has typeof 'string', 'boolean' or 'number', or an element is nil, null or undefined,\x0aI store it as a property name in an empty (== Object.create(null)) JS object, different for each type\x0a(for simplicity, nil/null/undefined is treated as one and included with the two booleans).\x0a\x0aIf element happen to be an object, I try to store them in `ArrayBucketStore`. I have two of them by default,\x0aone hashed using the Smalltalk class name, the other one using the JS constructor name. It is possible to have more or less\x0ainstances of `ArrayBucketStores`, see `#initializeSlowBucketStores`.\x0a\x0aAs a last resort, if none of the `ArrayBucketStore` instances can find a suitable bucket, the `defaultBucket` is used,\x0awhich is an `Array`.";
  17229. //>>excludeEnd("ide");
  17230. $core.addMethod(
  17231. $core.method({
  17232. selector: "=",
  17233. protocol: "comparing",
  17234. //>>excludeStart("ide", pragmas.excludeIdeData);
  17235. args: ["aCollection"],
  17236. source: "= aCollection\x0a\x09^ self class = aCollection class and: [\x0a\x09\x09self size = aCollection size and: [\x0a\x09\x09\x09self allSatisfy: [ :each | aCollection includes: each ] ] ]",
  17237. referencedClasses: [],
  17238. //>>excludeEnd("ide");
  17239. pragmas: [],
  17240. messageSends: ["and:", "=", "class", "size", "allSatisfy:", "includes:"]
  17241. }, function ($methodClass){ return function (aCollection){
  17242. var self=this,$self=this;
  17243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17244. return $core.withContext(function($ctx1) {
  17245. //>>excludeEnd("ctx");
  17246. if($core.assert([$recv([$self._class()
  17247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17248. ,$ctx1.sendIdx["class"]=1
  17249. //>>excludeEnd("ctx");
  17250. ][0]).__eq($recv(aCollection)._class())
  17251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17252. ,$ctx1.sendIdx["="]=1
  17253. //>>excludeEnd("ctx");
  17254. ][0])){
  17255. if($core.assert($recv([$self._size()
  17256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17257. ,$ctx1.sendIdx["size"]=1
  17258. //>>excludeEnd("ctx");
  17259. ][0]).__eq($recv(aCollection)._size()))){
  17260. return $self._allSatisfy_((function(each){
  17261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17262. return $core.withContext(function($ctx2) {
  17263. //>>excludeEnd("ctx");
  17264. return $recv(aCollection)._includes_(each);
  17265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17266. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  17267. //>>excludeEnd("ctx");
  17268. }));
  17269. } else {
  17270. return false;
  17271. }
  17272. } else {
  17273. return false;
  17274. }
  17275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17276. }, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection})});
  17277. //>>excludeEnd("ctx");
  17278. }; }),
  17279. $globals.Set);
  17280. $core.addMethod(
  17281. $core.method({
  17282. selector: "add:",
  17283. protocol: "adding/removing",
  17284. //>>excludeStart("ide", pragmas.excludeIdeData);
  17285. args: ["anObject"],
  17286. source: "add: anObject\x0a\x09| bucket |\x0a\x09bucket := self bucketsOfElement: anObject.\x0a\x09^ bucket second\x0a\x09\x09ifNil: [\x0a\x09\x09\x09| object slowBucket |\x0a\x09\x09\x09object := bucket first.\x0a\x09\x09\x09slowBucket := bucket third.\x0a\x09\x09\x09slowBucket \x0a\x09\x09\x09\x09indexOf: object \x0a\x09\x09\x09\x09ifAbsent: [ \x0a\x09\x09\x09\x09\x09slowBucket add: object. \x0a\x09\x09\x09\x09\x09size := size + 1 ].\x0a\x09\x09\x09object ]\x0a\x09\x09ifNotNil: [ :primitiveBucket | \x0a\x09\x09\x09self \x0a\x09\x09\x09\x09add: bucket first \x0a\x09\x09\x09\x09in: primitiveBucket ]",
  17287. referencedClasses: [],
  17288. //>>excludeEnd("ide");
  17289. pragmas: [],
  17290. messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "first", "third", "indexOf:ifAbsent:", "add:", "+", "add:in:"]
  17291. }, function ($methodClass){ return function (anObject){
  17292. var self=this,$self=this;
  17293. var bucket;
  17294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17295. return $core.withContext(function($ctx1) {
  17296. //>>excludeEnd("ctx");
  17297. var $1;
  17298. bucket=$self._bucketsOfElement_(anObject);
  17299. $1=$recv(bucket)._second();
  17300. if($1 == null || $1.a$nil){
  17301. var object,slowBucket;
  17302. object=[$recv(bucket)._first()
  17303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17304. ,$ctx1.sendIdx["first"]=1
  17305. //>>excludeEnd("ctx");
  17306. ][0];
  17307. slowBucket=$recv(bucket)._third();
  17308. $recv(slowBucket)._indexOf_ifAbsent_(object,(function(){
  17309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17310. return $core.withContext(function($ctx2) {
  17311. //>>excludeEnd("ctx");
  17312. $recv(slowBucket)._add_(object);
  17313. $self.size=$recv($self.size).__plus((1));
  17314. return $self.size;
  17315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17316. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  17317. //>>excludeEnd("ctx");
  17318. }));
  17319. return object;
  17320. } else {
  17321. var primitiveBucket;
  17322. primitiveBucket=$1;
  17323. return $self._add_in_($recv(bucket)._first(),primitiveBucket);
  17324. }
  17325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17326. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject,bucket:bucket})});
  17327. //>>excludeEnd("ctx");
  17328. }; }),
  17329. $globals.Set);
  17330. $core.addMethod(
  17331. $core.method({
  17332. selector: "add:in:",
  17333. protocol: "private",
  17334. //>>excludeStart("ide", pragmas.excludeIdeData);
  17335. args: ["anObject", "anotherObject"],
  17336. source: "add: anObject in: anotherObject\x0a\x09<inlineJS: '\x0a\x09\x09if (anObject in anotherObject.store) { return anObject; }\x0a\x09\x09$self.size++;\x0a\x09\x09anotherObject.store[anObject] = true;\x0a\x09\x09return anObject;\x0a\x09'>",
  17337. referencedClasses: [],
  17338. //>>excludeEnd("ide");
  17339. pragmas: [["inlineJS:", ["\x0a\x09\x09if (anObject in anotherObject.store) { return anObject; }\x0a\x09\x09$self.size++;\x0a\x09\x09anotherObject.store[anObject] = true;\x0a\x09\x09return anObject;\x0a\x09"]]],
  17340. messageSends: []
  17341. }, function ($methodClass){ return function (anObject,anotherObject){
  17342. var self=this,$self=this;
  17343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17344. return $core.withContext(function($ctx1) {
  17345. //>>excludeEnd("ctx");
  17346. if (anObject in anotherObject.store) { return anObject; }
  17347. $self.size++;
  17348. anotherObject.store[anObject] = true;
  17349. return anObject;
  17350. ;
  17351. return self;
  17352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17353. }, function($ctx1) {$ctx1.fill(self,"add:in:",{anObject:anObject,anotherObject:anotherObject})});
  17354. //>>excludeEnd("ctx");
  17355. }; }),
  17356. $globals.Set);
  17357. $core.addMethod(
  17358. $core.method({
  17359. selector: "bucketsOfElement:",
  17360. protocol: "private",
  17361. //>>excludeStart("ide", pragmas.excludeIdeData);
  17362. args: ["anObject"],
  17363. source: "bucketsOfElement: anObject\x0a\x09\x22Find the appropriate bucket for `anObject`.\x0a\x09For optimization purposes, directly answer an array with: \x0a\x09- the object to be store\x0a\x09- the primitive bucket\x0a\x09- the slow bucket\x22\x0a\x09\x0a\x09<inlineJS: '\x0a\x09\x09// include nil to well-known objects under \x22boolean\x22 fastBucket\x0a\x09\x09if (anObject == null || anObject.a$nil) return [ null, $self.fastBuckets.boolean ];\x0a\x09\x09\x0a\x09\x09var prim = anObject.valueOf();\x0a\x09\x09if (typeof prim === \x22object\x22 || typeof prim === \x22function\x22 || !$self.fastBuckets[typeof prim]) {\x0a\x09\x09\x09var bucket = null;\x0a\x09\x09\x09$self.slowBucketStores.some(function (store) {\x0a\x09\x09\x09\x09return bucket = store._bucketOfElement_(anObject);\x0a\x09\x09\x09});\x0a\x09\x09\x09return [ anObject, null, bucket || $self.defaultBucket ];\x0a\x09\x09}\x0a\x09\x09return [ prim, $self.fastBuckets[typeof prim] ];\x0a\x09'>",
  17364. referencedClasses: [],
  17365. //>>excludeEnd("ide");
  17366. pragmas: [["inlineJS:", ["\x0a\x09\x09// include nil to well-known objects under \x22boolean\x22 fastBucket\x0a\x09\x09if (anObject == null || anObject.a$nil) return [ null, $self.fastBuckets.boolean ];\x0a\x09\x09\x0a\x09\x09var prim = anObject.valueOf();\x0a\x09\x09if (typeof prim === \x22object\x22 || typeof prim === \x22function\x22 || !$self.fastBuckets[typeof prim]) {\x0a\x09\x09\x09var bucket = null;\x0a\x09\x09\x09$self.slowBucketStores.some(function (store) {\x0a\x09\x09\x09\x09return bucket = store._bucketOfElement_(anObject);\x0a\x09\x09\x09});\x0a\x09\x09\x09return [ anObject, null, bucket || $self.defaultBucket ];\x0a\x09\x09}\x0a\x09\x09return [ prim, $self.fastBuckets[typeof prim] ];\x0a\x09"]]],
  17367. messageSends: []
  17368. }, function ($methodClass){ return function (anObject){
  17369. var self=this,$self=this;
  17370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17371. return $core.withContext(function($ctx1) {
  17372. //>>excludeEnd("ctx");
  17373. // include nil to well-known objects under "boolean" fastBucket
  17374. if (anObject == null || anObject.a$nil) return [ null, $self.fastBuckets.boolean ];
  17375. var prim = anObject.valueOf();
  17376. if (typeof prim === "object" || typeof prim === "function" || !$self.fastBuckets[typeof prim]) {
  17377. var bucket = null;
  17378. $self.slowBucketStores.some(function (store) {
  17379. return bucket = store._bucketOfElement_(anObject);
  17380. });
  17381. return [ anObject, null, bucket || $self.defaultBucket ];
  17382. }
  17383. return [ prim, $self.fastBuckets[typeof prim] ];
  17384. ;
  17385. return self;
  17386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17387. }, function($ctx1) {$ctx1.fill(self,"bucketsOfElement:",{anObject:anObject})});
  17388. //>>excludeEnd("ctx");
  17389. }; }),
  17390. $globals.Set);
  17391. $core.addMethod(
  17392. $core.method({
  17393. selector: "classNameOf:",
  17394. protocol: "private",
  17395. //>>excludeStart("ide", pragmas.excludeIdeData);
  17396. args: ["anObject"],
  17397. source: "classNameOf: anObject\x0a\x09\x22Answer the class name of `anObject`, or `undefined` \x0a\x09if `anObject` is not an Smalltalk object\x22\x0a\x09\x0a\x09<inlineJS: 'return anObject.a$cls != null && anObject.a$cls.name'>",
  17398. referencedClasses: [],
  17399. //>>excludeEnd("ide");
  17400. pragmas: [["inlineJS:", ["return anObject.a$cls != null && anObject.a$cls.name"]]],
  17401. messageSends: []
  17402. }, function ($methodClass){ return function (anObject){
  17403. var self=this,$self=this;
  17404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17405. return $core.withContext(function($ctx1) {
  17406. //>>excludeEnd("ctx");
  17407. return anObject.a$cls != null && anObject.a$cls.name;
  17408. return self;
  17409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17410. }, function($ctx1) {$ctx1.fill(self,"classNameOf:",{anObject:anObject})});
  17411. //>>excludeEnd("ctx");
  17412. }; }),
  17413. $globals.Set);
  17414. $core.addMethod(
  17415. $core.method({
  17416. selector: "collect:",
  17417. protocol: "enumerating",
  17418. //>>excludeStart("ide", pragmas.excludeIdeData);
  17419. args: ["aBlock"],
  17420. source: "collect: aBlock\x0a\x09| collection |\x0a\x09collection := self class new.\x0a\x09self do: [ :each | collection add: (aBlock value: each) ].\x0a\x09^ collection",
  17421. referencedClasses: [],
  17422. //>>excludeEnd("ide");
  17423. pragmas: [],
  17424. messageSends: ["new", "class", "do:", "add:", "value:"]
  17425. }, function ($methodClass){ return function (aBlock){
  17426. var self=this,$self=this;
  17427. var collection;
  17428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17429. return $core.withContext(function($ctx1) {
  17430. //>>excludeEnd("ctx");
  17431. collection=$recv($self._class())._new();
  17432. $self._do_((function(each){
  17433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17434. return $core.withContext(function($ctx2) {
  17435. //>>excludeEnd("ctx");
  17436. return $recv(collection)._add_($recv(aBlock)._value_(each));
  17437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17438. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  17439. //>>excludeEnd("ctx");
  17440. }));
  17441. return collection;
  17442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17443. }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,collection:collection})});
  17444. //>>excludeEnd("ctx");
  17445. }; }),
  17446. $globals.Set);
  17447. $core.addMethod(
  17448. $core.method({
  17449. selector: "do:",
  17450. protocol: "enumerating",
  17451. //>>excludeStart("ide", pragmas.excludeIdeData);
  17452. args: ["aBlock"],
  17453. source: "do: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var el, keys, i;\x0a\x09\x09el = $self.fastBuckets;\x0a\x09\x09keys = Object.keys(el);\x0a\x09\x09for (i = 0; i < keys.length; ++i) {\x0a\x09\x09\x09var fastBucket = el[keys[i]], fn = fastBucket.fn, store = Object.keys(fastBucket.store);\x0a\x09\x09\x09if (fn) { for (var j = 0; j < store.length; ++j) { aBlock._value_(fn(store[j])); } }\x0a\x09\x09\x09else { store._do_(aBlock); }\x0a\x09\x09}\x0a\x09\x09el = $self.slowBucketStores;\x0a\x09\x09for (i = 0; i < el.length; ++i) { el[i]._do_(aBlock); }\x0a\x09\x09$self.defaultBucket._do_(aBlock);\x0a\x09'>",
  17454. referencedClasses: [],
  17455. //>>excludeEnd("ide");
  17456. pragmas: [["inlineJS:", ["\x0a\x09\x09var el, keys, i;\x0a\x09\x09el = $self.fastBuckets;\x0a\x09\x09keys = Object.keys(el);\x0a\x09\x09for (i = 0; i < keys.length; ++i) {\x0a\x09\x09\x09var fastBucket = el[keys[i]], fn = fastBucket.fn, store = Object.keys(fastBucket.store);\x0a\x09\x09\x09if (fn) { for (var j = 0; j < store.length; ++j) { aBlock._value_(fn(store[j])); } }\x0a\x09\x09\x09else { store._do_(aBlock); }\x0a\x09\x09}\x0a\x09\x09el = $self.slowBucketStores;\x0a\x09\x09for (i = 0; i < el.length; ++i) { el[i]._do_(aBlock); }\x0a\x09\x09$self.defaultBucket._do_(aBlock);\x0a\x09"]]],
  17457. messageSends: []
  17458. }, function ($methodClass){ return function (aBlock){
  17459. var self=this,$self=this;
  17460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17461. return $core.withContext(function($ctx1) {
  17462. //>>excludeEnd("ctx");
  17463. var el, keys, i;
  17464. el = $self.fastBuckets;
  17465. keys = Object.keys(el);
  17466. for (i = 0; i < keys.length; ++i) {
  17467. var fastBucket = el[keys[i]], fn = fastBucket.fn, store = Object.keys(fastBucket.store);
  17468. if (fn) { for (var j = 0; j < store.length; ++j) { aBlock._value_(fn(store[j])); } }
  17469. else { store._do_(aBlock); }
  17470. }
  17471. el = $self.slowBucketStores;
  17472. for (i = 0; i < el.length; ++i) { el[i]._do_(aBlock); }
  17473. $self.defaultBucket._do_(aBlock);
  17474. ;
  17475. return self;
  17476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17477. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
  17478. //>>excludeEnd("ctx");
  17479. }; }),
  17480. $globals.Set);
  17481. $core.addMethod(
  17482. $core.method({
  17483. selector: "includes:",
  17484. protocol: "testing",
  17485. //>>excludeStart("ide", pragmas.excludeIdeData);
  17486. args: ["anObject"],
  17487. source: "includes: anObject\x0a\x09| bucket |\x0a\x09bucket := self bucketsOfElement: anObject.\x0a\x09^ bucket second\x0a\x09\x09ifNil: [ bucket third includes: bucket first ]\x0a\x09\x09ifNotNil: [ :primitiveBucket | self includes: bucket first in: primitiveBucket ]",
  17488. referencedClasses: [],
  17489. //>>excludeEnd("ide");
  17490. pragmas: [],
  17491. messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "includes:", "third", "first", "includes:in:"]
  17492. }, function ($methodClass){ return function (anObject){
  17493. var self=this,$self=this;
  17494. var bucket;
  17495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17496. return $core.withContext(function($ctx1) {
  17497. //>>excludeEnd("ctx");
  17498. var $1;
  17499. bucket=$self._bucketsOfElement_(anObject);
  17500. $1=$recv(bucket)._second();
  17501. if($1 == null || $1.a$nil){
  17502. return $recv($recv(bucket)._third())._includes_([$recv(bucket)._first()
  17503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17504. ,$ctx1.sendIdx["first"]=1
  17505. //>>excludeEnd("ctx");
  17506. ][0]);
  17507. } else {
  17508. var primitiveBucket;
  17509. primitiveBucket=$1;
  17510. return $self._includes_in_($recv(bucket)._first(),primitiveBucket);
  17511. }
  17512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17513. }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject,bucket:bucket})});
  17514. //>>excludeEnd("ctx");
  17515. }; }),
  17516. $globals.Set);
  17517. $core.addMethod(
  17518. $core.method({
  17519. selector: "includes:in:",
  17520. protocol: "private",
  17521. //>>excludeStart("ide", pragmas.excludeIdeData);
  17522. args: ["anObject", "anotherObject"],
  17523. source: "includes: anObject in: anotherObject\x0a\x09<inlineJS: 'return anObject in anotherObject.store'>",
  17524. referencedClasses: [],
  17525. //>>excludeEnd("ide");
  17526. pragmas: [["inlineJS:", ["return anObject in anotherObject.store"]]],
  17527. messageSends: []
  17528. }, function ($methodClass){ return function (anObject,anotherObject){
  17529. var self=this,$self=this;
  17530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17531. return $core.withContext(function($ctx1) {
  17532. //>>excludeEnd("ctx");
  17533. return anObject in anotherObject.store;
  17534. return self;
  17535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17536. }, function($ctx1) {$ctx1.fill(self,"includes:in:",{anObject:anObject,anotherObject:anotherObject})});
  17537. //>>excludeEnd("ctx");
  17538. }; }),
  17539. $globals.Set);
  17540. $core.addMethod(
  17541. $core.method({
  17542. selector: "initialize",
  17543. protocol: "initialization",
  17544. //>>excludeStart("ide", pragmas.excludeIdeData);
  17545. args: [],
  17546. source: "initialize\x0a\x09super initialize.\x0a\x09\x0a\x09defaultBucket := #().\x0a\x09self\x0a\x09\x09initializeSlowBucketStores;\x0a\x09\x09removeAll",
  17547. referencedClasses: [],
  17548. //>>excludeEnd("ide");
  17549. pragmas: [],
  17550. messageSends: ["initialize", "initializeSlowBucketStores", "removeAll"]
  17551. }, function ($methodClass){ return function (){
  17552. var self=this,$self=this;
  17553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17554. return $core.withContext(function($ctx1) {
  17555. //>>excludeEnd("ctx");
  17556. [(
  17557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17558. $ctx1.supercall = true,
  17559. //>>excludeEnd("ctx");
  17560. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  17561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17562. ,$ctx1.supercall = false
  17563. //>>excludeEnd("ctx");
  17564. ][0];
  17565. $self.defaultBucket=[];
  17566. $self._initializeSlowBucketStores();
  17567. $self._removeAll();
  17568. return self;
  17569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17570. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  17571. //>>excludeEnd("ctx");
  17572. }; }),
  17573. $globals.Set);
  17574. $core.addMethod(
  17575. $core.method({
  17576. selector: "initializeSlowBucketStores",
  17577. protocol: "initialization",
  17578. //>>excludeStart("ide", pragmas.excludeIdeData);
  17579. args: [],
  17580. source: "initializeSlowBucketStores\x0a\x09slowBucketStores := {\x0a\x09\x09ArrayBucketStore hashBlock: [ :x | self classNameOf: x ].\x0a\x09\x09ArrayBucketStore hashBlock: [ :x | self jsConstructorNameOf: x ]\x0a\x09}",
  17581. referencedClasses: ["ArrayBucketStore"],
  17582. //>>excludeEnd("ide");
  17583. pragmas: [],
  17584. messageSends: ["hashBlock:", "classNameOf:", "jsConstructorNameOf:"]
  17585. }, function ($methodClass){ return function (){
  17586. var self=this,$self=this;
  17587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17588. return $core.withContext(function($ctx1) {
  17589. //>>excludeEnd("ctx");
  17590. $self.slowBucketStores=[[$recv($globals.ArrayBucketStore)._hashBlock_((function(x){
  17591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17592. return $core.withContext(function($ctx2) {
  17593. //>>excludeEnd("ctx");
  17594. return $self._classNameOf_(x);
  17595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17596. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  17597. //>>excludeEnd("ctx");
  17598. }))
  17599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17600. ,$ctx1.sendIdx["hashBlock:"]=1
  17601. //>>excludeEnd("ctx");
  17602. ][0],$recv($globals.ArrayBucketStore)._hashBlock_((function(x){
  17603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17604. return $core.withContext(function($ctx2) {
  17605. //>>excludeEnd("ctx");
  17606. return $self._jsConstructorNameOf_(x);
  17607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17608. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
  17609. //>>excludeEnd("ctx");
  17610. }))];
  17611. return self;
  17612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17613. }, function($ctx1) {$ctx1.fill(self,"initializeSlowBucketStores",{})});
  17614. //>>excludeEnd("ctx");
  17615. }; }),
  17616. $globals.Set);
  17617. $core.addMethod(
  17618. $core.method({
  17619. selector: "jsConstructorNameOf:",
  17620. protocol: "private",
  17621. //>>excludeStart("ide", pragmas.excludeIdeData);
  17622. args: ["anObject"],
  17623. source: "jsConstructorNameOf: anObject\x0a\x09<inlineJS: 'return anObject.constructor && anObject.constructor.name'>",
  17624. referencedClasses: [],
  17625. //>>excludeEnd("ide");
  17626. pragmas: [["inlineJS:", ["return anObject.constructor && anObject.constructor.name"]]],
  17627. messageSends: []
  17628. }, function ($methodClass){ return function (anObject){
  17629. var self=this,$self=this;
  17630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17631. return $core.withContext(function($ctx1) {
  17632. //>>excludeEnd("ctx");
  17633. return anObject.constructor && anObject.constructor.name;
  17634. return self;
  17635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17636. }, function($ctx1) {$ctx1.fill(self,"jsConstructorNameOf:",{anObject:anObject})});
  17637. //>>excludeEnd("ctx");
  17638. }; }),
  17639. $globals.Set);
  17640. $core.addMethod(
  17641. $core.method({
  17642. selector: "printOn:",
  17643. protocol: "printing",
  17644. //>>excludeStart("ide", pragmas.excludeIdeData);
  17645. args: ["aStream"],
  17646. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09\x0a\x09aStream nextPutAll: ' ('.\x0a\x09self \x0a\x09\x09do: [ :each | each printOn: aStream ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ' ' ].\x0a\x09aStream nextPutAll: ')'",
  17647. referencedClasses: [],
  17648. //>>excludeEnd("ide");
  17649. pragmas: [],
  17650. messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:"]
  17651. }, function ($methodClass){ return function (aStream){
  17652. var self=this,$self=this;
  17653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17654. return $core.withContext(function($ctx1) {
  17655. //>>excludeEnd("ctx");
  17656. [(
  17657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17658. $ctx1.supercall = true,
  17659. //>>excludeEnd("ctx");
  17660. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  17661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17662. ,$ctx1.sendIdx["printOn:"]=1,$ctx1.supercall = false
  17663. //>>excludeEnd("ctx");
  17664. ][0];
  17665. [$recv(aStream)._nextPutAll_(" (")
  17666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17667. ,$ctx1.sendIdx["nextPutAll:"]=1
  17668. //>>excludeEnd("ctx");
  17669. ][0];
  17670. $self._do_separatedBy_((function(each){
  17671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17672. return $core.withContext(function($ctx2) {
  17673. //>>excludeEnd("ctx");
  17674. return $recv(each)._printOn_(aStream);
  17675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17676. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  17677. //>>excludeEnd("ctx");
  17678. }),(function(){
  17679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17680. return $core.withContext(function($ctx2) {
  17681. //>>excludeEnd("ctx");
  17682. return [$recv(aStream)._nextPutAll_(" ")
  17683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17684. ,$ctx2.sendIdx["nextPutAll:"]=2
  17685. //>>excludeEnd("ctx");
  17686. ][0];
  17687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17688. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  17689. //>>excludeEnd("ctx");
  17690. }));
  17691. $recv(aStream)._nextPutAll_(")");
  17692. return self;
  17693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17694. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  17695. //>>excludeEnd("ctx");
  17696. }; }),
  17697. $globals.Set);
  17698. $core.addMethod(
  17699. $core.method({
  17700. selector: "remove:ifAbsent:",
  17701. protocol: "adding/removing",
  17702. //>>excludeStart("ide", pragmas.excludeIdeData);
  17703. args: ["anObject", "aBlock"],
  17704. source: "remove: anObject ifAbsent: aBlock\x0a\x09| bucket |\x0a\x09bucket := self bucketsOfElement: anObject.\x0a\x09^ bucket second\x0a\x09\x09ifNil: [ | obj | obj := bucket first. bucket third remove: obj ifAbsent: [ ^aBlock value ]. size := size - 1. obj ]\x0a\x09\x09ifNotNil: [ :primitiveBucket | self remove: bucket first in: primitiveBucket ifAbsent: aBlock ]",
  17705. referencedClasses: [],
  17706. //>>excludeEnd("ide");
  17707. pragmas: [],
  17708. messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "first", "remove:ifAbsent:", "third", "value", "-", "remove:in:ifAbsent:"]
  17709. }, function ($methodClass){ return function (anObject,aBlock){
  17710. var self=this,$self=this;
  17711. var bucket;
  17712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17713. return $core.withContext(function($ctx1) {
  17714. //>>excludeEnd("ctx");
  17715. var $1;
  17716. var $early={};
  17717. try {
  17718. bucket=$self._bucketsOfElement_(anObject);
  17719. $1=$recv(bucket)._second();
  17720. if($1 == null || $1.a$nil){
  17721. var obj;
  17722. obj=[$recv(bucket)._first()
  17723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17724. ,$ctx1.sendIdx["first"]=1
  17725. //>>excludeEnd("ctx");
  17726. ][0];
  17727. $recv($recv(bucket)._third())._remove_ifAbsent_(obj,(function(){
  17728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17729. return $core.withContext(function($ctx2) {
  17730. //>>excludeEnd("ctx");
  17731. throw $early=[$recv(aBlock)._value()];
  17732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17733. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  17734. //>>excludeEnd("ctx");
  17735. }));
  17736. $self.size=$recv($self.size).__minus((1));
  17737. return obj;
  17738. } else {
  17739. var primitiveBucket;
  17740. primitiveBucket=$1;
  17741. return $self._remove_in_ifAbsent_($recv(bucket)._first(),primitiveBucket,aBlock);
  17742. }
  17743. }
  17744. catch(e) {if(e===$early)return e[0]; throw e}
  17745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17746. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock,bucket:bucket})});
  17747. //>>excludeEnd("ctx");
  17748. }; }),
  17749. $globals.Set);
  17750. $core.addMethod(
  17751. $core.method({
  17752. selector: "remove:in:ifAbsent:",
  17753. protocol: "private",
  17754. //>>excludeStart("ide", pragmas.excludeIdeData);
  17755. args: ["anObject", "anotherObject", "aBlock"],
  17756. source: "remove: anObject in: anotherObject ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09if (anObject in anotherObject.store) {\x0a\x09\x09\x09delete anotherObject.store[anObject];\x0a\x09\x09\x09$self.size--;\x0a\x09\x09\x09return anObject;\x0a\x09\x09} else {\x0a\x09\x09\x09return aBlock._value();\x0a\x09\x09}'>",
  17757. referencedClasses: [],
  17758. //>>excludeEnd("ide");
  17759. pragmas: [["inlineJS:", ["\x0a\x09\x09if (anObject in anotherObject.store) {\x0a\x09\x09\x09delete anotherObject.store[anObject];\x0a\x09\x09\x09$self.size--;\x0a\x09\x09\x09return anObject;\x0a\x09\x09} else {\x0a\x09\x09\x09return aBlock._value();\x0a\x09\x09}"]]],
  17760. messageSends: []
  17761. }, function ($methodClass){ return function (anObject,anotherObject,aBlock){
  17762. var self=this,$self=this;
  17763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17764. return $core.withContext(function($ctx1) {
  17765. //>>excludeEnd("ctx");
  17766. if (anObject in anotherObject.store) {
  17767. delete anotherObject.store[anObject];
  17768. $self.size--;
  17769. return anObject;
  17770. } else {
  17771. return aBlock._value();
  17772. };
  17773. return self;
  17774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17775. }, function($ctx1) {$ctx1.fill(self,"remove:in:ifAbsent:",{anObject:anObject,anotherObject:anotherObject,aBlock:aBlock})});
  17776. //>>excludeEnd("ctx");
  17777. }; }),
  17778. $globals.Set);
  17779. $core.addMethod(
  17780. $core.method({
  17781. selector: "removeAll",
  17782. protocol: "adding/removing",
  17783. //>>excludeStart("ide", pragmas.excludeIdeData);
  17784. args: [],
  17785. source: "removeAll\x0a\x09<inlineJS: '\x0a\x09\x09$self.fastBuckets = {\x0a\x09\x09\x09\x22boolean\x22: { store: Object.create(null), fn: function (x) { return {\x22true\x22: true, \x22false\x22: false, \x22null\x22: null}[x]; } },\x0a\x09\x09\x09\x22number\x22: { store: Object.create(null), fn: Number },\x0a\x09\x09\x09\x22string\x22: { store: Object.create(null) }\x0a\x09\x09};\x0a\x09\x09$self.slowBucketStores.forEach(function (x) { x._removeAll(); });\x0a\x09\x09$self.defaultBucket._removeAll();\x0a\x09\x09$self.size = 0;\x0a\x09'>",
  17786. referencedClasses: [],
  17787. //>>excludeEnd("ide");
  17788. pragmas: [["inlineJS:", ["\x0a\x09\x09$self.fastBuckets = {\x0a\x09\x09\x09\x22boolean\x22: { store: Object.create(null), fn: function (x) { return {\x22true\x22: true, \x22false\x22: false, \x22null\x22: null}[x]; } },\x0a\x09\x09\x09\x22number\x22: { store: Object.create(null), fn: Number },\x0a\x09\x09\x09\x22string\x22: { store: Object.create(null) }\x0a\x09\x09};\x0a\x09\x09$self.slowBucketStores.forEach(function (x) { x._removeAll(); });\x0a\x09\x09$self.defaultBucket._removeAll();\x0a\x09\x09$self.size = 0;\x0a\x09"]]],
  17789. messageSends: []
  17790. }, function ($methodClass){ return function (){
  17791. var self=this,$self=this;
  17792. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17793. return $core.withContext(function($ctx1) {
  17794. //>>excludeEnd("ctx");
  17795. $self.fastBuckets = {
  17796. "boolean": { store: Object.create(null), fn: function (x) { return {"true": true, "false": false, "null": null}[x]; } },
  17797. "number": { store: Object.create(null), fn: Number },
  17798. "string": { store: Object.create(null) }
  17799. };
  17800. $self.slowBucketStores.forEach(function (x) { x._removeAll(); });
  17801. $self.defaultBucket._removeAll();
  17802. $self.size = 0;
  17803. ;
  17804. return self;
  17805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17806. }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
  17807. //>>excludeEnd("ctx");
  17808. }; }),
  17809. $globals.Set);
  17810. $core.addMethod(
  17811. $core.method({
  17812. selector: "select:",
  17813. protocol: "enumerating",
  17814. //>>excludeStart("ide", pragmas.excludeIdeData);
  17815. args: ["aBlock"],
  17816. source: "select: aBlock\x0a\x09| collection |\x0a\x09collection := self class new.\x0a\x09self do: [ :each |\x0a\x09\x09(aBlock value: each) ifTrue: [\x0a\x09\x09\x09collection add: each ] ].\x0a\x09^ collection",
  17817. referencedClasses: [],
  17818. //>>excludeEnd("ide");
  17819. pragmas: [],
  17820. messageSends: ["new", "class", "do:", "ifTrue:", "value:", "add:"]
  17821. }, function ($methodClass){ return function (aBlock){
  17822. var self=this,$self=this;
  17823. var collection;
  17824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17825. return $core.withContext(function($ctx1) {
  17826. //>>excludeEnd("ctx");
  17827. collection=$recv($self._class())._new();
  17828. $self._do_((function(each){
  17829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17830. return $core.withContext(function($ctx2) {
  17831. //>>excludeEnd("ctx");
  17832. if($core.assert($recv(aBlock)._value_(each))){
  17833. return $recv(collection)._add_(each);
  17834. }
  17835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17836. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  17837. //>>excludeEnd("ctx");
  17838. }));
  17839. return collection;
  17840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17841. }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,collection:collection})});
  17842. //>>excludeEnd("ctx");
  17843. }; }),
  17844. $globals.Set);
  17845. $core.addMethod(
  17846. $core.method({
  17847. selector: "select:thenCollect:",
  17848. protocol: "enumerating",
  17849. //>>excludeStart("ide", pragmas.excludeIdeData);
  17850. args: ["selectBlock", "collectBlock"],
  17851. source: "select: selectBlock thenCollect: collectBlock\x0a\x09| collection |\x0a\x09collection := self class new.\x0a\x09self do: [ :each |\x0a\x09\x09(selectBlock value: each) ifTrue: [\x0a\x09\x09\x09collection add: (collectBlock value: each) ] ].\x0a\x09^ collection",
  17852. referencedClasses: [],
  17853. //>>excludeEnd("ide");
  17854. pragmas: [],
  17855. messageSends: ["new", "class", "do:", "ifTrue:", "value:", "add:"]
  17856. }, function ($methodClass){ return function (selectBlock,collectBlock){
  17857. var self=this,$self=this;
  17858. var collection;
  17859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17860. return $core.withContext(function($ctx1) {
  17861. //>>excludeEnd("ctx");
  17862. collection=$recv($self._class())._new();
  17863. $self._do_((function(each){
  17864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17865. return $core.withContext(function($ctx2) {
  17866. //>>excludeEnd("ctx");
  17867. if($core.assert([$recv(selectBlock)._value_(each)
  17868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17869. ,$ctx2.sendIdx["value:"]=1
  17870. //>>excludeEnd("ctx");
  17871. ][0])){
  17872. return $recv(collection)._add_($recv(collectBlock)._value_(each));
  17873. }
  17874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17875. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  17876. //>>excludeEnd("ctx");
  17877. }));
  17878. return collection;
  17879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17880. }, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,collection:collection})});
  17881. //>>excludeEnd("ctx");
  17882. }; }),
  17883. $globals.Set);
  17884. $core.addMethod(
  17885. $core.method({
  17886. selector: "size",
  17887. protocol: "accessing",
  17888. //>>excludeStart("ide", pragmas.excludeIdeData);
  17889. args: [],
  17890. source: "size\x0a\x09^ size",
  17891. referencedClasses: [],
  17892. //>>excludeEnd("ide");
  17893. pragmas: [],
  17894. messageSends: []
  17895. }, function ($methodClass){ return function (){
  17896. var self=this,$self=this;
  17897. return $self.size;
  17898. }; }),
  17899. $globals.Set);
  17900. $core.addClass("ProtoStream", $globals.Object, "Kernel-Collections");
  17901. //>>excludeStart("ide", pragmas.excludeIdeData);
  17902. $globals.ProtoStream.comment="I am the abstract base for different accessor for a sequence of objects. This sequence is referred to as my \x22contents\x22.\x0aMy instances are read/write streams modifying the contents.";
  17903. //>>excludeEnd("ide");
  17904. $core.addMethod(
  17905. $core.method({
  17906. selector: "<<",
  17907. protocol: "writing",
  17908. //>>excludeStart("ide", pragmas.excludeIdeData);
  17909. args: ["anObject"],
  17910. source: "<< anObject\x0a\x09self write: anObject",
  17911. referencedClasses: [],
  17912. //>>excludeEnd("ide");
  17913. pragmas: [],
  17914. messageSends: ["write:"]
  17915. }, function ($methodClass){ return function (anObject){
  17916. var self=this,$self=this;
  17917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17918. return $core.withContext(function($ctx1) {
  17919. //>>excludeEnd("ctx");
  17920. $self._write_(anObject);
  17921. return self;
  17922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17923. }, function($ctx1) {$ctx1.fill(self,"<<",{anObject:anObject})});
  17924. //>>excludeEnd("ctx");
  17925. }; }),
  17926. $globals.ProtoStream);
  17927. $core.addMethod(
  17928. $core.method({
  17929. selector: "atEnd",
  17930. protocol: "testing",
  17931. //>>excludeStart("ide", pragmas.excludeIdeData);
  17932. args: [],
  17933. source: "atEnd\x0a\x09self subclassResponsibility",
  17934. referencedClasses: [],
  17935. //>>excludeEnd("ide");
  17936. pragmas: [],
  17937. messageSends: ["subclassResponsibility"]
  17938. }, function ($methodClass){ return function (){
  17939. var self=this,$self=this;
  17940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17941. return $core.withContext(function($ctx1) {
  17942. //>>excludeEnd("ctx");
  17943. $self._subclassResponsibility();
  17944. return self;
  17945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17946. }, function($ctx1) {$ctx1.fill(self,"atEnd",{})});
  17947. //>>excludeEnd("ctx");
  17948. }; }),
  17949. $globals.ProtoStream);
  17950. $core.addMethod(
  17951. $core.method({
  17952. selector: "atStart",
  17953. protocol: "testing",
  17954. //>>excludeStart("ide", pragmas.excludeIdeData);
  17955. args: [],
  17956. source: "atStart\x0a\x09self subclassResponsibility",
  17957. referencedClasses: [],
  17958. //>>excludeEnd("ide");
  17959. pragmas: [],
  17960. messageSends: ["subclassResponsibility"]
  17961. }, function ($methodClass){ return function (){
  17962. var self=this,$self=this;
  17963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17964. return $core.withContext(function($ctx1) {
  17965. //>>excludeEnd("ctx");
  17966. $self._subclassResponsibility();
  17967. return self;
  17968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17969. }, function($ctx1) {$ctx1.fill(self,"atStart",{})});
  17970. //>>excludeEnd("ctx");
  17971. }; }),
  17972. $globals.ProtoStream);
  17973. $core.addMethod(
  17974. $core.method({
  17975. selector: "contents",
  17976. protocol: "accessing",
  17977. //>>excludeStart("ide", pragmas.excludeIdeData);
  17978. args: [],
  17979. source: "contents\x0a\x09self subclassResponsibility",
  17980. referencedClasses: [],
  17981. //>>excludeEnd("ide");
  17982. pragmas: [],
  17983. messageSends: ["subclassResponsibility"]
  17984. }, function ($methodClass){ return function (){
  17985. var self=this,$self=this;
  17986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17987. return $core.withContext(function($ctx1) {
  17988. //>>excludeEnd("ctx");
  17989. $self._subclassResponsibility();
  17990. return self;
  17991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17992. }, function($ctx1) {$ctx1.fill(self,"contents",{})});
  17993. //>>excludeEnd("ctx");
  17994. }; }),
  17995. $globals.ProtoStream);
  17996. $core.addMethod(
  17997. $core.method({
  17998. selector: "do:",
  17999. protocol: "enumerating",
  18000. //>>excludeStart("ide", pragmas.excludeIdeData);
  18001. args: ["aBlock"],
  18002. source: "do: aBlock\x0a\x09[ self atEnd ] whileFalse: [ aBlock value: self next ]",
  18003. referencedClasses: [],
  18004. //>>excludeEnd("ide");
  18005. pragmas: [],
  18006. messageSends: ["whileFalse:", "atEnd", "value:", "next"]
  18007. }, function ($methodClass){ return function (aBlock){
  18008. var self=this,$self=this;
  18009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18010. return $core.withContext(function($ctx1) {
  18011. //>>excludeEnd("ctx");
  18012. $recv((function(){
  18013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18014. return $core.withContext(function($ctx2) {
  18015. //>>excludeEnd("ctx");
  18016. return $self._atEnd();
  18017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18018. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  18019. //>>excludeEnd("ctx");
  18020. }))._whileFalse_((function(){
  18021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18022. return $core.withContext(function($ctx2) {
  18023. //>>excludeEnd("ctx");
  18024. return $recv(aBlock)._value_($self._next());
  18025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18026. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  18027. //>>excludeEnd("ctx");
  18028. }));
  18029. return self;
  18030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18031. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
  18032. //>>excludeEnd("ctx");
  18033. }; }),
  18034. $globals.ProtoStream);
  18035. $core.addMethod(
  18036. $core.method({
  18037. selector: "isEmpty",
  18038. protocol: "testing",
  18039. //>>excludeStart("ide", pragmas.excludeIdeData);
  18040. args: [],
  18041. source: "isEmpty\x0a\x09^ self atStart and: [ self atEnd ]",
  18042. referencedClasses: [],
  18043. //>>excludeEnd("ide");
  18044. pragmas: [],
  18045. messageSends: ["and:", "atStart", "atEnd"]
  18046. }, function ($methodClass){ return function (){
  18047. var self=this,$self=this;
  18048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18049. return $core.withContext(function($ctx1) {
  18050. //>>excludeEnd("ctx");
  18051. if($core.assert($self._atStart())){
  18052. return $self._atEnd();
  18053. } else {
  18054. return false;
  18055. }
  18056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18057. }, function($ctx1) {$ctx1.fill(self,"isEmpty",{})});
  18058. //>>excludeEnd("ctx");
  18059. }; }),
  18060. $globals.ProtoStream);
  18061. $core.addMethod(
  18062. $core.method({
  18063. selector: "next",
  18064. protocol: "reading",
  18065. //>>excludeStart("ide", pragmas.excludeIdeData);
  18066. args: [],
  18067. source: "next\x0a\x09^ self atEnd\x0a\x09\x09ifTrue: [ nil ]\x0a\x09\x09ifFalse: [ self subclassResponsibility ]",
  18068. referencedClasses: [],
  18069. //>>excludeEnd("ide");
  18070. pragmas: [],
  18071. messageSends: ["ifTrue:ifFalse:", "atEnd", "subclassResponsibility"]
  18072. }, function ($methodClass){ return function (){
  18073. var self=this,$self=this;
  18074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18075. return $core.withContext(function($ctx1) {
  18076. //>>excludeEnd("ctx");
  18077. if($core.assert($self._atEnd())){
  18078. return nil;
  18079. } else {
  18080. return $self._subclassResponsibility();
  18081. }
  18082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18083. }, function($ctx1) {$ctx1.fill(self,"next",{})});
  18084. //>>excludeEnd("ctx");
  18085. }; }),
  18086. $globals.ProtoStream);
  18087. $core.addMethod(
  18088. $core.method({
  18089. selector: "nextPut:",
  18090. protocol: "writing",
  18091. //>>excludeStart("ide", pragmas.excludeIdeData);
  18092. args: ["anObject"],
  18093. source: "nextPut: anObject\x0a\x09self subclassResponsibility",
  18094. referencedClasses: [],
  18095. //>>excludeEnd("ide");
  18096. pragmas: [],
  18097. messageSends: ["subclassResponsibility"]
  18098. }, function ($methodClass){ return function (anObject){
  18099. var self=this,$self=this;
  18100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18101. return $core.withContext(function($ctx1) {
  18102. //>>excludeEnd("ctx");
  18103. $self._subclassResponsibility();
  18104. return self;
  18105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18106. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject})});
  18107. //>>excludeEnd("ctx");
  18108. }; }),
  18109. $globals.ProtoStream);
  18110. $core.addMethod(
  18111. $core.method({
  18112. selector: "nextPutAll:",
  18113. protocol: "writing",
  18114. //>>excludeStart("ide", pragmas.excludeIdeData);
  18115. args: ["aCollection"],
  18116. source: "nextPutAll: aCollection\x0a\x09aCollection do: [ :each |\x0a\x09\x09self nextPut: each ]",
  18117. referencedClasses: [],
  18118. //>>excludeEnd("ide");
  18119. pragmas: [],
  18120. messageSends: ["do:", "nextPut:"]
  18121. }, function ($methodClass){ return function (aCollection){
  18122. var self=this,$self=this;
  18123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18124. return $core.withContext(function($ctx1) {
  18125. //>>excludeEnd("ctx");
  18126. $recv(aCollection)._do_((function(each){
  18127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18128. return $core.withContext(function($ctx2) {
  18129. //>>excludeEnd("ctx");
  18130. return $self._nextPut_(each);
  18131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18132. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  18133. //>>excludeEnd("ctx");
  18134. }));
  18135. return self;
  18136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18137. }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aCollection:aCollection})});
  18138. //>>excludeEnd("ctx");
  18139. }; }),
  18140. $globals.ProtoStream);
  18141. $core.addMethod(
  18142. $core.method({
  18143. selector: "nextPutString:",
  18144. protocol: "writing",
  18145. //>>excludeStart("ide", pragmas.excludeIdeData);
  18146. args: ["aString"],
  18147. source: "nextPutString: aString\x0a\x09self nextPut: aString",
  18148. referencedClasses: [],
  18149. //>>excludeEnd("ide");
  18150. pragmas: [],
  18151. messageSends: ["nextPut:"]
  18152. }, function ($methodClass){ return function (aString){
  18153. var self=this,$self=this;
  18154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18155. return $core.withContext(function($ctx1) {
  18156. //>>excludeEnd("ctx");
  18157. $self._nextPut_(aString);
  18158. return self;
  18159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18160. }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString})});
  18161. //>>excludeEnd("ctx");
  18162. }; }),
  18163. $globals.ProtoStream);
  18164. $core.addMethod(
  18165. $core.method({
  18166. selector: "peek",
  18167. protocol: "reading",
  18168. //>>excludeStart("ide", pragmas.excludeIdeData);
  18169. args: [],
  18170. source: "peek\x0a\x09^ self atEnd\x0a\x09\x09ifTrue: [ nil ]\x0a\x09\x09ifFalse: [ self subclassResponsibility ]",
  18171. referencedClasses: [],
  18172. //>>excludeEnd("ide");
  18173. pragmas: [],
  18174. messageSends: ["ifTrue:ifFalse:", "atEnd", "subclassResponsibility"]
  18175. }, function ($methodClass){ return function (){
  18176. var self=this,$self=this;
  18177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18178. return $core.withContext(function($ctx1) {
  18179. //>>excludeEnd("ctx");
  18180. if($core.assert($self._atEnd())){
  18181. return nil;
  18182. } else {
  18183. return $self._subclassResponsibility();
  18184. }
  18185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18186. }, function($ctx1) {$ctx1.fill(self,"peek",{})});
  18187. //>>excludeEnd("ctx");
  18188. }; }),
  18189. $globals.ProtoStream);
  18190. $core.addMethod(
  18191. $core.method({
  18192. selector: "reset",
  18193. protocol: "actions",
  18194. //>>excludeStart("ide", pragmas.excludeIdeData);
  18195. args: [],
  18196. source: "reset\x0a\x09self subclassResponsibility",
  18197. referencedClasses: [],
  18198. //>>excludeEnd("ide");
  18199. pragmas: [],
  18200. messageSends: ["subclassResponsibility"]
  18201. }, function ($methodClass){ return function (){
  18202. var self=this,$self=this;
  18203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18204. return $core.withContext(function($ctx1) {
  18205. //>>excludeEnd("ctx");
  18206. $self._subclassResponsibility();
  18207. return self;
  18208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18209. }, function($ctx1) {$ctx1.fill(self,"reset",{})});
  18210. //>>excludeEnd("ctx");
  18211. }; }),
  18212. $globals.ProtoStream);
  18213. $core.addMethod(
  18214. $core.method({
  18215. selector: "resetContents",
  18216. protocol: "actions",
  18217. //>>excludeStart("ide", pragmas.excludeIdeData);
  18218. args: [],
  18219. source: "resetContents\x0a\x09self subclassResponsibility",
  18220. referencedClasses: [],
  18221. //>>excludeEnd("ide");
  18222. pragmas: [],
  18223. messageSends: ["subclassResponsibility"]
  18224. }, function ($methodClass){ return function (){
  18225. var self=this,$self=this;
  18226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18227. return $core.withContext(function($ctx1) {
  18228. //>>excludeEnd("ctx");
  18229. $self._subclassResponsibility();
  18230. return self;
  18231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18232. }, function($ctx1) {$ctx1.fill(self,"resetContents",{})});
  18233. //>>excludeEnd("ctx");
  18234. }; }),
  18235. $globals.ProtoStream);
  18236. $core.addMethod(
  18237. $core.method({
  18238. selector: "setToEnd",
  18239. protocol: "positioning",
  18240. //>>excludeStart("ide", pragmas.excludeIdeData);
  18241. args: [],
  18242. source: "setToEnd\x0a\x09self subclassResponsibility",
  18243. referencedClasses: [],
  18244. //>>excludeEnd("ide");
  18245. pragmas: [],
  18246. messageSends: ["subclassResponsibility"]
  18247. }, function ($methodClass){ return function (){
  18248. var self=this,$self=this;
  18249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18250. return $core.withContext(function($ctx1) {
  18251. //>>excludeEnd("ctx");
  18252. $self._subclassResponsibility();
  18253. return self;
  18254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18255. }, function($ctx1) {$ctx1.fill(self,"setToEnd",{})});
  18256. //>>excludeEnd("ctx");
  18257. }; }),
  18258. $globals.ProtoStream);
  18259. $core.addMethod(
  18260. $core.method({
  18261. selector: "setToStart",
  18262. protocol: "positioning",
  18263. //>>excludeStart("ide", pragmas.excludeIdeData);
  18264. args: [],
  18265. source: "setToStart\x0a\x09self reset",
  18266. referencedClasses: [],
  18267. //>>excludeEnd("ide");
  18268. pragmas: [],
  18269. messageSends: ["reset"]
  18270. }, function ($methodClass){ return function (){
  18271. var self=this,$self=this;
  18272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18273. return $core.withContext(function($ctx1) {
  18274. //>>excludeEnd("ctx");
  18275. $self._reset();
  18276. return self;
  18277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18278. }, function($ctx1) {$ctx1.fill(self,"setToStart",{})});
  18279. //>>excludeEnd("ctx");
  18280. }; }),
  18281. $globals.ProtoStream);
  18282. $core.addMethod(
  18283. $core.method({
  18284. selector: "write:",
  18285. protocol: "writing",
  18286. //>>excludeStart("ide", pragmas.excludeIdeData);
  18287. args: ["anObject"],
  18288. source: "write: anObject\x0a\x09anObject putOn: self",
  18289. referencedClasses: [],
  18290. //>>excludeEnd("ide");
  18291. pragmas: [],
  18292. messageSends: ["putOn:"]
  18293. }, function ($methodClass){ return function (anObject){
  18294. var self=this,$self=this;
  18295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18296. return $core.withContext(function($ctx1) {
  18297. //>>excludeEnd("ctx");
  18298. $recv(anObject)._putOn_(self);
  18299. return self;
  18300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18301. }, function($ctx1) {$ctx1.fill(self,"write:",{anObject:anObject})});
  18302. //>>excludeEnd("ctx");
  18303. }; }),
  18304. $globals.ProtoStream);
  18305. $core.addMethod(
  18306. $core.method({
  18307. selector: "on:",
  18308. protocol: "instance creation",
  18309. //>>excludeStart("ide", pragmas.excludeIdeData);
  18310. args: ["aCollection"],
  18311. source: "on: aCollection\x0a\x09\x09^ self new\x0a\x09\x09setCollection: aCollection;\x0a\x09\x09setStreamSize: aCollection size;\x0a\x09\x09yourself",
  18312. referencedClasses: [],
  18313. //>>excludeEnd("ide");
  18314. pragmas: [],
  18315. messageSends: ["setCollection:", "new", "setStreamSize:", "size", "yourself"]
  18316. }, function ($methodClass){ return function (aCollection){
  18317. var self=this,$self=this;
  18318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18319. return $core.withContext(function($ctx1) {
  18320. //>>excludeEnd("ctx");
  18321. var $1;
  18322. $1=$self._new();
  18323. $recv($1)._setCollection_(aCollection);
  18324. $recv($1)._setStreamSize_($recv(aCollection)._size());
  18325. return $recv($1)._yourself();
  18326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18327. }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection})});
  18328. //>>excludeEnd("ctx");
  18329. }; }),
  18330. $globals.ProtoStream.a$cls);
  18331. $core.addClass("Stream", $globals.ProtoStream, "Kernel-Collections");
  18332. $core.setSlots($globals.Stream, ["collection", "position", "streamSize"]);
  18333. //>>excludeStart("ide", pragmas.excludeIdeData);
  18334. $globals.Stream.comment="I represent an accessor for a sequence of objects. This sequence is referred to as my \x22contents\x22.\x0aMy instances are read/write streams to the contents sequence collection.";
  18335. //>>excludeEnd("ide");
  18336. $core.addMethod(
  18337. $core.method({
  18338. selector: "atEnd",
  18339. protocol: "testing",
  18340. //>>excludeStart("ide", pragmas.excludeIdeData);
  18341. args: [],
  18342. source: "atEnd\x0a\x09^ self position = self size",
  18343. referencedClasses: [],
  18344. //>>excludeEnd("ide");
  18345. pragmas: [],
  18346. messageSends: ["=", "position", "size"]
  18347. }, function ($methodClass){ return function (){
  18348. var self=this,$self=this;
  18349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18350. return $core.withContext(function($ctx1) {
  18351. //>>excludeEnd("ctx");
  18352. return $recv($self._position()).__eq($self._size());
  18353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18354. }, function($ctx1) {$ctx1.fill(self,"atEnd",{})});
  18355. //>>excludeEnd("ctx");
  18356. }; }),
  18357. $globals.Stream);
  18358. $core.addMethod(
  18359. $core.method({
  18360. selector: "atStart",
  18361. protocol: "testing",
  18362. //>>excludeStart("ide", pragmas.excludeIdeData);
  18363. args: [],
  18364. source: "atStart\x0a\x09^ self position = 0",
  18365. referencedClasses: [],
  18366. //>>excludeEnd("ide");
  18367. pragmas: [],
  18368. messageSends: ["=", "position"]
  18369. }, function ($methodClass){ return function (){
  18370. var self=this,$self=this;
  18371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18372. return $core.withContext(function($ctx1) {
  18373. //>>excludeEnd("ctx");
  18374. return $recv($self._position()).__eq((0));
  18375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18376. }, function($ctx1) {$ctx1.fill(self,"atStart",{})});
  18377. //>>excludeEnd("ctx");
  18378. }; }),
  18379. $globals.Stream);
  18380. $core.addMethod(
  18381. $core.method({
  18382. selector: "close",
  18383. protocol: "actions",
  18384. //>>excludeStart("ide", pragmas.excludeIdeData);
  18385. args: [],
  18386. source: "close",
  18387. referencedClasses: [],
  18388. //>>excludeEnd("ide");
  18389. pragmas: [],
  18390. messageSends: []
  18391. }, function ($methodClass){ return function (){
  18392. var self=this,$self=this;
  18393. return self;
  18394. }; }),
  18395. $globals.Stream);
  18396. $core.addMethod(
  18397. $core.method({
  18398. selector: "collection",
  18399. protocol: "accessing",
  18400. //>>excludeStart("ide", pragmas.excludeIdeData);
  18401. args: [],
  18402. source: "collection\x0a\x09^ collection",
  18403. referencedClasses: [],
  18404. //>>excludeEnd("ide");
  18405. pragmas: [],
  18406. messageSends: []
  18407. }, function ($methodClass){ return function (){
  18408. var self=this,$self=this;
  18409. return $self.collection;
  18410. }; }),
  18411. $globals.Stream);
  18412. $core.addMethod(
  18413. $core.method({
  18414. selector: "contents",
  18415. protocol: "accessing",
  18416. //>>excludeStart("ide", pragmas.excludeIdeData);
  18417. args: [],
  18418. source: "contents\x0a\x09^ self collection\x0a\x09\x09copyFrom: 1\x0a\x09\x09to: self streamSize",
  18419. referencedClasses: [],
  18420. //>>excludeEnd("ide");
  18421. pragmas: [],
  18422. messageSends: ["copyFrom:to:", "collection", "streamSize"]
  18423. }, function ($methodClass){ return function (){
  18424. var self=this,$self=this;
  18425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18426. return $core.withContext(function($ctx1) {
  18427. //>>excludeEnd("ctx");
  18428. return $recv($self._collection())._copyFrom_to_((1),$self._streamSize());
  18429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18430. }, function($ctx1) {$ctx1.fill(self,"contents",{})});
  18431. //>>excludeEnd("ctx");
  18432. }; }),
  18433. $globals.Stream);
  18434. $core.addMethod(
  18435. $core.method({
  18436. selector: "flush",
  18437. protocol: "actions",
  18438. //>>excludeStart("ide", pragmas.excludeIdeData);
  18439. args: [],
  18440. source: "flush",
  18441. referencedClasses: [],
  18442. //>>excludeEnd("ide");
  18443. pragmas: [],
  18444. messageSends: []
  18445. }, function ($methodClass){ return function (){
  18446. var self=this,$self=this;
  18447. return self;
  18448. }; }),
  18449. $globals.Stream);
  18450. $core.addMethod(
  18451. $core.method({
  18452. selector: "isEmpty",
  18453. protocol: "testing",
  18454. //>>excludeStart("ide", pragmas.excludeIdeData);
  18455. args: [],
  18456. source: "isEmpty\x0a\x09^ self size = 0",
  18457. referencedClasses: [],
  18458. //>>excludeEnd("ide");
  18459. pragmas: [],
  18460. messageSends: ["=", "size"]
  18461. }, function ($methodClass){ return function (){
  18462. var self=this,$self=this;
  18463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18464. return $core.withContext(function($ctx1) {
  18465. //>>excludeEnd("ctx");
  18466. return $recv($self._size()).__eq((0));
  18467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18468. }, function($ctx1) {$ctx1.fill(self,"isEmpty",{})});
  18469. //>>excludeEnd("ctx");
  18470. }; }),
  18471. $globals.Stream);
  18472. $core.addMethod(
  18473. $core.method({
  18474. selector: "next",
  18475. protocol: "reading",
  18476. //>>excludeStart("ide", pragmas.excludeIdeData);
  18477. args: [],
  18478. source: "next\x0a\x09^ self atEnd\x0a\x09\x09ifTrue: [ nil ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09self position: self position + 1.\x0a\x09\x09\x09collection at: self position ]",
  18479. referencedClasses: [],
  18480. //>>excludeEnd("ide");
  18481. pragmas: [],
  18482. messageSends: ["ifTrue:ifFalse:", "atEnd", "position:", "+", "position", "at:"]
  18483. }, function ($methodClass){ return function (){
  18484. var self=this,$self=this;
  18485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18486. return $core.withContext(function($ctx1) {
  18487. //>>excludeEnd("ctx");
  18488. if($core.assert($self._atEnd())){
  18489. return nil;
  18490. } else {
  18491. $self._position_($recv([$self._position()
  18492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18493. ,$ctx1.sendIdx["position"]=1
  18494. //>>excludeEnd("ctx");
  18495. ][0]).__plus((1)));
  18496. return $recv($self.collection)._at_($self._position());
  18497. }
  18498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18499. }, function($ctx1) {$ctx1.fill(self,"next",{})});
  18500. //>>excludeEnd("ctx");
  18501. }; }),
  18502. $globals.Stream);
  18503. $core.addMethod(
  18504. $core.method({
  18505. selector: "next:",
  18506. protocol: "reading",
  18507. //>>excludeStart("ide", pragmas.excludeIdeData);
  18508. args: ["anInteger"],
  18509. source: "next: anInteger\x0a\x09| tempCollection |\x0a\x09tempCollection := self collection class new.\x0a\x09anInteger timesRepeat: [\x0a\x09\x09self atEnd ifFalse: [\x0a\x09\x09tempCollection add: self next ]].\x0a\x09^ tempCollection",
  18510. referencedClasses: [],
  18511. //>>excludeEnd("ide");
  18512. pragmas: [],
  18513. messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", "add:", "next"]
  18514. }, function ($methodClass){ return function (anInteger){
  18515. var self=this,$self=this;
  18516. var tempCollection;
  18517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18518. return $core.withContext(function($ctx1) {
  18519. //>>excludeEnd("ctx");
  18520. tempCollection=$recv($recv($self._collection())._class())._new();
  18521. $recv(anInteger)._timesRepeat_((function(){
  18522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18523. return $core.withContext(function($ctx2) {
  18524. //>>excludeEnd("ctx");
  18525. if(!$core.assert($self._atEnd())){
  18526. return $recv(tempCollection)._add_($self._next());
  18527. }
  18528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18529. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  18530. //>>excludeEnd("ctx");
  18531. }));
  18532. return tempCollection;
  18533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18534. }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection})});
  18535. //>>excludeEnd("ctx");
  18536. }; }),
  18537. $globals.Stream);
  18538. $core.addMethod(
  18539. $core.method({
  18540. selector: "nextPut:",
  18541. protocol: "writing",
  18542. //>>excludeStart("ide", pragmas.excludeIdeData);
  18543. args: ["anObject"],
  18544. source: "nextPut: anObject\x0a\x09self position: self position + 1.\x0a\x09self collection at: self position put: anObject.\x0a\x09self setStreamSize: (self streamSize max: self position)",
  18545. referencedClasses: [],
  18546. //>>excludeEnd("ide");
  18547. pragmas: [],
  18548. messageSends: ["position:", "+", "position", "at:put:", "collection", "setStreamSize:", "max:", "streamSize"]
  18549. }, function ($methodClass){ return function (anObject){
  18550. var self=this,$self=this;
  18551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18552. return $core.withContext(function($ctx1) {
  18553. //>>excludeEnd("ctx");
  18554. $self._position_($recv([$self._position()
  18555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18556. ,$ctx1.sendIdx["position"]=1
  18557. //>>excludeEnd("ctx");
  18558. ][0]).__plus((1)));
  18559. $recv($self._collection())._at_put_([$self._position()
  18560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18561. ,$ctx1.sendIdx["position"]=2
  18562. //>>excludeEnd("ctx");
  18563. ][0],anObject);
  18564. $self._setStreamSize_($recv($self._streamSize())._max_($self._position()));
  18565. return self;
  18566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18567. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject})});
  18568. //>>excludeEnd("ctx");
  18569. }; }),
  18570. $globals.Stream);
  18571. $core.addMethod(
  18572. $core.method({
  18573. selector: "peek",
  18574. protocol: "reading",
  18575. //>>excludeStart("ide", pragmas.excludeIdeData);
  18576. args: [],
  18577. source: "peek\x0a\x09^ self atEnd ifFalse: [\x0a\x09\x09self collection at: self position + 1 ]",
  18578. referencedClasses: [],
  18579. //>>excludeEnd("ide");
  18580. pragmas: [],
  18581. messageSends: ["ifFalse:", "atEnd", "at:", "collection", "+", "position"]
  18582. }, function ($methodClass){ return function (){
  18583. var self=this,$self=this;
  18584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18585. return $core.withContext(function($ctx1) {
  18586. //>>excludeEnd("ctx");
  18587. if(!$core.assert($self._atEnd())){
  18588. return $recv($self._collection())._at_($recv($self._position()).__plus((1)));
  18589. }
  18590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18591. }, function($ctx1) {$ctx1.fill(self,"peek",{})});
  18592. //>>excludeEnd("ctx");
  18593. }; }),
  18594. $globals.Stream);
  18595. $core.addMethod(
  18596. $core.method({
  18597. selector: "position",
  18598. protocol: "accessing",
  18599. //>>excludeStart("ide", pragmas.excludeIdeData);
  18600. args: [],
  18601. source: "position\x0a\x09^ position ifNil: [ position := 0 ]",
  18602. referencedClasses: [],
  18603. //>>excludeEnd("ide");
  18604. pragmas: [],
  18605. messageSends: ["ifNil:"]
  18606. }, function ($methodClass){ return function (){
  18607. var self=this,$self=this;
  18608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18609. return $core.withContext(function($ctx1) {
  18610. //>>excludeEnd("ctx");
  18611. var $1;
  18612. $1=$self.position;
  18613. if($1 == null || $1.a$nil){
  18614. $self.position=(0);
  18615. return $self.position;
  18616. } else {
  18617. return $1;
  18618. }
  18619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18620. }, function($ctx1) {$ctx1.fill(self,"position",{})});
  18621. //>>excludeEnd("ctx");
  18622. }; }),
  18623. $globals.Stream);
  18624. $core.addMethod(
  18625. $core.method({
  18626. selector: "position:",
  18627. protocol: "accessing",
  18628. //>>excludeStart("ide", pragmas.excludeIdeData);
  18629. args: ["anInteger"],
  18630. source: "position: anInteger\x0a\x09position := anInteger",
  18631. referencedClasses: [],
  18632. //>>excludeEnd("ide");
  18633. pragmas: [],
  18634. messageSends: []
  18635. }, function ($methodClass){ return function (anInteger){
  18636. var self=this,$self=this;
  18637. $self.position=anInteger;
  18638. return self;
  18639. }; }),
  18640. $globals.Stream);
  18641. $core.addMethod(
  18642. $core.method({
  18643. selector: "reset",
  18644. protocol: "actions",
  18645. //>>excludeStart("ide", pragmas.excludeIdeData);
  18646. args: [],
  18647. source: "reset\x0a\x09self position: 0",
  18648. referencedClasses: [],
  18649. //>>excludeEnd("ide");
  18650. pragmas: [],
  18651. messageSends: ["position:"]
  18652. }, function ($methodClass){ return function (){
  18653. var self=this,$self=this;
  18654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18655. return $core.withContext(function($ctx1) {
  18656. //>>excludeEnd("ctx");
  18657. $self._position_((0));
  18658. return self;
  18659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18660. }, function($ctx1) {$ctx1.fill(self,"reset",{})});
  18661. //>>excludeEnd("ctx");
  18662. }; }),
  18663. $globals.Stream);
  18664. $core.addMethod(
  18665. $core.method({
  18666. selector: "resetContents",
  18667. protocol: "actions",
  18668. //>>excludeStart("ide", pragmas.excludeIdeData);
  18669. args: [],
  18670. source: "resetContents\x0a\x09self reset.\x0a\x09self setStreamSize: 0",
  18671. referencedClasses: [],
  18672. //>>excludeEnd("ide");
  18673. pragmas: [],
  18674. messageSends: ["reset", "setStreamSize:"]
  18675. }, function ($methodClass){ return function (){
  18676. var self=this,$self=this;
  18677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18678. return $core.withContext(function($ctx1) {
  18679. //>>excludeEnd("ctx");
  18680. $self._reset();
  18681. $self._setStreamSize_((0));
  18682. return self;
  18683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18684. }, function($ctx1) {$ctx1.fill(self,"resetContents",{})});
  18685. //>>excludeEnd("ctx");
  18686. }; }),
  18687. $globals.Stream);
  18688. $core.addMethod(
  18689. $core.method({
  18690. selector: "setCollection:",
  18691. protocol: "accessing",
  18692. //>>excludeStart("ide", pragmas.excludeIdeData);
  18693. args: ["aCollection"],
  18694. source: "setCollection: aCollection\x0a\x09collection := aCollection",
  18695. referencedClasses: [],
  18696. //>>excludeEnd("ide");
  18697. pragmas: [],
  18698. messageSends: []
  18699. }, function ($methodClass){ return function (aCollection){
  18700. var self=this,$self=this;
  18701. $self.collection=aCollection;
  18702. return self;
  18703. }; }),
  18704. $globals.Stream);
  18705. $core.addMethod(
  18706. $core.method({
  18707. selector: "setStreamSize:",
  18708. protocol: "accessing",
  18709. //>>excludeStart("ide", pragmas.excludeIdeData);
  18710. args: ["anInteger"],
  18711. source: "setStreamSize: anInteger\x0a\x09streamSize := anInteger",
  18712. referencedClasses: [],
  18713. //>>excludeEnd("ide");
  18714. pragmas: [],
  18715. messageSends: []
  18716. }, function ($methodClass){ return function (anInteger){
  18717. var self=this,$self=this;
  18718. $self.streamSize=anInteger;
  18719. return self;
  18720. }; }),
  18721. $globals.Stream);
  18722. $core.addMethod(
  18723. $core.method({
  18724. selector: "setToEnd",
  18725. protocol: "positioning",
  18726. //>>excludeStart("ide", pragmas.excludeIdeData);
  18727. args: [],
  18728. source: "setToEnd\x0a\x09self position: self size",
  18729. referencedClasses: [],
  18730. //>>excludeEnd("ide");
  18731. pragmas: [],
  18732. messageSends: ["position:", "size"]
  18733. }, function ($methodClass){ return function (){
  18734. var self=this,$self=this;
  18735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18736. return $core.withContext(function($ctx1) {
  18737. //>>excludeEnd("ctx");
  18738. $self._position_($self._size());
  18739. return self;
  18740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18741. }, function($ctx1) {$ctx1.fill(self,"setToEnd",{})});
  18742. //>>excludeEnd("ctx");
  18743. }; }),
  18744. $globals.Stream);
  18745. $core.addMethod(
  18746. $core.method({
  18747. selector: "size",
  18748. protocol: "accessing",
  18749. //>>excludeStart("ide", pragmas.excludeIdeData);
  18750. args: [],
  18751. source: "size\x0a\x09^ self streamSize",
  18752. referencedClasses: [],
  18753. //>>excludeEnd("ide");
  18754. pragmas: [],
  18755. messageSends: ["streamSize"]
  18756. }, function ($methodClass){ return function (){
  18757. var self=this,$self=this;
  18758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18759. return $core.withContext(function($ctx1) {
  18760. //>>excludeEnd("ctx");
  18761. return $self._streamSize();
  18762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18763. }, function($ctx1) {$ctx1.fill(self,"size",{})});
  18764. //>>excludeEnd("ctx");
  18765. }; }),
  18766. $globals.Stream);
  18767. $core.addMethod(
  18768. $core.method({
  18769. selector: "skip:",
  18770. protocol: "positioning",
  18771. //>>excludeStart("ide", pragmas.excludeIdeData);
  18772. args: ["anInteger"],
  18773. source: "skip: anInteger\x0a\x09self position: ((self position + anInteger) min: self size max: 0)",
  18774. referencedClasses: [],
  18775. //>>excludeEnd("ide");
  18776. pragmas: [],
  18777. messageSends: ["position:", "min:max:", "+", "position", "size"]
  18778. }, function ($methodClass){ return function (anInteger){
  18779. var self=this,$self=this;
  18780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18781. return $core.withContext(function($ctx1) {
  18782. //>>excludeEnd("ctx");
  18783. $self._position_($recv($recv($self._position()).__plus(anInteger))._min_max_($self._size(),(0)));
  18784. return self;
  18785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18786. }, function($ctx1) {$ctx1.fill(self,"skip:",{anInteger:anInteger})});
  18787. //>>excludeEnd("ctx");
  18788. }; }),
  18789. $globals.Stream);
  18790. $core.addMethod(
  18791. $core.method({
  18792. selector: "streamSize",
  18793. protocol: "accessing",
  18794. //>>excludeStart("ide", pragmas.excludeIdeData);
  18795. args: [],
  18796. source: "streamSize\x0a\x09^ streamSize",
  18797. referencedClasses: [],
  18798. //>>excludeEnd("ide");
  18799. pragmas: [],
  18800. messageSends: []
  18801. }, function ($methodClass){ return function (){
  18802. var self=this,$self=this;
  18803. return $self.streamSize;
  18804. }; }),
  18805. $globals.Stream);
  18806. $core.addMethod(
  18807. $core.method({
  18808. selector: "on:",
  18809. protocol: "instance creation",
  18810. //>>excludeStart("ide", pragmas.excludeIdeData);
  18811. args: ["aCollection"],
  18812. source: "on: aCollection\x0a\x09\x09^ self new\x0a\x09\x09setCollection: aCollection;\x0a\x09\x09setStreamSize: aCollection size;\x0a\x09\x09yourself",
  18813. referencedClasses: [],
  18814. //>>excludeEnd("ide");
  18815. pragmas: [],
  18816. messageSends: ["setCollection:", "new", "setStreamSize:", "size", "yourself"]
  18817. }, function ($methodClass){ return function (aCollection){
  18818. var self=this,$self=this;
  18819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18820. return $core.withContext(function($ctx1) {
  18821. //>>excludeEnd("ctx");
  18822. var $1;
  18823. $1=$self._new();
  18824. $recv($1)._setCollection_(aCollection);
  18825. $recv($1)._setStreamSize_($recv(aCollection)._size());
  18826. return $recv($1)._yourself();
  18827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18828. }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection})});
  18829. //>>excludeEnd("ctx");
  18830. }; }),
  18831. $globals.Stream.a$cls);
  18832. $core.addClass("StringStream", $globals.Stream, "Kernel-Collections");
  18833. //>>excludeStart("ide", pragmas.excludeIdeData);
  18834. $globals.StringStream.comment="I am a Stream specific to `String` objects.";
  18835. //>>excludeEnd("ide");
  18836. $core.addMethod(
  18837. $core.method({
  18838. selector: "cr",
  18839. protocol: "writing",
  18840. //>>excludeStart("ide", pragmas.excludeIdeData);
  18841. args: [],
  18842. source: "cr\x0a\x09^ self nextPutAll: String cr",
  18843. referencedClasses: ["String"],
  18844. //>>excludeEnd("ide");
  18845. pragmas: [],
  18846. messageSends: ["nextPutAll:", "cr"]
  18847. }, function ($methodClass){ return function (){
  18848. var self=this,$self=this;
  18849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18850. return $core.withContext(function($ctx1) {
  18851. //>>excludeEnd("ctx");
  18852. return $self._nextPutAll_($recv($globals.String)._cr());
  18853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18854. }, function($ctx1) {$ctx1.fill(self,"cr",{})});
  18855. //>>excludeEnd("ctx");
  18856. }; }),
  18857. $globals.StringStream);
  18858. $core.addMethod(
  18859. $core.method({
  18860. selector: "crlf",
  18861. protocol: "writing",
  18862. //>>excludeStart("ide", pragmas.excludeIdeData);
  18863. args: [],
  18864. source: "crlf\x0a\x09^ self nextPutAll: String crlf",
  18865. referencedClasses: ["String"],
  18866. //>>excludeEnd("ide");
  18867. pragmas: [],
  18868. messageSends: ["nextPutAll:", "crlf"]
  18869. }, function ($methodClass){ return function (){
  18870. var self=this,$self=this;
  18871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18872. return $core.withContext(function($ctx1) {
  18873. //>>excludeEnd("ctx");
  18874. return $self._nextPutAll_($recv($globals.String)._crlf());
  18875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18876. }, function($ctx1) {$ctx1.fill(self,"crlf",{})});
  18877. //>>excludeEnd("ctx");
  18878. }; }),
  18879. $globals.StringStream);
  18880. $core.addMethod(
  18881. $core.method({
  18882. selector: "lf",
  18883. protocol: "writing",
  18884. //>>excludeStart("ide", pragmas.excludeIdeData);
  18885. args: [],
  18886. source: "lf\x0a\x09^ self nextPutAll: String lf",
  18887. referencedClasses: ["String"],
  18888. //>>excludeEnd("ide");
  18889. pragmas: [],
  18890. messageSends: ["nextPutAll:", "lf"]
  18891. }, function ($methodClass){ return function (){
  18892. var self=this,$self=this;
  18893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18894. return $core.withContext(function($ctx1) {
  18895. //>>excludeEnd("ctx");
  18896. return $self._nextPutAll_($recv($globals.String)._lf());
  18897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18898. }, function($ctx1) {$ctx1.fill(self,"lf",{})});
  18899. //>>excludeEnd("ctx");
  18900. }; }),
  18901. $globals.StringStream);
  18902. $core.addMethod(
  18903. $core.method({
  18904. selector: "next:",
  18905. protocol: "reading",
  18906. //>>excludeStart("ide", pragmas.excludeIdeData);
  18907. args: ["anInteger"],
  18908. source: "next: anInteger\x0a\x09| tempCollection |\x0a\x09tempCollection := self collection class new.\x0a\x09anInteger timesRepeat: [\x0a\x09\x09self atEnd ifFalse: [\x0a\x09\x09tempCollection := tempCollection, self next ]].\x0a\x09^ tempCollection",
  18909. referencedClasses: [],
  18910. //>>excludeEnd("ide");
  18911. pragmas: [],
  18912. messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", ",", "next"]
  18913. }, function ($methodClass){ return function (anInteger){
  18914. var self=this,$self=this;
  18915. var tempCollection;
  18916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18917. return $core.withContext(function($ctx1) {
  18918. //>>excludeEnd("ctx");
  18919. tempCollection=$recv($recv($self._collection())._class())._new();
  18920. $recv(anInteger)._timesRepeat_((function(){
  18921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18922. return $core.withContext(function($ctx2) {
  18923. //>>excludeEnd("ctx");
  18924. if(!$core.assert($self._atEnd())){
  18925. tempCollection=$recv(tempCollection).__comma($self._next());
  18926. return tempCollection;
  18927. }
  18928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18929. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  18930. //>>excludeEnd("ctx");
  18931. }));
  18932. return tempCollection;
  18933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18934. }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection})});
  18935. //>>excludeEnd("ctx");
  18936. }; }),
  18937. $globals.StringStream);
  18938. $core.addMethod(
  18939. $core.method({
  18940. selector: "nextPut:",
  18941. protocol: "writing",
  18942. //>>excludeStart("ide", pragmas.excludeIdeData);
  18943. args: ["aString"],
  18944. source: "nextPut: aString\x0a\x09self nextPutAll: aString",
  18945. referencedClasses: [],
  18946. //>>excludeEnd("ide");
  18947. pragmas: [],
  18948. messageSends: ["nextPutAll:"]
  18949. }, function ($methodClass){ return function (aString){
  18950. var self=this,$self=this;
  18951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18952. return $core.withContext(function($ctx1) {
  18953. //>>excludeEnd("ctx");
  18954. $self._nextPutAll_(aString);
  18955. return self;
  18956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18957. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString})});
  18958. //>>excludeEnd("ctx");
  18959. }; }),
  18960. $globals.StringStream);
  18961. $core.addMethod(
  18962. $core.method({
  18963. selector: "nextPutAll:",
  18964. protocol: "writing",
  18965. //>>excludeStart("ide", pragmas.excludeIdeData);
  18966. args: ["aString"],
  18967. source: "nextPutAll: aString\x0a\x09| pre post |\x0a\x09self position = self collection size ifTrue: [ self setCollection: self collection, aString ] ifFalse: [\x0a\x09\x09pre := self collection copyFrom: 1 to: self position.\x0a\x09\x09post := self collection copyFrom: (self position + 1 + aString size) to: self collection size.\x0a\x09\x09self setCollection: pre, aString, post\x0a\x09].\x0a\x09self position: self position + aString size.\x0a\x09self setStreamSize: (self streamSize max: self position)",
  18968. referencedClasses: [],
  18969. //>>excludeEnd("ide");
  18970. pragmas: [],
  18971. messageSends: ["ifTrue:ifFalse:", "=", "position", "size", "collection", "setCollection:", ",", "copyFrom:to:", "+", "position:", "setStreamSize:", "max:", "streamSize"]
  18972. }, function ($methodClass){ return function (aString){
  18973. var self=this,$self=this;
  18974. var pre,post;
  18975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18976. return $core.withContext(function($ctx1) {
  18977. //>>excludeEnd("ctx");
  18978. if($core.assert($recv([$self._position()
  18979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18980. ,$ctx1.sendIdx["position"]=1
  18981. //>>excludeEnd("ctx");
  18982. ][0]).__eq([$recv([$self._collection()
  18983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18984. ,$ctx1.sendIdx["collection"]=1
  18985. //>>excludeEnd("ctx");
  18986. ][0])._size()
  18987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18988. ,$ctx1.sendIdx["size"]=1
  18989. //>>excludeEnd("ctx");
  18990. ][0]))){
  18991. [$self._setCollection_([$recv([$self._collection()
  18992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18993. ,$ctx1.sendIdx["collection"]=2
  18994. //>>excludeEnd("ctx");
  18995. ][0]).__comma(aString)
  18996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18997. ,$ctx1.sendIdx[","]=1
  18998. //>>excludeEnd("ctx");
  18999. ][0])
  19000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19001. ,$ctx1.sendIdx["setCollection:"]=1
  19002. //>>excludeEnd("ctx");
  19003. ][0];
  19004. } else {
  19005. pre=[$recv([$self._collection()
  19006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19007. ,$ctx1.sendIdx["collection"]=3
  19008. //>>excludeEnd("ctx");
  19009. ][0])._copyFrom_to_((1),[$self._position()
  19010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19011. ,$ctx1.sendIdx["position"]=2
  19012. //>>excludeEnd("ctx");
  19013. ][0])
  19014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19015. ,$ctx1.sendIdx["copyFrom:to:"]=1
  19016. //>>excludeEnd("ctx");
  19017. ][0];
  19018. post=$recv([$self._collection()
  19019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19020. ,$ctx1.sendIdx["collection"]=4
  19021. //>>excludeEnd("ctx");
  19022. ][0])._copyFrom_to_([$recv([$recv([$self._position()
  19023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19024. ,$ctx1.sendIdx["position"]=3
  19025. //>>excludeEnd("ctx");
  19026. ][0]).__plus((1))
  19027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19028. ,$ctx1.sendIdx["+"]=2
  19029. //>>excludeEnd("ctx");
  19030. ][0]).__plus([$recv(aString)._size()
  19031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19032. ,$ctx1.sendIdx["size"]=2
  19033. //>>excludeEnd("ctx");
  19034. ][0])
  19035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19036. ,$ctx1.sendIdx["+"]=1
  19037. //>>excludeEnd("ctx");
  19038. ][0],[$recv($self._collection())._size()
  19039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19040. ,$ctx1.sendIdx["size"]=3
  19041. //>>excludeEnd("ctx");
  19042. ][0]);
  19043. $self._setCollection_([$recv($recv(pre).__comma(aString)).__comma(post)
  19044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19045. ,$ctx1.sendIdx[","]=2
  19046. //>>excludeEnd("ctx");
  19047. ][0]);
  19048. }
  19049. $self._position_($recv([$self._position()
  19050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19051. ,$ctx1.sendIdx["position"]=4
  19052. //>>excludeEnd("ctx");
  19053. ][0]).__plus($recv(aString)._size()));
  19054. $self._setStreamSize_($recv($self._streamSize())._max_($self._position()));
  19055. return self;
  19056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19057. }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString,pre:pre,post:post})});
  19058. //>>excludeEnd("ctx");
  19059. }; }),
  19060. $globals.StringStream);
  19061. $core.addMethod(
  19062. $core.method({
  19063. selector: "nextPutString:",
  19064. protocol: "writing",
  19065. //>>excludeStart("ide", pragmas.excludeIdeData);
  19066. args: ["aString"],
  19067. source: "nextPutString: aString\x0a\x09self nextPutAll: aString",
  19068. referencedClasses: [],
  19069. //>>excludeEnd("ide");
  19070. pragmas: [],
  19071. messageSends: ["nextPutAll:"]
  19072. }, function ($methodClass){ return function (aString){
  19073. var self=this,$self=this;
  19074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19075. return $core.withContext(function($ctx1) {
  19076. //>>excludeEnd("ctx");
  19077. $self._nextPutAll_(aString);
  19078. return self;
  19079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19080. }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString})});
  19081. //>>excludeEnd("ctx");
  19082. }; }),
  19083. $globals.StringStream);
  19084. $core.addMethod(
  19085. $core.method({
  19086. selector: "print:",
  19087. protocol: "writing",
  19088. //>>excludeStart("ide", pragmas.excludeIdeData);
  19089. args: ["anObject"],
  19090. source: "print: anObject\x0a\x09anObject printOn: self",
  19091. referencedClasses: [],
  19092. //>>excludeEnd("ide");
  19093. pragmas: [],
  19094. messageSends: ["printOn:"]
  19095. }, function ($methodClass){ return function (anObject){
  19096. var self=this,$self=this;
  19097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19098. return $core.withContext(function($ctx1) {
  19099. //>>excludeEnd("ctx");
  19100. $recv(anObject)._printOn_(self);
  19101. return self;
  19102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19103. }, function($ctx1) {$ctx1.fill(self,"print:",{anObject:anObject})});
  19104. //>>excludeEnd("ctx");
  19105. }; }),
  19106. $globals.StringStream);
  19107. $core.addMethod(
  19108. $core.method({
  19109. selector: "printSymbol:",
  19110. protocol: "writing",
  19111. //>>excludeStart("ide", pragmas.excludeIdeData);
  19112. args: ["anObject"],
  19113. source: "printSymbol: anObject\x0a\x09anObject asSymbolPrintOn: self",
  19114. referencedClasses: [],
  19115. //>>excludeEnd("ide");
  19116. pragmas: [],
  19117. messageSends: ["asSymbolPrintOn:"]
  19118. }, function ($methodClass){ return function (anObject){
  19119. var self=this,$self=this;
  19120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19121. return $core.withContext(function($ctx1) {
  19122. //>>excludeEnd("ctx");
  19123. $recv(anObject)._asSymbolPrintOn_(self);
  19124. return self;
  19125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19126. }, function($ctx1) {$ctx1.fill(self,"printSymbol:",{anObject:anObject})});
  19127. //>>excludeEnd("ctx");
  19128. }; }),
  19129. $globals.StringStream);
  19130. $core.addMethod(
  19131. $core.method({
  19132. selector: "space",
  19133. protocol: "writing",
  19134. //>>excludeStart("ide", pragmas.excludeIdeData);
  19135. args: [],
  19136. source: "space\x0a\x09self nextPut: ' '",
  19137. referencedClasses: [],
  19138. //>>excludeEnd("ide");
  19139. pragmas: [],
  19140. messageSends: ["nextPut:"]
  19141. }, function ($methodClass){ return function (){
  19142. var self=this,$self=this;
  19143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19144. return $core.withContext(function($ctx1) {
  19145. //>>excludeEnd("ctx");
  19146. $self._nextPut_(" ");
  19147. return self;
  19148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19149. }, function($ctx1) {$ctx1.fill(self,"space",{})});
  19150. //>>excludeEnd("ctx");
  19151. }; }),
  19152. $globals.StringStream);
  19153. $core.addMethod(
  19154. $core.method({
  19155. selector: "tab",
  19156. protocol: "writing",
  19157. //>>excludeStart("ide", pragmas.excludeIdeData);
  19158. args: [],
  19159. source: "tab\x0a\x09^ self nextPutAll: String tab",
  19160. referencedClasses: ["String"],
  19161. //>>excludeEnd("ide");
  19162. pragmas: [],
  19163. messageSends: ["nextPutAll:", "tab"]
  19164. }, function ($methodClass){ return function (){
  19165. var self=this,$self=this;
  19166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19167. return $core.withContext(function($ctx1) {
  19168. //>>excludeEnd("ctx");
  19169. return $self._nextPutAll_($recv($globals.String)._tab());
  19170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19171. }, function($ctx1) {$ctx1.fill(self,"tab",{})});
  19172. //>>excludeEnd("ctx");
  19173. }; }),
  19174. $globals.StringStream);
  19175. $core.addClass("Queue", $globals.Object, "Kernel-Collections");
  19176. $core.setSlots($globals.Queue, ["read", "readIndex", "write"]);
  19177. //>>excludeStart("ide", pragmas.excludeIdeData);
  19178. $globals.Queue.comment="I am a one-sided queue.\x0a\x0a## Usage\x0a\x0aUse `#nextPut:` to add items to the queue.\x0aUse `#next` or `#nextIfAbsent:` to get (and remove) the next item in the queue.\x0a\x0a## Implementation notes\x0a\x0aA Queue uses two OrderedCollections inside,\x0a`read` is at the front, is not modified and only read using `readIndex`.\x0a`write` is at the back and is appended new items.\x0aWhen `read` is exhausted, `write` is promoted to `read` and new `write` is created.\x0a\x0aAs a consequence, no data moving is done by me, write appending may do data moving\x0awhen growing `write`, but this is left to engine to implement as good as it chooses to.";
  19179. //>>excludeEnd("ide");
  19180. $core.addMethod(
  19181. $core.method({
  19182. selector: "initialize",
  19183. protocol: "initialization",
  19184. //>>excludeStart("ide", pragmas.excludeIdeData);
  19185. args: [],
  19186. source: "initialize\x0a\x09super initialize.\x0a\x09read := OrderedCollection new.\x0a\x09write := OrderedCollection new.\x0a\x09readIndex := 1",
  19187. referencedClasses: ["OrderedCollection"],
  19188. //>>excludeEnd("ide");
  19189. pragmas: [],
  19190. messageSends: ["initialize", "new"]
  19191. }, function ($methodClass){ return function (){
  19192. var self=this,$self=this;
  19193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19194. return $core.withContext(function($ctx1) {
  19195. //>>excludeEnd("ctx");
  19196. [(
  19197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19198. $ctx1.supercall = true,
  19199. //>>excludeEnd("ctx");
  19200. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  19201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19202. ,$ctx1.supercall = false
  19203. //>>excludeEnd("ctx");
  19204. ][0];
  19205. $self.read=[$recv($globals.OrderedCollection)._new()
  19206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19207. ,$ctx1.sendIdx["new"]=1
  19208. //>>excludeEnd("ctx");
  19209. ][0];
  19210. $self.write=$recv($globals.OrderedCollection)._new();
  19211. $self.readIndex=(1);
  19212. return self;
  19213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19214. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  19215. //>>excludeEnd("ctx");
  19216. }; }),
  19217. $globals.Queue);
  19218. $core.addMethod(
  19219. $core.method({
  19220. selector: "next",
  19221. protocol: "accessing",
  19222. //>>excludeStart("ide", pragmas.excludeIdeData);
  19223. args: [],
  19224. source: "next\x0a\x09^ self nextIfAbsent: [ self error: 'Cannot read from empty Queue.' ]",
  19225. referencedClasses: [],
  19226. //>>excludeEnd("ide");
  19227. pragmas: [],
  19228. messageSends: ["nextIfAbsent:", "error:"]
  19229. }, function ($methodClass){ return function (){
  19230. var self=this,$self=this;
  19231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19232. return $core.withContext(function($ctx1) {
  19233. //>>excludeEnd("ctx");
  19234. return $self._nextIfAbsent_((function(){
  19235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19236. return $core.withContext(function($ctx2) {
  19237. //>>excludeEnd("ctx");
  19238. return $self._error_("Cannot read from empty Queue.");
  19239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19240. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  19241. //>>excludeEnd("ctx");
  19242. }));
  19243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19244. }, function($ctx1) {$ctx1.fill(self,"next",{})});
  19245. //>>excludeEnd("ctx");
  19246. }; }),
  19247. $globals.Queue);
  19248. $core.addMethod(
  19249. $core.method({
  19250. selector: "nextIfAbsent:",
  19251. protocol: "accessing",
  19252. //>>excludeStart("ide", pragmas.excludeIdeData);
  19253. args: ["aBlock"],
  19254. source: "nextIfAbsent: aBlock\x0a\x09| result |\x0a\x09result := read at: readIndex ifAbsent: [\x0a\x09\x09write ifEmpty: [\x0a\x09\x09\x09readIndex > 1 ifTrue: [ read := #(). readIndex := 1 ].\x0a\x09\x09\x09^ aBlock value ].\x0a\x09\x09read := write.\x0a\x09\x09readIndex := 1.\x0a\x09\x09write := OrderedCollection new.\x0a\x09\x09read first ].\x0a\x09read at: readIndex put: nil.\x0a\x09readIndex := readIndex + 1.\x0a\x09^ result",
  19255. referencedClasses: ["OrderedCollection"],
  19256. //>>excludeEnd("ide");
  19257. pragmas: [],
  19258. messageSends: ["at:ifAbsent:", "ifEmpty:", "ifTrue:", ">", "value", "new", "first", "at:put:", "+"]
  19259. }, function ($methodClass){ return function (aBlock){
  19260. var self=this,$self=this;
  19261. var result;
  19262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19263. return $core.withContext(function($ctx1) {
  19264. //>>excludeEnd("ctx");
  19265. var $early={};
  19266. try {
  19267. result=$recv($self.read)._at_ifAbsent_($self.readIndex,(function(){
  19268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19269. return $core.withContext(function($ctx2) {
  19270. //>>excludeEnd("ctx");
  19271. $recv($self.write)._ifEmpty_((function(){
  19272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19273. return $core.withContext(function($ctx3) {
  19274. //>>excludeEnd("ctx");
  19275. if($core.assert($recv($self.readIndex).__gt((1)))){
  19276. $self.read=[];
  19277. $self.readIndex=(1);
  19278. $self.readIndex;
  19279. }
  19280. throw $early=[$recv(aBlock)._value()];
  19281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19282. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  19283. //>>excludeEnd("ctx");
  19284. }));
  19285. $self.read=$self.write;
  19286. $self.readIndex=(1);
  19287. $self.write=$recv($globals.OrderedCollection)._new();
  19288. return $recv($self.read)._first();
  19289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19290. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  19291. //>>excludeEnd("ctx");
  19292. }));
  19293. $recv($self.read)._at_put_($self.readIndex,nil);
  19294. $self.readIndex=$recv($self.readIndex).__plus((1));
  19295. return result;
  19296. }
  19297. catch(e) {if(e===$early)return e[0]; throw e}
  19298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19299. }, function($ctx1) {$ctx1.fill(self,"nextIfAbsent:",{aBlock:aBlock,result:result})});
  19300. //>>excludeEnd("ctx");
  19301. }; }),
  19302. $globals.Queue);
  19303. $core.addMethod(
  19304. $core.method({
  19305. selector: "nextPut:",
  19306. protocol: "accessing",
  19307. //>>excludeStart("ide", pragmas.excludeIdeData);
  19308. args: ["anObject"],
  19309. source: "nextPut: anObject\x0a\x09write add: anObject",
  19310. referencedClasses: [],
  19311. //>>excludeEnd("ide");
  19312. pragmas: [],
  19313. messageSends: ["add:"]
  19314. }, function ($methodClass){ return function (anObject){
  19315. var self=this,$self=this;
  19316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19317. return $core.withContext(function($ctx1) {
  19318. //>>excludeEnd("ctx");
  19319. $recv($self.write)._add_(anObject);
  19320. return self;
  19321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19322. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject})});
  19323. //>>excludeEnd("ctx");
  19324. }; }),
  19325. $globals.Queue);
  19326. $core.addClass("RegularExpression", $globals.Object, "Kernel-Collections");
  19327. //>>excludeStart("ide", pragmas.excludeIdeData);
  19328. $globals.RegularExpression.comment="I represent a regular expression object. My instances are JavaScript `RegExp` object.";
  19329. //>>excludeEnd("ide");
  19330. $core.addMethod(
  19331. $core.method({
  19332. selector: "compile:",
  19333. protocol: "evaluating",
  19334. //>>excludeStart("ide", pragmas.excludeIdeData);
  19335. args: ["aString"],
  19336. source: "compile: aString\x0a\x09<inlineJS: 'return self.compile(aString)'>",
  19337. referencedClasses: [],
  19338. //>>excludeEnd("ide");
  19339. pragmas: [["inlineJS:", ["return self.compile(aString)"]]],
  19340. messageSends: []
  19341. }, function ($methodClass){ return function (aString){
  19342. var self=this,$self=this;
  19343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19344. return $core.withContext(function($ctx1) {
  19345. //>>excludeEnd("ctx");
  19346. return self.compile(aString);
  19347. return self;
  19348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19349. }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString})});
  19350. //>>excludeEnd("ctx");
  19351. }; }),
  19352. $globals.RegularExpression);
  19353. $core.addMethod(
  19354. $core.method({
  19355. selector: "exec:",
  19356. protocol: "evaluating",
  19357. //>>excludeStart("ide", pragmas.excludeIdeData);
  19358. args: ["aString"],
  19359. source: "exec: aString\x0a\x09<inlineJS: 'return self.exec(aString) || nil'>",
  19360. referencedClasses: [],
  19361. //>>excludeEnd("ide");
  19362. pragmas: [["inlineJS:", ["return self.exec(aString) || nil"]]],
  19363. messageSends: []
  19364. }, function ($methodClass){ return function (aString){
  19365. var self=this,$self=this;
  19366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19367. return $core.withContext(function($ctx1) {
  19368. //>>excludeEnd("ctx");
  19369. return self.exec(aString) || nil;
  19370. return self;
  19371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19372. }, function($ctx1) {$ctx1.fill(self,"exec:",{aString:aString})});
  19373. //>>excludeEnd("ctx");
  19374. }; }),
  19375. $globals.RegularExpression);
  19376. $core.addMethod(
  19377. $core.method({
  19378. selector: "test:",
  19379. protocol: "evaluating",
  19380. //>>excludeStart("ide", pragmas.excludeIdeData);
  19381. args: ["aString"],
  19382. source: "test: aString\x0a\x09<inlineJS: 'return self.test(aString)'>",
  19383. referencedClasses: [],
  19384. //>>excludeEnd("ide");
  19385. pragmas: [["inlineJS:", ["return self.test(aString)"]]],
  19386. messageSends: []
  19387. }, function ($methodClass){ return function (aString){
  19388. var self=this,$self=this;
  19389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19390. return $core.withContext(function($ctx1) {
  19391. //>>excludeEnd("ctx");
  19392. return self.test(aString);
  19393. return self;
  19394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19395. }, function($ctx1) {$ctx1.fill(self,"test:",{aString:aString})});
  19396. //>>excludeEnd("ctx");
  19397. }; }),
  19398. $globals.RegularExpression);
  19399. $core.addMethod(
  19400. $core.method({
  19401. selector: "fromString:",
  19402. protocol: "instance creation",
  19403. //>>excludeStart("ide", pragmas.excludeIdeData);
  19404. args: ["aString"],
  19405. source: "fromString: aString\x0a\x09\x09^ self fromString: aString flag: ''",
  19406. referencedClasses: [],
  19407. //>>excludeEnd("ide");
  19408. pragmas: [],
  19409. messageSends: ["fromString:flag:"]
  19410. }, function ($methodClass){ return function (aString){
  19411. var self=this,$self=this;
  19412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19413. return $core.withContext(function($ctx1) {
  19414. //>>excludeEnd("ctx");
  19415. return $self._fromString_flag_(aString,"");
  19416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19417. }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString})});
  19418. //>>excludeEnd("ctx");
  19419. }; }),
  19420. $globals.RegularExpression.a$cls);
  19421. $core.addMethod(
  19422. $core.method({
  19423. selector: "fromString:flag:",
  19424. protocol: "instance creation",
  19425. //>>excludeStart("ide", pragmas.excludeIdeData);
  19426. args: ["aString", "anotherString"],
  19427. source: "fromString: aString flag: anotherString\x0a\x09<inlineJS: 'return new RegExp(aString, anotherString)'>",
  19428. referencedClasses: [],
  19429. //>>excludeEnd("ide");
  19430. pragmas: [["inlineJS:", ["return new RegExp(aString, anotherString)"]]],
  19431. messageSends: []
  19432. }, function ($methodClass){ return function (aString,anotherString){
  19433. var self=this,$self=this;
  19434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19435. return $core.withContext(function($ctx1) {
  19436. //>>excludeEnd("ctx");
  19437. return new RegExp(aString, anotherString);
  19438. return self;
  19439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19440. }, function($ctx1) {$ctx1.fill(self,"fromString:flag:",{aString:aString,anotherString:anotherString})});
  19441. //>>excludeEnd("ctx");
  19442. }; }),
  19443. $globals.RegularExpression.a$cls);
  19444. $core.addTrait("TKeyValueCollection", "Kernel-Collections");
  19445. $core.addMethod(
  19446. $core.method({
  19447. selector: "at:",
  19448. protocol: "accessing",
  19449. //>>excludeStart("ide", pragmas.excludeIdeData);
  19450. args: ["anIndex"],
  19451. source: "at: anIndex\x0a\x09\x22Lookup the given index in the receiver.\x0a\x09If it is present, answer the value stored at anIndex.\x0a\x09Otherwise, raise an error.\x22\x0a\x0a\x09^ self at: anIndex ifAbsent: [ self errorNotFound ]",
  19452. referencedClasses: [],
  19453. //>>excludeEnd("ide");
  19454. pragmas: [],
  19455. messageSends: ["at:ifAbsent:", "errorNotFound"]
  19456. }, function ($methodClass){ return function (anIndex){
  19457. var self=this,$self=this;
  19458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19459. return $core.withContext(function($ctx1) {
  19460. //>>excludeEnd("ctx");
  19461. return $self._at_ifAbsent_(anIndex,(function(){
  19462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19463. return $core.withContext(function($ctx2) {
  19464. //>>excludeEnd("ctx");
  19465. return $self._errorNotFound();
  19466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19467. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  19468. //>>excludeEnd("ctx");
  19469. }));
  19470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19471. }, function($ctx1) {$ctx1.fill(self,"at:",{anIndex:anIndex})});
  19472. //>>excludeEnd("ctx");
  19473. }; }),
  19474. $globals.TKeyValueCollection);
  19475. $core.addMethod(
  19476. $core.method({
  19477. selector: "at:ifAbsent:",
  19478. protocol: "accessing",
  19479. //>>excludeStart("ide", pragmas.excludeIdeData);
  19480. args: ["anIndex", "aBlock"],
  19481. source: "at: anIndex ifAbsent: aBlock\x0a\x09\x22Lookup the given index in the receiver.\x0a\x09If it is present, answer the value stored at anIndex.\x0a\x09Otherwise, answer the value of aBlock.\x22\x0a\x0a\x09self subclassResponsibility",
  19482. referencedClasses: [],
  19483. //>>excludeEnd("ide");
  19484. pragmas: [],
  19485. messageSends: ["subclassResponsibility"]
  19486. }, function ($methodClass){ return function (anIndex,aBlock){
  19487. var self=this,$self=this;
  19488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19489. return $core.withContext(function($ctx1) {
  19490. //>>excludeEnd("ctx");
  19491. $self._subclassResponsibility();
  19492. return self;
  19493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19494. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock})});
  19495. //>>excludeEnd("ctx");
  19496. }; }),
  19497. $globals.TKeyValueCollection);
  19498. $core.addMethod(
  19499. $core.method({
  19500. selector: "at:ifAbsentPut:",
  19501. protocol: "accessing",
  19502. //>>excludeStart("ide", pragmas.excludeIdeData);
  19503. args: ["aKey", "aBlock"],
  19504. source: "at: aKey ifAbsentPut: aBlock\x0a\x09^ self at: aKey ifAbsent: [\x0a\x09\x09self at: aKey put: aBlock value ]",
  19505. referencedClasses: [],
  19506. //>>excludeEnd("ide");
  19507. pragmas: [],
  19508. messageSends: ["at:ifAbsent:", "at:put:", "value"]
  19509. }, function ($methodClass){ return function (aKey,aBlock){
  19510. var self=this,$self=this;
  19511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19512. return $core.withContext(function($ctx1) {
  19513. //>>excludeEnd("ctx");
  19514. return $self._at_ifAbsent_(aKey,(function(){
  19515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19516. return $core.withContext(function($ctx2) {
  19517. //>>excludeEnd("ctx");
  19518. return $self._at_put_(aKey,$recv(aBlock)._value());
  19519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19520. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  19521. //>>excludeEnd("ctx");
  19522. }));
  19523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19524. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsentPut:",{aKey:aKey,aBlock:aBlock})});
  19525. //>>excludeEnd("ctx");
  19526. }; }),
  19527. $globals.TKeyValueCollection);
  19528. $core.addMethod(
  19529. $core.method({
  19530. selector: "at:ifPresent:",
  19531. protocol: "accessing",
  19532. //>>excludeStart("ide", pragmas.excludeIdeData);
  19533. args: ["anIndex", "aBlock"],
  19534. source: "at: anIndex ifPresent: aBlock\x0a\x09\x22Lookup the given index in the receiver.\x0a\x09If it is present, answer the value of evaluating aBlock with the value stored at anIndex.\x0a\x09Otherwise, answer nil.\x22\x0a\x0a\x09^ self at: anIndex ifPresent: aBlock ifAbsent: [ nil ]",
  19535. referencedClasses: [],
  19536. //>>excludeEnd("ide");
  19537. pragmas: [],
  19538. messageSends: ["at:ifPresent:ifAbsent:"]
  19539. }, function ($methodClass){ return function (anIndex,aBlock){
  19540. var self=this,$self=this;
  19541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19542. return $core.withContext(function($ctx1) {
  19543. //>>excludeEnd("ctx");
  19544. return $self._at_ifPresent_ifAbsent_(anIndex,aBlock,(function(){
  19545. return nil;
  19546. }));
  19547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19548. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:",{anIndex:anIndex,aBlock:aBlock})});
  19549. //>>excludeEnd("ctx");
  19550. }; }),
  19551. $globals.TKeyValueCollection);
  19552. $core.addMethod(
  19553. $core.method({
  19554. selector: "at:ifPresent:ifAbsent:",
  19555. protocol: "accessing",
  19556. //>>excludeStart("ide", pragmas.excludeIdeData);
  19557. args: ["anIndex", "aBlock", "anotherBlock"],
  19558. source: "at: anIndex ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09\x22Lookup the given index in the receiver.\x0a\x09If it is present, answer the value of evaluating aBlock with the value stored at anIndex.\x0a\x09Otherwise, answer the value of anotherBlock.\x22\x0a\x0a\x09self subclassResponsibility",
  19559. referencedClasses: [],
  19560. //>>excludeEnd("ide");
  19561. pragmas: [],
  19562. messageSends: ["subclassResponsibility"]
  19563. }, function ($methodClass){ return function (anIndex,aBlock,anotherBlock){
  19564. var self=this,$self=this;
  19565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19566. return $core.withContext(function($ctx1) {
  19567. //>>excludeEnd("ctx");
  19568. $self._subclassResponsibility();
  19569. return self;
  19570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19571. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock})});
  19572. //>>excludeEnd("ctx");
  19573. }; }),
  19574. $globals.TKeyValueCollection);
  19575. $core.addMethod(
  19576. $core.method({
  19577. selector: "at:put:",
  19578. protocol: "accessing",
  19579. //>>excludeStart("ide", pragmas.excludeIdeData);
  19580. args: ["anIndex", "anObject"],
  19581. source: "at: anIndex put: anObject\x0a\x09\x22Store anObject under the given index in the receiver.\x22\x0a\x0a\x09self subclassResponsibility",
  19582. referencedClasses: [],
  19583. //>>excludeEnd("ide");
  19584. pragmas: [],
  19585. messageSends: ["subclassResponsibility"]
  19586. }, function ($methodClass){ return function (anIndex,anObject){
  19587. var self=this,$self=this;
  19588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19589. return $core.withContext(function($ctx1) {
  19590. //>>excludeEnd("ctx");
  19591. $self._subclassResponsibility();
  19592. return self;
  19593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19594. }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject})});
  19595. //>>excludeEnd("ctx");
  19596. }; }),
  19597. $globals.TKeyValueCollection);
  19598. $core.addMethod(
  19599. $core.method({
  19600. selector: "indexOf:",
  19601. protocol: "accessing",
  19602. //>>excludeStart("ide", pragmas.excludeIdeData);
  19603. args: ["anObject"],
  19604. source: "indexOf: anObject\x0a\x09\x22Lookup index at which anObject is stored in the receiver.\x0a\x09If not present, raise an error.\x22\x0a\x0a\x09^ self indexOf: anObject ifAbsent: [ self errorNotFound ]",
  19605. referencedClasses: [],
  19606. //>>excludeEnd("ide");
  19607. pragmas: [],
  19608. messageSends: ["indexOf:ifAbsent:", "errorNotFound"]
  19609. }, function ($methodClass){ return function (anObject){
  19610. var self=this,$self=this;
  19611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19612. return $core.withContext(function($ctx1) {
  19613. //>>excludeEnd("ctx");
  19614. return $self._indexOf_ifAbsent_(anObject,(function(){
  19615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19616. return $core.withContext(function($ctx2) {
  19617. //>>excludeEnd("ctx");
  19618. return $self._errorNotFound();
  19619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19620. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  19621. //>>excludeEnd("ctx");
  19622. }));
  19623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19624. }, function($ctx1) {$ctx1.fill(self,"indexOf:",{anObject:anObject})});
  19625. //>>excludeEnd("ctx");
  19626. }; }),
  19627. $globals.TKeyValueCollection);
  19628. $core.addMethod(
  19629. $core.method({
  19630. selector: "indexOf:ifAbsent:",
  19631. protocol: "accessing",
  19632. //>>excludeStart("ide", pragmas.excludeIdeData);
  19633. args: ["anObject", "aBlock"],
  19634. source: "indexOf: anObject ifAbsent: aBlock\x0a\x09\x22Lookup index at which anObject is stored in the receiver.\x0a\x09If not present, return value of executing aBlock.\x22\x0a\x0a\x09self subclassResponsibility",
  19635. referencedClasses: [],
  19636. //>>excludeEnd("ide");
  19637. pragmas: [],
  19638. messageSends: ["subclassResponsibility"]
  19639. }, function ($methodClass){ return function (anObject,aBlock){
  19640. var self=this,$self=this;
  19641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19642. return $core.withContext(function($ctx1) {
  19643. //>>excludeEnd("ctx");
  19644. $self._subclassResponsibility();
  19645. return self;
  19646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19647. }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
  19648. //>>excludeEnd("ctx");
  19649. }; }),
  19650. $globals.TKeyValueCollection);
  19651. $core.addMethod(
  19652. $core.method({
  19653. selector: "with:do:",
  19654. protocol: "enumerating",
  19655. //>>excludeStart("ide", pragmas.excludeIdeData);
  19656. args: ["anotherCollection", "aBlock"],
  19657. source: "with: anotherCollection do: aBlock\x0a\x09\x22Calls aBlock with every value from self\x0a\x09and with indetically-indexed value from anotherCollection\x22\x0a\x0a\x09self withIndexDo: [ :each :index |\x0a\x09\x09aBlock value: each value: (anotherCollection at: index) ]",
  19658. referencedClasses: [],
  19659. //>>excludeEnd("ide");
  19660. pragmas: [],
  19661. messageSends: ["withIndexDo:", "value:value:", "at:"]
  19662. }, function ($methodClass){ return function (anotherCollection,aBlock){
  19663. var self=this,$self=this;
  19664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19665. return $core.withContext(function($ctx1) {
  19666. //>>excludeEnd("ctx");
  19667. $self._withIndexDo_((function(each,index){
  19668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19669. return $core.withContext(function($ctx2) {
  19670. //>>excludeEnd("ctx");
  19671. return $recv(aBlock)._value_value_(each,$recv(anotherCollection)._at_(index));
  19672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19673. }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)});
  19674. //>>excludeEnd("ctx");
  19675. }));
  19676. return self;
  19677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19678. }, function($ctx1) {$ctx1.fill(self,"with:do:",{anotherCollection:anotherCollection,aBlock:aBlock})});
  19679. //>>excludeEnd("ctx");
  19680. }; }),
  19681. $globals.TKeyValueCollection);
  19682. $core.addMethod(
  19683. $core.method({
  19684. selector: "withIndexDo:",
  19685. protocol: "enumerating",
  19686. //>>excludeStart("ide", pragmas.excludeIdeData);
  19687. args: ["aBlock"],
  19688. source: "withIndexDo: aBlock\x0a\x09\x22Calls aBlock with every value from self\x0a\x09and with its index as the second argument\x22\x0a\x0a\x09self subclassResponsibility",
  19689. referencedClasses: [],
  19690. //>>excludeEnd("ide");
  19691. pragmas: [],
  19692. messageSends: ["subclassResponsibility"]
  19693. }, function ($methodClass){ return function (aBlock){
  19694. var self=this,$self=this;
  19695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19696. return $core.withContext(function($ctx1) {
  19697. //>>excludeEnd("ctx");
  19698. $self._subclassResponsibility();
  19699. return self;
  19700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19701. }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock})});
  19702. //>>excludeEnd("ctx");
  19703. }; }),
  19704. $globals.TKeyValueCollection);
  19705. $core.addTrait("TNativeZeroBasedCollection", "Kernel-Collections");
  19706. $core.addMethod(
  19707. $core.method({
  19708. selector: "at:ifAbsent:",
  19709. protocol: "accessing",
  19710. //>>excludeStart("ide", pragmas.excludeIdeData);
  19711. args: ["anIndex", "aBlock"],
  19712. source: "at: anIndex ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09return anIndex >= 1 && anIndex <= self.length\x0a\x09\x09\x09? self[anIndex - 1]\x0a\x09\x09\x09: aBlock._value()\x0a\x09'>",
  19713. referencedClasses: [],
  19714. //>>excludeEnd("ide");
  19715. pragmas: [["inlineJS:", ["\x0a\x09\x09return anIndex >= 1 && anIndex <= self.length\x0a\x09\x09\x09? self[anIndex - 1]\x0a\x09\x09\x09: aBlock._value()\x0a\x09"]]],
  19716. messageSends: []
  19717. }, function ($methodClass){ return function (anIndex,aBlock){
  19718. var self=this,$self=this;
  19719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19720. return $core.withContext(function($ctx1) {
  19721. //>>excludeEnd("ctx");
  19722. return anIndex >= 1 && anIndex <= self.length
  19723. ? self[anIndex - 1]
  19724. : aBlock._value()
  19725. ;
  19726. return self;
  19727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19728. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock})});
  19729. //>>excludeEnd("ctx");
  19730. }; }),
  19731. $globals.TNativeZeroBasedCollection);
  19732. $core.addMethod(
  19733. $core.method({
  19734. selector: "at:ifPresent:ifAbsent:",
  19735. protocol: "accessing",
  19736. //>>excludeStart("ide", pragmas.excludeIdeData);
  19737. args: ["anIndex", "aBlock", "anotherBlock"],
  19738. source: "at: anIndex ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09<inlineJS: '\x0a\x09\x09return anIndex >= 1 && anIndex <= self.length\x0a\x09\x09\x09? aBlock._value_(self[anIndex - 1])\x0a\x09\x09\x09: anotherBlock._value()\x0a\x09'>",
  19739. referencedClasses: [],
  19740. //>>excludeEnd("ide");
  19741. pragmas: [["inlineJS:", ["\x0a\x09\x09return anIndex >= 1 && anIndex <= self.length\x0a\x09\x09\x09? aBlock._value_(self[anIndex - 1])\x0a\x09\x09\x09: anotherBlock._value()\x0a\x09"]]],
  19742. messageSends: []
  19743. }, function ($methodClass){ return function (anIndex,aBlock,anotherBlock){
  19744. var self=this,$self=this;
  19745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19746. return $core.withContext(function($ctx1) {
  19747. //>>excludeEnd("ctx");
  19748. return anIndex >= 1 && anIndex <= self.length
  19749. ? aBlock._value_(self[anIndex - 1])
  19750. : anotherBlock._value()
  19751. ;
  19752. return self;
  19753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19754. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock})});
  19755. //>>excludeEnd("ctx");
  19756. }; }),
  19757. $globals.TNativeZeroBasedCollection);
  19758. $core.addMethod(
  19759. $core.method({
  19760. selector: "detect:ifNone:",
  19761. protocol: "enumerating",
  19762. //>>excludeStart("ide", pragmas.excludeIdeData);
  19763. args: ["aBlock", "anotherBlock"],
  19764. source: "detect: aBlock ifNone: anotherBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i = 0; i < self.length; i++)\x0a\x09\x09\x09if(aBlock._value_(self[i]))\x0a\x09\x09\x09\x09return self[i];\x0a\x09\x09return anotherBlock._value();\x0a\x09'>",
  19765. referencedClasses: [],
  19766. //>>excludeEnd("ide");
  19767. pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i = 0; i < self.length; i++)\x0a\x09\x09\x09if(aBlock._value_(self[i]))\x0a\x09\x09\x09\x09return self[i];\x0a\x09\x09return anotherBlock._value();\x0a\x09"]]],
  19768. messageSends: []
  19769. }, function ($methodClass){ return function (aBlock,anotherBlock){
  19770. var self=this,$self=this;
  19771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19772. return $core.withContext(function($ctx1) {
  19773. //>>excludeEnd("ctx");
  19774. for(var i = 0; i < self.length; i++)
  19775. if(aBlock._value_(self[i]))
  19776. return self[i];
  19777. return anotherBlock._value();
  19778. ;
  19779. return self;
  19780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19781. }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  19782. //>>excludeEnd("ctx");
  19783. }; }),
  19784. $globals.TNativeZeroBasedCollection);
  19785. $core.addMethod(
  19786. $core.method({
  19787. selector: "do:",
  19788. protocol: "enumerating",
  19789. //>>excludeStart("ide", pragmas.excludeIdeData);
  19790. args: ["aBlock"],
  19791. source: "do: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_(self[i]);\x0a\x09\x09}\x0a\x09'>",
  19792. referencedClasses: [],
  19793. //>>excludeEnd("ide");
  19794. pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_(self[i]);\x0a\x09\x09}\x0a\x09"]]],
  19795. messageSends: []
  19796. }, function ($methodClass){ return function (aBlock){
  19797. var self=this,$self=this;
  19798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19799. return $core.withContext(function($ctx1) {
  19800. //>>excludeEnd("ctx");
  19801. for(var i=0; i < self.length; i++) {
  19802. aBlock._value_(self[i]);
  19803. }
  19804. ;
  19805. return self;
  19806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19807. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
  19808. //>>excludeEnd("ctx");
  19809. }; }),
  19810. $globals.TNativeZeroBasedCollection);
  19811. $core.addMethod(
  19812. $core.method({
  19813. selector: "indexOf:ifAbsent:",
  19814. protocol: "accessing",
  19815. //>>excludeStart("ide", pragmas.excludeIdeData);
  19816. args: ["anObject", "aBlock"],
  19817. source: "indexOf: anObject ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09if($recv(self[i]).__eq(anObject)) {return i+1}\x0a\x09\x09};\x0a\x09\x09return aBlock._value();\x0a\x09'>",
  19818. referencedClasses: [],
  19819. //>>excludeEnd("ide");
  19820. pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09if($recv(self[i]).__eq(anObject)) {return i+1}\x0a\x09\x09};\x0a\x09\x09return aBlock._value();\x0a\x09"]]],
  19821. messageSends: []
  19822. }, function ($methodClass){ return function (anObject,aBlock){
  19823. var self=this,$self=this;
  19824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19825. return $core.withContext(function($ctx1) {
  19826. //>>excludeEnd("ctx");
  19827. for(var i=0; i < self.length; i++) {
  19828. if($recv(self[i]).__eq(anObject)) {return i+1}
  19829. };
  19830. return aBlock._value();
  19831. ;
  19832. return self;
  19833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19834. }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
  19835. //>>excludeEnd("ctx");
  19836. }; }),
  19837. $globals.TNativeZeroBasedCollection);
  19838. $core.addMethod(
  19839. $core.method({
  19840. selector: "indexOf:startingAt:ifAbsent:",
  19841. protocol: "accessing",
  19842. //>>excludeStart("ide", pragmas.excludeIdeData);
  19843. args: ["anObject", "start", "aBlock"],
  19844. source: "indexOf: anObject startingAt: start ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i=start - 1; i < self.length; i++){\x0a\x09\x09\x09if($recv(self[i]).__eq(anObject)) {return i+1}\x0a\x09\x09}\x0a\x09\x09return aBlock._value();\x0a\x09'>",
  19845. referencedClasses: [],
  19846. //>>excludeEnd("ide");
  19847. pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i=start - 1; i < self.length; i++){\x0a\x09\x09\x09if($recv(self[i]).__eq(anObject)) {return i+1}\x0a\x09\x09}\x0a\x09\x09return aBlock._value();\x0a\x09"]]],
  19848. messageSends: []
  19849. }, function ($methodClass){ return function (anObject,start,aBlock){
  19850. var self=this,$self=this;
  19851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19852. return $core.withContext(function($ctx1) {
  19853. //>>excludeEnd("ctx");
  19854. for(var i=start - 1; i < self.length; i++){
  19855. if($recv(self[i]).__eq(anObject)) {return i+1}
  19856. }
  19857. return aBlock._value();
  19858. ;
  19859. return self;
  19860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19861. }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:ifAbsent:",{anObject:anObject,start:start,aBlock:aBlock})});
  19862. //>>excludeEnd("ctx");
  19863. }; }),
  19864. $globals.TNativeZeroBasedCollection);
  19865. $core.addMethod(
  19866. $core.method({
  19867. selector: "single",
  19868. protocol: "accessing",
  19869. //>>excludeStart("ide", pragmas.excludeIdeData);
  19870. args: [],
  19871. source: "single\x0a<inlineJS: '\x0a\x09if (self.length == 0) throw new Error(\x22Collection is empty\x22);\x0a\x09if (self.length > 1) throw new Error(\x22Collection holds more than one element.\x22);\x0a\x09return self[0];\x0a'>",
  19872. referencedClasses: [],
  19873. //>>excludeEnd("ide");
  19874. pragmas: [["inlineJS:", ["\x0a\x09if (self.length == 0) throw new Error(\x22Collection is empty\x22);\x0a\x09if (self.length > 1) throw new Error(\x22Collection holds more than one element.\x22);\x0a\x09return self[0];"]]],
  19875. messageSends: []
  19876. }, function ($methodClass){ return function (){
  19877. var self=this,$self=this;
  19878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19879. return $core.withContext(function($ctx1) {
  19880. //>>excludeEnd("ctx");
  19881. if (self.length == 0) throw new Error("Collection is empty");
  19882. if (self.length > 1) throw new Error("Collection holds more than one element.");
  19883. return self[0];;
  19884. return self;
  19885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19886. }, function($ctx1) {$ctx1.fill(self,"single",{})});
  19887. //>>excludeEnd("ctx");
  19888. }; }),
  19889. $globals.TNativeZeroBasedCollection);
  19890. $core.addMethod(
  19891. $core.method({
  19892. selector: "size",
  19893. protocol: "accessing",
  19894. //>>excludeStart("ide", pragmas.excludeIdeData);
  19895. args: [],
  19896. source: "size\x0a\x09<inlineJS: 'return self.length'>",
  19897. referencedClasses: [],
  19898. //>>excludeEnd("ide");
  19899. pragmas: [["inlineJS:", ["return self.length"]]],
  19900. messageSends: []
  19901. }, function ($methodClass){ return function (){
  19902. var self=this,$self=this;
  19903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19904. return $core.withContext(function($ctx1) {
  19905. //>>excludeEnd("ctx");
  19906. return self.length;
  19907. return self;
  19908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19909. }, function($ctx1) {$ctx1.fill(self,"size",{})});
  19910. //>>excludeEnd("ctx");
  19911. }; }),
  19912. $globals.TNativeZeroBasedCollection);
  19913. $core.addMethod(
  19914. $core.method({
  19915. selector: "with:do:",
  19916. protocol: "enumerating",
  19917. //>>excludeStart("ide", pragmas.excludeIdeData);
  19918. args: ["anotherCollection", "aBlock"],
  19919. source: "with: anotherCollection do: aBlock\x0a\x09<inlineJS: '\x0a\x09 $recv(anotherCollection)._first_(0); // #guardSequenceableCollection\x0a\x09\x09for(var i=0; i<self.length; i++) {\x0a\x09\x09\x09aBlock._value_value_(self[i], anotherCollection[i]);\x0a\x09\x09}\x0a\x09'>",
  19920. referencedClasses: [],
  19921. //>>excludeEnd("ide");
  19922. pragmas: [["inlineJS:", ["\x0a\x09 $recv(anotherCollection)._first_(0); // #guardSequenceableCollection\x0a\x09\x09for(var i=0; i<self.length; i++) {\x0a\x09\x09\x09aBlock._value_value_(self[i], anotherCollection[i]);\x0a\x09\x09}\x0a\x09"]]],
  19923. messageSends: []
  19924. }, function ($methodClass){ return function (anotherCollection,aBlock){
  19925. var self=this,$self=this;
  19926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19927. return $core.withContext(function($ctx1) {
  19928. //>>excludeEnd("ctx");
  19929. $recv(anotherCollection)._first_(0); // #guardSequenceableCollection
  19930. for(var i=0; i<self.length; i++) {
  19931. aBlock._value_value_(self[i], anotherCollection[i]);
  19932. }
  19933. ;
  19934. return self;
  19935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19936. }, function($ctx1) {$ctx1.fill(self,"with:do:",{anotherCollection:anotherCollection,aBlock:aBlock})});
  19937. //>>excludeEnd("ctx");
  19938. }; }),
  19939. $globals.TNativeZeroBasedCollection);
  19940. $core.addMethod(
  19941. $core.method({
  19942. selector: "withIndexDo:",
  19943. protocol: "enumerating",
  19944. //>>excludeStart("ide", pragmas.excludeIdeData);
  19945. args: ["aBlock"],
  19946. source: "withIndexDo: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_value_(self[i], i+1);\x0a\x09\x09}\x0a\x09'>",
  19947. referencedClasses: [],
  19948. //>>excludeEnd("ide");
  19949. pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_value_(self[i], i+1);\x0a\x09\x09}\x0a\x09"]]],
  19950. messageSends: []
  19951. }, function ($methodClass){ return function (aBlock){
  19952. var self=this,$self=this;
  19953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19954. return $core.withContext(function($ctx1) {
  19955. //>>excludeEnd("ctx");
  19956. for(var i=0; i < self.length; i++) {
  19957. aBlock._value_value_(self[i], i+1);
  19958. }
  19959. ;
  19960. return self;
  19961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19962. }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock})});
  19963. //>>excludeEnd("ctx");
  19964. }; }),
  19965. $globals.TNativeZeroBasedCollection);
  19966. $core.setTraitComposition([{trait: $globals.TKeyValueCollection}], $globals.AssociativeCollection);
  19967. $core.setTraitComposition([{trait: $globals.TKeyValueCollection}], $globals.SequenceableCollection);
  19968. $core.setTraitComposition([{trait: $globals.TNativeZeroBasedCollection}], $globals.Array);
  19969. $core.setTraitComposition([{trait: $globals.TNativeZeroBasedCollection}], $globals.String);
  19970. });
  19971. define('amber/core/Kernel-Classes',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Helpers", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  19972. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  19973. var $pkg = $core.addPackage("Kernel-Classes");
  19974. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  19975. $core.addClass("Behavior", $globals.Object, "Kernel-Classes");
  19976. $core.setSlots($globals.Behavior, ["organization", "slots", "fn", "superclass"]);
  19977. //>>excludeStart("ide", pragmas.excludeIdeData);
  19978. $globals.Behavior.comment="I am the superclass of all class objects.\x0a\x0aIn addition to BehaviorBody, I define superclass/subclass relationships and instantiation.\x0a\x0aI define the protocol for creating instances of a class with `#basicNew` and `#new` (see `boot.js` for class constructors details).\x0a\x0aMy instances know about the subclass/superclass relationships between classes and contain the description that instances are created from.\x0a\x0aI also provide iterating over the class hierarchy.";
  19979. //>>excludeEnd("ide");
  19980. $core.addMethod(
  19981. $core.method({
  19982. selector: "allSelectors",
  19983. protocol: "accessing",
  19984. //>>excludeStart("ide", pragmas.excludeIdeData);
  19985. args: [],
  19986. source: "allSelectors\x0a\x09^ self allSuperclasses\x0a\x09\x09inject: self selectors\x0a\x09\x09into: [ :acc :each | acc addAll: each selectors; yourself ]",
  19987. referencedClasses: [],
  19988. //>>excludeEnd("ide");
  19989. pragmas: [],
  19990. messageSends: ["inject:into:", "allSuperclasses", "selectors", "addAll:", "yourself"]
  19991. }, function ($methodClass){ return function (){
  19992. var self=this,$self=this;
  19993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19994. return $core.withContext(function($ctx1) {
  19995. //>>excludeEnd("ctx");
  19996. return $recv($self._allSuperclasses())._inject_into_([$self._selectors()
  19997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19998. ,$ctx1.sendIdx["selectors"]=1
  19999. //>>excludeEnd("ctx");
  20000. ][0],(function(acc,each){
  20001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20002. return $core.withContext(function($ctx2) {
  20003. //>>excludeEnd("ctx");
  20004. $recv(acc)._addAll_($recv(each)._selectors());
  20005. return $recv(acc)._yourself();
  20006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20007. }, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)});
  20008. //>>excludeEnd("ctx");
  20009. }));
  20010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20011. }, function($ctx1) {$ctx1.fill(self,"allSelectors",{})});
  20012. //>>excludeEnd("ctx");
  20013. }; }),
  20014. $globals.Behavior);
  20015. $core.addMethod(
  20016. $core.method({
  20017. selector: "allSubclasses",
  20018. protocol: "accessing",
  20019. //>>excludeStart("ide", pragmas.excludeIdeData);
  20020. args: [],
  20021. source: "allSubclasses\x0a\x09\x22Answer an collection of the receiver's and the receiver's descendent's subclasses. \x22\x0a\x0a\x09^ Array streamContents: [ :str | self allSubclassesDo: [ :each | str nextPut: each ] ]",
  20022. referencedClasses: ["Array"],
  20023. //>>excludeEnd("ide");
  20024. pragmas: [],
  20025. messageSends: ["streamContents:", "allSubclassesDo:", "nextPut:"]
  20026. }, function ($methodClass){ return function (){
  20027. var self=this,$self=this;
  20028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20029. return $core.withContext(function($ctx1) {
  20030. //>>excludeEnd("ctx");
  20031. return $recv($globals.Array)._streamContents_((function(str){
  20032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20033. return $core.withContext(function($ctx2) {
  20034. //>>excludeEnd("ctx");
  20035. return $self._allSubclassesDo_((function(each){
  20036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20037. return $core.withContext(function($ctx3) {
  20038. //>>excludeEnd("ctx");
  20039. return $recv(str)._nextPut_(each);
  20040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20041. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  20042. //>>excludeEnd("ctx");
  20043. }));
  20044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20045. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  20046. //>>excludeEnd("ctx");
  20047. }));
  20048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20049. }, function($ctx1) {$ctx1.fill(self,"allSubclasses",{})});
  20050. //>>excludeEnd("ctx");
  20051. }; }),
  20052. $globals.Behavior);
  20053. $core.addMethod(
  20054. $core.method({
  20055. selector: "allSubclassesDo:",
  20056. protocol: "enumerating",
  20057. //>>excludeStart("ide", pragmas.excludeIdeData);
  20058. args: ["aBlock"],
  20059. source: "allSubclassesDo: aBlock\x0a\x09\x22Evaluate the argument, aBlock, for each of the receiver's subclasses.\x22\x0a\x0a<inlineJS: '$core.traverseClassTree(self, function(subclass) {\x0a\x09if (subclass !== self) aBlock._value_(subclass);\x0a})'>",
  20060. referencedClasses: [],
  20061. //>>excludeEnd("ide");
  20062. pragmas: [["inlineJS:", ["$core.traverseClassTree(self, function(subclass) {\x0a\x09if (subclass !== self) aBlock._value_(subclass);\x0a})"]]],
  20063. messageSends: []
  20064. }, function ($methodClass){ return function (aBlock){
  20065. var self=this,$self=this;
  20066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20067. return $core.withContext(function($ctx1) {
  20068. //>>excludeEnd("ctx");
  20069. $core.traverseClassTree(self, function(subclass) {
  20070. if (subclass !== self) aBlock._value_(subclass);
  20071. });
  20072. return self;
  20073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20074. }, function($ctx1) {$ctx1.fill(self,"allSubclassesDo:",{aBlock:aBlock})});
  20075. //>>excludeEnd("ctx");
  20076. }; }),
  20077. $globals.Behavior);
  20078. $core.addMethod(
  20079. $core.method({
  20080. selector: "allSuperclasses",
  20081. protocol: "accessing",
  20082. //>>excludeStart("ide", pragmas.excludeIdeData);
  20083. args: [],
  20084. source: "allSuperclasses\x0a\x09\x0a\x09self superclass ifNil: [ ^ #() ].\x0a\x09\x0a\x09^ self superclass allSuperclasses copyWithFirst: self superclass",
  20085. referencedClasses: [],
  20086. //>>excludeEnd("ide");
  20087. pragmas: [],
  20088. messageSends: ["ifNil:", "superclass", "copyWithFirst:", "allSuperclasses"]
  20089. }, function ($methodClass){ return function (){
  20090. var self=this,$self=this;
  20091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20092. return $core.withContext(function($ctx1) {
  20093. //>>excludeEnd("ctx");
  20094. var $1;
  20095. $1=[$self._superclass()
  20096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20097. ,$ctx1.sendIdx["superclass"]=1
  20098. //>>excludeEnd("ctx");
  20099. ][0];
  20100. if($1 == null || $1.a$nil){
  20101. return [];
  20102. } else {
  20103. $1;
  20104. }
  20105. return $recv($recv([$self._superclass()
  20106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20107. ,$ctx1.sendIdx["superclass"]=2
  20108. //>>excludeEnd("ctx");
  20109. ][0])._allSuperclasses())._copyWithFirst_($self._superclass());
  20110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20111. }, function($ctx1) {$ctx1.fill(self,"allSuperclasses",{})});
  20112. //>>excludeEnd("ctx");
  20113. }; }),
  20114. $globals.Behavior);
  20115. $core.addMethod(
  20116. $core.method({
  20117. selector: "alternateConstructorViaSelector:",
  20118. protocol: "instance creation",
  20119. //>>excludeStart("ide", pragmas.excludeIdeData);
  20120. args: ["aSelector"],
  20121. source: "alternateConstructorViaSelector: aSelector\x0a\x09^ BlockClosure\x0a\x09\x09javaScriptConstructorFor: self prototype\x0a\x09\x09initializingVia: (self >> aSelector) fn",
  20122. referencedClasses: ["BlockClosure"],
  20123. //>>excludeEnd("ide");
  20124. pragmas: [],
  20125. messageSends: ["javaScriptConstructorFor:initializingVia:", "prototype", "fn", ">>"]
  20126. }, function ($methodClass){ return function (aSelector){
  20127. var self=this,$self=this;
  20128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20129. return $core.withContext(function($ctx1) {
  20130. //>>excludeEnd("ctx");
  20131. return $recv($globals.BlockClosure)._javaScriptConstructorFor_initializingVia_($self._prototype(),$recv($self.__gt_gt(aSelector))._fn());
  20132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20133. }, function($ctx1) {$ctx1.fill(self,"alternateConstructorViaSelector:",{aSelector:aSelector})});
  20134. //>>excludeEnd("ctx");
  20135. }; }),
  20136. $globals.Behavior);
  20137. $core.addMethod(
  20138. $core.method({
  20139. selector: "applySuperConstructorOn:withArguments:",
  20140. protocol: "accessing",
  20141. //>>excludeStart("ide", pragmas.excludeIdeData);
  20142. args: ["anObject", "anArray"],
  20143. source: "applySuperConstructorOn: anObject withArguments: anArray\x0a\x09<inlineJS: '\x0a\x09\x09Object.getPrototypeOf($self.fn.prototype).constructor\x0a\x09\x09.apply(anObject, anArray)\x0a\x09'>",
  20144. referencedClasses: [],
  20145. //>>excludeEnd("ide");
  20146. pragmas: [["inlineJS:", ["\x0a\x09\x09Object.getPrototypeOf($self.fn.prototype).constructor\x0a\x09\x09.apply(anObject, anArray)\x0a\x09"]]],
  20147. messageSends: []
  20148. }, function ($methodClass){ return function (anObject,anArray){
  20149. var self=this,$self=this;
  20150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20151. return $core.withContext(function($ctx1) {
  20152. //>>excludeEnd("ctx");
  20153. Object.getPrototypeOf($self.fn.prototype).constructor
  20154. .apply(anObject, anArray)
  20155. ;
  20156. return self;
  20157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20158. }, function($ctx1) {$ctx1.fill(self,"applySuperConstructorOn:withArguments:",{anObject:anObject,anArray:anArray})});
  20159. //>>excludeEnd("ctx");
  20160. }; }),
  20161. $globals.Behavior);
  20162. $core.addMethod(
  20163. $core.method({
  20164. selector: "basicNew",
  20165. protocol: "instance creation",
  20166. //>>excludeStart("ide", pragmas.excludeIdeData);
  20167. args: [],
  20168. source: "basicNew\x0a\x09<inlineJS: 'return new self.fn()'>",
  20169. referencedClasses: [],
  20170. //>>excludeEnd("ide");
  20171. pragmas: [["inlineJS:", ["return new self.fn()"]]],
  20172. messageSends: []
  20173. }, function ($methodClass){ return function (){
  20174. var self=this,$self=this;
  20175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20176. return $core.withContext(function($ctx1) {
  20177. //>>excludeEnd("ctx");
  20178. return new self.fn();
  20179. return self;
  20180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20181. }, function($ctx1) {$ctx1.fill(self,"basicNew",{})});
  20182. //>>excludeEnd("ctx");
  20183. }; }),
  20184. $globals.Behavior);
  20185. $core.addMethod(
  20186. $core.method({
  20187. selector: "basicOrganization",
  20188. protocol: "accessing",
  20189. //>>excludeStart("ide", pragmas.excludeIdeData);
  20190. args: [],
  20191. source: "basicOrganization\x0a\x09^ organization",
  20192. referencedClasses: [],
  20193. //>>excludeEnd("ide");
  20194. pragmas: [],
  20195. messageSends: []
  20196. }, function ($methodClass){ return function (){
  20197. var self=this,$self=this;
  20198. return $self.organization;
  20199. }; }),
  20200. $globals.Behavior);
  20201. $core.addMethod(
  20202. $core.method({
  20203. selector: "basicOrganization:",
  20204. protocol: "accessing",
  20205. //>>excludeStart("ide", pragmas.excludeIdeData);
  20206. args: ["aClassOrganizer"],
  20207. source: "basicOrganization: aClassOrganizer\x0a\x09organization := aClassOrganizer",
  20208. referencedClasses: [],
  20209. //>>excludeEnd("ide");
  20210. pragmas: [],
  20211. messageSends: []
  20212. }, function ($methodClass){ return function (aClassOrganizer){
  20213. var self=this,$self=this;
  20214. $self.organization=aClassOrganizer;
  20215. return self;
  20216. }; }),
  20217. $globals.Behavior);
  20218. $core.addMethod(
  20219. $core.method({
  20220. selector: "beJavaScriptSubclassOf:",
  20221. protocol: "accessing",
  20222. //>>excludeStart("ide", pragmas.excludeIdeData);
  20223. args: ["aJavaScriptFunction"],
  20224. source: "beJavaScriptSubclassOf: aJavaScriptFunction\x0a\x09\x22Reparent the JS constructor's prototype to aJavaScriptFunction's one,\x0a\x09plus bookkeeping. That way I stay part of (simulated) Smalltalk hierarchy,\x0a\x09but my instances will physically be instanceof aJavaScriptFunction.\x22\x0a\x0a\x09self makeJavaScriptConstructorSubclassOf: aJavaScriptFunction.\x0a\x09Smalltalk core detachClass: self",
  20225. referencedClasses: ["Smalltalk"],
  20226. //>>excludeEnd("ide");
  20227. pragmas: [],
  20228. messageSends: ["makeJavaScriptConstructorSubclassOf:", "detachClass:", "core"]
  20229. }, function ($methodClass){ return function (aJavaScriptFunction){
  20230. var self=this,$self=this;
  20231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20232. return $core.withContext(function($ctx1) {
  20233. //>>excludeEnd("ctx");
  20234. $self._makeJavaScriptConstructorSubclassOf_(aJavaScriptFunction);
  20235. $recv($recv($globals.Smalltalk)._core())._detachClass_(self);
  20236. return self;
  20237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20238. }, function($ctx1) {$ctx1.fill(self,"beJavaScriptSubclassOf:",{aJavaScriptFunction:aJavaScriptFunction})});
  20239. //>>excludeEnd("ctx");
  20240. }; }),
  20241. $globals.Behavior);
  20242. $core.addMethod(
  20243. $core.method({
  20244. selector: "canUnderstand:",
  20245. protocol: "testing",
  20246. //>>excludeStart("ide", pragmas.excludeIdeData);
  20247. args: ["aSelector"],
  20248. source: "canUnderstand: aSelector\x0a\x09^ (self lookupSelector: aSelector) notNil",
  20249. referencedClasses: [],
  20250. //>>excludeEnd("ide");
  20251. pragmas: [],
  20252. messageSends: ["notNil", "lookupSelector:"]
  20253. }, function ($methodClass){ return function (aSelector){
  20254. var self=this,$self=this;
  20255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20256. return $core.withContext(function($ctx1) {
  20257. //>>excludeEnd("ctx");
  20258. return $recv($self._lookupSelector_(aSelector))._notNil();
  20259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20260. }, function($ctx1) {$ctx1.fill(self,"canUnderstand:",{aSelector:aSelector})});
  20261. //>>excludeEnd("ctx");
  20262. }; }),
  20263. $globals.Behavior);
  20264. $core.addMethod(
  20265. $core.method({
  20266. selector: "includesBehavior:",
  20267. protocol: "testing",
  20268. //>>excludeStart("ide", pragmas.excludeIdeData);
  20269. args: ["aClass"],
  20270. source: "includesBehavior: aClass\x0a\x09^ self == aClass or: [\x0a\x09\x09\x09self inheritsFrom: aClass ]",
  20271. referencedClasses: [],
  20272. //>>excludeEnd("ide");
  20273. pragmas: [],
  20274. messageSends: ["or:", "==", "inheritsFrom:"]
  20275. }, function ($methodClass){ return function (aClass){
  20276. var self=this,$self=this;
  20277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20278. return $core.withContext(function($ctx1) {
  20279. //>>excludeEnd("ctx");
  20280. if($core.assert($self.__eq_eq(aClass))){
  20281. return true;
  20282. } else {
  20283. return $self._inheritsFrom_(aClass);
  20284. }
  20285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20286. }, function($ctx1) {$ctx1.fill(self,"includesBehavior:",{aClass:aClass})});
  20287. //>>excludeEnd("ctx");
  20288. }; }),
  20289. $globals.Behavior);
  20290. $core.addMethod(
  20291. $core.method({
  20292. selector: "inheritsFrom:",
  20293. protocol: "testing",
  20294. //>>excludeStart("ide", pragmas.excludeIdeData);
  20295. args: ["aClass"],
  20296. source: "inheritsFrom: aClass\x0a\x09^ self superclass\x0a\x09\x09ifNil: [ false ]\x0a\x09\x09ifNotNil: [ :superClass | superClass includesBehavior: aClass ]",
  20297. referencedClasses: [],
  20298. //>>excludeEnd("ide");
  20299. pragmas: [],
  20300. messageSends: ["ifNil:ifNotNil:", "superclass", "includesBehavior:"]
  20301. }, function ($methodClass){ return function (aClass){
  20302. var self=this,$self=this;
  20303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20304. return $core.withContext(function($ctx1) {
  20305. //>>excludeEnd("ctx");
  20306. var $1;
  20307. $1=$self._superclass();
  20308. if($1 == null || $1.a$nil){
  20309. return false;
  20310. } else {
  20311. var superClass;
  20312. superClass=$1;
  20313. return $recv(superClass)._includesBehavior_(aClass);
  20314. }
  20315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20316. }, function($ctx1) {$ctx1.fill(self,"inheritsFrom:",{aClass:aClass})});
  20317. //>>excludeEnd("ctx");
  20318. }; }),
  20319. $globals.Behavior);
  20320. $core.addMethod(
  20321. $core.method({
  20322. selector: "isBehavior",
  20323. protocol: "testing",
  20324. //>>excludeStart("ide", pragmas.excludeIdeData);
  20325. args: [],
  20326. source: "isBehavior\x0a\x09^ true",
  20327. referencedClasses: [],
  20328. //>>excludeEnd("ide");
  20329. pragmas: [],
  20330. messageSends: []
  20331. }, function ($methodClass){ return function (){
  20332. var self=this,$self=this;
  20333. return true;
  20334. }; }),
  20335. $globals.Behavior);
  20336. $core.addMethod(
  20337. $core.method({
  20338. selector: "javaScriptConstructor",
  20339. protocol: "accessing",
  20340. //>>excludeStart("ide", pragmas.excludeIdeData);
  20341. args: [],
  20342. source: "javaScriptConstructor\x0a\x09\x22Answer the JS constructor used to instantiate. See kernel-language.js\x22\x0a\x09\x0a\x09^ fn",
  20343. referencedClasses: [],
  20344. //>>excludeEnd("ide");
  20345. pragmas: [],
  20346. messageSends: []
  20347. }, function ($methodClass){ return function (){
  20348. var self=this,$self=this;
  20349. return $self.fn;
  20350. }; }),
  20351. $globals.Behavior);
  20352. $core.addMethod(
  20353. $core.method({
  20354. selector: "javaScriptConstructor:",
  20355. protocol: "accessing",
  20356. //>>excludeStart("ide", pragmas.excludeIdeData);
  20357. args: ["aJavaScriptFunction"],
  20358. source: "javaScriptConstructor: aJavaScriptFunction\x0a\x09\x22Set the JS constructor used to instantiate.\x0a\x09See the JS counter-part in boot.js `$core.setClassConstructor'\x22\x0a\x09\x0a\x09Smalltalk core setClassConstructor: self to: aJavaScriptFunction",
  20359. referencedClasses: ["Smalltalk"],
  20360. //>>excludeEnd("ide");
  20361. pragmas: [],
  20362. messageSends: ["setClassConstructor:to:", "core"]
  20363. }, function ($methodClass){ return function (aJavaScriptFunction){
  20364. var self=this,$self=this;
  20365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20366. return $core.withContext(function($ctx1) {
  20367. //>>excludeEnd("ctx");
  20368. $recv($recv($globals.Smalltalk)._core())._setClassConstructor_to_(self,aJavaScriptFunction);
  20369. return self;
  20370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20371. }, function($ctx1) {$ctx1.fill(self,"javaScriptConstructor:",{aJavaScriptFunction:aJavaScriptFunction})});
  20372. //>>excludeEnd("ctx");
  20373. }; }),
  20374. $globals.Behavior);
  20375. $core.addMethod(
  20376. $core.method({
  20377. selector: "javascriptConstructor",
  20378. protocol: "accessing",
  20379. //>>excludeStart("ide", pragmas.excludeIdeData);
  20380. args: [],
  20381. source: "javascriptConstructor\x0a\x09self deprecatedAPI: 'Use #javaScriptConstructor instead.'.\x0a\x09^ self javaScriptConstructor",
  20382. referencedClasses: [],
  20383. //>>excludeEnd("ide");
  20384. pragmas: [],
  20385. messageSends: ["deprecatedAPI:", "javaScriptConstructor"]
  20386. }, function ($methodClass){ return function (){
  20387. var self=this,$self=this;
  20388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20389. return $core.withContext(function($ctx1) {
  20390. //>>excludeEnd("ctx");
  20391. $self._deprecatedAPI_("Use #javaScriptConstructor instead.");
  20392. return $self._javaScriptConstructor();
  20393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20394. }, function($ctx1) {$ctx1.fill(self,"javascriptConstructor",{})});
  20395. //>>excludeEnd("ctx");
  20396. }; }),
  20397. $globals.Behavior);
  20398. $core.addMethod(
  20399. $core.method({
  20400. selector: "javascriptConstructor:",
  20401. protocol: "accessing",
  20402. //>>excludeStart("ide", pragmas.excludeIdeData);
  20403. args: ["aJavaScriptFunction"],
  20404. source: "javascriptConstructor: aJavaScriptFunction\x0a\x09self deprecatedAPI: 'Use #javaScriptConstructor: instead.'.\x0a\x09^ self javaScriptConstructor: aJavaScriptFunction",
  20405. referencedClasses: [],
  20406. //>>excludeEnd("ide");
  20407. pragmas: [],
  20408. messageSends: ["deprecatedAPI:", "javaScriptConstructor:"]
  20409. }, function ($methodClass){ return function (aJavaScriptFunction){
  20410. var self=this,$self=this;
  20411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20412. return $core.withContext(function($ctx1) {
  20413. //>>excludeEnd("ctx");
  20414. $self._deprecatedAPI_("Use #javaScriptConstructor: instead.");
  20415. return $self._javaScriptConstructor_(aJavaScriptFunction);
  20416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20417. }, function($ctx1) {$ctx1.fill(self,"javascriptConstructor:",{aJavaScriptFunction:aJavaScriptFunction})});
  20418. //>>excludeEnd("ctx");
  20419. }; }),
  20420. $globals.Behavior);
  20421. $core.addMethod(
  20422. $core.method({
  20423. selector: "lookupSelector:",
  20424. protocol: "accessing",
  20425. //>>excludeStart("ide", pragmas.excludeIdeData);
  20426. args: ["selector"],
  20427. source: "lookupSelector: selector\x0a\x09\x22Look up the given selector in my methodDictionary.\x0a\x09Return the corresponding method if found.\x0a\x09Otherwise chase the superclass chain and try again.\x0a\x09Return nil if no method is found.\x22\x0a\x09\x0a\x09<inlineJS: 'return $self.methods[selector]'>",
  20428. referencedClasses: [],
  20429. //>>excludeEnd("ide");
  20430. pragmas: [["inlineJS:", ["return $self.methods[selector]"]]],
  20431. messageSends: []
  20432. }, function ($methodClass){ return function (selector){
  20433. var self=this,$self=this;
  20434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20435. return $core.withContext(function($ctx1) {
  20436. //>>excludeEnd("ctx");
  20437. return $self.methods[selector];
  20438. return self;
  20439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20440. }, function($ctx1) {$ctx1.fill(self,"lookupSelector:",{selector:selector})});
  20441. //>>excludeEnd("ctx");
  20442. }; }),
  20443. $globals.Behavior);
  20444. $core.addMethod(
  20445. $core.method({
  20446. selector: "makeJavaScriptConstructorSubclassOf:",
  20447. protocol: "private",
  20448. //>>excludeStart("ide", pragmas.excludeIdeData);
  20449. args: ["javaScriptClass"],
  20450. source: "makeJavaScriptConstructorSubclassOf: javaScriptClass\x0a\x09<inlineJS: '\x0a\x09\x09Object.setPrototypeOf($self.fn.prototype, javaScriptClass.prototype);\x0a\x09'>",
  20451. referencedClasses: [],
  20452. //>>excludeEnd("ide");
  20453. pragmas: [["inlineJS:", ["\x0a\x09\x09Object.setPrototypeOf($self.fn.prototype, javaScriptClass.prototype);\x0a\x09"]]],
  20454. messageSends: []
  20455. }, function ($methodClass){ return function (javaScriptClass){
  20456. var self=this,$self=this;
  20457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20458. return $core.withContext(function($ctx1) {
  20459. //>>excludeEnd("ctx");
  20460. Object.setPrototypeOf($self.fn.prototype, javaScriptClass.prototype);
  20461. ;
  20462. return self;
  20463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20464. }, function($ctx1) {$ctx1.fill(self,"makeJavaScriptConstructorSubclassOf:",{javaScriptClass:javaScriptClass})});
  20465. //>>excludeEnd("ctx");
  20466. }; }),
  20467. $globals.Behavior);
  20468. $core.addMethod(
  20469. $core.method({
  20470. selector: "new",
  20471. protocol: "instance creation",
  20472. //>>excludeStart("ide", pragmas.excludeIdeData);
  20473. args: [],
  20474. source: "new\x0a\x09^ self basicNew initialize",
  20475. referencedClasses: [],
  20476. //>>excludeEnd("ide");
  20477. pragmas: [],
  20478. messageSends: ["initialize", "basicNew"]
  20479. }, function ($methodClass){ return function (){
  20480. var self=this,$self=this;
  20481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20482. return $core.withContext(function($ctx1) {
  20483. //>>excludeEnd("ctx");
  20484. return $recv($self._basicNew())._initialize();
  20485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20486. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  20487. //>>excludeEnd("ctx");
  20488. }; }),
  20489. $globals.Behavior);
  20490. $core.addMethod(
  20491. $core.method({
  20492. selector: "prototype",
  20493. protocol: "accessing",
  20494. //>>excludeStart("ide", pragmas.excludeIdeData);
  20495. args: [],
  20496. source: "prototype\x0a\x09^ self javaScriptConstructor prototype",
  20497. referencedClasses: [],
  20498. //>>excludeEnd("ide");
  20499. pragmas: [],
  20500. messageSends: ["prototype", "javaScriptConstructor"]
  20501. }, function ($methodClass){ return function (){
  20502. var self=this,$self=this;
  20503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20504. return $core.withContext(function($ctx1) {
  20505. //>>excludeEnd("ctx");
  20506. return $recv($self._javaScriptConstructor())._prototype();
  20507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20508. }, function($ctx1) {$ctx1.fill(self,"prototype",{})});
  20509. //>>excludeEnd("ctx");
  20510. }; }),
  20511. $globals.Behavior);
  20512. $core.addMethod(
  20513. $core.method({
  20514. selector: "slots",
  20515. protocol: "accessing",
  20516. //>>excludeStart("ide", pragmas.excludeIdeData);
  20517. args: [],
  20518. source: "slots\x0a\x09^ slots",
  20519. referencedClasses: [],
  20520. //>>excludeEnd("ide");
  20521. pragmas: [],
  20522. messageSends: []
  20523. }, function ($methodClass){ return function (){
  20524. var self=this,$self=this;
  20525. return $self.slots;
  20526. }; }),
  20527. $globals.Behavior);
  20528. $core.addMethod(
  20529. $core.method({
  20530. selector: "subclasses",
  20531. protocol: "accessing",
  20532. //>>excludeStart("ide", pragmas.excludeIdeData);
  20533. args: [],
  20534. source: "subclasses\x0a\x09self subclassResponsibility",
  20535. referencedClasses: [],
  20536. //>>excludeEnd("ide");
  20537. pragmas: [],
  20538. messageSends: ["subclassResponsibility"]
  20539. }, function ($methodClass){ return function (){
  20540. var self=this,$self=this;
  20541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20542. return $core.withContext(function($ctx1) {
  20543. //>>excludeEnd("ctx");
  20544. $self._subclassResponsibility();
  20545. return self;
  20546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20547. }, function($ctx1) {$ctx1.fill(self,"subclasses",{})});
  20548. //>>excludeEnd("ctx");
  20549. }; }),
  20550. $globals.Behavior);
  20551. $core.addMethod(
  20552. $core.method({
  20553. selector: "superPrototype",
  20554. protocol: "accessing",
  20555. //>>excludeStart("ide", pragmas.excludeIdeData);
  20556. args: [],
  20557. source: "superPrototype\x0a\x09<inlineJS: 'return Object.getPrototypeOf($self.fn.prototype)'>",
  20558. referencedClasses: [],
  20559. //>>excludeEnd("ide");
  20560. pragmas: [["inlineJS:", ["return Object.getPrototypeOf($self.fn.prototype)"]]],
  20561. messageSends: []
  20562. }, function ($methodClass){ return function (){
  20563. var self=this,$self=this;
  20564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20565. return $core.withContext(function($ctx1) {
  20566. //>>excludeEnd("ctx");
  20567. return Object.getPrototypeOf($self.fn.prototype);
  20568. return self;
  20569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20570. }, function($ctx1) {$ctx1.fill(self,"superPrototype",{})});
  20571. //>>excludeEnd("ctx");
  20572. }; }),
  20573. $globals.Behavior);
  20574. $core.addMethod(
  20575. $core.method({
  20576. selector: "superclass",
  20577. protocol: "accessing",
  20578. //>>excludeStart("ide", pragmas.excludeIdeData);
  20579. args: [],
  20580. source: "superclass\x0a\x09^ superclass",
  20581. referencedClasses: [],
  20582. //>>excludeEnd("ide");
  20583. pragmas: [],
  20584. messageSends: []
  20585. }, function ($methodClass){ return function (){
  20586. var self=this,$self=this;
  20587. return $self.superclass;
  20588. }; }),
  20589. $globals.Behavior);
  20590. $core.addMethod(
  20591. $core.method({
  20592. selector: "theMetaClass",
  20593. protocol: "accessing",
  20594. //>>excludeStart("ide", pragmas.excludeIdeData);
  20595. args: [],
  20596. source: "theMetaClass\x0a\x09self subclassResponsibility",
  20597. referencedClasses: [],
  20598. //>>excludeEnd("ide");
  20599. pragmas: [],
  20600. messageSends: ["subclassResponsibility"]
  20601. }, function ($methodClass){ return function (){
  20602. var self=this,$self=this;
  20603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20604. return $core.withContext(function($ctx1) {
  20605. //>>excludeEnd("ctx");
  20606. $self._subclassResponsibility();
  20607. return self;
  20608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20609. }, function($ctx1) {$ctx1.fill(self,"theMetaClass",{})});
  20610. //>>excludeEnd("ctx");
  20611. }; }),
  20612. $globals.Behavior);
  20613. $core.addMethod(
  20614. $core.method({
  20615. selector: "theNonMetaClass",
  20616. protocol: "accessing",
  20617. //>>excludeStart("ide", pragmas.excludeIdeData);
  20618. args: [],
  20619. source: "theNonMetaClass\x0a\x09self subclassResponsibility",
  20620. referencedClasses: [],
  20621. //>>excludeEnd("ide");
  20622. pragmas: [],
  20623. messageSends: ["subclassResponsibility"]
  20624. }, function ($methodClass){ return function (){
  20625. var self=this,$self=this;
  20626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20627. return $core.withContext(function($ctx1) {
  20628. //>>excludeEnd("ctx");
  20629. $self._subclassResponsibility();
  20630. return self;
  20631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20632. }, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{})});
  20633. //>>excludeEnd("ctx");
  20634. }; }),
  20635. $globals.Behavior);
  20636. $core.addMethod(
  20637. $core.method({
  20638. selector: "withAllSubclasses",
  20639. protocol: "accessing",
  20640. //>>excludeStart("ide", pragmas.excludeIdeData);
  20641. args: [],
  20642. source: "withAllSubclasses\x0a\x09^ self allSubclasses copyWithFirst: self",
  20643. referencedClasses: [],
  20644. //>>excludeEnd("ide");
  20645. pragmas: [],
  20646. messageSends: ["copyWithFirst:", "allSubclasses"]
  20647. }, function ($methodClass){ return function (){
  20648. var self=this,$self=this;
  20649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20650. return $core.withContext(function($ctx1) {
  20651. //>>excludeEnd("ctx");
  20652. return $recv($self._allSubclasses())._copyWithFirst_(self);
  20653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20654. }, function($ctx1) {$ctx1.fill(self,"withAllSubclasses",{})});
  20655. //>>excludeEnd("ctx");
  20656. }; }),
  20657. $globals.Behavior);
  20658. $core.addClass("Class", $globals.Behavior, "Kernel-Classes");
  20659. $core.setSlots($globals.Class, ["package", "subclasses"]);
  20660. //>>excludeStart("ide", pragmas.excludeIdeData);
  20661. $globals.Class.comment="I am __the__ class object.\x0a\x0aMy instances are the classes of the system.\x0aClass creation is done throught a `ClassBuilder` instance.";
  20662. //>>excludeEnd("ide");
  20663. $core.addMethod(
  20664. $core.method({
  20665. selector: "basicPackage:",
  20666. protocol: "accessing",
  20667. //>>excludeStart("ide", pragmas.excludeIdeData);
  20668. args: ["aPackage"],
  20669. source: "basicPackage: aPackage\x0a\x09package := aPackage",
  20670. referencedClasses: [],
  20671. //>>excludeEnd("ide");
  20672. pragmas: [],
  20673. messageSends: []
  20674. }, function ($methodClass){ return function (aPackage){
  20675. var self=this,$self=this;
  20676. $self.package=aPackage;
  20677. return self;
  20678. }; }),
  20679. $globals.Class);
  20680. $core.addMethod(
  20681. $core.method({
  20682. selector: "classTag",
  20683. protocol: "accessing",
  20684. //>>excludeStart("ide", pragmas.excludeIdeData);
  20685. args: [],
  20686. 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^ 'class'",
  20687. referencedClasses: [],
  20688. //>>excludeEnd("ide");
  20689. pragmas: [],
  20690. messageSends: []
  20691. }, function ($methodClass){ return function (){
  20692. var self=this,$self=this;
  20693. return "class";
  20694. }; }),
  20695. $globals.Class);
  20696. $core.addMethod(
  20697. $core.method({
  20698. selector: "definition",
  20699. protocol: "accessing",
  20700. //>>excludeStart("ide", pragmas.excludeIdeData);
  20701. args: [],
  20702. source: "definition\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09print: self superclass; write: ' subclass: '; printSymbol: self name; lf;\x0a\x09\x09write: (self traitCompositionDefinition ifNotEmpty: [ :tcd | { String tab. 'uses: '. tcd. String lf }]);\x0a\x09\x09tab; write: {'slots: {'. ('. ' join: (self instanceVariableNames collect: #symbolPrintString)). '}'}; lf;\x0a\x09\x09tab; write: 'package: '; print: self category ]",
  20703. referencedClasses: ["String"],
  20704. //>>excludeEnd("ide");
  20705. pragmas: [],
  20706. messageSends: ["streamContents:", "print:", "superclass", "write:", "printSymbol:", "name", "lf", "ifNotEmpty:", "traitCompositionDefinition", "tab", "join:", "collect:", "instanceVariableNames", "category"]
  20707. }, function ($methodClass){ return function (){
  20708. var self=this,$self=this;
  20709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20710. return $core.withContext(function($ctx1) {
  20711. //>>excludeEnd("ctx");
  20712. return $recv($globals.String)._streamContents_((function(stream){
  20713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20714. return $core.withContext(function($ctx2) {
  20715. //>>excludeEnd("ctx");
  20716. [$recv(stream)._print_($self._superclass())
  20717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20718. ,$ctx2.sendIdx["print:"]=1
  20719. //>>excludeEnd("ctx");
  20720. ][0];
  20721. [$recv(stream)._write_(" subclass: ")
  20722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20723. ,$ctx2.sendIdx["write:"]=1
  20724. //>>excludeEnd("ctx");
  20725. ][0];
  20726. $recv(stream)._printSymbol_($self._name());
  20727. [$recv(stream)._lf()
  20728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20729. ,$ctx2.sendIdx["lf"]=1
  20730. //>>excludeEnd("ctx");
  20731. ][0];
  20732. [$recv(stream)._write_($recv($self._traitCompositionDefinition())._ifNotEmpty_((function(tcd){
  20733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20734. return $core.withContext(function($ctx3) {
  20735. //>>excludeEnd("ctx");
  20736. return [[$recv($globals.String)._tab()
  20737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20738. ,$ctx3.sendIdx["tab"]=1
  20739. //>>excludeEnd("ctx");
  20740. ][0],"uses: ",tcd,[$recv($globals.String)._lf()
  20741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20742. ,$ctx3.sendIdx["lf"]=2
  20743. //>>excludeEnd("ctx");
  20744. ][0]];
  20745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20746. }, function($ctx3) {$ctx3.fillBlock({tcd:tcd},$ctx2,2)});
  20747. //>>excludeEnd("ctx");
  20748. })))
  20749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20750. ,$ctx2.sendIdx["write:"]=2
  20751. //>>excludeEnd("ctx");
  20752. ][0];
  20753. [$recv(stream)._tab()
  20754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20755. ,$ctx2.sendIdx["tab"]=2
  20756. //>>excludeEnd("ctx");
  20757. ][0];
  20758. [$recv(stream)._write_(["slots: {",". "._join_($recv($self._instanceVariableNames())._collect_("symbolPrintString")),"}"])
  20759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20760. ,$ctx2.sendIdx["write:"]=3
  20761. //>>excludeEnd("ctx");
  20762. ][0];
  20763. $recv(stream)._lf();
  20764. $recv(stream)._tab();
  20765. $recv(stream)._write_("package: ");
  20766. return $recv(stream)._print_($self._category());
  20767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20768. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  20769. //>>excludeEnd("ctx");
  20770. }));
  20771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20772. }, function($ctx1) {$ctx1.fill(self,"definition",{})});
  20773. //>>excludeEnd("ctx");
  20774. }; }),
  20775. $globals.Class);
  20776. $core.addMethod(
  20777. $core.method({
  20778. selector: "includingPossibleMetaDo:",
  20779. protocol: "enumerating",
  20780. //>>excludeStart("ide", pragmas.excludeIdeData);
  20781. args: ["aBlock"],
  20782. source: "includingPossibleMetaDo: aBlock\x0a\x0a\x09aBlock value: self.\x0a\x09aBlock value: self theMetaClass",
  20783. referencedClasses: [],
  20784. //>>excludeEnd("ide");
  20785. pragmas: [],
  20786. messageSends: ["value:", "theMetaClass"]
  20787. }, function ($methodClass){ return function (aBlock){
  20788. var self=this,$self=this;
  20789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20790. return $core.withContext(function($ctx1) {
  20791. //>>excludeEnd("ctx");
  20792. [$recv(aBlock)._value_(self)
  20793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20794. ,$ctx1.sendIdx["value:"]=1
  20795. //>>excludeEnd("ctx");
  20796. ][0];
  20797. $recv(aBlock)._value_($self._theMetaClass());
  20798. return self;
  20799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20800. }, function($ctx1) {$ctx1.fill(self,"includingPossibleMetaDo:",{aBlock:aBlock})});
  20801. //>>excludeEnd("ctx");
  20802. }; }),
  20803. $globals.Class);
  20804. $core.addMethod(
  20805. $core.method({
  20806. selector: "isClass",
  20807. protocol: "testing",
  20808. //>>excludeStart("ide", pragmas.excludeIdeData);
  20809. args: [],
  20810. source: "isClass\x0a\x09^ true",
  20811. referencedClasses: [],
  20812. //>>excludeEnd("ide");
  20813. pragmas: [],
  20814. messageSends: []
  20815. }, function ($methodClass){ return function (){
  20816. var self=this,$self=this;
  20817. return true;
  20818. }; }),
  20819. $globals.Class);
  20820. $core.addMethod(
  20821. $core.method({
  20822. selector: "package",
  20823. protocol: "accessing",
  20824. //>>excludeStart("ide", pragmas.excludeIdeData);
  20825. args: [],
  20826. source: "package\x0a\x09^ package",
  20827. referencedClasses: [],
  20828. //>>excludeEnd("ide");
  20829. pragmas: [],
  20830. messageSends: []
  20831. }, function ($methodClass){ return function (){
  20832. var self=this,$self=this;
  20833. return $self.package;
  20834. }; }),
  20835. $globals.Class);
  20836. $core.addMethod(
  20837. $core.method({
  20838. selector: "provided",
  20839. protocol: "converting",
  20840. //>>excludeStart("ide", pragmas.excludeIdeData);
  20841. args: [],
  20842. source: "provided\x0a\x09\x22Returns JS proxy that allows to access 'static API', as in\x0a\x09 Number provided EPSILON\x0a\x09that forwards to (wrapped JS) constructor function.\x22\x0a\x09\x0a\x09^ self javaScriptConstructor provided",
  20843. referencedClasses: [],
  20844. //>>excludeEnd("ide");
  20845. pragmas: [],
  20846. messageSends: ["provided", "javaScriptConstructor"]
  20847. }, function ($methodClass){ return function (){
  20848. var self=this,$self=this;
  20849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20850. return $core.withContext(function($ctx1) {
  20851. //>>excludeEnd("ctx");
  20852. return $recv($self._javaScriptConstructor())._provided();
  20853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20854. }, function($ctx1) {$ctx1.fill(self,"provided",{})});
  20855. //>>excludeEnd("ctx");
  20856. }; }),
  20857. $globals.Class);
  20858. $core.addMethod(
  20859. $core.method({
  20860. selector: "rename:",
  20861. protocol: "accessing",
  20862. //>>excludeStart("ide", pragmas.excludeIdeData);
  20863. args: ["aString"],
  20864. source: "rename: aString\x0a\x09ClassBuilder new renameClass: self to: aString",
  20865. referencedClasses: ["ClassBuilder"],
  20866. //>>excludeEnd("ide");
  20867. pragmas: [],
  20868. messageSends: ["renameClass:to:", "new"]
  20869. }, function ($methodClass){ return function (aString){
  20870. var self=this,$self=this;
  20871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20872. return $core.withContext(function($ctx1) {
  20873. //>>excludeEnd("ctx");
  20874. $recv($recv($globals.ClassBuilder)._new())._renameClass_to_(self,aString);
  20875. return self;
  20876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20877. }, function($ctx1) {$ctx1.fill(self,"rename:",{aString:aString})});
  20878. //>>excludeEnd("ctx");
  20879. }; }),
  20880. $globals.Class);
  20881. $core.addMethod(
  20882. $core.method({
  20883. selector: "subclasses",
  20884. protocol: "accessing",
  20885. //>>excludeStart("ide", pragmas.excludeIdeData);
  20886. args: [],
  20887. source: "subclasses\x0a\x09^ subclasses copy",
  20888. referencedClasses: [],
  20889. //>>excludeEnd("ide");
  20890. pragmas: [],
  20891. messageSends: ["copy"]
  20892. }, function ($methodClass){ return function (){
  20893. var self=this,$self=this;
  20894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20895. return $core.withContext(function($ctx1) {
  20896. //>>excludeEnd("ctx");
  20897. return $recv($self.subclasses)._copy();
  20898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20899. }, function($ctx1) {$ctx1.fill(self,"subclasses",{})});
  20900. //>>excludeEnd("ctx");
  20901. }; }),
  20902. $globals.Class);
  20903. $core.addMethod(
  20904. $core.method({
  20905. selector: "theMetaClass",
  20906. protocol: "accessing",
  20907. //>>excludeStart("ide", pragmas.excludeIdeData);
  20908. args: [],
  20909. source: "theMetaClass\x0a\x09^ self class",
  20910. referencedClasses: [],
  20911. //>>excludeEnd("ide");
  20912. pragmas: [],
  20913. messageSends: ["class"]
  20914. }, function ($methodClass){ return function (){
  20915. var self=this,$self=this;
  20916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20917. return $core.withContext(function($ctx1) {
  20918. //>>excludeEnd("ctx");
  20919. return $self._class();
  20920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20921. }, function($ctx1) {$ctx1.fill(self,"theMetaClass",{})});
  20922. //>>excludeEnd("ctx");
  20923. }; }),
  20924. $globals.Class);
  20925. $core.addClass("Metaclass", $globals.Behavior, "Kernel-Classes");
  20926. $core.setSlots($globals.Metaclass, ["instanceClass"]);
  20927. //>>excludeStart("ide", pragmas.excludeIdeData);
  20928. $globals.Metaclass.comment="I am the root of the class hierarchy.\x0a\x0aMy instances are metaclasses, one for each real class, and have a single instance, which they hold onto: the class that they are the metaclass of.";
  20929. //>>excludeEnd("ide");
  20930. $core.addMethod(
  20931. $core.method({
  20932. selector: "asJavaScriptSource",
  20933. protocol: "converting",
  20934. //>>excludeStart("ide", pragmas.excludeIdeData);
  20935. args: [],
  20936. source: "asJavaScriptSource\x0a\x09^ '$globals.', self instanceClass name, '.a$cls'",
  20937. referencedClasses: [],
  20938. //>>excludeEnd("ide");
  20939. pragmas: [],
  20940. messageSends: [",", "name", "instanceClass"]
  20941. }, function ($methodClass){ return function (){
  20942. var self=this,$self=this;
  20943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20944. return $core.withContext(function($ctx1) {
  20945. //>>excludeEnd("ctx");
  20946. return [$recv("$globals.".__comma($recv($self._instanceClass())._name())).__comma(".a$cls")
  20947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20948. ,$ctx1.sendIdx[","]=1
  20949. //>>excludeEnd("ctx");
  20950. ][0];
  20951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20952. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  20953. //>>excludeEnd("ctx");
  20954. }; }),
  20955. $globals.Metaclass);
  20956. $core.addMethod(
  20957. $core.method({
  20958. selector: "definition",
  20959. protocol: "accessing",
  20960. //>>excludeStart("ide", pragmas.excludeIdeData);
  20961. args: [],
  20962. source: "definition\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09print: self;\x0a\x09\x09write: (self traitCompositionDefinition\x0a\x09\x09\x09ifEmpty: [' ']\x0a\x09\x09\x09ifNotEmpty: [ :tcd | { String lf. String tab. 'uses: '. tcd. String lf. String tab }]);\x0a\x09\x09write: {'slots: {'. ('. ' join: (self instanceVariableNames collect: #symbolPrintString)). '}'} ]",
  20963. referencedClasses: ["String"],
  20964. //>>excludeEnd("ide");
  20965. pragmas: [],
  20966. messageSends: ["streamContents:", "print:", "write:", "ifEmpty:ifNotEmpty:", "traitCompositionDefinition", "lf", "tab", "join:", "collect:", "instanceVariableNames"]
  20967. }, function ($methodClass){ return function (){
  20968. var self=this,$self=this;
  20969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20970. return $core.withContext(function($ctx1) {
  20971. //>>excludeEnd("ctx");
  20972. return $recv($globals.String)._streamContents_((function(stream){
  20973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20974. return $core.withContext(function($ctx2) {
  20975. //>>excludeEnd("ctx");
  20976. $recv(stream)._print_(self);
  20977. [$recv(stream)._write_($recv($self._traitCompositionDefinition())._ifEmpty_ifNotEmpty_((function(){
  20978. return " ";
  20979. }),(function(tcd){
  20980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20981. return $core.withContext(function($ctx3) {
  20982. //>>excludeEnd("ctx");
  20983. return [[$recv($globals.String)._lf()
  20984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20985. ,$ctx3.sendIdx["lf"]=1
  20986. //>>excludeEnd("ctx");
  20987. ][0],[$recv($globals.String)._tab()
  20988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20989. ,$ctx3.sendIdx["tab"]=1
  20990. //>>excludeEnd("ctx");
  20991. ][0],"uses: ",tcd,$recv($globals.String)._lf(),$recv($globals.String)._tab()];
  20992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20993. }, function($ctx3) {$ctx3.fillBlock({tcd:tcd},$ctx2,3)});
  20994. //>>excludeEnd("ctx");
  20995. })))
  20996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20997. ,$ctx2.sendIdx["write:"]=1
  20998. //>>excludeEnd("ctx");
  20999. ][0];
  21000. return $recv(stream)._write_(["slots: {",". "._join_($recv($self._instanceVariableNames())._collect_("symbolPrintString")),"}"]);
  21001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21002. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  21003. //>>excludeEnd("ctx");
  21004. }));
  21005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21006. }, function($ctx1) {$ctx1.fill(self,"definition",{})});
  21007. //>>excludeEnd("ctx");
  21008. }; }),
  21009. $globals.Metaclass);
  21010. $core.addMethod(
  21011. $core.method({
  21012. selector: "instanceClass",
  21013. protocol: "accessing",
  21014. //>>excludeStart("ide", pragmas.excludeIdeData);
  21015. args: [],
  21016. source: "instanceClass\x0a\x09^ instanceClass",
  21017. referencedClasses: [],
  21018. //>>excludeEnd("ide");
  21019. pragmas: [],
  21020. messageSends: []
  21021. }, function ($methodClass){ return function (){
  21022. var self=this,$self=this;
  21023. return $self.instanceClass;
  21024. }; }),
  21025. $globals.Metaclass);
  21026. $core.addMethod(
  21027. $core.method({
  21028. selector: "instanceVariableNames:",
  21029. protocol: "accessing",
  21030. //>>excludeStart("ide", pragmas.excludeIdeData);
  21031. args: ["aString"],
  21032. source: "instanceVariableNames: aString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self slots: aString instanceVariablesStringAsSlotList",
  21033. referencedClasses: [],
  21034. //>>excludeEnd("ide");
  21035. pragmas: [],
  21036. messageSends: ["slots:", "instanceVariablesStringAsSlotList"]
  21037. }, function ($methodClass){ return function (aString){
  21038. var self=this,$self=this;
  21039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21040. return $core.withContext(function($ctx1) {
  21041. //>>excludeEnd("ctx");
  21042. return $self._slots_($recv(aString)._instanceVariablesStringAsSlotList());
  21043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21044. }, function($ctx1) {$ctx1.fill(self,"instanceVariableNames:",{aString:aString})});
  21045. //>>excludeEnd("ctx");
  21046. }; }),
  21047. $globals.Metaclass);
  21048. $core.addMethod(
  21049. $core.method({
  21050. selector: "isMetaclass",
  21051. protocol: "testing",
  21052. //>>excludeStart("ide", pragmas.excludeIdeData);
  21053. args: [],
  21054. source: "isMetaclass\x0a\x09^ true",
  21055. referencedClasses: [],
  21056. //>>excludeEnd("ide");
  21057. pragmas: [],
  21058. messageSends: []
  21059. }, function ($methodClass){ return function (){
  21060. var self=this,$self=this;
  21061. return true;
  21062. }; }),
  21063. $globals.Metaclass);
  21064. $core.addMethod(
  21065. $core.method({
  21066. selector: "name",
  21067. protocol: "accessing",
  21068. //>>excludeStart("ide", pragmas.excludeIdeData);
  21069. args: [],
  21070. source: "name\x0a\x09^ self instanceClass name, ' class'",
  21071. referencedClasses: [],
  21072. //>>excludeEnd("ide");
  21073. pragmas: [],
  21074. messageSends: [",", "name", "instanceClass"]
  21075. }, function ($methodClass){ return function (){
  21076. var self=this,$self=this;
  21077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21078. return $core.withContext(function($ctx1) {
  21079. //>>excludeEnd("ctx");
  21080. return $recv($recv($self._instanceClass())._name()).__comma(" class");
  21081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21082. }, function($ctx1) {$ctx1.fill(self,"name",{})});
  21083. //>>excludeEnd("ctx");
  21084. }; }),
  21085. $globals.Metaclass);
  21086. $core.addMethod(
  21087. $core.method({
  21088. selector: "package",
  21089. protocol: "accessing",
  21090. //>>excludeStart("ide", pragmas.excludeIdeData);
  21091. args: [],
  21092. source: "package\x0a\x09^ self instanceClass package",
  21093. referencedClasses: [],
  21094. //>>excludeEnd("ide");
  21095. pragmas: [],
  21096. messageSends: ["package", "instanceClass"]
  21097. }, function ($methodClass){ return function (){
  21098. var self=this,$self=this;
  21099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21100. return $core.withContext(function($ctx1) {
  21101. //>>excludeEnd("ctx");
  21102. return $recv($self._instanceClass())._package();
  21103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21104. }, function($ctx1) {$ctx1.fill(self,"package",{})});
  21105. //>>excludeEnd("ctx");
  21106. }; }),
  21107. $globals.Metaclass);
  21108. $core.addMethod(
  21109. $core.method({
  21110. selector: "slots:",
  21111. protocol: "accessing",
  21112. //>>excludeStart("ide", pragmas.excludeIdeData);
  21113. args: ["aCollection"],
  21114. source: "slots: aCollection\x0a\x09ClassBuilder new\x0a\x09\x09class: self slots: aCollection.\x0a\x09^ self",
  21115. referencedClasses: ["ClassBuilder"],
  21116. //>>excludeEnd("ide");
  21117. pragmas: [],
  21118. messageSends: ["class:slots:", "new"]
  21119. }, function ($methodClass){ return function (aCollection){
  21120. var self=this,$self=this;
  21121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21122. return $core.withContext(function($ctx1) {
  21123. //>>excludeEnd("ctx");
  21124. $recv($recv($globals.ClassBuilder)._new())._class_slots_(self,aCollection);
  21125. return self;
  21126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21127. }, function($ctx1) {$ctx1.fill(self,"slots:",{aCollection:aCollection})});
  21128. //>>excludeEnd("ctx");
  21129. }; }),
  21130. $globals.Metaclass);
  21131. $core.addMethod(
  21132. $core.method({
  21133. selector: "subclasses",
  21134. protocol: "accessing",
  21135. //>>excludeStart("ide", pragmas.excludeIdeData);
  21136. args: [],
  21137. source: "subclasses\x0a\x09^ Smalltalk core metaSubclasses: self",
  21138. referencedClasses: ["Smalltalk"],
  21139. //>>excludeEnd("ide");
  21140. pragmas: [],
  21141. messageSends: ["metaSubclasses:", "core"]
  21142. }, function ($methodClass){ return function (){
  21143. var self=this,$self=this;
  21144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21145. return $core.withContext(function($ctx1) {
  21146. //>>excludeEnd("ctx");
  21147. return $recv($recv($globals.Smalltalk)._core())._metaSubclasses_(self);
  21148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21149. }, function($ctx1) {$ctx1.fill(self,"subclasses",{})});
  21150. //>>excludeEnd("ctx");
  21151. }; }),
  21152. $globals.Metaclass);
  21153. $core.addMethod(
  21154. $core.method({
  21155. selector: "theMetaClass",
  21156. protocol: "accessing",
  21157. //>>excludeStart("ide", pragmas.excludeIdeData);
  21158. args: [],
  21159. source: "theMetaClass\x0a\x09^ self",
  21160. referencedClasses: [],
  21161. //>>excludeEnd("ide");
  21162. pragmas: [],
  21163. messageSends: []
  21164. }, function ($methodClass){ return function (){
  21165. var self=this,$self=this;
  21166. return self;
  21167. }; }),
  21168. $globals.Metaclass);
  21169. $core.addMethod(
  21170. $core.method({
  21171. selector: "theNonMetaClass",
  21172. protocol: "accessing",
  21173. //>>excludeStart("ide", pragmas.excludeIdeData);
  21174. args: [],
  21175. source: "theNonMetaClass\x0a\x09^ self instanceClass",
  21176. referencedClasses: [],
  21177. //>>excludeEnd("ide");
  21178. pragmas: [],
  21179. messageSends: ["instanceClass"]
  21180. }, function ($methodClass){ return function (){
  21181. var self=this,$self=this;
  21182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21183. return $core.withContext(function($ctx1) {
  21184. //>>excludeEnd("ctx");
  21185. return $self._instanceClass();
  21186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21187. }, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{})});
  21188. //>>excludeEnd("ctx");
  21189. }; }),
  21190. $globals.Metaclass);
  21191. $core.addMethod(
  21192. $core.method({
  21193. selector: "uses:instanceVariableNames:",
  21194. protocol: "accessing",
  21195. //>>excludeStart("ide", pragmas.excludeIdeData);
  21196. args: ["aTraitCompositionDescription", "aString"],
  21197. source: "uses: aTraitCompositionDescription instanceVariableNames: aString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self uses: aTraitCompositionDescription slots: aString instanceVariablesStringAsSlotList",
  21198. referencedClasses: [],
  21199. //>>excludeEnd("ide");
  21200. pragmas: [],
  21201. messageSends: ["uses:slots:", "instanceVariablesStringAsSlotList"]
  21202. }, function ($methodClass){ return function (aTraitCompositionDescription,aString){
  21203. var self=this,$self=this;
  21204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21205. return $core.withContext(function($ctx1) {
  21206. //>>excludeEnd("ctx");
  21207. return $self._uses_slots_(aTraitCompositionDescription,$recv(aString)._instanceVariablesStringAsSlotList());
  21208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21209. }, function($ctx1) {$ctx1.fill(self,"uses:instanceVariableNames:",{aTraitCompositionDescription:aTraitCompositionDescription,aString:aString})});
  21210. //>>excludeEnd("ctx");
  21211. }; }),
  21212. $globals.Metaclass);
  21213. $core.addMethod(
  21214. $core.method({
  21215. selector: "uses:slots:",
  21216. protocol: "accessing",
  21217. //>>excludeStart("ide", pragmas.excludeIdeData);
  21218. args: ["aTraitCompositionDescription", "aCollection"],
  21219. source: "uses: aTraitCompositionDescription slots: aCollection\x0a\x09self\x0a\x09\x09slots: aCollection;\x0a\x09\x09setTraitComposition: aTraitCompositionDescription asTraitComposition.\x0a\x09^ self",
  21220. referencedClasses: [],
  21221. //>>excludeEnd("ide");
  21222. pragmas: [],
  21223. messageSends: ["slots:", "setTraitComposition:", "asTraitComposition"]
  21224. }, function ($methodClass){ return function (aTraitCompositionDescription,aCollection){
  21225. var self=this,$self=this;
  21226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21227. return $core.withContext(function($ctx1) {
  21228. //>>excludeEnd("ctx");
  21229. $self._slots_(aCollection);
  21230. $self._setTraitComposition_($recv(aTraitCompositionDescription)._asTraitComposition());
  21231. return self;
  21232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21233. }, function($ctx1) {$ctx1.fill(self,"uses:slots:",{aTraitCompositionDescription:aTraitCompositionDescription,aCollection:aCollection})});
  21234. //>>excludeEnd("ctx");
  21235. }; }),
  21236. $globals.Metaclass);
  21237. $core.addClass("ClassBuilder", $globals.Object, "Kernel-Classes");
  21238. //>>excludeStart("ide", pragmas.excludeIdeData);
  21239. $globals.ClassBuilder.comment="I am responsible for compiling new classes or modifying existing classes in the system.\x0a\x0aRather than using me directly to compile a class, use `Class >> subclass:instanceVariableNames:package:`.";
  21240. //>>excludeEnd("ide");
  21241. $core.addMethod(
  21242. $core.method({
  21243. selector: "addSubclassOf:named:instanceVariableNames:package:",
  21244. protocol: "class definition",
  21245. //>>excludeStart("ide", pragmas.excludeIdeData);
  21246. args: ["aClass", "className", "aCollection", "packageName"],
  21247. source: "addSubclassOf: aClass named: className instanceVariableNames: aCollection package: packageName\x0a\x09self deprecatedAPI: 'Use #addSubclass:named:slots:package: instead.'.\x0a\x09^ self\x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: className\x0a\x09\x09slots: aCollection\x0a\x09\x09package: packageName",
  21248. referencedClasses: [],
  21249. //>>excludeEnd("ide");
  21250. pragmas: [],
  21251. messageSends: ["deprecatedAPI:", "addSubclassOf:named:slots:package:"]
  21252. }, function ($methodClass){ return function (aClass,className,aCollection,packageName){
  21253. var self=this,$self=this;
  21254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21255. return $core.withContext(function($ctx1) {
  21256. //>>excludeEnd("ctx");
  21257. $self._deprecatedAPI_("Use #addSubclass:named:slots:package: instead.");
  21258. return $self._addSubclassOf_named_slots_package_(aClass,className,aCollection,packageName);
  21259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21260. }, function($ctx1) {$ctx1.fill(self,"addSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName})});
  21261. //>>excludeEnd("ctx");
  21262. }; }),
  21263. $globals.ClassBuilder);
  21264. $core.addMethod(
  21265. $core.method({
  21266. selector: "addSubclassOf:named:slots:package:",
  21267. protocol: "class definition",
  21268. //>>excludeStart("ide", pragmas.excludeIdeData);
  21269. args: ["aClass", "className", "aCollection", "packageName"],
  21270. source: "addSubclassOf: aClass named: className slots: aCollection package: packageName\x0a\x09| theClass thePackage |\x0a\x09\x0a\x09theClass := Smalltalk globals at: className.\x0a\x09thePackage := Package named: packageName.\x0a\x09\x0a\x09theClass ifNotNil: [\x0a\x09\x09theClass package: thePackage.\x0a\x09\x09theClass superclass == aClass\x0a\x09\x09\x09ifFalse: [ ^ self\x0a\x09\x09\x09\x09migrateClassNamed: className\x0a\x09\x09\x09\x09superclass: aClass\x0a\x09\x09\x09\x09slots: aCollection\x0a\x09\x09\x09\x09package: packageName ] ].\x0a\x09\x09\x0a\x09^ (self\x0a\x09\x09basicAddSubclassOf: aClass\x0a\x09\x09named: className\x0a\x09\x09slots: aCollection\x0a\x09\x09package: packageName) recompile; yourself",
  21271. referencedClasses: ["Smalltalk", "Package"],
  21272. //>>excludeEnd("ide");
  21273. pragmas: [],
  21274. messageSends: ["at:", "globals", "named:", "ifNotNil:", "package:", "ifFalse:", "==", "superclass", "migrateClassNamed:superclass:slots:package:", "recompile", "basicAddSubclassOf:named:slots:package:", "yourself"]
  21275. }, function ($methodClass){ return function (aClass,className,aCollection,packageName){
  21276. var self=this,$self=this;
  21277. var theClass,thePackage;
  21278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21279. return $core.withContext(function($ctx1) {
  21280. //>>excludeEnd("ctx");
  21281. var $1,$2;
  21282. theClass=$recv($recv($globals.Smalltalk)._globals())._at_(className);
  21283. thePackage=$recv($globals.Package)._named_(packageName);
  21284. $1=theClass;
  21285. if($1 == null || $1.a$nil){
  21286. $1;
  21287. } else {
  21288. $recv(theClass)._package_(thePackage);
  21289. if(!$core.assert($recv($recv(theClass)._superclass()).__eq_eq(aClass))){
  21290. return $self._migrateClassNamed_superclass_slots_package_(className,aClass,aCollection,packageName);
  21291. }
  21292. }
  21293. $2=$self._basicAddSubclassOf_named_slots_package_(aClass,className,aCollection,packageName);
  21294. $recv($2)._recompile();
  21295. return $recv($2)._yourself();
  21296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21297. }, function($ctx1) {$ctx1.fill(self,"addSubclassOf:named:slots:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName,theClass:theClass,thePackage:thePackage})});
  21298. //>>excludeEnd("ctx");
  21299. }; }),
  21300. $globals.ClassBuilder);
  21301. $core.addMethod(
  21302. $core.method({
  21303. selector: "addTraitNamed:package:",
  21304. protocol: "class definition",
  21305. //>>excludeStart("ide", pragmas.excludeIdeData);
  21306. args: ["traitName", "packageName"],
  21307. source: "addTraitNamed: traitName package: packageName\x0a\x09| theTrait thePackage |\x0a\x09\x0a\x09theTrait := Smalltalk globals at: traitName.\x0a\x09thePackage := Package named: packageName.\x0a\x09\x0a\x09theTrait ifNotNil: [ ^ theTrait package: thePackage; recompile; yourself ].\x0a\x09\x09\x0a\x09theTrait := self\x0a\x09\x09basicAddTraitNamed: traitName\x0a\x09\x09package: packageName.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassAdded new\x0a\x09\x09\x09theClass: theTrait;\x0a\x09\x09\x09yourself).\x0a\x09\x0a\x09^ theTrait",
  21308. referencedClasses: ["Smalltalk", "Package", "SystemAnnouncer", "ClassAdded"],
  21309. //>>excludeEnd("ide");
  21310. pragmas: [],
  21311. messageSends: ["at:", "globals", "named:", "ifNotNil:", "package:", "recompile", "yourself", "basicAddTraitNamed:package:", "announce:", "current", "theClass:", "new"]
  21312. }, function ($methodClass){ return function (traitName,packageName){
  21313. var self=this,$self=this;
  21314. var theTrait,thePackage;
  21315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21316. return $core.withContext(function($ctx1) {
  21317. //>>excludeEnd("ctx");
  21318. var $1,$2,$3,$4;
  21319. theTrait=$recv($recv($globals.Smalltalk)._globals())._at_(traitName);
  21320. thePackage=$recv($globals.Package)._named_(packageName);
  21321. $1=theTrait;
  21322. if($1 == null || $1.a$nil){
  21323. $1;
  21324. } else {
  21325. $2=theTrait;
  21326. $recv($2)._package_(thePackage);
  21327. $recv($2)._recompile();
  21328. return [$recv($2)._yourself()
  21329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21330. ,$ctx1.sendIdx["yourself"]=1
  21331. //>>excludeEnd("ctx");
  21332. ][0];
  21333. }
  21334. theTrait=$self._basicAddTraitNamed_package_(traitName,packageName);
  21335. $3=$recv($globals.SystemAnnouncer)._current();
  21336. $4=$recv($globals.ClassAdded)._new();
  21337. $recv($4)._theClass_(theTrait);
  21338. $recv($3)._announce_($recv($4)._yourself());
  21339. return theTrait;
  21340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21341. }, function($ctx1) {$ctx1.fill(self,"addTraitNamed:package:",{traitName:traitName,packageName:packageName,theTrait:theTrait,thePackage:thePackage})});
  21342. //>>excludeEnd("ctx");
  21343. }; }),
  21344. $globals.ClassBuilder);
  21345. $core.addMethod(
  21346. $core.method({
  21347. selector: "basicAddSubclassOf:named:slots:package:",
  21348. protocol: "private",
  21349. //>>excludeStart("ide", pragmas.excludeIdeData);
  21350. args: ["aClass", "aString", "aCollection", "packageName"],
  21351. source: "basicAddSubclassOf: aClass named: aString slots: aCollection package: packageName\x0a\x09<inlineJS: '\x0a\x09\x09var klass = $core.addClass(aString, aClass, packageName);\x0a\x09\x09$core.setSlots(klass, aCollection);\x0a\x09\x09return klass;\x0a\x09'>",
  21352. referencedClasses: [],
  21353. //>>excludeEnd("ide");
  21354. pragmas: [["inlineJS:", ["\x0a\x09\x09var klass = $core.addClass(aString, aClass, packageName);\x0a\x09\x09$core.setSlots(klass, aCollection);\x0a\x09\x09return klass;\x0a\x09"]]],
  21355. messageSends: []
  21356. }, function ($methodClass){ return function (aClass,aString,aCollection,packageName){
  21357. var self=this,$self=this;
  21358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21359. return $core.withContext(function($ctx1) {
  21360. //>>excludeEnd("ctx");
  21361. var klass = $core.addClass(aString, aClass, packageName);
  21362. $core.setSlots(klass, aCollection);
  21363. return klass;
  21364. ;
  21365. return self;
  21366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21367. }, function($ctx1) {$ctx1.fill(self,"basicAddSubclassOf:named:slots:package:",{aClass:aClass,aString:aString,aCollection:aCollection,packageName:packageName})});
  21368. //>>excludeEnd("ctx");
  21369. }; }),
  21370. $globals.ClassBuilder);
  21371. $core.addMethod(
  21372. $core.method({
  21373. selector: "basicAddTraitNamed:package:",
  21374. protocol: "private",
  21375. //>>excludeStart("ide", pragmas.excludeIdeData);
  21376. args: ["aString", "anotherString"],
  21377. source: "basicAddTraitNamed: aString package: anotherString\x0a\x09<inlineJS: 'return $core.addTrait(aString, anotherString)'>",
  21378. referencedClasses: [],
  21379. //>>excludeEnd("ide");
  21380. pragmas: [["inlineJS:", ["return $core.addTrait(aString, anotherString)"]]],
  21381. messageSends: []
  21382. }, function ($methodClass){ return function (aString,anotherString){
  21383. var self=this,$self=this;
  21384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21385. return $core.withContext(function($ctx1) {
  21386. //>>excludeEnd("ctx");
  21387. return $core.addTrait(aString, anotherString);
  21388. return self;
  21389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21390. }, function($ctx1) {$ctx1.fill(self,"basicAddTraitNamed:package:",{aString:aString,anotherString:anotherString})});
  21391. //>>excludeEnd("ctx");
  21392. }; }),
  21393. $globals.ClassBuilder);
  21394. $core.addMethod(
  21395. $core.method({
  21396. selector: "basicClass:slots:",
  21397. protocol: "private",
  21398. //>>excludeStart("ide", pragmas.excludeIdeData);
  21399. args: ["aClass", "aCollection"],
  21400. source: "basicClass: aClass slots: aCollection\x0a\x0a\x09aClass isMetaclass ifFalse: [ self error: aClass name, ' is not a metaclass' ].\x0a\x09Smalltalk core setSlots: aClass to: aCollection",
  21401. referencedClasses: ["Smalltalk"],
  21402. //>>excludeEnd("ide");
  21403. pragmas: [],
  21404. messageSends: ["ifFalse:", "isMetaclass", "error:", ",", "name", "setSlots:to:", "core"]
  21405. }, function ($methodClass){ return function (aClass,aCollection){
  21406. var self=this,$self=this;
  21407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21408. return $core.withContext(function($ctx1) {
  21409. //>>excludeEnd("ctx");
  21410. if(!$core.assert($recv(aClass)._isMetaclass())){
  21411. $self._error_($recv($recv(aClass)._name()).__comma(" is not a metaclass"));
  21412. }
  21413. $recv($recv($globals.Smalltalk)._core())._setSlots_to_(aClass,aCollection);
  21414. return self;
  21415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21416. }, function($ctx1) {$ctx1.fill(self,"basicClass:slots:",{aClass:aClass,aCollection:aCollection})});
  21417. //>>excludeEnd("ctx");
  21418. }; }),
  21419. $globals.ClassBuilder);
  21420. $core.addMethod(
  21421. $core.method({
  21422. selector: "basicRemoveClass:",
  21423. protocol: "private",
  21424. //>>excludeStart("ide", pragmas.excludeIdeData);
  21425. args: ["aClass"],
  21426. source: "basicRemoveClass: aClass\x0a\x09<inlineJS: '$core.removeClass(aClass)'>",
  21427. referencedClasses: [],
  21428. //>>excludeEnd("ide");
  21429. pragmas: [["inlineJS:", ["$core.removeClass(aClass)"]]],
  21430. messageSends: []
  21431. }, function ($methodClass){ return function (aClass){
  21432. var self=this,$self=this;
  21433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21434. return $core.withContext(function($ctx1) {
  21435. //>>excludeEnd("ctx");
  21436. $core.removeClass(aClass);
  21437. return self;
  21438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21439. }, function($ctx1) {$ctx1.fill(self,"basicRemoveClass:",{aClass:aClass})});
  21440. //>>excludeEnd("ctx");
  21441. }; }),
  21442. $globals.ClassBuilder);
  21443. $core.addMethod(
  21444. $core.method({
  21445. selector: "basicRenameClass:to:",
  21446. protocol: "private",
  21447. //>>excludeStart("ide", pragmas.excludeIdeData);
  21448. args: ["aClass", "aString"],
  21449. source: "basicRenameClass: aClass to: aString\x0a\x09<inlineJS: '\x0a\x09\x09$globals[aString] = aClass;\x0a\x09\x09delete $globals[aClass.name];\x0a\x09\x09aClass.name = aString;\x0a\x09'>",
  21450. referencedClasses: [],
  21451. //>>excludeEnd("ide");
  21452. pragmas: [["inlineJS:", ["\x0a\x09\x09$globals[aString] = aClass;\x0a\x09\x09delete $globals[aClass.name];\x0a\x09\x09aClass.name = aString;\x0a\x09"]]],
  21453. messageSends: []
  21454. }, function ($methodClass){ return function (aClass,aString){
  21455. var self=this,$self=this;
  21456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21457. return $core.withContext(function($ctx1) {
  21458. //>>excludeEnd("ctx");
  21459. $globals[aString] = aClass;
  21460. delete $globals[aClass.name];
  21461. aClass.name = aString;
  21462. ;
  21463. return self;
  21464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21465. }, function($ctx1) {$ctx1.fill(self,"basicRenameClass:to:",{aClass:aClass,aString:aString})});
  21466. //>>excludeEnd("ctx");
  21467. }; }),
  21468. $globals.ClassBuilder);
  21469. $core.addMethod(
  21470. $core.method({
  21471. selector: "basicSwapClassNames:with:",
  21472. protocol: "private",
  21473. //>>excludeStart("ide", pragmas.excludeIdeData);
  21474. args: ["aClass", "anotherClass"],
  21475. source: "basicSwapClassNames: aClass with: anotherClass\x0a\x09<inlineJS: '\x0a\x09\x09var tmp = aClass.name;\x0a\x09\x09aClass.name = anotherClass.name;\x0a\x09\x09anotherClass.name = tmp;\x0a\x09'>",
  21476. referencedClasses: [],
  21477. //>>excludeEnd("ide");
  21478. pragmas: [["inlineJS:", ["\x0a\x09\x09var tmp = aClass.name;\x0a\x09\x09aClass.name = anotherClass.name;\x0a\x09\x09anotherClass.name = tmp;\x0a\x09"]]],
  21479. messageSends: []
  21480. }, function ($methodClass){ return function (aClass,anotherClass){
  21481. var self=this,$self=this;
  21482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21483. return $core.withContext(function($ctx1) {
  21484. //>>excludeEnd("ctx");
  21485. var tmp = aClass.name;
  21486. aClass.name = anotherClass.name;
  21487. anotherClass.name = tmp;
  21488. ;
  21489. return self;
  21490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21491. }, function($ctx1) {$ctx1.fill(self,"basicSwapClassNames:with:",{aClass:aClass,anotherClass:anotherClass})});
  21492. //>>excludeEnd("ctx");
  21493. }; }),
  21494. $globals.ClassBuilder);
  21495. $core.addMethod(
  21496. $core.method({
  21497. selector: "class:slots:",
  21498. protocol: "class definition",
  21499. //>>excludeStart("ide", pragmas.excludeIdeData);
  21500. args: ["aClass", "aCollection"],
  21501. source: "class: aClass slots: aCollection\x0a\x09self basicClass: aClass slots: aCollection.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassDefinitionChanged new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
  21502. referencedClasses: ["SystemAnnouncer", "ClassDefinitionChanged"],
  21503. //>>excludeEnd("ide");
  21504. pragmas: [],
  21505. messageSends: ["basicClass:slots:", "announce:", "current", "theClass:", "new", "yourself"]
  21506. }, function ($methodClass){ return function (aClass,aCollection){
  21507. var self=this,$self=this;
  21508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21509. return $core.withContext(function($ctx1) {
  21510. //>>excludeEnd("ctx");
  21511. var $1,$2;
  21512. $self._basicClass_slots_(aClass,aCollection);
  21513. $1=$recv($globals.SystemAnnouncer)._current();
  21514. $2=$recv($globals.ClassDefinitionChanged)._new();
  21515. $recv($2)._theClass_(aClass);
  21516. $recv($1)._announce_($recv($2)._yourself());
  21517. return self;
  21518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21519. }, function($ctx1) {$ctx1.fill(self,"class:slots:",{aClass:aClass,aCollection:aCollection})});
  21520. //>>excludeEnd("ctx");
  21521. }; }),
  21522. $globals.ClassBuilder);
  21523. $core.addMethod(
  21524. $core.method({
  21525. selector: "copyClass:named:",
  21526. protocol: "copying",
  21527. //>>excludeStart("ide", pragmas.excludeIdeData);
  21528. args: ["aClass", "className"],
  21529. source: "copyClass: aClass named: className\x0a\x09| newClass |\x0a\x0a\x09newClass := self\x0a\x09\x09addSubclassOf: aClass superclass\x0a\x09\x09named: className\x0a\x09\x09slots: aClass slots copy\x0a\x09\x09package: aClass package name.\x0a\x0a\x09self copyClass: aClass to: newClass.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassAdded new\x0a\x09\x09\x09theClass: newClass;\x0a\x09\x09\x09yourself).\x0a\x09\x0a\x09^ newClass",
  21530. referencedClasses: ["SystemAnnouncer", "ClassAdded"],
  21531. //>>excludeEnd("ide");
  21532. pragmas: [],
  21533. messageSends: ["addSubclassOf:named:slots:package:", "superclass", "copy", "slots", "name", "package", "copyClass:to:", "announce:", "current", "theClass:", "new", "yourself"]
  21534. }, function ($methodClass){ return function (aClass,className){
  21535. var self=this,$self=this;
  21536. var newClass;
  21537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21538. return $core.withContext(function($ctx1) {
  21539. //>>excludeEnd("ctx");
  21540. var $1,$2;
  21541. newClass=$self._addSubclassOf_named_slots_package_($recv(aClass)._superclass(),className,$recv($recv(aClass)._slots())._copy(),$recv($recv(aClass)._package())._name());
  21542. $self._copyClass_to_(aClass,newClass);
  21543. $1=$recv($globals.SystemAnnouncer)._current();
  21544. $2=$recv($globals.ClassAdded)._new();
  21545. $recv($2)._theClass_(newClass);
  21546. $recv($1)._announce_($recv($2)._yourself());
  21547. return newClass;
  21548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21549. }, function($ctx1) {$ctx1.fill(self,"copyClass:named:",{aClass:aClass,className:className,newClass:newClass})});
  21550. //>>excludeEnd("ctx");
  21551. }; }),
  21552. $globals.ClassBuilder);
  21553. $core.addMethod(
  21554. $core.method({
  21555. selector: "copyClass:to:",
  21556. protocol: "copying",
  21557. //>>excludeStart("ide", pragmas.excludeIdeData);
  21558. args: ["aClass", "anotherClass"],
  21559. source: "copyClass: aClass to: anotherClass\x0a\x0a\x09anotherClass comment: aClass comment.\x0a\x0a\x09aClass methodDictionary valuesDo: [ :each |\x0a\x09\x09each origin = aClass ifTrue: [\x0a\x09\x09\x09Compiler new install: each source forClass: anotherClass protocol: each protocol ] ].\x0a\x09anotherClass setTraitComposition: aClass traitComposition.\x0a\x0a\x09self basicClass: anotherClass class slots: aClass class slots copy.\x0a\x0a\x09aClass class methodDictionary valuesDo: [ :each |\x0a\x09\x09each origin = aClass class ifTrue: [\x0a\x09\x09\x09Compiler new install: each source forClass: anotherClass class protocol: each protocol ] ].\x0a\x09anotherClass class setTraitComposition: aClass class traitComposition",
  21560. referencedClasses: ["Compiler"],
  21561. //>>excludeEnd("ide");
  21562. pragmas: [],
  21563. messageSends: ["comment:", "comment", "valuesDo:", "methodDictionary", "ifTrue:", "=", "origin", "install:forClass:protocol:", "new", "source", "protocol", "setTraitComposition:", "traitComposition", "basicClass:slots:", "class", "copy", "slots"]
  21564. }, function ($methodClass){ return function (aClass,anotherClass){
  21565. var self=this,$self=this;
  21566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21567. return $core.withContext(function($ctx1) {
  21568. //>>excludeEnd("ctx");
  21569. $recv(anotherClass)._comment_($recv(aClass)._comment());
  21570. [$recv([$recv(aClass)._methodDictionary()
  21571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21572. ,$ctx1.sendIdx["methodDictionary"]=1
  21573. //>>excludeEnd("ctx");
  21574. ][0])._valuesDo_((function(each){
  21575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21576. return $core.withContext(function($ctx2) {
  21577. //>>excludeEnd("ctx");
  21578. if($core.assert([$recv([$recv(each)._origin()
  21579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21580. ,$ctx2.sendIdx["origin"]=1
  21581. //>>excludeEnd("ctx");
  21582. ][0]).__eq(aClass)
  21583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21584. ,$ctx2.sendIdx["="]=1
  21585. //>>excludeEnd("ctx");
  21586. ][0])){
  21587. return [$recv([$recv($globals.Compiler)._new()
  21588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21589. ,$ctx2.sendIdx["new"]=1
  21590. //>>excludeEnd("ctx");
  21591. ][0])._install_forClass_protocol_([$recv(each)._source()
  21592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21593. ,$ctx2.sendIdx["source"]=1
  21594. //>>excludeEnd("ctx");
  21595. ][0],anotherClass,[$recv(each)._protocol()
  21596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21597. ,$ctx2.sendIdx["protocol"]=1
  21598. //>>excludeEnd("ctx");
  21599. ][0])
  21600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21601. ,$ctx2.sendIdx["install:forClass:protocol:"]=1
  21602. //>>excludeEnd("ctx");
  21603. ][0];
  21604. }
  21605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21606. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  21607. //>>excludeEnd("ctx");
  21608. }))
  21609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21610. ,$ctx1.sendIdx["valuesDo:"]=1
  21611. //>>excludeEnd("ctx");
  21612. ][0];
  21613. [$recv(anotherClass)._setTraitComposition_([$recv(aClass)._traitComposition()
  21614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21615. ,$ctx1.sendIdx["traitComposition"]=1
  21616. //>>excludeEnd("ctx");
  21617. ][0])
  21618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21619. ,$ctx1.sendIdx["setTraitComposition:"]=1
  21620. //>>excludeEnd("ctx");
  21621. ][0];
  21622. $self._basicClass_slots_([$recv(anotherClass)._class()
  21623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21624. ,$ctx1.sendIdx["class"]=1
  21625. //>>excludeEnd("ctx");
  21626. ][0],$recv($recv([$recv(aClass)._class()
  21627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21628. ,$ctx1.sendIdx["class"]=2
  21629. //>>excludeEnd("ctx");
  21630. ][0])._slots())._copy());
  21631. $recv($recv([$recv(aClass)._class()
  21632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21633. ,$ctx1.sendIdx["class"]=3
  21634. //>>excludeEnd("ctx");
  21635. ][0])._methodDictionary())._valuesDo_((function(each){
  21636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21637. return $core.withContext(function($ctx2) {
  21638. //>>excludeEnd("ctx");
  21639. if($core.assert($recv($recv(each)._origin()).__eq([$recv(aClass)._class()
  21640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21641. ,$ctx2.sendIdx["class"]=4
  21642. //>>excludeEnd("ctx");
  21643. ][0]))){
  21644. return $recv($recv($globals.Compiler)._new())._install_forClass_protocol_($recv(each)._source(),[$recv(anotherClass)._class()
  21645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21646. ,$ctx2.sendIdx["class"]=5
  21647. //>>excludeEnd("ctx");
  21648. ][0],$recv(each)._protocol());
  21649. }
  21650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21651. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  21652. //>>excludeEnd("ctx");
  21653. }));
  21654. $recv([$recv(anotherClass)._class()
  21655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21656. ,$ctx1.sendIdx["class"]=6
  21657. //>>excludeEnd("ctx");
  21658. ][0])._setTraitComposition_($recv($recv(aClass)._class())._traitComposition());
  21659. return self;
  21660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21661. }, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,anotherClass:anotherClass})});
  21662. //>>excludeEnd("ctx");
  21663. }; }),
  21664. $globals.ClassBuilder);
  21665. $core.addMethod(
  21666. $core.method({
  21667. selector: "migrateClass:superclass:",
  21668. protocol: "class migration",
  21669. //>>excludeStart("ide", pragmas.excludeIdeData);
  21670. args: ["aClass", "anotherClass"],
  21671. source: "migrateClass: aClass superclass: anotherClass\x0a\x09^ self\x0a\x09\x09migrateClassNamed: aClass name\x0a\x09\x09superclass: anotherClass\x0a\x09\x09slots: aClass slots\x0a\x09\x09package: aClass package name",
  21672. referencedClasses: [],
  21673. //>>excludeEnd("ide");
  21674. pragmas: [],
  21675. messageSends: ["migrateClassNamed:superclass:slots:package:", "name", "slots", "package"]
  21676. }, function ($methodClass){ return function (aClass,anotherClass){
  21677. var self=this,$self=this;
  21678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21679. return $core.withContext(function($ctx1) {
  21680. //>>excludeEnd("ctx");
  21681. return $self._migrateClassNamed_superclass_slots_package_([$recv(aClass)._name()
  21682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21683. ,$ctx1.sendIdx["name"]=1
  21684. //>>excludeEnd("ctx");
  21685. ][0],anotherClass,$recv(aClass)._slots(),$recv($recv(aClass)._package())._name());
  21686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21687. }, function($ctx1) {$ctx1.fill(self,"migrateClass:superclass:",{aClass:aClass,anotherClass:anotherClass})});
  21688. //>>excludeEnd("ctx");
  21689. }; }),
  21690. $globals.ClassBuilder);
  21691. $core.addMethod(
  21692. $core.method({
  21693. selector: "migrateClassNamed:superclass:instanceVariableNames:package:",
  21694. protocol: "class migration",
  21695. //>>excludeStart("ide", pragmas.excludeIdeData);
  21696. args: ["className", "aClass", "aCollection", "packageName"],
  21697. source: "migrateClassNamed: className superclass: aClass instanceVariableNames: aCollection package: packageName\x0a\x09self deprecatedAPI: 'Use #migrateClassNamed:superclass:slots:package: instead.'.\x0a\x09^ self\x0a\x09\x09migrateClassNamed: className\x0a\x09\x09superclass: aClass\x0a\x09\x09slots: aCollection\x0a\x09\x09package: packageName",
  21698. referencedClasses: [],
  21699. //>>excludeEnd("ide");
  21700. pragmas: [],
  21701. messageSends: ["deprecatedAPI:", "migrateClassNamed:superclass:slots:package:"]
  21702. }, function ($methodClass){ return function (className,aClass,aCollection,packageName){
  21703. var self=this,$self=this;
  21704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21705. return $core.withContext(function($ctx1) {
  21706. //>>excludeEnd("ctx");
  21707. $self._deprecatedAPI_("Use #migrateClassNamed:superclass:slots:package: instead.");
  21708. return $self._migrateClassNamed_superclass_slots_package_(className,aClass,aCollection,packageName);
  21709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21710. }, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{className:className,aClass:aClass,aCollection:aCollection,packageName:packageName})});
  21711. //>>excludeEnd("ctx");
  21712. }; }),
  21713. $globals.ClassBuilder);
  21714. $core.addMethod(
  21715. $core.method({
  21716. selector: "migrateClassNamed:superclass:slots:package:",
  21717. protocol: "class migration",
  21718. //>>excludeStart("ide", pragmas.excludeIdeData);
  21719. args: ["className", "aClass", "aCollection", "packageName"],
  21720. source: "migrateClassNamed: className superclass: aClass slots: aCollection package: packageName\x0a\x09| oldClass newClass tmp |\x0a\x09\x0a\x09tmp := 'new*', className.\x0a\x09oldClass := Smalltalk globals at: className.\x0a\x09\x0a\x09newClass := self\x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: tmp\x0a\x09\x09slots: aCollection\x0a\x09\x09package: packageName.\x0a\x0a\x09self basicSwapClassNames: oldClass with: newClass.\x0a\x0a\x09[ self copyClass: oldClass to: newClass ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :exception |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09basicSwapClassNames: oldClass with: newClass;\x0a\x09\x09\x09\x09basicRemoveClass: newClass.\x0a\x09\x09\x09\x09SystemAnnouncer current announce: (ClassRenamed new\x0a\x09\x09\x09\x09\x09theClass: oldClass;\x0a\x09\x09\x09\x09\x09yourself).\x0a\x09\x09\x09\x09exception pass ].\x0a\x0a\x09self\x0a\x09\x09rawRenameClass: oldClass to: tmp;\x0a\x09\x09rawRenameClass: newClass to: className.\x0a\x0a\x09oldClass subclasses \x0a\x09\x09do: [ :each | self migrateClass: each superclass: newClass ].\x0a\x0a\x09self basicRemoveClass: oldClass.\x0a\x09\x0a\x09SystemAnnouncer current announce: (ClassMigrated new\x0a\x09\x09theClass: newClass;\x0a\x09\x09oldClass: oldClass;\x0a\x09\x09yourself).\x0a\x09\x0a\x09^ newClass",
  21721. referencedClasses: ["Smalltalk", "Error", "SystemAnnouncer", "ClassRenamed", "ClassMigrated"],
  21722. //>>excludeEnd("ide");
  21723. pragmas: [],
  21724. messageSends: [",", "at:", "globals", "addSubclassOf:named:slots:package:", "basicSwapClassNames:with:", "on:do:", "copyClass:to:", "basicRemoveClass:", "announce:", "current", "theClass:", "new", "yourself", "pass", "rawRenameClass:to:", "do:", "subclasses", "migrateClass:superclass:", "oldClass:"]
  21725. }, function ($methodClass){ return function (className,aClass,aCollection,packageName){
  21726. var self=this,$self=this;
  21727. var oldClass,newClass,tmp;
  21728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21729. return $core.withContext(function($ctx1) {
  21730. //>>excludeEnd("ctx");
  21731. var $1,$2,$3,$4;
  21732. tmp="new*".__comma(className);
  21733. oldClass=$recv($recv($globals.Smalltalk)._globals())._at_(className);
  21734. newClass=$self._addSubclassOf_named_slots_package_(aClass,tmp,aCollection,packageName);
  21735. [$self._basicSwapClassNames_with_(oldClass,newClass)
  21736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21737. ,$ctx1.sendIdx["basicSwapClassNames:with:"]=1
  21738. //>>excludeEnd("ctx");
  21739. ][0];
  21740. $recv((function(){
  21741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21742. return $core.withContext(function($ctx2) {
  21743. //>>excludeEnd("ctx");
  21744. return $self._copyClass_to_(oldClass,newClass);
  21745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21746. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  21747. //>>excludeEnd("ctx");
  21748. }))._on_do_($globals.Error,(function(exception){
  21749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21750. return $core.withContext(function($ctx2) {
  21751. //>>excludeEnd("ctx");
  21752. $self._basicSwapClassNames_with_(oldClass,newClass);
  21753. [$self._basicRemoveClass_(newClass)
  21754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21755. ,$ctx2.sendIdx["basicRemoveClass:"]=1
  21756. //>>excludeEnd("ctx");
  21757. ][0];
  21758. $1=[$recv($globals.SystemAnnouncer)._current()
  21759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21760. ,$ctx2.sendIdx["current"]=1
  21761. //>>excludeEnd("ctx");
  21762. ][0];
  21763. $2=[$recv($globals.ClassRenamed)._new()
  21764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21765. ,$ctx2.sendIdx["new"]=1
  21766. //>>excludeEnd("ctx");
  21767. ][0];
  21768. [$recv($2)._theClass_(oldClass)
  21769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21770. ,$ctx2.sendIdx["theClass:"]=1
  21771. //>>excludeEnd("ctx");
  21772. ][0];
  21773. [$recv($1)._announce_([$recv($2)._yourself()
  21774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21775. ,$ctx2.sendIdx["yourself"]=1
  21776. //>>excludeEnd("ctx");
  21777. ][0])
  21778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21779. ,$ctx2.sendIdx["announce:"]=1
  21780. //>>excludeEnd("ctx");
  21781. ][0];
  21782. return $recv(exception)._pass();
  21783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21784. }, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1,2)});
  21785. //>>excludeEnd("ctx");
  21786. }));
  21787. [$self._rawRenameClass_to_(oldClass,tmp)
  21788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21789. ,$ctx1.sendIdx["rawRenameClass:to:"]=1
  21790. //>>excludeEnd("ctx");
  21791. ][0];
  21792. $self._rawRenameClass_to_(newClass,className);
  21793. $recv($recv(oldClass)._subclasses())._do_((function(each){
  21794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21795. return $core.withContext(function($ctx2) {
  21796. //>>excludeEnd("ctx");
  21797. return $self._migrateClass_superclass_(each,newClass);
  21798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21799. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  21800. //>>excludeEnd("ctx");
  21801. }));
  21802. $self._basicRemoveClass_(oldClass);
  21803. $3=$recv($globals.SystemAnnouncer)._current();
  21804. $4=$recv($globals.ClassMigrated)._new();
  21805. $recv($4)._theClass_(newClass);
  21806. $recv($4)._oldClass_(oldClass);
  21807. $recv($3)._announce_($recv($4)._yourself());
  21808. return newClass;
  21809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21810. }, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:slots:package:",{className:className,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass,tmp:tmp})});
  21811. //>>excludeEnd("ctx");
  21812. }; }),
  21813. $globals.ClassBuilder);
  21814. $core.addMethod(
  21815. $core.method({
  21816. selector: "rawRenameClass:to:",
  21817. protocol: "private",
  21818. //>>excludeStart("ide", pragmas.excludeIdeData);
  21819. args: ["aClass", "aString"],
  21820. source: "rawRenameClass: aClass to: aString\x0a\x09<inlineJS: '\x0a\x09\x09$globals[aString] = aClass;\x0a\x09'>",
  21821. referencedClasses: [],
  21822. //>>excludeEnd("ide");
  21823. pragmas: [["inlineJS:", ["\x0a\x09\x09$globals[aString] = aClass;\x0a\x09"]]],
  21824. messageSends: []
  21825. }, function ($methodClass){ return function (aClass,aString){
  21826. var self=this,$self=this;
  21827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21828. return $core.withContext(function($ctx1) {
  21829. //>>excludeEnd("ctx");
  21830. $globals[aString] = aClass;
  21831. ;
  21832. return self;
  21833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21834. }, function($ctx1) {$ctx1.fill(self,"rawRenameClass:to:",{aClass:aClass,aString:aString})});
  21835. //>>excludeEnd("ctx");
  21836. }; }),
  21837. $globals.ClassBuilder);
  21838. $core.addMethod(
  21839. $core.method({
  21840. selector: "renameClass:to:",
  21841. protocol: "class migration",
  21842. //>>excludeStart("ide", pragmas.excludeIdeData);
  21843. args: ["aClass", "className"],
  21844. source: "renameClass: aClass to: className\x0a\x09self basicRenameClass: aClass to: className.\x0a\x09\x0a\x09\x22Recompile the class to fix potential issues with super sends\x22\x0a\x09aClass recompile.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassRenamed new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
  21845. referencedClasses: ["SystemAnnouncer", "ClassRenamed"],
  21846. //>>excludeEnd("ide");
  21847. pragmas: [],
  21848. messageSends: ["basicRenameClass:to:", "recompile", "announce:", "current", "theClass:", "new", "yourself"]
  21849. }, function ($methodClass){ return function (aClass,className){
  21850. var self=this,$self=this;
  21851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21852. return $core.withContext(function($ctx1) {
  21853. //>>excludeEnd("ctx");
  21854. var $1,$2;
  21855. $self._basicRenameClass_to_(aClass,className);
  21856. $recv(aClass)._recompile();
  21857. $1=$recv($globals.SystemAnnouncer)._current();
  21858. $2=$recv($globals.ClassRenamed)._new();
  21859. $recv($2)._theClass_(aClass);
  21860. $recv($1)._announce_($recv($2)._yourself());
  21861. return self;
  21862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21863. }, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,className:className})});
  21864. //>>excludeEnd("ctx");
  21865. }; }),
  21866. $globals.ClassBuilder);
  21867. $core.addMethod(
  21868. $core.method({
  21869. selector: "superclass:subclass:",
  21870. protocol: "class definition",
  21871. //>>excludeStart("ide", pragmas.excludeIdeData);
  21872. args: ["aClass", "className"],
  21873. source: "superclass: aClass subclass: className\x0a\x09^ self superclass: aClass subclass: className slots: #() package: nil",
  21874. referencedClasses: [],
  21875. //>>excludeEnd("ide");
  21876. pragmas: [],
  21877. messageSends: ["superclass:subclass:slots:package:"]
  21878. }, function ($methodClass){ return function (aClass,className){
  21879. var self=this,$self=this;
  21880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21881. return $core.withContext(function($ctx1) {
  21882. //>>excludeEnd("ctx");
  21883. return $self._superclass_subclass_slots_package_(aClass,className,[],nil);
  21884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21885. }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:",{aClass:aClass,className:className})});
  21886. //>>excludeEnd("ctx");
  21887. }; }),
  21888. $globals.ClassBuilder);
  21889. $core.addMethod(
  21890. $core.method({
  21891. selector: "superclass:subclass:slots:package:",
  21892. protocol: "class definition",
  21893. //>>excludeStart("ide", pragmas.excludeIdeData);
  21894. args: ["aClass", "className", "aCollection", "packageName"],
  21895. source: "superclass: aClass subclass: className slots: aCollection package: packageName\x0a\x09| newClass |\x0a\x09\x0a\x09newClass := self addSubclassOf: aClass\x0a\x09\x09named: className slots: aCollection\x0a\x09\x09package: (packageName ifNil: [ 'unclassified' ]).\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassAdded new\x0a\x09\x09\x09theClass: newClass;\x0a\x09\x09\x09yourself).\x0a\x09\x0a\x09^ newClass",
  21896. referencedClasses: ["SystemAnnouncer", "ClassAdded"],
  21897. //>>excludeEnd("ide");
  21898. pragmas: [],
  21899. messageSends: ["addSubclassOf:named:slots:package:", "ifNil:", "announce:", "current", "theClass:", "new", "yourself"]
  21900. }, function ($methodClass){ return function (aClass,className,aCollection,packageName){
  21901. var self=this,$self=this;
  21902. var newClass;
  21903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21904. return $core.withContext(function($ctx1) {
  21905. //>>excludeEnd("ctx");
  21906. var $1,$2,$3;
  21907. if(packageName == null || packageName.a$nil){
  21908. $1="unclassified";
  21909. } else {
  21910. $1=packageName;
  21911. }
  21912. newClass=$self._addSubclassOf_named_slots_package_(aClass,className,aCollection,$1);
  21913. $2=$recv($globals.SystemAnnouncer)._current();
  21914. $3=$recv($globals.ClassAdded)._new();
  21915. $recv($3)._theClass_(newClass);
  21916. $recv($2)._announce_($recv($3)._yourself());
  21917. return newClass;
  21918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21919. }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:slots:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName,newClass:newClass})});
  21920. //>>excludeEnd("ctx");
  21921. }; }),
  21922. $globals.ClassBuilder);
  21923. $core.addMethod(
  21924. $core.method({
  21925. selector: "sortClasses:",
  21926. protocol: "as yet unclassified",
  21927. //>>excludeStart("ide", pragmas.excludeIdeData);
  21928. args: ["aCollection"],
  21929. source: "sortClasses: aCollection\x0a\x09| root members |\x0a\x09root := {nil. {}}.\x0a\x09members := HashedCollection new.\x0a\x09aCollection do: [ :each | members at: each name put: {each. {}} ].\x0a\x09(aCollection asArray sorted: [ :a :b | a name <= b name ]) do: [ :each |\x0a\x09\x09| target |\x0a\x09\x09target := members\x0a\x09\x09\x09at: (each superclass ifNotNil: [ :superklass | superklass name ])\x0a\x09\x09\x09ifAbsent: [ root ].\x0a\x09\x09target second add: (members at: each name) ].\x0a\x09^ root second",
  21930. referencedClasses: ["HashedCollection"],
  21931. //>>excludeEnd("ide");
  21932. pragmas: [],
  21933. messageSends: ["new", "do:", "at:put:", "name", "sorted:", "asArray", "<=", "at:ifAbsent:", "ifNotNil:", "superclass", "add:", "second", "at:"]
  21934. }, function ($methodClass){ return function (aCollection){
  21935. var self=this,$self=this;
  21936. var root,members;
  21937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21938. return $core.withContext(function($ctx1) {
  21939. //>>excludeEnd("ctx");
  21940. var $1,$2,$3;
  21941. root=[nil,[]];
  21942. members=$recv($globals.HashedCollection)._new();
  21943. [$recv(aCollection)._do_((function(each){
  21944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21945. return $core.withContext(function($ctx2) {
  21946. //>>excludeEnd("ctx");
  21947. return $recv(members)._at_put_([$recv(each)._name()
  21948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21949. ,$ctx2.sendIdx["name"]=1
  21950. //>>excludeEnd("ctx");
  21951. ][0],[each,[]]);
  21952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21953. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  21954. //>>excludeEnd("ctx");
  21955. }))
  21956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21957. ,$ctx1.sendIdx["do:"]=1
  21958. //>>excludeEnd("ctx");
  21959. ][0];
  21960. $recv($recv($recv(aCollection)._asArray())._sorted_((function(a,b){
  21961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21962. return $core.withContext(function($ctx2) {
  21963. //>>excludeEnd("ctx");
  21964. return $recv([$recv(a)._name()
  21965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21966. ,$ctx2.sendIdx["name"]=2
  21967. //>>excludeEnd("ctx");
  21968. ][0]).__lt_eq([$recv(b)._name()
  21969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21970. ,$ctx2.sendIdx["name"]=3
  21971. //>>excludeEnd("ctx");
  21972. ][0]);
  21973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21974. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,2)});
  21975. //>>excludeEnd("ctx");
  21976. })))._do_((function(each){
  21977. var target;
  21978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21979. return $core.withContext(function($ctx2) {
  21980. //>>excludeEnd("ctx");
  21981. $1=members;
  21982. $2=$recv(each)._superclass();
  21983. if($2 == null || $2.a$nil){
  21984. $3=$2;
  21985. } else {
  21986. var superklass;
  21987. superklass=$2;
  21988. $3=[$recv(superklass)._name()
  21989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21990. ,$ctx2.sendIdx["name"]=4
  21991. //>>excludeEnd("ctx");
  21992. ][0];
  21993. }
  21994. target=$recv($1)._at_ifAbsent_($3,(function(){
  21995. return root;
  21996. }));
  21997. return $recv([$recv(target)._second()
  21998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21999. ,$ctx2.sendIdx["second"]=1
  22000. //>>excludeEnd("ctx");
  22001. ][0])._add_($recv(members)._at_($recv(each)._name()));
  22002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22003. }, function($ctx2) {$ctx2.fillBlock({each:each,target:target},$ctx1,3)});
  22004. //>>excludeEnd("ctx");
  22005. }));
  22006. return $recv(root)._second();
  22007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22008. }, function($ctx1) {$ctx1.fill(self,"sortClasses:",{aCollection:aCollection,root:root,members:members})});
  22009. //>>excludeEnd("ctx");
  22010. }; }),
  22011. $globals.ClassBuilder.a$cls);
  22012. $core.addTrait("TBehaviorDefaults", "Kernel-Classes");
  22013. $core.addMethod(
  22014. $core.method({
  22015. selector: "allSubclassesDo:",
  22016. protocol: "enumerating",
  22017. //>>excludeStart("ide", pragmas.excludeIdeData);
  22018. args: ["aBlock"],
  22019. source: "allSubclassesDo: aBlock\x0a\x09\x22Default for non-classes; to be able to send #allSubclassesDo: to any class / trait.\x22",
  22020. referencedClasses: [],
  22021. //>>excludeEnd("ide");
  22022. pragmas: [],
  22023. messageSends: []
  22024. }, function ($methodClass){ return function (aBlock){
  22025. var self=this,$self=this;
  22026. return self;
  22027. }; }),
  22028. $globals.TBehaviorDefaults);
  22029. $core.addMethod(
  22030. $core.method({
  22031. selector: "includingPossibleMetaDo:",
  22032. protocol: "enumerating",
  22033. //>>excludeStart("ide", pragmas.excludeIdeData);
  22034. args: ["aBlock"],
  22035. source: "includingPossibleMetaDo: aBlock\x0a\x09\x22Default for non-classes.\x22\x0a\x09aBlock value: self",
  22036. referencedClasses: [],
  22037. //>>excludeEnd("ide");
  22038. pragmas: [],
  22039. messageSends: ["value:"]
  22040. }, function ($methodClass){ return function (aBlock){
  22041. var self=this,$self=this;
  22042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22043. return $core.withContext(function($ctx1) {
  22044. //>>excludeEnd("ctx");
  22045. $recv(aBlock)._value_(self);
  22046. return self;
  22047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22048. }, function($ctx1) {$ctx1.fill(self,"includingPossibleMetaDo:",{aBlock:aBlock})});
  22049. //>>excludeEnd("ctx");
  22050. }; }),
  22051. $globals.TBehaviorDefaults);
  22052. $core.addMethod(
  22053. $core.method({
  22054. selector: "name",
  22055. protocol: "accessing",
  22056. //>>excludeStart("ide", pragmas.excludeIdeData);
  22057. args: [],
  22058. source: "name\x0a\x09^ nil",
  22059. referencedClasses: [],
  22060. //>>excludeEnd("ide");
  22061. pragmas: [],
  22062. messageSends: []
  22063. }, function ($methodClass){ return function (){
  22064. var self=this,$self=this;
  22065. return nil;
  22066. }; }),
  22067. $globals.TBehaviorDefaults);
  22068. $core.addMethod(
  22069. $core.method({
  22070. selector: "printOn:",
  22071. protocol: "printing",
  22072. //>>excludeStart("ide", pragmas.excludeIdeData);
  22073. args: ["aStream"],
  22074. source: "printOn: aStream\x0a\x09self name\x0a\x09\x09ifNil: [ super printOn: aStream ]\x0a\x09\x09ifNotNil: [ :name | aStream nextPutAll: name ]",
  22075. referencedClasses: [],
  22076. //>>excludeEnd("ide");
  22077. pragmas: [],
  22078. messageSends: ["ifNil:ifNotNil:", "name", "printOn:", "nextPutAll:"]
  22079. }, function ($methodClass){ return function (aStream){
  22080. var self=this,$self=this;
  22081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22082. return $core.withContext(function($ctx1) {
  22083. //>>excludeEnd("ctx");
  22084. var $1;
  22085. $1=$self._name();
  22086. if($1 == null || $1.a$nil){
  22087. [(
  22088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22089. $ctx1.supercall = true,
  22090. //>>excludeEnd("ctx");
  22091. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  22092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22093. ,$ctx1.supercall = false
  22094. //>>excludeEnd("ctx");
  22095. ][0];
  22096. } else {
  22097. var name;
  22098. name=$1;
  22099. $recv(aStream)._nextPutAll_(name);
  22100. }
  22101. return self;
  22102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22103. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  22104. //>>excludeEnd("ctx");
  22105. }; }),
  22106. $globals.TBehaviorDefaults);
  22107. $core.addMethod(
  22108. $core.method({
  22109. selector: "slots",
  22110. protocol: "accessing",
  22111. //>>excludeStart("ide", pragmas.excludeIdeData);
  22112. args: [],
  22113. source: "slots\x0a\x09\x22Default for non-classes; to be able to send #slots to any class / trait.\x22\x0a\x09^ #()",
  22114. referencedClasses: [],
  22115. //>>excludeEnd("ide");
  22116. pragmas: [],
  22117. messageSends: []
  22118. }, function ($methodClass){ return function (){
  22119. var self=this,$self=this;
  22120. return [];
  22121. }; }),
  22122. $globals.TBehaviorDefaults);
  22123. $core.addMethod(
  22124. $core.method({
  22125. selector: "superclass",
  22126. protocol: "accessing",
  22127. //>>excludeStart("ide", pragmas.excludeIdeData);
  22128. args: [],
  22129. source: "superclass\x0a\x09\x22Default for non-classes; to be able to send #superclass to any class / trait.\x22\x0a\x09^ nil",
  22130. referencedClasses: [],
  22131. //>>excludeEnd("ide");
  22132. pragmas: [],
  22133. messageSends: []
  22134. }, function ($methodClass){ return function (){
  22135. var self=this,$self=this;
  22136. return nil;
  22137. }; }),
  22138. $globals.TBehaviorDefaults);
  22139. $core.addMethod(
  22140. $core.method({
  22141. selector: "traitUsers",
  22142. protocol: "accessing",
  22143. //>>excludeStart("ide", pragmas.excludeIdeData);
  22144. args: [],
  22145. source: "traitUsers\x0a\x09\x22Default for non-traits; to be able to send #traitUsers to any class / trait\x22\x0a\x09^ #()",
  22146. referencedClasses: [],
  22147. //>>excludeEnd("ide");
  22148. pragmas: [],
  22149. messageSends: []
  22150. }, function ($methodClass){ return function (){
  22151. var self=this,$self=this;
  22152. return [];
  22153. }; }),
  22154. $globals.TBehaviorDefaults);
  22155. $core.addTrait("TBehaviorProvider", "Kernel-Classes");
  22156. //>>excludeStart("ide", pragmas.excludeIdeData);
  22157. $globals.TBehaviorProvider.comment="I have method dictionary, slots and organization.";
  22158. //>>excludeEnd("ide");
  22159. $core.addMethod(
  22160. $core.method({
  22161. selector: ">>",
  22162. protocol: "accessing",
  22163. //>>excludeStart("ide", pragmas.excludeIdeData);
  22164. args: ["aString"],
  22165. source: ">> aString\x0a\x09^ self methodAt: aString",
  22166. referencedClasses: [],
  22167. //>>excludeEnd("ide");
  22168. pragmas: [],
  22169. messageSends: ["methodAt:"]
  22170. }, function ($methodClass){ return function (aString){
  22171. var self=this,$self=this;
  22172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22173. return $core.withContext(function($ctx1) {
  22174. //>>excludeEnd("ctx");
  22175. return $self._methodAt_(aString);
  22176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22177. }, function($ctx1) {$ctx1.fill(self,">>",{aString:aString})});
  22178. //>>excludeEnd("ctx");
  22179. }; }),
  22180. $globals.TBehaviorProvider);
  22181. $core.addMethod(
  22182. $core.method({
  22183. selector: "addCompiledMethod:",
  22184. protocol: "compiling",
  22185. //>>excludeStart("ide", pragmas.excludeIdeData);
  22186. args: ["aMethod"],
  22187. source: "addCompiledMethod: aMethod\x0a\x09| oldMethod announcement |\x0a\x09\x0a\x09oldMethod := self methodDictionary\x0a\x09\x09at: aMethod selector\x0a\x09\x09ifAbsent: [ nil ].\x0a\x09\x0a\x09self basicAddCompiledMethod: aMethod.\x0a\x09\x0a\x09announcement := oldMethod\x0a\x09\x09ifNil: [\x0a\x09\x09\x09MethodAdded new\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ]\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09MethodModified new\x0a\x09\x09\x09\x09\x09oldMethod: oldMethod;\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ].\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09\x09\x09announce: announcement",
  22188. referencedClasses: ["MethodAdded", "MethodModified", "SystemAnnouncer"],
  22189. //>>excludeEnd("ide");
  22190. pragmas: [],
  22191. messageSends: ["at:ifAbsent:", "methodDictionary", "selector", "basicAddCompiledMethod:", "ifNil:ifNotNil:", "method:", "new", "yourself", "oldMethod:", "announce:", "current"]
  22192. }, function ($methodClass){ return function (aMethod){
  22193. var self=this,$self=this;
  22194. var oldMethod,announcement;
  22195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22196. return $core.withContext(function($ctx1) {
  22197. //>>excludeEnd("ctx");
  22198. var $1,$2,$3;
  22199. oldMethod=$recv($self._methodDictionary())._at_ifAbsent_($recv(aMethod)._selector(),(function(){
  22200. return nil;
  22201. }));
  22202. $self._basicAddCompiledMethod_(aMethod);
  22203. $1=oldMethod;
  22204. if($1 == null || $1.a$nil){
  22205. $2=[$recv($globals.MethodAdded)._new()
  22206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22207. ,$ctx1.sendIdx["new"]=1
  22208. //>>excludeEnd("ctx");
  22209. ][0];
  22210. [$recv($2)._method_(aMethod)
  22211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22212. ,$ctx1.sendIdx["method:"]=1
  22213. //>>excludeEnd("ctx");
  22214. ][0];
  22215. announcement=[$recv($2)._yourself()
  22216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22217. ,$ctx1.sendIdx["yourself"]=1
  22218. //>>excludeEnd("ctx");
  22219. ][0];
  22220. } else {
  22221. $3=$recv($globals.MethodModified)._new();
  22222. $recv($3)._oldMethod_(oldMethod);
  22223. $recv($3)._method_(aMethod);
  22224. announcement=$recv($3)._yourself();
  22225. }
  22226. $recv($recv($globals.SystemAnnouncer)._current())._announce_(announcement);
  22227. return self;
  22228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22229. }, function($ctx1) {$ctx1.fill(self,"addCompiledMethod:",{aMethod:aMethod,oldMethod:oldMethod,announcement:announcement})});
  22230. //>>excludeEnd("ctx");
  22231. }; }),
  22232. $globals.TBehaviorProvider);
  22233. $core.addMethod(
  22234. $core.method({
  22235. selector: "allInstanceVariableNames",
  22236. protocol: "accessing",
  22237. //>>excludeStart("ide", pragmas.excludeIdeData);
  22238. args: [],
  22239. source: "allInstanceVariableNames\x0a\x09^ self allSlots select: #isString",
  22240. referencedClasses: [],
  22241. //>>excludeEnd("ide");
  22242. pragmas: [],
  22243. messageSends: ["select:", "allSlots"]
  22244. }, function ($methodClass){ return function (){
  22245. var self=this,$self=this;
  22246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22247. return $core.withContext(function($ctx1) {
  22248. //>>excludeEnd("ctx");
  22249. return $recv($self._allSlots())._select_("isString");
  22250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22251. }, function($ctx1) {$ctx1.fill(self,"allInstanceVariableNames",{})});
  22252. //>>excludeEnd("ctx");
  22253. }; }),
  22254. $globals.TBehaviorProvider);
  22255. $core.addMethod(
  22256. $core.method({
  22257. selector: "allSlotNames",
  22258. protocol: "accessing",
  22259. //>>excludeStart("ide", pragmas.excludeIdeData);
  22260. args: [],
  22261. source: "allSlotNames\x0a\x09^ self allSlots",
  22262. referencedClasses: [],
  22263. //>>excludeEnd("ide");
  22264. pragmas: [],
  22265. messageSends: ["allSlots"]
  22266. }, function ($methodClass){ return function (){
  22267. var self=this,$self=this;
  22268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22269. return $core.withContext(function($ctx1) {
  22270. //>>excludeEnd("ctx");
  22271. return $self._allSlots();
  22272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22273. }, function($ctx1) {$ctx1.fill(self,"allSlotNames",{})});
  22274. //>>excludeEnd("ctx");
  22275. }; }),
  22276. $globals.TBehaviorProvider);
  22277. $core.addMethod(
  22278. $core.method({
  22279. selector: "allSlots",
  22280. protocol: "accessing",
  22281. //>>excludeStart("ide", pragmas.excludeIdeData);
  22282. args: [],
  22283. source: "allSlots\x0a\x09| result |\x0a\x09result := self slots copy.\x0a\x09self superclass ifNotNil: [ :s | result addAll: s allSlots ].\x0a\x09^ result",
  22284. referencedClasses: [],
  22285. //>>excludeEnd("ide");
  22286. pragmas: [],
  22287. messageSends: ["copy", "slots", "ifNotNil:", "superclass", "addAll:", "allSlots"]
  22288. }, function ($methodClass){ return function (){
  22289. var self=this,$self=this;
  22290. var result;
  22291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22292. return $core.withContext(function($ctx1) {
  22293. //>>excludeEnd("ctx");
  22294. var $1;
  22295. result=$recv($self._slots())._copy();
  22296. $1=$self._superclass();
  22297. if($1 == null || $1.a$nil){
  22298. $1;
  22299. } else {
  22300. var s;
  22301. s=$1;
  22302. $recv(result)._addAll_($recv(s)._allSlots());
  22303. }
  22304. return result;
  22305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22306. }, function($ctx1) {$ctx1.fill(self,"allSlots",{result:result})});
  22307. //>>excludeEnd("ctx");
  22308. }; }),
  22309. $globals.TBehaviorProvider);
  22310. $core.addMethod(
  22311. $core.method({
  22312. selector: "basicAddCompiledMethod:",
  22313. protocol: "private",
  22314. //>>excludeStart("ide", pragmas.excludeIdeData);
  22315. args: ["aMethod"],
  22316. source: "basicAddCompiledMethod: aMethod\x0a\x09<inlineJS: '$core.addMethod(aMethod, self)'>",
  22317. referencedClasses: [],
  22318. //>>excludeEnd("ide");
  22319. pragmas: [["inlineJS:", ["$core.addMethod(aMethod, self)"]]],
  22320. messageSends: []
  22321. }, function ($methodClass){ return function (aMethod){
  22322. var self=this,$self=this;
  22323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22324. return $core.withContext(function($ctx1) {
  22325. //>>excludeEnd("ctx");
  22326. $core.addMethod(aMethod, self);
  22327. return self;
  22328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22329. }, function($ctx1) {$ctx1.fill(self,"basicAddCompiledMethod:",{aMethod:aMethod})});
  22330. //>>excludeEnd("ctx");
  22331. }; }),
  22332. $globals.TBehaviorProvider);
  22333. $core.addMethod(
  22334. $core.method({
  22335. selector: "basicRemoveCompiledMethod:",
  22336. protocol: "private",
  22337. //>>excludeStart("ide", pragmas.excludeIdeData);
  22338. args: ["aMethod"],
  22339. source: "basicRemoveCompiledMethod: aMethod\x0a\x09<inlineJS: '$core.removeMethod(aMethod,self)'>",
  22340. referencedClasses: [],
  22341. //>>excludeEnd("ide");
  22342. pragmas: [["inlineJS:", ["$core.removeMethod(aMethod,self)"]]],
  22343. messageSends: []
  22344. }, function ($methodClass){ return function (aMethod){
  22345. var self=this,$self=this;
  22346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22347. return $core.withContext(function($ctx1) {
  22348. //>>excludeEnd("ctx");
  22349. $core.removeMethod(aMethod,self);
  22350. return self;
  22351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22352. }, function($ctx1) {$ctx1.fill(self,"basicRemoveCompiledMethod:",{aMethod:aMethod})});
  22353. //>>excludeEnd("ctx");
  22354. }; }),
  22355. $globals.TBehaviorProvider);
  22356. $core.addMethod(
  22357. $core.method({
  22358. selector: "compile:protocol:",
  22359. protocol: "compiling",
  22360. //>>excludeStart("ide", pragmas.excludeIdeData);
  22361. args: ["aString", "anotherString"],
  22362. source: "compile: aString protocol: anotherString\x0a\x09^ Compiler new\x0a\x09\x09install: aString\x0a\x09\x09forClass: self\x0a\x09\x09protocol: anotherString",
  22363. referencedClasses: ["Compiler"],
  22364. //>>excludeEnd("ide");
  22365. pragmas: [],
  22366. messageSends: ["install:forClass:protocol:", "new"]
  22367. }, function ($methodClass){ return function (aString,anotherString){
  22368. var self=this,$self=this;
  22369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22370. return $core.withContext(function($ctx1) {
  22371. //>>excludeEnd("ctx");
  22372. return $recv($recv($globals.Compiler)._new())._install_forClass_protocol_(aString,self,anotherString);
  22373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22374. }, function($ctx1) {$ctx1.fill(self,"compile:protocol:",{aString:aString,anotherString:anotherString})});
  22375. //>>excludeEnd("ctx");
  22376. }; }),
  22377. $globals.TBehaviorProvider);
  22378. $core.addMethod(
  22379. $core.method({
  22380. selector: "includesSelector:",
  22381. protocol: "testing",
  22382. //>>excludeStart("ide", pragmas.excludeIdeData);
  22383. args: ["aString"],
  22384. source: "includesSelector: aString\x0a\x09^ self methodDictionary includesKey: aString",
  22385. referencedClasses: [],
  22386. //>>excludeEnd("ide");
  22387. pragmas: [],
  22388. messageSends: ["includesKey:", "methodDictionary"]
  22389. }, function ($methodClass){ return function (aString){
  22390. var self=this,$self=this;
  22391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22392. return $core.withContext(function($ctx1) {
  22393. //>>excludeEnd("ctx");
  22394. return $recv($self._methodDictionary())._includesKey_(aString);
  22395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22396. }, function($ctx1) {$ctx1.fill(self,"includesSelector:",{aString:aString})});
  22397. //>>excludeEnd("ctx");
  22398. }; }),
  22399. $globals.TBehaviorProvider);
  22400. $core.addMethod(
  22401. $core.method({
  22402. selector: "instanceVariableNames",
  22403. protocol: "accessing",
  22404. //>>excludeStart("ide", pragmas.excludeIdeData);
  22405. args: [],
  22406. source: "instanceVariableNames\x0a\x09^ self slots select: #isString",
  22407. referencedClasses: [],
  22408. //>>excludeEnd("ide");
  22409. pragmas: [],
  22410. messageSends: ["select:", "slots"]
  22411. }, function ($methodClass){ return function (){
  22412. var self=this,$self=this;
  22413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22414. return $core.withContext(function($ctx1) {
  22415. //>>excludeEnd("ctx");
  22416. return $recv($self._slots())._select_("isString");
  22417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22418. }, function($ctx1) {$ctx1.fill(self,"instanceVariableNames",{})});
  22419. //>>excludeEnd("ctx");
  22420. }; }),
  22421. $globals.TBehaviorProvider);
  22422. $core.addMethod(
  22423. $core.method({
  22424. selector: "methodAt:",
  22425. protocol: "accessing",
  22426. //>>excludeStart("ide", pragmas.excludeIdeData);
  22427. args: ["aString"],
  22428. source: "methodAt: aString\x0a\x09^ self methodDictionary at: aString",
  22429. referencedClasses: [],
  22430. //>>excludeEnd("ide");
  22431. pragmas: [],
  22432. messageSends: ["at:", "methodDictionary"]
  22433. }, function ($methodClass){ return function (aString){
  22434. var self=this,$self=this;
  22435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22436. return $core.withContext(function($ctx1) {
  22437. //>>excludeEnd("ctx");
  22438. return $recv($self._methodDictionary())._at_(aString);
  22439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22440. }, function($ctx1) {$ctx1.fill(self,"methodAt:",{aString:aString})});
  22441. //>>excludeEnd("ctx");
  22442. }; }),
  22443. $globals.TBehaviorProvider);
  22444. $core.addMethod(
  22445. $core.method({
  22446. selector: "methodDictionary",
  22447. protocol: "accessing",
  22448. //>>excludeStart("ide", pragmas.excludeIdeData);
  22449. args: [],
  22450. source: "methodDictionary\x0a\x09<inlineJS: 'var dict = $globals.HashedCollection._new();\x0a\x09var methods = self.methods;\x0a\x09Object.keys(methods).forEach(function(i) {\x0a\x09\x09if(methods[i].selector) {\x0a\x09\x09\x09dict._at_put_(methods[i].selector, methods[i]);\x0a\x09\x09}\x0a\x09});\x0a\x09return dict'>",
  22451. referencedClasses: [],
  22452. //>>excludeEnd("ide");
  22453. pragmas: [["inlineJS:", ["var dict = $globals.HashedCollection._new();\x0a\x09var methods = self.methods;\x0a\x09Object.keys(methods).forEach(function(i) {\x0a\x09\x09if(methods[i].selector) {\x0a\x09\x09\x09dict._at_put_(methods[i].selector, methods[i]);\x0a\x09\x09}\x0a\x09});\x0a\x09return dict"]]],
  22454. messageSends: []
  22455. }, function ($methodClass){ return function (){
  22456. var self=this,$self=this;
  22457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22458. return $core.withContext(function($ctx1) {
  22459. //>>excludeEnd("ctx");
  22460. var dict = $globals.HashedCollection._new();
  22461. var methods = self.methods;
  22462. Object.keys(methods).forEach(function(i) {
  22463. if(methods[i].selector) {
  22464. dict._at_put_(methods[i].selector, methods[i]);
  22465. }
  22466. });
  22467. return dict;
  22468. return self;
  22469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22470. }, function($ctx1) {$ctx1.fill(self,"methodDictionary",{})});
  22471. //>>excludeEnd("ctx");
  22472. }; }),
  22473. $globals.TBehaviorProvider);
  22474. $core.addMethod(
  22475. $core.method({
  22476. selector: "methodOrganizationEnter:andLeave:",
  22477. protocol: "accessing",
  22478. //>>excludeStart("ide", pragmas.excludeIdeData);
  22479. args: ["aMethod", "oldMethod"],
  22480. source: "methodOrganizationEnter: aMethod andLeave: oldMethod\x0a\x09aMethod ifNotNil: [\x0a\x09\x09self organization addElement: aMethod protocol ].\x0a\x09\x0a\x09oldMethod ifNotNil: [\x0a\x09\x09self removeProtocolIfEmpty: oldMethod protocol ]",
  22481. referencedClasses: [],
  22482. //>>excludeEnd("ide");
  22483. pragmas: [],
  22484. messageSends: ["ifNotNil:", "addElement:", "organization", "protocol", "removeProtocolIfEmpty:"]
  22485. }, function ($methodClass){ return function (aMethod,oldMethod){
  22486. var self=this,$self=this;
  22487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22488. return $core.withContext(function($ctx1) {
  22489. //>>excludeEnd("ctx");
  22490. if(aMethod == null || aMethod.a$nil){
  22491. aMethod;
  22492. } else {
  22493. $recv($self._organization())._addElement_([$recv(aMethod)._protocol()
  22494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22495. ,$ctx1.sendIdx["protocol"]=1
  22496. //>>excludeEnd("ctx");
  22497. ][0]);
  22498. }
  22499. if(oldMethod == null || oldMethod.a$nil){
  22500. oldMethod;
  22501. } else {
  22502. $self._removeProtocolIfEmpty_($recv(oldMethod)._protocol());
  22503. }
  22504. return self;
  22505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22506. }, function($ctx1) {$ctx1.fill(self,"methodOrganizationEnter:andLeave:",{aMethod:aMethod,oldMethod:oldMethod})});
  22507. //>>excludeEnd("ctx");
  22508. }; }),
  22509. $globals.TBehaviorProvider);
  22510. $core.addMethod(
  22511. $core.method({
  22512. selector: "methodTemplate",
  22513. protocol: "accessing",
  22514. //>>excludeStart("ide", pragmas.excludeIdeData);
  22515. args: [],
  22516. source: "methodTemplate\x0a\x09^ String streamContents: [ :stream | stream \x0a\x09\x09write: 'messageSelectorAndArgumentNames'; lf;\x0a\x09\x09tab; write: '\x22comment stating purpose of message\x22'; lf;\x0a\x09\x09lf;\x0a\x09\x09tab; write: '| temporary variable names |'; lf;\x0a\x09\x09tab; write: 'statements' ]",
  22517. referencedClasses: ["String"],
  22518. //>>excludeEnd("ide");
  22519. pragmas: [],
  22520. messageSends: ["streamContents:", "write:", "lf", "tab"]
  22521. }, function ($methodClass){ return function (){
  22522. var self=this,$self=this;
  22523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22524. return $core.withContext(function($ctx1) {
  22525. //>>excludeEnd("ctx");
  22526. return $recv($globals.String)._streamContents_((function(stream){
  22527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22528. return $core.withContext(function($ctx2) {
  22529. //>>excludeEnd("ctx");
  22530. [$recv(stream)._write_("messageSelectorAndArgumentNames")
  22531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22532. ,$ctx2.sendIdx["write:"]=1
  22533. //>>excludeEnd("ctx");
  22534. ][0];
  22535. [$recv(stream)._lf()
  22536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22537. ,$ctx2.sendIdx["lf"]=1
  22538. //>>excludeEnd("ctx");
  22539. ][0];
  22540. [$recv(stream)._tab()
  22541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22542. ,$ctx2.sendIdx["tab"]=1
  22543. //>>excludeEnd("ctx");
  22544. ][0];
  22545. [$recv(stream)._write_("\x22comment stating purpose of message\x22")
  22546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22547. ,$ctx2.sendIdx["write:"]=2
  22548. //>>excludeEnd("ctx");
  22549. ][0];
  22550. [$recv(stream)._lf()
  22551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22552. ,$ctx2.sendIdx["lf"]=2
  22553. //>>excludeEnd("ctx");
  22554. ][0];
  22555. [$recv(stream)._lf()
  22556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22557. ,$ctx2.sendIdx["lf"]=3
  22558. //>>excludeEnd("ctx");
  22559. ][0];
  22560. [$recv(stream)._tab()
  22561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22562. ,$ctx2.sendIdx["tab"]=2
  22563. //>>excludeEnd("ctx");
  22564. ][0];
  22565. [$recv(stream)._write_("| temporary variable names |")
  22566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22567. ,$ctx2.sendIdx["write:"]=3
  22568. //>>excludeEnd("ctx");
  22569. ][0];
  22570. $recv(stream)._lf();
  22571. $recv(stream)._tab();
  22572. return $recv(stream)._write_("statements");
  22573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22574. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  22575. //>>excludeEnd("ctx");
  22576. }));
  22577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22578. }, function($ctx1) {$ctx1.fill(self,"methodTemplate",{})});
  22579. //>>excludeEnd("ctx");
  22580. }; }),
  22581. $globals.TBehaviorProvider);
  22582. $core.addMethod(
  22583. $core.method({
  22584. selector: "methods",
  22585. protocol: "accessing",
  22586. //>>excludeStart("ide", pragmas.excludeIdeData);
  22587. args: [],
  22588. source: "methods\x0a\x09^ self methodDictionary values",
  22589. referencedClasses: [],
  22590. //>>excludeEnd("ide");
  22591. pragmas: [],
  22592. messageSends: ["values", "methodDictionary"]
  22593. }, function ($methodClass){ return function (){
  22594. var self=this,$self=this;
  22595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22596. return $core.withContext(function($ctx1) {
  22597. //>>excludeEnd("ctx");
  22598. return $recv($self._methodDictionary())._values();
  22599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22600. }, function($ctx1) {$ctx1.fill(self,"methods",{})});
  22601. //>>excludeEnd("ctx");
  22602. }; }),
  22603. $globals.TBehaviorProvider);
  22604. $core.addMethod(
  22605. $core.method({
  22606. selector: "methodsInProtocol:",
  22607. protocol: "accessing",
  22608. //>>excludeStart("ide", pragmas.excludeIdeData);
  22609. args: ["aString"],
  22610. source: "methodsInProtocol: aString\x0a\x09^ self methods select: [ :each | each protocol = aString ]",
  22611. referencedClasses: [],
  22612. //>>excludeEnd("ide");
  22613. pragmas: [],
  22614. messageSends: ["select:", "methods", "=", "protocol"]
  22615. }, function ($methodClass){ return function (aString){
  22616. var self=this,$self=this;
  22617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22618. return $core.withContext(function($ctx1) {
  22619. //>>excludeEnd("ctx");
  22620. return $recv($self._methods())._select_((function(each){
  22621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22622. return $core.withContext(function($ctx2) {
  22623. //>>excludeEnd("ctx");
  22624. return $recv($recv(each)._protocol()).__eq(aString);
  22625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22626. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  22627. //>>excludeEnd("ctx");
  22628. }));
  22629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22630. }, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:",{aString:aString})});
  22631. //>>excludeEnd("ctx");
  22632. }; }),
  22633. $globals.TBehaviorProvider);
  22634. $core.addMethod(
  22635. $core.method({
  22636. selector: "organization",
  22637. protocol: "accessing",
  22638. //>>excludeStart("ide", pragmas.excludeIdeData);
  22639. args: [],
  22640. source: "organization\x0a\x09^ self basicOrganization ifNil: [\x0a\x09\x09self basicOrganization: (ClassOrganizer on: self).\x0a\x09\x09self basicOrganization ]",
  22641. referencedClasses: ["ClassOrganizer"],
  22642. //>>excludeEnd("ide");
  22643. pragmas: [],
  22644. messageSends: ["ifNil:", "basicOrganization", "basicOrganization:", "on:"]
  22645. }, function ($methodClass){ return function (){
  22646. var self=this,$self=this;
  22647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22648. return $core.withContext(function($ctx1) {
  22649. //>>excludeEnd("ctx");
  22650. var $1;
  22651. $1=[$self._basicOrganization()
  22652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22653. ,$ctx1.sendIdx["basicOrganization"]=1
  22654. //>>excludeEnd("ctx");
  22655. ][0];
  22656. if($1 == null || $1.a$nil){
  22657. $self._basicOrganization_($recv($globals.ClassOrganizer)._on_(self));
  22658. return $self._basicOrganization();
  22659. } else {
  22660. return $1;
  22661. }
  22662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22663. }, function($ctx1) {$ctx1.fill(self,"organization",{})});
  22664. //>>excludeEnd("ctx");
  22665. }; }),
  22666. $globals.TBehaviorProvider);
  22667. $core.addMethod(
  22668. $core.method({
  22669. selector: "ownMethods",
  22670. protocol: "accessing",
  22671. //>>excludeStart("ide", pragmas.excludeIdeData);
  22672. args: [],
  22673. source: "ownMethods\x0a\x09\x22Answer the methods of the receiver that are not package extensions\x0a\x09nor obtained via trait composition\x22\x0a\x0a\x09^ (self ownProtocols \x0a\x09\x09inject: OrderedCollection new\x0a\x09\x09into: [ :acc :each | acc, (self ownMethodsInProtocol: each) ])\x0a\x09\x09\x09sorted: [ :a :b | a selector <= b selector ]",
  22674. referencedClasses: ["OrderedCollection"],
  22675. //>>excludeEnd("ide");
  22676. pragmas: [],
  22677. messageSends: ["sorted:", "inject:into:", "ownProtocols", "new", ",", "ownMethodsInProtocol:", "<=", "selector"]
  22678. }, function ($methodClass){ return function (){
  22679. var self=this,$self=this;
  22680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22681. return $core.withContext(function($ctx1) {
  22682. //>>excludeEnd("ctx");
  22683. return $recv($recv($self._ownProtocols())._inject_into_($recv($globals.OrderedCollection)._new(),(function(acc,each){
  22684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22685. return $core.withContext(function($ctx2) {
  22686. //>>excludeEnd("ctx");
  22687. return $recv(acc).__comma($self._ownMethodsInProtocol_(each));
  22688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22689. }, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)});
  22690. //>>excludeEnd("ctx");
  22691. })))._sorted_((function(a,b){
  22692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22693. return $core.withContext(function($ctx2) {
  22694. //>>excludeEnd("ctx");
  22695. return $recv([$recv(a)._selector()
  22696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22697. ,$ctx2.sendIdx["selector"]=1
  22698. //>>excludeEnd("ctx");
  22699. ][0]).__lt_eq($recv(b)._selector());
  22700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22701. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,2)});
  22702. //>>excludeEnd("ctx");
  22703. }));
  22704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22705. }, function($ctx1) {$ctx1.fill(self,"ownMethods",{})});
  22706. //>>excludeEnd("ctx");
  22707. }; }),
  22708. $globals.TBehaviorProvider);
  22709. $core.addMethod(
  22710. $core.method({
  22711. selector: "ownMethodsInProtocol:",
  22712. protocol: "accessing",
  22713. //>>excludeStart("ide", pragmas.excludeIdeData);
  22714. args: ["aString"],
  22715. source: "ownMethodsInProtocol: aString\x0a\x09^ (self methodsInProtocol: aString) select: [ :each | each origin = self ]",
  22716. referencedClasses: [],
  22717. //>>excludeEnd("ide");
  22718. pragmas: [],
  22719. messageSends: ["select:", "methodsInProtocol:", "=", "origin"]
  22720. }, function ($methodClass){ return function (aString){
  22721. var self=this,$self=this;
  22722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22723. return $core.withContext(function($ctx1) {
  22724. //>>excludeEnd("ctx");
  22725. return $recv($self._methodsInProtocol_(aString))._select_((function(each){
  22726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22727. return $core.withContext(function($ctx2) {
  22728. //>>excludeEnd("ctx");
  22729. return $recv($recv(each)._origin()).__eq(self);
  22730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22731. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  22732. //>>excludeEnd("ctx");
  22733. }));
  22734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22735. }, function($ctx1) {$ctx1.fill(self,"ownMethodsInProtocol:",{aString:aString})});
  22736. //>>excludeEnd("ctx");
  22737. }; }),
  22738. $globals.TBehaviorProvider);
  22739. $core.addMethod(
  22740. $core.method({
  22741. selector: "ownProtocols",
  22742. protocol: "accessing",
  22743. //>>excludeStart("ide", pragmas.excludeIdeData);
  22744. args: [],
  22745. source: "ownProtocols\x0a\x09\x22Answer the protocols of the receiver that are not package extensions\x22\x0a\x0a\x09^ self protocols reject: [ :each |\x0a\x09\x09each match: '^\x5c*' ]",
  22746. referencedClasses: [],
  22747. //>>excludeEnd("ide");
  22748. pragmas: [],
  22749. messageSends: ["reject:", "protocols", "match:"]
  22750. }, function ($methodClass){ return function (){
  22751. var self=this,$self=this;
  22752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22753. return $core.withContext(function($ctx1) {
  22754. //>>excludeEnd("ctx");
  22755. return $recv($self._protocols())._reject_((function(each){
  22756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22757. return $core.withContext(function($ctx2) {
  22758. //>>excludeEnd("ctx");
  22759. return $recv(each)._match_("^\x5c*");
  22760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22761. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  22762. //>>excludeEnd("ctx");
  22763. }));
  22764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22765. }, function($ctx1) {$ctx1.fill(self,"ownProtocols",{})});
  22766. //>>excludeEnd("ctx");
  22767. }; }),
  22768. $globals.TBehaviorProvider);
  22769. $core.addMethod(
  22770. $core.method({
  22771. selector: "packageOfProtocol:",
  22772. protocol: "accessing",
  22773. //>>excludeStart("ide", pragmas.excludeIdeData);
  22774. args: ["aString"],
  22775. source: "packageOfProtocol: aString\x0a\x09\x22Answer the package the method of receiver belongs to:\x0a\x09- if it is an extension method, answer the corresponding package\x0a\x09- else answer the receiver's package\x22\x0a\x09\x0a\x09(aString beginsWith: '*') ifFalse: [\x0a\x09\x09^ self package ].\x0a\x09\x09\x0a\x09^ Package \x0a\x09\x09named: aString allButFirst\x0a\x09\x09ifAbsent: [ nil ]",
  22776. referencedClasses: ["Package"],
  22777. //>>excludeEnd("ide");
  22778. pragmas: [],
  22779. messageSends: ["ifFalse:", "beginsWith:", "package", "named:ifAbsent:", "allButFirst"]
  22780. }, function ($methodClass){ return function (aString){
  22781. var self=this,$self=this;
  22782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22783. return $core.withContext(function($ctx1) {
  22784. //>>excludeEnd("ctx");
  22785. if(!$core.assert($recv(aString)._beginsWith_("*"))){
  22786. return $self._package();
  22787. }
  22788. return $recv($globals.Package)._named_ifAbsent_($recv(aString)._allButFirst(),(function(){
  22789. return nil;
  22790. }));
  22791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22792. }, function($ctx1) {$ctx1.fill(self,"packageOfProtocol:",{aString:aString})});
  22793. //>>excludeEnd("ctx");
  22794. }; }),
  22795. $globals.TBehaviorProvider);
  22796. $core.addMethod(
  22797. $core.method({
  22798. selector: "protocols",
  22799. protocol: "accessing",
  22800. //>>excludeStart("ide", pragmas.excludeIdeData);
  22801. args: [],
  22802. source: "protocols\x0a\x09^ self organization elements asArray sorted",
  22803. referencedClasses: [],
  22804. //>>excludeEnd("ide");
  22805. pragmas: [],
  22806. messageSends: ["sorted", "asArray", "elements", "organization"]
  22807. }, function ($methodClass){ return function (){
  22808. var self=this,$self=this;
  22809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22810. return $core.withContext(function($ctx1) {
  22811. //>>excludeEnd("ctx");
  22812. return $recv($recv($recv($self._organization())._elements())._asArray())._sorted();
  22813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22814. }, function($ctx1) {$ctx1.fill(self,"protocols",{})});
  22815. //>>excludeEnd("ctx");
  22816. }; }),
  22817. $globals.TBehaviorProvider);
  22818. $core.addMethod(
  22819. $core.method({
  22820. selector: "protocolsDo:",
  22821. protocol: "enumerating",
  22822. //>>excludeStart("ide", pragmas.excludeIdeData);
  22823. args: ["aBlock"],
  22824. source: "protocolsDo: aBlock\x0a\x09\x22Execute aBlock for each method protocol with\x0a\x09its collection of methods in the sort order of protocol name.\x22\x0a\x0a\x09| methodsByProtocol |\x0a\x09methodsByProtocol := HashedCollection new.\x0a\x09self methodDictionary valuesDo: [ :m |\x0a\x09\x09(methodsByProtocol at: m protocol ifAbsentPut: [ Array new ])\x0a\x09\x09\x09add: m ].\x0a\x09self protocols do: [ :protocol |\x0a\x09\x09aBlock value: protocol value: (methodsByProtocol at: protocol) ]",
  22825. referencedClasses: ["HashedCollection", "Array"],
  22826. //>>excludeEnd("ide");
  22827. pragmas: [],
  22828. messageSends: ["new", "valuesDo:", "methodDictionary", "add:", "at:ifAbsentPut:", "protocol", "do:", "protocols", "value:value:", "at:"]
  22829. }, function ($methodClass){ return function (aBlock){
  22830. var self=this,$self=this;
  22831. var methodsByProtocol;
  22832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22833. return $core.withContext(function($ctx1) {
  22834. //>>excludeEnd("ctx");
  22835. methodsByProtocol=[$recv($globals.HashedCollection)._new()
  22836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22837. ,$ctx1.sendIdx["new"]=1
  22838. //>>excludeEnd("ctx");
  22839. ][0];
  22840. $recv($self._methodDictionary())._valuesDo_((function(m){
  22841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22842. return $core.withContext(function($ctx2) {
  22843. //>>excludeEnd("ctx");
  22844. return $recv($recv(methodsByProtocol)._at_ifAbsentPut_($recv(m)._protocol(),(function(){
  22845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22846. return $core.withContext(function($ctx3) {
  22847. //>>excludeEnd("ctx");
  22848. return $recv($globals.Array)._new();
  22849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22850. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  22851. //>>excludeEnd("ctx");
  22852. })))._add_(m);
  22853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22854. }, function($ctx2) {$ctx2.fillBlock({m:m},$ctx1,1)});
  22855. //>>excludeEnd("ctx");
  22856. }));
  22857. $recv($self._protocols())._do_((function(protocol){
  22858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22859. return $core.withContext(function($ctx2) {
  22860. //>>excludeEnd("ctx");
  22861. return $recv(aBlock)._value_value_(protocol,$recv(methodsByProtocol)._at_(protocol));
  22862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22863. }, function($ctx2) {$ctx2.fillBlock({protocol:protocol},$ctx1,3)});
  22864. //>>excludeEnd("ctx");
  22865. }));
  22866. return self;
  22867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22868. }, function($ctx1) {$ctx1.fill(self,"protocolsDo:",{aBlock:aBlock,methodsByProtocol:methodsByProtocol})});
  22869. //>>excludeEnd("ctx");
  22870. }; }),
  22871. $globals.TBehaviorProvider);
  22872. $core.addMethod(
  22873. $core.method({
  22874. selector: "recompile",
  22875. protocol: "compiling",
  22876. //>>excludeStart("ide", pragmas.excludeIdeData);
  22877. args: [],
  22878. source: "recompile\x0a\x09^ Compiler new recompile: self",
  22879. referencedClasses: ["Compiler"],
  22880. //>>excludeEnd("ide");
  22881. pragmas: [],
  22882. messageSends: ["recompile:", "new"]
  22883. }, function ($methodClass){ return function (){
  22884. var self=this,$self=this;
  22885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22886. return $core.withContext(function($ctx1) {
  22887. //>>excludeEnd("ctx");
  22888. return $recv($recv($globals.Compiler)._new())._recompile_(self);
  22889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22890. }, function($ctx1) {$ctx1.fill(self,"recompile",{})});
  22891. //>>excludeEnd("ctx");
  22892. }; }),
  22893. $globals.TBehaviorProvider);
  22894. $core.addMethod(
  22895. $core.method({
  22896. selector: "removeCompiledMethod:",
  22897. protocol: "compiling",
  22898. //>>excludeStart("ide", pragmas.excludeIdeData);
  22899. args: ["aMethod"],
  22900. source: "removeCompiledMethod: aMethod\x0a\x09self basicRemoveCompiledMethod: aMethod.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (MethodRemoved new\x0a\x09\x09\x09method: aMethod;\x0a\x09\x09\x09yourself)",
  22901. referencedClasses: ["SystemAnnouncer", "MethodRemoved"],
  22902. //>>excludeEnd("ide");
  22903. pragmas: [],
  22904. messageSends: ["basicRemoveCompiledMethod:", "announce:", "current", "method:", "new", "yourself"]
  22905. }, function ($methodClass){ return function (aMethod){
  22906. var self=this,$self=this;
  22907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22908. return $core.withContext(function($ctx1) {
  22909. //>>excludeEnd("ctx");
  22910. var $1,$2;
  22911. $self._basicRemoveCompiledMethod_(aMethod);
  22912. $1=$recv($globals.SystemAnnouncer)._current();
  22913. $2=$recv($globals.MethodRemoved)._new();
  22914. $recv($2)._method_(aMethod);
  22915. $recv($1)._announce_($recv($2)._yourself());
  22916. return self;
  22917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22918. }, function($ctx1) {$ctx1.fill(self,"removeCompiledMethod:",{aMethod:aMethod})});
  22919. //>>excludeEnd("ctx");
  22920. }; }),
  22921. $globals.TBehaviorProvider);
  22922. $core.addMethod(
  22923. $core.method({
  22924. selector: "removeProtocolIfEmpty:",
  22925. protocol: "accessing",
  22926. //>>excludeStart("ide", pragmas.excludeIdeData);
  22927. args: ["aString"],
  22928. source: "removeProtocolIfEmpty: aString\x0a\x09self methods\x0a\x09\x09detect: [ :each | each protocol = aString ]\x0a\x09\x09ifNone: [ self organization removeElement: aString ]",
  22929. referencedClasses: [],
  22930. //>>excludeEnd("ide");
  22931. pragmas: [],
  22932. messageSends: ["detect:ifNone:", "methods", "=", "protocol", "removeElement:", "organization"]
  22933. }, function ($methodClass){ return function (aString){
  22934. var self=this,$self=this;
  22935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22936. return $core.withContext(function($ctx1) {
  22937. //>>excludeEnd("ctx");
  22938. $recv($self._methods())._detect_ifNone_((function(each){
  22939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22940. return $core.withContext(function($ctx2) {
  22941. //>>excludeEnd("ctx");
  22942. return $recv($recv(each)._protocol()).__eq(aString);
  22943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22944. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  22945. //>>excludeEnd("ctx");
  22946. }),(function(){
  22947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22948. return $core.withContext(function($ctx2) {
  22949. //>>excludeEnd("ctx");
  22950. return $recv($self._organization())._removeElement_(aString);
  22951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22952. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  22953. //>>excludeEnd("ctx");
  22954. }));
  22955. return self;
  22956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22957. }, function($ctx1) {$ctx1.fill(self,"removeProtocolIfEmpty:",{aString:aString})});
  22958. //>>excludeEnd("ctx");
  22959. }; }),
  22960. $globals.TBehaviorProvider);
  22961. $core.addMethod(
  22962. $core.method({
  22963. selector: "selectors",
  22964. protocol: "accessing",
  22965. //>>excludeStart("ide", pragmas.excludeIdeData);
  22966. args: [],
  22967. source: "selectors\x0a\x09^ self methodDictionary keys",
  22968. referencedClasses: [],
  22969. //>>excludeEnd("ide");
  22970. pragmas: [],
  22971. messageSends: ["keys", "methodDictionary"]
  22972. }, function ($methodClass){ return function (){
  22973. var self=this,$self=this;
  22974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22975. return $core.withContext(function($ctx1) {
  22976. //>>excludeEnd("ctx");
  22977. return $recv($self._methodDictionary())._keys();
  22978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22979. }, function($ctx1) {$ctx1.fill(self,"selectors",{})});
  22980. //>>excludeEnd("ctx");
  22981. }; }),
  22982. $globals.TBehaviorProvider);
  22983. $core.addMethod(
  22984. $core.method({
  22985. selector: "setTraitComposition:",
  22986. protocol: "compiling",
  22987. //>>excludeStart("ide", pragmas.excludeIdeData);
  22988. args: ["aTraitComposition"],
  22989. source: "setTraitComposition: aTraitComposition\x0a\x09<inlineJS: '$core.setTraitComposition(aTraitComposition._asJavaScriptObject(), self)'>",
  22990. referencedClasses: [],
  22991. //>>excludeEnd("ide");
  22992. pragmas: [["inlineJS:", ["$core.setTraitComposition(aTraitComposition._asJavaScriptObject(), self)"]]],
  22993. messageSends: []
  22994. }, function ($methodClass){ return function (aTraitComposition){
  22995. var self=this,$self=this;
  22996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22997. return $core.withContext(function($ctx1) {
  22998. //>>excludeEnd("ctx");
  22999. $core.setTraitComposition(aTraitComposition._asJavaScriptObject(), self);
  23000. return self;
  23001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23002. }, function($ctx1) {$ctx1.fill(self,"setTraitComposition:",{aTraitComposition:aTraitComposition})});
  23003. //>>excludeEnd("ctx");
  23004. }; }),
  23005. $globals.TBehaviorProvider);
  23006. $core.addMethod(
  23007. $core.method({
  23008. selector: "slotNames",
  23009. protocol: "accessing",
  23010. //>>excludeStart("ide", pragmas.excludeIdeData);
  23011. args: [],
  23012. source: "slotNames\x0a\x09^ self slots",
  23013. referencedClasses: [],
  23014. //>>excludeEnd("ide");
  23015. pragmas: [],
  23016. messageSends: ["slots"]
  23017. }, function ($methodClass){ return function (){
  23018. var self=this,$self=this;
  23019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23020. return $core.withContext(function($ctx1) {
  23021. //>>excludeEnd("ctx");
  23022. return $self._slots();
  23023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23024. }, function($ctx1) {$ctx1.fill(self,"slotNames",{})});
  23025. //>>excludeEnd("ctx");
  23026. }; }),
  23027. $globals.TBehaviorProvider);
  23028. $core.addMethod(
  23029. $core.method({
  23030. selector: "traitComposition",
  23031. protocol: "accessing",
  23032. //>>excludeStart("ide", pragmas.excludeIdeData);
  23033. args: [],
  23034. source: "traitComposition\x0a\x09^ (self basicAt: 'traitComposition')\x0a\x09\x09ifNil: [ #() ]\x0a\x09\x09ifNotNil: [ :aCollection | aCollection collect: [ :each | TraitTransformation fromJSON: each ] ]",
  23035. referencedClasses: ["TraitTransformation"],
  23036. //>>excludeEnd("ide");
  23037. pragmas: [],
  23038. messageSends: ["ifNil:ifNotNil:", "basicAt:", "collect:", "fromJSON:"]
  23039. }, function ($methodClass){ return function (){
  23040. var self=this,$self=this;
  23041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23042. return $core.withContext(function($ctx1) {
  23043. //>>excludeEnd("ctx");
  23044. var $1;
  23045. $1=$self._basicAt_("traitComposition");
  23046. if($1 == null || $1.a$nil){
  23047. return [];
  23048. } else {
  23049. var aCollection;
  23050. aCollection=$1;
  23051. return $recv(aCollection)._collect_((function(each){
  23052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23053. return $core.withContext(function($ctx2) {
  23054. //>>excludeEnd("ctx");
  23055. return $recv($globals.TraitTransformation)._fromJSON_(each);
  23056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23057. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  23058. //>>excludeEnd("ctx");
  23059. }));
  23060. }
  23061. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23062. }, function($ctx1) {$ctx1.fill(self,"traitComposition",{})});
  23063. //>>excludeEnd("ctx");
  23064. }; }),
  23065. $globals.TBehaviorProvider);
  23066. $core.addMethod(
  23067. $core.method({
  23068. selector: "traitCompositionDefinition",
  23069. protocol: "accessing",
  23070. //>>excludeStart("ide", pragmas.excludeIdeData);
  23071. args: [],
  23072. source: "traitCompositionDefinition\x0a\x09^ self traitComposition ifNotEmpty: [ :traitComposition |\x0a\x09\x09String streamContents: [ :str |\x0a\x09\x09\x09str write: '{'.\x0a\x09\x09\x09traitComposition\x0a\x09\x09\x09\x09do: [ :each | str write: each definition ]\x0a\x09\x09\x09\x09separatedBy: [ str write: '. ' ].\x0a\x09\x09\x09str write: '}' ] ]",
  23073. referencedClasses: ["String"],
  23074. //>>excludeEnd("ide");
  23075. pragmas: [],
  23076. messageSends: ["ifNotEmpty:", "traitComposition", "streamContents:", "write:", "do:separatedBy:", "definition"]
  23077. }, function ($methodClass){ return function (){
  23078. var self=this,$self=this;
  23079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23080. return $core.withContext(function($ctx1) {
  23081. //>>excludeEnd("ctx");
  23082. return $recv($self._traitComposition())._ifNotEmpty_((function(traitComposition){
  23083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23084. return $core.withContext(function($ctx2) {
  23085. //>>excludeEnd("ctx");
  23086. return $recv($globals.String)._streamContents_((function(str){
  23087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23088. return $core.withContext(function($ctx3) {
  23089. //>>excludeEnd("ctx");
  23090. [$recv(str)._write_("{")
  23091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23092. ,$ctx3.sendIdx["write:"]=1
  23093. //>>excludeEnd("ctx");
  23094. ][0];
  23095. $recv(traitComposition)._do_separatedBy_((function(each){
  23096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23097. return $core.withContext(function($ctx4) {
  23098. //>>excludeEnd("ctx");
  23099. return [$recv(str)._write_($recv(each)._definition())
  23100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23101. ,$ctx4.sendIdx["write:"]=2
  23102. //>>excludeEnd("ctx");
  23103. ][0];
  23104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23105. }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)});
  23106. //>>excludeEnd("ctx");
  23107. }),(function(){
  23108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23109. return $core.withContext(function($ctx4) {
  23110. //>>excludeEnd("ctx");
  23111. return [$recv(str)._write_(". ")
  23112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23113. ,$ctx4.sendIdx["write:"]=3
  23114. //>>excludeEnd("ctx");
  23115. ][0];
  23116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23117. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)});
  23118. //>>excludeEnd("ctx");
  23119. }));
  23120. return $recv(str)._write_("}");
  23121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23122. }, function($ctx3) {$ctx3.fillBlock({str:str},$ctx2,2)});
  23123. //>>excludeEnd("ctx");
  23124. }));
  23125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23126. }, function($ctx2) {$ctx2.fillBlock({traitComposition:traitComposition},$ctx1,1)});
  23127. //>>excludeEnd("ctx");
  23128. }));
  23129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23130. }, function($ctx1) {$ctx1.fill(self,"traitCompositionDefinition",{})});
  23131. //>>excludeEnd("ctx");
  23132. }; }),
  23133. $globals.TBehaviorProvider);
  23134. $core.addTrait("TMasterBehavior", "Kernel-Classes");
  23135. //>>excludeStart("ide", pragmas.excludeIdeData);
  23136. $globals.TMasterBehavior.comment="I am the behavior on the instance-side of the browser.\x0a\x0aI define things like package, category, name, comment etc.\x0aas opposed to derived behaviors (metaclass, class trait, ...)\x0athat relate to me.";
  23137. //>>excludeEnd("ide");
  23138. $core.addMethod(
  23139. $core.method({
  23140. selector: "asJavaScriptSource",
  23141. protocol: "converting",
  23142. //>>excludeStart("ide", pragmas.excludeIdeData);
  23143. args: [],
  23144. source: "asJavaScriptSource\x0a\x09^ '$globals.', self name",
  23145. referencedClasses: [],
  23146. //>>excludeEnd("ide");
  23147. pragmas: [],
  23148. messageSends: [",", "name"]
  23149. }, function ($methodClass){ return function (){
  23150. var self=this,$self=this;
  23151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23152. return $core.withContext(function($ctx1) {
  23153. //>>excludeEnd("ctx");
  23154. return "$globals.".__comma($self._name());
  23155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23156. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  23157. //>>excludeEnd("ctx");
  23158. }; }),
  23159. $globals.TMasterBehavior);
  23160. $core.addMethod(
  23161. $core.method({
  23162. selector: "browse",
  23163. protocol: "browsing",
  23164. //>>excludeStart("ide", pragmas.excludeIdeData);
  23165. args: [],
  23166. source: "browse\x0a\x09Finder findClass: self",
  23167. referencedClasses: ["Finder"],
  23168. //>>excludeEnd("ide");
  23169. pragmas: [],
  23170. messageSends: ["findClass:"]
  23171. }, function ($methodClass){ return function (){
  23172. var self=this,$self=this;
  23173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23174. return $core.withContext(function($ctx1) {
  23175. //>>excludeEnd("ctx");
  23176. $recv($globals.Finder)._findClass_(self);
  23177. return self;
  23178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23179. }, function($ctx1) {$ctx1.fill(self,"browse",{})});
  23180. //>>excludeEnd("ctx");
  23181. }; }),
  23182. $globals.TMasterBehavior);
  23183. $core.addMethod(
  23184. $core.method({
  23185. selector: "category",
  23186. protocol: "accessing",
  23187. //>>excludeStart("ide", pragmas.excludeIdeData);
  23188. args: [],
  23189. source: "category\x0a\x09^ self package ifNil: [ 'Unclassified' ] ifNotNil: [ self package name ]",
  23190. referencedClasses: [],
  23191. //>>excludeEnd("ide");
  23192. pragmas: [],
  23193. messageSends: ["ifNil:ifNotNil:", "package", "name"]
  23194. }, function ($methodClass){ return function (){
  23195. var self=this,$self=this;
  23196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23197. return $core.withContext(function($ctx1) {
  23198. //>>excludeEnd("ctx");
  23199. var $1;
  23200. $1=[$self._package()
  23201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23202. ,$ctx1.sendIdx["package"]=1
  23203. //>>excludeEnd("ctx");
  23204. ][0];
  23205. if($1 == null || $1.a$nil){
  23206. return "Unclassified";
  23207. } else {
  23208. return $recv($self._package())._name();
  23209. }
  23210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23211. }, function($ctx1) {$ctx1.fill(self,"category",{})});
  23212. //>>excludeEnd("ctx");
  23213. }; }),
  23214. $globals.TMasterBehavior);
  23215. $core.addMethod(
  23216. $core.method({
  23217. selector: "classTag",
  23218. protocol: "accessing",
  23219. //>>excludeStart("ide", pragmas.excludeIdeData);
  23220. args: [],
  23221. source: "classTag\x0a\x09\x22Every master behavior should define a class tag.\x22\x0a\x09^ self subclassResponsibility",
  23222. referencedClasses: [],
  23223. //>>excludeEnd("ide");
  23224. pragmas: [],
  23225. messageSends: ["subclassResponsibility"]
  23226. }, function ($methodClass){ return function (){
  23227. var self=this,$self=this;
  23228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23229. return $core.withContext(function($ctx1) {
  23230. //>>excludeEnd("ctx");
  23231. return $self._subclassResponsibility();
  23232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23233. }, function($ctx1) {$ctx1.fill(self,"classTag",{})});
  23234. //>>excludeEnd("ctx");
  23235. }; }),
  23236. $globals.TMasterBehavior);
  23237. $core.addMethod(
  23238. $core.method({
  23239. selector: "comment",
  23240. protocol: "accessing",
  23241. //>>excludeStart("ide", pragmas.excludeIdeData);
  23242. args: [],
  23243. source: "comment\x0a\x09^ (self basicAt: 'comment') ifNil: [ '' ]",
  23244. referencedClasses: [],
  23245. //>>excludeEnd("ide");
  23246. pragmas: [],
  23247. messageSends: ["ifNil:", "basicAt:"]
  23248. }, function ($methodClass){ return function (){
  23249. var self=this,$self=this;
  23250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23251. return $core.withContext(function($ctx1) {
  23252. //>>excludeEnd("ctx");
  23253. var $1;
  23254. $1=$self._basicAt_("comment");
  23255. if($1 == null || $1.a$nil){
  23256. return "";
  23257. } else {
  23258. return $1;
  23259. }
  23260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23261. }, function($ctx1) {$ctx1.fill(self,"comment",{})});
  23262. //>>excludeEnd("ctx");
  23263. }; }),
  23264. $globals.TMasterBehavior);
  23265. $core.addMethod(
  23266. $core.method({
  23267. selector: "comment:",
  23268. protocol: "accessing",
  23269. //>>excludeStart("ide", pragmas.excludeIdeData);
  23270. args: ["aString"],
  23271. source: "comment: aString\x0a\x09self basicAt: 'comment' put: aString.\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassCommentChanged new\x0a\x09\x09\x09theClass: self;\x0a\x09\x09\x09yourself)",
  23272. referencedClasses: ["SystemAnnouncer", "ClassCommentChanged"],
  23273. //>>excludeEnd("ide");
  23274. pragmas: [],
  23275. messageSends: ["basicAt:put:", "announce:", "current", "theClass:", "new", "yourself"]
  23276. }, function ($methodClass){ return function (aString){
  23277. var self=this,$self=this;
  23278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23279. return $core.withContext(function($ctx1) {
  23280. //>>excludeEnd("ctx");
  23281. var $1,$2;
  23282. $self._basicAt_put_("comment",aString);
  23283. $1=$recv($globals.SystemAnnouncer)._current();
  23284. $2=$recv($globals.ClassCommentChanged)._new();
  23285. $recv($2)._theClass_(self);
  23286. $recv($1)._announce_($recv($2)._yourself());
  23287. return self;
  23288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23289. }, function($ctx1) {$ctx1.fill(self,"comment:",{aString:aString})});
  23290. //>>excludeEnd("ctx");
  23291. }; }),
  23292. $globals.TMasterBehavior);
  23293. $core.addMethod(
  23294. $core.method({
  23295. selector: "definedMethods",
  23296. protocol: "accessing",
  23297. //>>excludeStart("ide", pragmas.excludeIdeData);
  23298. args: [],
  23299. source: "definedMethods\x0a\x09\x22Answers methods of me and derived 'meta' part if present\x22\x0a\x09| methods |\x0a\x09methods := self methods.\x0a\x09self theMetaClass\x0a\x09\x09ifNil: [ ^ methods ]\x0a\x09\x09ifNotNil: [ :meta | ^ methods, meta methods ]",
  23300. referencedClasses: [],
  23301. //>>excludeEnd("ide");
  23302. pragmas: [],
  23303. messageSends: ["methods", "ifNil:ifNotNil:", "theMetaClass", ","]
  23304. }, function ($methodClass){ return function (){
  23305. var self=this,$self=this;
  23306. var methods;
  23307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23308. return $core.withContext(function($ctx1) {
  23309. //>>excludeEnd("ctx");
  23310. var $1;
  23311. methods=[$self._methods()
  23312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23313. ,$ctx1.sendIdx["methods"]=1
  23314. //>>excludeEnd("ctx");
  23315. ][0];
  23316. $1=$self._theMetaClass();
  23317. if($1 == null || $1.a$nil){
  23318. return methods;
  23319. } else {
  23320. var meta;
  23321. meta=$1;
  23322. return $recv(methods).__comma($recv(meta)._methods());
  23323. }
  23324. return self;
  23325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23326. }, function($ctx1) {$ctx1.fill(self,"definedMethods",{methods:methods})});
  23327. //>>excludeEnd("ctx");
  23328. }; }),
  23329. $globals.TMasterBehavior);
  23330. $core.addMethod(
  23331. $core.method({
  23332. selector: "enterOrganization",
  23333. protocol: "accessing",
  23334. //>>excludeStart("ide", pragmas.excludeIdeData);
  23335. args: [],
  23336. source: "enterOrganization\x0a\x09Smalltalk ifNotNil: [\x0a\x09\x09(self basicAt: 'category')\x0a\x09\x09\x09ifNil: [ self basicPackage: nil ]\x0a\x09\x09\x09ifNotNil: [ :category |\x0a\x09\x09\x09\x09\x22Amber has 1-1 correspondence between cat and pkg, atm\x22\x0a\x09\x09\x09\x09self basicPackage: (Package named: category).\x0a\x09\x09\x09\x09self package organization addElement: self ] ]",
  23337. referencedClasses: ["Smalltalk", "Package"],
  23338. //>>excludeEnd("ide");
  23339. pragmas: [],
  23340. messageSends: ["ifNotNil:", "ifNil:ifNotNil:", "basicAt:", "basicPackage:", "named:", "addElement:", "organization", "package"]
  23341. }, function ($methodClass){ return function (){
  23342. var self=this,$self=this;
  23343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23344. return $core.withContext(function($ctx1) {
  23345. //>>excludeEnd("ctx");
  23346. var $1,$2;
  23347. $1=$globals.Smalltalk;
  23348. if($1 == null || $1.a$nil){
  23349. $1;
  23350. } else {
  23351. $2=$self._basicAt_("category");
  23352. if($2 == null || $2.a$nil){
  23353. [$self._basicPackage_(nil)
  23354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23355. ,$ctx1.sendIdx["basicPackage:"]=1
  23356. //>>excludeEnd("ctx");
  23357. ][0];
  23358. } else {
  23359. var category;
  23360. category=$2;
  23361. $self._basicPackage_($recv($globals.Package)._named_(category));
  23362. $recv($recv($self._package())._organization())._addElement_(self);
  23363. }
  23364. }
  23365. return self;
  23366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23367. }, function($ctx1) {$ctx1.fill(self,"enterOrganization",{})});
  23368. //>>excludeEnd("ctx");
  23369. }; }),
  23370. $globals.TMasterBehavior);
  23371. $core.addMethod(
  23372. $core.method({
  23373. selector: "leaveOrganization",
  23374. protocol: "accessing",
  23375. //>>excludeStart("ide", pragmas.excludeIdeData);
  23376. args: [],
  23377. source: "leaveOrganization\x0a\x09Smalltalk ifNotNil: [\x0a\x09\x09self package organization removeElement: self ]",
  23378. referencedClasses: ["Smalltalk"],
  23379. //>>excludeEnd("ide");
  23380. pragmas: [],
  23381. messageSends: ["ifNotNil:", "removeElement:", "organization", "package"]
  23382. }, function ($methodClass){ return function (){
  23383. var self=this,$self=this;
  23384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23385. return $core.withContext(function($ctx1) {
  23386. //>>excludeEnd("ctx");
  23387. var $1;
  23388. $1=$globals.Smalltalk;
  23389. if($1 == null || $1.a$nil){
  23390. $1;
  23391. } else {
  23392. $recv($recv($self._package())._organization())._removeElement_(self);
  23393. }
  23394. return self;
  23395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23396. }, function($ctx1) {$ctx1.fill(self,"leaveOrganization",{})});
  23397. //>>excludeEnd("ctx");
  23398. }; }),
  23399. $globals.TMasterBehavior);
  23400. $core.addMethod(
  23401. $core.method({
  23402. selector: "name",
  23403. protocol: "accessing",
  23404. //>>excludeStart("ide", pragmas.excludeIdeData);
  23405. args: [],
  23406. source: "name\x0a\x09<inlineJS: 'return self.name'>",
  23407. referencedClasses: [],
  23408. //>>excludeEnd("ide");
  23409. pragmas: [["inlineJS:", ["return self.name"]]],
  23410. messageSends: []
  23411. }, function ($methodClass){ return function (){
  23412. var self=this,$self=this;
  23413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23414. return $core.withContext(function($ctx1) {
  23415. //>>excludeEnd("ctx");
  23416. return self.name;
  23417. return self;
  23418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23419. }, function($ctx1) {$ctx1.fill(self,"name",{})});
  23420. //>>excludeEnd("ctx");
  23421. }; }),
  23422. $globals.TMasterBehavior);
  23423. $core.addMethod(
  23424. $core.method({
  23425. selector: "package:",
  23426. protocol: "accessing",
  23427. //>>excludeStart("ide", pragmas.excludeIdeData);
  23428. args: ["aPackage"],
  23429. source: "package: aPackage\x0a\x09| oldPackage |\x0a\x09\x0a\x09self package = aPackage ifTrue: [ ^ self ].\x0a\x09\x0a\x09oldPackage := self package.\x0a\x09\x0a\x09self\x0a\x09\x09leaveOrganization;\x0a\x09\x09basicAt: 'category' put: aPackage name;\x0a\x09\x09enterOrganization.\x0a\x0a\x09SystemAnnouncer current announce: (ClassMoved new\x0a\x09\x09theClass: self;\x0a\x09\x09oldPackage: oldPackage;\x0a\x09\x09yourself)",
  23430. referencedClasses: ["SystemAnnouncer", "ClassMoved"],
  23431. //>>excludeEnd("ide");
  23432. pragmas: [],
  23433. messageSends: ["ifTrue:", "=", "package", "leaveOrganization", "basicAt:put:", "name", "enterOrganization", "announce:", "current", "theClass:", "new", "oldPackage:", "yourself"]
  23434. }, function ($methodClass){ return function (aPackage){
  23435. var self=this,$self=this;
  23436. var oldPackage;
  23437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23438. return $core.withContext(function($ctx1) {
  23439. //>>excludeEnd("ctx");
  23440. var $1,$2;
  23441. if($core.assert($recv([$self._package()
  23442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23443. ,$ctx1.sendIdx["package"]=1
  23444. //>>excludeEnd("ctx");
  23445. ][0]).__eq(aPackage))){
  23446. return self;
  23447. }
  23448. oldPackage=$self._package();
  23449. $self._leaveOrganization();
  23450. $self._basicAt_put_("category",$recv(aPackage)._name());
  23451. $self._enterOrganization();
  23452. $1=$recv($globals.SystemAnnouncer)._current();
  23453. $2=$recv($globals.ClassMoved)._new();
  23454. $recv($2)._theClass_(self);
  23455. $recv($2)._oldPackage_(oldPackage);
  23456. $recv($1)._announce_($recv($2)._yourself());
  23457. return self;
  23458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23459. }, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage,oldPackage:oldPackage})});
  23460. //>>excludeEnd("ctx");
  23461. }; }),
  23462. $globals.TMasterBehavior);
  23463. $core.addMethod(
  23464. $core.method({
  23465. selector: "theNonMetaClass",
  23466. protocol: "accessing",
  23467. //>>excludeStart("ide", pragmas.excludeIdeData);
  23468. args: [],
  23469. source: "theNonMetaClass\x0a\x09^ self",
  23470. referencedClasses: [],
  23471. //>>excludeEnd("ide");
  23472. pragmas: [],
  23473. messageSends: []
  23474. }, function ($methodClass){ return function (){
  23475. var self=this,$self=this;
  23476. return self;
  23477. }; }),
  23478. $globals.TMasterBehavior);
  23479. $core.addClass("Trait", $globals.Object, "Kernel-Classes");
  23480. $core.setSlots($globals.Trait, ["organization", "package", "traitUsers"]);
  23481. $core.addMethod(
  23482. $core.method({
  23483. selector: "-",
  23484. protocol: "composition",
  23485. //>>excludeStart("ide", pragmas.excludeIdeData);
  23486. args: ["anArray"],
  23487. source: "- anArray\x0a\x09^ self asTraitTransformation - anArray",
  23488. referencedClasses: [],
  23489. //>>excludeEnd("ide");
  23490. pragmas: [],
  23491. messageSends: ["-", "asTraitTransformation"]
  23492. }, function ($methodClass){ return function (anArray){
  23493. var self=this,$self=this;
  23494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23495. return $core.withContext(function($ctx1) {
  23496. //>>excludeEnd("ctx");
  23497. return $recv($self._asTraitTransformation()).__minus(anArray);
  23498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23499. }, function($ctx1) {$ctx1.fill(self,"-",{anArray:anArray})});
  23500. //>>excludeEnd("ctx");
  23501. }; }),
  23502. $globals.Trait);
  23503. $core.addMethod(
  23504. $core.method({
  23505. selector: "@",
  23506. protocol: "composition",
  23507. //>>excludeStart("ide", pragmas.excludeIdeData);
  23508. args: ["anArrayOfAssociations"],
  23509. source: "@ anArrayOfAssociations\x0a\x09^ self asTraitTransformation @ anArrayOfAssociations",
  23510. referencedClasses: [],
  23511. //>>excludeEnd("ide");
  23512. pragmas: [],
  23513. messageSends: ["@", "asTraitTransformation"]
  23514. }, function ($methodClass){ return function (anArrayOfAssociations){
  23515. var self=this,$self=this;
  23516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23517. return $core.withContext(function($ctx1) {
  23518. //>>excludeEnd("ctx");
  23519. return $recv($self._asTraitTransformation()).__at(anArrayOfAssociations);
  23520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23521. }, function($ctx1) {$ctx1.fill(self,"@",{anArrayOfAssociations:anArrayOfAssociations})});
  23522. //>>excludeEnd("ctx");
  23523. }; }),
  23524. $globals.Trait);
  23525. $core.addMethod(
  23526. $core.method({
  23527. selector: "asTraitComposition",
  23528. protocol: "converting",
  23529. //>>excludeStart("ide", pragmas.excludeIdeData);
  23530. args: [],
  23531. source: "asTraitComposition\x0a\x09^ self asTraitTransformation asTraitComposition",
  23532. referencedClasses: [],
  23533. //>>excludeEnd("ide");
  23534. pragmas: [],
  23535. messageSends: ["asTraitComposition", "asTraitTransformation"]
  23536. }, function ($methodClass){ return function (){
  23537. var self=this,$self=this;
  23538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23539. return $core.withContext(function($ctx1) {
  23540. //>>excludeEnd("ctx");
  23541. return $recv($self._asTraitTransformation())._asTraitComposition();
  23542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23543. }, function($ctx1) {$ctx1.fill(self,"asTraitComposition",{})});
  23544. //>>excludeEnd("ctx");
  23545. }; }),
  23546. $globals.Trait);
  23547. $core.addMethod(
  23548. $core.method({
  23549. selector: "asTraitTransformation",
  23550. protocol: "converting",
  23551. //>>excludeStart("ide", pragmas.excludeIdeData);
  23552. args: [],
  23553. source: "asTraitTransformation\x0a\x09^ TraitTransformation on: self",
  23554. referencedClasses: ["TraitTransformation"],
  23555. //>>excludeEnd("ide");
  23556. pragmas: [],
  23557. messageSends: ["on:"]
  23558. }, function ($methodClass){ return function (){
  23559. var self=this,$self=this;
  23560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23561. return $core.withContext(function($ctx1) {
  23562. //>>excludeEnd("ctx");
  23563. return $recv($globals.TraitTransformation)._on_(self);
  23564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23565. }, function($ctx1) {$ctx1.fill(self,"asTraitTransformation",{})});
  23566. //>>excludeEnd("ctx");
  23567. }; }),
  23568. $globals.Trait);
  23569. $core.addMethod(
  23570. $core.method({
  23571. selector: "basicOrganization",
  23572. protocol: "accessing",
  23573. //>>excludeStart("ide", pragmas.excludeIdeData);
  23574. args: [],
  23575. source: "basicOrganization\x0a\x09^ organization",
  23576. referencedClasses: [],
  23577. //>>excludeEnd("ide");
  23578. pragmas: [],
  23579. messageSends: []
  23580. }, function ($methodClass){ return function (){
  23581. var self=this,$self=this;
  23582. return $self.organization;
  23583. }; }),
  23584. $globals.Trait);
  23585. $core.addMethod(
  23586. $core.method({
  23587. selector: "basicOrganization:",
  23588. protocol: "accessing",
  23589. //>>excludeStart("ide", pragmas.excludeIdeData);
  23590. args: ["aClassOrganizer"],
  23591. source: "basicOrganization: aClassOrganizer\x0a\x09organization := aClassOrganizer",
  23592. referencedClasses: [],
  23593. //>>excludeEnd("ide");
  23594. pragmas: [],
  23595. messageSends: []
  23596. }, function ($methodClass){ return function (aClassOrganizer){
  23597. var self=this,$self=this;
  23598. $self.organization=aClassOrganizer;
  23599. return self;
  23600. }; }),
  23601. $globals.Trait);
  23602. $core.addMethod(
  23603. $core.method({
  23604. selector: "basicPackage:",
  23605. protocol: "accessing",
  23606. //>>excludeStart("ide", pragmas.excludeIdeData);
  23607. args: ["aPackage"],
  23608. source: "basicPackage: aPackage\x0a\x09package := aPackage",
  23609. referencedClasses: [],
  23610. //>>excludeEnd("ide");
  23611. pragmas: [],
  23612. messageSends: []
  23613. }, function ($methodClass){ return function (aPackage){
  23614. var self=this,$self=this;
  23615. $self.package=aPackage;
  23616. return self;
  23617. }; }),
  23618. $globals.Trait);
  23619. $core.addMethod(
  23620. $core.method({
  23621. selector: "classTag",
  23622. protocol: "accessing",
  23623. //>>excludeStart("ide", pragmas.excludeIdeData);
  23624. args: [],
  23625. source: "classTag\x0a\x09^ 'trait'",
  23626. referencedClasses: [],
  23627. //>>excludeEnd("ide");
  23628. pragmas: [],
  23629. messageSends: []
  23630. }, function ($methodClass){ return function (){
  23631. var self=this,$self=this;
  23632. return "trait";
  23633. }; }),
  23634. $globals.Trait);
  23635. $core.addMethod(
  23636. $core.method({
  23637. selector: "definition",
  23638. protocol: "accessing",
  23639. //>>excludeStart("ide", pragmas.excludeIdeData);
  23640. args: [],
  23641. source: "definition\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09write: 'Trait named: '; printSymbol: self name; lf;\x0a\x09\x09write: (self traitCompositionDefinition ifNotEmpty: [ :tcd | { String tab. 'uses: '. tcd. String lf }]);\x0a\x09\x09tab; write: 'package: '; print: self category ]",
  23642. referencedClasses: ["String"],
  23643. //>>excludeEnd("ide");
  23644. pragmas: [],
  23645. messageSends: ["streamContents:", "write:", "printSymbol:", "name", "lf", "ifNotEmpty:", "traitCompositionDefinition", "tab", "print:", "category"]
  23646. }, function ($methodClass){ return function (){
  23647. var self=this,$self=this;
  23648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23649. return $core.withContext(function($ctx1) {
  23650. //>>excludeEnd("ctx");
  23651. return $recv($globals.String)._streamContents_((function(stream){
  23652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23653. return $core.withContext(function($ctx2) {
  23654. //>>excludeEnd("ctx");
  23655. [$recv(stream)._write_("Trait named: ")
  23656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23657. ,$ctx2.sendIdx["write:"]=1
  23658. //>>excludeEnd("ctx");
  23659. ][0];
  23660. $recv(stream)._printSymbol_($self._name());
  23661. [$recv(stream)._lf()
  23662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23663. ,$ctx2.sendIdx["lf"]=1
  23664. //>>excludeEnd("ctx");
  23665. ][0];
  23666. [$recv(stream)._write_($recv($self._traitCompositionDefinition())._ifNotEmpty_((function(tcd){
  23667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23668. return $core.withContext(function($ctx3) {
  23669. //>>excludeEnd("ctx");
  23670. return [[$recv($globals.String)._tab()
  23671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23672. ,$ctx3.sendIdx["tab"]=1
  23673. //>>excludeEnd("ctx");
  23674. ][0],"uses: ",tcd,$recv($globals.String)._lf()];
  23675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23676. }, function($ctx3) {$ctx3.fillBlock({tcd:tcd},$ctx2,2)});
  23677. //>>excludeEnd("ctx");
  23678. })))
  23679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23680. ,$ctx2.sendIdx["write:"]=2
  23681. //>>excludeEnd("ctx");
  23682. ][0];
  23683. $recv(stream)._tab();
  23684. $recv(stream)._write_("package: ");
  23685. return $recv(stream)._print_($self._category());
  23686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23687. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  23688. //>>excludeEnd("ctx");
  23689. }));
  23690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23691. }, function($ctx1) {$ctx1.fill(self,"definition",{})});
  23692. //>>excludeEnd("ctx");
  23693. }; }),
  23694. $globals.Trait);
  23695. $core.addMethod(
  23696. $core.method({
  23697. selector: "package",
  23698. protocol: "accessing",
  23699. //>>excludeStart("ide", pragmas.excludeIdeData);
  23700. args: [],
  23701. source: "package\x0a\x09^ package",
  23702. referencedClasses: [],
  23703. //>>excludeEnd("ide");
  23704. pragmas: [],
  23705. messageSends: []
  23706. }, function ($methodClass){ return function (){
  23707. var self=this,$self=this;
  23708. return $self.package;
  23709. }; }),
  23710. $globals.Trait);
  23711. $core.addMethod(
  23712. $core.method({
  23713. selector: "theMetaClass",
  23714. protocol: "accessing",
  23715. //>>excludeStart("ide", pragmas.excludeIdeData);
  23716. args: [],
  23717. source: "theMetaClass\x0a\x09^ nil",
  23718. referencedClasses: [],
  23719. //>>excludeEnd("ide");
  23720. pragmas: [],
  23721. messageSends: []
  23722. }, function ($methodClass){ return function (){
  23723. var self=this,$self=this;
  23724. return nil;
  23725. }; }),
  23726. $globals.Trait);
  23727. $core.addMethod(
  23728. $core.method({
  23729. selector: "traitUsers",
  23730. protocol: "accessing",
  23731. //>>excludeStart("ide", pragmas.excludeIdeData);
  23732. args: [],
  23733. source: "traitUsers\x0a\x09^ traitUsers copy",
  23734. referencedClasses: [],
  23735. //>>excludeEnd("ide");
  23736. pragmas: [],
  23737. messageSends: ["copy"]
  23738. }, function ($methodClass){ return function (){
  23739. var self=this,$self=this;
  23740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23741. return $core.withContext(function($ctx1) {
  23742. //>>excludeEnd("ctx");
  23743. return $recv($self.traitUsers)._copy();
  23744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23745. }, function($ctx1) {$ctx1.fill(self,"traitUsers",{})});
  23746. //>>excludeEnd("ctx");
  23747. }; }),
  23748. $globals.Trait);
  23749. $core.addMethod(
  23750. $core.method({
  23751. selector: "named:package:",
  23752. protocol: "instance creation",
  23753. //>>excludeStart("ide", pragmas.excludeIdeData);
  23754. args: ["aString", "anotherString"],
  23755. source: "named: aString package: anotherString\x0a\x09^ ClassBuilder new addTraitNamed: aString package: anotherString",
  23756. referencedClasses: ["ClassBuilder"],
  23757. //>>excludeEnd("ide");
  23758. pragmas: [],
  23759. messageSends: ["addTraitNamed:package:", "new"]
  23760. }, function ($methodClass){ return function (aString,anotherString){
  23761. var self=this,$self=this;
  23762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23763. return $core.withContext(function($ctx1) {
  23764. //>>excludeEnd("ctx");
  23765. return $recv($recv($globals.ClassBuilder)._new())._addTraitNamed_package_(aString,anotherString);
  23766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23767. }, function($ctx1) {$ctx1.fill(self,"named:package:",{aString:aString,anotherString:anotherString})});
  23768. //>>excludeEnd("ctx");
  23769. }; }),
  23770. $globals.Trait.a$cls);
  23771. $core.addMethod(
  23772. $core.method({
  23773. selector: "named:uses:package:",
  23774. protocol: "instance creation",
  23775. //>>excludeStart("ide", pragmas.excludeIdeData);
  23776. args: ["aString", "aTraitCompositionDescription", "anotherString"],
  23777. source: "named: aString uses: aTraitCompositionDescription package: anotherString\x0a\x09| trait |\x0a\x09trait := self named: aString package: anotherString.\x0a\x09trait setTraitComposition: aTraitCompositionDescription asTraitComposition.\x0a\x09^ trait",
  23778. referencedClasses: [],
  23779. //>>excludeEnd("ide");
  23780. pragmas: [],
  23781. messageSends: ["named:package:", "setTraitComposition:", "asTraitComposition"]
  23782. }, function ($methodClass){ return function (aString,aTraitCompositionDescription,anotherString){
  23783. var self=this,$self=this;
  23784. var trait;
  23785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23786. return $core.withContext(function($ctx1) {
  23787. //>>excludeEnd("ctx");
  23788. trait=$self._named_package_(aString,anotherString);
  23789. $recv(trait)._setTraitComposition_($recv(aTraitCompositionDescription)._asTraitComposition());
  23790. return trait;
  23791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23792. }, function($ctx1) {$ctx1.fill(self,"named:uses:package:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,anotherString:anotherString,trait:trait})});
  23793. //>>excludeEnd("ctx");
  23794. }; }),
  23795. $globals.Trait.a$cls);
  23796. $core.addClass("TraitTransformation", $globals.Object, "Kernel-Classes");
  23797. $core.setSlots($globals.TraitTransformation, ["trait", "aliases", "exclusions"]);
  23798. //>>excludeStart("ide", pragmas.excludeIdeData);
  23799. $globals.TraitTransformation.comment="I am a single step in trait composition.\x0a\x0aI represent one trait including its aliases and exclusions.";
  23800. //>>excludeEnd("ide");
  23801. $core.addMethod(
  23802. $core.method({
  23803. selector: "-",
  23804. protocol: "composition",
  23805. //>>excludeStart("ide", pragmas.excludeIdeData);
  23806. args: ["anArray"],
  23807. source: "- anArray\x0a\x09^ self copy addExclusions: anArray; yourself",
  23808. referencedClasses: [],
  23809. //>>excludeEnd("ide");
  23810. pragmas: [],
  23811. messageSends: ["addExclusions:", "copy", "yourself"]
  23812. }, function ($methodClass){ return function (anArray){
  23813. var self=this,$self=this;
  23814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23815. return $core.withContext(function($ctx1) {
  23816. //>>excludeEnd("ctx");
  23817. var $1;
  23818. $1=$self._copy();
  23819. $recv($1)._addExclusions_(anArray);
  23820. return $recv($1)._yourself();
  23821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23822. }, function($ctx1) {$ctx1.fill(self,"-",{anArray:anArray})});
  23823. //>>excludeEnd("ctx");
  23824. }; }),
  23825. $globals.TraitTransformation);
  23826. $core.addMethod(
  23827. $core.method({
  23828. selector: "@",
  23829. protocol: "composition",
  23830. //>>excludeStart("ide", pragmas.excludeIdeData);
  23831. args: ["anArrayOfAssociations"],
  23832. source: "@ anArrayOfAssociations\x0a\x09^ self copy addAliases: anArrayOfAssociations; yourself",
  23833. referencedClasses: [],
  23834. //>>excludeEnd("ide");
  23835. pragmas: [],
  23836. messageSends: ["addAliases:", "copy", "yourself"]
  23837. }, function ($methodClass){ return function (anArrayOfAssociations){
  23838. var self=this,$self=this;
  23839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23840. return $core.withContext(function($ctx1) {
  23841. //>>excludeEnd("ctx");
  23842. var $1;
  23843. $1=$self._copy();
  23844. $recv($1)._addAliases_(anArrayOfAssociations);
  23845. return $recv($1)._yourself();
  23846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23847. }, function($ctx1) {$ctx1.fill(self,"@",{anArrayOfAssociations:anArrayOfAssociations})});
  23848. //>>excludeEnd("ctx");
  23849. }; }),
  23850. $globals.TraitTransformation);
  23851. $core.addMethod(
  23852. $core.method({
  23853. selector: "addAliases:",
  23854. protocol: "accessing",
  23855. //>>excludeStart("ide", pragmas.excludeIdeData);
  23856. args: ["anArrayOfAssociations"],
  23857. source: "addAliases: anArrayOfAssociations\x0a\x09anArrayOfAssociations do: [ :each |\x0a\x09\x09| key |\x0a\x09\x09key := each key.\x0a\x09\x09aliases at: key\x0a\x09\x09\x09ifPresent: [ self error: 'Cannot use same alias name twice.' ]\x0a\x09\x09\x09ifAbsent: [ aliases at: key put: each value ] ].\x0a\x09^ anArrayOfAssociations",
  23858. referencedClasses: [],
  23859. //>>excludeEnd("ide");
  23860. pragmas: [],
  23861. messageSends: ["do:", "key", "at:ifPresent:ifAbsent:", "error:", "at:put:", "value"]
  23862. }, function ($methodClass){ return function (anArrayOfAssociations){
  23863. var self=this,$self=this;
  23864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23865. return $core.withContext(function($ctx1) {
  23866. //>>excludeEnd("ctx");
  23867. $recv(anArrayOfAssociations)._do_((function(each){
  23868. var key;
  23869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23870. return $core.withContext(function($ctx2) {
  23871. //>>excludeEnd("ctx");
  23872. key=$recv(each)._key();
  23873. return $recv($self.aliases)._at_ifPresent_ifAbsent_(key,(function(){
  23874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23875. return $core.withContext(function($ctx3) {
  23876. //>>excludeEnd("ctx");
  23877. return $self._error_("Cannot use same alias name twice.");
  23878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23879. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  23880. //>>excludeEnd("ctx");
  23881. }),(function(){
  23882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23883. return $core.withContext(function($ctx3) {
  23884. //>>excludeEnd("ctx");
  23885. return $recv($self.aliases)._at_put_(key,$recv(each)._value());
  23886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23887. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  23888. //>>excludeEnd("ctx");
  23889. }));
  23890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23891. }, function($ctx2) {$ctx2.fillBlock({each:each,key:key},$ctx1,1)});
  23892. //>>excludeEnd("ctx");
  23893. }));
  23894. return anArrayOfAssociations;
  23895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23896. }, function($ctx1) {$ctx1.fill(self,"addAliases:",{anArrayOfAssociations:anArrayOfAssociations})});
  23897. //>>excludeEnd("ctx");
  23898. }; }),
  23899. $globals.TraitTransformation);
  23900. $core.addMethod(
  23901. $core.method({
  23902. selector: "addExclusions:",
  23903. protocol: "accessing",
  23904. //>>excludeStart("ide", pragmas.excludeIdeData);
  23905. args: ["anArray"],
  23906. source: "addExclusions: anArray\x0a\x09exclusions addAll: anArray.\x0a\x09^ anArray",
  23907. referencedClasses: [],
  23908. //>>excludeEnd("ide");
  23909. pragmas: [],
  23910. messageSends: ["addAll:"]
  23911. }, function ($methodClass){ return function (anArray){
  23912. var self=this,$self=this;
  23913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23914. return $core.withContext(function($ctx1) {
  23915. //>>excludeEnd("ctx");
  23916. $recv($self.exclusions)._addAll_(anArray);
  23917. return anArray;
  23918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23919. }, function($ctx1) {$ctx1.fill(self,"addExclusions:",{anArray:anArray})});
  23920. //>>excludeEnd("ctx");
  23921. }; }),
  23922. $globals.TraitTransformation);
  23923. $core.addMethod(
  23924. $core.method({
  23925. selector: "aliases",
  23926. protocol: "accessing",
  23927. //>>excludeStart("ide", pragmas.excludeIdeData);
  23928. args: [],
  23929. source: "aliases\x0a\x09^ aliases",
  23930. referencedClasses: [],
  23931. //>>excludeEnd("ide");
  23932. pragmas: [],
  23933. messageSends: []
  23934. }, function ($methodClass){ return function (){
  23935. var self=this,$self=this;
  23936. return $self.aliases;
  23937. }; }),
  23938. $globals.TraitTransformation);
  23939. $core.addMethod(
  23940. $core.method({
  23941. selector: "asJavaScriptObject",
  23942. protocol: "converting",
  23943. //>>excludeStart("ide", pragmas.excludeIdeData);
  23944. args: [],
  23945. source: "asJavaScriptObject\x0a\x09^ #{\x0a\x09\x09'trait' -> self trait.\x0a\x09\x09'aliases' -> self aliases.\x0a\x09\x09'exclusions' -> self exclusions asArray sorted }",
  23946. referencedClasses: [],
  23947. //>>excludeEnd("ide");
  23948. pragmas: [],
  23949. messageSends: ["trait", "aliases", "sorted", "asArray", "exclusions"]
  23950. }, function ($methodClass){ return function (){
  23951. var self=this,$self=this;
  23952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23953. return $core.withContext(function($ctx1) {
  23954. //>>excludeEnd("ctx");
  23955. return $globals.HashedCollection._newFromPairs_(["trait",$self._trait(),"aliases",$self._aliases(),"exclusions",$recv($recv($self._exclusions())._asArray())._sorted()]);
  23956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23957. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{})});
  23958. //>>excludeEnd("ctx");
  23959. }; }),
  23960. $globals.TraitTransformation);
  23961. $core.addMethod(
  23962. $core.method({
  23963. selector: "asJavaScriptSource",
  23964. protocol: "converting",
  23965. //>>excludeStart("ide", pragmas.excludeIdeData);
  23966. args: [],
  23967. source: "asJavaScriptSource\x0a\x09^ String streamContents: [ :str | str write: {\x0a\x09\x09'{trait: '. self trait asJavaScriptSource.\x0a\x09\x09self aliases ifNotEmpty: [ :al |\x0a\x09\x09\x09{', aliases: '. al asJSONString} ].\x0a\x09\x09self exclusions ifNotEmpty: [ :ex |\x0a\x09\x09\x09{', exclusions: '. ex asArray sorted asJavaScriptSource} ].\x0a\x09\x09'}' } ]",
  23968. referencedClasses: ["String"],
  23969. //>>excludeEnd("ide");
  23970. pragmas: [],
  23971. messageSends: ["streamContents:", "write:", "asJavaScriptSource", "trait", "ifNotEmpty:", "aliases", "asJSONString", "exclusions", "sorted", "asArray"]
  23972. }, function ($methodClass){ return function (){
  23973. var self=this,$self=this;
  23974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23975. return $core.withContext(function($ctx1) {
  23976. //>>excludeEnd("ctx");
  23977. return $recv($globals.String)._streamContents_((function(str){
  23978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23979. return $core.withContext(function($ctx2) {
  23980. //>>excludeEnd("ctx");
  23981. return $recv(str)._write_(["{trait: ",[$recv($self._trait())._asJavaScriptSource()
  23982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23983. ,$ctx2.sendIdx["asJavaScriptSource"]=1
  23984. //>>excludeEnd("ctx");
  23985. ][0],[$recv($self._aliases())._ifNotEmpty_((function(al){
  23986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23987. return $core.withContext(function($ctx3) {
  23988. //>>excludeEnd("ctx");
  23989. return [", aliases: ",$recv(al)._asJSONString()];
  23990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23991. }, function($ctx3) {$ctx3.fillBlock({al:al},$ctx2,2)});
  23992. //>>excludeEnd("ctx");
  23993. }))
  23994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23995. ,$ctx2.sendIdx["ifNotEmpty:"]=1
  23996. //>>excludeEnd("ctx");
  23997. ][0],$recv($self._exclusions())._ifNotEmpty_((function(ex){
  23998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23999. return $core.withContext(function($ctx3) {
  24000. //>>excludeEnd("ctx");
  24001. return [", exclusions: ",$recv($recv($recv(ex)._asArray())._sorted())._asJavaScriptSource()];
  24002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24003. }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)});
  24004. //>>excludeEnd("ctx");
  24005. })),"}"]);
  24006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24007. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  24008. //>>excludeEnd("ctx");
  24009. }));
  24010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24011. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  24012. //>>excludeEnd("ctx");
  24013. }; }),
  24014. $globals.TraitTransformation);
  24015. $core.addMethod(
  24016. $core.method({
  24017. selector: "asTraitComposition",
  24018. protocol: "converting",
  24019. //>>excludeStart("ide", pragmas.excludeIdeData);
  24020. args: [],
  24021. source: "asTraitComposition\x0a\x09^ { self }",
  24022. referencedClasses: [],
  24023. //>>excludeEnd("ide");
  24024. pragmas: [],
  24025. messageSends: []
  24026. }, function ($methodClass){ return function (){
  24027. var self=this,$self=this;
  24028. return [self];
  24029. }; }),
  24030. $globals.TraitTransformation);
  24031. $core.addMethod(
  24032. $core.method({
  24033. selector: "asTraitTransformation",
  24034. protocol: "converting",
  24035. //>>excludeStart("ide", pragmas.excludeIdeData);
  24036. args: [],
  24037. source: "asTraitTransformation\x0a\x09^ self",
  24038. referencedClasses: [],
  24039. //>>excludeEnd("ide");
  24040. pragmas: [],
  24041. messageSends: []
  24042. }, function ($methodClass){ return function (){
  24043. var self=this,$self=this;
  24044. return self;
  24045. }; }),
  24046. $globals.TraitTransformation);
  24047. $core.addMethod(
  24048. $core.method({
  24049. selector: "definition",
  24050. protocol: "accessing",
  24051. //>>excludeStart("ide", pragmas.excludeIdeData);
  24052. args: [],
  24053. source: "definition\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09str print: self trait.\x0a\x09\x09self aliases ifNotEmpty: [ :al |\x0a\x09\x09\x09str write: ' @ {'.\x0a\x09\x09\x09al associations\x0a\x09\x09\x09\x09do: [ :each | str printSymbol: each key; write: ' -> '; printSymbol: each value ]\x0a\x09\x09\x09\x09separatedBy: [ str write: '. ' ].\x0a\x09\x09\x09str write: '}' ].\x0a\x09\x09self exclusions ifNotEmpty: [ :ex |\x0a\x09\x09\x09str write: ' - #('.\x0a\x09\x09\x09ex asArray sorted \x0a\x09\x09\x09\x09do: [ :each | str write: each symbolPrintString allButFirst ]\x0a\x09\x09\x09\x09separatedBy: [ str space ].\x0a\x09\x09\x09str write: ')' ] ]",
  24054. referencedClasses: ["String"],
  24055. //>>excludeEnd("ide");
  24056. pragmas: [],
  24057. messageSends: ["streamContents:", "print:", "trait", "ifNotEmpty:", "aliases", "write:", "do:separatedBy:", "associations", "printSymbol:", "key", "value", "exclusions", "sorted", "asArray", "allButFirst", "symbolPrintString", "space"]
  24058. }, function ($methodClass){ return function (){
  24059. var self=this,$self=this;
  24060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24061. return $core.withContext(function($ctx1) {
  24062. //>>excludeEnd("ctx");
  24063. return $recv($globals.String)._streamContents_((function(str){
  24064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24065. return $core.withContext(function($ctx2) {
  24066. //>>excludeEnd("ctx");
  24067. $recv(str)._print_($self._trait());
  24068. [$recv($self._aliases())._ifNotEmpty_((function(al){
  24069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24070. return $core.withContext(function($ctx3) {
  24071. //>>excludeEnd("ctx");
  24072. [$recv(str)._write_(" @ {")
  24073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24074. ,$ctx3.sendIdx["write:"]=1
  24075. //>>excludeEnd("ctx");
  24076. ][0];
  24077. [$recv($recv(al)._associations())._do_separatedBy_((function(each){
  24078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24079. return $core.withContext(function($ctx4) {
  24080. //>>excludeEnd("ctx");
  24081. [$recv(str)._printSymbol_($recv(each)._key())
  24082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24083. ,$ctx4.sendIdx["printSymbol:"]=1
  24084. //>>excludeEnd("ctx");
  24085. ][0];
  24086. [$recv(str)._write_(" -> ")
  24087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24088. ,$ctx4.sendIdx["write:"]=2
  24089. //>>excludeEnd("ctx");
  24090. ][0];
  24091. return $recv(str)._printSymbol_($recv(each)._value());
  24092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24093. }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)});
  24094. //>>excludeEnd("ctx");
  24095. }),(function(){
  24096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24097. return $core.withContext(function($ctx4) {
  24098. //>>excludeEnd("ctx");
  24099. return [$recv(str)._write_(". ")
  24100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24101. ,$ctx4.sendIdx["write:"]=3
  24102. //>>excludeEnd("ctx");
  24103. ][0];
  24104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24105. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)});
  24106. //>>excludeEnd("ctx");
  24107. }))
  24108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24109. ,$ctx3.sendIdx["do:separatedBy:"]=1
  24110. //>>excludeEnd("ctx");
  24111. ][0];
  24112. return [$recv(str)._write_("}")
  24113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24114. ,$ctx3.sendIdx["write:"]=4
  24115. //>>excludeEnd("ctx");
  24116. ][0];
  24117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24118. }, function($ctx3) {$ctx3.fillBlock({al:al},$ctx2,2)});
  24119. //>>excludeEnd("ctx");
  24120. }))
  24121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24122. ,$ctx2.sendIdx["ifNotEmpty:"]=1
  24123. //>>excludeEnd("ctx");
  24124. ][0];
  24125. return $recv($self._exclusions())._ifNotEmpty_((function(ex){
  24126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24127. return $core.withContext(function($ctx3) {
  24128. //>>excludeEnd("ctx");
  24129. [$recv(str)._write_(" - #(")
  24130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24131. ,$ctx3.sendIdx["write:"]=5
  24132. //>>excludeEnd("ctx");
  24133. ][0];
  24134. $recv($recv($recv(ex)._asArray())._sorted())._do_separatedBy_((function(each){
  24135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24136. return $core.withContext(function($ctx4) {
  24137. //>>excludeEnd("ctx");
  24138. return [$recv(str)._write_($recv($recv(each)._symbolPrintString())._allButFirst())
  24139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24140. ,$ctx4.sendIdx["write:"]=6
  24141. //>>excludeEnd("ctx");
  24142. ][0];
  24143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24144. }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,6)});
  24145. //>>excludeEnd("ctx");
  24146. }),(function(){
  24147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24148. return $core.withContext(function($ctx4) {
  24149. //>>excludeEnd("ctx");
  24150. return $recv(str)._space();
  24151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24152. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,7)});
  24153. //>>excludeEnd("ctx");
  24154. }));
  24155. return $recv(str)._write_(")");
  24156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24157. }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,5)});
  24158. //>>excludeEnd("ctx");
  24159. }));
  24160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24161. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  24162. //>>excludeEnd("ctx");
  24163. }));
  24164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24165. }, function($ctx1) {$ctx1.fill(self,"definition",{})});
  24166. //>>excludeEnd("ctx");
  24167. }; }),
  24168. $globals.TraitTransformation);
  24169. $core.addMethod(
  24170. $core.method({
  24171. selector: "exclusions",
  24172. protocol: "accessing",
  24173. //>>excludeStart("ide", pragmas.excludeIdeData);
  24174. args: [],
  24175. source: "exclusions\x0a\x09^ exclusions",
  24176. referencedClasses: [],
  24177. //>>excludeEnd("ide");
  24178. pragmas: [],
  24179. messageSends: []
  24180. }, function ($methodClass){ return function (){
  24181. var self=this,$self=this;
  24182. return $self.exclusions;
  24183. }; }),
  24184. $globals.TraitTransformation);
  24185. $core.addMethod(
  24186. $core.method({
  24187. selector: "initialize",
  24188. protocol: "initialization",
  24189. //>>excludeStart("ide", pragmas.excludeIdeData);
  24190. args: [],
  24191. source: "initialize\x0a\x09super initialize.\x0a\x0a\x09aliases := #{}.\x0a\x09exclusions := Set new.\x0a\x09trait := nil",
  24192. referencedClasses: ["Set"],
  24193. //>>excludeEnd("ide");
  24194. pragmas: [],
  24195. messageSends: ["initialize", "new"]
  24196. }, function ($methodClass){ return function (){
  24197. var self=this,$self=this;
  24198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24199. return $core.withContext(function($ctx1) {
  24200. //>>excludeEnd("ctx");
  24201. [(
  24202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24203. $ctx1.supercall = true,
  24204. //>>excludeEnd("ctx");
  24205. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  24206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24207. ,$ctx1.supercall = false
  24208. //>>excludeEnd("ctx");
  24209. ][0];
  24210. $self.aliases=$globals.HashedCollection._newFromPairs_([]);
  24211. $self.exclusions=$recv($globals.Set)._new();
  24212. $self.trait=nil;
  24213. return self;
  24214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24215. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  24216. //>>excludeEnd("ctx");
  24217. }; }),
  24218. $globals.TraitTransformation);
  24219. $core.addMethod(
  24220. $core.method({
  24221. selector: "postCopy",
  24222. protocol: "copying",
  24223. //>>excludeStart("ide", pragmas.excludeIdeData);
  24224. args: [],
  24225. source: "postCopy\x0a\x09aliases := aliases copy.\x0a\x09exclusions := exclusions copy",
  24226. referencedClasses: [],
  24227. //>>excludeEnd("ide");
  24228. pragmas: [],
  24229. messageSends: ["copy"]
  24230. }, function ($methodClass){ return function (){
  24231. var self=this,$self=this;
  24232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24233. return $core.withContext(function($ctx1) {
  24234. //>>excludeEnd("ctx");
  24235. $self.aliases=[$recv($self.aliases)._copy()
  24236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24237. ,$ctx1.sendIdx["copy"]=1
  24238. //>>excludeEnd("ctx");
  24239. ][0];
  24240. $self.exclusions=$recv($self.exclusions)._copy();
  24241. return self;
  24242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24243. }, function($ctx1) {$ctx1.fill(self,"postCopy",{})});
  24244. //>>excludeEnd("ctx");
  24245. }; }),
  24246. $globals.TraitTransformation);
  24247. $core.addMethod(
  24248. $core.method({
  24249. selector: "trait",
  24250. protocol: "accessing",
  24251. //>>excludeStart("ide", pragmas.excludeIdeData);
  24252. args: [],
  24253. source: "trait\x0a\x09^ trait",
  24254. referencedClasses: [],
  24255. //>>excludeEnd("ide");
  24256. pragmas: [],
  24257. messageSends: []
  24258. }, function ($methodClass){ return function (){
  24259. var self=this,$self=this;
  24260. return $self.trait;
  24261. }; }),
  24262. $globals.TraitTransformation);
  24263. $core.addMethod(
  24264. $core.method({
  24265. selector: "trait:",
  24266. protocol: "accessing",
  24267. //>>excludeStart("ide", pragmas.excludeIdeData);
  24268. args: ["anObject"],
  24269. source: "trait: anObject\x0a\x09trait := anObject",
  24270. referencedClasses: [],
  24271. //>>excludeEnd("ide");
  24272. pragmas: [],
  24273. messageSends: []
  24274. }, function ($methodClass){ return function (anObject){
  24275. var self=this,$self=this;
  24276. $self.trait=anObject;
  24277. return self;
  24278. }; }),
  24279. $globals.TraitTransformation);
  24280. $core.addMethod(
  24281. $core.method({
  24282. selector: "fromJSON:",
  24283. protocol: "instance creation",
  24284. //>>excludeStart("ide", pragmas.excludeIdeData);
  24285. args: ["aJSObject"],
  24286. source: "fromJSON: aJSObject\x0a\x09^ super new\x0a\x09\x09trait: (aJSObject at: #trait);\x0a\x09\x09addAliases: (Smalltalk readJSObject: (aJSObject at: #aliases ifAbsent: [#{}])) associations;\x0a\x09\x09addExclusions: (aJSObject at: #exclusions ifAbsent: [#()]);\x0a\x09\x09yourself",
  24287. referencedClasses: ["Smalltalk"],
  24288. //>>excludeEnd("ide");
  24289. pragmas: [],
  24290. messageSends: ["trait:", "new", "at:", "addAliases:", "associations", "readJSObject:", "at:ifAbsent:", "addExclusions:", "yourself"]
  24291. }, function ($methodClass){ return function (aJSObject){
  24292. var self=this,$self=this;
  24293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24294. return $core.withContext(function($ctx1) {
  24295. //>>excludeEnd("ctx");
  24296. var $1;
  24297. $1=[(
  24298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24299. $ctx1.supercall = true,
  24300. //>>excludeEnd("ctx");
  24301. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
  24302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24303. ,$ctx1.supercall = false
  24304. //>>excludeEnd("ctx");
  24305. ][0];
  24306. $recv($1)._trait_($recv(aJSObject)._at_("trait"));
  24307. $recv($1)._addAliases_($recv($recv($globals.Smalltalk)._readJSObject_([$recv(aJSObject)._at_ifAbsent_("aliases",(function(){
  24308. return $globals.HashedCollection._newFromPairs_([]);
  24309. }))
  24310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24311. ,$ctx1.sendIdx["at:ifAbsent:"]=1
  24312. //>>excludeEnd("ctx");
  24313. ][0]))._associations());
  24314. $recv($1)._addExclusions_($recv(aJSObject)._at_ifAbsent_("exclusions",(function(){
  24315. return [];
  24316. })));
  24317. return $recv($1)._yourself();
  24318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24319. }, function($ctx1) {$ctx1.fill(self,"fromJSON:",{aJSObject:aJSObject})});
  24320. //>>excludeEnd("ctx");
  24321. }; }),
  24322. $globals.TraitTransformation.a$cls);
  24323. $core.addMethod(
  24324. $core.method({
  24325. selector: "on:",
  24326. protocol: "instance creation",
  24327. //>>excludeStart("ide", pragmas.excludeIdeData);
  24328. args: ["aTrait"],
  24329. source: "on: aTrait\x0a\x09^ super new trait: aTrait; yourself",
  24330. referencedClasses: [],
  24331. //>>excludeEnd("ide");
  24332. pragmas: [],
  24333. messageSends: ["trait:", "new", "yourself"]
  24334. }, function ($methodClass){ return function (aTrait){
  24335. var self=this,$self=this;
  24336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24337. return $core.withContext(function($ctx1) {
  24338. //>>excludeEnd("ctx");
  24339. var $1;
  24340. $1=[(
  24341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24342. $ctx1.supercall = true,
  24343. //>>excludeEnd("ctx");
  24344. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
  24345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24346. ,$ctx1.supercall = false
  24347. //>>excludeEnd("ctx");
  24348. ][0];
  24349. $recv($1)._trait_(aTrait);
  24350. return $recv($1)._yourself();
  24351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24352. }, function($ctx1) {$ctx1.fill(self,"on:",{aTrait:aTrait})});
  24353. //>>excludeEnd("ctx");
  24354. }; }),
  24355. $globals.TraitTransformation.a$cls);
  24356. $core.setTraitComposition([{trait: $globals.TBehaviorDefaults}, {trait: $globals.TBehaviorProvider}], $globals.Behavior);
  24357. $core.setTraitComposition([{trait: $globals.TMasterBehavior}, {trait: $globals.TSubclassable}], $globals.Class);
  24358. $core.setTraitComposition([{trait: $globals.TBehaviorDefaults}, {trait: $globals.TBehaviorProvider}, {trait: $globals.TMasterBehavior}], $globals.Trait);
  24359. $core.addMethod(
  24360. $core.method({
  24361. selector: "asTraitComposition",
  24362. protocol: "*Kernel-Classes",
  24363. //>>excludeStart("ide", pragmas.excludeIdeData);
  24364. args: [],
  24365. source: "asTraitComposition\x0a\x09\x22not implemented yet, noop atm\x22\x0a\x09^ self collect: [ :each | each asTraitTransformation ]",
  24366. referencedClasses: [],
  24367. //>>excludeEnd("ide");
  24368. pragmas: [],
  24369. messageSends: ["collect:", "asTraitTransformation"]
  24370. }, function ($methodClass){ return function (){
  24371. var self=this,$self=this;
  24372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24373. return $core.withContext(function($ctx1) {
  24374. //>>excludeEnd("ctx");
  24375. return $self._collect_((function(each){
  24376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24377. return $core.withContext(function($ctx2) {
  24378. //>>excludeEnd("ctx");
  24379. return $recv(each)._asTraitTransformation();
  24380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24381. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  24382. //>>excludeEnd("ctx");
  24383. }));
  24384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24385. }, function($ctx1) {$ctx1.fill(self,"asTraitComposition",{})});
  24386. //>>excludeEnd("ctx");
  24387. }; }),
  24388. $globals.Array);
  24389. $core.addMethod(
  24390. $core.method({
  24391. selector: "instanceVariablesStringAsSlotList",
  24392. protocol: "*Kernel-Classes",
  24393. //>>excludeStart("ide", pragmas.excludeIdeData);
  24394. args: [],
  24395. source: "instanceVariablesStringAsSlotList\x0a\x09^ (self tokenize: ' ') reject: [ :each | each isEmpty ]",
  24396. referencedClasses: [],
  24397. //>>excludeEnd("ide");
  24398. pragmas: [],
  24399. messageSends: ["reject:", "tokenize:", "isEmpty"]
  24400. }, function ($methodClass){ return function (){
  24401. var self=this,$self=this;
  24402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24403. return $core.withContext(function($ctx1) {
  24404. //>>excludeEnd("ctx");
  24405. return $recv($self._tokenize_(" "))._reject_((function(each){
  24406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24407. return $core.withContext(function($ctx2) {
  24408. //>>excludeEnd("ctx");
  24409. return $recv(each)._isEmpty();
  24410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24411. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  24412. //>>excludeEnd("ctx");
  24413. }));
  24414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24415. }, function($ctx1) {$ctx1.fill(self,"instanceVariablesStringAsSlotList",{})});
  24416. //>>excludeEnd("ctx");
  24417. }; }),
  24418. $globals.String);
  24419. });
  24420. define('amber/core/Kernel-Methods',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  24421. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  24422. var $pkg = $core.addPackage("Kernel-Methods");
  24423. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  24424. $core.addClass("BlockClosure", $globals.Object, "Kernel-Methods");
  24425. $core.setSlots($globals.BlockClosure, ["prototype", "length"]);
  24426. //>>excludeStart("ide", pragmas.excludeIdeData);
  24427. $globals.BlockClosure.comment="I represent a lexical closure.\x0aI am is directly mapped to JavaScript Function.\x0a\x0a## API\x0a\x0a1. Evaluation\x0a\x0a My instances get evaluated with the `#value*` methods in the 'evaluating' protocol.\x0a\x0a Example: ` [ :x | x + 1 ] value: 3 \x22Answers 4\x22 `\x0a\x0a2. Control structures\x0a\x0a Blocks are used (together with `Boolean`) for control structures (methods in the `controlling` protocol).\x0a\x0a Example: `aBlock whileTrue: [ ... ]`\x0a\x0a3. Error handling\x0a\x0a I provide the `#on:do:` method for handling exceptions.\x0a\x0a Example: ` aBlock on: MessageNotUnderstood do: [ :ex | ... ] `";
  24428. //>>excludeEnd("ide");
  24429. $core.addMethod(
  24430. $core.method({
  24431. selector: "applyTo:arguments:",
  24432. protocol: "evaluating",
  24433. //>>excludeStart("ide", pragmas.excludeIdeData);
  24434. args: ["anObject", "aCollection"],
  24435. source: "applyTo: anObject arguments: aCollection\x0a\x09<inlineJS: 'return self.apply(anObject, aCollection)'>",
  24436. referencedClasses: [],
  24437. //>>excludeEnd("ide");
  24438. pragmas: [["inlineJS:", ["return self.apply(anObject, aCollection)"]]],
  24439. messageSends: []
  24440. }, function ($methodClass){ return function (anObject,aCollection){
  24441. var self=this,$self=this;
  24442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24443. return $core.withContext(function($ctx1) {
  24444. //>>excludeEnd("ctx");
  24445. return self.apply(anObject, aCollection);
  24446. return self;
  24447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24448. }, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection})});
  24449. //>>excludeEnd("ctx");
  24450. }; }),
  24451. $globals.BlockClosure);
  24452. $core.addMethod(
  24453. $core.method({
  24454. selector: "asCompiledMethod:",
  24455. protocol: "converting",
  24456. //>>excludeStart("ide", pragmas.excludeIdeData);
  24457. args: ["aString"],
  24458. source: "asCompiledMethod: aString\x0a\x09<inlineJS: 'return $core.method({selector:aString, fn:self});'>",
  24459. referencedClasses: [],
  24460. //>>excludeEnd("ide");
  24461. pragmas: [["inlineJS:", ["return $core.method({selector:aString, fn:self});"]]],
  24462. messageSends: []
  24463. }, function ($methodClass){ return function (aString){
  24464. var self=this,$self=this;
  24465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24466. return $core.withContext(function($ctx1) {
  24467. //>>excludeEnd("ctx");
  24468. return $core.method({selector:aString, fn:self});;
  24469. return self;
  24470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24471. }, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString})});
  24472. //>>excludeEnd("ctx");
  24473. }; }),
  24474. $globals.BlockClosure);
  24475. $core.addMethod(
  24476. $core.method({
  24477. selector: "asJavaScriptObject",
  24478. protocol: "converting",
  24479. //>>excludeStart("ide", pragmas.excludeIdeData);
  24480. args: [],
  24481. source: "asJavaScriptObject\x0a\x09^ self",
  24482. referencedClasses: [],
  24483. //>>excludeEnd("ide");
  24484. pragmas: [],
  24485. messageSends: []
  24486. }, function ($methodClass){ return function (){
  24487. var self=this,$self=this;
  24488. return self;
  24489. }; }),
  24490. $globals.BlockClosure);
  24491. $core.addMethod(
  24492. $core.method({
  24493. selector: "asJavaScriptSource",
  24494. protocol: "converting",
  24495. //>>excludeStart("ide", pragmas.excludeIdeData);
  24496. args: [],
  24497. source: "asJavaScriptSource\x0a\x09<inlineJS: 'return $self.toString();'>",
  24498. referencedClasses: [],
  24499. //>>excludeEnd("ide");
  24500. pragmas: [["inlineJS:", ["return $self.toString();"]]],
  24501. messageSends: []
  24502. }, function ($methodClass){ return function (){
  24503. var self=this,$self=this;
  24504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24505. return $core.withContext(function($ctx1) {
  24506. //>>excludeEnd("ctx");
  24507. return $self.toString();;
  24508. return self;
  24509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24510. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
  24511. //>>excludeEnd("ctx");
  24512. }; }),
  24513. $globals.BlockClosure);
  24514. $core.addMethod(
  24515. $core.method({
  24516. selector: "compiledSource",
  24517. protocol: "accessing",
  24518. //>>excludeStart("ide", pragmas.excludeIdeData);
  24519. args: [],
  24520. source: "compiledSource\x0a\x09<inlineJS: 'return self.toString()'>",
  24521. referencedClasses: [],
  24522. //>>excludeEnd("ide");
  24523. pragmas: [["inlineJS:", ["return self.toString()"]]],
  24524. messageSends: []
  24525. }, function ($methodClass){ return function (){
  24526. var self=this,$self=this;
  24527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24528. return $core.withContext(function($ctx1) {
  24529. //>>excludeEnd("ctx");
  24530. return self.toString();
  24531. return self;
  24532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24533. }, function($ctx1) {$ctx1.fill(self,"compiledSource",{})});
  24534. //>>excludeEnd("ctx");
  24535. }; }),
  24536. $globals.BlockClosure);
  24537. $core.addMethod(
  24538. $core.method({
  24539. selector: "currySelf",
  24540. protocol: "converting",
  24541. //>>excludeStart("ide", pragmas.excludeIdeData);
  24542. args: [],
  24543. source: "currySelf\x0a\x09\x22Transforms [ :selfarg :x :y | stcode ] block\x0a\x09which represents JS function (selfarg, x, y, ...) {jscode}\x0a\x09into function (x, y, ...) {jscode} that takes selfarg from 'this'.\x0a\x09IOW, it is usable as JS method and first arg takes the receiver.\x22\x0a\x09\x0a\x09<inlineJS: '\x0a\x09\x09return function () {\x0a\x09\x09\x09var args = [ this ];\x0a\x09\x09\x09args.push.apply(args, arguments);\x0a\x09\x09\x09return self.apply(null, args);\x0a\x09\x09}\x0a\x09'>",
  24544. referencedClasses: [],
  24545. //>>excludeEnd("ide");
  24546. pragmas: [["inlineJS:", ["\x0a\x09\x09return function () {\x0a\x09\x09\x09var args = [ this ];\x0a\x09\x09\x09args.push.apply(args, arguments);\x0a\x09\x09\x09return self.apply(null, args);\x0a\x09\x09}\x0a\x09"]]],
  24547. messageSends: []
  24548. }, function ($methodClass){ return function (){
  24549. var self=this,$self=this;
  24550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24551. return $core.withContext(function($ctx1) {
  24552. //>>excludeEnd("ctx");
  24553. return function () {
  24554. var args = [ this ];
  24555. args.push.apply(args, arguments);
  24556. return self.apply(null, args);
  24557. }
  24558. ;
  24559. return self;
  24560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24561. }, function($ctx1) {$ctx1.fill(self,"currySelf",{})});
  24562. //>>excludeEnd("ctx");
  24563. }; }),
  24564. $globals.BlockClosure);
  24565. $core.addMethod(
  24566. $core.method({
  24567. selector: "ensure:",
  24568. protocol: "evaluating",
  24569. //>>excludeStart("ide", pragmas.excludeIdeData);
  24570. args: ["aBlock"],
  24571. source: "ensure: aBlock\x0a\x09<inlineJS: 'try{return $self._value()}finally{aBlock._value()}'>",
  24572. referencedClasses: [],
  24573. //>>excludeEnd("ide");
  24574. pragmas: [["inlineJS:", ["try{return $self._value()}finally{aBlock._value()}"]]],
  24575. messageSends: []
  24576. }, function ($methodClass){ return function (aBlock){
  24577. var self=this,$self=this;
  24578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24579. return $core.withContext(function($ctx1) {
  24580. //>>excludeEnd("ctx");
  24581. try{return $self._value()}finally{aBlock._value()};
  24582. return self;
  24583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24584. }, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock})});
  24585. //>>excludeEnd("ctx");
  24586. }; }),
  24587. $globals.BlockClosure);
  24588. $core.addMethod(
  24589. $core.method({
  24590. selector: "fork",
  24591. protocol: "timeout/interval",
  24592. //>>excludeStart("ide", pragmas.excludeIdeData);
  24593. args: [],
  24594. source: "fork\x0a\x09ForkPool default fork: self",
  24595. referencedClasses: ["ForkPool"],
  24596. //>>excludeEnd("ide");
  24597. pragmas: [],
  24598. messageSends: ["fork:", "default"]
  24599. }, function ($methodClass){ return function (){
  24600. var self=this,$self=this;
  24601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24602. return $core.withContext(function($ctx1) {
  24603. //>>excludeEnd("ctx");
  24604. $recv($recv($globals.ForkPool)._default())._fork_(self);
  24605. return self;
  24606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24607. }, function($ctx1) {$ctx1.fill(self,"fork",{})});
  24608. //>>excludeEnd("ctx");
  24609. }; }),
  24610. $globals.BlockClosure);
  24611. $core.addMethod(
  24612. $core.method({
  24613. selector: "new",
  24614. protocol: "evaluating",
  24615. //>>excludeStart("ide", pragmas.excludeIdeData);
  24616. args: [],
  24617. source: "new\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<inlineJS: 'return new self()'>",
  24618. referencedClasses: [],
  24619. //>>excludeEnd("ide");
  24620. pragmas: [["inlineJS:", ["return new self()"]]],
  24621. messageSends: []
  24622. }, function ($methodClass){ return function (){
  24623. var self=this,$self=this;
  24624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24625. return $core.withContext(function($ctx1) {
  24626. //>>excludeEnd("ctx");
  24627. return new self();
  24628. return self;
  24629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24630. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  24631. //>>excludeEnd("ctx");
  24632. }; }),
  24633. $globals.BlockClosure);
  24634. $core.addMethod(
  24635. $core.method({
  24636. selector: "newValue:",
  24637. protocol: "evaluating",
  24638. //>>excludeStart("ide", pragmas.excludeIdeData);
  24639. args: ["anObject"],
  24640. source: "newValue: anObject\x0a\x09^ self newWithValues: { anObject }",
  24641. referencedClasses: [],
  24642. //>>excludeEnd("ide");
  24643. pragmas: [],
  24644. messageSends: ["newWithValues:"]
  24645. }, function ($methodClass){ return function (anObject){
  24646. var self=this,$self=this;
  24647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24648. return $core.withContext(function($ctx1) {
  24649. //>>excludeEnd("ctx");
  24650. return $self._newWithValues_([anObject]);
  24651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24652. }, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject})});
  24653. //>>excludeEnd("ctx");
  24654. }; }),
  24655. $globals.BlockClosure);
  24656. $core.addMethod(
  24657. $core.method({
  24658. selector: "newValue:value:",
  24659. protocol: "evaluating",
  24660. //>>excludeStart("ide", pragmas.excludeIdeData);
  24661. args: ["anObject", "anObject2"],
  24662. source: "newValue: anObject value: anObject2\x0a\x09^ self newWithValues: { anObject. anObject2 }.",
  24663. referencedClasses: [],
  24664. //>>excludeEnd("ide");
  24665. pragmas: [],
  24666. messageSends: ["newWithValues:"]
  24667. }, function ($methodClass){ return function (anObject,anObject2){
  24668. var self=this,$self=this;
  24669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24670. return $core.withContext(function($ctx1) {
  24671. //>>excludeEnd("ctx");
  24672. return $self._newWithValues_([anObject,anObject2]);
  24673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24674. }, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2})});
  24675. //>>excludeEnd("ctx");
  24676. }; }),
  24677. $globals.BlockClosure);
  24678. $core.addMethod(
  24679. $core.method({
  24680. selector: "newValue:value:value:",
  24681. protocol: "evaluating",
  24682. //>>excludeStart("ide", pragmas.excludeIdeData);
  24683. args: ["anObject", "anObject2", "anObject3"],
  24684. source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09^ self newWithValues: { anObject. anObject2. anObject3 }.",
  24685. referencedClasses: [],
  24686. //>>excludeEnd("ide");
  24687. pragmas: [],
  24688. messageSends: ["newWithValues:"]
  24689. }, function ($methodClass){ return function (anObject,anObject2,anObject3){
  24690. var self=this,$self=this;
  24691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24692. return $core.withContext(function($ctx1) {
  24693. //>>excludeEnd("ctx");
  24694. return $self._newWithValues_([anObject,anObject2,anObject3]);
  24695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24696. }, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
  24697. //>>excludeEnd("ctx");
  24698. }; }),
  24699. $globals.BlockClosure);
  24700. $core.addMethod(
  24701. $core.method({
  24702. selector: "newWithValues:",
  24703. protocol: "evaluating",
  24704. //>>excludeStart("ide", pragmas.excludeIdeData);
  24705. args: ["aCollection"],
  24706. source: "newWithValues: aCollection\x0a\x09\x22Simulates JS new operator by combination of Object.create and .apply\x22\x0a\x09<inlineJS: '\x0a\x09\x09var object = Object.create(self.prototype);\x0a\x09\x09var result = self.apply(object, aCollection);\x0a\x09\x09return typeof result === \x22object\x22 ? result : object;\x0a\x09'>",
  24707. referencedClasses: [],
  24708. //>>excludeEnd("ide");
  24709. pragmas: [["inlineJS:", ["\x0a\x09\x09var object = Object.create(self.prototype);\x0a\x09\x09var result = self.apply(object, aCollection);\x0a\x09\x09return typeof result === \x22object\x22 ? result : object;\x0a\x09"]]],
  24710. messageSends: []
  24711. }, function ($methodClass){ return function (aCollection){
  24712. var self=this,$self=this;
  24713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24714. return $core.withContext(function($ctx1) {
  24715. //>>excludeEnd("ctx");
  24716. var object = Object.create(self.prototype);
  24717. var result = self.apply(object, aCollection);
  24718. return typeof result === "object" ? result : object;
  24719. ;
  24720. return self;
  24721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24722. }, function($ctx1) {$ctx1.fill(self,"newWithValues:",{aCollection:aCollection})});
  24723. //>>excludeEnd("ctx");
  24724. }; }),
  24725. $globals.BlockClosure);
  24726. $core.addMethod(
  24727. $core.method({
  24728. selector: "numArgs",
  24729. protocol: "accessing",
  24730. //>>excludeStart("ide", pragmas.excludeIdeData);
  24731. args: [],
  24732. source: "numArgs\x0a\x09^ length",
  24733. referencedClasses: [],
  24734. //>>excludeEnd("ide");
  24735. pragmas: [],
  24736. messageSends: []
  24737. }, function ($methodClass){ return function (){
  24738. var self=this,$self=this;
  24739. return $self.length;
  24740. }; }),
  24741. $globals.BlockClosure);
  24742. $core.addMethod(
  24743. $core.method({
  24744. selector: "on:do:",
  24745. protocol: "error handling",
  24746. //>>excludeStart("ide", pragmas.excludeIdeData);
  24747. args: ["anErrorClass", "aBlock"],
  24748. source: "on: anErrorClass do: aBlock\x0a\x09^ Smalltalk try: self ifTrue: [ :err | err isKindOf: anErrorClass ] catch: aBlock",
  24749. referencedClasses: ["Smalltalk"],
  24750. //>>excludeEnd("ide");
  24751. pragmas: [],
  24752. messageSends: ["try:ifTrue:catch:", "isKindOf:"]
  24753. }, function ($methodClass){ return function (anErrorClass,aBlock){
  24754. var self=this,$self=this;
  24755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24756. return $core.withContext(function($ctx1) {
  24757. //>>excludeEnd("ctx");
  24758. return $recv($globals.Smalltalk)._try_ifTrue_catch_(self,(function(err){
  24759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24760. return $core.withContext(function($ctx2) {
  24761. //>>excludeEnd("ctx");
  24762. return $recv(err)._isKindOf_(anErrorClass);
  24763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24764. }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,1)});
  24765. //>>excludeEnd("ctx");
  24766. }),aBlock);
  24767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24768. }, function($ctx1) {$ctx1.fill(self,"on:do:",{anErrorClass:anErrorClass,aBlock:aBlock})});
  24769. //>>excludeEnd("ctx");
  24770. }; }),
  24771. $globals.BlockClosure);
  24772. $core.addMethod(
  24773. $core.method({
  24774. selector: "prototype",
  24775. protocol: "accessing",
  24776. //>>excludeStart("ide", pragmas.excludeIdeData);
  24777. args: [],
  24778. source: "prototype\x0a\x09^ prototype",
  24779. referencedClasses: [],
  24780. //>>excludeEnd("ide");
  24781. pragmas: [],
  24782. messageSends: []
  24783. }, function ($methodClass){ return function (){
  24784. var self=this,$self=this;
  24785. return $self.prototype;
  24786. }; }),
  24787. $globals.BlockClosure);
  24788. $core.addMethod(
  24789. $core.method({
  24790. selector: "provided",
  24791. protocol: "converting",
  24792. //>>excludeStart("ide", pragmas.excludeIdeData);
  24793. args: [],
  24794. source: "provided\x0a\x09\x22Returns JS proxy that allows to access 'static API', as in\x0a\x09 require provided resolve: ...\x0a\x09or\x0a\x09 XMLHttpRequest provided DONE\x22\x0a\x09\x0a\x09^ JSObjectProxy on: self",
  24795. referencedClasses: ["JSObjectProxy"],
  24796. //>>excludeEnd("ide");
  24797. pragmas: [],
  24798. messageSends: ["on:"]
  24799. }, function ($methodClass){ return function (){
  24800. var self=this,$self=this;
  24801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24802. return $core.withContext(function($ctx1) {
  24803. //>>excludeEnd("ctx");
  24804. return $recv($globals.JSObjectProxy)._on_(self);
  24805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24806. }, function($ctx1) {$ctx1.fill(self,"provided",{})});
  24807. //>>excludeEnd("ctx");
  24808. }; }),
  24809. $globals.BlockClosure);
  24810. $core.addMethod(
  24811. $core.method({
  24812. selector: "receiver",
  24813. protocol: "accessing",
  24814. //>>excludeStart("ide", pragmas.excludeIdeData);
  24815. args: [],
  24816. source: "receiver\x0a\x09^ nil",
  24817. referencedClasses: [],
  24818. //>>excludeEnd("ide");
  24819. pragmas: [],
  24820. messageSends: []
  24821. }, function ($methodClass){ return function (){
  24822. var self=this,$self=this;
  24823. return nil;
  24824. }; }),
  24825. $globals.BlockClosure);
  24826. $core.addMethod(
  24827. $core.method({
  24828. selector: "timeToRun",
  24829. protocol: "evaluating",
  24830. //>>excludeStart("ide", pragmas.excludeIdeData);
  24831. args: [],
  24832. source: "timeToRun\x0a\x09\x22Answer the number of milliseconds taken to execute this block.\x22\x0a\x0a\x09^ Date millisecondsToRun: self",
  24833. referencedClasses: ["Date"],
  24834. //>>excludeEnd("ide");
  24835. pragmas: [],
  24836. messageSends: ["millisecondsToRun:"]
  24837. }, function ($methodClass){ return function (){
  24838. var self=this,$self=this;
  24839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24840. return $core.withContext(function($ctx1) {
  24841. //>>excludeEnd("ctx");
  24842. return $recv($globals.Date)._millisecondsToRun_(self);
  24843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24844. }, function($ctx1) {$ctx1.fill(self,"timeToRun",{})});
  24845. //>>excludeEnd("ctx");
  24846. }; }),
  24847. $globals.BlockClosure);
  24848. $core.addMethod(
  24849. $core.method({
  24850. selector: "tryCatch:",
  24851. protocol: "error handling",
  24852. //>>excludeStart("ide", pragmas.excludeIdeData);
  24853. args: ["aBlock"],
  24854. source: "tryCatch: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09try {\x0a\x09\x09\x09return $self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09// pass non-local returns undetected\x0a\x09\x09\x09if (Array.isArray(error) && error.length === 1) throw error;\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09'>",
  24855. referencedClasses: [],
  24856. //>>excludeEnd("ide");
  24857. pragmas: [["inlineJS:", ["\x0a\x09\x09try {\x0a\x09\x09\x09return $self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09// pass non-local returns undetected\x0a\x09\x09\x09if (Array.isArray(error) && error.length === 1) throw error;\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09"]]],
  24858. messageSends: []
  24859. }, function ($methodClass){ return function (aBlock){
  24860. var self=this,$self=this;
  24861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24862. return $core.withContext(function($ctx1) {
  24863. //>>excludeEnd("ctx");
  24864. try {
  24865. return $self._value();
  24866. } catch(error) {
  24867. // pass non-local returns undetected
  24868. if (Array.isArray(error) && error.length === 1) throw error;
  24869. return aBlock._value_(error);
  24870. }
  24871. ;
  24872. return self;
  24873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24874. }, function($ctx1) {$ctx1.fill(self,"tryCatch:",{aBlock:aBlock})});
  24875. //>>excludeEnd("ctx");
  24876. }; }),
  24877. $globals.BlockClosure);
  24878. $core.addMethod(
  24879. $core.method({
  24880. selector: "tryIfTrue:catch:",
  24881. protocol: "error handling",
  24882. //>>excludeStart("ide", pragmas.excludeIdeData);
  24883. args: ["anotherBlock", "aBlock"],
  24884. source: "tryIfTrue: anotherBlock catch: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09try {\x0a\x09\x09\x09return $self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09// pass non-local returns undetected\x0a\x09\x09\x09if (Array.isArray(error) && error.length === 1) throw error;\x0a\x09\x09\x09if (!anotherBlock._value_(error)) throw error;\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09'>",
  24885. referencedClasses: [],
  24886. //>>excludeEnd("ide");
  24887. pragmas: [["inlineJS:", ["\x0a\x09\x09try {\x0a\x09\x09\x09return $self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09// pass non-local returns undetected\x0a\x09\x09\x09if (Array.isArray(error) && error.length === 1) throw error;\x0a\x09\x09\x09if (!anotherBlock._value_(error)) throw error;\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09"]]],
  24888. messageSends: []
  24889. }, function ($methodClass){ return function (anotherBlock,aBlock){
  24890. var self=this,$self=this;
  24891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24892. return $core.withContext(function($ctx1) {
  24893. //>>excludeEnd("ctx");
  24894. try {
  24895. return $self._value();
  24896. } catch(error) {
  24897. // pass non-local returns undetected
  24898. if (Array.isArray(error) && error.length === 1) throw error;
  24899. if (!anotherBlock._value_(error)) throw error;
  24900. return aBlock._value_(error);
  24901. }
  24902. ;
  24903. return self;
  24904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24905. }, function($ctx1) {$ctx1.fill(self,"tryIfTrue:catch:",{anotherBlock:anotherBlock,aBlock:aBlock})});
  24906. //>>excludeEnd("ctx");
  24907. }; }),
  24908. $globals.BlockClosure);
  24909. $core.addMethod(
  24910. $core.method({
  24911. selector: "value",
  24912. protocol: "evaluating",
  24913. //>>excludeStart("ide", pragmas.excludeIdeData);
  24914. args: [],
  24915. source: "value\x0a\x09<inlineJS: 'return self();'>",
  24916. referencedClasses: [],
  24917. //>>excludeEnd("ide");
  24918. pragmas: [["inlineJS:", ["return self();"]]],
  24919. messageSends: []
  24920. }, function ($methodClass){ return function (){
  24921. var self=this,$self=this;
  24922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24923. return $core.withContext(function($ctx1) {
  24924. //>>excludeEnd("ctx");
  24925. return self();;
  24926. return self;
  24927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24928. }, function($ctx1) {$ctx1.fill(self,"value",{})});
  24929. //>>excludeEnd("ctx");
  24930. }; }),
  24931. $globals.BlockClosure);
  24932. $core.addMethod(
  24933. $core.method({
  24934. selector: "value:",
  24935. protocol: "evaluating",
  24936. //>>excludeStart("ide", pragmas.excludeIdeData);
  24937. args: ["anArg"],
  24938. source: "value: anArg\x0a\x09<inlineJS: 'return self(anArg);'>",
  24939. referencedClasses: [],
  24940. //>>excludeEnd("ide");
  24941. pragmas: [["inlineJS:", ["return self(anArg);"]]],
  24942. messageSends: []
  24943. }, function ($methodClass){ return function (anArg){
  24944. var self=this,$self=this;
  24945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24946. return $core.withContext(function($ctx1) {
  24947. //>>excludeEnd("ctx");
  24948. return self(anArg);;
  24949. return self;
  24950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24951. }, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg})});
  24952. //>>excludeEnd("ctx");
  24953. }; }),
  24954. $globals.BlockClosure);
  24955. $core.addMethod(
  24956. $core.method({
  24957. selector: "value:value:",
  24958. protocol: "evaluating",
  24959. //>>excludeStart("ide", pragmas.excludeIdeData);
  24960. args: ["firstArg", "secondArg"],
  24961. source: "value: firstArg value: secondArg\x0a\x09<inlineJS: 'return self(firstArg, secondArg);'>",
  24962. referencedClasses: [],
  24963. //>>excludeEnd("ide");
  24964. pragmas: [["inlineJS:", ["return self(firstArg, secondArg);"]]],
  24965. messageSends: []
  24966. }, function ($methodClass){ return function (firstArg,secondArg){
  24967. var self=this,$self=this;
  24968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24969. return $core.withContext(function($ctx1) {
  24970. //>>excludeEnd("ctx");
  24971. return self(firstArg, secondArg);;
  24972. return self;
  24973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24974. }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg})});
  24975. //>>excludeEnd("ctx");
  24976. }; }),
  24977. $globals.BlockClosure);
  24978. $core.addMethod(
  24979. $core.method({
  24980. selector: "value:value:value:",
  24981. protocol: "evaluating",
  24982. //>>excludeStart("ide", pragmas.excludeIdeData);
  24983. args: ["firstArg", "secondArg", "thirdArg"],
  24984. source: "value: firstArg value: secondArg value: thirdArg\x0a\x09<inlineJS: 'return self(firstArg, secondArg, thirdArg);'>",
  24985. referencedClasses: [],
  24986. //>>excludeEnd("ide");
  24987. pragmas: [["inlineJS:", ["return self(firstArg, secondArg, thirdArg);"]]],
  24988. messageSends: []
  24989. }, function ($methodClass){ return function (firstArg,secondArg,thirdArg){
  24990. var self=this,$self=this;
  24991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24992. return $core.withContext(function($ctx1) {
  24993. //>>excludeEnd("ctx");
  24994. return self(firstArg, secondArg, thirdArg);;
  24995. return self;
  24996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24997. }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArg:firstArg,secondArg:secondArg,thirdArg:thirdArg})});
  24998. //>>excludeEnd("ctx");
  24999. }; }),
  25000. $globals.BlockClosure);
  25001. $core.addMethod(
  25002. $core.method({
  25003. selector: "valueWithInterval:",
  25004. protocol: "timeout/interval",
  25005. //>>excludeStart("ide", pragmas.excludeIdeData);
  25006. args: ["aNumber"],
  25007. source: "valueWithInterval: aNumber\x0a\x09<inlineJS: '\x0a\x09\x09var interval = setInterval(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(interval);\x0a\x09'>",
  25008. referencedClasses: [],
  25009. //>>excludeEnd("ide");
  25010. pragmas: [["inlineJS:", ["\x0a\x09\x09var interval = setInterval(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(interval);\x0a\x09"]]],
  25011. messageSends: []
  25012. }, function ($methodClass){ return function (aNumber){
  25013. var self=this,$self=this;
  25014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25015. return $core.withContext(function($ctx1) {
  25016. //>>excludeEnd("ctx");
  25017. var interval = setInterval(self, aNumber);
  25018. return $globals.Timeout._on_(interval);
  25019. ;
  25020. return self;
  25021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25022. }, function($ctx1) {$ctx1.fill(self,"valueWithInterval:",{aNumber:aNumber})});
  25023. //>>excludeEnd("ctx");
  25024. }; }),
  25025. $globals.BlockClosure);
  25026. $core.addMethod(
  25027. $core.method({
  25028. selector: "valueWithPossibleArguments:",
  25029. protocol: "evaluating",
  25030. //>>excludeStart("ide", pragmas.excludeIdeData);
  25031. args: ["aCollection"],
  25032. source: "valueWithPossibleArguments: aCollection\x0a\x09<inlineJS: 'return self.apply(null, aCollection);'>",
  25033. referencedClasses: [],
  25034. //>>excludeEnd("ide");
  25035. pragmas: [["inlineJS:", ["return self.apply(null, aCollection);"]]],
  25036. messageSends: []
  25037. }, function ($methodClass){ return function (aCollection){
  25038. var self=this,$self=this;
  25039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25040. return $core.withContext(function($ctx1) {
  25041. //>>excludeEnd("ctx");
  25042. return self.apply(null, aCollection);;
  25043. return self;
  25044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25045. }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection})});
  25046. //>>excludeEnd("ctx");
  25047. }; }),
  25048. $globals.BlockClosure);
  25049. $core.addMethod(
  25050. $core.method({
  25051. selector: "valueWithTimeout:",
  25052. protocol: "timeout/interval",
  25053. //>>excludeStart("ide", pragmas.excludeIdeData);
  25054. args: ["aNumber"],
  25055. source: "valueWithTimeout: aNumber\x0a\x09<inlineJS: '\x0a\x09\x09var timeout = setTimeout(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(timeout);\x0a\x09'>",
  25056. referencedClasses: [],
  25057. //>>excludeEnd("ide");
  25058. pragmas: [["inlineJS:", ["\x0a\x09\x09var timeout = setTimeout(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(timeout);\x0a\x09"]]],
  25059. messageSends: []
  25060. }, function ($methodClass){ return function (aNumber){
  25061. var self=this,$self=this;
  25062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25063. return $core.withContext(function($ctx1) {
  25064. //>>excludeEnd("ctx");
  25065. var timeout = setTimeout(self, aNumber);
  25066. return $globals.Timeout._on_(timeout);
  25067. ;
  25068. return self;
  25069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25070. }, function($ctx1) {$ctx1.fill(self,"valueWithTimeout:",{aNumber:aNumber})});
  25071. //>>excludeEnd("ctx");
  25072. }; }),
  25073. $globals.BlockClosure);
  25074. $core.addMethod(
  25075. $core.method({
  25076. selector: "whileFalse",
  25077. protocol: "controlling",
  25078. //>>excludeStart("ide", pragmas.excludeIdeData);
  25079. args: [],
  25080. source: "whileFalse\x0a\x09self whileFalse: []",
  25081. referencedClasses: [],
  25082. //>>excludeEnd("ide");
  25083. pragmas: [],
  25084. messageSends: ["whileFalse:"]
  25085. }, function ($methodClass){ return function (){
  25086. var self=this,$self=this;
  25087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25088. return $core.withContext(function($ctx1) {
  25089. //>>excludeEnd("ctx");
  25090. $self._whileFalse_((function(){
  25091. }));
  25092. return self;
  25093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25094. }, function($ctx1) {$ctx1.fill(self,"whileFalse",{})});
  25095. //>>excludeEnd("ctx");
  25096. }; }),
  25097. $globals.BlockClosure);
  25098. $core.addMethod(
  25099. $core.method({
  25100. selector: "whileFalse:",
  25101. protocol: "controlling",
  25102. //>>excludeStart("ide", pragmas.excludeIdeData);
  25103. args: ["aBlock"],
  25104. source: "whileFalse: aBlock\x0a\x09<inlineJS: 'while(!$core.assert($self._value())) {aBlock._value()}'>",
  25105. referencedClasses: [],
  25106. //>>excludeEnd("ide");
  25107. pragmas: [["inlineJS:", ["while(!$core.assert($self._value())) {aBlock._value()}"]]],
  25108. messageSends: []
  25109. }, function ($methodClass){ return function (aBlock){
  25110. var self=this,$self=this;
  25111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25112. return $core.withContext(function($ctx1) {
  25113. //>>excludeEnd("ctx");
  25114. while(!$core.assert($self._value())) {aBlock._value()};
  25115. return self;
  25116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25117. }, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock})});
  25118. //>>excludeEnd("ctx");
  25119. }; }),
  25120. $globals.BlockClosure);
  25121. $core.addMethod(
  25122. $core.method({
  25123. selector: "whileTrue",
  25124. protocol: "controlling",
  25125. //>>excludeStart("ide", pragmas.excludeIdeData);
  25126. args: [],
  25127. source: "whileTrue\x0a\x09self whileTrue: []",
  25128. referencedClasses: [],
  25129. //>>excludeEnd("ide");
  25130. pragmas: [],
  25131. messageSends: ["whileTrue:"]
  25132. }, function ($methodClass){ return function (){
  25133. var self=this,$self=this;
  25134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25135. return $core.withContext(function($ctx1) {
  25136. //>>excludeEnd("ctx");
  25137. $self._whileTrue_((function(){
  25138. }));
  25139. return self;
  25140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25141. }, function($ctx1) {$ctx1.fill(self,"whileTrue",{})});
  25142. //>>excludeEnd("ctx");
  25143. }; }),
  25144. $globals.BlockClosure);
  25145. $core.addMethod(
  25146. $core.method({
  25147. selector: "whileTrue:",
  25148. protocol: "controlling",
  25149. //>>excludeStart("ide", pragmas.excludeIdeData);
  25150. args: ["aBlock"],
  25151. source: "whileTrue: aBlock\x0a\x09<inlineJS: 'while($core.assert($self._value())) {aBlock._value()}'>",
  25152. referencedClasses: [],
  25153. //>>excludeEnd("ide");
  25154. pragmas: [["inlineJS:", ["while($core.assert($self._value())) {aBlock._value()}"]]],
  25155. messageSends: []
  25156. }, function ($methodClass){ return function (aBlock){
  25157. var self=this,$self=this;
  25158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25159. return $core.withContext(function($ctx1) {
  25160. //>>excludeEnd("ctx");
  25161. while($core.assert($self._value())) {aBlock._value()};
  25162. return self;
  25163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25164. }, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock})});
  25165. //>>excludeEnd("ctx");
  25166. }; }),
  25167. $globals.BlockClosure);
  25168. $core.addMethod(
  25169. $core.method({
  25170. selector: "javaScriptConstructorFor:initializingVia:",
  25171. protocol: "instance creation",
  25172. //>>excludeStart("ide", pragmas.excludeIdeData);
  25173. args: ["aPrototype", "aMethodBlock"],
  25174. source: "javaScriptConstructorFor: aPrototype initializingVia: aMethodBlock\x0a\x09<inlineJS: '\x0a\x09\x09function Ctr () {\x0a\x09\x09\x09aMethodBlock.apply(this, arguments);\x0a\x09\x09}\x0a\x09\x09Ctr.prototype = aPrototype;\x0a\x09\x09return Ctr;\x0a\x09'>",
  25175. referencedClasses: [],
  25176. //>>excludeEnd("ide");
  25177. pragmas: [["inlineJS:", ["\x0a\x09\x09function Ctr () {\x0a\x09\x09\x09aMethodBlock.apply(this, arguments);\x0a\x09\x09}\x0a\x09\x09Ctr.prototype = aPrototype;\x0a\x09\x09return Ctr;\x0a\x09"]]],
  25178. messageSends: []
  25179. }, function ($methodClass){ return function (aPrototype,aMethodBlock){
  25180. var self=this,$self=this;
  25181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25182. return $core.withContext(function($ctx1) {
  25183. //>>excludeEnd("ctx");
  25184. function Ctr () {
  25185. aMethodBlock.apply(this, arguments);
  25186. }
  25187. Ctr.prototype = aPrototype;
  25188. return Ctr;
  25189. ;
  25190. return self;
  25191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25192. }, function($ctx1) {$ctx1.fill(self,"javaScriptConstructorFor:initializingVia:",{aPrototype:aPrototype,aMethodBlock:aMethodBlock})});
  25193. //>>excludeEnd("ctx");
  25194. }; }),
  25195. $globals.BlockClosure.a$cls);
  25196. $core.addClass("CompiledMethod", $globals.Object, "Kernel-Methods");
  25197. $core.setSlots($globals.CompiledMethod, ["args", "instantiateFn", "fn", "messageSends", "pragmas", "owner", "methodClass", "protocol", "referencedClasses", "selector", "source"]);
  25198. //>>excludeStart("ide", pragmas.excludeIdeData);
  25199. $globals.CompiledMethod.comment="I represent a class method of the system. I hold the source and compiled code of a class method.\x0a\x0a## API\x0aMy instances can be accessed using `Behavior >> #methodAt:`\x0a\x0a Object methodAt: 'asString'\x0a\x0aSource code access:\x0a\x0a\x09(String methodAt: 'lines') source\x0a\x0aReferenced classes:\x0a\x0a\x09(String methodAt: 'lines') referencedClasses\x0a\x0aMessages sent from an instance:\x0a\x09\x0a\x09(String methodAt: 'lines') messageSends";
  25200. //>>excludeEnd("ide");
  25201. $core.addMethod(
  25202. $core.method({
  25203. selector: "arguments",
  25204. protocol: "accessing",
  25205. //>>excludeStart("ide", pragmas.excludeIdeData);
  25206. args: [],
  25207. source: "arguments\x0a\x09^ args ifNil: [ #() ]",
  25208. referencedClasses: [],
  25209. //>>excludeEnd("ide");
  25210. pragmas: [],
  25211. messageSends: ["ifNil:"]
  25212. }, function ($methodClass){ return function (){
  25213. var self=this,$self=this;
  25214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25215. return $core.withContext(function($ctx1) {
  25216. //>>excludeEnd("ctx");
  25217. var $1;
  25218. $1=$self.args;
  25219. if($1 == null || $1.a$nil){
  25220. return [];
  25221. } else {
  25222. return $1;
  25223. }
  25224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25225. }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
  25226. //>>excludeEnd("ctx");
  25227. }; }),
  25228. $globals.CompiledMethod);
  25229. $core.addMethod(
  25230. $core.method({
  25231. selector: "asString",
  25232. protocol: "converting",
  25233. //>>excludeStart("ide", pragmas.excludeIdeData);
  25234. args: [],
  25235. source: "asString\x0a\x09^ self asStringForClass: self methodClass",
  25236. referencedClasses: [],
  25237. //>>excludeEnd("ide");
  25238. pragmas: [],
  25239. messageSends: ["asStringForClass:", "methodClass"]
  25240. }, function ($methodClass){ return function (){
  25241. var self=this,$self=this;
  25242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25243. return $core.withContext(function($ctx1) {
  25244. //>>excludeEnd("ctx");
  25245. return $self._asStringForClass_($self._methodClass());
  25246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25247. }, function($ctx1) {$ctx1.fill(self,"asString",{})});
  25248. //>>excludeEnd("ctx");
  25249. }; }),
  25250. $globals.CompiledMethod);
  25251. $core.addMethod(
  25252. $core.method({
  25253. selector: "asStringForClass:",
  25254. protocol: "converting",
  25255. //>>excludeStart("ide", pragmas.excludeIdeData);
  25256. args: ["aClass"],
  25257. source: "asStringForClass: aClass\x0a\x09| result |\x0a\x09result := aClass name.\x0a\x09self methodClass = aClass \x0a\x09\x09ifFalse: [ result := result, ' (', (self methodClass ifNil: [ 'nil' ] ifNotNil: [ self methodClass name ]), ')'].\x0a\x09(self origin = aClass | (self origin = self methodClass)) \x0a\x09\x09ifFalse: [ result := result, ' /', (self origin ifNil: [ 'nil' ] ifNotNil: [ self origin name ]), '/'].\x0a\x09^ result, ' >> ', self selector symbolPrintString",
  25258. referencedClasses: [],
  25259. //>>excludeEnd("ide");
  25260. pragmas: [],
  25261. messageSends: ["name", "ifFalse:", "=", "methodClass", ",", "ifNil:ifNotNil:", "|", "origin", "symbolPrintString", "selector"]
  25262. }, function ($methodClass){ return function (aClass){
  25263. var self=this,$self=this;
  25264. var result;
  25265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25266. return $core.withContext(function($ctx1) {
  25267. //>>excludeEnd("ctx");
  25268. var $1,$2,$3,$4,$5,$6;
  25269. result=[$recv(aClass)._name()
  25270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25271. ,$ctx1.sendIdx["name"]=1
  25272. //>>excludeEnd("ctx");
  25273. ][0];
  25274. if(!$core.assert([$recv([$self._methodClass()
  25275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25276. ,$ctx1.sendIdx["methodClass"]=1
  25277. //>>excludeEnd("ctx");
  25278. ][0]).__eq(aClass)
  25279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25280. ,$ctx1.sendIdx["="]=1
  25281. //>>excludeEnd("ctx");
  25282. ][0])){
  25283. $1=[$recv(result).__comma(" (")
  25284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25285. ,$ctx1.sendIdx[","]=3
  25286. //>>excludeEnd("ctx");
  25287. ][0];
  25288. $2=[$self._methodClass()
  25289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25290. ,$ctx1.sendIdx["methodClass"]=2
  25291. //>>excludeEnd("ctx");
  25292. ][0];
  25293. if($2 == null || $2.a$nil){
  25294. $3="nil";
  25295. } else {
  25296. $3=[$recv([$self._methodClass()
  25297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25298. ,$ctx1.sendIdx["methodClass"]=3
  25299. //>>excludeEnd("ctx");
  25300. ][0])._name()
  25301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25302. ,$ctx1.sendIdx["name"]=2
  25303. //>>excludeEnd("ctx");
  25304. ][0];
  25305. }
  25306. result=[$recv([$recv($1).__comma($3)
  25307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25308. ,$ctx1.sendIdx[","]=2
  25309. //>>excludeEnd("ctx");
  25310. ][0]).__comma(")")
  25311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25312. ,$ctx1.sendIdx[","]=1
  25313. //>>excludeEnd("ctx");
  25314. ][0];
  25315. result;
  25316. }
  25317. if(!$core.assert($recv([$recv([$self._origin()
  25318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25319. ,$ctx1.sendIdx["origin"]=1
  25320. //>>excludeEnd("ctx");
  25321. ][0]).__eq(aClass)
  25322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25323. ,$ctx1.sendIdx["="]=2
  25324. //>>excludeEnd("ctx");
  25325. ][0]).__or($recv([$self._origin()
  25326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25327. ,$ctx1.sendIdx["origin"]=2
  25328. //>>excludeEnd("ctx");
  25329. ][0]).__eq($self._methodClass())))){
  25330. $4=[$recv(result).__comma(" /")
  25331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25332. ,$ctx1.sendIdx[","]=6
  25333. //>>excludeEnd("ctx");
  25334. ][0];
  25335. $5=[$self._origin()
  25336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25337. ,$ctx1.sendIdx["origin"]=3
  25338. //>>excludeEnd("ctx");
  25339. ][0];
  25340. if($5 == null || $5.a$nil){
  25341. $6="nil";
  25342. } else {
  25343. $6=$recv($self._origin())._name();
  25344. }
  25345. result=[$recv([$recv($4).__comma($6)
  25346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25347. ,$ctx1.sendIdx[","]=5
  25348. //>>excludeEnd("ctx");
  25349. ][0]).__comma("/")
  25350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25351. ,$ctx1.sendIdx[","]=4
  25352. //>>excludeEnd("ctx");
  25353. ][0];
  25354. result;
  25355. }
  25356. return [$recv($recv(result).__comma(" >> ")).__comma($recv($self._selector())._symbolPrintString())
  25357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25358. ,$ctx1.sendIdx[","]=7
  25359. //>>excludeEnd("ctx");
  25360. ][0];
  25361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25362. }, function($ctx1) {$ctx1.fill(self,"asStringForClass:",{aClass:aClass,result:result})});
  25363. //>>excludeEnd("ctx");
  25364. }; }),
  25365. $globals.CompiledMethod);
  25366. $core.addMethod(
  25367. $core.method({
  25368. selector: "basicPragmas",
  25369. protocol: "accessing",
  25370. //>>excludeStart("ide", pragmas.excludeIdeData);
  25371. args: [],
  25372. source: "basicPragmas\x0a\x09^ pragmas ifNil: [ #() ]",
  25373. referencedClasses: [],
  25374. //>>excludeEnd("ide");
  25375. pragmas: [],
  25376. messageSends: ["ifNil:"]
  25377. }, function ($methodClass){ return function (){
  25378. var self=this,$self=this;
  25379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25380. return $core.withContext(function($ctx1) {
  25381. //>>excludeEnd("ctx");
  25382. var $1;
  25383. $1=$self.pragmas;
  25384. if($1 == null || $1.a$nil){
  25385. return [];
  25386. } else {
  25387. return $1;
  25388. }
  25389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25390. }, function($ctx1) {$ctx1.fill(self,"basicPragmas",{})});
  25391. //>>excludeEnd("ctx");
  25392. }; }),
  25393. $globals.CompiledMethod);
  25394. $core.addMethod(
  25395. $core.method({
  25396. selector: "browse",
  25397. protocol: "browsing",
  25398. //>>excludeStart("ide", pragmas.excludeIdeData);
  25399. args: [],
  25400. source: "browse\x0a\x09Finder findMethod: self",
  25401. referencedClasses: ["Finder"],
  25402. //>>excludeEnd("ide");
  25403. pragmas: [],
  25404. messageSends: ["findMethod:"]
  25405. }, function ($methodClass){ return function (){
  25406. var self=this,$self=this;
  25407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25408. return $core.withContext(function($ctx1) {
  25409. //>>excludeEnd("ctx");
  25410. $recv($globals.Finder)._findMethod_(self);
  25411. return self;
  25412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25413. }, function($ctx1) {$ctx1.fill(self,"browse",{})});
  25414. //>>excludeEnd("ctx");
  25415. }; }),
  25416. $globals.CompiledMethod);
  25417. $core.addMethod(
  25418. $core.method({
  25419. selector: "category",
  25420. protocol: "accessing",
  25421. //>>excludeStart("ide", pragmas.excludeIdeData);
  25422. args: [],
  25423. source: "category\x0a\x09^ self protocol",
  25424. referencedClasses: [],
  25425. //>>excludeEnd("ide");
  25426. pragmas: [],
  25427. messageSends: ["protocol"]
  25428. }, function ($methodClass){ return function (){
  25429. var self=this,$self=this;
  25430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25431. return $core.withContext(function($ctx1) {
  25432. //>>excludeEnd("ctx");
  25433. return $self._protocol();
  25434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25435. }, function($ctx1) {$ctx1.fill(self,"category",{})});
  25436. //>>excludeEnd("ctx");
  25437. }; }),
  25438. $globals.CompiledMethod);
  25439. $core.addMethod(
  25440. $core.method({
  25441. selector: "defaultProtocol",
  25442. protocol: "defaults",
  25443. //>>excludeStart("ide", pragmas.excludeIdeData);
  25444. args: [],
  25445. source: "defaultProtocol\x0a\x09^ 'as yet unclassified'",
  25446. referencedClasses: [],
  25447. //>>excludeEnd("ide");
  25448. pragmas: [],
  25449. messageSends: []
  25450. }, function ($methodClass){ return function (){
  25451. var self=this,$self=this;
  25452. return "as yet unclassified";
  25453. }; }),
  25454. $globals.CompiledMethod);
  25455. $core.addMethod(
  25456. $core.method({
  25457. selector: "fn",
  25458. protocol: "accessing",
  25459. //>>excludeStart("ide", pragmas.excludeIdeData);
  25460. args: [],
  25461. source: "fn\x0a\x09^ fn",
  25462. referencedClasses: [],
  25463. //>>excludeEnd("ide");
  25464. pragmas: [],
  25465. messageSends: []
  25466. }, function ($methodClass){ return function (){
  25467. var self=this,$self=this;
  25468. return $self.fn;
  25469. }; }),
  25470. $globals.CompiledMethod);
  25471. $core.addMethod(
  25472. $core.method({
  25473. selector: "instantiateFn",
  25474. protocol: "accessing",
  25475. //>>excludeStart("ide", pragmas.excludeIdeData);
  25476. args: [],
  25477. source: "instantiateFn\x0a\x09^ instantiateFn",
  25478. referencedClasses: [],
  25479. //>>excludeEnd("ide");
  25480. pragmas: [],
  25481. messageSends: []
  25482. }, function ($methodClass){ return function (){
  25483. var self=this,$self=this;
  25484. return $self.instantiateFn;
  25485. }; }),
  25486. $globals.CompiledMethod);
  25487. $core.addMethod(
  25488. $core.method({
  25489. selector: "instantiateFn:",
  25490. protocol: "accessing",
  25491. //>>excludeStart("ide", pragmas.excludeIdeData);
  25492. args: ["anObject"],
  25493. source: "instantiateFn: anObject\x0a\x09instantiateFn := anObject",
  25494. referencedClasses: [],
  25495. //>>excludeEnd("ide");
  25496. pragmas: [],
  25497. messageSends: []
  25498. }, function ($methodClass){ return function (anObject){
  25499. var self=this,$self=this;
  25500. $self.instantiateFn=anObject;
  25501. return self;
  25502. }; }),
  25503. $globals.CompiledMethod);
  25504. $core.addMethod(
  25505. $core.method({
  25506. selector: "isCompiledMethod",
  25507. protocol: "testing",
  25508. //>>excludeStart("ide", pragmas.excludeIdeData);
  25509. args: [],
  25510. source: "isCompiledMethod\x0a\x09^ true",
  25511. referencedClasses: [],
  25512. //>>excludeEnd("ide");
  25513. pragmas: [],
  25514. messageSends: []
  25515. }, function ($methodClass){ return function (){
  25516. var self=this,$self=this;
  25517. return true;
  25518. }; }),
  25519. $globals.CompiledMethod);
  25520. $core.addMethod(
  25521. $core.method({
  25522. selector: "isOverridden",
  25523. protocol: "testing",
  25524. //>>excludeStart("ide", pragmas.excludeIdeData);
  25525. args: [],
  25526. source: "isOverridden\x0a self methodClass allSubclassesDo: [ :each |\x0a\x09 (each includesSelector: selector)\x0a \x09ifTrue: [ ^ true ] ].\x0a\x09^ false",
  25527. referencedClasses: [],
  25528. //>>excludeEnd("ide");
  25529. pragmas: [],
  25530. messageSends: ["allSubclassesDo:", "methodClass", "ifTrue:", "includesSelector:"]
  25531. }, function ($methodClass){ return function (){
  25532. var self=this,$self=this;
  25533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25534. return $core.withContext(function($ctx1) {
  25535. //>>excludeEnd("ctx");
  25536. var $early={};
  25537. try {
  25538. $recv($self._methodClass())._allSubclassesDo_((function(each){
  25539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25540. return $core.withContext(function($ctx2) {
  25541. //>>excludeEnd("ctx");
  25542. if($core.assert($recv(each)._includesSelector_($self.selector))){
  25543. throw $early=[true];
  25544. }
  25545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25546. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  25547. //>>excludeEnd("ctx");
  25548. }));
  25549. return false;
  25550. }
  25551. catch(e) {if(e===$early)return e[0]; throw e}
  25552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25553. }, function($ctx1) {$ctx1.fill(self,"isOverridden",{})});
  25554. //>>excludeEnd("ctx");
  25555. }; }),
  25556. $globals.CompiledMethod);
  25557. $core.addMethod(
  25558. $core.method({
  25559. selector: "isOverride",
  25560. protocol: "testing",
  25561. //>>excludeStart("ide", pragmas.excludeIdeData);
  25562. args: [],
  25563. source: "isOverride\x0a\x09| superclass |\x0a \x0a superclass := self methodClass superclass.\x0a\x09superclass ifNil: [ ^ false ].\x0a\x09\x0a ^ (self methodClass superclass lookupSelector: self selector) notNil",
  25564. referencedClasses: [],
  25565. //>>excludeEnd("ide");
  25566. pragmas: [],
  25567. messageSends: ["superclass", "methodClass", "ifNil:", "notNil", "lookupSelector:", "selector"]
  25568. }, function ($methodClass){ return function (){
  25569. var self=this,$self=this;
  25570. var superclass;
  25571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25572. return $core.withContext(function($ctx1) {
  25573. //>>excludeEnd("ctx");
  25574. var $1;
  25575. superclass=[$recv([$self._methodClass()
  25576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25577. ,$ctx1.sendIdx["methodClass"]=1
  25578. //>>excludeEnd("ctx");
  25579. ][0])._superclass()
  25580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25581. ,$ctx1.sendIdx["superclass"]=1
  25582. //>>excludeEnd("ctx");
  25583. ][0];
  25584. $1=superclass;
  25585. if($1 == null || $1.a$nil){
  25586. return false;
  25587. } else {
  25588. $1;
  25589. }
  25590. return $recv($recv($recv($self._methodClass())._superclass())._lookupSelector_($self._selector()))._notNil();
  25591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25592. }, function($ctx1) {$ctx1.fill(self,"isOverride",{superclass:superclass})});
  25593. //>>excludeEnd("ctx");
  25594. }; }),
  25595. $globals.CompiledMethod);
  25596. $core.addMethod(
  25597. $core.method({
  25598. selector: "messageSends",
  25599. protocol: "accessing",
  25600. //>>excludeStart("ide", pragmas.excludeIdeData);
  25601. args: [],
  25602. source: "messageSends\x0a\x09^ messageSends",
  25603. referencedClasses: [],
  25604. //>>excludeEnd("ide");
  25605. pragmas: [],
  25606. messageSends: []
  25607. }, function ($methodClass){ return function (){
  25608. var self=this,$self=this;
  25609. return $self.messageSends;
  25610. }; }),
  25611. $globals.CompiledMethod);
  25612. $core.addMethod(
  25613. $core.method({
  25614. selector: "methodClass",
  25615. protocol: "accessing",
  25616. //>>excludeStart("ide", pragmas.excludeIdeData);
  25617. args: [],
  25618. source: "methodClass\x0a\x09^ methodClass",
  25619. referencedClasses: [],
  25620. //>>excludeEnd("ide");
  25621. pragmas: [],
  25622. messageSends: []
  25623. }, function ($methodClass){ return function (){
  25624. var self=this,$self=this;
  25625. return $self.methodClass;
  25626. }; }),
  25627. $globals.CompiledMethod);
  25628. $core.addMethod(
  25629. $core.method({
  25630. selector: "origin",
  25631. protocol: "accessing",
  25632. //>>excludeStart("ide", pragmas.excludeIdeData);
  25633. args: [],
  25634. source: "origin\x0a\x09^ owner",
  25635. referencedClasses: [],
  25636. //>>excludeEnd("ide");
  25637. pragmas: [],
  25638. messageSends: []
  25639. }, function ($methodClass){ return function (){
  25640. var self=this,$self=this;
  25641. return $self.owner;
  25642. }; }),
  25643. $globals.CompiledMethod);
  25644. $core.addMethod(
  25645. $core.method({
  25646. selector: "package",
  25647. protocol: "accessing",
  25648. //>>excludeStart("ide", pragmas.excludeIdeData);
  25649. args: [],
  25650. source: "package\x0a\x09\x22Answer the package the receiver belongs to:\x0a\x09- if it is an extension method, answer the corresponding package\x0a\x09- else answer the `methodClass` package\x22\x0a\x09\x0a\x09^ self origin ifNotNil: [ :class | class packageOfProtocol: self protocol ]",
  25651. referencedClasses: [],
  25652. //>>excludeEnd("ide");
  25653. pragmas: [],
  25654. messageSends: ["ifNotNil:", "origin", "packageOfProtocol:", "protocol"]
  25655. }, function ($methodClass){ return function (){
  25656. var self=this,$self=this;
  25657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25658. return $core.withContext(function($ctx1) {
  25659. //>>excludeEnd("ctx");
  25660. var $1;
  25661. $1=$self._origin();
  25662. if($1 == null || $1.a$nil){
  25663. return $1;
  25664. } else {
  25665. var class_;
  25666. class_=$1;
  25667. return $recv(class_)._packageOfProtocol_($self._protocol());
  25668. }
  25669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25670. }, function($ctx1) {$ctx1.fill(self,"package",{})});
  25671. //>>excludeEnd("ctx");
  25672. }; }),
  25673. $globals.CompiledMethod);
  25674. $core.addMethod(
  25675. $core.method({
  25676. selector: "pragmas",
  25677. protocol: "accessing",
  25678. //>>excludeStart("ide", pragmas.excludeIdeData);
  25679. args: [],
  25680. source: "pragmas\x0a\x09^ self basicPragmas collect: [ :each | Message selector: each first arguments: each second ]",
  25681. referencedClasses: ["Message"],
  25682. //>>excludeEnd("ide");
  25683. pragmas: [],
  25684. messageSends: ["collect:", "basicPragmas", "selector:arguments:", "first", "second"]
  25685. }, function ($methodClass){ return function (){
  25686. var self=this,$self=this;
  25687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25688. return $core.withContext(function($ctx1) {
  25689. //>>excludeEnd("ctx");
  25690. return $recv($self._basicPragmas())._collect_((function(each){
  25691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25692. return $core.withContext(function($ctx2) {
  25693. //>>excludeEnd("ctx");
  25694. return $recv($globals.Message)._selector_arguments_($recv(each)._first(),$recv(each)._second());
  25695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25696. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  25697. //>>excludeEnd("ctx");
  25698. }));
  25699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25700. }, function($ctx1) {$ctx1.fill(self,"pragmas",{})});
  25701. //>>excludeEnd("ctx");
  25702. }; }),
  25703. $globals.CompiledMethod);
  25704. $core.addMethod(
  25705. $core.method({
  25706. selector: "pragmas:",
  25707. protocol: "accessing",
  25708. //>>excludeStart("ide", pragmas.excludeIdeData);
  25709. args: ["anArrayOfMessages"],
  25710. source: "pragmas: anArrayOfMessages\x0a\x09pragmas := anArrayOfMessages collect: [ :each | { each selector. each arguments } ]",
  25711. referencedClasses: [],
  25712. //>>excludeEnd("ide");
  25713. pragmas: [],
  25714. messageSends: ["collect:", "selector", "arguments"]
  25715. }, function ($methodClass){ return function (anArrayOfMessages){
  25716. var self=this,$self=this;
  25717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25718. return $core.withContext(function($ctx1) {
  25719. //>>excludeEnd("ctx");
  25720. $self.pragmas=$recv(anArrayOfMessages)._collect_((function(each){
  25721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25722. return $core.withContext(function($ctx2) {
  25723. //>>excludeEnd("ctx");
  25724. return [$recv(each)._selector(),$recv(each)._arguments()];
  25725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25726. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  25727. //>>excludeEnd("ctx");
  25728. }));
  25729. return self;
  25730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25731. }, function($ctx1) {$ctx1.fill(self,"pragmas:",{anArrayOfMessages:anArrayOfMessages})});
  25732. //>>excludeEnd("ctx");
  25733. }; }),
  25734. $globals.CompiledMethod);
  25735. $core.addMethod(
  25736. $core.method({
  25737. selector: "protocol",
  25738. protocol: "accessing",
  25739. //>>excludeStart("ide", pragmas.excludeIdeData);
  25740. args: [],
  25741. source: "protocol\x0a\x09^ protocol ifNil: [ self defaultProtocol ]",
  25742. referencedClasses: [],
  25743. //>>excludeEnd("ide");
  25744. pragmas: [],
  25745. messageSends: ["ifNil:", "defaultProtocol"]
  25746. }, function ($methodClass){ return function (){
  25747. var self=this,$self=this;
  25748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25749. return $core.withContext(function($ctx1) {
  25750. //>>excludeEnd("ctx");
  25751. var $1;
  25752. $1=$self.protocol;
  25753. if($1 == null || $1.a$nil){
  25754. return $self._defaultProtocol();
  25755. } else {
  25756. return $1;
  25757. }
  25758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25759. }, function($ctx1) {$ctx1.fill(self,"protocol",{})});
  25760. //>>excludeEnd("ctx");
  25761. }; }),
  25762. $globals.CompiledMethod);
  25763. $core.addMethod(
  25764. $core.method({
  25765. selector: "protocol:",
  25766. protocol: "accessing",
  25767. //>>excludeStart("ide", pragmas.excludeIdeData);
  25768. args: ["aString"],
  25769. source: "protocol: aString\x0a\x09| oldProtocol |\x0a\x09oldProtocol := self protocol.\x0a\x09protocol := aString.\x0a\x0a\x09oldProtocol ifNotNil: [\x0a\x09\x09SystemAnnouncer current announce: (MethodMoved new\x0a\x09\x09\x09method: self;\x0a\x09\x09\x09oldProtocol: oldProtocol;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09self origin ifNotNil: [ :origin |\x0a\x09\x09origin organization addElement: aString.\x0a\x09\x09origin removeProtocolIfEmpty: oldProtocol ]",
  25770. referencedClasses: ["SystemAnnouncer", "MethodMoved"],
  25771. //>>excludeEnd("ide");
  25772. pragmas: [],
  25773. messageSends: ["protocol", "ifNotNil:", "announce:", "current", "method:", "new", "oldProtocol:", "yourself", "origin", "addElement:", "organization", "removeProtocolIfEmpty:"]
  25774. }, function ($methodClass){ return function (aString){
  25775. var self=this,$self=this;
  25776. var oldProtocol;
  25777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25778. return $core.withContext(function($ctx1) {
  25779. //>>excludeEnd("ctx");
  25780. var $1,$2,$3,$4;
  25781. oldProtocol=$self._protocol();
  25782. $self.protocol=aString;
  25783. $1=oldProtocol;
  25784. if($1 == null || $1.a$nil){
  25785. $1;
  25786. } else {
  25787. $2=$recv($globals.SystemAnnouncer)._current();
  25788. $3=$recv($globals.MethodMoved)._new();
  25789. $recv($3)._method_(self);
  25790. $recv($3)._oldProtocol_(oldProtocol);
  25791. $recv($2)._announce_($recv($3)._yourself());
  25792. }
  25793. $4=$self._origin();
  25794. if($4 == null || $4.a$nil){
  25795. $4;
  25796. } else {
  25797. var origin;
  25798. origin=$4;
  25799. $recv($recv(origin)._organization())._addElement_(aString);
  25800. $recv(origin)._removeProtocolIfEmpty_(oldProtocol);
  25801. }
  25802. return self;
  25803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25804. }, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString,oldProtocol:oldProtocol})});
  25805. //>>excludeEnd("ctx");
  25806. }; }),
  25807. $globals.CompiledMethod);
  25808. $core.addMethod(
  25809. $core.method({
  25810. selector: "referencedClasses",
  25811. protocol: "accessing",
  25812. //>>excludeStart("ide", pragmas.excludeIdeData);
  25813. args: [],
  25814. source: "referencedClasses\x0a\x09^ referencedClasses",
  25815. referencedClasses: [],
  25816. //>>excludeEnd("ide");
  25817. pragmas: [],
  25818. messageSends: []
  25819. }, function ($methodClass){ return function (){
  25820. var self=this,$self=this;
  25821. return $self.referencedClasses;
  25822. }; }),
  25823. $globals.CompiledMethod);
  25824. $core.addMethod(
  25825. $core.method({
  25826. selector: "selector",
  25827. protocol: "accessing",
  25828. //>>excludeStart("ide", pragmas.excludeIdeData);
  25829. args: [],
  25830. source: "selector\x0a\x09^ selector",
  25831. referencedClasses: [],
  25832. //>>excludeEnd("ide");
  25833. pragmas: [],
  25834. messageSends: []
  25835. }, function ($methodClass){ return function (){
  25836. var self=this,$self=this;
  25837. return $self.selector;
  25838. }; }),
  25839. $globals.CompiledMethod);
  25840. $core.addMethod(
  25841. $core.method({
  25842. selector: "selector:",
  25843. protocol: "accessing",
  25844. //>>excludeStart("ide", pragmas.excludeIdeData);
  25845. args: ["aString"],
  25846. source: "selector: aString\x0a\x09selector := aString",
  25847. referencedClasses: [],
  25848. //>>excludeEnd("ide");
  25849. pragmas: [],
  25850. messageSends: []
  25851. }, function ($methodClass){ return function (aString){
  25852. var self=this,$self=this;
  25853. $self.selector=aString;
  25854. return self;
  25855. }; }),
  25856. $globals.CompiledMethod);
  25857. $core.addMethod(
  25858. $core.method({
  25859. selector: "sendTo:arguments:",
  25860. protocol: "evaluating",
  25861. //>>excludeStart("ide", pragmas.excludeIdeData);
  25862. args: ["anObject", "aCollection"],
  25863. source: "sendTo: anObject arguments: aCollection\x0a\x09^ self fn applyTo: anObject arguments: aCollection",
  25864. referencedClasses: [],
  25865. //>>excludeEnd("ide");
  25866. pragmas: [],
  25867. messageSends: ["applyTo:arguments:", "fn"]
  25868. }, function ($methodClass){ return function (anObject,aCollection){
  25869. var self=this,$self=this;
  25870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25871. return $core.withContext(function($ctx1) {
  25872. //>>excludeEnd("ctx");
  25873. return $recv($self._fn())._applyTo_arguments_(anObject,aCollection);
  25874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25875. }, function($ctx1) {$ctx1.fill(self,"sendTo:arguments:",{anObject:anObject,aCollection:aCollection})});
  25876. //>>excludeEnd("ctx");
  25877. }; }),
  25878. $globals.CompiledMethod);
  25879. $core.addMethod(
  25880. $core.method({
  25881. selector: "source",
  25882. protocol: "accessing",
  25883. //>>excludeStart("ide", pragmas.excludeIdeData);
  25884. args: [],
  25885. source: "source\x0a\x09^ source ifNil: [ '' ]",
  25886. referencedClasses: [],
  25887. //>>excludeEnd("ide");
  25888. pragmas: [],
  25889. messageSends: ["ifNil:"]
  25890. }, function ($methodClass){ return function (){
  25891. var self=this,$self=this;
  25892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25893. return $core.withContext(function($ctx1) {
  25894. //>>excludeEnd("ctx");
  25895. var $1;
  25896. $1=$self.source;
  25897. if($1 == null || $1.a$nil){
  25898. return "";
  25899. } else {
  25900. return $1;
  25901. }
  25902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25903. }, function($ctx1) {$ctx1.fill(self,"source",{})});
  25904. //>>excludeEnd("ctx");
  25905. }; }),
  25906. $globals.CompiledMethod);
  25907. $core.addMethod(
  25908. $core.method({
  25909. selector: "source:",
  25910. protocol: "accessing",
  25911. //>>excludeStart("ide", pragmas.excludeIdeData);
  25912. args: ["aString"],
  25913. source: "source: aString\x0a\x09source := aString",
  25914. referencedClasses: [],
  25915. //>>excludeEnd("ide");
  25916. pragmas: [],
  25917. messageSends: []
  25918. }, function ($methodClass){ return function (aString){
  25919. var self=this,$self=this;
  25920. $self.source=aString;
  25921. return self;
  25922. }; }),
  25923. $globals.CompiledMethod);
  25924. $core.addClass("ForkPool", $globals.Object, "Kernel-Methods");
  25925. $core.setSlots($globals.ForkPool, ["poolSize", "maxPoolSize", "queue", "worker"]);
  25926. //>>excludeStart("ide", pragmas.excludeIdeData);
  25927. $globals.ForkPool.comment="I am responsible for handling forked blocks.\x0aThe pool size sets the maximum concurrent forked blocks.\x0a\x0a## API\x0a\x0aThe default instance is accessed with `#default`.\x0aThe maximum concurrent forked blocks can be set with `#maxPoolSize:`.\x0a\x0aForking is done via `BlockClosure >> #fork`";
  25928. //>>excludeEnd("ide");
  25929. $core.addMethod(
  25930. $core.method({
  25931. selector: "addWorker",
  25932. protocol: "private",
  25933. //>>excludeStart("ide", pragmas.excludeIdeData);
  25934. args: [],
  25935. source: "addWorker\x0a\x09worker valueWithTimeout: 0.\x0a\x09poolSize := poolSize + 1",
  25936. referencedClasses: [],
  25937. //>>excludeEnd("ide");
  25938. pragmas: [],
  25939. messageSends: ["valueWithTimeout:", "+"]
  25940. }, function ($methodClass){ return function (){
  25941. var self=this,$self=this;
  25942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25943. return $core.withContext(function($ctx1) {
  25944. //>>excludeEnd("ctx");
  25945. $recv($self.worker)._valueWithTimeout_((0));
  25946. $self.poolSize=$recv($self.poolSize).__plus((1));
  25947. return self;
  25948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25949. }, function($ctx1) {$ctx1.fill(self,"addWorker",{})});
  25950. //>>excludeEnd("ctx");
  25951. }; }),
  25952. $globals.ForkPool);
  25953. $core.addMethod(
  25954. $core.method({
  25955. selector: "defaultMaxPoolSize",
  25956. protocol: "defaults",
  25957. //>>excludeStart("ide", pragmas.excludeIdeData);
  25958. args: [],
  25959. source: "defaultMaxPoolSize\x0a\x09^ self class defaultMaxPoolSize",
  25960. referencedClasses: [],
  25961. //>>excludeEnd("ide");
  25962. pragmas: [],
  25963. messageSends: ["defaultMaxPoolSize", "class"]
  25964. }, function ($methodClass){ return function (){
  25965. var self=this,$self=this;
  25966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25967. return $core.withContext(function($ctx1) {
  25968. //>>excludeEnd("ctx");
  25969. return $recv($self._class())._defaultMaxPoolSize();
  25970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25971. }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{})});
  25972. //>>excludeEnd("ctx");
  25973. }; }),
  25974. $globals.ForkPool);
  25975. $core.addMethod(
  25976. $core.method({
  25977. selector: "fork:",
  25978. protocol: "actions",
  25979. //>>excludeStart("ide", pragmas.excludeIdeData);
  25980. args: ["aBlock"],
  25981. source: "fork: aBlock\x0a\x09poolSize < self maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue nextPut: aBlock",
  25982. referencedClasses: [],
  25983. //>>excludeEnd("ide");
  25984. pragmas: [],
  25985. messageSends: ["ifTrue:", "<", "maxPoolSize", "addWorker", "nextPut:"]
  25986. }, function ($methodClass){ return function (aBlock){
  25987. var self=this,$self=this;
  25988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25989. return $core.withContext(function($ctx1) {
  25990. //>>excludeEnd("ctx");
  25991. if($core.assert($recv($self.poolSize).__lt($self._maxPoolSize()))){
  25992. $self._addWorker();
  25993. }
  25994. $recv($self.queue)._nextPut_(aBlock);
  25995. return self;
  25996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25997. }, function($ctx1) {$ctx1.fill(self,"fork:",{aBlock:aBlock})});
  25998. //>>excludeEnd("ctx");
  25999. }; }),
  26000. $globals.ForkPool);
  26001. $core.addMethod(
  26002. $core.method({
  26003. selector: "initialize",
  26004. protocol: "initialization",
  26005. //>>excludeStart("ide", pragmas.excludeIdeData);
  26006. args: [],
  26007. source: "initialize\x0a\x09super initialize.\x0a\x09\x0a\x09poolSize := 0.\x0a\x09queue := Queue new.\x0a\x09worker := self makeWorker",
  26008. referencedClasses: ["Queue"],
  26009. //>>excludeEnd("ide");
  26010. pragmas: [],
  26011. messageSends: ["initialize", "new", "makeWorker"]
  26012. }, function ($methodClass){ return function (){
  26013. var self=this,$self=this;
  26014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26015. return $core.withContext(function($ctx1) {
  26016. //>>excludeEnd("ctx");
  26017. [(
  26018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26019. $ctx1.supercall = true,
  26020. //>>excludeEnd("ctx");
  26021. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  26022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26023. ,$ctx1.supercall = false
  26024. //>>excludeEnd("ctx");
  26025. ][0];
  26026. $self.poolSize=(0);
  26027. $self.queue=$recv($globals.Queue)._new();
  26028. $self.worker=$self._makeWorker();
  26029. return self;
  26030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26031. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  26032. //>>excludeEnd("ctx");
  26033. }; }),
  26034. $globals.ForkPool);
  26035. $core.addMethod(
  26036. $core.method({
  26037. selector: "makeWorker",
  26038. protocol: "initialization",
  26039. //>>excludeStart("ide", pragmas.excludeIdeData);
  26040. args: [],
  26041. source: "makeWorker\x0a\x09| sentinel |\x0a\x09sentinel := Object new.\x0a\x09^ [ | block |\x0a\x09\x09poolSize := poolSize - 1.\x0a\x09\x09block := queue nextIfAbsent: [ sentinel ].\x0a\x09\x09block == sentinel ifFalse: [\x0a\x09\x09\x09[ block value ] ensure: [ self addWorker ] ]]",
  26042. referencedClasses: ["Object"],
  26043. //>>excludeEnd("ide");
  26044. pragmas: [],
  26045. messageSends: ["new", "-", "nextIfAbsent:", "ifFalse:", "==", "ensure:", "value", "addWorker"]
  26046. }, function ($methodClass){ return function (){
  26047. var self=this,$self=this;
  26048. var sentinel;
  26049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26050. return $core.withContext(function($ctx1) {
  26051. //>>excludeEnd("ctx");
  26052. sentinel=$recv($globals.Object)._new();
  26053. return (function(){
  26054. var block;
  26055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26056. return $core.withContext(function($ctx2) {
  26057. //>>excludeEnd("ctx");
  26058. $self.poolSize=$recv($self.poolSize).__minus((1));
  26059. block=$recv($self.queue)._nextIfAbsent_((function(){
  26060. return sentinel;
  26061. }));
  26062. if(!$core.assert($recv(block).__eq_eq(sentinel))){
  26063. return $recv((function(){
  26064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26065. return $core.withContext(function($ctx3) {
  26066. //>>excludeEnd("ctx");
  26067. return $recv(block)._value();
  26068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26069. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  26070. //>>excludeEnd("ctx");
  26071. }))._ensure_((function(){
  26072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26073. return $core.withContext(function($ctx3) {
  26074. //>>excludeEnd("ctx");
  26075. return $self._addWorker();
  26076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26077. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
  26078. //>>excludeEnd("ctx");
  26079. }));
  26080. }
  26081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26082. }, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1,1)});
  26083. //>>excludeEnd("ctx");
  26084. });
  26085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26086. }, function($ctx1) {$ctx1.fill(self,"makeWorker",{sentinel:sentinel})});
  26087. //>>excludeEnd("ctx");
  26088. }; }),
  26089. $globals.ForkPool);
  26090. $core.addMethod(
  26091. $core.method({
  26092. selector: "maxPoolSize",
  26093. protocol: "accessing",
  26094. //>>excludeStart("ide", pragmas.excludeIdeData);
  26095. args: [],
  26096. source: "maxPoolSize\x0a\x09^ maxPoolSize ifNil: [ self defaultMaxPoolSize ]",
  26097. referencedClasses: [],
  26098. //>>excludeEnd("ide");
  26099. pragmas: [],
  26100. messageSends: ["ifNil:", "defaultMaxPoolSize"]
  26101. }, function ($methodClass){ return function (){
  26102. var self=this,$self=this;
  26103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26104. return $core.withContext(function($ctx1) {
  26105. //>>excludeEnd("ctx");
  26106. var $1;
  26107. $1=$self.maxPoolSize;
  26108. if($1 == null || $1.a$nil){
  26109. return $self._defaultMaxPoolSize();
  26110. } else {
  26111. return $1;
  26112. }
  26113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26114. }, function($ctx1) {$ctx1.fill(self,"maxPoolSize",{})});
  26115. //>>excludeEnd("ctx");
  26116. }; }),
  26117. $globals.ForkPool);
  26118. $core.addMethod(
  26119. $core.method({
  26120. selector: "maxPoolSize:",
  26121. protocol: "accessing",
  26122. //>>excludeStart("ide", pragmas.excludeIdeData);
  26123. args: ["anInteger"],
  26124. source: "maxPoolSize: anInteger\x0a\x09maxPoolSize := anInteger",
  26125. referencedClasses: [],
  26126. //>>excludeEnd("ide");
  26127. pragmas: [],
  26128. messageSends: []
  26129. }, function ($methodClass){ return function (anInteger){
  26130. var self=this,$self=this;
  26131. $self.maxPoolSize=anInteger;
  26132. return self;
  26133. }; }),
  26134. $globals.ForkPool);
  26135. $core.setSlots($globals.ForkPool.a$cls, ["default"]);
  26136. $core.addMethod(
  26137. $core.method({
  26138. selector: "default",
  26139. protocol: "accessing",
  26140. //>>excludeStart("ide", pragmas.excludeIdeData);
  26141. args: [],
  26142. source: "default\x0a\x09^ default ifNil: [ default := self new ]",
  26143. referencedClasses: [],
  26144. //>>excludeEnd("ide");
  26145. pragmas: [],
  26146. messageSends: ["ifNil:", "new"]
  26147. }, function ($methodClass){ return function (){
  26148. var self=this,$self=this;
  26149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26150. return $core.withContext(function($ctx1) {
  26151. //>>excludeEnd("ctx");
  26152. var $1;
  26153. $1=$self.default;
  26154. if($1 == null || $1.a$nil){
  26155. $self.default=$self._new();
  26156. return $self.default;
  26157. } else {
  26158. return $1;
  26159. }
  26160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26161. }, function($ctx1) {$ctx1.fill(self,"default",{})});
  26162. //>>excludeEnd("ctx");
  26163. }; }),
  26164. $globals.ForkPool.a$cls);
  26165. $core.addMethod(
  26166. $core.method({
  26167. selector: "defaultMaxPoolSize",
  26168. protocol: "accessing",
  26169. //>>excludeStart("ide", pragmas.excludeIdeData);
  26170. args: [],
  26171. source: "defaultMaxPoolSize\x0a\x09^ 100",
  26172. referencedClasses: [],
  26173. //>>excludeEnd("ide");
  26174. pragmas: [],
  26175. messageSends: []
  26176. }, function ($methodClass){ return function (){
  26177. var self=this,$self=this;
  26178. return (100);
  26179. }; }),
  26180. $globals.ForkPool.a$cls);
  26181. $core.addMethod(
  26182. $core.method({
  26183. selector: "resetDefault",
  26184. protocol: "accessing",
  26185. //>>excludeStart("ide", pragmas.excludeIdeData);
  26186. args: [],
  26187. source: "resetDefault\x0a\x09default := nil",
  26188. referencedClasses: [],
  26189. //>>excludeEnd("ide");
  26190. pragmas: [],
  26191. messageSends: []
  26192. }, function ($methodClass){ return function (){
  26193. var self=this,$self=this;
  26194. $self.default=nil;
  26195. return self;
  26196. }; }),
  26197. $globals.ForkPool.a$cls);
  26198. $core.addClass("Message", $globals.Object, "Kernel-Methods");
  26199. $core.setSlots($globals.Message, ["selector", "arguments"]);
  26200. //>>excludeStart("ide", pragmas.excludeIdeData);
  26201. $globals.Message.comment="In general, the system does not use instances of me for efficiency reasons.\x0aHowever, when a message is not understood by its receiver, the interpreter will make up an instance of it in order to capture the information involved in an actual message transmission.\x0aThis instance is sent it as an argument with the message `#doesNotUnderstand:` to the receiver.\x0a\x0aSee boot.js, `messageNotUnderstood` and its counterpart `Object >> #doesNotUnderstand:`\x0a\x0a## API\x0a\x0aBesides accessing methods, `#sendTo:` provides a convenient way to send a message to an object.";
  26202. //>>excludeEnd("ide");
  26203. $core.addMethod(
  26204. $core.method({
  26205. selector: "arguments",
  26206. protocol: "accessing",
  26207. //>>excludeStart("ide", pragmas.excludeIdeData);
  26208. args: [],
  26209. source: "arguments\x0a\x09^ arguments",
  26210. referencedClasses: [],
  26211. //>>excludeEnd("ide");
  26212. pragmas: [],
  26213. messageSends: []
  26214. }, function ($methodClass){ return function (){
  26215. var self=this,$self=this;
  26216. return $self.arguments;
  26217. }; }),
  26218. $globals.Message);
  26219. $core.addMethod(
  26220. $core.method({
  26221. selector: "arguments:",
  26222. protocol: "accessing",
  26223. //>>excludeStart("ide", pragmas.excludeIdeData);
  26224. args: ["anArray"],
  26225. source: "arguments: anArray\x0a\x09arguments := anArray",
  26226. referencedClasses: [],
  26227. //>>excludeEnd("ide");
  26228. pragmas: [],
  26229. messageSends: []
  26230. }, function ($methodClass){ return function (anArray){
  26231. var self=this,$self=this;
  26232. $self.arguments=anArray;
  26233. return self;
  26234. }; }),
  26235. $globals.Message);
  26236. $core.addMethod(
  26237. $core.method({
  26238. selector: "printOn:",
  26239. protocol: "printing",
  26240. //>>excludeStart("ide", pragmas.excludeIdeData);
  26241. args: ["aStream"],
  26242. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream\x0a\x09\x09nextPutAll: '(';\x0a\x09\x09nextPutAll: self selector;\x0a\x09\x09nextPutAll: ')'",
  26243. referencedClasses: [],
  26244. //>>excludeEnd("ide");
  26245. pragmas: [],
  26246. messageSends: ["printOn:", "nextPutAll:", "selector"]
  26247. }, function ($methodClass){ return function (aStream){
  26248. var self=this,$self=this;
  26249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26250. return $core.withContext(function($ctx1) {
  26251. //>>excludeEnd("ctx");
  26252. [(
  26253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26254. $ctx1.supercall = true,
  26255. //>>excludeEnd("ctx");
  26256. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  26257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26258. ,$ctx1.supercall = false
  26259. //>>excludeEnd("ctx");
  26260. ][0];
  26261. [$recv(aStream)._nextPutAll_("(")
  26262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26263. ,$ctx1.sendIdx["nextPutAll:"]=1
  26264. //>>excludeEnd("ctx");
  26265. ][0];
  26266. [$recv(aStream)._nextPutAll_($self._selector())
  26267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26268. ,$ctx1.sendIdx["nextPutAll:"]=2
  26269. //>>excludeEnd("ctx");
  26270. ][0];
  26271. $recv(aStream)._nextPutAll_(")");
  26272. return self;
  26273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26274. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  26275. //>>excludeEnd("ctx");
  26276. }; }),
  26277. $globals.Message);
  26278. $core.addMethod(
  26279. $core.method({
  26280. selector: "selector",
  26281. protocol: "accessing",
  26282. //>>excludeStart("ide", pragmas.excludeIdeData);
  26283. args: [],
  26284. source: "selector\x0a\x09^ selector",
  26285. referencedClasses: [],
  26286. //>>excludeEnd("ide");
  26287. pragmas: [],
  26288. messageSends: []
  26289. }, function ($methodClass){ return function (){
  26290. var self=this,$self=this;
  26291. return $self.selector;
  26292. }; }),
  26293. $globals.Message);
  26294. $core.addMethod(
  26295. $core.method({
  26296. selector: "selector:",
  26297. protocol: "accessing",
  26298. //>>excludeStart("ide", pragmas.excludeIdeData);
  26299. args: ["aString"],
  26300. source: "selector: aString\x0a\x09selector := aString",
  26301. referencedClasses: [],
  26302. //>>excludeEnd("ide");
  26303. pragmas: [],
  26304. messageSends: []
  26305. }, function ($methodClass){ return function (aString){
  26306. var self=this,$self=this;
  26307. $self.selector=aString;
  26308. return self;
  26309. }; }),
  26310. $globals.Message);
  26311. $core.addMethod(
  26312. $core.method({
  26313. selector: "sendTo:",
  26314. protocol: "actions",
  26315. //>>excludeStart("ide", pragmas.excludeIdeData);
  26316. args: ["anObject"],
  26317. source: "sendTo: anObject\x0a\x09^ anObject perform: self selector withArguments: self arguments",
  26318. referencedClasses: [],
  26319. //>>excludeEnd("ide");
  26320. pragmas: [],
  26321. messageSends: ["perform:withArguments:", "selector", "arguments"]
  26322. }, function ($methodClass){ return function (anObject){
  26323. var self=this,$self=this;
  26324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26325. return $core.withContext(function($ctx1) {
  26326. //>>excludeEnd("ctx");
  26327. return $recv(anObject)._perform_withArguments_($self._selector(),$self._arguments());
  26328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26329. }, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject})});
  26330. //>>excludeEnd("ctx");
  26331. }; }),
  26332. $globals.Message);
  26333. $core.addMethod(
  26334. $core.method({
  26335. selector: "selector:arguments:",
  26336. protocol: "instance creation",
  26337. //>>excludeStart("ide", pragmas.excludeIdeData);
  26338. args: ["aString", "anArray"],
  26339. source: "selector: aString arguments: anArray\x0a\x09^ self new\x0a\x09\x09selector: aString;\x0a\x09\x09arguments: anArray;\x0a\x09\x09yourself",
  26340. referencedClasses: [],
  26341. //>>excludeEnd("ide");
  26342. pragmas: [],
  26343. messageSends: ["selector:", "new", "arguments:", "yourself"]
  26344. }, function ($methodClass){ return function (aString,anArray){
  26345. var self=this,$self=this;
  26346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26347. return $core.withContext(function($ctx1) {
  26348. //>>excludeEnd("ctx");
  26349. var $1;
  26350. $1=$self._new();
  26351. $recv($1)._selector_(aString);
  26352. $recv($1)._arguments_(anArray);
  26353. return $recv($1)._yourself();
  26354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26355. }, function($ctx1) {$ctx1.fill(self,"selector:arguments:",{aString:aString,anArray:anArray})});
  26356. //>>excludeEnd("ctx");
  26357. }; }),
  26358. $globals.Message.a$cls);
  26359. $core.addMethod(
  26360. $core.method({
  26361. selector: "selector:arguments:notUnderstoodBy:",
  26362. protocol: "dnu handling",
  26363. //>>excludeStart("ide", pragmas.excludeIdeData);
  26364. args: ["aString", "anArray", "anObject"],
  26365. source: "selector: aString arguments: anArray notUnderstoodBy: anObject\x0a\x09\x22Creates the message and passes it to #doesNotUnderstand:.\x0a\x09Used by kernel to handle MNU.\x22\x0a\x09^ anObject doesNotUnderstand:\x0a\x09\x09(self selector: aString arguments: anArray)",
  26366. referencedClasses: [],
  26367. //>>excludeEnd("ide");
  26368. pragmas: [],
  26369. messageSends: ["doesNotUnderstand:", "selector:arguments:"]
  26370. }, function ($methodClass){ return function (aString,anArray,anObject){
  26371. var self=this,$self=this;
  26372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26373. return $core.withContext(function($ctx1) {
  26374. //>>excludeEnd("ctx");
  26375. return $recv(anObject)._doesNotUnderstand_($self._selector_arguments_(aString,anArray));
  26376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26377. }, function($ctx1) {$ctx1.fill(self,"selector:arguments:notUnderstoodBy:",{aString:aString,anArray:anArray,anObject:anObject})});
  26378. //>>excludeEnd("ctx");
  26379. }; }),
  26380. $globals.Message.a$cls);
  26381. $core.addClass("MessageSend", $globals.Object, "Kernel-Methods");
  26382. $core.setSlots($globals.MessageSend, ["receiver", "message"]);
  26383. //>>excludeStart("ide", pragmas.excludeIdeData);
  26384. $globals.MessageSend.comment="I encapsulate message sends to objects. Arguments can be either predefined or supplied when the message send is performed. \x0a\x0a## API\x0a\x0aUse `#value` to perform a message send with its predefined arguments and `#value:*` if additonal arguments have to supplied.";
  26385. //>>excludeEnd("ide");
  26386. $core.addMethod(
  26387. $core.method({
  26388. selector: "arguments",
  26389. protocol: "accessing",
  26390. //>>excludeStart("ide", pragmas.excludeIdeData);
  26391. args: [],
  26392. source: "arguments\x0a\x09^ message arguments",
  26393. referencedClasses: [],
  26394. //>>excludeEnd("ide");
  26395. pragmas: [],
  26396. messageSends: ["arguments"]
  26397. }, function ($methodClass){ return function (){
  26398. var self=this,$self=this;
  26399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26400. return $core.withContext(function($ctx1) {
  26401. //>>excludeEnd("ctx");
  26402. return $recv($self.message)._arguments();
  26403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26404. }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
  26405. //>>excludeEnd("ctx");
  26406. }; }),
  26407. $globals.MessageSend);
  26408. $core.addMethod(
  26409. $core.method({
  26410. selector: "arguments:",
  26411. protocol: "accessing",
  26412. //>>excludeStart("ide", pragmas.excludeIdeData);
  26413. args: ["anArray"],
  26414. source: "arguments: anArray\x0a\x09message arguments: anArray",
  26415. referencedClasses: [],
  26416. //>>excludeEnd("ide");
  26417. pragmas: [],
  26418. messageSends: ["arguments:"]
  26419. }, function ($methodClass){ return function (anArray){
  26420. var self=this,$self=this;
  26421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26422. return $core.withContext(function($ctx1) {
  26423. //>>excludeEnd("ctx");
  26424. $recv($self.message)._arguments_(anArray);
  26425. return self;
  26426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26427. }, function($ctx1) {$ctx1.fill(self,"arguments:",{anArray:anArray})});
  26428. //>>excludeEnd("ctx");
  26429. }; }),
  26430. $globals.MessageSend);
  26431. $core.addMethod(
  26432. $core.method({
  26433. selector: "initialize",
  26434. protocol: "initialization",
  26435. //>>excludeStart("ide", pragmas.excludeIdeData);
  26436. args: [],
  26437. source: "initialize\x0a\x09super initialize.\x0a\x09message := Message new",
  26438. referencedClasses: ["Message"],
  26439. //>>excludeEnd("ide");
  26440. pragmas: [],
  26441. messageSends: ["initialize", "new"]
  26442. }, function ($methodClass){ return function (){
  26443. var self=this,$self=this;
  26444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26445. return $core.withContext(function($ctx1) {
  26446. //>>excludeEnd("ctx");
  26447. [(
  26448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26449. $ctx1.supercall = true,
  26450. //>>excludeEnd("ctx");
  26451. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  26452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26453. ,$ctx1.supercall = false
  26454. //>>excludeEnd("ctx");
  26455. ][0];
  26456. $self.message=$recv($globals.Message)._new();
  26457. return self;
  26458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26459. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  26460. //>>excludeEnd("ctx");
  26461. }; }),
  26462. $globals.MessageSend);
  26463. $core.addMethod(
  26464. $core.method({
  26465. selector: "printOn:",
  26466. protocol: "printing",
  26467. //>>excludeStart("ide", pragmas.excludeIdeData);
  26468. args: ["aStream"],
  26469. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream\x0a\x09\x09nextPutAll: '(';\x0a\x09\x09nextPutAll: self receiver;\x0a\x09\x09nextPutAll: ' >> ';\x0a\x09\x09nextPutAll: self selector;\x0a\x09\x09nextPutAll: ')'",
  26470. referencedClasses: [],
  26471. //>>excludeEnd("ide");
  26472. pragmas: [],
  26473. messageSends: ["printOn:", "nextPutAll:", "receiver", "selector"]
  26474. }, function ($methodClass){ return function (aStream){
  26475. var self=this,$self=this;
  26476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26477. return $core.withContext(function($ctx1) {
  26478. //>>excludeEnd("ctx");
  26479. [(
  26480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26481. $ctx1.supercall = true,
  26482. //>>excludeEnd("ctx");
  26483. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  26484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26485. ,$ctx1.supercall = false
  26486. //>>excludeEnd("ctx");
  26487. ][0];
  26488. [$recv(aStream)._nextPutAll_("(")
  26489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26490. ,$ctx1.sendIdx["nextPutAll:"]=1
  26491. //>>excludeEnd("ctx");
  26492. ][0];
  26493. [$recv(aStream)._nextPutAll_($self._receiver())
  26494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26495. ,$ctx1.sendIdx["nextPutAll:"]=2
  26496. //>>excludeEnd("ctx");
  26497. ][0];
  26498. [$recv(aStream)._nextPutAll_(" >> ")
  26499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26500. ,$ctx1.sendIdx["nextPutAll:"]=3
  26501. //>>excludeEnd("ctx");
  26502. ][0];
  26503. [$recv(aStream)._nextPutAll_($self._selector())
  26504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26505. ,$ctx1.sendIdx["nextPutAll:"]=4
  26506. //>>excludeEnd("ctx");
  26507. ][0];
  26508. $recv(aStream)._nextPutAll_(")");
  26509. return self;
  26510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26511. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  26512. //>>excludeEnd("ctx");
  26513. }; }),
  26514. $globals.MessageSend);
  26515. $core.addMethod(
  26516. $core.method({
  26517. selector: "receiver",
  26518. protocol: "accessing",
  26519. //>>excludeStart("ide", pragmas.excludeIdeData);
  26520. args: [],
  26521. source: "receiver\x0a\x09^ receiver",
  26522. referencedClasses: [],
  26523. //>>excludeEnd("ide");
  26524. pragmas: [],
  26525. messageSends: []
  26526. }, function ($methodClass){ return function (){
  26527. var self=this,$self=this;
  26528. return $self.receiver;
  26529. }; }),
  26530. $globals.MessageSend);
  26531. $core.addMethod(
  26532. $core.method({
  26533. selector: "receiver:",
  26534. protocol: "accessing",
  26535. //>>excludeStart("ide", pragmas.excludeIdeData);
  26536. args: ["anObject"],
  26537. source: "receiver: anObject\x0a\x09receiver := anObject",
  26538. referencedClasses: [],
  26539. //>>excludeEnd("ide");
  26540. pragmas: [],
  26541. messageSends: []
  26542. }, function ($methodClass){ return function (anObject){
  26543. var self=this,$self=this;
  26544. $self.receiver=anObject;
  26545. return self;
  26546. }; }),
  26547. $globals.MessageSend);
  26548. $core.addMethod(
  26549. $core.method({
  26550. selector: "selector",
  26551. protocol: "accessing",
  26552. //>>excludeStart("ide", pragmas.excludeIdeData);
  26553. args: [],
  26554. source: "selector\x0a\x09^ message selector",
  26555. referencedClasses: [],
  26556. //>>excludeEnd("ide");
  26557. pragmas: [],
  26558. messageSends: ["selector"]
  26559. }, function ($methodClass){ return function (){
  26560. var self=this,$self=this;
  26561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26562. return $core.withContext(function($ctx1) {
  26563. //>>excludeEnd("ctx");
  26564. return $recv($self.message)._selector();
  26565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26566. }, function($ctx1) {$ctx1.fill(self,"selector",{})});
  26567. //>>excludeEnd("ctx");
  26568. }; }),
  26569. $globals.MessageSend);
  26570. $core.addMethod(
  26571. $core.method({
  26572. selector: "selector:",
  26573. protocol: "accessing",
  26574. //>>excludeStart("ide", pragmas.excludeIdeData);
  26575. args: ["aString"],
  26576. source: "selector: aString\x0a\x09message selector: aString",
  26577. referencedClasses: [],
  26578. //>>excludeEnd("ide");
  26579. pragmas: [],
  26580. messageSends: ["selector:"]
  26581. }, function ($methodClass){ return function (aString){
  26582. var self=this,$self=this;
  26583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26584. return $core.withContext(function($ctx1) {
  26585. //>>excludeEnd("ctx");
  26586. $recv($self.message)._selector_(aString);
  26587. return self;
  26588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26589. }, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString})});
  26590. //>>excludeEnd("ctx");
  26591. }; }),
  26592. $globals.MessageSend);
  26593. $core.addMethod(
  26594. $core.method({
  26595. selector: "value",
  26596. protocol: "evaluating",
  26597. //>>excludeStart("ide", pragmas.excludeIdeData);
  26598. args: [],
  26599. source: "value\x0a\x09^ message sendTo: self receiver",
  26600. referencedClasses: [],
  26601. //>>excludeEnd("ide");
  26602. pragmas: [],
  26603. messageSends: ["sendTo:", "receiver"]
  26604. }, function ($methodClass){ return function (){
  26605. var self=this,$self=this;
  26606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26607. return $core.withContext(function($ctx1) {
  26608. //>>excludeEnd("ctx");
  26609. return $recv($self.message)._sendTo_($self._receiver());
  26610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26611. }, function($ctx1) {$ctx1.fill(self,"value",{})});
  26612. //>>excludeEnd("ctx");
  26613. }; }),
  26614. $globals.MessageSend);
  26615. $core.addMethod(
  26616. $core.method({
  26617. selector: "value:",
  26618. protocol: "evaluating",
  26619. //>>excludeStart("ide", pragmas.excludeIdeData);
  26620. args: ["anObject"],
  26621. source: "value: anObject\x0a\x09^ message \x0a\x09\x09arguments: { anObject };\x0a\x09\x09sendTo: self receiver",
  26622. referencedClasses: [],
  26623. //>>excludeEnd("ide");
  26624. pragmas: [],
  26625. messageSends: ["arguments:", "sendTo:", "receiver"]
  26626. }, function ($methodClass){ return function (anObject){
  26627. var self=this,$self=this;
  26628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26629. return $core.withContext(function($ctx1) {
  26630. //>>excludeEnd("ctx");
  26631. var $1;
  26632. $1=$self.message;
  26633. $recv($1)._arguments_([anObject]);
  26634. return $recv($1)._sendTo_($self._receiver());
  26635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26636. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
  26637. //>>excludeEnd("ctx");
  26638. }; }),
  26639. $globals.MessageSend);
  26640. $core.addMethod(
  26641. $core.method({
  26642. selector: "value:value:",
  26643. protocol: "evaluating",
  26644. //>>excludeStart("ide", pragmas.excludeIdeData);
  26645. args: ["firstArgument", "secondArgument"],
  26646. source: "value: firstArgument value: secondArgument\x0a\x09^ message \x0a\x09\x09arguments: { firstArgument. secondArgument };\x0a\x09\x09sendTo: self receiver",
  26647. referencedClasses: [],
  26648. //>>excludeEnd("ide");
  26649. pragmas: [],
  26650. messageSends: ["arguments:", "sendTo:", "receiver"]
  26651. }, function ($methodClass){ return function (firstArgument,secondArgument){
  26652. var self=this,$self=this;
  26653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26654. return $core.withContext(function($ctx1) {
  26655. //>>excludeEnd("ctx");
  26656. var $1;
  26657. $1=$self.message;
  26658. $recv($1)._arguments_([firstArgument,secondArgument]);
  26659. return $recv($1)._sendTo_($self._receiver());
  26660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26661. }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArgument:firstArgument,secondArgument:secondArgument})});
  26662. //>>excludeEnd("ctx");
  26663. }; }),
  26664. $globals.MessageSend);
  26665. $core.addMethod(
  26666. $core.method({
  26667. selector: "value:value:value:",
  26668. protocol: "evaluating",
  26669. //>>excludeStart("ide", pragmas.excludeIdeData);
  26670. args: ["firstArgument", "secondArgument", "thirdArgument"],
  26671. source: "value: firstArgument value: secondArgument value: thirdArgument\x0a\x09^ message \x0a\x09\x09arguments: { firstArgument. secondArgument. thirdArgument };\x0a\x09\x09sendTo: self receiver",
  26672. referencedClasses: [],
  26673. //>>excludeEnd("ide");
  26674. pragmas: [],
  26675. messageSends: ["arguments:", "sendTo:", "receiver"]
  26676. }, function ($methodClass){ return function (firstArgument,secondArgument,thirdArgument){
  26677. var self=this,$self=this;
  26678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26679. return $core.withContext(function($ctx1) {
  26680. //>>excludeEnd("ctx");
  26681. var $1;
  26682. $1=$self.message;
  26683. $recv($1)._arguments_([firstArgument,secondArgument,thirdArgument]);
  26684. return $recv($1)._sendTo_($self._receiver());
  26685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26686. }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArgument:firstArgument,secondArgument:secondArgument,thirdArgument:thirdArgument})});
  26687. //>>excludeEnd("ctx");
  26688. }; }),
  26689. $globals.MessageSend);
  26690. $core.addMethod(
  26691. $core.method({
  26692. selector: "valueWithPossibleArguments:",
  26693. protocol: "evaluating",
  26694. //>>excludeStart("ide", pragmas.excludeIdeData);
  26695. args: ["anArray"],
  26696. source: "valueWithPossibleArguments: anArray\x0a\x09self arguments: anArray.\x0a\x09^ self value",
  26697. referencedClasses: [],
  26698. //>>excludeEnd("ide");
  26699. pragmas: [],
  26700. messageSends: ["arguments:", "value"]
  26701. }, function ($methodClass){ return function (anArray){
  26702. var self=this,$self=this;
  26703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26704. return $core.withContext(function($ctx1) {
  26705. //>>excludeEnd("ctx");
  26706. $self._arguments_(anArray);
  26707. return $self._value();
  26708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26709. }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{anArray:anArray})});
  26710. //>>excludeEnd("ctx");
  26711. }; }),
  26712. $globals.MessageSend);
  26713. $core.addClass("MethodContext", $globals.Object, "Kernel-Methods");
  26714. $core.setSlots($globals.MethodContext, ["receiver", "evaluatedSelector", "homeContext", "index", "locals", "outerContext", "selector", "sendIdx", "supercall"]);
  26715. //>>excludeStart("ide", pragmas.excludeIdeData);
  26716. $globals.MethodContext.comment="I hold all the dynamic state associated with the execution of either a method activation resulting from a message send. I am used to build the call stack while debugging.\x0a\x0aMy instances are JavaScript `SmalltalkMethodContext` objects defined in `boot.js`.";
  26717. //>>excludeEnd("ide");
  26718. $core.addMethod(
  26719. $core.method({
  26720. selector: "basicReceiver",
  26721. protocol: "accessing",
  26722. //>>excludeStart("ide", pragmas.excludeIdeData);
  26723. args: [],
  26724. source: "basicReceiver\x0a\x09^ receiver",
  26725. referencedClasses: [],
  26726. //>>excludeEnd("ide");
  26727. pragmas: [],
  26728. messageSends: []
  26729. }, function ($methodClass){ return function (){
  26730. var self=this,$self=this;
  26731. return $self.receiver;
  26732. }; }),
  26733. $globals.MethodContext);
  26734. $core.addMethod(
  26735. $core.method({
  26736. selector: "evaluatedSelector",
  26737. protocol: "accessing",
  26738. //>>excludeStart("ide", pragmas.excludeIdeData);
  26739. args: [],
  26740. source: "evaluatedSelector\x0a\x09^ evaluatedSelector",
  26741. referencedClasses: [],
  26742. //>>excludeEnd("ide");
  26743. pragmas: [],
  26744. messageSends: []
  26745. }, function ($methodClass){ return function (){
  26746. var self=this,$self=this;
  26747. return $self.evaluatedSelector;
  26748. }; }),
  26749. $globals.MethodContext);
  26750. $core.addMethod(
  26751. $core.method({
  26752. selector: "home",
  26753. protocol: "accessing",
  26754. //>>excludeStart("ide", pragmas.excludeIdeData);
  26755. args: [],
  26756. source: "home\x0a\x09^ homeContext ifNotNil: [ :c | c hydrated ]",
  26757. referencedClasses: [],
  26758. //>>excludeEnd("ide");
  26759. pragmas: [],
  26760. messageSends: ["ifNotNil:", "hydrated"]
  26761. }, function ($methodClass){ return function (){
  26762. var self=this,$self=this;
  26763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26764. return $core.withContext(function($ctx1) {
  26765. //>>excludeEnd("ctx");
  26766. var $1;
  26767. $1=$self.homeContext;
  26768. if($1 == null || $1.a$nil){
  26769. return $1;
  26770. } else {
  26771. var c;
  26772. c=$1;
  26773. return $recv(c)._hydrated();
  26774. }
  26775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26776. }, function($ctx1) {$ctx1.fill(self,"home",{})});
  26777. //>>excludeEnd("ctx");
  26778. }; }),
  26779. $globals.MethodContext);
  26780. $core.addMethod(
  26781. $core.method({
  26782. selector: "hydrated",
  26783. protocol: "accessing",
  26784. //>>excludeStart("ide", pragmas.excludeIdeData);
  26785. args: [],
  26786. source: "hydrated\x0a\x09<inlineJS: 'if (!$self.selector && !$self.outerContext) $self.setup(self); return self;'>",
  26787. referencedClasses: [],
  26788. //>>excludeEnd("ide");
  26789. pragmas: [["inlineJS:", ["if (!$self.selector && !$self.outerContext) $self.setup(self); return self;"]]],
  26790. messageSends: []
  26791. }, function ($methodClass){ return function (){
  26792. var self=this,$self=this;
  26793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26794. return $core.withContext(function($ctx1) {
  26795. //>>excludeEnd("ctx");
  26796. if (!$self.selector && !$self.outerContext) $self.setup(self); return self;;
  26797. return self;
  26798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26799. }, function($ctx1) {$ctx1.fill(self,"hydrated",{})});
  26800. //>>excludeEnd("ctx");
  26801. }; }),
  26802. $globals.MethodContext);
  26803. $core.addMethod(
  26804. $core.method({
  26805. selector: "index",
  26806. protocol: "accessing",
  26807. //>>excludeStart("ide", pragmas.excludeIdeData);
  26808. args: [],
  26809. source: "index\x0a\x09^ index ifNil: [ 0 ]",
  26810. referencedClasses: [],
  26811. //>>excludeEnd("ide");
  26812. pragmas: [],
  26813. messageSends: ["ifNil:"]
  26814. }, function ($methodClass){ return function (){
  26815. var self=this,$self=this;
  26816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26817. return $core.withContext(function($ctx1) {
  26818. //>>excludeEnd("ctx");
  26819. var $1;
  26820. $1=$self.index;
  26821. if($1 == null || $1.a$nil){
  26822. return (0);
  26823. } else {
  26824. return $1;
  26825. }
  26826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26827. }, function($ctx1) {$ctx1.fill(self,"index",{})});
  26828. //>>excludeEnd("ctx");
  26829. }; }),
  26830. $globals.MethodContext);
  26831. $core.addMethod(
  26832. $core.method({
  26833. selector: "locals",
  26834. protocol: "accessing",
  26835. //>>excludeStart("ide", pragmas.excludeIdeData);
  26836. args: [],
  26837. source: "locals\x0a\x09^ locals",
  26838. referencedClasses: [],
  26839. //>>excludeEnd("ide");
  26840. pragmas: [],
  26841. messageSends: []
  26842. }, function ($methodClass){ return function (){
  26843. var self=this,$self=this;
  26844. return $self.locals;
  26845. }; }),
  26846. $globals.MethodContext);
  26847. $core.addMethod(
  26848. $core.method({
  26849. selector: "outerContext",
  26850. protocol: "accessing",
  26851. //>>excludeStart("ide", pragmas.excludeIdeData);
  26852. args: [],
  26853. source: "outerContext\x0a\x09^ outerContext ifNil: [ self home ] ifNotNil: [ :c | c hydrated ]",
  26854. referencedClasses: [],
  26855. //>>excludeEnd("ide");
  26856. pragmas: [],
  26857. messageSends: ["ifNil:ifNotNil:", "home", "hydrated"]
  26858. }, function ($methodClass){ return function (){
  26859. var self=this,$self=this;
  26860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26861. return $core.withContext(function($ctx1) {
  26862. //>>excludeEnd("ctx");
  26863. var $1;
  26864. $1=$self.outerContext;
  26865. if($1 == null || $1.a$nil){
  26866. return $self._home();
  26867. } else {
  26868. var c;
  26869. c=$1;
  26870. return $recv(c)._hydrated();
  26871. }
  26872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26873. }, function($ctx1) {$ctx1.fill(self,"outerContext",{})});
  26874. //>>excludeEnd("ctx");
  26875. }; }),
  26876. $globals.MethodContext);
  26877. $core.addMethod(
  26878. $core.method({
  26879. selector: "selector",
  26880. protocol: "accessing",
  26881. //>>excludeStart("ide", pragmas.excludeIdeData);
  26882. args: [],
  26883. source: "selector\x0a\x09^ selector ifNotNil: [ Smalltalk core js2st: selector ]",
  26884. referencedClasses: ["Smalltalk"],
  26885. //>>excludeEnd("ide");
  26886. pragmas: [],
  26887. messageSends: ["ifNotNil:", "js2st:", "core"]
  26888. }, function ($methodClass){ return function (){
  26889. var self=this,$self=this;
  26890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26891. return $core.withContext(function($ctx1) {
  26892. //>>excludeEnd("ctx");
  26893. var $1;
  26894. $1=$self.selector;
  26895. if($1 == null || $1.a$nil){
  26896. return $1;
  26897. } else {
  26898. return $recv($recv($globals.Smalltalk)._core())._js2st_($self.selector);
  26899. }
  26900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26901. }, function($ctx1) {$ctx1.fill(self,"selector",{})});
  26902. //>>excludeEnd("ctx");
  26903. }; }),
  26904. $globals.MethodContext);
  26905. $core.addMethod(
  26906. $core.method({
  26907. selector: "sendIndexes",
  26908. protocol: "accessing",
  26909. //>>excludeStart("ide", pragmas.excludeIdeData);
  26910. args: [],
  26911. source: "sendIndexes\x0a\x09^ sendIdx",
  26912. referencedClasses: [],
  26913. //>>excludeEnd("ide");
  26914. pragmas: [],
  26915. messageSends: []
  26916. }, function ($methodClass){ return function (){
  26917. var self=this,$self=this;
  26918. return $self.sendIdx;
  26919. }; }),
  26920. $globals.MethodContext);
  26921. $core.addMethod(
  26922. $core.method({
  26923. selector: "supercall",
  26924. protocol: "accessing",
  26925. //>>excludeStart("ide", pragmas.excludeIdeData);
  26926. args: [],
  26927. source: "supercall\x0a\x09^ supercall = true",
  26928. referencedClasses: [],
  26929. //>>excludeEnd("ide");
  26930. pragmas: [],
  26931. messageSends: ["="]
  26932. }, function ($methodClass){ return function (){
  26933. var self=this,$self=this;
  26934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26935. return $core.withContext(function($ctx1) {
  26936. //>>excludeEnd("ctx");
  26937. return $recv($self.supercall).__eq(true);
  26938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26939. }, function($ctx1) {$ctx1.fill(self,"supercall",{})});
  26940. //>>excludeEnd("ctx");
  26941. }; }),
  26942. $globals.MethodContext);
  26943. $core.addClass("NativeFunction", $globals.Object, "Kernel-Methods");
  26944. //>>excludeStart("ide", pragmas.excludeIdeData);
  26945. $globals.NativeFunction.comment="I am a wrapper around native functions, such as `WebSocket`.\x0aFor 'normal' functions (whose constructor is the JavaScript `Function` object), use `BlockClosure`.\x0a\x0a## API\x0a\x0aSee the class-side `instance creation` methods for instance creation.\x0a\x0aCreated instances will most probably be instance of `JSObjectProxy`.\x0a\x0a## Usage example:\x0a\x0a\x09| ws |\x0a\x09ws := NativeFunction constructor: 'WebSocket' value: 'ws://localhost'.\x0a\x09ws at: 'onopen' put: [ ws send: 'hey there from Amber' ]";
  26946. //>>excludeEnd("ide");
  26947. $core.addMethod(
  26948. $core.method({
  26949. selector: "constructorNamed:",
  26950. protocol: "instance creation",
  26951. //>>excludeStart("ide", pragmas.excludeIdeData);
  26952. args: ["aString"],
  26953. source: "constructorNamed: aString\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc();\x0a\x09'>",
  26954. referencedClasses: [],
  26955. //>>excludeEnd("ide");
  26956. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc();\x0a\x09"]]],
  26957. messageSends: []
  26958. }, function ($methodClass){ return function (aString){
  26959. var self=this,$self=this;
  26960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26961. return $core.withContext(function($ctx1) {
  26962. //>>excludeEnd("ctx");
  26963. var nativeFunc=$globals.Platform._globals()[aString];
  26964. return new nativeFunc();
  26965. ;
  26966. return self;
  26967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26968. }, function($ctx1) {$ctx1.fill(self,"constructorNamed:",{aString:aString})});
  26969. //>>excludeEnd("ctx");
  26970. }; }),
  26971. $globals.NativeFunction.a$cls);
  26972. $core.addMethod(
  26973. $core.method({
  26974. selector: "constructorNamed:value:",
  26975. protocol: "instance creation",
  26976. //>>excludeStart("ide", pragmas.excludeIdeData);
  26977. args: ["aString", "anObject"],
  26978. source: "constructorNamed: aString value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09'>",
  26979. referencedClasses: [],
  26980. //>>excludeEnd("ide");
  26981. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09"]]],
  26982. messageSends: []
  26983. }, function ($methodClass){ return function (aString,anObject){
  26984. var self=this,$self=this;
  26985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26986. return $core.withContext(function($ctx1) {
  26987. //>>excludeEnd("ctx");
  26988. var nativeFunc=$globals.Platform._globals()[aString];
  26989. return new nativeFunc(anObject);
  26990. ;
  26991. return self;
  26992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26993. }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:",{aString:aString,anObject:anObject})});
  26994. //>>excludeEnd("ctx");
  26995. }; }),
  26996. $globals.NativeFunction.a$cls);
  26997. $core.addMethod(
  26998. $core.method({
  26999. selector: "constructorNamed:value:value:",
  27000. protocol: "instance creation",
  27001. //>>excludeStart("ide", pragmas.excludeIdeData);
  27002. args: ["aString", "anObject", "anObject2"],
  27003. source: "constructorNamed: aString value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09'>",
  27004. referencedClasses: [],
  27005. //>>excludeEnd("ide");
  27006. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09"]]],
  27007. messageSends: []
  27008. }, function ($methodClass){ return function (aString,anObject,anObject2){
  27009. var self=this,$self=this;
  27010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27011. return $core.withContext(function($ctx1) {
  27012. //>>excludeEnd("ctx");
  27013. var nativeFunc=$globals.Platform._globals()[aString];
  27014. return new nativeFunc(anObject,anObject2);
  27015. ;
  27016. return self;
  27017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27018. }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2})});
  27019. //>>excludeEnd("ctx");
  27020. }; }),
  27021. $globals.NativeFunction.a$cls);
  27022. $core.addMethod(
  27023. $core.method({
  27024. selector: "constructorNamed:value:value:value:",
  27025. protocol: "instance creation",
  27026. //>>excludeStart("ide", pragmas.excludeIdeData);
  27027. args: ["aString", "anObject", "anObject2", "anObject3"],
  27028. source: "constructorNamed: aString value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
  27029. referencedClasses: [],
  27030. //>>excludeEnd("ide");
  27031. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09"]]],
  27032. messageSends: []
  27033. }, function ($methodClass){ return function (aString,anObject,anObject2,anObject3){
  27034. var self=this,$self=this;
  27035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27036. return $core.withContext(function($ctx1) {
  27037. //>>excludeEnd("ctx");
  27038. var nativeFunc=$globals.Platform._globals()[aString];
  27039. return new nativeFunc(anObject,anObject2, anObject3);
  27040. ;
  27041. return self;
  27042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27043. }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
  27044. //>>excludeEnd("ctx");
  27045. }; }),
  27046. $globals.NativeFunction.a$cls);
  27047. $core.addMethod(
  27048. $core.method({
  27049. selector: "constructorOf:",
  27050. protocol: "instance creation",
  27051. //>>excludeStart("ide", pragmas.excludeIdeData);
  27052. args: ["nativeFunc"],
  27053. source: "constructorOf: nativeFunc\x0a\x09<inlineJS: '\x0a\x09\x09return new nativeFunc();\x0a\x09'>",
  27054. referencedClasses: [],
  27055. //>>excludeEnd("ide");
  27056. pragmas: [["inlineJS:", ["\x0a\x09\x09return new nativeFunc();\x0a\x09"]]],
  27057. messageSends: []
  27058. }, function ($methodClass){ return function (nativeFunc){
  27059. var self=this,$self=this;
  27060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27061. return $core.withContext(function($ctx1) {
  27062. //>>excludeEnd("ctx");
  27063. return new nativeFunc();
  27064. ;
  27065. return self;
  27066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27067. }, function($ctx1) {$ctx1.fill(self,"constructorOf:",{nativeFunc:nativeFunc})});
  27068. //>>excludeEnd("ctx");
  27069. }; }),
  27070. $globals.NativeFunction.a$cls);
  27071. $core.addMethod(
  27072. $core.method({
  27073. selector: "constructorOf:value:",
  27074. protocol: "instance creation",
  27075. //>>excludeStart("ide", pragmas.excludeIdeData);
  27076. args: ["nativeFunc", "anObject"],
  27077. source: "constructorOf: nativeFunc value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09'>",
  27078. referencedClasses: [],
  27079. //>>excludeEnd("ide");
  27080. pragmas: [["inlineJS:", ["\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09"]]],
  27081. messageSends: []
  27082. }, function ($methodClass){ return function (nativeFunc,anObject){
  27083. var self=this,$self=this;
  27084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27085. return $core.withContext(function($ctx1) {
  27086. //>>excludeEnd("ctx");
  27087. return new nativeFunc(anObject);
  27088. ;
  27089. return self;
  27090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27091. }, function($ctx1) {$ctx1.fill(self,"constructorOf:value:",{nativeFunc:nativeFunc,anObject:anObject})});
  27092. //>>excludeEnd("ctx");
  27093. }; }),
  27094. $globals.NativeFunction.a$cls);
  27095. $core.addMethod(
  27096. $core.method({
  27097. selector: "constructorOf:value:value:",
  27098. protocol: "instance creation",
  27099. //>>excludeStart("ide", pragmas.excludeIdeData);
  27100. args: ["nativeFunc", "anObject", "anObject2"],
  27101. source: "constructorOf: nativeFunc value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09'>",
  27102. referencedClasses: [],
  27103. //>>excludeEnd("ide");
  27104. pragmas: [["inlineJS:", ["\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09"]]],
  27105. messageSends: []
  27106. }, function ($methodClass){ return function (nativeFunc,anObject,anObject2){
  27107. var self=this,$self=this;
  27108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27109. return $core.withContext(function($ctx1) {
  27110. //>>excludeEnd("ctx");
  27111. return new nativeFunc(anObject,anObject2);
  27112. ;
  27113. return self;
  27114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27115. }, function($ctx1) {$ctx1.fill(self,"constructorOf:value:value:",{nativeFunc:nativeFunc,anObject:anObject,anObject2:anObject2})});
  27116. //>>excludeEnd("ctx");
  27117. }; }),
  27118. $globals.NativeFunction.a$cls);
  27119. $core.addMethod(
  27120. $core.method({
  27121. selector: "constructorOf:value:value:value:",
  27122. protocol: "instance creation",
  27123. //>>excludeStart("ide", pragmas.excludeIdeData);
  27124. args: ["nativeFunc", "anObject", "anObject2", "anObject3"],
  27125. source: "constructorOf: nativeFunc value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
  27126. referencedClasses: [],
  27127. //>>excludeEnd("ide");
  27128. pragmas: [["inlineJS:", ["\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09"]]],
  27129. messageSends: []
  27130. }, function ($methodClass){ return function (nativeFunc,anObject,anObject2,anObject3){
  27131. var self=this,$self=this;
  27132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27133. return $core.withContext(function($ctx1) {
  27134. //>>excludeEnd("ctx");
  27135. return new nativeFunc(anObject,anObject2, anObject3);
  27136. ;
  27137. return self;
  27138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27139. }, function($ctx1) {$ctx1.fill(self,"constructorOf:value:value:value:",{nativeFunc:nativeFunc,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
  27140. //>>excludeEnd("ctx");
  27141. }; }),
  27142. $globals.NativeFunction.a$cls);
  27143. $core.addMethod(
  27144. $core.method({
  27145. selector: "exists:",
  27146. protocol: "testing",
  27147. //>>excludeStart("ide", pragmas.excludeIdeData);
  27148. args: ["aString"],
  27149. source: "exists: aString\x0a\x09^ Platform includesGlobal: aString",
  27150. referencedClasses: ["Platform"],
  27151. //>>excludeEnd("ide");
  27152. pragmas: [],
  27153. messageSends: ["includesGlobal:"]
  27154. }, function ($methodClass){ return function (aString){
  27155. var self=this,$self=this;
  27156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27157. return $core.withContext(function($ctx1) {
  27158. //>>excludeEnd("ctx");
  27159. return $recv($globals.Platform)._includesGlobal_(aString);
  27160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27161. }, function($ctx1) {$ctx1.fill(self,"exists:",{aString:aString})});
  27162. //>>excludeEnd("ctx");
  27163. }; }),
  27164. $globals.NativeFunction.a$cls);
  27165. $core.addMethod(
  27166. $core.method({
  27167. selector: "functionNamed:",
  27168. protocol: "function calling",
  27169. //>>excludeStart("ide", pragmas.excludeIdeData);
  27170. args: ["aString"],
  27171. source: "functionNamed: aString\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals[aString];\x0a\x09\x09return nativeFunc();\x0a\x09'>",
  27172. referencedClasses: [],
  27173. //>>excludeEnd("ide");
  27174. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals[aString];\x0a\x09\x09return nativeFunc();\x0a\x09"]]],
  27175. messageSends: []
  27176. }, function ($methodClass){ return function (aString){
  27177. var self=this,$self=this;
  27178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27179. return $core.withContext(function($ctx1) {
  27180. //>>excludeEnd("ctx");
  27181. var nativeFunc=$globals.Platform._globals[aString];
  27182. return nativeFunc();
  27183. ;
  27184. return self;
  27185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27186. }, function($ctx1) {$ctx1.fill(self,"functionNamed:",{aString:aString})});
  27187. //>>excludeEnd("ctx");
  27188. }; }),
  27189. $globals.NativeFunction.a$cls);
  27190. $core.addMethod(
  27191. $core.method({
  27192. selector: "functionNamed:value:",
  27193. protocol: "function calling",
  27194. //>>excludeStart("ide", pragmas.excludeIdeData);
  27195. args: ["aString", "anObject"],
  27196. source: "functionNamed: aString value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject);\x0a\x09'>",
  27197. referencedClasses: [],
  27198. //>>excludeEnd("ide");
  27199. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject);\x0a\x09"]]],
  27200. messageSends: []
  27201. }, function ($methodClass){ return function (aString,anObject){
  27202. var self=this,$self=this;
  27203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27204. return $core.withContext(function($ctx1) {
  27205. //>>excludeEnd("ctx");
  27206. var nativeFunc=$globals.Platform._globals()[aString];
  27207. return nativeFunc(anObject);
  27208. ;
  27209. return self;
  27210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27211. }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:",{aString:aString,anObject:anObject})});
  27212. //>>excludeEnd("ctx");
  27213. }; }),
  27214. $globals.NativeFunction.a$cls);
  27215. $core.addMethod(
  27216. $core.method({
  27217. selector: "functionNamed:value:value:",
  27218. protocol: "function calling",
  27219. //>>excludeStart("ide", pragmas.excludeIdeData);
  27220. args: ["aString", "anObject", "anObject2"],
  27221. source: "functionNamed: aString value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09'>",
  27222. referencedClasses: [],
  27223. //>>excludeEnd("ide");
  27224. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09"]]],
  27225. messageSends: []
  27226. }, function ($methodClass){ return function (aString,anObject,anObject2){
  27227. var self=this,$self=this;
  27228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27229. return $core.withContext(function($ctx1) {
  27230. //>>excludeEnd("ctx");
  27231. var nativeFunc=$globals.Platform._globals()[aString];
  27232. return nativeFunc(anObject,anObject2);
  27233. ;
  27234. return self;
  27235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27236. }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2})});
  27237. //>>excludeEnd("ctx");
  27238. }; }),
  27239. $globals.NativeFunction.a$cls);
  27240. $core.addMethod(
  27241. $core.method({
  27242. selector: "functionNamed:value:value:value:",
  27243. protocol: "function calling",
  27244. //>>excludeStart("ide", pragmas.excludeIdeData);
  27245. args: ["aString", "anObject", "anObject2", "anObject3"],
  27246. source: "functionNamed: aString value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
  27247. referencedClasses: [],
  27248. //>>excludeEnd("ide");
  27249. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09"]]],
  27250. messageSends: []
  27251. }, function ($methodClass){ return function (aString,anObject,anObject2,anObject3){
  27252. var self=this,$self=this;
  27253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27254. return $core.withContext(function($ctx1) {
  27255. //>>excludeEnd("ctx");
  27256. var nativeFunc=$globals.Platform._globals()[aString];
  27257. return nativeFunc(anObject,anObject2, anObject3);
  27258. ;
  27259. return self;
  27260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27261. }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
  27262. //>>excludeEnd("ctx");
  27263. }; }),
  27264. $globals.NativeFunction.a$cls);
  27265. $core.addMethod(
  27266. $core.method({
  27267. selector: "functionNamed:valueWithArgs:",
  27268. protocol: "function calling",
  27269. //>>excludeStart("ide", pragmas.excludeIdeData);
  27270. args: ["aString", "args"],
  27271. source: "functionNamed: aString valueWithArgs: args\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09'>",
  27272. referencedClasses: [],
  27273. //>>excludeEnd("ide");
  27274. pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09"]]],
  27275. messageSends: []
  27276. }, function ($methodClass){ return function (aString,args){
  27277. var self=this,$self=this;
  27278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27279. return $core.withContext(function($ctx1) {
  27280. //>>excludeEnd("ctx");
  27281. var nativeFunc=$globals.Platform._globals()[aString];
  27282. return Function.prototype.apply.call(nativeFunc, null, args);
  27283. ;
  27284. return self;
  27285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27286. }, function($ctx1) {$ctx1.fill(self,"functionNamed:valueWithArgs:",{aString:aString,args:args})});
  27287. //>>excludeEnd("ctx");
  27288. }; }),
  27289. $globals.NativeFunction.a$cls);
  27290. $core.addMethod(
  27291. $core.method({
  27292. selector: "functionOf:",
  27293. protocol: "function calling",
  27294. //>>excludeStart("ide", pragmas.excludeIdeData);
  27295. args: ["nativeFunc"],
  27296. source: "functionOf: nativeFunc\x0a\x09<inlineJS: '\x0a\x09\x09return nativeFunc();\x0a\x09'>",
  27297. referencedClasses: [],
  27298. //>>excludeEnd("ide");
  27299. pragmas: [["inlineJS:", ["\x0a\x09\x09return nativeFunc();\x0a\x09"]]],
  27300. messageSends: []
  27301. }, function ($methodClass){ return function (nativeFunc){
  27302. var self=this,$self=this;
  27303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27304. return $core.withContext(function($ctx1) {
  27305. //>>excludeEnd("ctx");
  27306. return nativeFunc();
  27307. ;
  27308. return self;
  27309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27310. }, function($ctx1) {$ctx1.fill(self,"functionOf:",{nativeFunc:nativeFunc})});
  27311. //>>excludeEnd("ctx");
  27312. }; }),
  27313. $globals.NativeFunction.a$cls);
  27314. $core.addMethod(
  27315. $core.method({
  27316. selector: "functionOf:value:",
  27317. protocol: "function calling",
  27318. //>>excludeStart("ide", pragmas.excludeIdeData);
  27319. args: ["nativeFunc", "anObject"],
  27320. source: "functionOf: nativeFunc value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09return nativeFunc(anObject);\x0a\x09'>",
  27321. referencedClasses: [],
  27322. //>>excludeEnd("ide");
  27323. pragmas: [["inlineJS:", ["\x0a\x09\x09return nativeFunc(anObject);\x0a\x09"]]],
  27324. messageSends: []
  27325. }, function ($methodClass){ return function (nativeFunc,anObject){
  27326. var self=this,$self=this;
  27327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27328. return $core.withContext(function($ctx1) {
  27329. //>>excludeEnd("ctx");
  27330. return nativeFunc(anObject);
  27331. ;
  27332. return self;
  27333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27334. }, function($ctx1) {$ctx1.fill(self,"functionOf:value:",{nativeFunc:nativeFunc,anObject:anObject})});
  27335. //>>excludeEnd("ctx");
  27336. }; }),
  27337. $globals.NativeFunction.a$cls);
  27338. $core.addMethod(
  27339. $core.method({
  27340. selector: "functionOf:value:value:",
  27341. protocol: "function calling",
  27342. //>>excludeStart("ide", pragmas.excludeIdeData);
  27343. args: ["nativeFunc", "anObject", "anObject2"],
  27344. source: "functionOf: nativeFunc value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09'>",
  27345. referencedClasses: [],
  27346. //>>excludeEnd("ide");
  27347. pragmas: [["inlineJS:", ["\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09"]]],
  27348. messageSends: []
  27349. }, function ($methodClass){ return function (nativeFunc,anObject,anObject2){
  27350. var self=this,$self=this;
  27351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27352. return $core.withContext(function($ctx1) {
  27353. //>>excludeEnd("ctx");
  27354. return nativeFunc(anObject,anObject2);
  27355. ;
  27356. return self;
  27357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27358. }, function($ctx1) {$ctx1.fill(self,"functionOf:value:value:",{nativeFunc:nativeFunc,anObject:anObject,anObject2:anObject2})});
  27359. //>>excludeEnd("ctx");
  27360. }; }),
  27361. $globals.NativeFunction.a$cls);
  27362. $core.addMethod(
  27363. $core.method({
  27364. selector: "functionOf:value:value:value:",
  27365. protocol: "function calling",
  27366. //>>excludeStart("ide", pragmas.excludeIdeData);
  27367. args: ["nativeFunc", "anObject", "anObject2", "anObject3"],
  27368. source: "functionOf: nativeFunc value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
  27369. referencedClasses: [],
  27370. //>>excludeEnd("ide");
  27371. pragmas: [["inlineJS:", ["\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09"]]],
  27372. messageSends: []
  27373. }, function ($methodClass){ return function (nativeFunc,anObject,anObject2,anObject3){
  27374. var self=this,$self=this;
  27375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27376. return $core.withContext(function($ctx1) {
  27377. //>>excludeEnd("ctx");
  27378. return nativeFunc(anObject,anObject2, anObject3);
  27379. ;
  27380. return self;
  27381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27382. }, function($ctx1) {$ctx1.fill(self,"functionOf:value:value:value:",{nativeFunc:nativeFunc,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
  27383. //>>excludeEnd("ctx");
  27384. }; }),
  27385. $globals.NativeFunction.a$cls);
  27386. $core.addMethod(
  27387. $core.method({
  27388. selector: "functionOf:valueWithArgs:",
  27389. protocol: "function calling",
  27390. //>>excludeStart("ide", pragmas.excludeIdeData);
  27391. args: ["nativeFunc", "args"],
  27392. source: "functionOf: nativeFunc valueWithArgs: args\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09'>",
  27393. referencedClasses: [],
  27394. //>>excludeEnd("ide");
  27395. pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09"]]],
  27396. messageSends: []
  27397. }, function ($methodClass){ return function (nativeFunc,args){
  27398. var self=this,$self=this;
  27399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27400. return $core.withContext(function($ctx1) {
  27401. //>>excludeEnd("ctx");
  27402. return Function.prototype.apply.call(nativeFunc, null, args);
  27403. ;
  27404. return self;
  27405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27406. }, function($ctx1) {$ctx1.fill(self,"functionOf:valueWithArgs:",{nativeFunc:nativeFunc,args:args})});
  27407. //>>excludeEnd("ctx");
  27408. }; }),
  27409. $globals.NativeFunction.a$cls);
  27410. $core.addMethod(
  27411. $core.method({
  27412. selector: "isNativeFunction:",
  27413. protocol: "testing",
  27414. //>>excludeStart("ide", pragmas.excludeIdeData);
  27415. args: ["anObject"],
  27416. source: "isNativeFunction: anObject\x0a\x09<inlineJS: 'return typeof anObject === \x22function\x22'>",
  27417. referencedClasses: [],
  27418. //>>excludeEnd("ide");
  27419. pragmas: [["inlineJS:", ["return typeof anObject === \x22function\x22"]]],
  27420. messageSends: []
  27421. }, function ($methodClass){ return function (anObject){
  27422. var self=this,$self=this;
  27423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27424. return $core.withContext(function($ctx1) {
  27425. //>>excludeEnd("ctx");
  27426. return typeof anObject === "function";
  27427. return self;
  27428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27429. }, function($ctx1) {$ctx1.fill(self,"isNativeFunction:",{anObject:anObject})});
  27430. //>>excludeEnd("ctx");
  27431. }; }),
  27432. $globals.NativeFunction.a$cls);
  27433. $core.addMethod(
  27434. $core.method({
  27435. selector: "methodOf:this:",
  27436. protocol: "method calling",
  27437. //>>excludeStart("ide", pragmas.excludeIdeData);
  27438. args: ["nativeFunc", "thisObject"],
  27439. source: "methodOf: nativeFunc this: thisObject\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject);\x0a\x09'>",
  27440. referencedClasses: [],
  27441. //>>excludeEnd("ide");
  27442. pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject);\x0a\x09"]]],
  27443. messageSends: []
  27444. }, function ($methodClass){ return function (nativeFunc,thisObject){
  27445. var self=this,$self=this;
  27446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27447. return $core.withContext(function($ctx1) {
  27448. //>>excludeEnd("ctx");
  27449. return Function.prototype.call.call(nativeFunc, thisObject);
  27450. ;
  27451. return self;
  27452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27453. }, function($ctx1) {$ctx1.fill(self,"methodOf:this:",{nativeFunc:nativeFunc,thisObject:thisObject})});
  27454. //>>excludeEnd("ctx");
  27455. }; }),
  27456. $globals.NativeFunction.a$cls);
  27457. $core.addMethod(
  27458. $core.method({
  27459. selector: "methodOf:this:value:",
  27460. protocol: "method calling",
  27461. //>>excludeStart("ide", pragmas.excludeIdeData);
  27462. args: ["nativeFunc", "thisObject", "anObject"],
  27463. source: "methodOf: nativeFunc this: thisObject value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject, anObject);\x0a\x09'>",
  27464. referencedClasses: [],
  27465. //>>excludeEnd("ide");
  27466. pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject, anObject);\x0a\x09"]]],
  27467. messageSends: []
  27468. }, function ($methodClass){ return function (nativeFunc,thisObject,anObject){
  27469. var self=this,$self=this;
  27470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27471. return $core.withContext(function($ctx1) {
  27472. //>>excludeEnd("ctx");
  27473. return Function.prototype.call.call(nativeFunc, thisObject, anObject);
  27474. ;
  27475. return self;
  27476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27477. }, function($ctx1) {$ctx1.fill(self,"methodOf:this:value:",{nativeFunc:nativeFunc,thisObject:thisObject,anObject:anObject})});
  27478. //>>excludeEnd("ctx");
  27479. }; }),
  27480. $globals.NativeFunction.a$cls);
  27481. $core.addMethod(
  27482. $core.method({
  27483. selector: "methodOf:this:value:value:",
  27484. protocol: "method calling",
  27485. //>>excludeStart("ide", pragmas.excludeIdeData);
  27486. args: ["nativeFunc", "thisObject", "anObject", "anObject2"],
  27487. source: "methodOf: nativeFunc this: thisObject value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2);\x0a\x09'>",
  27488. referencedClasses: [],
  27489. //>>excludeEnd("ide");
  27490. pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2);\x0a\x09"]]],
  27491. messageSends: []
  27492. }, function ($methodClass){ return function (nativeFunc,thisObject,anObject,anObject2){
  27493. var self=this,$self=this;
  27494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27495. return $core.withContext(function($ctx1) {
  27496. //>>excludeEnd("ctx");
  27497. return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2);
  27498. ;
  27499. return self;
  27500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27501. }, function($ctx1) {$ctx1.fill(self,"methodOf:this:value:value:",{nativeFunc:nativeFunc,thisObject:thisObject,anObject:anObject,anObject2:anObject2})});
  27502. //>>excludeEnd("ctx");
  27503. }; }),
  27504. $globals.NativeFunction.a$cls);
  27505. $core.addMethod(
  27506. $core.method({
  27507. selector: "methodOf:this:value:value:value:",
  27508. protocol: "method calling",
  27509. //>>excludeStart("ide", pragmas.excludeIdeData);
  27510. args: ["nativeFunc", "thisObject", "anObject", "anObject2", "anObject3"],
  27511. source: "methodOf: nativeFunc this: thisObject value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2, anObject3);\x0a\x09'>",
  27512. referencedClasses: [],
  27513. //>>excludeEnd("ide");
  27514. pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2, anObject3);\x0a\x09"]]],
  27515. messageSends: []
  27516. }, function ($methodClass){ return function (nativeFunc,thisObject,anObject,anObject2,anObject3){
  27517. var self=this,$self=this;
  27518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27519. return $core.withContext(function($ctx1) {
  27520. //>>excludeEnd("ctx");
  27521. return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2, anObject3);
  27522. ;
  27523. return self;
  27524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27525. }, function($ctx1) {$ctx1.fill(self,"methodOf:this:value:value:value:",{nativeFunc:nativeFunc,thisObject:thisObject,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
  27526. //>>excludeEnd("ctx");
  27527. }; }),
  27528. $globals.NativeFunction.a$cls);
  27529. $core.addMethod(
  27530. $core.method({
  27531. selector: "methodOf:this:valueWithArgs:",
  27532. protocol: "method calling",
  27533. //>>excludeStart("ide", pragmas.excludeIdeData);
  27534. args: ["nativeFunc", "thisObject", "args"],
  27535. source: "methodOf: nativeFunc this: thisObject valueWithArgs: args\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, thisObject, args);\x0a\x09'>",
  27536. referencedClasses: [],
  27537. //>>excludeEnd("ide");
  27538. pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, thisObject, args);\x0a\x09"]]],
  27539. messageSends: []
  27540. }, function ($methodClass){ return function (nativeFunc,thisObject,args){
  27541. var self=this,$self=this;
  27542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27543. return $core.withContext(function($ctx1) {
  27544. //>>excludeEnd("ctx");
  27545. return Function.prototype.apply.call(nativeFunc, thisObject, args);
  27546. ;
  27547. return self;
  27548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27549. }, function($ctx1) {$ctx1.fill(self,"methodOf:this:valueWithArgs:",{nativeFunc:nativeFunc,thisObject:thisObject,args:args})});
  27550. //>>excludeEnd("ctx");
  27551. }; }),
  27552. $globals.NativeFunction.a$cls);
  27553. $core.addTrait("TMethodContext", "Kernel-Methods");
  27554. $core.addMethod(
  27555. $core.method({
  27556. selector: "asString",
  27557. protocol: "converting",
  27558. //>>excludeStart("ide", pragmas.excludeIdeData);
  27559. args: [],
  27560. source: "asString\x0a\x09^ self isBlockContext\x0a\x09\x09ifTrue: [ 'a block (in ', self methodContext asString, ')' ]\x0a\x09\x09ifFalse: [ self method\x0a\x09\x09\x09ifNotNil: [ :method | method asStringForClass: self receiver class ]\x0a\x09\x09\x09ifNil: [ 'missing method ', self selector symbolPrintString ] ]",
  27561. referencedClasses: [],
  27562. //>>excludeEnd("ide");
  27563. pragmas: [],
  27564. messageSends: ["ifTrue:ifFalse:", "isBlockContext", ",", "asString", "methodContext", "ifNotNil:ifNil:", "method", "asStringForClass:", "class", "receiver", "symbolPrintString", "selector"]
  27565. }, function ($methodClass){ return function (){
  27566. var self=this,$self=this;
  27567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27568. return $core.withContext(function($ctx1) {
  27569. //>>excludeEnd("ctx");
  27570. var $1;
  27571. if($core.assert($self._isBlockContext())){
  27572. return [$recv(["a block (in ".__comma($recv($self._methodContext())._asString())
  27573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27574. ,$ctx1.sendIdx[","]=2
  27575. //>>excludeEnd("ctx");
  27576. ][0]).__comma(")")
  27577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27578. ,$ctx1.sendIdx[","]=1
  27579. //>>excludeEnd("ctx");
  27580. ][0];
  27581. } else {
  27582. $1=$self._method();
  27583. if($1 == null || $1.a$nil){
  27584. return "missing method ".__comma($recv($self._selector())._symbolPrintString());
  27585. } else {
  27586. var method;
  27587. method=$1;
  27588. return $recv(method)._asStringForClass_($recv($self._receiver())._class());
  27589. }
  27590. }
  27591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27592. }, function($ctx1) {$ctx1.fill(self,"asString",{})});
  27593. //>>excludeEnd("ctx");
  27594. }; }),
  27595. $globals.TMethodContext);
  27596. $core.addMethod(
  27597. $core.method({
  27598. selector: "basicReceiver",
  27599. protocol: "accessing",
  27600. //>>excludeStart("ide", pragmas.excludeIdeData);
  27601. args: [],
  27602. source: "basicReceiver\x0a\x09self subclassResponsibility",
  27603. referencedClasses: [],
  27604. //>>excludeEnd("ide");
  27605. pragmas: [],
  27606. messageSends: ["subclassResponsibility"]
  27607. }, function ($methodClass){ return function (){
  27608. var self=this,$self=this;
  27609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27610. return $core.withContext(function($ctx1) {
  27611. //>>excludeEnd("ctx");
  27612. $self._subclassResponsibility();
  27613. return self;
  27614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27615. }, function($ctx1) {$ctx1.fill(self,"basicReceiver",{})});
  27616. //>>excludeEnd("ctx");
  27617. }; }),
  27618. $globals.TMethodContext);
  27619. $core.addMethod(
  27620. $core.method({
  27621. selector: "findContextSuchThat:",
  27622. protocol: "accessing",
  27623. //>>excludeStart("ide", pragmas.excludeIdeData);
  27624. args: ["testBlock"],
  27625. source: "findContextSuchThat: testBlock\x0a\x09\x22Search self and my sender chain for first one that satisfies `testBlock`. \x0a\x09Answer `nil` if none satisfy\x22\x0a\x0a\x09| context |\x0a\x09\x0a\x09context := self.\x0a\x09[ context isNil] whileFalse: [\x0a\x09\x09(testBlock value: context) \x0a\x09\x09\x09ifTrue: [ ^ context ].\x0a\x09\x09context := context outerContext ].\x0a\x0a\x09^ nil",
  27626. referencedClasses: [],
  27627. //>>excludeEnd("ide");
  27628. pragmas: [],
  27629. messageSends: ["whileFalse:", "isNil", "ifTrue:", "value:", "outerContext"]
  27630. }, function ($methodClass){ return function (testBlock){
  27631. var self=this,$self=this;
  27632. var context;
  27633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27634. return $core.withContext(function($ctx1) {
  27635. //>>excludeEnd("ctx");
  27636. var $early={};
  27637. try {
  27638. context=self;
  27639. $recv((function(){
  27640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27641. return $core.withContext(function($ctx2) {
  27642. //>>excludeEnd("ctx");
  27643. return $recv(context)._isNil();
  27644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27645. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  27646. //>>excludeEnd("ctx");
  27647. }))._whileFalse_((function(){
  27648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27649. return $core.withContext(function($ctx2) {
  27650. //>>excludeEnd("ctx");
  27651. if($core.assert($recv(testBlock)._value_(context))){
  27652. throw $early=[context];
  27653. }
  27654. context=$recv(context)._outerContext();
  27655. return context;
  27656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27657. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  27658. //>>excludeEnd("ctx");
  27659. }));
  27660. return nil;
  27661. }
  27662. catch(e) {if(e===$early)return e[0]; throw e}
  27663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27664. }, function($ctx1) {$ctx1.fill(self,"findContextSuchThat:",{testBlock:testBlock,context:context})});
  27665. //>>excludeEnd("ctx");
  27666. }; }),
  27667. $globals.TMethodContext);
  27668. $core.addMethod(
  27669. $core.method({
  27670. selector: "home",
  27671. protocol: "accessing",
  27672. //>>excludeStart("ide", pragmas.excludeIdeData);
  27673. args: [],
  27674. source: "home\x0a\x09self subclassResponsibility",
  27675. referencedClasses: [],
  27676. //>>excludeEnd("ide");
  27677. pragmas: [],
  27678. messageSends: ["subclassResponsibility"]
  27679. }, function ($methodClass){ return function (){
  27680. var self=this,$self=this;
  27681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27682. return $core.withContext(function($ctx1) {
  27683. //>>excludeEnd("ctx");
  27684. $self._subclassResponsibility();
  27685. return self;
  27686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27687. }, function($ctx1) {$ctx1.fill(self,"home",{})});
  27688. //>>excludeEnd("ctx");
  27689. }; }),
  27690. $globals.TMethodContext);
  27691. $core.addMethod(
  27692. $core.method({
  27693. selector: "index",
  27694. protocol: "accessing",
  27695. //>>excludeStart("ide", pragmas.excludeIdeData);
  27696. args: [],
  27697. source: "index\x0a\x09self subclassResponsibility",
  27698. referencedClasses: [],
  27699. //>>excludeEnd("ide");
  27700. pragmas: [],
  27701. messageSends: ["subclassResponsibility"]
  27702. }, function ($methodClass){ return function (){
  27703. var self=this,$self=this;
  27704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27705. return $core.withContext(function($ctx1) {
  27706. //>>excludeEnd("ctx");
  27707. $self._subclassResponsibility();
  27708. return self;
  27709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27710. }, function($ctx1) {$ctx1.fill(self,"index",{})});
  27711. //>>excludeEnd("ctx");
  27712. }; }),
  27713. $globals.TMethodContext);
  27714. $core.addMethod(
  27715. $core.method({
  27716. selector: "isBlockContext",
  27717. protocol: "testing",
  27718. //>>excludeStart("ide", pragmas.excludeIdeData);
  27719. args: [],
  27720. source: "isBlockContext\x0a\x09\x22Block context do not have selectors.\x22\x0a\x09\x0a\x09^ self selector isNil",
  27721. referencedClasses: [],
  27722. //>>excludeEnd("ide");
  27723. pragmas: [],
  27724. messageSends: ["isNil", "selector"]
  27725. }, function ($methodClass){ return function (){
  27726. var self=this,$self=this;
  27727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27728. return $core.withContext(function($ctx1) {
  27729. //>>excludeEnd("ctx");
  27730. return $recv($self._selector())._isNil();
  27731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27732. }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{})});
  27733. //>>excludeEnd("ctx");
  27734. }; }),
  27735. $globals.TMethodContext);
  27736. $core.addMethod(
  27737. $core.method({
  27738. selector: "locals",
  27739. protocol: "accessing",
  27740. //>>excludeStart("ide", pragmas.excludeIdeData);
  27741. args: [],
  27742. source: "locals\x0a\x09self subclassResponsibility",
  27743. referencedClasses: [],
  27744. //>>excludeEnd("ide");
  27745. pragmas: [],
  27746. messageSends: ["subclassResponsibility"]
  27747. }, function ($methodClass){ return function (){
  27748. var self=this,$self=this;
  27749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27750. return $core.withContext(function($ctx1) {
  27751. //>>excludeEnd("ctx");
  27752. $self._subclassResponsibility();
  27753. return self;
  27754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27755. }, function($ctx1) {$ctx1.fill(self,"locals",{})});
  27756. //>>excludeEnd("ctx");
  27757. }; }),
  27758. $globals.TMethodContext);
  27759. $core.addMethod(
  27760. $core.method({
  27761. selector: "method",
  27762. protocol: "accessing",
  27763. //>>excludeStart("ide", pragmas.excludeIdeData);
  27764. args: [],
  27765. source: "method\x0a\x09| method lookupClass receiverClass supercall |\x0a\x09\x0a\x09self methodContext ifNil: [ ^ nil ].\x0a\x0a\x09receiverClass := self methodContext receiver class.\x0a\x09method := receiverClass lookupSelector: self methodContext selector.\x0a\x09supercall := self outerContext \x0a\x09\x09ifNil: [ false ]\x0a\x09\x09ifNotNil: [ :outer | outer supercall ].\x0a\x0a\x09^ supercall\x0a\x09\x09ifFalse: [ method ]\x0a\x09\x09ifTrue: [ method methodClass superclass lookupSelector: self methodContext selector ]",
  27766. referencedClasses: [],
  27767. //>>excludeEnd("ide");
  27768. pragmas: [],
  27769. messageSends: ["ifNil:", "methodContext", "class", "receiver", "lookupSelector:", "selector", "ifNil:ifNotNil:", "outerContext", "supercall", "ifFalse:ifTrue:", "superclass", "methodClass"]
  27770. }, function ($methodClass){ return function (){
  27771. var self=this,$self=this;
  27772. var method,lookupClass,receiverClass,supercall;
  27773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27774. return $core.withContext(function($ctx1) {
  27775. //>>excludeEnd("ctx");
  27776. var $1,$2;
  27777. $1=[$self._methodContext()
  27778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27779. ,$ctx1.sendIdx["methodContext"]=1
  27780. //>>excludeEnd("ctx");
  27781. ][0];
  27782. if($1 == null || $1.a$nil){
  27783. return nil;
  27784. } else {
  27785. $1;
  27786. }
  27787. receiverClass=$recv($recv([$self._methodContext()
  27788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27789. ,$ctx1.sendIdx["methodContext"]=2
  27790. //>>excludeEnd("ctx");
  27791. ][0])._receiver())._class();
  27792. method=[$recv(receiverClass)._lookupSelector_([$recv([$self._methodContext()
  27793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27794. ,$ctx1.sendIdx["methodContext"]=3
  27795. //>>excludeEnd("ctx");
  27796. ][0])._selector()
  27797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27798. ,$ctx1.sendIdx["selector"]=1
  27799. //>>excludeEnd("ctx");
  27800. ][0])
  27801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27802. ,$ctx1.sendIdx["lookupSelector:"]=1
  27803. //>>excludeEnd("ctx");
  27804. ][0];
  27805. $2=$self._outerContext();
  27806. if($2 == null || $2.a$nil){
  27807. supercall=false;
  27808. } else {
  27809. var outer;
  27810. outer=$2;
  27811. supercall=$recv(outer)._supercall();
  27812. }
  27813. if($core.assert(supercall)){
  27814. return $recv($recv($recv(method)._methodClass())._superclass())._lookupSelector_($recv($self._methodContext())._selector());
  27815. } else {
  27816. return method;
  27817. }
  27818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27819. }, function($ctx1) {$ctx1.fill(self,"method",{method:method,lookupClass:lookupClass,receiverClass:receiverClass,supercall:supercall})});
  27820. //>>excludeEnd("ctx");
  27821. }; }),
  27822. $globals.TMethodContext);
  27823. $core.addMethod(
  27824. $core.method({
  27825. selector: "methodContext",
  27826. protocol: "accessing",
  27827. //>>excludeStart("ide", pragmas.excludeIdeData);
  27828. args: [],
  27829. source: "methodContext\x0a\x09self isBlockContext ifFalse: [ ^ self ].\x0a\x09\x0a\x09^ self outerContext ifNotNil: [ :outer |\x0a\x09\x09outer methodContext ]",
  27830. referencedClasses: [],
  27831. //>>excludeEnd("ide");
  27832. pragmas: [],
  27833. messageSends: ["ifFalse:", "isBlockContext", "ifNotNil:", "outerContext", "methodContext"]
  27834. }, function ($methodClass){ return function (){
  27835. var self=this,$self=this;
  27836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27837. return $core.withContext(function($ctx1) {
  27838. //>>excludeEnd("ctx");
  27839. var $1;
  27840. if(!$core.assert($self._isBlockContext())){
  27841. return self;
  27842. }
  27843. $1=$self._outerContext();
  27844. if($1 == null || $1.a$nil){
  27845. return $1;
  27846. } else {
  27847. var outer;
  27848. outer=$1;
  27849. return $recv(outer)._methodContext();
  27850. }
  27851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27852. }, function($ctx1) {$ctx1.fill(self,"methodContext",{})});
  27853. //>>excludeEnd("ctx");
  27854. }; }),
  27855. $globals.TMethodContext);
  27856. $core.addMethod(
  27857. $core.method({
  27858. selector: "outerContext",
  27859. protocol: "accessing",
  27860. //>>excludeStart("ide", pragmas.excludeIdeData);
  27861. args: [],
  27862. source: "outerContext\x0a\x09self subclassResponsibility",
  27863. referencedClasses: [],
  27864. //>>excludeEnd("ide");
  27865. pragmas: [],
  27866. messageSends: ["subclassResponsibility"]
  27867. }, function ($methodClass){ return function (){
  27868. var self=this,$self=this;
  27869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27870. return $core.withContext(function($ctx1) {
  27871. //>>excludeEnd("ctx");
  27872. $self._subclassResponsibility();
  27873. return self;
  27874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27875. }, function($ctx1) {$ctx1.fill(self,"outerContext",{})});
  27876. //>>excludeEnd("ctx");
  27877. }; }),
  27878. $globals.TMethodContext);
  27879. $core.addMethod(
  27880. $core.method({
  27881. selector: "printOn:",
  27882. protocol: "printing",
  27883. //>>excludeStart("ide", pragmas.excludeIdeData);
  27884. args: ["aStream"],
  27885. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream \x0a\x09\x09nextPutAll: '(';\x0a\x09\x09nextPutAll: self asString;\x0a\x09\x09nextPutAll: ')'",
  27886. referencedClasses: [],
  27887. //>>excludeEnd("ide");
  27888. pragmas: [],
  27889. messageSends: ["printOn:", "nextPutAll:", "asString"]
  27890. }, function ($methodClass){ return function (aStream){
  27891. var self=this,$self=this;
  27892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27893. return $core.withContext(function($ctx1) {
  27894. //>>excludeEnd("ctx");
  27895. [(
  27896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27897. $ctx1.supercall = true,
  27898. //>>excludeEnd("ctx");
  27899. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  27900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27901. ,$ctx1.supercall = false
  27902. //>>excludeEnd("ctx");
  27903. ][0];
  27904. [$recv(aStream)._nextPutAll_("(")
  27905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27906. ,$ctx1.sendIdx["nextPutAll:"]=1
  27907. //>>excludeEnd("ctx");
  27908. ][0];
  27909. [$recv(aStream)._nextPutAll_($self._asString())
  27910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27911. ,$ctx1.sendIdx["nextPutAll:"]=2
  27912. //>>excludeEnd("ctx");
  27913. ][0];
  27914. $recv(aStream)._nextPutAll_(")");
  27915. return self;
  27916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27917. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  27918. //>>excludeEnd("ctx");
  27919. }; }),
  27920. $globals.TMethodContext);
  27921. $core.addMethod(
  27922. $core.method({
  27923. selector: "receiver",
  27924. protocol: "accessing",
  27925. //>>excludeStart("ide", pragmas.excludeIdeData);
  27926. args: [],
  27927. source: "receiver\x0a\x09^ (self isBlockContext and: [ self outerContext notNil ])\x0a\x09\x09ifTrue: [ self outerContext receiver ]\x0a\x09\x09ifFalse: [ self basicReceiver ]",
  27928. referencedClasses: [],
  27929. //>>excludeEnd("ide");
  27930. pragmas: [],
  27931. messageSends: ["ifTrue:ifFalse:", "and:", "isBlockContext", "notNil", "outerContext", "receiver", "basicReceiver"]
  27932. }, function ($methodClass){ return function (){
  27933. var self=this,$self=this;
  27934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27935. return $core.withContext(function($ctx1) {
  27936. //>>excludeEnd("ctx");
  27937. var $1;
  27938. if($core.assert($self._isBlockContext())){
  27939. $1=$recv([$self._outerContext()
  27940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27941. ,$ctx1.sendIdx["outerContext"]=1
  27942. //>>excludeEnd("ctx");
  27943. ][0])._notNil();
  27944. } else {
  27945. $1=false;
  27946. }
  27947. if($core.assert($1)){
  27948. return $recv($self._outerContext())._receiver();
  27949. } else {
  27950. return $self._basicReceiver();
  27951. }
  27952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27953. }, function($ctx1) {$ctx1.fill(self,"receiver",{})});
  27954. //>>excludeEnd("ctx");
  27955. }; }),
  27956. $globals.TMethodContext);
  27957. $core.addMethod(
  27958. $core.method({
  27959. selector: "selector",
  27960. protocol: "accessing",
  27961. //>>excludeStart("ide", pragmas.excludeIdeData);
  27962. args: [],
  27963. source: "selector\x0a\x09self subclassResponsibility",
  27964. referencedClasses: [],
  27965. //>>excludeEnd("ide");
  27966. pragmas: [],
  27967. messageSends: ["subclassResponsibility"]
  27968. }, function ($methodClass){ return function (){
  27969. var self=this,$self=this;
  27970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27971. return $core.withContext(function($ctx1) {
  27972. //>>excludeEnd("ctx");
  27973. $self._subclassResponsibility();
  27974. return self;
  27975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27976. }, function($ctx1) {$ctx1.fill(self,"selector",{})});
  27977. //>>excludeEnd("ctx");
  27978. }; }),
  27979. $globals.TMethodContext);
  27980. $core.addMethod(
  27981. $core.method({
  27982. selector: "sendIndexes",
  27983. protocol: "accessing",
  27984. //>>excludeStart("ide", pragmas.excludeIdeData);
  27985. args: [],
  27986. source: "sendIndexes\x0a\x09self subclassResponsibility",
  27987. referencedClasses: [],
  27988. //>>excludeEnd("ide");
  27989. pragmas: [],
  27990. messageSends: ["subclassResponsibility"]
  27991. }, function ($methodClass){ return function (){
  27992. var self=this,$self=this;
  27993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27994. return $core.withContext(function($ctx1) {
  27995. //>>excludeEnd("ctx");
  27996. $self._subclassResponsibility();
  27997. return self;
  27998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27999. }, function($ctx1) {$ctx1.fill(self,"sendIndexes",{})});
  28000. //>>excludeEnd("ctx");
  28001. }; }),
  28002. $globals.TMethodContext);
  28003. $core.addMethod(
  28004. $core.method({
  28005. selector: "supercall",
  28006. protocol: "accessing",
  28007. //>>excludeStart("ide", pragmas.excludeIdeData);
  28008. args: [],
  28009. source: "supercall\x0a\x09self subclassResponsibility",
  28010. referencedClasses: [],
  28011. //>>excludeEnd("ide");
  28012. pragmas: [],
  28013. messageSends: ["subclassResponsibility"]
  28014. }, function ($methodClass){ return function (){
  28015. var self=this,$self=this;
  28016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28017. return $core.withContext(function($ctx1) {
  28018. //>>excludeEnd("ctx");
  28019. $self._subclassResponsibility();
  28020. return self;
  28021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28022. }, function($ctx1) {$ctx1.fill(self,"supercall",{})});
  28023. //>>excludeEnd("ctx");
  28024. }; }),
  28025. $globals.TMethodContext);
  28026. $core.addClass("Timeout", $globals.Object, "Kernel-Methods");
  28027. $core.setSlots($globals.Timeout, ["rawTimeout"]);
  28028. //>>excludeStart("ide", pragmas.excludeIdeData);
  28029. $globals.Timeout.comment="I am wrapping the returns from `set{Timeout,Interval}`.\x0a\x0a## Motivation\x0a\x0aNumber suffices in browsers, but node.js returns an object.";
  28030. //>>excludeEnd("ide");
  28031. $core.addMethod(
  28032. $core.method({
  28033. selector: "clearInterval",
  28034. protocol: "timeout/interval",
  28035. //>>excludeStart("ide", pragmas.excludeIdeData);
  28036. args: [],
  28037. source: "clearInterval\x0a\x09<inlineJS: '\x0a\x09\x09var interval = $self.rawTimeout;\x0a\x09\x09clearInterval(interval);\x0a\x09'>",
  28038. referencedClasses: [],
  28039. //>>excludeEnd("ide");
  28040. pragmas: [["inlineJS:", ["\x0a\x09\x09var interval = $self.rawTimeout;\x0a\x09\x09clearInterval(interval);\x0a\x09"]]],
  28041. messageSends: []
  28042. }, function ($methodClass){ return function (){
  28043. var self=this,$self=this;
  28044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28045. return $core.withContext(function($ctx1) {
  28046. //>>excludeEnd("ctx");
  28047. var interval = $self.rawTimeout;
  28048. clearInterval(interval);
  28049. ;
  28050. return self;
  28051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28052. }, function($ctx1) {$ctx1.fill(self,"clearInterval",{})});
  28053. //>>excludeEnd("ctx");
  28054. }; }),
  28055. $globals.Timeout);
  28056. $core.addMethod(
  28057. $core.method({
  28058. selector: "clearTimeout",
  28059. protocol: "timeout/interval",
  28060. //>>excludeStart("ide", pragmas.excludeIdeData);
  28061. args: [],
  28062. source: "clearTimeout\x0a\x09<inlineJS: '\x0a\x09\x09var timeout = $self.rawTimeout;\x0a\x09\x09clearTimeout(timeout);\x0a\x09'>",
  28063. referencedClasses: [],
  28064. //>>excludeEnd("ide");
  28065. pragmas: [["inlineJS:", ["\x0a\x09\x09var timeout = $self.rawTimeout;\x0a\x09\x09clearTimeout(timeout);\x0a\x09"]]],
  28066. messageSends: []
  28067. }, function ($methodClass){ return function (){
  28068. var self=this,$self=this;
  28069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28070. return $core.withContext(function($ctx1) {
  28071. //>>excludeEnd("ctx");
  28072. var timeout = $self.rawTimeout;
  28073. clearTimeout(timeout);
  28074. ;
  28075. return self;
  28076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28077. }, function($ctx1) {$ctx1.fill(self,"clearTimeout",{})});
  28078. //>>excludeEnd("ctx");
  28079. }; }),
  28080. $globals.Timeout);
  28081. $core.addMethod(
  28082. $core.method({
  28083. selector: "rawTimeout:",
  28084. protocol: "accessing",
  28085. //>>excludeStart("ide", pragmas.excludeIdeData);
  28086. args: ["anObject"],
  28087. source: "rawTimeout: anObject\x0a\x09rawTimeout := anObject",
  28088. referencedClasses: [],
  28089. //>>excludeEnd("ide");
  28090. pragmas: [],
  28091. messageSends: []
  28092. }, function ($methodClass){ return function (anObject){
  28093. var self=this,$self=this;
  28094. $self.rawTimeout=anObject;
  28095. return self;
  28096. }; }),
  28097. $globals.Timeout);
  28098. $core.addMethod(
  28099. $core.method({
  28100. selector: "on:",
  28101. protocol: "instance creation",
  28102. //>>excludeStart("ide", pragmas.excludeIdeData);
  28103. args: ["anObject"],
  28104. source: "on: anObject\x0a\x09^ self new rawTimeout: anObject; yourself",
  28105. referencedClasses: [],
  28106. //>>excludeEnd("ide");
  28107. pragmas: [],
  28108. messageSends: ["rawTimeout:", "new", "yourself"]
  28109. }, function ($methodClass){ return function (anObject){
  28110. var self=this,$self=this;
  28111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28112. return $core.withContext(function($ctx1) {
  28113. //>>excludeEnd("ctx");
  28114. var $1;
  28115. $1=$self._new();
  28116. $recv($1)._rawTimeout_(anObject);
  28117. return $recv($1)._yourself();
  28118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28119. }, function($ctx1) {$ctx1.fill(self,"on:",{anObject:anObject})});
  28120. //>>excludeEnd("ctx");
  28121. }; }),
  28122. $globals.Timeout.a$cls);
  28123. $core.setTraitComposition([{trait: $globals.TMethodContext}], $globals.MethodContext);
  28124. });
  28125. define('amber/core/Kernel-Dag',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  28126. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  28127. var $pkg = $core.addPackage("Kernel-Dag");
  28128. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  28129. $core.addClass("AbstractDagVisitor", $globals.Object, "Kernel-Dag");
  28130. //>>excludeStart("ide", pragmas.excludeIdeData);
  28131. $globals.AbstractDagVisitor.comment="I am base class of `DagNode` visitor.\x0a\x0aConcrete classes should implement `visitDagNode:`,\x0athey can reuse possible variants of implementation\x0aoffered directly: `visitDagNodeVariantSimple:`\x0aand `visitDagNodeVariantRedux:`.";
  28132. //>>excludeEnd("ide");
  28133. $core.addMethod(
  28134. $core.method({
  28135. selector: "value:",
  28136. protocol: "evaluating",
  28137. //>>excludeStart("ide", pragmas.excludeIdeData);
  28138. args: ["anObject"],
  28139. source: "value: anObject\x0a\x09^ self visit: anObject",
  28140. referencedClasses: [],
  28141. //>>excludeEnd("ide");
  28142. pragmas: [],
  28143. messageSends: ["visit:"]
  28144. }, function ($methodClass){ return function (anObject){
  28145. var self=this,$self=this;
  28146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28147. return $core.withContext(function($ctx1) {
  28148. //>>excludeEnd("ctx");
  28149. return $self._visit_(anObject);
  28150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28151. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
  28152. //>>excludeEnd("ctx");
  28153. }; }),
  28154. $globals.AbstractDagVisitor);
  28155. $core.addMethod(
  28156. $core.method({
  28157. selector: "visit:",
  28158. protocol: "visiting",
  28159. //>>excludeStart("ide", pragmas.excludeIdeData);
  28160. args: ["aNode"],
  28161. source: "visit: aNode\x0a\x09^ aNode acceptDagVisitor: self",
  28162. referencedClasses: [],
  28163. //>>excludeEnd("ide");
  28164. pragmas: [],
  28165. messageSends: ["acceptDagVisitor:"]
  28166. }, function ($methodClass){ return function (aNode){
  28167. var self=this,$self=this;
  28168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28169. return $core.withContext(function($ctx1) {
  28170. //>>excludeEnd("ctx");
  28171. return $recv(aNode)._acceptDagVisitor_(self);
  28172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28173. }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode})});
  28174. //>>excludeEnd("ctx");
  28175. }; }),
  28176. $globals.AbstractDagVisitor);
  28177. $core.addMethod(
  28178. $core.method({
  28179. selector: "visitAll:",
  28180. protocol: "visiting",
  28181. //>>excludeStart("ide", pragmas.excludeIdeData);
  28182. args: ["aCollection"],
  28183. source: "visitAll: aCollection\x0a\x09^ aCollection collect: [ :each | self visit: each ]",
  28184. referencedClasses: [],
  28185. //>>excludeEnd("ide");
  28186. pragmas: [],
  28187. messageSends: ["collect:", "visit:"]
  28188. }, function ($methodClass){ return function (aCollection){
  28189. var self=this,$self=this;
  28190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28191. return $core.withContext(function($ctx1) {
  28192. //>>excludeEnd("ctx");
  28193. return $recv(aCollection)._collect_((function(each){
  28194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28195. return $core.withContext(function($ctx2) {
  28196. //>>excludeEnd("ctx");
  28197. return $self._visit_(each);
  28198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28199. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  28200. //>>excludeEnd("ctx");
  28201. }));
  28202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28203. }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection})});
  28204. //>>excludeEnd("ctx");
  28205. }; }),
  28206. $globals.AbstractDagVisitor);
  28207. $core.addMethod(
  28208. $core.method({
  28209. selector: "visitAllChildren:",
  28210. protocol: "visiting",
  28211. //>>excludeStart("ide", pragmas.excludeIdeData);
  28212. args: ["aDagNode"],
  28213. source: "visitAllChildren: aDagNode\x0a\x09^ self visitAll: aDagNode dagChildren",
  28214. referencedClasses: [],
  28215. //>>excludeEnd("ide");
  28216. pragmas: [],
  28217. messageSends: ["visitAll:", "dagChildren"]
  28218. }, function ($methodClass){ return function (aDagNode){
  28219. var self=this,$self=this;
  28220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28221. return $core.withContext(function($ctx1) {
  28222. //>>excludeEnd("ctx");
  28223. return $self._visitAll_($recv(aDagNode)._dagChildren());
  28224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28225. }, function($ctx1) {$ctx1.fill(self,"visitAllChildren:",{aDagNode:aDagNode})});
  28226. //>>excludeEnd("ctx");
  28227. }; }),
  28228. $globals.AbstractDagVisitor);
  28229. $core.addMethod(
  28230. $core.method({
  28231. selector: "visitDagNode:",
  28232. protocol: "visiting",
  28233. //>>excludeStart("ide", pragmas.excludeIdeData);
  28234. args: ["aNode"],
  28235. source: "visitDagNode: aNode\x0a\x09self subclassResponsibility",
  28236. referencedClasses: [],
  28237. //>>excludeEnd("ide");
  28238. pragmas: [],
  28239. messageSends: ["subclassResponsibility"]
  28240. }, function ($methodClass){ return function (aNode){
  28241. var self=this,$self=this;
  28242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28243. return $core.withContext(function($ctx1) {
  28244. //>>excludeEnd("ctx");
  28245. $self._subclassResponsibility();
  28246. return self;
  28247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28248. }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode})});
  28249. //>>excludeEnd("ctx");
  28250. }; }),
  28251. $globals.AbstractDagVisitor);
  28252. $core.addMethod(
  28253. $core.method({
  28254. selector: "visitDagNodeVariantRedux:",
  28255. protocol: "visiting",
  28256. //>>excludeStart("ide", pragmas.excludeIdeData);
  28257. args: ["aNode"],
  28258. source: "visitDagNodeVariantRedux: aNode\x0a\x09\x22Immutable-guarded implementation of visitDagNode:.\x0a\x09Visits all children and checks if there were changes.\x0a\x09If not, returns aNode.\x0a\x09If yes, returns copy of aNode with new children.\x22\x0a\x0a\x09| newChildren oldChildren |\x0a\x09oldChildren := aNode dagChildren.\x0a\x09newChildren := self visitAllChildren: aNode.\x0a\x09oldChildren = newChildren\x0a\x09\x09ifTrue: [ ^ aNode ]\x0a\x09\x09ifFalse: [ ^ aNode copy dagChildren: newChildren; yourself ]",
  28259. referencedClasses: [],
  28260. //>>excludeEnd("ide");
  28261. pragmas: [],
  28262. messageSends: ["dagChildren", "visitAllChildren:", "ifTrue:ifFalse:", "=", "dagChildren:", "copy", "yourself"]
  28263. }, function ($methodClass){ return function (aNode){
  28264. var self=this,$self=this;
  28265. var newChildren,oldChildren;
  28266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28267. return $core.withContext(function($ctx1) {
  28268. //>>excludeEnd("ctx");
  28269. var $1;
  28270. oldChildren=$recv(aNode)._dagChildren();
  28271. newChildren=$self._visitAllChildren_(aNode);
  28272. if($core.assert($recv(oldChildren).__eq(newChildren))){
  28273. return aNode;
  28274. } else {
  28275. $1=$recv(aNode)._copy();
  28276. $recv($1)._dagChildren_(newChildren);
  28277. return $recv($1)._yourself();
  28278. }
  28279. return self;
  28280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28281. }, function($ctx1) {$ctx1.fill(self,"visitDagNodeVariantRedux:",{aNode:aNode,newChildren:newChildren,oldChildren:oldChildren})});
  28282. //>>excludeEnd("ctx");
  28283. }; }),
  28284. $globals.AbstractDagVisitor);
  28285. $core.addMethod(
  28286. $core.method({
  28287. selector: "visitDagNodeVariantSimple:",
  28288. protocol: "visiting",
  28289. //>>excludeStart("ide", pragmas.excludeIdeData);
  28290. args: ["aNode"],
  28291. source: "visitDagNodeVariantSimple: aNode\x0a\x09\x22Simple implementation of visitDagNode:.\x0a\x09Visits children, then returns aNode\x22\x0a\x0a\x09self visitAllChildren: aNode.\x0a\x09^ aNode",
  28292. referencedClasses: [],
  28293. //>>excludeEnd("ide");
  28294. pragmas: [],
  28295. messageSends: ["visitAllChildren:"]
  28296. }, function ($methodClass){ return function (aNode){
  28297. var self=this,$self=this;
  28298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28299. return $core.withContext(function($ctx1) {
  28300. //>>excludeEnd("ctx");
  28301. $self._visitAllChildren_(aNode);
  28302. return aNode;
  28303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28304. }, function($ctx1) {$ctx1.fill(self,"visitDagNodeVariantSimple:",{aNode:aNode})});
  28305. //>>excludeEnd("ctx");
  28306. }; }),
  28307. $globals.AbstractDagVisitor);
  28308. $core.addClass("PathDagVisitor", $globals.AbstractDagVisitor, "Kernel-Dag");
  28309. $core.setSlots($globals.PathDagVisitor, ["path"]);
  28310. //>>excludeStart("ide", pragmas.excludeIdeData);
  28311. $globals.PathDagVisitor.comment="I am base class of `DagNode` visitor.\x0a\x0aI hold the path of ancestors up to actual node\x0ain `self path`.";
  28312. //>>excludeEnd("ide");
  28313. $core.addMethod(
  28314. $core.method({
  28315. selector: "initialize",
  28316. protocol: "initialization",
  28317. //>>excludeStart("ide", pragmas.excludeIdeData);
  28318. args: [],
  28319. source: "initialize\x0a\x09super initialize.\x0a\x0a\x09path := #()",
  28320. referencedClasses: [],
  28321. //>>excludeEnd("ide");
  28322. pragmas: [],
  28323. messageSends: ["initialize"]
  28324. }, function ($methodClass){ return function (){
  28325. var self=this,$self=this;
  28326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28327. return $core.withContext(function($ctx1) {
  28328. //>>excludeEnd("ctx");
  28329. [(
  28330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28331. $ctx1.supercall = true,
  28332. //>>excludeEnd("ctx");
  28333. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  28334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28335. ,$ctx1.supercall = false
  28336. //>>excludeEnd("ctx");
  28337. ][0];
  28338. $self.path=[];
  28339. return self;
  28340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28341. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  28342. //>>excludeEnd("ctx");
  28343. }; }),
  28344. $globals.PathDagVisitor);
  28345. $core.addMethod(
  28346. $core.method({
  28347. selector: "path",
  28348. protocol: "accessing",
  28349. //>>excludeStart("ide", pragmas.excludeIdeData);
  28350. args: [],
  28351. source: "path\x0a\x09^ path",
  28352. referencedClasses: [],
  28353. //>>excludeEnd("ide");
  28354. pragmas: [],
  28355. messageSends: []
  28356. }, function ($methodClass){ return function (){
  28357. var self=this,$self=this;
  28358. return $self.path;
  28359. }; }),
  28360. $globals.PathDagVisitor);
  28361. $core.addMethod(
  28362. $core.method({
  28363. selector: "visit:",
  28364. protocol: "visiting",
  28365. //>>excludeStart("ide", pragmas.excludeIdeData);
  28366. args: ["aNode"],
  28367. source: "visit: aNode\x0a\x09| oldPath result |\x0a\x09result := aNode.\x0a\x09oldPath := path.\x0a\x09[\x0a\x09\x09path := path, {aNode}.\x0a\x09\x09result := super visit: aNode\x0a\x09] ensure: [ path := oldPath ].\x0a\x09^ result",
  28368. referencedClasses: [],
  28369. //>>excludeEnd("ide");
  28370. pragmas: [],
  28371. messageSends: ["ensure:", ",", "visit:"]
  28372. }, function ($methodClass){ return function (aNode){
  28373. var self=this,$self=this;
  28374. var oldPath,result;
  28375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28376. return $core.withContext(function($ctx1) {
  28377. //>>excludeEnd("ctx");
  28378. result=aNode;
  28379. oldPath=$self.path;
  28380. $recv((function(){
  28381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28382. return $core.withContext(function($ctx2) {
  28383. //>>excludeEnd("ctx");
  28384. $self.path=$recv($self.path).__comma([aNode]);
  28385. result=[(
  28386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28387. $ctx2.supercall = true,
  28388. //>>excludeEnd("ctx");
  28389. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visit_.call($self,aNode))
  28390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28391. ,$ctx2.supercall = false
  28392. //>>excludeEnd("ctx");
  28393. ][0];
  28394. return result;
  28395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28396. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  28397. //>>excludeEnd("ctx");
  28398. }))._ensure_((function(){
  28399. $self.path=oldPath;
  28400. return $self.path;
  28401. }));
  28402. return result;
  28403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28404. }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode,oldPath:oldPath,result:result})});
  28405. //>>excludeEnd("ctx");
  28406. }; }),
  28407. $globals.PathDagVisitor);
  28408. $core.addMethod(
  28409. $core.method({
  28410. selector: "visitDagNodeVariantRedux:",
  28411. protocol: "visiting",
  28412. //>>excludeStart("ide", pragmas.excludeIdeData);
  28413. args: ["aNode"],
  28414. source: "visitDagNodeVariantRedux: aNode\x0a\x09| newNode |\x0a\x09newNode := super visitDagNodeVariantRedux: aNode.\x0a\x09aNode == newNode ifFalse: [ path at: path size put: newNode ].\x0a\x09^ newNode",
  28415. referencedClasses: [],
  28416. //>>excludeEnd("ide");
  28417. pragmas: [],
  28418. messageSends: ["visitDagNodeVariantRedux:", "ifFalse:", "==", "at:put:", "size"]
  28419. }, function ($methodClass){ return function (aNode){
  28420. var self=this,$self=this;
  28421. var newNode;
  28422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28423. return $core.withContext(function($ctx1) {
  28424. //>>excludeEnd("ctx");
  28425. newNode=[(
  28426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28427. $ctx1.supercall = true,
  28428. //>>excludeEnd("ctx");
  28429. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitDagNodeVariantRedux_.call($self,aNode))
  28430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28431. ,$ctx1.supercall = false
  28432. //>>excludeEnd("ctx");
  28433. ][0];
  28434. if(!$core.assert($recv(aNode).__eq_eq(newNode))){
  28435. $recv($self.path)._at_put_($recv($self.path)._size(),newNode);
  28436. }
  28437. return newNode;
  28438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28439. }, function($ctx1) {$ctx1.fill(self,"visitDagNodeVariantRedux:",{aNode:aNode,newNode:newNode})});
  28440. //>>excludeEnd("ctx");
  28441. }; }),
  28442. $globals.PathDagVisitor);
  28443. $core.addClass("DagNode", $globals.Object, "Kernel-Dag");
  28444. //>>excludeStart("ide", pragmas.excludeIdeData);
  28445. $globals.DagNode.comment="I am the abstract root class of any directed acyclic graph.\x0a\x0aConcrete classes should implement `dagChildren` and `dagChildren:`\x0ato get / set direct successor nodes (aka child nodes / subnodes).";
  28446. //>>excludeEnd("ide");
  28447. $core.addMethod(
  28448. $core.method({
  28449. selector: "acceptDagVisitor:",
  28450. protocol: "visiting",
  28451. //>>excludeStart("ide", pragmas.excludeIdeData);
  28452. args: ["aVisitor"],
  28453. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDagNode: self",
  28454. referencedClasses: [],
  28455. //>>excludeEnd("ide");
  28456. pragmas: [],
  28457. messageSends: ["visitDagNode:"]
  28458. }, function ($methodClass){ return function (aVisitor){
  28459. var self=this,$self=this;
  28460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28461. return $core.withContext(function($ctx1) {
  28462. //>>excludeEnd("ctx");
  28463. return $recv(aVisitor)._visitDagNode_(self);
  28464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28465. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  28466. //>>excludeEnd("ctx");
  28467. }; }),
  28468. $globals.DagNode);
  28469. $core.addMethod(
  28470. $core.method({
  28471. selector: "allDagChildren",
  28472. protocol: "accessing",
  28473. //>>excludeStart("ide", pragmas.excludeIdeData);
  28474. args: [],
  28475. source: "allDagChildren\x0a\x09| allNodes |\x0a\x09\x0a\x09allNodes := self dagChildren asSet.\x0a\x09self dagChildren do: [ :each | \x0a\x09\x09allNodes addAll: each allDagChildren ].\x0a\x09\x0a\x09^ allNodes",
  28476. referencedClasses: [],
  28477. //>>excludeEnd("ide");
  28478. pragmas: [],
  28479. messageSends: ["asSet", "dagChildren", "do:", "addAll:", "allDagChildren"]
  28480. }, function ($methodClass){ return function (){
  28481. var self=this,$self=this;
  28482. var allNodes;
  28483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28484. return $core.withContext(function($ctx1) {
  28485. //>>excludeEnd("ctx");
  28486. allNodes=$recv([$self._dagChildren()
  28487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28488. ,$ctx1.sendIdx["dagChildren"]=1
  28489. //>>excludeEnd("ctx");
  28490. ][0])._asSet();
  28491. $recv($self._dagChildren())._do_((function(each){
  28492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28493. return $core.withContext(function($ctx2) {
  28494. //>>excludeEnd("ctx");
  28495. return $recv(allNodes)._addAll_($recv(each)._allDagChildren());
  28496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28497. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  28498. //>>excludeEnd("ctx");
  28499. }));
  28500. return allNodes;
  28501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28502. }, function($ctx1) {$ctx1.fill(self,"allDagChildren",{allNodes:allNodes})});
  28503. //>>excludeEnd("ctx");
  28504. }; }),
  28505. $globals.DagNode);
  28506. $core.addMethod(
  28507. $core.method({
  28508. selector: "dagChildren",
  28509. protocol: "accessing",
  28510. //>>excludeStart("ide", pragmas.excludeIdeData);
  28511. args: [],
  28512. source: "dagChildren\x0a\x09self subclassResponsibility",
  28513. referencedClasses: [],
  28514. //>>excludeEnd("ide");
  28515. pragmas: [],
  28516. messageSends: ["subclassResponsibility"]
  28517. }, function ($methodClass){ return function (){
  28518. var self=this,$self=this;
  28519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28520. return $core.withContext(function($ctx1) {
  28521. //>>excludeEnd("ctx");
  28522. $self._subclassResponsibility();
  28523. return self;
  28524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28525. }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
  28526. //>>excludeEnd("ctx");
  28527. }; }),
  28528. $globals.DagNode);
  28529. $core.addMethod(
  28530. $core.method({
  28531. selector: "dagChildren:",
  28532. protocol: "accessing",
  28533. //>>excludeStart("ide", pragmas.excludeIdeData);
  28534. args: ["aCollection"],
  28535. source: "dagChildren: aCollection\x0a\x09self subclassResponsibility",
  28536. referencedClasses: [],
  28537. //>>excludeEnd("ide");
  28538. pragmas: [],
  28539. messageSends: ["subclassResponsibility"]
  28540. }, function ($methodClass){ return function (aCollection){
  28541. var self=this,$self=this;
  28542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28543. return $core.withContext(function($ctx1) {
  28544. //>>excludeEnd("ctx");
  28545. $self._subclassResponsibility();
  28546. return self;
  28547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28548. }, function($ctx1) {$ctx1.fill(self,"dagChildren:",{aCollection:aCollection})});
  28549. //>>excludeEnd("ctx");
  28550. }; }),
  28551. $globals.DagNode);
  28552. $core.addMethod(
  28553. $core.method({
  28554. selector: "isDagNode",
  28555. protocol: "testing",
  28556. //>>excludeStart("ide", pragmas.excludeIdeData);
  28557. args: [],
  28558. source: "isDagNode\x0a\x09^ true",
  28559. referencedClasses: [],
  28560. //>>excludeEnd("ide");
  28561. pragmas: [],
  28562. messageSends: []
  28563. }, function ($methodClass){ return function (){
  28564. var self=this,$self=this;
  28565. return true;
  28566. }; }),
  28567. $globals.DagNode);
  28568. $core.addClass("DagParentNode", $globals.DagNode, "Kernel-Dag");
  28569. $core.setSlots($globals.DagParentNode, ["nodes"]);
  28570. //>>excludeStart("ide", pragmas.excludeIdeData);
  28571. $globals.DagParentNode.comment="I am `DagNode` that stores a collection of its children,\x0alazy initialized to empty array.\x0a\x0aI can `addDagChild:` to add a child.";
  28572. //>>excludeEnd("ide");
  28573. $core.addMethod(
  28574. $core.method({
  28575. selector: "addDagChild:",
  28576. protocol: "accessing",
  28577. //>>excludeStart("ide", pragmas.excludeIdeData);
  28578. args: ["aDagNode"],
  28579. source: "addDagChild: aDagNode\x0a\x09self dagChildren add: aDagNode",
  28580. referencedClasses: [],
  28581. //>>excludeEnd("ide");
  28582. pragmas: [],
  28583. messageSends: ["add:", "dagChildren"]
  28584. }, function ($methodClass){ return function (aDagNode){
  28585. var self=this,$self=this;
  28586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28587. return $core.withContext(function($ctx1) {
  28588. //>>excludeEnd("ctx");
  28589. $recv($self._dagChildren())._add_(aDagNode);
  28590. return self;
  28591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28592. }, function($ctx1) {$ctx1.fill(self,"addDagChild:",{aDagNode:aDagNode})});
  28593. //>>excludeEnd("ctx");
  28594. }; }),
  28595. $globals.DagParentNode);
  28596. $core.addMethod(
  28597. $core.method({
  28598. selector: "dagChildren",
  28599. protocol: "accessing",
  28600. //>>excludeStart("ide", pragmas.excludeIdeData);
  28601. args: [],
  28602. source: "dagChildren\x0a\x09^ nodes ifNil: [ nodes := Array new ]",
  28603. referencedClasses: ["Array"],
  28604. //>>excludeEnd("ide");
  28605. pragmas: [],
  28606. messageSends: ["ifNil:", "new"]
  28607. }, function ($methodClass){ return function (){
  28608. var self=this,$self=this;
  28609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28610. return $core.withContext(function($ctx1) {
  28611. //>>excludeEnd("ctx");
  28612. var $1;
  28613. $1=$self.nodes;
  28614. if($1 == null || $1.a$nil){
  28615. $self.nodes=$recv($globals.Array)._new();
  28616. return $self.nodes;
  28617. } else {
  28618. return $1;
  28619. }
  28620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28621. }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
  28622. //>>excludeEnd("ctx");
  28623. }; }),
  28624. $globals.DagParentNode);
  28625. $core.addMethod(
  28626. $core.method({
  28627. selector: "dagChildren:",
  28628. protocol: "accessing",
  28629. //>>excludeStart("ide", pragmas.excludeIdeData);
  28630. args: ["aCollection"],
  28631. source: "dagChildren: aCollection\x0a\x09nodes := aCollection",
  28632. referencedClasses: [],
  28633. //>>excludeEnd("ide");
  28634. pragmas: [],
  28635. messageSends: []
  28636. }, function ($methodClass){ return function (aCollection){
  28637. var self=this,$self=this;
  28638. $self.nodes=aCollection;
  28639. return self;
  28640. }; }),
  28641. $globals.DagParentNode);
  28642. $core.addClass("DagSink", $globals.DagNode, "Kernel-Dag");
  28643. //>>excludeStart("ide", pragmas.excludeIdeData);
  28644. $globals.DagSink.comment="I am `DagNode` with no direct successors.\x0a\x0aSending `dagChildren:` with empty collection is legal.";
  28645. //>>excludeEnd("ide");
  28646. $core.addTrait("TDagSink", "Kernel-Dag");
  28647. $core.addMethod(
  28648. $core.method({
  28649. selector: "dagChildren",
  28650. protocol: "accessing",
  28651. //>>excludeStart("ide", pragmas.excludeIdeData);
  28652. args: [],
  28653. source: "dagChildren\x0a\x09^ #()",
  28654. referencedClasses: [],
  28655. //>>excludeEnd("ide");
  28656. pragmas: [],
  28657. messageSends: []
  28658. }, function ($methodClass){ return function (){
  28659. var self=this,$self=this;
  28660. return [];
  28661. }; }),
  28662. $globals.TDagSink);
  28663. $core.addMethod(
  28664. $core.method({
  28665. selector: "dagChildren:",
  28666. protocol: "accessing",
  28667. //>>excludeStart("ide", pragmas.excludeIdeData);
  28668. args: ["aCollection"],
  28669. source: "dagChildren: aCollection\x0a\x09aCollection ifNotEmpty: [ self error: 'A DagSink cannot have children.' ]",
  28670. referencedClasses: [],
  28671. //>>excludeEnd("ide");
  28672. pragmas: [],
  28673. messageSends: ["ifNotEmpty:", "error:"]
  28674. }, function ($methodClass){ return function (aCollection){
  28675. var self=this,$self=this;
  28676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28677. return $core.withContext(function($ctx1) {
  28678. //>>excludeEnd("ctx");
  28679. $recv(aCollection)._ifNotEmpty_((function(){
  28680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28681. return $core.withContext(function($ctx2) {
  28682. //>>excludeEnd("ctx");
  28683. return $self._error_("A DagSink cannot have children.");
  28684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28685. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  28686. //>>excludeEnd("ctx");
  28687. }));
  28688. return self;
  28689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28690. }, function($ctx1) {$ctx1.fill(self,"dagChildren:",{aCollection:aCollection})});
  28691. //>>excludeEnd("ctx");
  28692. }; }),
  28693. $globals.TDagSink);
  28694. $core.addTrait("TDerivedDagChildren", "Kernel-Dag");
  28695. $core.addMethod(
  28696. $core.method({
  28697. selector: "addDagChild:",
  28698. protocol: "accessing",
  28699. //>>excludeStart("ide", pragmas.excludeIdeData);
  28700. args: ["aDagNode"],
  28701. source: "addDagChild: aDagNode\x0a\x09self error: 'Cannot add child for a TDerivedChildren.'",
  28702. referencedClasses: [],
  28703. //>>excludeEnd("ide");
  28704. pragmas: [],
  28705. messageSends: ["error:"]
  28706. }, function ($methodClass){ return function (aDagNode){
  28707. var self=this,$self=this;
  28708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28709. return $core.withContext(function($ctx1) {
  28710. //>>excludeEnd("ctx");
  28711. $self._error_("Cannot add child for a TDerivedChildren.");
  28712. return self;
  28713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28714. }, function($ctx1) {$ctx1.fill(self,"addDagChild:",{aDagNode:aDagNode})});
  28715. //>>excludeEnd("ctx");
  28716. }; }),
  28717. $globals.TDerivedDagChildren);
  28718. $core.addMethod(
  28719. $core.method({
  28720. selector: "dagChildren",
  28721. protocol: "accessing",
  28722. //>>excludeStart("ide", pragmas.excludeIdeData);
  28723. args: [],
  28724. source: "dagChildren\x0a\x09self subclassResponsibility",
  28725. referencedClasses: [],
  28726. //>>excludeEnd("ide");
  28727. pragmas: [],
  28728. messageSends: ["subclassResponsibility"]
  28729. }, function ($methodClass){ return function (){
  28730. var self=this,$self=this;
  28731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28732. return $core.withContext(function($ctx1) {
  28733. //>>excludeEnd("ctx");
  28734. $self._subclassResponsibility();
  28735. return self;
  28736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28737. }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
  28738. //>>excludeEnd("ctx");
  28739. }; }),
  28740. $globals.TDerivedDagChildren);
  28741. $core.addMethod(
  28742. $core.method({
  28743. selector: "dagChildren:",
  28744. protocol: "accessing",
  28745. //>>excludeStart("ide", pragmas.excludeIdeData);
  28746. args: ["aCollection"],
  28747. source: "dagChildren: aCollection\x0a\x09self error: 'Cannot set children of a TDerivedChildren.'",
  28748. referencedClasses: [],
  28749. //>>excludeEnd("ide");
  28750. pragmas: [],
  28751. messageSends: ["error:"]
  28752. }, function ($methodClass){ return function (aCollection){
  28753. var self=this,$self=this;
  28754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28755. return $core.withContext(function($ctx1) {
  28756. //>>excludeEnd("ctx");
  28757. $self._error_("Cannot set children of a TDerivedChildren.");
  28758. return self;
  28759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28760. }, function($ctx1) {$ctx1.fill(self,"dagChildren:",{aCollection:aCollection})});
  28761. //>>excludeEnd("ctx");
  28762. }; }),
  28763. $globals.TDerivedDagChildren);
  28764. $core.addTrait("TSingleDagChild", "Kernel-Dag");
  28765. $core.addMethod(
  28766. $core.method({
  28767. selector: "dagChild",
  28768. protocol: "accessing",
  28769. //>>excludeStart("ide", pragmas.excludeIdeData);
  28770. args: [],
  28771. source: "dagChild\x0a\x09self subclassResponsibility",
  28772. referencedClasses: [],
  28773. //>>excludeEnd("ide");
  28774. pragmas: [],
  28775. messageSends: ["subclassResponsibility"]
  28776. }, function ($methodClass){ return function (){
  28777. var self=this,$self=this;
  28778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28779. return $core.withContext(function($ctx1) {
  28780. //>>excludeEnd("ctx");
  28781. $self._subclassResponsibility();
  28782. return self;
  28783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28784. }, function($ctx1) {$ctx1.fill(self,"dagChild",{})});
  28785. //>>excludeEnd("ctx");
  28786. }; }),
  28787. $globals.TSingleDagChild);
  28788. $core.addMethod(
  28789. $core.method({
  28790. selector: "dagChildren",
  28791. protocol: "accessing",
  28792. //>>excludeStart("ide", pragmas.excludeIdeData);
  28793. args: [],
  28794. source: "dagChildren\x0a\x09^ { self dagChild }",
  28795. referencedClasses: [],
  28796. //>>excludeEnd("ide");
  28797. pragmas: [],
  28798. messageSends: ["dagChild"]
  28799. }, function ($methodClass){ return function (){
  28800. var self=this,$self=this;
  28801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28802. return $core.withContext(function($ctx1) {
  28803. //>>excludeEnd("ctx");
  28804. return [$self._dagChild()];
  28805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28806. }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
  28807. //>>excludeEnd("ctx");
  28808. }; }),
  28809. $globals.TSingleDagChild);
  28810. $core.setTraitComposition([{trait: $globals.TDerivedDagChildren}], $globals.TDagSink);
  28811. $core.setTraitComposition([{trait: $globals.TDerivedDagChildren}], $globals.TSingleDagChild);
  28812. $core.setTraitComposition([{trait: $globals.TDagSink}], $globals.DagSink);
  28813. $core.addMethod(
  28814. $core.method({
  28815. selector: "isDagNode",
  28816. protocol: "*Kernel-Dag",
  28817. //>>excludeStart("ide", pragmas.excludeIdeData);
  28818. args: [],
  28819. source: "isDagNode\x0a\x09^ false",
  28820. referencedClasses: [],
  28821. //>>excludeEnd("ide");
  28822. pragmas: [],
  28823. messageSends: []
  28824. }, function ($methodClass){ return function (){
  28825. var self=this,$self=this;
  28826. return false;
  28827. }; }),
  28828. $globals.Object);
  28829. });
  28830. define('amber/core/Kernel-Promises',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  28831. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  28832. var $pkg = $core.addPackage("Kernel-Promises");
  28833. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  28834. $core.addClass("Promise", $globals.Object, "Kernel-Promises");
  28835. $core.addMethod(
  28836. $core.method({
  28837. selector: "all:",
  28838. protocol: "composites",
  28839. //>>excludeStart("ide", pragmas.excludeIdeData);
  28840. args: ["aCollection"],
  28841. source: "all: aCollection\x0a\x22Returns a Promise resolved with results of sub-promises.\x22\x0a<inlineJS: 'return Promise.all($recv(aCollection)._asArray())'>",
  28842. referencedClasses: [],
  28843. //>>excludeEnd("ide");
  28844. pragmas: [["inlineJS:", ["return Promise.all($recv(aCollection)._asArray())"]]],
  28845. messageSends: []
  28846. }, function ($methodClass){ return function (aCollection){
  28847. var self=this,$self=this;
  28848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28849. return $core.withContext(function($ctx1) {
  28850. //>>excludeEnd("ctx");
  28851. return Promise.all($recv(aCollection)._asArray());
  28852. return self;
  28853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28854. }, function($ctx1) {$ctx1.fill(self,"all:",{aCollection:aCollection})});
  28855. //>>excludeEnd("ctx");
  28856. }; }),
  28857. $globals.Promise.a$cls);
  28858. $core.addMethod(
  28859. $core.method({
  28860. selector: "any:",
  28861. protocol: "composites",
  28862. //>>excludeStart("ide", pragmas.excludeIdeData);
  28863. args: ["aCollection"],
  28864. source: "any: aCollection\x0a\x22Returns a Promise resolved with first result of sub-promises.\x22\x0a<inlineJS: 'return Promise.race($recv(aCollection)._asArray())'>",
  28865. referencedClasses: [],
  28866. //>>excludeEnd("ide");
  28867. pragmas: [["inlineJS:", ["return Promise.race($recv(aCollection)._asArray())"]]],
  28868. messageSends: []
  28869. }, function ($methodClass){ return function (aCollection){
  28870. var self=this,$self=this;
  28871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28872. return $core.withContext(function($ctx1) {
  28873. //>>excludeEnd("ctx");
  28874. return Promise.race($recv(aCollection)._asArray());
  28875. return self;
  28876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28877. }, function($ctx1) {$ctx1.fill(self,"any:",{aCollection:aCollection})});
  28878. //>>excludeEnd("ctx");
  28879. }; }),
  28880. $globals.Promise.a$cls);
  28881. $core.addMethod(
  28882. $core.method({
  28883. selector: "delayMilliseconds:",
  28884. protocol: "instance creation",
  28885. //>>excludeStart("ide", pragmas.excludeIdeData);
  28886. args: ["aNumber"],
  28887. source: "delayMilliseconds: aNumber\x0a\x09^ self new: [ :model | [ model value: nil ] valueWithTimeout: aNumber ]",
  28888. referencedClasses: [],
  28889. //>>excludeEnd("ide");
  28890. pragmas: [],
  28891. messageSends: ["new:", "valueWithTimeout:", "value:"]
  28892. }, function ($methodClass){ return function (aNumber){
  28893. var self=this,$self=this;
  28894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28895. return $core.withContext(function($ctx1) {
  28896. //>>excludeEnd("ctx");
  28897. return $self._new_((function(model){
  28898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28899. return $core.withContext(function($ctx2) {
  28900. //>>excludeEnd("ctx");
  28901. return $recv((function(){
  28902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28903. return $core.withContext(function($ctx3) {
  28904. //>>excludeEnd("ctx");
  28905. return $recv(model)._value_(nil);
  28906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28907. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  28908. //>>excludeEnd("ctx");
  28909. }))._valueWithTimeout_(aNumber);
  28910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28911. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,1)});
  28912. //>>excludeEnd("ctx");
  28913. }));
  28914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28915. }, function($ctx1) {$ctx1.fill(self,"delayMilliseconds:",{aNumber:aNumber})});
  28916. //>>excludeEnd("ctx");
  28917. }; }),
  28918. $globals.Promise.a$cls);
  28919. $core.addMethod(
  28920. $core.method({
  28921. selector: "forBlock:",
  28922. protocol: "instance creation",
  28923. //>>excludeStart("ide", pragmas.excludeIdeData);
  28924. args: ["aBlock"],
  28925. source: "forBlock: aBlock\x0a\x22Returns a Promise that is resolved with the value of aBlock,\x0aand rejected if error happens while evaluating aBlock.\x22\x0a\x09^ self new then: aBlock",
  28926. referencedClasses: [],
  28927. //>>excludeEnd("ide");
  28928. pragmas: [],
  28929. messageSends: ["then:", "new"]
  28930. }, function ($methodClass){ return function (aBlock){
  28931. var self=this,$self=this;
  28932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28933. return $core.withContext(function($ctx1) {
  28934. //>>excludeEnd("ctx");
  28935. return $recv($self._new())._then_(aBlock);
  28936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28937. }, function($ctx1) {$ctx1.fill(self,"forBlock:",{aBlock:aBlock})});
  28938. //>>excludeEnd("ctx");
  28939. }; }),
  28940. $globals.Promise.a$cls);
  28941. $core.addMethod(
  28942. $core.method({
  28943. selector: "new",
  28944. protocol: "instance creation",
  28945. //>>excludeStart("ide", pragmas.excludeIdeData);
  28946. args: [],
  28947. source: "new\x0a\x22Returns a dumb Promise resolved with nil.\x22\x0a<inlineJS: 'return Promise.resolve()'>",
  28948. referencedClasses: [],
  28949. //>>excludeEnd("ide");
  28950. pragmas: [["inlineJS:", ["return Promise.resolve()"]]],
  28951. messageSends: []
  28952. }, function ($methodClass){ return function (){
  28953. var self=this,$self=this;
  28954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28955. return $core.withContext(function($ctx1) {
  28956. //>>excludeEnd("ctx");
  28957. return Promise.resolve();
  28958. return self;
  28959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28960. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  28961. //>>excludeEnd("ctx");
  28962. }; }),
  28963. $globals.Promise.a$cls);
  28964. $core.addMethod(
  28965. $core.method({
  28966. selector: "new:",
  28967. protocol: "instance creation",
  28968. //>>excludeStart("ide", pragmas.excludeIdeData);
  28969. args: ["aBlock"],
  28970. source: "new: aBlock\x0a\x22Returns a Promise that is eventually resolved or rejected.\x0aPass a block that is called with one argument, model.\x0aYou should call model value: ... to resolve the promise\x0aand model signal: ... to reject the promise.\x0aIf error happens during run of the block,\x0apromise is rejected with that error as well.\x22\x0a<inlineJS: 'return new Promise(function (resolve, reject) {\x0a var model = {\x0a\x09\x09value: resolve,\x0a\x09\x09signal: reject,\x0a\x09\x09do: function (aBlock) { resolve($self._forBlock_(aBlock)); }\x0a\x09};\x0a aBlock._value_(model);\x0a})'>",
  28971. referencedClasses: [],
  28972. //>>excludeEnd("ide");
  28973. pragmas: [["inlineJS:", ["return new Promise(function (resolve, reject) {\x0a var model = {\x0a\x09\x09value: resolve,\x0a\x09\x09signal: reject,\x0a\x09\x09do: function (aBlock) { resolve($self._forBlock_(aBlock)); }\x0a\x09};\x0a aBlock._value_(model);\x0a})"]]],
  28974. messageSends: []
  28975. }, function ($methodClass){ return function (aBlock){
  28976. var self=this,$self=this;
  28977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28978. return $core.withContext(function($ctx1) {
  28979. //>>excludeEnd("ctx");
  28980. return new Promise(function (resolve, reject) {
  28981. var model = {
  28982. value: resolve,
  28983. signal: reject,
  28984. do: function (aBlock) { resolve($self._forBlock_(aBlock)); }
  28985. };
  28986. aBlock._value_(model);
  28987. });
  28988. return self;
  28989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28990. }, function($ctx1) {$ctx1.fill(self,"new:",{aBlock:aBlock})});
  28991. //>>excludeEnd("ctx");
  28992. }; }),
  28993. $globals.Promise.a$cls);
  28994. $core.addMethod(
  28995. $core.method({
  28996. selector: "signal:",
  28997. protocol: "instance creation",
  28998. //>>excludeStart("ide", pragmas.excludeIdeData);
  28999. args: ["anObject"],
  29000. source: "signal: anObject\x0a\x22Returns a Promise rejected with anObject.\x22\x0a<inlineJS: 'return $recv(anObject)._in_(function (x) {return Promise.reject(x)})'>",
  29001. referencedClasses: [],
  29002. //>>excludeEnd("ide");
  29003. pragmas: [["inlineJS:", ["return $recv(anObject)._in_(function (x) {return Promise.reject(x)})"]]],
  29004. messageSends: []
  29005. }, function ($methodClass){ return function (anObject){
  29006. var self=this,$self=this;
  29007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29008. return $core.withContext(function($ctx1) {
  29009. //>>excludeEnd("ctx");
  29010. return $recv(anObject)._in_(function (x) {return Promise.reject(x)});
  29011. return self;
  29012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29013. }, function($ctx1) {$ctx1.fill(self,"signal:",{anObject:anObject})});
  29014. //>>excludeEnd("ctx");
  29015. }; }),
  29016. $globals.Promise.a$cls);
  29017. $core.addMethod(
  29018. $core.method({
  29019. selector: "value:",
  29020. protocol: "instance creation",
  29021. //>>excludeStart("ide", pragmas.excludeIdeData);
  29022. args: ["anObject"],
  29023. source: "value: anObject\x0a\x22Returns a Promise resolved with anObject.\x22\x0a<inlineJS: 'return $recv(anObject)._in_(function (x) {return Promise.resolve(x)})'>",
  29024. referencedClasses: [],
  29025. //>>excludeEnd("ide");
  29026. pragmas: [["inlineJS:", ["return $recv(anObject)._in_(function (x) {return Promise.resolve(x)})"]]],
  29027. messageSends: []
  29028. }, function ($methodClass){ return function (anObject){
  29029. var self=this,$self=this;
  29030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29031. return $core.withContext(function($ctx1) {
  29032. //>>excludeEnd("ctx");
  29033. return $recv(anObject)._in_(function (x) {return Promise.resolve(x)});
  29034. return self;
  29035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29036. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
  29037. //>>excludeEnd("ctx");
  29038. }; }),
  29039. $globals.Promise.a$cls);
  29040. $core.addTrait("TThenable", "Kernel-Promises");
  29041. $core.addMethod(
  29042. $core.method({
  29043. selector: "catch:",
  29044. protocol: "promises",
  29045. //>>excludeStart("ide", pragmas.excludeIdeData);
  29046. args: ["aBlock"],
  29047. source: "catch: aBlock\x0a<inlineJS: 'return self.then(null, function (err) { return aBlock._value_(err); })'>",
  29048. referencedClasses: [],
  29049. //>>excludeEnd("ide");
  29050. pragmas: [["inlineJS:", ["return self.then(null, function (err) { return aBlock._value_(err); })"]]],
  29051. messageSends: []
  29052. }, function ($methodClass){ return function (aBlock){
  29053. var self=this,$self=this;
  29054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29055. return $core.withContext(function($ctx1) {
  29056. //>>excludeEnd("ctx");
  29057. return self.then(null, function (err) { return aBlock._value_(err); });
  29058. return self;
  29059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29060. }, function($ctx1) {$ctx1.fill(self,"catch:",{aBlock:aBlock})});
  29061. //>>excludeEnd("ctx");
  29062. }; }),
  29063. $globals.TThenable);
  29064. $core.addMethod(
  29065. $core.method({
  29066. selector: "isThenable",
  29067. protocol: "testing",
  29068. //>>excludeStart("ide", pragmas.excludeIdeData);
  29069. args: [],
  29070. source: "isThenable\x0a\x09^ true",
  29071. referencedClasses: [],
  29072. //>>excludeEnd("ide");
  29073. pragmas: [],
  29074. messageSends: []
  29075. }, function ($methodClass){ return function (){
  29076. var self=this,$self=this;
  29077. return true;
  29078. }; }),
  29079. $globals.TThenable);
  29080. $core.addMethod(
  29081. $core.method({
  29082. selector: "on:do:",
  29083. protocol: "promises",
  29084. //>>excludeStart("ide", pragmas.excludeIdeData);
  29085. args: ["aClass", "aBlock"],
  29086. source: "on: aClass do: aBlock\x0a<inlineJS: 'return self.then(null, function (err) {\x0a if (err._isKindOf_(aClass)) return aBlock._value_(err);\x0a else throw err;\x0a})'>",
  29087. referencedClasses: [],
  29088. //>>excludeEnd("ide");
  29089. pragmas: [["inlineJS:", ["return self.then(null, function (err) {\x0a if (err._isKindOf_(aClass)) return aBlock._value_(err);\x0a else throw err;\x0a})"]]],
  29090. messageSends: []
  29091. }, function ($methodClass){ return function (aClass,aBlock){
  29092. var self=this,$self=this;
  29093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29094. return $core.withContext(function($ctx1) {
  29095. //>>excludeEnd("ctx");
  29096. return self.then(null, function (err) {
  29097. if (err._isKindOf_(aClass)) return aBlock._value_(err);
  29098. else throw err;
  29099. });
  29100. return self;
  29101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29102. }, function($ctx1) {$ctx1.fill(self,"on:do:",{aClass:aClass,aBlock:aBlock})});
  29103. //>>excludeEnd("ctx");
  29104. }; }),
  29105. $globals.TThenable);
  29106. $core.addMethod(
  29107. $core.method({
  29108. selector: "on:do:catch:",
  29109. protocol: "promises",
  29110. //>>excludeStart("ide", pragmas.excludeIdeData);
  29111. args: ["aClass", "aBlock", "anotherBlock"],
  29112. source: "on: aClass do: aBlock catch: anotherBlock\x0a\x09^ (self on: aClass do: aBlock) catch: anotherBlock",
  29113. referencedClasses: [],
  29114. //>>excludeEnd("ide");
  29115. pragmas: [],
  29116. messageSends: ["catch:", "on:do:"]
  29117. }, function ($methodClass){ return function (aClass,aBlock,anotherBlock){
  29118. var self=this,$self=this;
  29119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29120. return $core.withContext(function($ctx1) {
  29121. //>>excludeEnd("ctx");
  29122. return $recv($self._on_do_(aClass,aBlock))._catch_(anotherBlock);
  29123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29124. }, function($ctx1) {$ctx1.fill(self,"on:do:catch:",{aClass:aClass,aBlock:aBlock,anotherBlock:anotherBlock})});
  29125. //>>excludeEnd("ctx");
  29126. }; }),
  29127. $globals.TThenable);
  29128. $core.addMethod(
  29129. $core.method({
  29130. selector: "then:",
  29131. protocol: "promises",
  29132. //>>excludeStart("ide", pragmas.excludeIdeData);
  29133. args: ["aBlockOrArray"],
  29134. source: "then: aBlockOrArray\x0a\x22Accepts a block or array of blocks.\x0aEach of blocks in the array or the singleton one is\x0aused in .then call to a promise, to accept a result\x0aand transform it to the result for the next one.\x0aIn case a block has more than one argument\x0aand result is an array, first n-1 elements of the array\x0aare put into additional arguments beyond the first.\x0aThe first argument always contains the result as-is.\x22\x0a<inlineJS: '\x0avar array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray];\x0areturn array.reduce(function (soFar, aBlock) {\x0a return soFar.then(typeof aBlock === \x22function\x22 && aBlock.length > 1 ?\x0a function (result) {\x0a if (Array.isArray(result)) {\x0a return aBlock._valueWithPossibleArguments_([result].concat(result.slice(0, aBlock.length-1)));\x0a } else {\x0a return aBlock._value_(result);\x0a }\x0a } :\x0a function (result) {\x0a return aBlock._value_(result);\x0a }\x0a );\x0a}, self)'>",
  29135. referencedClasses: [],
  29136. //>>excludeEnd("ide");
  29137. pragmas: [["inlineJS:", ["\x0avar array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray];\x0areturn array.reduce(function (soFar, aBlock) {\x0a return soFar.then(typeof aBlock === \x22function\x22 && aBlock.length > 1 ?\x0a function (result) {\x0a if (Array.isArray(result)) {\x0a return aBlock._valueWithPossibleArguments_([result].concat(result.slice(0, aBlock.length-1)));\x0a } else {\x0a return aBlock._value_(result);\x0a }\x0a } :\x0a function (result) {\x0a return aBlock._value_(result);\x0a }\x0a );\x0a}, self)"]]],
  29138. messageSends: []
  29139. }, function ($methodClass){ return function (aBlockOrArray){
  29140. var self=this,$self=this;
  29141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29142. return $core.withContext(function($ctx1) {
  29143. //>>excludeEnd("ctx");
  29144. var array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray];
  29145. return array.reduce(function (soFar, aBlock) {
  29146. return soFar.then(typeof aBlock === "function" && aBlock.length > 1 ?
  29147. function (result) {
  29148. if (Array.isArray(result)) {
  29149. return aBlock._valueWithPossibleArguments_([result].concat(result.slice(0, aBlock.length-1)));
  29150. } else {
  29151. return aBlock._value_(result);
  29152. }
  29153. } :
  29154. function (result) {
  29155. return aBlock._value_(result);
  29156. }
  29157. );
  29158. }, self);
  29159. return self;
  29160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29161. }, function($ctx1) {$ctx1.fill(self,"then:",{aBlockOrArray:aBlockOrArray})});
  29162. //>>excludeEnd("ctx");
  29163. }; }),
  29164. $globals.TThenable);
  29165. $core.addMethod(
  29166. $core.method({
  29167. selector: "then:catch:",
  29168. protocol: "promises",
  29169. //>>excludeStart("ide", pragmas.excludeIdeData);
  29170. args: ["aBlockOrArray", "anotherBlock"],
  29171. source: "then: aBlockOrArray catch: anotherBlock\x0a\x09^ (self then: aBlockOrArray) catch: anotherBlock",
  29172. referencedClasses: [],
  29173. //>>excludeEnd("ide");
  29174. pragmas: [],
  29175. messageSends: ["catch:", "then:"]
  29176. }, function ($methodClass){ return function (aBlockOrArray,anotherBlock){
  29177. var self=this,$self=this;
  29178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29179. return $core.withContext(function($ctx1) {
  29180. //>>excludeEnd("ctx");
  29181. return $recv($self._then_(aBlockOrArray))._catch_(anotherBlock);
  29182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29183. }, function($ctx1) {$ctx1.fill(self,"then:catch:",{aBlockOrArray:aBlockOrArray,anotherBlock:anotherBlock})});
  29184. //>>excludeEnd("ctx");
  29185. }; }),
  29186. $globals.TThenable);
  29187. $core.addMethod(
  29188. $core.method({
  29189. selector: "then:on:do:",
  29190. protocol: "promises",
  29191. //>>excludeStart("ide", pragmas.excludeIdeData);
  29192. args: ["aBlockOrArray", "aClass", "aBlock"],
  29193. source: "then: aBlockOrArray on: aClass do: aBlock\x0a\x09^ (self then: aBlockOrArray) on: aClass do: aBlock",
  29194. referencedClasses: [],
  29195. //>>excludeEnd("ide");
  29196. pragmas: [],
  29197. messageSends: ["on:do:", "then:"]
  29198. }, function ($methodClass){ return function (aBlockOrArray,aClass,aBlock){
  29199. var self=this,$self=this;
  29200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29201. return $core.withContext(function($ctx1) {
  29202. //>>excludeEnd("ctx");
  29203. return $recv($self._then_(aBlockOrArray))._on_do_(aClass,aBlock);
  29204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29205. }, function($ctx1) {$ctx1.fill(self,"then:on:do:",{aBlockOrArray:aBlockOrArray,aClass:aClass,aBlock:aBlock})});
  29206. //>>excludeEnd("ctx");
  29207. }; }),
  29208. $globals.TThenable);
  29209. $core.addMethod(
  29210. $core.method({
  29211. selector: "then:on:do:catch:",
  29212. protocol: "promises",
  29213. //>>excludeStart("ide", pragmas.excludeIdeData);
  29214. args: ["aBlockOrArray", "aClass", "aBlock", "anotherBlock"],
  29215. source: "then: aBlockOrArray on: aClass do: aBlock catch: anotherBlock\x0a\x09^ ((self then: aBlockOrArray) on: aClass do: aBlock) catch: anotherBlock",
  29216. referencedClasses: [],
  29217. //>>excludeEnd("ide");
  29218. pragmas: [],
  29219. messageSends: ["catch:", "on:do:", "then:"]
  29220. }, function ($methodClass){ return function (aBlockOrArray,aClass,aBlock,anotherBlock){
  29221. var self=this,$self=this;
  29222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29223. return $core.withContext(function($ctx1) {
  29224. //>>excludeEnd("ctx");
  29225. return $recv($recv($self._then_(aBlockOrArray))._on_do_(aClass,aBlock))._catch_(anotherBlock);
  29226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29227. }, function($ctx1) {$ctx1.fill(self,"then:on:do:catch:",{aBlockOrArray:aBlockOrArray,aClass:aClass,aBlock:aBlock,anotherBlock:anotherBlock})});
  29228. //>>excludeEnd("ctx");
  29229. }; }),
  29230. $globals.TThenable);
  29231. $core.setTraitComposition([{trait: $globals.TThenable}], $globals.Promise);
  29232. });
  29233. define('amber/core/Kernel-Infrastructure',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Helpers", "amber/core/Kernel-Objects", "amber/core/Kernel-Promises"], function($boot,requirejs){"use strict";
  29234. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  29235. var $pkg = $core.addPackage("Kernel-Infrastructure");
  29236. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  29237. $core.addClass("AmberBootstrapInitialization", $globals.Object, "Kernel-Infrastructure");
  29238. $core.addMethod(
  29239. $core.method({
  29240. selector: "organizeClasses",
  29241. protocol: "organization",
  29242. //>>excludeStart("ide", pragmas.excludeIdeData);
  29243. args: [],
  29244. source: "organizeClasses\x0a\x09Smalltalk classes do: [ :each | each enterOrganization ]",
  29245. referencedClasses: ["Smalltalk"],
  29246. //>>excludeEnd("ide");
  29247. pragmas: [],
  29248. messageSends: ["do:", "classes", "enterOrganization"]
  29249. }, function ($methodClass){ return function (){
  29250. var self=this,$self=this;
  29251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29252. return $core.withContext(function($ctx1) {
  29253. //>>excludeEnd("ctx");
  29254. $recv($recv($globals.Smalltalk)._classes())._do_((function(each){
  29255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29256. return $core.withContext(function($ctx2) {
  29257. //>>excludeEnd("ctx");
  29258. return $recv(each)._enterOrganization();
  29259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29260. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  29261. //>>excludeEnd("ctx");
  29262. }));
  29263. return self;
  29264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29265. }, function($ctx1) {$ctx1.fill(self,"organizeClasses",{})});
  29266. //>>excludeEnd("ctx");
  29267. }; }),
  29268. $globals.AmberBootstrapInitialization.a$cls);
  29269. $core.addMethod(
  29270. $core.method({
  29271. selector: "organizeMethods",
  29272. protocol: "organization",
  29273. //>>excludeStart("ide", pragmas.excludeIdeData);
  29274. args: [],
  29275. source: "organizeMethods\x0a\x09Smalltalk classes do: [ :eachClass |\x0a\x09\x09eachClass definedMethods do: [ :eachMethod |\x0a\x09\x09\x09eachMethod methodClass methodOrganizationEnter: eachMethod andLeave: nil ] ]",
  29276. referencedClasses: ["Smalltalk"],
  29277. //>>excludeEnd("ide");
  29278. pragmas: [],
  29279. messageSends: ["do:", "classes", "definedMethods", "methodOrganizationEnter:andLeave:", "methodClass"]
  29280. }, function ($methodClass){ return function (){
  29281. var self=this,$self=this;
  29282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29283. return $core.withContext(function($ctx1) {
  29284. //>>excludeEnd("ctx");
  29285. [$recv($recv($globals.Smalltalk)._classes())._do_((function(eachClass){
  29286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29287. return $core.withContext(function($ctx2) {
  29288. //>>excludeEnd("ctx");
  29289. return $recv($recv(eachClass)._definedMethods())._do_((function(eachMethod){
  29290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29291. return $core.withContext(function($ctx3) {
  29292. //>>excludeEnd("ctx");
  29293. return $recv($recv(eachMethod)._methodClass())._methodOrganizationEnter_andLeave_(eachMethod,nil);
  29294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29295. }, function($ctx3) {$ctx3.fillBlock({eachMethod:eachMethod},$ctx2,2)});
  29296. //>>excludeEnd("ctx");
  29297. }));
  29298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29299. }, function($ctx2) {$ctx2.fillBlock({eachClass:eachClass},$ctx1,1)});
  29300. //>>excludeEnd("ctx");
  29301. }))
  29302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29303. ,$ctx1.sendIdx["do:"]=1
  29304. //>>excludeEnd("ctx");
  29305. ][0];
  29306. return self;
  29307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29308. }, function($ctx1) {$ctx1.fill(self,"organizeMethods",{})});
  29309. //>>excludeEnd("ctx");
  29310. }; }),
  29311. $globals.AmberBootstrapInitialization.a$cls);
  29312. $core.addMethod(
  29313. $core.method({
  29314. selector: "run",
  29315. protocol: "public api",
  29316. //>>excludeStart("ide", pragmas.excludeIdeData);
  29317. args: [],
  29318. source: "run\x0a\x09SmalltalkImage initialize.\x0a\x09self\x0a\x09\x09organizeClasses;\x0a\x09\x09organizeMethods.\x0a\x09^ Smalltalk postLoad",
  29319. referencedClasses: ["SmalltalkImage", "Smalltalk"],
  29320. //>>excludeEnd("ide");
  29321. pragmas: [],
  29322. messageSends: ["initialize", "organizeClasses", "organizeMethods", "postLoad"]
  29323. }, function ($methodClass){ return function (){
  29324. var self=this,$self=this;
  29325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29326. return $core.withContext(function($ctx1) {
  29327. //>>excludeEnd("ctx");
  29328. $recv($globals.SmalltalkImage)._initialize();
  29329. $self._organizeClasses();
  29330. $self._organizeMethods();
  29331. return $recv($globals.Smalltalk)._postLoad();
  29332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29333. }, function($ctx1) {$ctx1.fill(self,"run",{})});
  29334. //>>excludeEnd("ctx");
  29335. }; }),
  29336. $globals.AmberBootstrapInitialization.a$cls);
  29337. $core.addClass("JSObjectProxy", $globals.ProtoObject, "Kernel-Infrastructure");
  29338. $core.setSlots($globals.JSObjectProxy, ["jsObject"]);
  29339. //>>excludeStart("ide", pragmas.excludeIdeData);
  29340. $globals.JSObjectProxy.comment="I handle sending messages to JavaScript objects, making JavaScript object accessing from Amber fully transparent.\x0aMy instances make intensive use of `#doesNotUnderstand:`.\x0a\x0aMy instances are automatically created by Amber whenever a message is sent to a JavaScript object.\x0a\x0a## Usage examples\x0a\x0aJSObjectProxy objects are instanciated by Amber when a Smalltalk message is sent to a JavaScript object.\x0a\x0a\x09window alert: 'hello world'.\x0a\x09window inspect.\x0a\x09(window jQuery: 'body') append: 'hello world'\x0a\x0aAmber messages sends are converted to JavaScript function calls or object property access _(in this order)_. If n one of them match, a `MessageNotUnderstood` error will be thrown.\x0a\x0a## Message conversion rules\x0a\x0a- `someUser name` becomes `someUser.name`\x0a- `someUser name: 'John'` becomes `someUser name = \x22John\x22`\x0a- `console log: 'hello world'` becomes `console.log('hello world')`\x0a- `(window jQuery: 'foo') css: 'background' color: 'red'` becomes `window.jQuery('foo').css('background', 'red')`\x0a\x0a__Note:__ For keyword-based messages, only the first keyword is kept: `window foo: 1 bar: 2` is equivalent to `window foo: 1 baz: 2`.";
  29341. //>>excludeEnd("ide");
  29342. $core.addMethod(
  29343. $core.method({
  29344. selector: "=",
  29345. protocol: "comparing",
  29346. //>>excludeStart("ide", pragmas.excludeIdeData);
  29347. args: ["anObject"],
  29348. source: "= anObject\x0a\x09^ anObject class == self class and: [\x0a\x09\x09JSObjectProxy compareJSObjectOfProxy: self withProxy: anObject ]",
  29349. referencedClasses: ["JSObjectProxy"],
  29350. //>>excludeEnd("ide");
  29351. pragmas: [],
  29352. messageSends: ["and:", "==", "class", "compareJSObjectOfProxy:withProxy:"]
  29353. }, function ($methodClass){ return function (anObject){
  29354. var self=this,$self=this;
  29355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29356. return $core.withContext(function($ctx1) {
  29357. //>>excludeEnd("ctx");
  29358. if($core.assert($recv([$recv(anObject)._class()
  29359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29360. ,$ctx1.sendIdx["class"]=1
  29361. //>>excludeEnd("ctx");
  29362. ][0]).__eq_eq($self._class()))){
  29363. return $recv($globals.JSObjectProxy)._compareJSObjectOfProxy_withProxy_(self,anObject);
  29364. } else {
  29365. return false;
  29366. }
  29367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29368. }, function($ctx1) {$ctx1.fill(self,"=",{anObject:anObject})});
  29369. //>>excludeEnd("ctx");
  29370. }; }),
  29371. $globals.JSObjectProxy);
  29372. $core.addMethod(
  29373. $core.method({
  29374. selector: "asJavaScriptObject",
  29375. protocol: "converting",
  29376. //>>excludeStart("ide", pragmas.excludeIdeData);
  29377. args: [],
  29378. source: "asJavaScriptObject\x0a\x09\x22Answers the receiver in a stringify-friendly fashion\x22\x0a\x0a\x09^ jsObject",
  29379. referencedClasses: [],
  29380. //>>excludeEnd("ide");
  29381. pragmas: [],
  29382. messageSends: []
  29383. }, function ($methodClass){ return function (){
  29384. var self=this,$self=this;
  29385. return $self.jsObject;
  29386. }; }),
  29387. $globals.JSObjectProxy);
  29388. $core.addMethod(
  29389. $core.method({
  29390. selector: "at:",
  29391. protocol: "accessing",
  29392. //>>excludeStart("ide", pragmas.excludeIdeData);
  29393. args: ["aString"],
  29394. source: "at: aString\x0a\x09<inlineJS: 'return $self.jsObject[aString]'>",
  29395. referencedClasses: [],
  29396. //>>excludeEnd("ide");
  29397. pragmas: [["inlineJS:", ["return $self.jsObject[aString]"]]],
  29398. messageSends: []
  29399. }, function ($methodClass){ return function (aString){
  29400. var self=this,$self=this;
  29401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29402. return $core.withContext(function($ctx1) {
  29403. //>>excludeEnd("ctx");
  29404. return $self.jsObject[aString];
  29405. return self;
  29406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29407. }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString})});
  29408. //>>excludeEnd("ctx");
  29409. }; }),
  29410. $globals.JSObjectProxy);
  29411. $core.addMethod(
  29412. $core.method({
  29413. selector: "at:ifAbsent:",
  29414. protocol: "accessing",
  29415. //>>excludeStart("ide", pragmas.excludeIdeData);
  29416. args: ["aString", "aBlock"],
  29417. source: "at: aString ifAbsent: aBlock\x0a\x09\x22return the aString property or evaluate aBlock if the property is not defined on the object\x22\x0a\x09<inlineJS: '\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? obj[aString] : aBlock._value();\x0a\x09'>",
  29418. referencedClasses: [],
  29419. //>>excludeEnd("ide");
  29420. pragmas: [["inlineJS:", ["\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? obj[aString] : aBlock._value();\x0a\x09"]]],
  29421. messageSends: []
  29422. }, function ($methodClass){ return function (aString,aBlock){
  29423. var self=this,$self=this;
  29424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29425. return $core.withContext(function($ctx1) {
  29426. //>>excludeEnd("ctx");
  29427. var obj = $self.jsObject;
  29428. return aString in obj ? obj[aString] : aBlock._value();
  29429. ;
  29430. return self;
  29431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29432. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aString:aString,aBlock:aBlock})});
  29433. //>>excludeEnd("ctx");
  29434. }; }),
  29435. $globals.JSObjectProxy);
  29436. $core.addMethod(
  29437. $core.method({
  29438. selector: "at:ifPresent:",
  29439. protocol: "accessing",
  29440. //>>excludeStart("ide", pragmas.excludeIdeData);
  29441. args: ["aString", "aBlock"],
  29442. source: "at: aString ifPresent: aBlock\x0a\x09\x22return the evaluation of aBlock with the value if the property is defined or return nil\x22\x0a\x09<inlineJS: '\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : nil;\x0a\x09'>",
  29443. referencedClasses: [],
  29444. //>>excludeEnd("ide");
  29445. pragmas: [["inlineJS:", ["\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : nil;\x0a\x09"]]],
  29446. messageSends: []
  29447. }, function ($methodClass){ return function (aString,aBlock){
  29448. var self=this,$self=this;
  29449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29450. return $core.withContext(function($ctx1) {
  29451. //>>excludeEnd("ctx");
  29452. var obj = $self.jsObject;
  29453. return aString in obj ? aBlock._value_(obj[aString]) : nil;
  29454. ;
  29455. return self;
  29456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29457. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:",{aString:aString,aBlock:aBlock})});
  29458. //>>excludeEnd("ctx");
  29459. }; }),
  29460. $globals.JSObjectProxy);
  29461. $core.addMethod(
  29462. $core.method({
  29463. selector: "at:ifPresent:ifAbsent:",
  29464. protocol: "accessing",
  29465. //>>excludeStart("ide", pragmas.excludeIdeData);
  29466. args: ["aString", "aBlock", "anotherBlock"],
  29467. source: "at: aString ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09\x22return the evaluation of aBlock with the value if the property is defined\x0a\x09or return value of anotherBlock\x22\x0a\x09<inlineJS: '\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();\x0a\x09'>",
  29468. referencedClasses: [],
  29469. //>>excludeEnd("ide");
  29470. pragmas: [["inlineJS:", ["\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();\x0a\x09"]]],
  29471. messageSends: []
  29472. }, function ($methodClass){ return function (aString,aBlock,anotherBlock){
  29473. var self=this,$self=this;
  29474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29475. return $core.withContext(function($ctx1) {
  29476. //>>excludeEnd("ctx");
  29477. var obj = $self.jsObject;
  29478. return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();
  29479. ;
  29480. return self;
  29481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29482. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aString:aString,aBlock:aBlock,anotherBlock:anotherBlock})});
  29483. //>>excludeEnd("ctx");
  29484. }; }),
  29485. $globals.JSObjectProxy);
  29486. $core.addMethod(
  29487. $core.method({
  29488. selector: "at:put:",
  29489. protocol: "accessing",
  29490. //>>excludeStart("ide", pragmas.excludeIdeData);
  29491. args: ["aString", "anObject"],
  29492. source: "at: aString put: anObject\x0a\x09<inlineJS: 'return $self.jsObject[aString] = anObject'>",
  29493. referencedClasses: [],
  29494. //>>excludeEnd("ide");
  29495. pragmas: [["inlineJS:", ["return $self.jsObject[aString] = anObject"]]],
  29496. messageSends: []
  29497. }, function ($methodClass){ return function (aString,anObject){
  29498. var self=this,$self=this;
  29499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29500. return $core.withContext(function($ctx1) {
  29501. //>>excludeEnd("ctx");
  29502. return $self.jsObject[aString] = anObject;
  29503. return self;
  29504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29505. }, function($ctx1) {$ctx1.fill(self,"at:put:",{aString:aString,anObject:anObject})});
  29506. //>>excludeEnd("ctx");
  29507. }; }),
  29508. $globals.JSObjectProxy);
  29509. $core.addMethod(
  29510. $core.method({
  29511. selector: "catch:",
  29512. protocol: "promises",
  29513. //>>excludeStart("ide", pragmas.excludeIdeData);
  29514. args: ["aBlock"],
  29515. source: "catch: aBlock\x0a(NativeFunction isNativeFunction: (self at: #then))\x0a\x09ifTrue: [ ^ (TThenable >> #catch:) sendTo: jsObject arguments: {aBlock} ]\x0a\x09ifFalse: [ ^ super catch: aBlock ]",
  29516. referencedClasses: ["NativeFunction", "TThenable"],
  29517. //>>excludeEnd("ide");
  29518. pragmas: [],
  29519. messageSends: ["ifTrue:ifFalse:", "isNativeFunction:", "at:", "sendTo:arguments:", ">>", "catch:"]
  29520. }, function ($methodClass){ return function (aBlock){
  29521. var self=this,$self=this;
  29522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29523. return $core.withContext(function($ctx1) {
  29524. //>>excludeEnd("ctx");
  29525. if($core.assert($recv($globals.NativeFunction)._isNativeFunction_($self._at_("then")))){
  29526. return $recv($recv($globals.TThenable).__gt_gt("catch:"))._sendTo_arguments_($self.jsObject,[aBlock]);
  29527. } else {
  29528. return [(
  29529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29530. $ctx1.supercall = true,
  29531. //>>excludeEnd("ctx");
  29532. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._catch_.call($self,aBlock))
  29533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29534. ,$ctx1.supercall = false
  29535. //>>excludeEnd("ctx");
  29536. ][0];
  29537. }
  29538. return self;
  29539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29540. }, function($ctx1) {$ctx1.fill(self,"catch:",{aBlock:aBlock})});
  29541. //>>excludeEnd("ctx");
  29542. }; }),
  29543. $globals.JSObjectProxy);
  29544. $core.addMethod(
  29545. $core.method({
  29546. selector: "doesNotUnderstand:",
  29547. protocol: "proxy",
  29548. //>>excludeStart("ide", pragmas.excludeIdeData);
  29549. args: ["aMessage"],
  29550. source: "doesNotUnderstand: aMessage\x0a\x09^ (JSObjectProxy lookupProperty: aMessage selector asJavaScriptPropertyName ofProxy: self)\x0a\x09\x09ifNil: [ super doesNotUnderstand: aMessage ]\x0a\x09\x09ifNotNil: [ :jsSelector | \x0a\x09\x09\x09JSObjectProxy \x0a\x09\x09\x09\x09forwardMessage: jsSelector \x0a\x09\x09\x09\x09withArguments: aMessage arguments\x0a\x09\x09\x09\x09ofProxy: self ]",
  29551. referencedClasses: ["JSObjectProxy"],
  29552. //>>excludeEnd("ide");
  29553. pragmas: [],
  29554. messageSends: ["ifNil:ifNotNil:", "lookupProperty:ofProxy:", "asJavaScriptPropertyName", "selector", "doesNotUnderstand:", "forwardMessage:withArguments:ofProxy:", "arguments"]
  29555. }, function ($methodClass){ return function (aMessage){
  29556. var self=this,$self=this;
  29557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29558. return $core.withContext(function($ctx1) {
  29559. //>>excludeEnd("ctx");
  29560. var $1;
  29561. $1=$recv($globals.JSObjectProxy)._lookupProperty_ofProxy_($recv($recv(aMessage)._selector())._asJavaScriptPropertyName(),self);
  29562. if($1 == null || $1.a$nil){
  29563. return [(
  29564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29565. $ctx1.supercall = true,
  29566. //>>excludeEnd("ctx");
  29567. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._doesNotUnderstand_.call($self,aMessage))
  29568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29569. ,$ctx1.supercall = false
  29570. //>>excludeEnd("ctx");
  29571. ][0];
  29572. } else {
  29573. var jsSelector;
  29574. jsSelector=$1;
  29575. return $recv($globals.JSObjectProxy)._forwardMessage_withArguments_ofProxy_(jsSelector,$recv(aMessage)._arguments(),self);
  29576. }
  29577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29578. }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage})});
  29579. //>>excludeEnd("ctx");
  29580. }; }),
  29581. $globals.JSObjectProxy);
  29582. $core.addMethod(
  29583. $core.method({
  29584. selector: "in:",
  29585. protocol: "accessing",
  29586. //>>excludeStart("ide", pragmas.excludeIdeData);
  29587. args: ["aValuable"],
  29588. source: "in: aValuable\x0a\x09^ aValuable value: jsObject",
  29589. referencedClasses: [],
  29590. //>>excludeEnd("ide");
  29591. pragmas: [],
  29592. messageSends: ["value:"]
  29593. }, function ($methodClass){ return function (aValuable){
  29594. var self=this,$self=this;
  29595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29596. return $core.withContext(function($ctx1) {
  29597. //>>excludeEnd("ctx");
  29598. return $recv(aValuable)._value_($self.jsObject);
  29599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29600. }, function($ctx1) {$ctx1.fill(self,"in:",{aValuable:aValuable})});
  29601. //>>excludeEnd("ctx");
  29602. }; }),
  29603. $globals.JSObjectProxy);
  29604. $core.addMethod(
  29605. $core.method({
  29606. selector: "isThenable",
  29607. protocol: "testing",
  29608. //>>excludeStart("ide", pragmas.excludeIdeData);
  29609. args: [],
  29610. source: "isThenable\x0a\x09^ NativeFunction isNativeFunction: (self at: #then)",
  29611. referencedClasses: ["NativeFunction"],
  29612. //>>excludeEnd("ide");
  29613. pragmas: [],
  29614. messageSends: ["isNativeFunction:", "at:"]
  29615. }, function ($methodClass){ return function (){
  29616. var self=this,$self=this;
  29617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29618. return $core.withContext(function($ctx1) {
  29619. //>>excludeEnd("ctx");
  29620. return $recv($globals.NativeFunction)._isNativeFunction_($self._at_("then"));
  29621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29622. }, function($ctx1) {$ctx1.fill(self,"isThenable",{})});
  29623. //>>excludeEnd("ctx");
  29624. }; }),
  29625. $globals.JSObjectProxy);
  29626. $core.addMethod(
  29627. $core.method({
  29628. selector: "jsObject",
  29629. protocol: "accessing",
  29630. //>>excludeStart("ide", pragmas.excludeIdeData);
  29631. args: [],
  29632. source: "jsObject\x0a\x09^ jsObject",
  29633. referencedClasses: [],
  29634. //>>excludeEnd("ide");
  29635. pragmas: [],
  29636. messageSends: []
  29637. }, function ($methodClass){ return function (){
  29638. var self=this,$self=this;
  29639. return $self.jsObject;
  29640. }; }),
  29641. $globals.JSObjectProxy);
  29642. $core.addMethod(
  29643. $core.method({
  29644. selector: "keysAndValuesDo:",
  29645. protocol: "enumerating",
  29646. //>>excludeStart("ide", pragmas.excludeIdeData);
  29647. args: ["aBlock"],
  29648. source: "keysAndValuesDo: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var o = $self.jsObject;\x0a\x09\x09for(var i in o) {\x0a\x09\x09\x09aBlock._value_value_(i, o[i]);\x0a\x09\x09}\x0a\x09'>",
  29649. referencedClasses: [],
  29650. //>>excludeEnd("ide");
  29651. pragmas: [["inlineJS:", ["\x0a\x09\x09var o = $self.jsObject;\x0a\x09\x09for(var i in o) {\x0a\x09\x09\x09aBlock._value_value_(i, o[i]);\x0a\x09\x09}\x0a\x09"]]],
  29652. messageSends: []
  29653. }, function ($methodClass){ return function (aBlock){
  29654. var self=this,$self=this;
  29655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29656. return $core.withContext(function($ctx1) {
  29657. //>>excludeEnd("ctx");
  29658. var o = $self.jsObject;
  29659. for(var i in o) {
  29660. aBlock._value_value_(i, o[i]);
  29661. }
  29662. ;
  29663. return self;
  29664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29665. }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock})});
  29666. //>>excludeEnd("ctx");
  29667. }; }),
  29668. $globals.JSObjectProxy);
  29669. $core.addMethod(
  29670. $core.method({
  29671. selector: "on:do:",
  29672. protocol: "promises",
  29673. //>>excludeStart("ide", pragmas.excludeIdeData);
  29674. args: ["aClass", "aBlock"],
  29675. source: "on: aClass do: aBlock\x0a(NativeFunction isNativeFunction: (self at: #then))\x0a\x09ifTrue: [ ^ (TThenable >> #on:do:) sendTo: jsObject arguments: {aClass. aBlock} ]\x0a\x09ifFalse: [ ^ super on: aClass do: aBlock ]",
  29676. referencedClasses: ["NativeFunction", "TThenable"],
  29677. //>>excludeEnd("ide");
  29678. pragmas: [],
  29679. messageSends: ["ifTrue:ifFalse:", "isNativeFunction:", "at:", "sendTo:arguments:", ">>", "on:do:"]
  29680. }, function ($methodClass){ return function (aClass,aBlock){
  29681. var self=this,$self=this;
  29682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29683. return $core.withContext(function($ctx1) {
  29684. //>>excludeEnd("ctx");
  29685. if($core.assert($recv($globals.NativeFunction)._isNativeFunction_($self._at_("then")))){
  29686. return $recv($recv($globals.TThenable).__gt_gt("on:do:"))._sendTo_arguments_($self.jsObject,[aClass,aBlock]);
  29687. } else {
  29688. return [(
  29689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29690. $ctx1.supercall = true,
  29691. //>>excludeEnd("ctx");
  29692. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._on_do_.call($self,aClass,aBlock))
  29693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29694. ,$ctx1.supercall = false
  29695. //>>excludeEnd("ctx");
  29696. ][0];
  29697. }
  29698. return self;
  29699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29700. }, function($ctx1) {$ctx1.fill(self,"on:do:",{aClass:aClass,aBlock:aBlock})});
  29701. //>>excludeEnd("ctx");
  29702. }; }),
  29703. $globals.JSObjectProxy);
  29704. $core.addMethod(
  29705. $core.method({
  29706. selector: "printOn:",
  29707. protocol: "printing",
  29708. //>>excludeStart("ide", pragmas.excludeIdeData);
  29709. args: ["aStream"],
  29710. source: "printOn: aStream\x0a\x09aStream nextPutAll: self printString",
  29711. referencedClasses: [],
  29712. //>>excludeEnd("ide");
  29713. pragmas: [],
  29714. messageSends: ["nextPutAll:", "printString"]
  29715. }, function ($methodClass){ return function (aStream){
  29716. var self=this,$self=this;
  29717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29718. return $core.withContext(function($ctx1) {
  29719. //>>excludeEnd("ctx");
  29720. $recv(aStream)._nextPutAll_($self._printString());
  29721. return self;
  29722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29723. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  29724. //>>excludeEnd("ctx");
  29725. }; }),
  29726. $globals.JSObjectProxy);
  29727. $core.addMethod(
  29728. $core.method({
  29729. selector: "printString",
  29730. protocol: "printing",
  29731. //>>excludeStart("ide", pragmas.excludeIdeData);
  29732. args: [],
  29733. source: "printString\x0a\x09<inlineJS: '\x0a\x09\x09var js = $self.jsObject;\x0a\x09\x09return !js ? \x22<<malformed JS object proxy>>\x22 : js.toString\x0a\x09\x09\x09? js.toString()\x0a\x09\x09\x09: Object.prototype.toString.call(js)\x0a\x09'>",
  29734. referencedClasses: [],
  29735. //>>excludeEnd("ide");
  29736. pragmas: [["inlineJS:", ["\x0a\x09\x09var js = $self.jsObject;\x0a\x09\x09return !js ? \x22<<malformed JS object proxy>>\x22 : js.toString\x0a\x09\x09\x09? js.toString()\x0a\x09\x09\x09: Object.prototype.toString.call(js)\x0a\x09"]]],
  29737. messageSends: []
  29738. }, function ($methodClass){ return function (){
  29739. var self=this,$self=this;
  29740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29741. return $core.withContext(function($ctx1) {
  29742. //>>excludeEnd("ctx");
  29743. var js = $self.jsObject;
  29744. return !js ? "<<malformed JS object proxy>>" : js.toString
  29745. ? js.toString()
  29746. : Object.prototype.toString.call(js)
  29747. ;
  29748. return self;
  29749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29750. }, function($ctx1) {$ctx1.fill(self,"printString",{})});
  29751. //>>excludeEnd("ctx");
  29752. }; }),
  29753. $globals.JSObjectProxy);
  29754. $core.addMethod(
  29755. $core.method({
  29756. selector: "putOn:",
  29757. protocol: "streaming",
  29758. //>>excludeStart("ide", pragmas.excludeIdeData);
  29759. args: ["aStream"],
  29760. source: "putOn: aStream\x0a\x09aStream nextPutJSObject: jsObject",
  29761. referencedClasses: [],
  29762. //>>excludeEnd("ide");
  29763. pragmas: [],
  29764. messageSends: ["nextPutJSObject:"]
  29765. }, function ($methodClass){ return function (aStream){
  29766. var self=this,$self=this;
  29767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29768. return $core.withContext(function($ctx1) {
  29769. //>>excludeEnd("ctx");
  29770. $recv(aStream)._nextPutJSObject_($self.jsObject);
  29771. return self;
  29772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29773. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream})});
  29774. //>>excludeEnd("ctx");
  29775. }; }),
  29776. $globals.JSObjectProxy);
  29777. $core.addMethod(
  29778. $core.method({
  29779. selector: "removeKey:",
  29780. protocol: "accessing",
  29781. //>>excludeStart("ide", pragmas.excludeIdeData);
  29782. args: ["aString"],
  29783. source: "removeKey: aString\x0a\x09<inlineJS: 'delete $self.jsObject[aString]; return aString'>",
  29784. referencedClasses: [],
  29785. //>>excludeEnd("ide");
  29786. pragmas: [["inlineJS:", ["delete $self.jsObject[aString]; return aString"]]],
  29787. messageSends: []
  29788. }, function ($methodClass){ return function (aString){
  29789. var self=this,$self=this;
  29790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29791. return $core.withContext(function($ctx1) {
  29792. //>>excludeEnd("ctx");
  29793. delete $self.jsObject[aString]; return aString;
  29794. return self;
  29795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29796. }, function($ctx1) {$ctx1.fill(self,"removeKey:",{aString:aString})});
  29797. //>>excludeEnd("ctx");
  29798. }; }),
  29799. $globals.JSObjectProxy);
  29800. $core.addMethod(
  29801. $core.method({
  29802. selector: "then:",
  29803. protocol: "promises",
  29804. //>>excludeStart("ide", pragmas.excludeIdeData);
  29805. args: ["aBlockOrArray"],
  29806. source: "then: aBlockOrArray\x0aself isThenable\x0a\x09ifTrue: [ ^ (TThenable >> #then:) sendTo: jsObject arguments: {aBlockOrArray} ]\x0a\x09ifFalse: [ ^ super then: aBlockOrArray ]",
  29807. referencedClasses: ["TThenable"],
  29808. //>>excludeEnd("ide");
  29809. pragmas: [],
  29810. messageSends: ["ifTrue:ifFalse:", "isThenable", "sendTo:arguments:", ">>", "then:"]
  29811. }, function ($methodClass){ return function (aBlockOrArray){
  29812. var self=this,$self=this;
  29813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29814. return $core.withContext(function($ctx1) {
  29815. //>>excludeEnd("ctx");
  29816. if($core.assert($self._isThenable())){
  29817. return $recv($recv($globals.TThenable).__gt_gt("then:"))._sendTo_arguments_($self.jsObject,[aBlockOrArray]);
  29818. } else {
  29819. return [(
  29820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29821. $ctx1.supercall = true,
  29822. //>>excludeEnd("ctx");
  29823. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._then_.call($self,aBlockOrArray))
  29824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29825. ,$ctx1.supercall = false
  29826. //>>excludeEnd("ctx");
  29827. ][0];
  29828. }
  29829. return self;
  29830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29831. }, function($ctx1) {$ctx1.fill(self,"then:",{aBlockOrArray:aBlockOrArray})});
  29832. //>>excludeEnd("ctx");
  29833. }; }),
  29834. $globals.JSObjectProxy);
  29835. $core.addMethod(
  29836. $core.method({
  29837. selector: "addObjectVariablesTo:ofProxy:",
  29838. protocol: "proxy",
  29839. //>>excludeStart("ide", pragmas.excludeIdeData);
  29840. args: ["aDictionary", "aProxy"],
  29841. source: "addObjectVariablesTo: aDictionary ofProxy: aProxy\x0a\x09<inlineJS: '\x0a\x09\x09var jsObject = aProxy.jsObject;\x0a\x09\x09for(var i in jsObject) {\x0a\x09\x09\x09aDictionary._at_put_(i, jsObject[i]);\x0a\x09\x09}\x0a\x09'>",
  29842. referencedClasses: [],
  29843. //>>excludeEnd("ide");
  29844. pragmas: [["inlineJS:", ["\x0a\x09\x09var jsObject = aProxy.jsObject;\x0a\x09\x09for(var i in jsObject) {\x0a\x09\x09\x09aDictionary._at_put_(i, jsObject[i]);\x0a\x09\x09}\x0a\x09"]]],
  29845. messageSends: []
  29846. }, function ($methodClass){ return function (aDictionary,aProxy){
  29847. var self=this,$self=this;
  29848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29849. return $core.withContext(function($ctx1) {
  29850. //>>excludeEnd("ctx");
  29851. var jsObject = aProxy.jsObject;
  29852. for(var i in jsObject) {
  29853. aDictionary._at_put_(i, jsObject[i]);
  29854. }
  29855. ;
  29856. return self;
  29857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29858. }, function($ctx1) {$ctx1.fill(self,"addObjectVariablesTo:ofProxy:",{aDictionary:aDictionary,aProxy:aProxy})});
  29859. //>>excludeEnd("ctx");
  29860. }; }),
  29861. $globals.JSObjectProxy.a$cls);
  29862. $core.addMethod(
  29863. $core.method({
  29864. selector: "associationsOfProxy:",
  29865. protocol: "proxy",
  29866. //>>excludeStart("ide", pragmas.excludeIdeData);
  29867. args: ["aProxy"],
  29868. source: "associationsOfProxy: aProxy\x0a\x09<inlineJS: '\x0a\x09\x09var jsObject = aProxy.jsObject, result = [];\x0a\x09\x09for(var i in jsObject) {\x0a\x09\x09\x09result.push(i.__minus_gt(jsObject[i]));\x0a\x09\x09}\x0a\x09\x09return result;\x0a\x09'>",
  29869. referencedClasses: [],
  29870. //>>excludeEnd("ide");
  29871. pragmas: [["inlineJS:", ["\x0a\x09\x09var jsObject = aProxy.jsObject, result = [];\x0a\x09\x09for(var i in jsObject) {\x0a\x09\x09\x09result.push(i.__minus_gt(jsObject[i]));\x0a\x09\x09}\x0a\x09\x09return result;\x0a\x09"]]],
  29872. messageSends: []
  29873. }, function ($methodClass){ return function (aProxy){
  29874. var self=this,$self=this;
  29875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29876. return $core.withContext(function($ctx1) {
  29877. //>>excludeEnd("ctx");
  29878. var jsObject = aProxy.jsObject, result = [];
  29879. for(var i in jsObject) {
  29880. result.push(i.__minus_gt(jsObject[i]));
  29881. }
  29882. return result;
  29883. ;
  29884. return self;
  29885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29886. }, function($ctx1) {$ctx1.fill(self,"associationsOfProxy:",{aProxy:aProxy})});
  29887. //>>excludeEnd("ctx");
  29888. }; }),
  29889. $globals.JSObjectProxy.a$cls);
  29890. $core.addMethod(
  29891. $core.method({
  29892. selector: "compareJSObjectOfProxy:withProxy:",
  29893. protocol: "proxy",
  29894. //>>excludeStart("ide", pragmas.excludeIdeData);
  29895. args: ["aProxy", "anotherProxy"],
  29896. source: "compareJSObjectOfProxy: aProxy withProxy: anotherProxy\x0a<inlineJS: '\x0a\x09var anotherJSObject = anotherProxy.a$cls ? anotherProxy.jsObject : anotherProxy;\x0a\x09return aProxy.jsObject === anotherJSObject\x0a'>",
  29897. referencedClasses: [],
  29898. //>>excludeEnd("ide");
  29899. pragmas: [["inlineJS:", ["\x0a\x09var anotherJSObject = anotherProxy.a$cls ? anotherProxy.jsObject : anotherProxy;\x0a\x09return aProxy.jsObject === anotherJSObject"]]],
  29900. messageSends: []
  29901. }, function ($methodClass){ return function (aProxy,anotherProxy){
  29902. var self=this,$self=this;
  29903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29904. return $core.withContext(function($ctx1) {
  29905. //>>excludeEnd("ctx");
  29906. var anotherJSObject = anotherProxy.a$cls ? anotherProxy.jsObject : anotherProxy;
  29907. return aProxy.jsObject === anotherJSObject;
  29908. return self;
  29909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29910. }, function($ctx1) {$ctx1.fill(self,"compareJSObjectOfProxy:withProxy:",{aProxy:aProxy,anotherProxy:anotherProxy})});
  29911. //>>excludeEnd("ctx");
  29912. }; }),
  29913. $globals.JSObjectProxy.a$cls);
  29914. $core.addMethod(
  29915. $core.method({
  29916. selector: "forwardMessage:withArguments:ofProxy:",
  29917. protocol: "proxy",
  29918. //>>excludeStart("ide", pragmas.excludeIdeData);
  29919. args: ["aString", "anArray", "aProxy"],
  29920. source: "forwardMessage: aString withArguments: anArray ofProxy: aProxy\x0a\x09<inlineJS: '\x0a\x09\x09return $core.accessJavaScript(aProxy._jsObject(), aString, anArray);\x0a\x09'>",
  29921. referencedClasses: [],
  29922. //>>excludeEnd("ide");
  29923. pragmas: [["inlineJS:", ["\x0a\x09\x09return $core.accessJavaScript(aProxy._jsObject(), aString, anArray);\x0a\x09"]]],
  29924. messageSends: []
  29925. }, function ($methodClass){ return function (aString,anArray,aProxy){
  29926. var self=this,$self=this;
  29927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29928. return $core.withContext(function($ctx1) {
  29929. //>>excludeEnd("ctx");
  29930. return $core.accessJavaScript(aProxy._jsObject(), aString, anArray);
  29931. ;
  29932. return self;
  29933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29934. }, function($ctx1) {$ctx1.fill(self,"forwardMessage:withArguments:ofProxy:",{aString:aString,anArray:anArray,aProxy:aProxy})});
  29935. //>>excludeEnd("ctx");
  29936. }; }),
  29937. $globals.JSObjectProxy.a$cls);
  29938. $core.addMethod(
  29939. $core.method({
  29940. selector: "jsObject:ofProxy:",
  29941. protocol: "proxy",
  29942. //>>excludeStart("ide", pragmas.excludeIdeData);
  29943. args: ["aJSObject", "aProxy"],
  29944. source: "jsObject: aJSObject ofProxy: aProxy\x0a\x09<inlineJS: 'aProxy.jsObject = aJSObject'>",
  29945. referencedClasses: [],
  29946. //>>excludeEnd("ide");
  29947. pragmas: [["inlineJS:", ["aProxy.jsObject = aJSObject"]]],
  29948. messageSends: []
  29949. }, function ($methodClass){ return function (aJSObject,aProxy){
  29950. var self=this,$self=this;
  29951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29952. return $core.withContext(function($ctx1) {
  29953. //>>excludeEnd("ctx");
  29954. aProxy.jsObject = aJSObject;
  29955. return self;
  29956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29957. }, function($ctx1) {$ctx1.fill(self,"jsObject:ofProxy:",{aJSObject:aJSObject,aProxy:aProxy})});
  29958. //>>excludeEnd("ctx");
  29959. }; }),
  29960. $globals.JSObjectProxy.a$cls);
  29961. $core.addMethod(
  29962. $core.method({
  29963. selector: "lookupProperty:ofProxy:",
  29964. protocol: "proxy",
  29965. //>>excludeStart("ide", pragmas.excludeIdeData);
  29966. args: ["aString", "aProxy"],
  29967. source: "lookupProperty: aString ofProxy: aProxy\x0a\x09\x22Looks up a property in JS object.\x0a\x09Answer the property if it is present, or nil if it is not present.\x22\x0a\x09\x0a\x09<inlineJS: 'return aString in aProxy._jsObject() ? aString : nil'>",
  29968. referencedClasses: [],
  29969. //>>excludeEnd("ide");
  29970. pragmas: [["inlineJS:", ["return aString in aProxy._jsObject() ? aString : nil"]]],
  29971. messageSends: []
  29972. }, function ($methodClass){ return function (aString,aProxy){
  29973. var self=this,$self=this;
  29974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29975. return $core.withContext(function($ctx1) {
  29976. //>>excludeEnd("ctx");
  29977. return aString in aProxy._jsObject() ? aString : nil;
  29978. return self;
  29979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29980. }, function($ctx1) {$ctx1.fill(self,"lookupProperty:ofProxy:",{aString:aString,aProxy:aProxy})});
  29981. //>>excludeEnd("ctx");
  29982. }; }),
  29983. $globals.JSObjectProxy.a$cls);
  29984. $core.addMethod(
  29985. $core.method({
  29986. selector: "null",
  29987. protocol: "accessing",
  29988. //>>excludeStart("ide", pragmas.excludeIdeData);
  29989. args: [],
  29990. source: "null\x0a\x09<inlineJS: 'return null'>",
  29991. referencedClasses: [],
  29992. //>>excludeEnd("ide");
  29993. pragmas: [["inlineJS:", ["return null"]]],
  29994. messageSends: []
  29995. }, function ($methodClass){ return function (){
  29996. var self=this,$self=this;
  29997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29998. return $core.withContext(function($ctx1) {
  29999. //>>excludeEnd("ctx");
  30000. return null;
  30001. return self;
  30002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30003. }, function($ctx1) {$ctx1.fill(self,"null",{})});
  30004. //>>excludeEnd("ctx");
  30005. }; }),
  30006. $globals.JSObjectProxy.a$cls);
  30007. $core.addMethod(
  30008. $core.method({
  30009. selector: "on:",
  30010. protocol: "instance creation",
  30011. //>>excludeStart("ide", pragmas.excludeIdeData);
  30012. args: ["aJSObject"],
  30013. source: "on: aJSObject\x0a\x09| instance |\x0a\x09instance := self new.\x0a\x09self jsObject: aJSObject ofProxy: instance.\x0a\x09^ instance",
  30014. referencedClasses: [],
  30015. //>>excludeEnd("ide");
  30016. pragmas: [],
  30017. messageSends: ["new", "jsObject:ofProxy:"]
  30018. }, function ($methodClass){ return function (aJSObject){
  30019. var self=this,$self=this;
  30020. var instance;
  30021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30022. return $core.withContext(function($ctx1) {
  30023. //>>excludeEnd("ctx");
  30024. instance=$self._new();
  30025. $self._jsObject_ofProxy_(aJSObject,instance);
  30026. return instance;
  30027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30028. }, function($ctx1) {$ctx1.fill(self,"on:",{aJSObject:aJSObject,instance:instance})});
  30029. //>>excludeEnd("ctx");
  30030. }; }),
  30031. $globals.JSObjectProxy.a$cls);
  30032. $core.addMethod(
  30033. $core.method({
  30034. selector: "undefined",
  30035. protocol: "accessing",
  30036. //>>excludeStart("ide", pragmas.excludeIdeData);
  30037. args: [],
  30038. source: "undefined\x0a\x09<inlineJS: 'return undefined'>",
  30039. referencedClasses: [],
  30040. //>>excludeEnd("ide");
  30041. pragmas: [["inlineJS:", ["return undefined"]]],
  30042. messageSends: []
  30043. }, function ($methodClass){ return function (){
  30044. var self=this,$self=this;
  30045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30046. return $core.withContext(function($ctx1) {
  30047. //>>excludeEnd("ctx");
  30048. return undefined;
  30049. return self;
  30050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30051. }, function($ctx1) {$ctx1.fill(self,"undefined",{})});
  30052. //>>excludeEnd("ctx");
  30053. }; }),
  30054. $globals.JSObjectProxy.a$cls);
  30055. $core.addClass("Organizer", $globals.Object, "Kernel-Infrastructure");
  30056. $core.setSlots($globals.Organizer, ["elements"]);
  30057. //>>excludeStart("ide", pragmas.excludeIdeData);
  30058. $globals.Organizer.comment="I represent categorization information. \x0a\x0a## API\x0a\x0aUse `#addElement:` and `#removeElement:` to manipulate instances.";
  30059. //>>excludeEnd("ide");
  30060. $core.addMethod(
  30061. $core.method({
  30062. selector: "addElement:",
  30063. protocol: "accessing",
  30064. //>>excludeStart("ide", pragmas.excludeIdeData);
  30065. args: ["anObject"],
  30066. source: "addElement: anObject\x0a\x09self elements add: anObject",
  30067. referencedClasses: [],
  30068. //>>excludeEnd("ide");
  30069. pragmas: [],
  30070. messageSends: ["add:", "elements"]
  30071. }, function ($methodClass){ return function (anObject){
  30072. var self=this,$self=this;
  30073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30074. return $core.withContext(function($ctx1) {
  30075. //>>excludeEnd("ctx");
  30076. $recv($self._elements())._add_(anObject);
  30077. return self;
  30078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30079. }, function($ctx1) {$ctx1.fill(self,"addElement:",{anObject:anObject})});
  30080. //>>excludeEnd("ctx");
  30081. }; }),
  30082. $globals.Organizer);
  30083. $core.addMethod(
  30084. $core.method({
  30085. selector: "elements",
  30086. protocol: "accessing",
  30087. //>>excludeStart("ide", pragmas.excludeIdeData);
  30088. args: [],
  30089. source: "elements\x0a\x09^ elements",
  30090. referencedClasses: [],
  30091. //>>excludeEnd("ide");
  30092. pragmas: [],
  30093. messageSends: []
  30094. }, function ($methodClass){ return function (){
  30095. var self=this,$self=this;
  30096. return $self.elements;
  30097. }; }),
  30098. $globals.Organizer);
  30099. $core.addMethod(
  30100. $core.method({
  30101. selector: "initialize",
  30102. protocol: "initialization",
  30103. //>>excludeStart("ide", pragmas.excludeIdeData);
  30104. args: [],
  30105. source: "initialize\x0a\x09super initialize.\x0a\x09elements := Set new",
  30106. referencedClasses: ["Set"],
  30107. //>>excludeEnd("ide");
  30108. pragmas: [],
  30109. messageSends: ["initialize", "new"]
  30110. }, function ($methodClass){ return function (){
  30111. var self=this,$self=this;
  30112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30113. return $core.withContext(function($ctx1) {
  30114. //>>excludeEnd("ctx");
  30115. [(
  30116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30117. $ctx1.supercall = true,
  30118. //>>excludeEnd("ctx");
  30119. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  30120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30121. ,$ctx1.supercall = false
  30122. //>>excludeEnd("ctx");
  30123. ][0];
  30124. $self.elements=$recv($globals.Set)._new();
  30125. return self;
  30126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30127. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  30128. //>>excludeEnd("ctx");
  30129. }; }),
  30130. $globals.Organizer);
  30131. $core.addMethod(
  30132. $core.method({
  30133. selector: "removeElement:",
  30134. protocol: "accessing",
  30135. //>>excludeStart("ide", pragmas.excludeIdeData);
  30136. args: ["anObject"],
  30137. source: "removeElement: anObject\x0a\x09self elements remove: anObject ifAbsent: []",
  30138. referencedClasses: [],
  30139. //>>excludeEnd("ide");
  30140. pragmas: [],
  30141. messageSends: ["remove:ifAbsent:", "elements"]
  30142. }, function ($methodClass){ return function (anObject){
  30143. var self=this,$self=this;
  30144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30145. return $core.withContext(function($ctx1) {
  30146. //>>excludeEnd("ctx");
  30147. $recv($self._elements())._remove_ifAbsent_(anObject,(function(){
  30148. }));
  30149. return self;
  30150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30151. }, function($ctx1) {$ctx1.fill(self,"removeElement:",{anObject:anObject})});
  30152. //>>excludeEnd("ctx");
  30153. }; }),
  30154. $globals.Organizer);
  30155. $core.addClass("ClassOrganizer", $globals.Organizer, "Kernel-Infrastructure");
  30156. $core.setSlots($globals.ClassOrganizer, ["traitOrBehavior"]);
  30157. //>>excludeStart("ide", pragmas.excludeIdeData);
  30158. $globals.ClassOrganizer.comment="I am an organizer specific to classes. I hold method categorization information for classes.";
  30159. //>>excludeEnd("ide");
  30160. $core.addMethod(
  30161. $core.method({
  30162. selector: "addElement:",
  30163. protocol: "accessing",
  30164. //>>excludeStart("ide", pragmas.excludeIdeData);
  30165. args: ["aString"],
  30166. source: "addElement: aString\x0a\x09super addElement: aString.\x0a\x0a\x09SystemAnnouncer current announce: (ProtocolAdded new\x0a\x09\x09protocol: aString;\x0a\x09\x09theClass: self theClass;\x0a\x09\x09yourself)",
  30167. referencedClasses: ["SystemAnnouncer", "ProtocolAdded"],
  30168. //>>excludeEnd("ide");
  30169. pragmas: [],
  30170. messageSends: ["addElement:", "announce:", "current", "protocol:", "new", "theClass:", "theClass", "yourself"]
  30171. }, function ($methodClass){ return function (aString){
  30172. var self=this,$self=this;
  30173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30174. return $core.withContext(function($ctx1) {
  30175. //>>excludeEnd("ctx");
  30176. var $1,$2;
  30177. [(
  30178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30179. $ctx1.supercall = true,
  30180. //>>excludeEnd("ctx");
  30181. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._addElement_.call($self,aString))
  30182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30183. ,$ctx1.supercall = false
  30184. //>>excludeEnd("ctx");
  30185. ][0];
  30186. $1=$recv($globals.SystemAnnouncer)._current();
  30187. $2=$recv($globals.ProtocolAdded)._new();
  30188. $recv($2)._protocol_(aString);
  30189. $recv($2)._theClass_($self._theClass());
  30190. $recv($1)._announce_($recv($2)._yourself());
  30191. return self;
  30192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30193. }, function($ctx1) {$ctx1.fill(self,"addElement:",{aString:aString})});
  30194. //>>excludeEnd("ctx");
  30195. }; }),
  30196. $globals.ClassOrganizer);
  30197. $core.addMethod(
  30198. $core.method({
  30199. selector: "removeElement:",
  30200. protocol: "accessing",
  30201. //>>excludeStart("ide", pragmas.excludeIdeData);
  30202. args: ["aString"],
  30203. source: "removeElement: aString\x0a\x09super removeElement: aString.\x0a\x0a\x09SystemAnnouncer current announce: (ProtocolRemoved new\x0a\x09\x09protocol: aString;\x0a\x09\x09theClass: self theClass;\x0a\x09\x09yourself)",
  30204. referencedClasses: ["SystemAnnouncer", "ProtocolRemoved"],
  30205. //>>excludeEnd("ide");
  30206. pragmas: [],
  30207. messageSends: ["removeElement:", "announce:", "current", "protocol:", "new", "theClass:", "theClass", "yourself"]
  30208. }, function ($methodClass){ return function (aString){
  30209. var self=this,$self=this;
  30210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30211. return $core.withContext(function($ctx1) {
  30212. //>>excludeEnd("ctx");
  30213. var $1,$2;
  30214. [(
  30215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30216. $ctx1.supercall = true,
  30217. //>>excludeEnd("ctx");
  30218. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._removeElement_.call($self,aString))
  30219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30220. ,$ctx1.supercall = false
  30221. //>>excludeEnd("ctx");
  30222. ][0];
  30223. $1=$recv($globals.SystemAnnouncer)._current();
  30224. $2=$recv($globals.ProtocolRemoved)._new();
  30225. $recv($2)._protocol_(aString);
  30226. $recv($2)._theClass_($self._theClass());
  30227. $recv($1)._announce_($recv($2)._yourself());
  30228. return self;
  30229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30230. }, function($ctx1) {$ctx1.fill(self,"removeElement:",{aString:aString})});
  30231. //>>excludeEnd("ctx");
  30232. }; }),
  30233. $globals.ClassOrganizer);
  30234. $core.addMethod(
  30235. $core.method({
  30236. selector: "theClass",
  30237. protocol: "accessing",
  30238. //>>excludeStart("ide", pragmas.excludeIdeData);
  30239. args: [],
  30240. source: "theClass\x0a\x09^ traitOrBehavior",
  30241. referencedClasses: [],
  30242. //>>excludeEnd("ide");
  30243. pragmas: [],
  30244. messageSends: []
  30245. }, function ($methodClass){ return function (){
  30246. var self=this,$self=this;
  30247. return $self.traitOrBehavior;
  30248. }; }),
  30249. $globals.ClassOrganizer);
  30250. $core.addMethod(
  30251. $core.method({
  30252. selector: "theClass:",
  30253. protocol: "accessing",
  30254. //>>excludeStart("ide", pragmas.excludeIdeData);
  30255. args: ["aClass"],
  30256. source: "theClass: aClass\x0a\x09traitOrBehavior := aClass",
  30257. referencedClasses: [],
  30258. //>>excludeEnd("ide");
  30259. pragmas: [],
  30260. messageSends: []
  30261. }, function ($methodClass){ return function (aClass){
  30262. var self=this,$self=this;
  30263. $self.traitOrBehavior=aClass;
  30264. return self;
  30265. }; }),
  30266. $globals.ClassOrganizer);
  30267. $core.addMethod(
  30268. $core.method({
  30269. selector: "on:",
  30270. protocol: "instance creation",
  30271. //>>excludeStart("ide", pragmas.excludeIdeData);
  30272. args: ["aClass"],
  30273. source: "on: aClass\x0a\x09^ self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
  30274. referencedClasses: [],
  30275. //>>excludeEnd("ide");
  30276. pragmas: [],
  30277. messageSends: ["theClass:", "new", "yourself"]
  30278. }, function ($methodClass){ return function (aClass){
  30279. var self=this,$self=this;
  30280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30281. return $core.withContext(function($ctx1) {
  30282. //>>excludeEnd("ctx");
  30283. var $1;
  30284. $1=$self._new();
  30285. $recv($1)._theClass_(aClass);
  30286. return $recv($1)._yourself();
  30287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30288. }, function($ctx1) {$ctx1.fill(self,"on:",{aClass:aClass})});
  30289. //>>excludeEnd("ctx");
  30290. }; }),
  30291. $globals.ClassOrganizer.a$cls);
  30292. $core.addClass("PackageOrganizer", $globals.Organizer, "Kernel-Infrastructure");
  30293. //>>excludeStart("ide", pragmas.excludeIdeData);
  30294. $globals.PackageOrganizer.comment="I am an organizer specific to packages. I hold classes categorization information.";
  30295. //>>excludeEnd("ide");
  30296. $core.addClass("Package", $globals.Object, "Kernel-Infrastructure");
  30297. $core.setSlots($globals.Package, ["contextBlock", "basicTransport", "name", "transport", "imports", "dirty", "organization", "isReady"]);
  30298. //>>excludeStart("ide", pragmas.excludeIdeData);
  30299. $globals.Package.comment="I am similar to a \x22class category\x22 typically found in other Smalltalks like Pharo or Squeak. Amber does not have class categories anymore, it had in the beginning but now each class in the system knows which package it belongs to.\x0a\x0aEach package has a name and can be queried for its classes, but it will then resort to a reverse scan of all classes to find them.\x0a\x0a## API\x0a\x0aPackages are manipulated through \x22Smalltalk current\x22, like for example finding one based on a name or with `Package class >> #name` directly:\x0a\x0a Smalltalk current packageAt: 'Kernel'\x0a Package named: 'Kernel'\x0a\x0aA package differs slightly from a Monticello package which can span multiple class categories using a naming convention based on hyphenation. But just as in Monticello a package supports \x22class extensions\x22 so a package can define behaviors in foreign classes using a naming convention for method categories where the category starts with an asterisk and then the name of the owning package follows.\x0a\x0aYou can fetch a package from the server:\x0a\x0a\x09Package load: 'Additional-Examples'";
  30300. //>>excludeEnd("ide");
  30301. $core.addMethod(
  30302. $core.method({
  30303. selector: "basicTransport",
  30304. protocol: "private",
  30305. //>>excludeStart("ide", pragmas.excludeIdeData);
  30306. args: [],
  30307. source: "basicTransport\x0a\x09\x22Answer the transport literal JavaScript object as setup in the JavaScript file, if any\x22\x0a\x09\x0a\x09^ basicTransport",
  30308. referencedClasses: [],
  30309. //>>excludeEnd("ide");
  30310. pragmas: [],
  30311. messageSends: []
  30312. }, function ($methodClass){ return function (){
  30313. var self=this,$self=this;
  30314. return $self.basicTransport;
  30315. }; }),
  30316. $globals.Package);
  30317. $core.addMethod(
  30318. $core.method({
  30319. selector: "beClean",
  30320. protocol: "accessing",
  30321. //>>excludeStart("ide", pragmas.excludeIdeData);
  30322. args: [],
  30323. source: "beClean\x0a\x09dirty := false.\x0a\x09\x0a\x09SystemAnnouncer current announce: (PackageClean new\x0a\x09\x09package: self;\x0a\x09\x09yourself)",
  30324. referencedClasses: ["SystemAnnouncer", "PackageClean"],
  30325. //>>excludeEnd("ide");
  30326. pragmas: [],
  30327. messageSends: ["announce:", "current", "package:", "new", "yourself"]
  30328. }, function ($methodClass){ return function (){
  30329. var self=this,$self=this;
  30330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30331. return $core.withContext(function($ctx1) {
  30332. //>>excludeEnd("ctx");
  30333. var $1,$2;
  30334. $self.dirty=false;
  30335. $1=$recv($globals.SystemAnnouncer)._current();
  30336. $2=$recv($globals.PackageClean)._new();
  30337. $recv($2)._package_(self);
  30338. $recv($1)._announce_($recv($2)._yourself());
  30339. return self;
  30340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30341. }, function($ctx1) {$ctx1.fill(self,"beClean",{})});
  30342. //>>excludeEnd("ctx");
  30343. }; }),
  30344. $globals.Package);
  30345. $core.addMethod(
  30346. $core.method({
  30347. selector: "beDirty",
  30348. protocol: "accessing",
  30349. //>>excludeStart("ide", pragmas.excludeIdeData);
  30350. args: [],
  30351. source: "beDirty\x0a\x09dirty := true.\x0a\x09\x0a\x09SystemAnnouncer current announce: (PackageDirty new\x0a\x09\x09package: self;\x0a\x09\x09yourself)",
  30352. referencedClasses: ["SystemAnnouncer", "PackageDirty"],
  30353. //>>excludeEnd("ide");
  30354. pragmas: [],
  30355. messageSends: ["announce:", "current", "package:", "new", "yourself"]
  30356. }, function ($methodClass){ return function (){
  30357. var self=this,$self=this;
  30358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30359. return $core.withContext(function($ctx1) {
  30360. //>>excludeEnd("ctx");
  30361. var $1,$2;
  30362. $self.dirty=true;
  30363. $1=$recv($globals.SystemAnnouncer)._current();
  30364. $2=$recv($globals.PackageDirty)._new();
  30365. $recv($2)._package_(self);
  30366. $recv($1)._announce_($recv($2)._yourself());
  30367. return self;
  30368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30369. }, function($ctx1) {$ctx1.fill(self,"beDirty",{})});
  30370. //>>excludeEnd("ctx");
  30371. }; }),
  30372. $globals.Package);
  30373. $core.addMethod(
  30374. $core.method({
  30375. selector: "classTemplate",
  30376. protocol: "accessing",
  30377. //>>excludeStart("ide", pragmas.excludeIdeData);
  30378. args: [],
  30379. source: "classTemplate\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09write: 'Object subclass: #NameOfSubclass'; lf;\x0a\x09\x09tab; write: 'instanceVariableNames: '''''; lf;\x0a\x09\x09tab; write: 'package: '; print: self name ]",
  30380. referencedClasses: ["String"],
  30381. //>>excludeEnd("ide");
  30382. pragmas: [],
  30383. messageSends: ["streamContents:", "write:", "lf", "tab", "print:", "name"]
  30384. }, function ($methodClass){ return function (){
  30385. var self=this,$self=this;
  30386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30387. return $core.withContext(function($ctx1) {
  30388. //>>excludeEnd("ctx");
  30389. return $recv($globals.String)._streamContents_((function(stream){
  30390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30391. return $core.withContext(function($ctx2) {
  30392. //>>excludeEnd("ctx");
  30393. [$recv(stream)._write_("Object subclass: #NameOfSubclass")
  30394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30395. ,$ctx2.sendIdx["write:"]=1
  30396. //>>excludeEnd("ctx");
  30397. ][0];
  30398. [$recv(stream)._lf()
  30399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30400. ,$ctx2.sendIdx["lf"]=1
  30401. //>>excludeEnd("ctx");
  30402. ][0];
  30403. [$recv(stream)._tab()
  30404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30405. ,$ctx2.sendIdx["tab"]=1
  30406. //>>excludeEnd("ctx");
  30407. ][0];
  30408. [$recv(stream)._write_("instanceVariableNames: ''")
  30409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30410. ,$ctx2.sendIdx["write:"]=2
  30411. //>>excludeEnd("ctx");
  30412. ][0];
  30413. $recv(stream)._lf();
  30414. $recv(stream)._tab();
  30415. $recv(stream)._write_("package: ");
  30416. return $recv(stream)._print_($self._name());
  30417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30418. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  30419. //>>excludeEnd("ctx");
  30420. }));
  30421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30422. }, function($ctx1) {$ctx1.fill(self,"classTemplate",{})});
  30423. //>>excludeEnd("ctx");
  30424. }; }),
  30425. $globals.Package);
  30426. $core.addMethod(
  30427. $core.method({
  30428. selector: "classes",
  30429. protocol: "classes",
  30430. //>>excludeStart("ide", pragmas.excludeIdeData);
  30431. args: [],
  30432. source: "classes\x0a\x09^ self organization elements copy",
  30433. referencedClasses: [],
  30434. //>>excludeEnd("ide");
  30435. pragmas: [],
  30436. messageSends: ["copy", "elements", "organization"]
  30437. }, function ($methodClass){ return function (){
  30438. var self=this,$self=this;
  30439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30440. return $core.withContext(function($ctx1) {
  30441. //>>excludeEnd("ctx");
  30442. return $recv($recv($self._organization())._elements())._copy();
  30443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30444. }, function($ctx1) {$ctx1.fill(self,"classes",{})});
  30445. //>>excludeEnd("ctx");
  30446. }; }),
  30447. $globals.Package);
  30448. $core.addMethod(
  30449. $core.method({
  30450. selector: "context",
  30451. protocol: "accessing",
  30452. //>>excludeStart("ide", pragmas.excludeIdeData);
  30453. args: [],
  30454. source: "context\x0a\x09^ self contextBlock\x0a\x09\x09ifNil: [ #{} ]\x0a\x09\x09ifNotNil: [ :block |\x0a\x09\x09\x09| result |\x0a\x09\x09\x09result := Dictionary new.\x0a\x09\x09\x09block value keysAndValuesDo: [ :key :value | result at: key put: value ].\x0a\x09\x09\x09result ]",
  30455. referencedClasses: ["Dictionary"],
  30456. //>>excludeEnd("ide");
  30457. pragmas: [],
  30458. messageSends: ["ifNil:ifNotNil:", "contextBlock", "new", "keysAndValuesDo:", "value", "at:put:"]
  30459. }, function ($methodClass){ return function (){
  30460. var self=this,$self=this;
  30461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30462. return $core.withContext(function($ctx1) {
  30463. //>>excludeEnd("ctx");
  30464. var $1;
  30465. $1=$self._contextBlock();
  30466. if($1 == null || $1.a$nil){
  30467. return $globals.HashedCollection._newFromPairs_([]);
  30468. } else {
  30469. var result,block;
  30470. block=$1;
  30471. result=$recv($globals.Dictionary)._new();
  30472. $recv($recv(block)._value())._keysAndValuesDo_((function(key,value){
  30473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30474. return $core.withContext(function($ctx2) {
  30475. //>>excludeEnd("ctx");
  30476. return $recv(result)._at_put_(key,value);
  30477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30478. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
  30479. //>>excludeEnd("ctx");
  30480. }));
  30481. return result;
  30482. }
  30483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30484. }, function($ctx1) {$ctx1.fill(self,"context",{})});
  30485. //>>excludeEnd("ctx");
  30486. }; }),
  30487. $globals.Package);
  30488. $core.addMethod(
  30489. $core.method({
  30490. selector: "contextBlock",
  30491. protocol: "accessing",
  30492. //>>excludeStart("ide", pragmas.excludeIdeData);
  30493. args: [],
  30494. source: "contextBlock\x0a\x09^ contextBlock",
  30495. referencedClasses: [],
  30496. //>>excludeEnd("ide");
  30497. pragmas: [],
  30498. messageSends: []
  30499. }, function ($methodClass){ return function (){
  30500. var self=this,$self=this;
  30501. return $self.contextBlock;
  30502. }; }),
  30503. $globals.Package);
  30504. $core.addMethod(
  30505. $core.method({
  30506. selector: "contextBlock:",
  30507. protocol: "accessing",
  30508. //>>excludeStart("ide", pragmas.excludeIdeData);
  30509. args: ["aBlock"],
  30510. source: "contextBlock: aBlock\x0a\x09contextBlock := aBlock",
  30511. referencedClasses: [],
  30512. //>>excludeEnd("ide");
  30513. pragmas: [],
  30514. messageSends: []
  30515. }, function ($methodClass){ return function (aBlock){
  30516. var self=this,$self=this;
  30517. $self.contextBlock=aBlock;
  30518. return self;
  30519. }; }),
  30520. $globals.Package);
  30521. $core.addMethod(
  30522. $core.method({
  30523. selector: "contextFunctionSource",
  30524. protocol: "accessing",
  30525. //>>excludeStart("ide", pragmas.excludeIdeData);
  30526. args: [],
  30527. source: "contextFunctionSource\x0a\x09^ (self imports reject: #isString)\x0a\x09\x09ifEmpty: [ nil ]\x0a\x09\x09ifNotEmpty: [ :namedImports |\x0a\x09\x09\x09'function () { return {',\x0a\x09\x09\x09(',' join: (namedImports collect: [ :each | each key, ':', each key ])),\x0a\x09\x09\x09'}; }' ]",
  30528. referencedClasses: [],
  30529. //>>excludeEnd("ide");
  30530. pragmas: [],
  30531. messageSends: ["ifEmpty:ifNotEmpty:", "reject:", "imports", ",", "join:", "collect:", "key"]
  30532. }, function ($methodClass){ return function (){
  30533. var self=this,$self=this;
  30534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30535. return $core.withContext(function($ctx1) {
  30536. //>>excludeEnd("ctx");
  30537. return $recv($recv($self._imports())._reject_("isString"))._ifEmpty_ifNotEmpty_((function(){
  30538. return nil;
  30539. }),(function(namedImports){
  30540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30541. return $core.withContext(function($ctx2) {
  30542. //>>excludeEnd("ctx");
  30543. return [$recv(["function () { return {".__comma(","._join_($recv(namedImports)._collect_((function(each){
  30544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30545. return $core.withContext(function($ctx3) {
  30546. //>>excludeEnd("ctx");
  30547. return [$recv($recv([$recv(each)._key()
  30548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30549. ,$ctx3.sendIdx["key"]=1
  30550. //>>excludeEnd("ctx");
  30551. ][0]).__comma(":")).__comma($recv(each)._key())
  30552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30553. ,$ctx3.sendIdx[","]=3
  30554. //>>excludeEnd("ctx");
  30555. ][0];
  30556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30557. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
  30558. //>>excludeEnd("ctx");
  30559. }))))
  30560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30561. ,$ctx2.sendIdx[","]=2
  30562. //>>excludeEnd("ctx");
  30563. ][0]).__comma("}; }")
  30564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30565. ,$ctx2.sendIdx[","]=1
  30566. //>>excludeEnd("ctx");
  30567. ][0];
  30568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30569. }, function($ctx2) {$ctx2.fillBlock({namedImports:namedImports},$ctx1,2)});
  30570. //>>excludeEnd("ctx");
  30571. }));
  30572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30573. }, function($ctx1) {$ctx1.fill(self,"contextFunctionSource",{})});
  30574. //>>excludeEnd("ctx");
  30575. }; }),
  30576. $globals.Package);
  30577. $core.addMethod(
  30578. $core.method({
  30579. selector: "definition",
  30580. protocol: "accessing",
  30581. //>>excludeStart("ide", pragmas.excludeIdeData);
  30582. args: [],
  30583. source: "definition\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09write: self class name; lf;\x0a\x09\x09tab; write: 'named: '; print: self name; lf;\x0a\x09\x09tab; write: { 'imports: '. self importsDefinition }; lf;\x0a\x09\x09tab; write: { 'transport: ('. self transport definition. ')' } ]",
  30584. referencedClasses: ["String"],
  30585. //>>excludeEnd("ide");
  30586. pragmas: [],
  30587. messageSends: ["streamContents:", "write:", "name", "class", "lf", "tab", "print:", "importsDefinition", "definition", "transport"]
  30588. }, function ($methodClass){ return function (){
  30589. var self=this,$self=this;
  30590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30591. return $core.withContext(function($ctx1) {
  30592. //>>excludeEnd("ctx");
  30593. return $recv($globals.String)._streamContents_((function(stream){
  30594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30595. return $core.withContext(function($ctx2) {
  30596. //>>excludeEnd("ctx");
  30597. [$recv(stream)._write_([$recv($self._class())._name()
  30598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30599. ,$ctx2.sendIdx["name"]=1
  30600. //>>excludeEnd("ctx");
  30601. ][0])
  30602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30603. ,$ctx2.sendIdx["write:"]=1
  30604. //>>excludeEnd("ctx");
  30605. ][0];
  30606. [$recv(stream)._lf()
  30607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30608. ,$ctx2.sendIdx["lf"]=1
  30609. //>>excludeEnd("ctx");
  30610. ][0];
  30611. [$recv(stream)._tab()
  30612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30613. ,$ctx2.sendIdx["tab"]=1
  30614. //>>excludeEnd("ctx");
  30615. ][0];
  30616. [$recv(stream)._write_("named: ")
  30617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30618. ,$ctx2.sendIdx["write:"]=2
  30619. //>>excludeEnd("ctx");
  30620. ][0];
  30621. $recv(stream)._print_($self._name());
  30622. [$recv(stream)._lf()
  30623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30624. ,$ctx2.sendIdx["lf"]=2
  30625. //>>excludeEnd("ctx");
  30626. ][0];
  30627. [$recv(stream)._tab()
  30628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30629. ,$ctx2.sendIdx["tab"]=2
  30630. //>>excludeEnd("ctx");
  30631. ][0];
  30632. [$recv(stream)._write_(["imports: ",$self._importsDefinition()])
  30633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30634. ,$ctx2.sendIdx["write:"]=3
  30635. //>>excludeEnd("ctx");
  30636. ][0];
  30637. $recv(stream)._lf();
  30638. $recv(stream)._tab();
  30639. return $recv(stream)._write_(["transport: (",$recv($self._transport())._definition(),")"]);
  30640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30641. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  30642. //>>excludeEnd("ctx");
  30643. }));
  30644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30645. }, function($ctx1) {$ctx1.fill(self,"definition",{})});
  30646. //>>excludeEnd("ctx");
  30647. }; }),
  30648. $globals.Package);
  30649. $core.addMethod(
  30650. $core.method({
  30651. selector: "imports",
  30652. protocol: "accessing",
  30653. //>>excludeStart("ide", pragmas.excludeIdeData);
  30654. args: [],
  30655. source: "imports\x0a\x09^ imports ifNil: [\x0a\x09\x09self imports: #().\x0a\x09\x09imports ]",
  30656. referencedClasses: [],
  30657. //>>excludeEnd("ide");
  30658. pragmas: [],
  30659. messageSends: ["ifNil:", "imports:"]
  30660. }, function ($methodClass){ return function (){
  30661. var self=this,$self=this;
  30662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30663. return $core.withContext(function($ctx1) {
  30664. //>>excludeEnd("ctx");
  30665. var $1;
  30666. $1=$self.imports;
  30667. if($1 == null || $1.a$nil){
  30668. $self._imports_([]);
  30669. return $self.imports;
  30670. } else {
  30671. return $1;
  30672. }
  30673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30674. }, function($ctx1) {$ctx1.fill(self,"imports",{})});
  30675. //>>excludeEnd("ctx");
  30676. }; }),
  30677. $globals.Package);
  30678. $core.addMethod(
  30679. $core.method({
  30680. selector: "imports:",
  30681. protocol: "accessing",
  30682. //>>excludeStart("ide", pragmas.excludeIdeData);
  30683. args: ["anArray"],
  30684. source: "imports: anArray\x0a\x09self validateImports: anArray.\x0a\x09imports := anArray asSet",
  30685. referencedClasses: [],
  30686. //>>excludeEnd("ide");
  30687. pragmas: [],
  30688. messageSends: ["validateImports:", "asSet"]
  30689. }, function ($methodClass){ return function (anArray){
  30690. var self=this,$self=this;
  30691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30692. return $core.withContext(function($ctx1) {
  30693. //>>excludeEnd("ctx");
  30694. $self._validateImports_(anArray);
  30695. $self.imports=$recv(anArray)._asSet();
  30696. return self;
  30697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30698. }, function($ctx1) {$ctx1.fill(self,"imports:",{anArray:anArray})});
  30699. //>>excludeEnd("ctx");
  30700. }; }),
  30701. $globals.Package);
  30702. $core.addMethod(
  30703. $core.method({
  30704. selector: "importsAsJson",
  30705. protocol: "converting",
  30706. //>>excludeStart("ide", pragmas.excludeIdeData);
  30707. args: [],
  30708. source: "importsAsJson\x0a\x0a\x09^ self sortedImportsAsArray collect: [ :each |\x0a\x09\x09each isString\x0a\x09\x09\x09ifTrue: [ each ]\x0a\x09\x09\x09ifFalse: [ each key, '=', each value ]]",
  30709. referencedClasses: [],
  30710. //>>excludeEnd("ide");
  30711. pragmas: [],
  30712. messageSends: ["collect:", "sortedImportsAsArray", "ifTrue:ifFalse:", "isString", ",", "key", "value"]
  30713. }, function ($methodClass){ return function (){
  30714. var self=this,$self=this;
  30715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30716. return $core.withContext(function($ctx1) {
  30717. //>>excludeEnd("ctx");
  30718. return $recv($self._sortedImportsAsArray())._collect_((function(each){
  30719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30720. return $core.withContext(function($ctx2) {
  30721. //>>excludeEnd("ctx");
  30722. if($core.assert($recv(each)._isString())){
  30723. return each;
  30724. } else {
  30725. return [$recv($recv($recv(each)._key()).__comma("=")).__comma($recv(each)._value())
  30726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30727. ,$ctx2.sendIdx[","]=1
  30728. //>>excludeEnd("ctx");
  30729. ][0];
  30730. }
  30731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30732. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  30733. //>>excludeEnd("ctx");
  30734. }));
  30735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30736. }, function($ctx1) {$ctx1.fill(self,"importsAsJson",{})});
  30737. //>>excludeEnd("ctx");
  30738. }; }),
  30739. $globals.Package);
  30740. $core.addMethod(
  30741. $core.method({
  30742. selector: "importsDefinition",
  30743. protocol: "accessing",
  30744. //>>excludeStart("ide", pragmas.excludeIdeData);
  30745. args: [],
  30746. source: "importsDefinition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream write: '{'.\x0a\x09\x09self sortedImportsAsArray\x0a\x09\x09\x09do: [ :each | stream print: each ]\x0a\x09\x09\x09separatedBy: [ stream write: '. ' ].\x0a\x09\x09stream write: '}' ]",
  30747. referencedClasses: ["String"],
  30748. //>>excludeEnd("ide");
  30749. pragmas: [],
  30750. messageSends: ["streamContents:", "write:", "do:separatedBy:", "sortedImportsAsArray", "print:"]
  30751. }, function ($methodClass){ return function (){
  30752. var self=this,$self=this;
  30753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30754. return $core.withContext(function($ctx1) {
  30755. //>>excludeEnd("ctx");
  30756. return $recv($globals.String)._streamContents_((function(stream){
  30757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30758. return $core.withContext(function($ctx2) {
  30759. //>>excludeEnd("ctx");
  30760. [$recv(stream)._write_("{")
  30761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30762. ,$ctx2.sendIdx["write:"]=1
  30763. //>>excludeEnd("ctx");
  30764. ][0];
  30765. $recv($self._sortedImportsAsArray())._do_separatedBy_((function(each){
  30766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30767. return $core.withContext(function($ctx3) {
  30768. //>>excludeEnd("ctx");
  30769. return $recv(stream)._print_(each);
  30770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30771. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  30772. //>>excludeEnd("ctx");
  30773. }),(function(){
  30774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30775. return $core.withContext(function($ctx3) {
  30776. //>>excludeEnd("ctx");
  30777. return [$recv(stream)._write_(". ")
  30778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30779. ,$ctx3.sendIdx["write:"]=2
  30780. //>>excludeEnd("ctx");
  30781. ][0];
  30782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30783. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  30784. //>>excludeEnd("ctx");
  30785. }));
  30786. return $recv(stream)._write_("}");
  30787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30788. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  30789. //>>excludeEnd("ctx");
  30790. }));
  30791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30792. }, function($ctx1) {$ctx1.fill(self,"importsDefinition",{})});
  30793. //>>excludeEnd("ctx");
  30794. }; }),
  30795. $globals.Package);
  30796. $core.addMethod(
  30797. $core.method({
  30798. selector: "importsFromJson:",
  30799. protocol: "converting",
  30800. //>>excludeStart("ide", pragmas.excludeIdeData);
  30801. args: ["anArray"],
  30802. source: "importsFromJson: anArray\x0a\x09\x22Parses array of string, eg. #('asdf' 'qwer=tyuo')\x0a\x09into array of Strings and Associations,\x0a\x09eg. {'asdf'. 'qwer'->'tyuo'}\x22\x0a\x0a\x09^ anArray collect: [ :each |\x0a\x09\x09| split |\x0a\x09\x09split := each tokenize: '='.\x0a\x09\x09split size = 1\x0a\x09\x09\x09ifTrue: [ split first ]\x0a\x09\x09\x09ifFalse: [ split first -> split second ]]",
  30803. referencedClasses: [],
  30804. //>>excludeEnd("ide");
  30805. pragmas: [],
  30806. messageSends: ["collect:", "tokenize:", "ifTrue:ifFalse:", "=", "size", "first", "->", "second"]
  30807. }, function ($methodClass){ return function (anArray){
  30808. var self=this,$self=this;
  30809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30810. return $core.withContext(function($ctx1) {
  30811. //>>excludeEnd("ctx");
  30812. return $recv(anArray)._collect_((function(each){
  30813. var split;
  30814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30815. return $core.withContext(function($ctx2) {
  30816. //>>excludeEnd("ctx");
  30817. split=$recv(each)._tokenize_("=");
  30818. if($core.assert($recv($recv(split)._size()).__eq((1)))){
  30819. return [$recv(split)._first()
  30820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30821. ,$ctx2.sendIdx["first"]=1
  30822. //>>excludeEnd("ctx");
  30823. ][0];
  30824. } else {
  30825. return $recv($recv(split)._first()).__minus_gt($recv(split)._second());
  30826. }
  30827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30828. }, function($ctx2) {$ctx2.fillBlock({each:each,split:split},$ctx1,1)});
  30829. //>>excludeEnd("ctx");
  30830. }));
  30831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30832. }, function($ctx1) {$ctx1.fill(self,"importsFromJson:",{anArray:anArray})});
  30833. //>>excludeEnd("ctx");
  30834. }; }),
  30835. $globals.Package);
  30836. $core.addMethod(
  30837. $core.method({
  30838. selector: "initialize",
  30839. protocol: "initialization",
  30840. //>>excludeStart("ide", pragmas.excludeIdeData);
  30841. args: [],
  30842. source: "initialize\x0a\x09super initialize.\x0a\x0a\x09organization := PackageOrganizer new.\x0a\x09contextBlock := nil.\x0a\x09dirty := nil.\x0a\x09imports := nil.\x0a\x09isReady := Promise new.\x0a\x09transport := nil",
  30843. referencedClasses: ["PackageOrganizer", "Promise"],
  30844. //>>excludeEnd("ide");
  30845. pragmas: [],
  30846. messageSends: ["initialize", "new"]
  30847. }, function ($methodClass){ return function (){
  30848. var self=this,$self=this;
  30849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30850. return $core.withContext(function($ctx1) {
  30851. //>>excludeEnd("ctx");
  30852. [(
  30853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30854. $ctx1.supercall = true,
  30855. //>>excludeEnd("ctx");
  30856. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  30857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30858. ,$ctx1.supercall = false
  30859. //>>excludeEnd("ctx");
  30860. ][0];
  30861. $self.organization=[$recv($globals.PackageOrganizer)._new()
  30862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30863. ,$ctx1.sendIdx["new"]=1
  30864. //>>excludeEnd("ctx");
  30865. ][0];
  30866. $self.contextBlock=nil;
  30867. $self.dirty=nil;
  30868. $self.imports=nil;
  30869. $self.isReady=$recv($globals.Promise)._new();
  30870. $self.transport=nil;
  30871. return self;
  30872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30873. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  30874. //>>excludeEnd("ctx");
  30875. }; }),
  30876. $globals.Package);
  30877. $core.addMethod(
  30878. $core.method({
  30879. selector: "isDirty",
  30880. protocol: "testing",
  30881. //>>excludeStart("ide", pragmas.excludeIdeData);
  30882. args: [],
  30883. source: "isDirty\x0a\x09^ dirty ifNil: [ false ]",
  30884. referencedClasses: [],
  30885. //>>excludeEnd("ide");
  30886. pragmas: [],
  30887. messageSends: ["ifNil:"]
  30888. }, function ($methodClass){ return function (){
  30889. var self=this,$self=this;
  30890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30891. return $core.withContext(function($ctx1) {
  30892. //>>excludeEnd("ctx");
  30893. var $1;
  30894. $1=$self.dirty;
  30895. if($1 == null || $1.a$nil){
  30896. return false;
  30897. } else {
  30898. return $1;
  30899. }
  30900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30901. }, function($ctx1) {$ctx1.fill(self,"isDirty",{})});
  30902. //>>excludeEnd("ctx");
  30903. }; }),
  30904. $globals.Package);
  30905. $core.addMethod(
  30906. $core.method({
  30907. selector: "isPackage",
  30908. protocol: "testing",
  30909. //>>excludeStart("ide", pragmas.excludeIdeData);
  30910. args: [],
  30911. source: "isPackage\x0a\x09^ true",
  30912. referencedClasses: [],
  30913. //>>excludeEnd("ide");
  30914. pragmas: [],
  30915. messageSends: []
  30916. }, function ($methodClass){ return function (){
  30917. var self=this,$self=this;
  30918. return true;
  30919. }; }),
  30920. $globals.Package);
  30921. $core.addMethod(
  30922. $core.method({
  30923. selector: "isReady",
  30924. protocol: "accessing",
  30925. //>>excludeStart("ide", pragmas.excludeIdeData);
  30926. args: [],
  30927. source: "isReady\x0a\x09^ isReady",
  30928. referencedClasses: [],
  30929. //>>excludeEnd("ide");
  30930. pragmas: [],
  30931. messageSends: []
  30932. }, function ($methodClass){ return function (){
  30933. var self=this,$self=this;
  30934. return $self.isReady;
  30935. }; }),
  30936. $globals.Package);
  30937. $core.addMethod(
  30938. $core.method({
  30939. selector: "isReady:",
  30940. protocol: "accessing",
  30941. //>>excludeStart("ide", pragmas.excludeIdeData);
  30942. args: ["aPromise"],
  30943. source: "isReady: aPromise\x0a\x09isReady := aPromise",
  30944. referencedClasses: [],
  30945. //>>excludeEnd("ide");
  30946. pragmas: [],
  30947. messageSends: []
  30948. }, function ($methodClass){ return function (aPromise){
  30949. var self=this,$self=this;
  30950. $self.isReady=aPromise;
  30951. return self;
  30952. }; }),
  30953. $globals.Package);
  30954. $core.addMethod(
  30955. $core.method({
  30956. selector: "javaScriptDescriptor:",
  30957. protocol: "accessing",
  30958. //>>excludeStart("ide", pragmas.excludeIdeData);
  30959. args: ["anObject"],
  30960. source: "javaScriptDescriptor: anObject\x0a\x09| basicEval basicContext basicImports |\x0a\x0a\x09basicImports := anObject at: 'imports' ifAbsent: [ #() ].\x0a\x09self imports: (self importsFromJson: basicImports).\x0a\x0a\x09basicTransport := anObject at: 'transport' ifAbsent: [].\x0a\x09anObject at: 'isReady' ifPresent: [ :aPromise | self isReady: aPromise ].\x0a\x0a\x09\x22TODO remove, backward compatibility\x22\x0a\x09anObject at: 'innerEval' ifPresent: [ :evalBlock |\x0a\x09\x09self contextFunctionSource ifNotNil: [ :source |\x0a\x09\x09\x09anObject at: 'context' put: (evalBlock value: '(', source, ')') ] ].\x0a\x0a\x09basicContext := anObject at: 'context' ifAbsent: [ nil asJavaScriptObject ].\x0a\x09self contextBlock: basicContext",
  30961. referencedClasses: [],
  30962. //>>excludeEnd("ide");
  30963. pragmas: [],
  30964. messageSends: ["at:ifAbsent:", "imports:", "importsFromJson:", "at:ifPresent:", "isReady:", "ifNotNil:", "contextFunctionSource", "at:put:", "value:", ",", "asJavaScriptObject", "contextBlock:"]
  30965. }, function ($methodClass){ return function (anObject){
  30966. var self=this,$self=this;
  30967. var basicEval,basicContext,basicImports;
  30968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30969. return $core.withContext(function($ctx1) {
  30970. //>>excludeEnd("ctx");
  30971. var $1;
  30972. basicImports=[$recv(anObject)._at_ifAbsent_("imports",(function(){
  30973. return [];
  30974. }))
  30975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30976. ,$ctx1.sendIdx["at:ifAbsent:"]=1
  30977. //>>excludeEnd("ctx");
  30978. ][0];
  30979. $self._imports_($self._importsFromJson_(basicImports));
  30980. $self.basicTransport=[$recv(anObject)._at_ifAbsent_("transport",(function(){
  30981. }))
  30982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30983. ,$ctx1.sendIdx["at:ifAbsent:"]=2
  30984. //>>excludeEnd("ctx");
  30985. ][0];
  30986. [$recv(anObject)._at_ifPresent_("isReady",(function(aPromise){
  30987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30988. return $core.withContext(function($ctx2) {
  30989. //>>excludeEnd("ctx");
  30990. return $self._isReady_(aPromise);
  30991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30992. }, function($ctx2) {$ctx2.fillBlock({aPromise:aPromise},$ctx1,3)});
  30993. //>>excludeEnd("ctx");
  30994. }))
  30995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30996. ,$ctx1.sendIdx["at:ifPresent:"]=1
  30997. //>>excludeEnd("ctx");
  30998. ][0];
  30999. $recv(anObject)._at_ifPresent_("innerEval",(function(evalBlock){
  31000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31001. return $core.withContext(function($ctx2) {
  31002. //>>excludeEnd("ctx");
  31003. $1=$self._contextFunctionSource();
  31004. if($1 == null || $1.a$nil){
  31005. return $1;
  31006. } else {
  31007. var source;
  31008. source=$1;
  31009. return $recv(anObject)._at_put_("context",$recv(evalBlock)._value_([$recv("(".__comma(source)).__comma(")")
  31010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31011. ,$ctx2.sendIdx[","]=1
  31012. //>>excludeEnd("ctx");
  31013. ][0]));
  31014. }
  31015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31016. }, function($ctx2) {$ctx2.fillBlock({evalBlock:evalBlock},$ctx1,4)});
  31017. //>>excludeEnd("ctx");
  31018. }));
  31019. basicContext=$recv(anObject)._at_ifAbsent_("context",(function(){
  31020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31021. return $core.withContext(function($ctx2) {
  31022. //>>excludeEnd("ctx");
  31023. return $nil._asJavaScriptObject();
  31024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31025. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  31026. //>>excludeEnd("ctx");
  31027. }));
  31028. $self._contextBlock_(basicContext);
  31029. return self;
  31030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31031. }, function($ctx1) {$ctx1.fill(self,"javaScriptDescriptor:",{anObject:anObject,basicEval:basicEval,basicContext:basicContext,basicImports:basicImports})});
  31032. //>>excludeEnd("ctx");
  31033. }; }),
  31034. $globals.Package);
  31035. $core.addMethod(
  31036. $core.method({
  31037. selector: "loadDependencies",
  31038. protocol: "dependencies",
  31039. //>>excludeStart("ide", pragmas.excludeIdeData);
  31040. args: [],
  31041. source: "loadDependencies\x0a\x09\x22Returns list of packages that need to be loaded\x0a\x09before loading this package.\x22\x0a\x09\x0a\x09| classes packages |\x0a\x09classes := self loadDependencyClasses.\x0a\x09^ (classes collect: [ :each | each package ]) asSet\x0a\x09\x09remove: self ifAbsent: [];\x0a\x09\x09yourself",
  31042. referencedClasses: [],
  31043. //>>excludeEnd("ide");
  31044. pragmas: [],
  31045. messageSends: ["loadDependencyClasses", "remove:ifAbsent:", "asSet", "collect:", "package", "yourself"]
  31046. }, function ($methodClass){ return function (){
  31047. var self=this,$self=this;
  31048. var classes,packages;
  31049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31050. return $core.withContext(function($ctx1) {
  31051. //>>excludeEnd("ctx");
  31052. var $1;
  31053. classes=$self._loadDependencyClasses();
  31054. $1=$recv($recv(classes)._collect_((function(each){
  31055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31056. return $core.withContext(function($ctx2) {
  31057. //>>excludeEnd("ctx");
  31058. return $recv(each)._package();
  31059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31060. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  31061. //>>excludeEnd("ctx");
  31062. })))._asSet();
  31063. $recv($1)._remove_ifAbsent_(self,(function(){
  31064. }));
  31065. return $recv($1)._yourself();
  31066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31067. }, function($ctx1) {$ctx1.fill(self,"loadDependencies",{classes:classes,packages:packages})});
  31068. //>>excludeEnd("ctx");
  31069. }; }),
  31070. $globals.Package);
  31071. $core.addMethod(
  31072. $core.method({
  31073. selector: "loadDependencyClasses",
  31074. protocol: "dependencies",
  31075. //>>excludeStart("ide", pragmas.excludeIdeData);
  31076. args: [],
  31077. source: "loadDependencyClasses\x0a\x09\x22Returns classes needed at the time of loading a package.\x0a\x09These are all that are used to subclass\x0a\x09and to define an extension method\x0a\x09as well as all traits used\x22\x0a\x09\x0a\x09| starCategoryName |\x0a\x09starCategoryName := '*', self name.\x0a\x09^ (self classes collect: [ :each | each superclass ]) asSet\x0a\x09\x09addAll: (Smalltalk classes select: [ :each |\x0a\x09\x09\x09({each. each theMetaClass} copyWithout: nil) anySatisfy: [ :any |\x0a\x09\x09\x09\x09(any protocols includes: starCategoryName) and: [\x0a\x09\x09\x09\x09\x09(any ownMethodsInProtocol: starCategoryName) notEmpty ]]]);\x0a\x09\x09addAll: (Array streamContents: [ :as | self traitCompositions valuesDo: [ :each | as write: (each collect: [ :eachTT | eachTT trait ])]]);\x0a\x09\x09remove: nil ifAbsent: [];\x0a\x09\x09yourself",
  31078. referencedClasses: ["Smalltalk", "Array"],
  31079. //>>excludeEnd("ide");
  31080. pragmas: [],
  31081. messageSends: [",", "name", "addAll:", "asSet", "collect:", "classes", "superclass", "select:", "anySatisfy:", "copyWithout:", "theMetaClass", "and:", "includes:", "protocols", "notEmpty", "ownMethodsInProtocol:", "streamContents:", "valuesDo:", "traitCompositions", "write:", "trait", "remove:ifAbsent:", "yourself"]
  31082. }, function ($methodClass){ return function (){
  31083. var self=this,$self=this;
  31084. var starCategoryName;
  31085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31086. return $core.withContext(function($ctx1) {
  31087. //>>excludeEnd("ctx");
  31088. var $1;
  31089. starCategoryName="*".__comma($self._name());
  31090. $1=$recv([$recv([$self._classes()
  31091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31092. ,$ctx1.sendIdx["classes"]=1
  31093. //>>excludeEnd("ctx");
  31094. ][0])._collect_((function(each){
  31095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31096. return $core.withContext(function($ctx2) {
  31097. //>>excludeEnd("ctx");
  31098. return $recv(each)._superclass();
  31099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31100. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  31101. //>>excludeEnd("ctx");
  31102. }))
  31103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31104. ,$ctx1.sendIdx["collect:"]=1
  31105. //>>excludeEnd("ctx");
  31106. ][0])._asSet();
  31107. [$recv($1)._addAll_($recv($recv($globals.Smalltalk)._classes())._select_((function(each){
  31108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31109. return $core.withContext(function($ctx2) {
  31110. //>>excludeEnd("ctx");
  31111. return $recv($recv([each,$recv(each)._theMetaClass()])._copyWithout_(nil))._anySatisfy_((function(any){
  31112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31113. return $core.withContext(function($ctx3) {
  31114. //>>excludeEnd("ctx");
  31115. if($core.assert($recv($recv(any)._protocols())._includes_(starCategoryName))){
  31116. return $recv($recv(any)._ownMethodsInProtocol_(starCategoryName))._notEmpty();
  31117. } else {
  31118. return false;
  31119. }
  31120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31121. }, function($ctx3) {$ctx3.fillBlock({any:any},$ctx2,3)});
  31122. //>>excludeEnd("ctx");
  31123. }));
  31124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31125. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  31126. //>>excludeEnd("ctx");
  31127. })))
  31128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31129. ,$ctx1.sendIdx["addAll:"]=1
  31130. //>>excludeEnd("ctx");
  31131. ][0];
  31132. $recv($1)._addAll_($recv($globals.Array)._streamContents_((function(as){
  31133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31134. return $core.withContext(function($ctx2) {
  31135. //>>excludeEnd("ctx");
  31136. return $recv($self._traitCompositions())._valuesDo_((function(each){
  31137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31138. return $core.withContext(function($ctx3) {
  31139. //>>excludeEnd("ctx");
  31140. return $recv(as)._write_($recv(each)._collect_((function(eachTT){
  31141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31142. return $core.withContext(function($ctx4) {
  31143. //>>excludeEnd("ctx");
  31144. return $recv(eachTT)._trait();
  31145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31146. }, function($ctx4) {$ctx4.fillBlock({eachTT:eachTT},$ctx3,7)});
  31147. //>>excludeEnd("ctx");
  31148. })));
  31149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31150. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,6)});
  31151. //>>excludeEnd("ctx");
  31152. }));
  31153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31154. }, function($ctx2) {$ctx2.fillBlock({as:as},$ctx1,5)});
  31155. //>>excludeEnd("ctx");
  31156. })));
  31157. $recv($1)._remove_ifAbsent_(nil,(function(){
  31158. }));
  31159. return $recv($1)._yourself();
  31160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31161. }, function($ctx1) {$ctx1.fill(self,"loadDependencyClasses",{starCategoryName:starCategoryName})});
  31162. //>>excludeEnd("ctx");
  31163. }; }),
  31164. $globals.Package);
  31165. $core.addMethod(
  31166. $core.method({
  31167. selector: "name",
  31168. protocol: "accessing",
  31169. //>>excludeStart("ide", pragmas.excludeIdeData);
  31170. args: [],
  31171. source: "name\x0a\x09^ name",
  31172. referencedClasses: [],
  31173. //>>excludeEnd("ide");
  31174. pragmas: [],
  31175. messageSends: []
  31176. }, function ($methodClass){ return function (){
  31177. var self=this,$self=this;
  31178. return $self.name;
  31179. }; }),
  31180. $globals.Package);
  31181. $core.addMethod(
  31182. $core.method({
  31183. selector: "name:",
  31184. protocol: "accessing",
  31185. //>>excludeStart("ide", pragmas.excludeIdeData);
  31186. args: ["aString"],
  31187. source: "name: aString\x0a\x09name := aString",
  31188. referencedClasses: [],
  31189. //>>excludeEnd("ide");
  31190. pragmas: [],
  31191. messageSends: []
  31192. }, function ($methodClass){ return function (aString){
  31193. var self=this,$self=this;
  31194. $self.name=aString;
  31195. return self;
  31196. }; }),
  31197. $globals.Package);
  31198. $core.addMethod(
  31199. $core.method({
  31200. selector: "organization",
  31201. protocol: "accessing",
  31202. //>>excludeStart("ide", pragmas.excludeIdeData);
  31203. args: [],
  31204. source: "organization\x0a\x09^ organization",
  31205. referencedClasses: [],
  31206. //>>excludeEnd("ide");
  31207. pragmas: [],
  31208. messageSends: []
  31209. }, function ($methodClass){ return function (){
  31210. var self=this,$self=this;
  31211. return $self.organization;
  31212. }; }),
  31213. $globals.Package);
  31214. $core.addMethod(
  31215. $core.method({
  31216. selector: "printOn:",
  31217. protocol: "printing",
  31218. //>>excludeStart("ide", pragmas.excludeIdeData);
  31219. args: ["aStream"],
  31220. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream \x0a\x09\x09nextPutAll: ' (';\x0a\x09\x09nextPutAll: self name;\x0a\x09\x09nextPutAll: ')'",
  31221. referencedClasses: [],
  31222. //>>excludeEnd("ide");
  31223. pragmas: [],
  31224. messageSends: ["printOn:", "nextPutAll:", "name"]
  31225. }, function ($methodClass){ return function (aStream){
  31226. var self=this,$self=this;
  31227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31228. return $core.withContext(function($ctx1) {
  31229. //>>excludeEnd("ctx");
  31230. [(
  31231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31232. $ctx1.supercall = true,
  31233. //>>excludeEnd("ctx");
  31234. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  31235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31236. ,$ctx1.supercall = false
  31237. //>>excludeEnd("ctx");
  31238. ][0];
  31239. [$recv(aStream)._nextPutAll_(" (")
  31240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31241. ,$ctx1.sendIdx["nextPutAll:"]=1
  31242. //>>excludeEnd("ctx");
  31243. ][0];
  31244. [$recv(aStream)._nextPutAll_($self._name())
  31245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31246. ,$ctx1.sendIdx["nextPutAll:"]=2
  31247. //>>excludeEnd("ctx");
  31248. ][0];
  31249. $recv(aStream)._nextPutAll_(")");
  31250. return self;
  31251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31252. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  31253. //>>excludeEnd("ctx");
  31254. }; }),
  31255. $globals.Package);
  31256. $core.addMethod(
  31257. $core.method({
  31258. selector: "setupClasses",
  31259. protocol: "classes",
  31260. //>>excludeStart("ide", pragmas.excludeIdeData);
  31261. args: [],
  31262. source: "setupClasses\x0a\x09self classes do: [ :each | each initialize ]",
  31263. referencedClasses: [],
  31264. //>>excludeEnd("ide");
  31265. pragmas: [],
  31266. messageSends: ["do:", "classes", "initialize"]
  31267. }, function ($methodClass){ return function (){
  31268. var self=this,$self=this;
  31269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31270. return $core.withContext(function($ctx1) {
  31271. //>>excludeEnd("ctx");
  31272. $recv($self._classes())._do_((function(each){
  31273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31274. return $core.withContext(function($ctx2) {
  31275. //>>excludeEnd("ctx");
  31276. return $recv(each)._initialize();
  31277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31278. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  31279. //>>excludeEnd("ctx");
  31280. }));
  31281. return self;
  31282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31283. }, function($ctx1) {$ctx1.fill(self,"setupClasses",{})});
  31284. //>>excludeEnd("ctx");
  31285. }; }),
  31286. $globals.Package);
  31287. $core.addMethod(
  31288. $core.method({
  31289. selector: "sortedClasses",
  31290. protocol: "classes",
  31291. //>>excludeStart("ide", pragmas.excludeIdeData);
  31292. args: [],
  31293. source: "sortedClasses\x0a\x09\x22Answer all classes in the receiver, sorted by superclass/subclasses and by class name for common subclasses (Issue #143).\x22\x0a\x0a\x09^ self class sortedClasses: self classes",
  31294. referencedClasses: [],
  31295. //>>excludeEnd("ide");
  31296. pragmas: [],
  31297. messageSends: ["sortedClasses:", "class", "classes"]
  31298. }, function ($methodClass){ return function (){
  31299. var self=this,$self=this;
  31300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31301. return $core.withContext(function($ctx1) {
  31302. //>>excludeEnd("ctx");
  31303. return $recv($self._class())._sortedClasses_($self._classes());
  31304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31305. }, function($ctx1) {$ctx1.fill(self,"sortedClasses",{})});
  31306. //>>excludeEnd("ctx");
  31307. }; }),
  31308. $globals.Package);
  31309. $core.addMethod(
  31310. $core.method({
  31311. selector: "sortedImportsAsArray",
  31312. protocol: "private",
  31313. //>>excludeStart("ide", pragmas.excludeIdeData);
  31314. args: [],
  31315. source: "sortedImportsAsArray\x0a\x09\x22Answer imports sorted first by type (associations first),\x0a\x09then by value\x22\x0a\x0a\x09^ self imports asArray\x0a\x09\x09sorted: [ :a :b |\x0a\x09\x09\x09a isString not & b isString or: [\x0a\x09\x09\x09\x09a isString = b isString and: [\x0a\x09\x09\x09\x09\x09a value <= b value ]]]",
  31316. referencedClasses: [],
  31317. //>>excludeEnd("ide");
  31318. pragmas: [],
  31319. messageSends: ["sorted:", "asArray", "imports", "or:", "&", "not", "isString", "and:", "=", "<=", "value"]
  31320. }, function ($methodClass){ return function (){
  31321. var self=this,$self=this;
  31322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31323. return $core.withContext(function($ctx1) {
  31324. //>>excludeEnd("ctx");
  31325. return $recv($recv($self._imports())._asArray())._sorted_((function(a,b){
  31326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31327. return $core.withContext(function($ctx2) {
  31328. //>>excludeEnd("ctx");
  31329. if($core.assert($recv($recv([$recv(a)._isString()
  31330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31331. ,$ctx2.sendIdx["isString"]=1
  31332. //>>excludeEnd("ctx");
  31333. ][0])._not()).__and([$recv(b)._isString()
  31334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31335. ,$ctx2.sendIdx["isString"]=2
  31336. //>>excludeEnd("ctx");
  31337. ][0]))){
  31338. return true;
  31339. } else {
  31340. if($core.assert($recv([$recv(a)._isString()
  31341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31342. ,$ctx2.sendIdx["isString"]=3
  31343. //>>excludeEnd("ctx");
  31344. ][0]).__eq($recv(b)._isString()))){
  31345. return $recv([$recv(a)._value()
  31346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31347. ,$ctx2.sendIdx["value"]=1
  31348. //>>excludeEnd("ctx");
  31349. ][0]).__lt_eq($recv(b)._value());
  31350. } else {
  31351. return false;
  31352. }
  31353. }
  31354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31355. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  31356. //>>excludeEnd("ctx");
  31357. }));
  31358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31359. }, function($ctx1) {$ctx1.fill(self,"sortedImportsAsArray",{})});
  31360. //>>excludeEnd("ctx");
  31361. }; }),
  31362. $globals.Package);
  31363. $core.addMethod(
  31364. $core.method({
  31365. selector: "traitCompositions",
  31366. protocol: "dependencies",
  31367. //>>excludeStart("ide", pragmas.excludeIdeData);
  31368. args: [],
  31369. source: "traitCompositions\x0a\x09| traitCompositions |\x0a\x09traitCompositions := Dictionary new.\x0a\x09self classes do: [ :eachClass | eachClass includingPossibleMetaDo: [ :each |\x0a\x09\x09traitCompositions at: each put: each traitComposition ] ].\x0a\x09^ traitCompositions reject: [ :each | each isEmpty ]",
  31370. referencedClasses: ["Dictionary"],
  31371. //>>excludeEnd("ide");
  31372. pragmas: [],
  31373. messageSends: ["new", "do:", "classes", "includingPossibleMetaDo:", "at:put:", "traitComposition", "reject:", "isEmpty"]
  31374. }, function ($methodClass){ return function (){
  31375. var self=this,$self=this;
  31376. var traitCompositions;
  31377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31378. return $core.withContext(function($ctx1) {
  31379. //>>excludeEnd("ctx");
  31380. traitCompositions=$recv($globals.Dictionary)._new();
  31381. $recv($self._classes())._do_((function(eachClass){
  31382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31383. return $core.withContext(function($ctx2) {
  31384. //>>excludeEnd("ctx");
  31385. return $recv(eachClass)._includingPossibleMetaDo_((function(each){
  31386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31387. return $core.withContext(function($ctx3) {
  31388. //>>excludeEnd("ctx");
  31389. return $recv(traitCompositions)._at_put_(each,$recv(each)._traitComposition());
  31390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31391. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  31392. //>>excludeEnd("ctx");
  31393. }));
  31394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31395. }, function($ctx2) {$ctx2.fillBlock({eachClass:eachClass},$ctx1,1)});
  31396. //>>excludeEnd("ctx");
  31397. }));
  31398. return $recv(traitCompositions)._reject_((function(each){
  31399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31400. return $core.withContext(function($ctx2) {
  31401. //>>excludeEnd("ctx");
  31402. return $recv(each)._isEmpty();
  31403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31404. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  31405. //>>excludeEnd("ctx");
  31406. }));
  31407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31408. }, function($ctx1) {$ctx1.fill(self,"traitCompositions",{traitCompositions:traitCompositions})});
  31409. //>>excludeEnd("ctx");
  31410. }; }),
  31411. $globals.Package);
  31412. $core.addMethod(
  31413. $core.method({
  31414. selector: "transport",
  31415. protocol: "accessing",
  31416. //>>excludeStart("ide", pragmas.excludeIdeData);
  31417. args: [],
  31418. source: "transport\x0a\x09^ transport ifNil: [ \x0a\x09\x09self transport: (PackageTransport fromJson: self basicTransport).\x0a\x09\x09transport ]",
  31419. referencedClasses: ["PackageTransport"],
  31420. //>>excludeEnd("ide");
  31421. pragmas: [],
  31422. messageSends: ["ifNil:", "transport:", "fromJson:", "basicTransport"]
  31423. }, function ($methodClass){ return function (){
  31424. var self=this,$self=this;
  31425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31426. return $core.withContext(function($ctx1) {
  31427. //>>excludeEnd("ctx");
  31428. var $1;
  31429. $1=$self.transport;
  31430. if($1 == null || $1.a$nil){
  31431. $self._transport_($recv($globals.PackageTransport)._fromJson_($self._basicTransport()));
  31432. return $self.transport;
  31433. } else {
  31434. return $1;
  31435. }
  31436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31437. }, function($ctx1) {$ctx1.fill(self,"transport",{})});
  31438. //>>excludeEnd("ctx");
  31439. }; }),
  31440. $globals.Package);
  31441. $core.addMethod(
  31442. $core.method({
  31443. selector: "transport:",
  31444. protocol: "accessing",
  31445. //>>excludeStart("ide", pragmas.excludeIdeData);
  31446. args: ["aPackageTransport"],
  31447. source: "transport: aPackageTransport\x0a\x09transport := aPackageTransport.\x0a\x09aPackageTransport package: self",
  31448. referencedClasses: [],
  31449. //>>excludeEnd("ide");
  31450. pragmas: [],
  31451. messageSends: ["package:"]
  31452. }, function ($methodClass){ return function (aPackageTransport){
  31453. var self=this,$self=this;
  31454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31455. return $core.withContext(function($ctx1) {
  31456. //>>excludeEnd("ctx");
  31457. $self.transport=aPackageTransport;
  31458. $recv(aPackageTransport)._package_(self);
  31459. return self;
  31460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31461. }, function($ctx1) {$ctx1.fill(self,"transport:",{aPackageTransport:aPackageTransport})});
  31462. //>>excludeEnd("ctx");
  31463. }; }),
  31464. $globals.Package);
  31465. $core.addMethod(
  31466. $core.method({
  31467. selector: "validateImports:",
  31468. protocol: "validation",
  31469. //>>excludeStart("ide", pragmas.excludeIdeData);
  31470. args: ["aCollection"],
  31471. source: "validateImports: aCollection\x0a\x0a\x09aCollection do: [ :import |\x0a\x09\x09import isString ifFalse: [\x0a\x09\x09\x09(import respondsTo: #key) ifFalse: [\x0a\x09\x09\x09\x09self error: 'Imports must be Strings or Associations' ].\x0a\x09\x09\x09import key isString & import value isString ifFalse: [\x0a\x09\x09\x09\x09self error: 'Key and value must be Strings' ].\x0a\x09\x09\x09(import key match: '^[a-zA-Z][a-zA-Z0-9]*$') ifFalse: [\x0a\x09\x09\x09\x09self error: 'Keys must be identifiers' ]]]",
  31472. referencedClasses: [],
  31473. //>>excludeEnd("ide");
  31474. pragmas: [],
  31475. messageSends: ["do:", "ifFalse:", "isString", "respondsTo:", "error:", "&", "key", "value", "match:"]
  31476. }, function ($methodClass){ return function (aCollection){
  31477. var self=this,$self=this;
  31478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31479. return $core.withContext(function($ctx1) {
  31480. //>>excludeEnd("ctx");
  31481. $recv(aCollection)._do_((function(import_){
  31482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31483. return $core.withContext(function($ctx2) {
  31484. //>>excludeEnd("ctx");
  31485. if(!$core.assert([$recv(import_)._isString()
  31486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31487. ,$ctx2.sendIdx["isString"]=1
  31488. //>>excludeEnd("ctx");
  31489. ][0])){
  31490. if(!$core.assert($recv(import_)._respondsTo_("key"))){
  31491. [$self._error_("Imports must be Strings or Associations")
  31492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31493. ,$ctx2.sendIdx["error:"]=1
  31494. //>>excludeEnd("ctx");
  31495. ][0];
  31496. }
  31497. if(!$core.assert($recv([$recv([$recv(import_)._key()
  31498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31499. ,$ctx2.sendIdx["key"]=1
  31500. //>>excludeEnd("ctx");
  31501. ][0])._isString()
  31502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31503. ,$ctx2.sendIdx["isString"]=2
  31504. //>>excludeEnd("ctx");
  31505. ][0]).__and($recv($recv(import_)._value())._isString()))){
  31506. [$self._error_("Key and value must be Strings")
  31507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31508. ,$ctx2.sendIdx["error:"]=2
  31509. //>>excludeEnd("ctx");
  31510. ][0];
  31511. }
  31512. if(!$core.assert($recv($recv(import_)._key())._match_("^[a-zA-Z][a-zA-Z0-9]*$"))){
  31513. return $self._error_("Keys must be identifiers");
  31514. }
  31515. }
  31516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31517. }, function($ctx2) {$ctx2.fillBlock({import_:import_},$ctx1,1)});
  31518. //>>excludeEnd("ctx");
  31519. }));
  31520. return self;
  31521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31522. }, function($ctx1) {$ctx1.fill(self,"validateImports:",{aCollection:aCollection})});
  31523. //>>excludeEnd("ctx");
  31524. }; }),
  31525. $globals.Package);
  31526. $core.setSlots($globals.Package.a$cls, ["defaultCommitPathJs", "defaultCommitPathSt"]);
  31527. $core.addMethod(
  31528. $core.method({
  31529. selector: "named:",
  31530. protocol: "accessing",
  31531. //>>excludeStart("ide", pragmas.excludeIdeData);
  31532. args: ["aPackageName"],
  31533. source: "named: aPackageName\x0a\x09^ Smalltalk \x0a\x09\x09packageAt: aPackageName\x0a\x09\x09ifAbsent: [ \x0a\x09\x09\x09Smalltalk createPackage: aPackageName ]",
  31534. referencedClasses: ["Smalltalk"],
  31535. //>>excludeEnd("ide");
  31536. pragmas: [],
  31537. messageSends: ["packageAt:ifAbsent:", "createPackage:"]
  31538. }, function ($methodClass){ return function (aPackageName){
  31539. var self=this,$self=this;
  31540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31541. return $core.withContext(function($ctx1) {
  31542. //>>excludeEnd("ctx");
  31543. return $recv($globals.Smalltalk)._packageAt_ifAbsent_(aPackageName,(function(){
  31544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31545. return $core.withContext(function($ctx2) {
  31546. //>>excludeEnd("ctx");
  31547. return $recv($globals.Smalltalk)._createPackage_(aPackageName);
  31548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31549. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  31550. //>>excludeEnd("ctx");
  31551. }));
  31552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31553. }, function($ctx1) {$ctx1.fill(self,"named:",{aPackageName:aPackageName})});
  31554. //>>excludeEnd("ctx");
  31555. }; }),
  31556. $globals.Package.a$cls);
  31557. $core.addMethod(
  31558. $core.method({
  31559. selector: "named:ifAbsent:",
  31560. protocol: "accessing",
  31561. //>>excludeStart("ide", pragmas.excludeIdeData);
  31562. args: ["aPackageName", "aBlock"],
  31563. source: "named: aPackageName ifAbsent: aBlock\x0a\x09^ Smalltalk packageAt: aPackageName ifAbsent: aBlock",
  31564. referencedClasses: ["Smalltalk"],
  31565. //>>excludeEnd("ide");
  31566. pragmas: [],
  31567. messageSends: ["packageAt:ifAbsent:"]
  31568. }, function ($methodClass){ return function (aPackageName,aBlock){
  31569. var self=this,$self=this;
  31570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31571. return $core.withContext(function($ctx1) {
  31572. //>>excludeEnd("ctx");
  31573. return $recv($globals.Smalltalk)._packageAt_ifAbsent_(aPackageName,aBlock);
  31574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31575. }, function($ctx1) {$ctx1.fill(self,"named:ifAbsent:",{aPackageName:aPackageName,aBlock:aBlock})});
  31576. //>>excludeEnd("ctx");
  31577. }; }),
  31578. $globals.Package.a$cls);
  31579. $core.addMethod(
  31580. $core.method({
  31581. selector: "named:imports:transport:",
  31582. protocol: "accessing",
  31583. //>>excludeStart("ide", pragmas.excludeIdeData);
  31584. args: ["aPackageName", "anArray", "aTransport"],
  31585. source: "named: aPackageName imports: anArray transport: aTransport\x0a\x09| pkg |\x0a\x09\x0a\x09pkg := self named: aPackageName.\x0a\x09pkg\x0a\x09\x09imports: anArray;\x0a\x09\x09transport: aTransport;\x0a\x09\x09beDirty.\x0a\x09\x0a\x09^ pkg",
  31586. referencedClasses: [],
  31587. //>>excludeEnd("ide");
  31588. pragmas: [],
  31589. messageSends: ["named:", "imports:", "transport:", "beDirty"]
  31590. }, function ($methodClass){ return function (aPackageName,anArray,aTransport){
  31591. var self=this,$self=this;
  31592. var pkg;
  31593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31594. return $core.withContext(function($ctx1) {
  31595. //>>excludeEnd("ctx");
  31596. var $1;
  31597. pkg=$self._named_(aPackageName);
  31598. $1=pkg;
  31599. $recv($1)._imports_(anArray);
  31600. $recv($1)._transport_(aTransport);
  31601. $recv($1)._beDirty();
  31602. return pkg;
  31603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31604. }, function($ctx1) {$ctx1.fill(self,"named:imports:transport:",{aPackageName:aPackageName,anArray:anArray,aTransport:aTransport,pkg:pkg})});
  31605. //>>excludeEnd("ctx");
  31606. }; }),
  31607. $globals.Package.a$cls);
  31608. $core.addMethod(
  31609. $core.method({
  31610. selector: "named:javaScriptDescriptor:",
  31611. protocol: "instance creation",
  31612. //>>excludeStart("ide", pragmas.excludeIdeData);
  31613. args: ["aString", "anObject"],
  31614. source: "named: aString javaScriptDescriptor: anObject\x0a\x09| pkg |\x0a\x09\x0a\x09pkg := Smalltalk createPackage: aString.\x0a\x09pkg javaScriptDescriptor: anObject.\x0a\x09^ pkg",
  31615. referencedClasses: ["Smalltalk"],
  31616. //>>excludeEnd("ide");
  31617. pragmas: [],
  31618. messageSends: ["createPackage:", "javaScriptDescriptor:"]
  31619. }, function ($methodClass){ return function (aString,anObject){
  31620. var self=this,$self=this;
  31621. var pkg;
  31622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31623. return $core.withContext(function($ctx1) {
  31624. //>>excludeEnd("ctx");
  31625. pkg=$recv($globals.Smalltalk)._createPackage_(aString);
  31626. $recv(pkg)._javaScriptDescriptor_(anObject);
  31627. return pkg;
  31628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31629. }, function($ctx1) {$ctx1.fill(self,"named:javaScriptDescriptor:",{aString:aString,anObject:anObject,pkg:pkg})});
  31630. //>>excludeEnd("ctx");
  31631. }; }),
  31632. $globals.Package.a$cls);
  31633. $core.addMethod(
  31634. $core.method({
  31635. selector: "named:transport:",
  31636. protocol: "accessing",
  31637. //>>excludeStart("ide", pragmas.excludeIdeData);
  31638. args: ["aPackageName", "aTransport"],
  31639. source: "named: aPackageName transport: aTransport\x0a\x09| pkg |\x0a\x09\x0a\x09pkg := self named: aPackageName.\x0a\x09pkg transport: aTransport; beDirty.\x0a\x09\x0a\x09^ pkg",
  31640. referencedClasses: [],
  31641. //>>excludeEnd("ide");
  31642. pragmas: [],
  31643. messageSends: ["named:", "transport:", "beDirty"]
  31644. }, function ($methodClass){ return function (aPackageName,aTransport){
  31645. var self=this,$self=this;
  31646. var pkg;
  31647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31648. return $core.withContext(function($ctx1) {
  31649. //>>excludeEnd("ctx");
  31650. var $1;
  31651. pkg=$self._named_(aPackageName);
  31652. $1=pkg;
  31653. $recv($1)._transport_(aTransport);
  31654. $recv($1)._beDirty();
  31655. return pkg;
  31656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31657. }, function($ctx1) {$ctx1.fill(self,"named:transport:",{aPackageName:aPackageName,aTransport:aTransport,pkg:pkg})});
  31658. //>>excludeEnd("ctx");
  31659. }; }),
  31660. $globals.Package.a$cls);
  31661. $core.addMethod(
  31662. $core.method({
  31663. selector: "new:",
  31664. protocol: "instance creation",
  31665. //>>excludeStart("ide", pragmas.excludeIdeData);
  31666. args: ["aString"],
  31667. source: "new: aString\x0a\x09^ Package new\x0a\x09\x09name: aString;\x0a\x09\x09yourself",
  31668. referencedClasses: ["Package"],
  31669. //>>excludeEnd("ide");
  31670. pragmas: [],
  31671. messageSends: ["name:", "new", "yourself"]
  31672. }, function ($methodClass){ return function (aString){
  31673. var self=this,$self=this;
  31674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31675. return $core.withContext(function($ctx1) {
  31676. //>>excludeEnd("ctx");
  31677. var $1;
  31678. $1=$recv($globals.Package)._new();
  31679. $recv($1)._name_(aString);
  31680. return $recv($1)._yourself();
  31681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31682. }, function($ctx1) {$ctx1.fill(self,"new:",{aString:aString})});
  31683. //>>excludeEnd("ctx");
  31684. }; }),
  31685. $globals.Package.a$cls);
  31686. $core.addMethod(
  31687. $core.method({
  31688. selector: "sortedClasses:",
  31689. protocol: "sorting",
  31690. //>>excludeStart("ide", pragmas.excludeIdeData);
  31691. args: ["classes"],
  31692. source: "sortedClasses: classes\x0a\x09^ Array streamContents: [ :stream | stream << (ClassBuilder sortClasses: classes) ]",
  31693. referencedClasses: ["Array", "ClassBuilder"],
  31694. //>>excludeEnd("ide");
  31695. pragmas: [],
  31696. messageSends: ["streamContents:", "<<", "sortClasses:"]
  31697. }, function ($methodClass){ return function (classes){
  31698. var self=this,$self=this;
  31699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31700. return $core.withContext(function($ctx1) {
  31701. //>>excludeEnd("ctx");
  31702. return $recv($globals.Array)._streamContents_((function(stream){
  31703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31704. return $core.withContext(function($ctx2) {
  31705. //>>excludeEnd("ctx");
  31706. return $recv(stream).__lt_lt($recv($globals.ClassBuilder)._sortClasses_(classes));
  31707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31708. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  31709. //>>excludeEnd("ctx");
  31710. }));
  31711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31712. }, function($ctx1) {$ctx1.fill(self,"sortedClasses:",{classes:classes})});
  31713. //>>excludeEnd("ctx");
  31714. }; }),
  31715. $globals.Package.a$cls);
  31716. $core.addClass("PackageStateObserver", $globals.Object, "Kernel-Infrastructure");
  31717. //>>excludeStart("ide", pragmas.excludeIdeData);
  31718. $globals.PackageStateObserver.comment="My current instance listens for any changes in the system that might affect the state of a package (being dirty).";
  31719. //>>excludeEnd("ide");
  31720. $core.addMethod(
  31721. $core.method({
  31722. selector: "announcer",
  31723. protocol: "accessing",
  31724. //>>excludeStart("ide", pragmas.excludeIdeData);
  31725. args: [],
  31726. source: "announcer\x0a\x09^ SystemAnnouncer current",
  31727. referencedClasses: ["SystemAnnouncer"],
  31728. //>>excludeEnd("ide");
  31729. pragmas: [],
  31730. messageSends: ["current"]
  31731. }, function ($methodClass){ return function (){
  31732. var self=this,$self=this;
  31733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31734. return $core.withContext(function($ctx1) {
  31735. //>>excludeEnd("ctx");
  31736. return $recv($globals.SystemAnnouncer)._current();
  31737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31738. }, function($ctx1) {$ctx1.fill(self,"announcer",{})});
  31739. //>>excludeEnd("ctx");
  31740. }; }),
  31741. $globals.PackageStateObserver);
  31742. $core.addMethod(
  31743. $core.method({
  31744. selector: "observeSystem",
  31745. protocol: "actions",
  31746. //>>excludeStart("ide", pragmas.excludeIdeData);
  31747. args: [],
  31748. source: "observeSystem\x0a\x09self announcer\x0a\x09\x09on: PackageAdded\x0a\x09\x09send: #onPackageAdded:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: ClassAnnouncement\x0a\x09\x09send: #onClassModification:\x0a\x09\x09to: self;\x0a\x09\x09\x0a\x09\x09on: MethodAnnouncement\x0a\x09\x09send: #onMethodModification:\x0a\x09\x09to: self",
  31749. referencedClasses: ["PackageAdded", "ClassAnnouncement", "MethodAnnouncement"],
  31750. //>>excludeEnd("ide");
  31751. pragmas: [],
  31752. messageSends: ["on:send:to:", "announcer"]
  31753. }, function ($methodClass){ return function (){
  31754. var self=this,$self=this;
  31755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31756. return $core.withContext(function($ctx1) {
  31757. //>>excludeEnd("ctx");
  31758. var $1;
  31759. $1=$self._announcer();
  31760. [$recv($1)._on_send_to_($globals.PackageAdded,"onPackageAdded:",self)
  31761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31762. ,$ctx1.sendIdx["on:send:to:"]=1
  31763. //>>excludeEnd("ctx");
  31764. ][0];
  31765. [$recv($1)._on_send_to_($globals.ClassAnnouncement,"onClassModification:",self)
  31766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31767. ,$ctx1.sendIdx["on:send:to:"]=2
  31768. //>>excludeEnd("ctx");
  31769. ][0];
  31770. $recv($1)._on_send_to_($globals.MethodAnnouncement,"onMethodModification:",self);
  31771. return self;
  31772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31773. }, function($ctx1) {$ctx1.fill(self,"observeSystem",{})});
  31774. //>>excludeEnd("ctx");
  31775. }; }),
  31776. $globals.PackageStateObserver);
  31777. $core.addMethod(
  31778. $core.method({
  31779. selector: "onClassModification:",
  31780. protocol: "reactions",
  31781. //>>excludeStart("ide", pragmas.excludeIdeData);
  31782. args: ["anAnnouncement"],
  31783. source: "onClassModification: anAnnouncement\x0a\x09anAnnouncement theClass ifNotNil: [ :theClass | theClass package beDirty ]",
  31784. referencedClasses: [],
  31785. //>>excludeEnd("ide");
  31786. pragmas: [],
  31787. messageSends: ["ifNotNil:", "theClass", "beDirty", "package"]
  31788. }, function ($methodClass){ return function (anAnnouncement){
  31789. var self=this,$self=this;
  31790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31791. return $core.withContext(function($ctx1) {
  31792. //>>excludeEnd("ctx");
  31793. var $1;
  31794. $1=$recv(anAnnouncement)._theClass();
  31795. if($1 == null || $1.a$nil){
  31796. $1;
  31797. } else {
  31798. var theClass;
  31799. theClass=$1;
  31800. $recv($recv(theClass)._package())._beDirty();
  31801. }
  31802. return self;
  31803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31804. }, function($ctx1) {$ctx1.fill(self,"onClassModification:",{anAnnouncement:anAnnouncement})});
  31805. //>>excludeEnd("ctx");
  31806. }; }),
  31807. $globals.PackageStateObserver);
  31808. $core.addMethod(
  31809. $core.method({
  31810. selector: "onMethodModification:",
  31811. protocol: "reactions",
  31812. //>>excludeStart("ide", pragmas.excludeIdeData);
  31813. args: ["anAnnouncement"],
  31814. source: "onMethodModification: anAnnouncement\x0a\x09anAnnouncement method package ifNotNil: [ :package | package beDirty ]",
  31815. referencedClasses: [],
  31816. //>>excludeEnd("ide");
  31817. pragmas: [],
  31818. messageSends: ["ifNotNil:", "package", "method", "beDirty"]
  31819. }, function ($methodClass){ return function (anAnnouncement){
  31820. var self=this,$self=this;
  31821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31822. return $core.withContext(function($ctx1) {
  31823. //>>excludeEnd("ctx");
  31824. var $1;
  31825. $1=$recv($recv(anAnnouncement)._method())._package();
  31826. if($1 == null || $1.a$nil){
  31827. $1;
  31828. } else {
  31829. var package_;
  31830. package_=$1;
  31831. $recv(package_)._beDirty();
  31832. }
  31833. return self;
  31834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31835. }, function($ctx1) {$ctx1.fill(self,"onMethodModification:",{anAnnouncement:anAnnouncement})});
  31836. //>>excludeEnd("ctx");
  31837. }; }),
  31838. $globals.PackageStateObserver);
  31839. $core.addMethod(
  31840. $core.method({
  31841. selector: "onPackageAdded:",
  31842. protocol: "reactions",
  31843. //>>excludeStart("ide", pragmas.excludeIdeData);
  31844. args: ["anAnnouncement"],
  31845. source: "onPackageAdded: anAnnouncement\x0a\x09anAnnouncement package beDirty",
  31846. referencedClasses: [],
  31847. //>>excludeEnd("ide");
  31848. pragmas: [],
  31849. messageSends: ["beDirty", "package"]
  31850. }, function ($methodClass){ return function (anAnnouncement){
  31851. var self=this,$self=this;
  31852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31853. return $core.withContext(function($ctx1) {
  31854. //>>excludeEnd("ctx");
  31855. $recv($recv(anAnnouncement)._package())._beDirty();
  31856. return self;
  31857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31858. }, function($ctx1) {$ctx1.fill(self,"onPackageAdded:",{anAnnouncement:anAnnouncement})});
  31859. //>>excludeEnd("ctx");
  31860. }; }),
  31861. $globals.PackageStateObserver);
  31862. $core.setSlots($globals.PackageStateObserver.a$cls, ["current"]);
  31863. $core.addMethod(
  31864. $core.method({
  31865. selector: "current",
  31866. protocol: "accessing",
  31867. //>>excludeStart("ide", pragmas.excludeIdeData);
  31868. args: [],
  31869. source: "current\x0a\x09^ current ifNil: [ current := self new ]",
  31870. referencedClasses: [],
  31871. //>>excludeEnd("ide");
  31872. pragmas: [],
  31873. messageSends: ["ifNil:", "new"]
  31874. }, function ($methodClass){ return function (){
  31875. var self=this,$self=this;
  31876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31877. return $core.withContext(function($ctx1) {
  31878. //>>excludeEnd("ctx");
  31879. var $1;
  31880. $1=$self.current;
  31881. if($1 == null || $1.a$nil){
  31882. $self.current=$self._new();
  31883. return $self.current;
  31884. } else {
  31885. return $1;
  31886. }
  31887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31888. }, function($ctx1) {$ctx1.fill(self,"current",{})});
  31889. //>>excludeEnd("ctx");
  31890. }; }),
  31891. $globals.PackageStateObserver.a$cls);
  31892. $core.addMethod(
  31893. $core.method({
  31894. selector: "initialize",
  31895. protocol: "initialization",
  31896. //>>excludeStart("ide", pragmas.excludeIdeData);
  31897. args: [],
  31898. source: "initialize\x0a\x09self current observeSystem",
  31899. referencedClasses: [],
  31900. //>>excludeEnd("ide");
  31901. pragmas: [],
  31902. messageSends: ["observeSystem", "current"]
  31903. }, function ($methodClass){ return function (){
  31904. var self=this,$self=this;
  31905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31906. return $core.withContext(function($ctx1) {
  31907. //>>excludeEnd("ctx");
  31908. $recv($self._current())._observeSystem();
  31909. return self;
  31910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31911. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  31912. //>>excludeEnd("ctx");
  31913. }; }),
  31914. $globals.PackageStateObserver.a$cls);
  31915. $core.addClass("Setting", $globals.Object, "Kernel-Infrastructure");
  31916. $core.setSlots($globals.Setting, ["key", "defaultValue"]);
  31917. //>>excludeStart("ide", pragmas.excludeIdeData);
  31918. $globals.Setting.comment="I represent a setting **stored** at `Smalltalk settings`. \x0aIn the current implementation, `Smalltalk settings` is an object persisted in the localStorage.\x0a\x0a## API\x0a\x0aA `Setting` value can be read using `value` and set using `value:`.\x0a\x0aSettings are accessed with `'key' asSetting` or `'key' asSettingIfAbsent: aDefaultValue`.\x0a\x0aTo read the value of a setting you can also use the convenience:\x0a\x0a`theValueSet := 'any.characteristic' settingValue` \x0a\x0aor with a default using:\x0a\x0a `theEnsuredValueSet := 'any.characteristic' settingValueIfAbsent: true`";
  31919. //>>excludeEnd("ide");
  31920. $core.addMethod(
  31921. $core.method({
  31922. selector: "defaultValue",
  31923. protocol: "accessing",
  31924. //>>excludeStart("ide", pragmas.excludeIdeData);
  31925. args: [],
  31926. source: "defaultValue\x0a\x09^ defaultValue",
  31927. referencedClasses: [],
  31928. //>>excludeEnd("ide");
  31929. pragmas: [],
  31930. messageSends: []
  31931. }, function ($methodClass){ return function (){
  31932. var self=this,$self=this;
  31933. return $self.defaultValue;
  31934. }; }),
  31935. $globals.Setting);
  31936. $core.addMethod(
  31937. $core.method({
  31938. selector: "defaultValue:",
  31939. protocol: "accessing",
  31940. //>>excludeStart("ide", pragmas.excludeIdeData);
  31941. args: ["aStringifiableObject"],
  31942. source: "defaultValue: aStringifiableObject\x0a\x09defaultValue := aStringifiableObject",
  31943. referencedClasses: [],
  31944. //>>excludeEnd("ide");
  31945. pragmas: [],
  31946. messageSends: []
  31947. }, function ($methodClass){ return function (aStringifiableObject){
  31948. var self=this,$self=this;
  31949. $self.defaultValue=aStringifiableObject;
  31950. return self;
  31951. }; }),
  31952. $globals.Setting);
  31953. $core.addMethod(
  31954. $core.method({
  31955. selector: "key",
  31956. protocol: "accessing",
  31957. //>>excludeStart("ide", pragmas.excludeIdeData);
  31958. args: [],
  31959. source: "key\x0a\x09^ key",
  31960. referencedClasses: [],
  31961. //>>excludeEnd("ide");
  31962. pragmas: [],
  31963. messageSends: []
  31964. }, function ($methodClass){ return function (){
  31965. var self=this,$self=this;
  31966. return $self.key;
  31967. }; }),
  31968. $globals.Setting);
  31969. $core.addMethod(
  31970. $core.method({
  31971. selector: "key:",
  31972. protocol: "accessing",
  31973. //>>excludeStart("ide", pragmas.excludeIdeData);
  31974. args: ["aString"],
  31975. source: "key: aString\x0a\x09key := aString",
  31976. referencedClasses: [],
  31977. //>>excludeEnd("ide");
  31978. pragmas: [],
  31979. messageSends: []
  31980. }, function ($methodClass){ return function (aString){
  31981. var self=this,$self=this;
  31982. $self.key=aString;
  31983. return self;
  31984. }; }),
  31985. $globals.Setting);
  31986. $core.addMethod(
  31987. $core.method({
  31988. selector: "value",
  31989. protocol: "accessing",
  31990. //>>excludeStart("ide", pragmas.excludeIdeData);
  31991. args: [],
  31992. source: "value\x0a\x09^ Smalltalk settings at: self key ifAbsent: [ self defaultValue ]",
  31993. referencedClasses: ["Smalltalk"],
  31994. //>>excludeEnd("ide");
  31995. pragmas: [],
  31996. messageSends: ["at:ifAbsent:", "settings", "key", "defaultValue"]
  31997. }, function ($methodClass){ return function (){
  31998. var self=this,$self=this;
  31999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32000. return $core.withContext(function($ctx1) {
  32001. //>>excludeEnd("ctx");
  32002. return $recv($recv($globals.Smalltalk)._settings())._at_ifAbsent_($self._key(),(function(){
  32003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32004. return $core.withContext(function($ctx2) {
  32005. //>>excludeEnd("ctx");
  32006. return $self._defaultValue();
  32007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32008. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  32009. //>>excludeEnd("ctx");
  32010. }));
  32011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32012. }, function($ctx1) {$ctx1.fill(self,"value",{})});
  32013. //>>excludeEnd("ctx");
  32014. }; }),
  32015. $globals.Setting);
  32016. $core.addMethod(
  32017. $core.method({
  32018. selector: "value:",
  32019. protocol: "accessing",
  32020. //>>excludeStart("ide", pragmas.excludeIdeData);
  32021. args: ["aStringifiableObject"],
  32022. source: "value: aStringifiableObject\x0a\x09^ Smalltalk settings at: self key put: aStringifiableObject",
  32023. referencedClasses: ["Smalltalk"],
  32024. //>>excludeEnd("ide");
  32025. pragmas: [],
  32026. messageSends: ["at:put:", "settings", "key"]
  32027. }, function ($methodClass){ return function (aStringifiableObject){
  32028. var self=this,$self=this;
  32029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32030. return $core.withContext(function($ctx1) {
  32031. //>>excludeEnd("ctx");
  32032. return $recv($recv($globals.Smalltalk)._settings())._at_put_($self._key(),aStringifiableObject);
  32033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32034. }, function($ctx1) {$ctx1.fill(self,"value:",{aStringifiableObject:aStringifiableObject})});
  32035. //>>excludeEnd("ctx");
  32036. }; }),
  32037. $globals.Setting);
  32038. $core.addMethod(
  32039. $core.method({
  32040. selector: "at:ifAbsent:",
  32041. protocol: "instance creation",
  32042. //>>excludeStart("ide", pragmas.excludeIdeData);
  32043. args: ["aString", "aDefaultValue"],
  32044. source: "at: aString ifAbsent: aDefaultValue\x0a\x09\x0a\x09^ super new\x0a\x09\x09key: aString;\x0a\x09\x09defaultValue: aDefaultValue;\x0a\x09\x09yourself",
  32045. referencedClasses: [],
  32046. //>>excludeEnd("ide");
  32047. pragmas: [],
  32048. messageSends: ["key:", "new", "defaultValue:", "yourself"]
  32049. }, function ($methodClass){ return function (aString,aDefaultValue){
  32050. var self=this,$self=this;
  32051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32052. return $core.withContext(function($ctx1) {
  32053. //>>excludeEnd("ctx");
  32054. var $1;
  32055. $1=[(
  32056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32057. $ctx1.supercall = true,
  32058. //>>excludeEnd("ctx");
  32059. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
  32060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32061. ,$ctx1.supercall = false
  32062. //>>excludeEnd("ctx");
  32063. ][0];
  32064. $recv($1)._key_(aString);
  32065. $recv($1)._defaultValue_(aDefaultValue);
  32066. return $recv($1)._yourself();
  32067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32068. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aString:aString,aDefaultValue:aDefaultValue})});
  32069. //>>excludeEnd("ctx");
  32070. }; }),
  32071. $globals.Setting.a$cls);
  32072. $core.addMethod(
  32073. $core.method({
  32074. selector: "new",
  32075. protocol: "instance creation",
  32076. //>>excludeStart("ide", pragmas.excludeIdeData);
  32077. args: [],
  32078. source: "new\x0a\x09self shouldNotImplement",
  32079. referencedClasses: [],
  32080. //>>excludeEnd("ide");
  32081. pragmas: [],
  32082. messageSends: ["shouldNotImplement"]
  32083. }, function ($methodClass){ return function (){
  32084. var self=this,$self=this;
  32085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32086. return $core.withContext(function($ctx1) {
  32087. //>>excludeEnd("ctx");
  32088. $self._shouldNotImplement();
  32089. return self;
  32090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32091. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  32092. //>>excludeEnd("ctx");
  32093. }; }),
  32094. $globals.Setting.a$cls);
  32095. $core.addClass("SmalltalkImage", $globals.Object, "Kernel-Infrastructure");
  32096. $core.setSlots($globals.SmalltalkImage, ["globalJsVariables", "packageDictionary"]);
  32097. //>>excludeStart("ide", pragmas.excludeIdeData);
  32098. $globals.SmalltalkImage.comment="I represent the Smalltalk system, wrapping\x0aoperations of variable `$core` declared in `base/boot.js`.\x0a\x0a## API\x0a\x0aI have only one instance, accessed with global variable `Smalltalk`.\x0a\x0a## Classes\x0a\x0aClasses can be accessed using the following methods:\x0a\x0a- `#classes` answers the full list of Smalltalk classes in the system\x0a- `#globals #at:` answers a specific global (usually, a class) or `nil`\x0a\x0a## Packages\x0a\x0aPackages can be accessed using the following methods:\x0a\x0a- `#packages` answers the full list of packages\x0a- `#packageAt:` answers a specific package or `nil`\x0a\x0a## Parsing\x0a\x0aThe `#parse:` method is used to parse Amber source code.\x0aIt requires the `Compiler` package and the `base/parser.js` parser file in order to work.";
  32099. //>>excludeEnd("ide");
  32100. $core.addMethod(
  32101. $core.method({
  32102. selector: "addGlobalJsVariable:",
  32103. protocol: "globals",
  32104. //>>excludeStart("ide", pragmas.excludeIdeData);
  32105. args: ["aString"],
  32106. source: "addGlobalJsVariable: aString\x0a\x09self globalJsVariables add: aString",
  32107. referencedClasses: [],
  32108. //>>excludeEnd("ide");
  32109. pragmas: [],
  32110. messageSends: ["add:", "globalJsVariables"]
  32111. }, function ($methodClass){ return function (aString){
  32112. var self=this,$self=this;
  32113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32114. return $core.withContext(function($ctx1) {
  32115. //>>excludeEnd("ctx");
  32116. $recv($self._globalJsVariables())._add_(aString);
  32117. return self;
  32118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32119. }, function($ctx1) {$ctx1.fill(self,"addGlobalJsVariable:",{aString:aString})});
  32120. //>>excludeEnd("ctx");
  32121. }; }),
  32122. $globals.SmalltalkImage);
  32123. $core.addMethod(
  32124. $core.method({
  32125. selector: "adoptPackageDescriptors",
  32126. protocol: "private",
  32127. //>>excludeStart("ide", pragmas.excludeIdeData);
  32128. args: [],
  32129. source: "adoptPackageDescriptors\x0a\x09^ self tryAdoptPackageDescriptorsBeyond: Set new",
  32130. referencedClasses: ["Set"],
  32131. //>>excludeEnd("ide");
  32132. pragmas: [],
  32133. messageSends: ["tryAdoptPackageDescriptorsBeyond:", "new"]
  32134. }, function ($methodClass){ return function (){
  32135. var self=this,$self=this;
  32136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32137. return $core.withContext(function($ctx1) {
  32138. //>>excludeEnd("ctx");
  32139. return $self._tryAdoptPackageDescriptorsBeyond_($recv($globals.Set)._new());
  32140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32141. }, function($ctx1) {$ctx1.fill(self,"adoptPackageDescriptors",{})});
  32142. //>>excludeEnd("ctx");
  32143. }; }),
  32144. $globals.SmalltalkImage);
  32145. $core.addMethod(
  32146. $core.method({
  32147. selector: "amdRequire",
  32148. protocol: "accessing amd",
  32149. //>>excludeStart("ide", pragmas.excludeIdeData);
  32150. args: [],
  32151. source: "amdRequire\x0a\x09^ self core at: 'amdRequire'",
  32152. referencedClasses: [],
  32153. //>>excludeEnd("ide");
  32154. pragmas: [],
  32155. messageSends: ["at:", "core"]
  32156. }, function ($methodClass){ return function (){
  32157. var self=this,$self=this;
  32158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32159. return $core.withContext(function($ctx1) {
  32160. //>>excludeEnd("ctx");
  32161. return $recv($self._core())._at_("amdRequire");
  32162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32163. }, function($ctx1) {$ctx1.fill(self,"amdRequire",{})});
  32164. //>>excludeEnd("ctx");
  32165. }; }),
  32166. $globals.SmalltalkImage);
  32167. $core.addMethod(
  32168. $core.method({
  32169. selector: "asSmalltalkException:",
  32170. protocol: "error handling",
  32171. //>>excludeStart("ide", pragmas.excludeIdeData);
  32172. args: ["anObject"],
  32173. source: "asSmalltalkException: anObject\x0a\x09\x22A JavaScript exception may be thrown.\x0a\x09We then need to convert it back to a Smalltalk object\x22\x0a\x09\x0a\x09^ anObject\x0a\x09\x09ifNil: [ [ self error: 'Error: nil' ] on: Error do: [ :e | e ] ]\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09(self isError: anObject)\x0a\x09\x09\x09\x09ifTrue: [ anObject ]\x0a\x09\x09\x09\x09ifFalse: [ JavaScriptException on: anObject ] ]",
  32174. referencedClasses: ["Error", "JavaScriptException"],
  32175. //>>excludeEnd("ide");
  32176. pragmas: [],
  32177. messageSends: ["ifNil:ifNotNil:", "on:do:", "error:", "ifTrue:ifFalse:", "isError:", "on:"]
  32178. }, function ($methodClass){ return function (anObject){
  32179. var self=this,$self=this;
  32180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32181. return $core.withContext(function($ctx1) {
  32182. //>>excludeEnd("ctx");
  32183. if(anObject == null || anObject.a$nil){
  32184. return $recv((function(){
  32185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32186. return $core.withContext(function($ctx2) {
  32187. //>>excludeEnd("ctx");
  32188. return $self._error_("Error: nil");
  32189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32190. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  32191. //>>excludeEnd("ctx");
  32192. }))._on_do_($globals.Error,(function(e){
  32193. return e;
  32194. }));
  32195. } else {
  32196. if($core.assert($self._isError_(anObject))){
  32197. return anObject;
  32198. } else {
  32199. return $recv($globals.JavaScriptException)._on_(anObject);
  32200. }
  32201. }
  32202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32203. }, function($ctx1) {$ctx1.fill(self,"asSmalltalkException:",{anObject:anObject})});
  32204. //>>excludeEnd("ctx");
  32205. }; }),
  32206. $globals.SmalltalkImage);
  32207. $core.addMethod(
  32208. $core.method({
  32209. selector: "basicCreatePackage:",
  32210. protocol: "private",
  32211. //>>excludeStart("ide", pragmas.excludeIdeData);
  32212. args: ["packageName"],
  32213. source: "basicCreatePackage: packageName\x0a\x09\x22Create and bind a new bare package with given name and return it.\x22\x0a\x09^ self packageDictionary at: packageName ifAbsentPut: [ Package new: packageName ]",
  32214. referencedClasses: ["Package"],
  32215. //>>excludeEnd("ide");
  32216. pragmas: [],
  32217. messageSends: ["at:ifAbsentPut:", "packageDictionary", "new:"]
  32218. }, function ($methodClass){ return function (packageName){
  32219. var self=this,$self=this;
  32220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32221. return $core.withContext(function($ctx1) {
  32222. //>>excludeEnd("ctx");
  32223. return $recv($self._packageDictionary())._at_ifAbsentPut_(packageName,(function(){
  32224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32225. return $core.withContext(function($ctx2) {
  32226. //>>excludeEnd("ctx");
  32227. return $recv($globals.Package)._new_(packageName);
  32228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32229. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  32230. //>>excludeEnd("ctx");
  32231. }));
  32232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32233. }, function($ctx1) {$ctx1.fill(self,"basicCreatePackage:",{packageName:packageName})});
  32234. //>>excludeEnd("ctx");
  32235. }; }),
  32236. $globals.SmalltalkImage);
  32237. $core.addMethod(
  32238. $core.method({
  32239. selector: "beClean",
  32240. protocol: "packages",
  32241. //>>excludeStart("ide", pragmas.excludeIdeData);
  32242. args: [],
  32243. source: "beClean\x0a\x09\x22Marks all packages clean.\x22\x0a\x0a\x09self packages do: #beClean",
  32244. referencedClasses: [],
  32245. //>>excludeEnd("ide");
  32246. pragmas: [],
  32247. messageSends: ["do:", "packages"]
  32248. }, function ($methodClass){ return function (){
  32249. var self=this,$self=this;
  32250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32251. return $core.withContext(function($ctx1) {
  32252. //>>excludeEnd("ctx");
  32253. $recv($self._packages())._do_("beClean");
  32254. return self;
  32255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32256. }, function($ctx1) {$ctx1.fill(self,"beClean",{})});
  32257. //>>excludeEnd("ctx");
  32258. }; }),
  32259. $globals.SmalltalkImage);
  32260. $core.addMethod(
  32261. $core.method({
  32262. selector: "cancelOptOut:",
  32263. protocol: "accessing",
  32264. //>>excludeStart("ide", pragmas.excludeIdeData);
  32265. args: ["anObject"],
  32266. source: "cancelOptOut: anObject\x0a\x09\x22A Smalltalk object has a 'a$cls' property.\x0a\x09If this property is shadowed for anObject by optOut:,\x0a\x09the object is treated as plain JS object.\x0a\x09This removes the shadow and anObject is Smalltalk object\x0a\x09again if it was before.\x22\x0a\x09\x0a\x09<inlineJS: 'delete anObject.a$cls;'>",
  32267. referencedClasses: [],
  32268. //>>excludeEnd("ide");
  32269. pragmas: [["inlineJS:", ["delete anObject.a$cls;"]]],
  32270. messageSends: []
  32271. }, function ($methodClass){ return function (anObject){
  32272. var self=this,$self=this;
  32273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32274. return $core.withContext(function($ctx1) {
  32275. //>>excludeEnd("ctx");
  32276. delete anObject.a$cls;;
  32277. return self;
  32278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32279. }, function($ctx1) {$ctx1.fill(self,"cancelOptOut:",{anObject:anObject})});
  32280. //>>excludeEnd("ctx");
  32281. }; }),
  32282. $globals.SmalltalkImage);
  32283. $core.addMethod(
  32284. $core.method({
  32285. selector: "classes",
  32286. protocol: "classes",
  32287. //>>excludeStart("ide", pragmas.excludeIdeData);
  32288. args: [],
  32289. source: "classes\x0a\x09^ self core traitsOrClasses copy",
  32290. referencedClasses: [],
  32291. //>>excludeEnd("ide");
  32292. pragmas: [],
  32293. messageSends: ["copy", "traitsOrClasses", "core"]
  32294. }, function ($methodClass){ return function (){
  32295. var self=this,$self=this;
  32296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32297. return $core.withContext(function($ctx1) {
  32298. //>>excludeEnd("ctx");
  32299. return $recv($recv($self._core())._traitsOrClasses())._copy();
  32300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32301. }, function($ctx1) {$ctx1.fill(self,"classes",{})});
  32302. //>>excludeEnd("ctx");
  32303. }; }),
  32304. $globals.SmalltalkImage);
  32305. $core.addMethod(
  32306. $core.method({
  32307. selector: "core",
  32308. protocol: "accessing",
  32309. //>>excludeStart("ide", pragmas.excludeIdeData);
  32310. args: [],
  32311. source: "core\x0a\x09<inlineJS: 'return $core'>",
  32312. referencedClasses: [],
  32313. //>>excludeEnd("ide");
  32314. pragmas: [["inlineJS:", ["return $core"]]],
  32315. messageSends: []
  32316. }, function ($methodClass){ return function (){
  32317. var self=this,$self=this;
  32318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32319. return $core.withContext(function($ctx1) {
  32320. //>>excludeEnd("ctx");
  32321. return $core;
  32322. return self;
  32323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32324. }, function($ctx1) {$ctx1.fill(self,"core",{})});
  32325. //>>excludeEnd("ctx");
  32326. }; }),
  32327. $globals.SmalltalkImage);
  32328. $core.addMethod(
  32329. $core.method({
  32330. selector: "createPackage:",
  32331. protocol: "packages",
  32332. //>>excludeStart("ide", pragmas.excludeIdeData);
  32333. args: ["packageName"],
  32334. source: "createPackage: packageName\x0a\x09| package announcement |\x0a\x09\x0a\x09package := self basicCreatePackage: packageName.\x0a\x09\x0a\x09announcement := PackageAdded new\x0a\x09\x09package: package;\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09SystemAnnouncer current announce: announcement.\x0a\x09\x0a\x09^ package",
  32335. referencedClasses: ["PackageAdded", "SystemAnnouncer"],
  32336. //>>excludeEnd("ide");
  32337. pragmas: [],
  32338. messageSends: ["basicCreatePackage:", "package:", "new", "yourself", "announce:", "current"]
  32339. }, function ($methodClass){ return function (packageName){
  32340. var self=this,$self=this;
  32341. var package_,announcement;
  32342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32343. return $core.withContext(function($ctx1) {
  32344. //>>excludeEnd("ctx");
  32345. var $1;
  32346. package_=$self._basicCreatePackage_(packageName);
  32347. $1=$recv($globals.PackageAdded)._new();
  32348. $recv($1)._package_(package_);
  32349. announcement=$recv($1)._yourself();
  32350. $recv($recv($globals.SystemAnnouncer)._current())._announce_(announcement);
  32351. return package_;
  32352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32353. }, function($ctx1) {$ctx1.fill(self,"createPackage:",{packageName:packageName,package_:package_,announcement:announcement})});
  32354. //>>excludeEnd("ctx");
  32355. }; }),
  32356. $globals.SmalltalkImage);
  32357. $core.addMethod(
  32358. $core.method({
  32359. selector: "defaultAmdNamespace",
  32360. protocol: "accessing amd",
  32361. //>>excludeStart("ide", pragmas.excludeIdeData);
  32362. args: [],
  32363. source: "defaultAmdNamespace\x0a\x09^ 'transport.defaultAmdNamespace' settingValue",
  32364. referencedClasses: [],
  32365. //>>excludeEnd("ide");
  32366. pragmas: [],
  32367. messageSends: ["settingValue"]
  32368. }, function ($methodClass){ return function (){
  32369. var self=this,$self=this;
  32370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32371. return $core.withContext(function($ctx1) {
  32372. //>>excludeEnd("ctx");
  32373. return "transport.defaultAmdNamespace"._settingValue();
  32374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32375. }, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace",{})});
  32376. //>>excludeEnd("ctx");
  32377. }; }),
  32378. $globals.SmalltalkImage);
  32379. $core.addMethod(
  32380. $core.method({
  32381. selector: "defaultAmdNamespace:",
  32382. protocol: "accessing amd",
  32383. //>>excludeStart("ide", pragmas.excludeIdeData);
  32384. args: ["aString"],
  32385. source: "defaultAmdNamespace: aString\x0a\x09'transport.defaultAmdNamespace' settingValue: aString",
  32386. referencedClasses: [],
  32387. //>>excludeEnd("ide");
  32388. pragmas: [],
  32389. messageSends: ["settingValue:"]
  32390. }, function ($methodClass){ return function (aString){
  32391. var self=this,$self=this;
  32392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32393. return $core.withContext(function($ctx1) {
  32394. //>>excludeEnd("ctx");
  32395. "transport.defaultAmdNamespace"._settingValue_(aString);
  32396. return self;
  32397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32398. }, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace:",{aString:aString})});
  32399. //>>excludeEnd("ctx");
  32400. }; }),
  32401. $globals.SmalltalkImage);
  32402. $core.addMethod(
  32403. $core.method({
  32404. selector: "deleteClass:",
  32405. protocol: "private",
  32406. //>>excludeStart("ide", pragmas.excludeIdeData);
  32407. args: ["aClass"],
  32408. source: "deleteClass: aClass\x0a\x09\x22Deletes a class by deleting its binding only. Use #removeClass instead\x22\x0a\x09\x0a\x09<inlineJS: '$core.removeClass(aClass)'>",
  32409. referencedClasses: [],
  32410. //>>excludeEnd("ide");
  32411. pragmas: [["inlineJS:", ["$core.removeClass(aClass)"]]],
  32412. messageSends: []
  32413. }, function ($methodClass){ return function (aClass){
  32414. var self=this,$self=this;
  32415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32416. return $core.withContext(function($ctx1) {
  32417. //>>excludeEnd("ctx");
  32418. $core.removeClass(aClass);
  32419. return self;
  32420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32421. }, function($ctx1) {$ctx1.fill(self,"deleteClass:",{aClass:aClass})});
  32422. //>>excludeEnd("ctx");
  32423. }; }),
  32424. $globals.SmalltalkImage);
  32425. $core.addMethod(
  32426. $core.method({
  32427. selector: "deleteGlobalJsVariable:",
  32428. protocol: "globals",
  32429. //>>excludeStart("ide", pragmas.excludeIdeData);
  32430. args: ["aString"],
  32431. source: "deleteGlobalJsVariable: aString\x0a\x09self globalJsVariables remove: aString ifAbsent:[]",
  32432. referencedClasses: [],
  32433. //>>excludeEnd("ide");
  32434. pragmas: [],
  32435. messageSends: ["remove:ifAbsent:", "globalJsVariables"]
  32436. }, function ($methodClass){ return function (aString){
  32437. var self=this,$self=this;
  32438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32439. return $core.withContext(function($ctx1) {
  32440. //>>excludeEnd("ctx");
  32441. $recv($self._globalJsVariables())._remove_ifAbsent_(aString,(function(){
  32442. }));
  32443. return self;
  32444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32445. }, function($ctx1) {$ctx1.fill(self,"deleteGlobalJsVariable:",{aString:aString})});
  32446. //>>excludeEnd("ctx");
  32447. }; }),
  32448. $globals.SmalltalkImage);
  32449. $core.addMethod(
  32450. $core.method({
  32451. selector: "existsJsGlobal:",
  32452. protocol: "testing",
  32453. //>>excludeStart("ide", pragmas.excludeIdeData);
  32454. args: ["aString"],
  32455. source: "existsJsGlobal: aString\x0a\x09self deprecatedAPI: 'Use Platform >> includesGlobal: instead'.\x0a\x09^ Platform includesGlobal: aString",
  32456. referencedClasses: ["Platform"],
  32457. //>>excludeEnd("ide");
  32458. pragmas: [],
  32459. messageSends: ["deprecatedAPI:", "includesGlobal:"]
  32460. }, function ($methodClass){ return function (aString){
  32461. var self=this,$self=this;
  32462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32463. return $core.withContext(function($ctx1) {
  32464. //>>excludeEnd("ctx");
  32465. $self._deprecatedAPI_("Use Platform >> includesGlobal: instead");
  32466. return $recv($globals.Platform)._includesGlobal_(aString);
  32467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32468. }, function($ctx1) {$ctx1.fill(self,"existsJsGlobal:",{aString:aString})});
  32469. //>>excludeEnd("ctx");
  32470. }; }),
  32471. $globals.SmalltalkImage);
  32472. $core.addMethod(
  32473. $core.method({
  32474. selector: "globalJsVariables",
  32475. protocol: "globals",
  32476. //>>excludeStart("ide", pragmas.excludeIdeData);
  32477. args: [],
  32478. source: "globalJsVariables\x0a\x09^ globalJsVariables ifNil: [\x0a\x09\x09globalJsVariables := #(window document process global) ]",
  32479. referencedClasses: [],
  32480. //>>excludeEnd("ide");
  32481. pragmas: [],
  32482. messageSends: ["ifNil:"]
  32483. }, function ($methodClass){ return function (){
  32484. var self=this,$self=this;
  32485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32486. return $core.withContext(function($ctx1) {
  32487. //>>excludeEnd("ctx");
  32488. var $1;
  32489. $1=$self.globalJsVariables;
  32490. if($1 == null || $1.a$nil){
  32491. $self.globalJsVariables=["window", "document", "process", "global"];
  32492. return $self.globalJsVariables;
  32493. } else {
  32494. return $1;
  32495. }
  32496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32497. }, function($ctx1) {$ctx1.fill(self,"globalJsVariables",{})});
  32498. //>>excludeEnd("ctx");
  32499. }; }),
  32500. $globals.SmalltalkImage);
  32501. $core.addMethod(
  32502. $core.method({
  32503. selector: "globals",
  32504. protocol: "accessing",
  32505. //>>excludeStart("ide", pragmas.excludeIdeData);
  32506. args: [],
  32507. source: "globals\x0a\x09<inlineJS: 'return $globals'>",
  32508. referencedClasses: [],
  32509. //>>excludeEnd("ide");
  32510. pragmas: [["inlineJS:", ["return $globals"]]],
  32511. messageSends: []
  32512. }, function ($methodClass){ return function (){
  32513. var self=this,$self=this;
  32514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32515. return $core.withContext(function($ctx1) {
  32516. //>>excludeEnd("ctx");
  32517. return $globals;
  32518. return self;
  32519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32520. }, function($ctx1) {$ctx1.fill(self,"globals",{})});
  32521. //>>excludeEnd("ctx");
  32522. }; }),
  32523. $globals.SmalltalkImage);
  32524. $core.addMethod(
  32525. $core.method({
  32526. selector: "isError:",
  32527. protocol: "testing",
  32528. //>>excludeStart("ide", pragmas.excludeIdeData);
  32529. args: ["anObject"],
  32530. source: "isError: anObject\x0a\x09^ (self isSmalltalkObject: anObject) and: [ anObject isError ]",
  32531. referencedClasses: [],
  32532. //>>excludeEnd("ide");
  32533. pragmas: [],
  32534. messageSends: ["and:", "isSmalltalkObject:", "isError"]
  32535. }, function ($methodClass){ return function (anObject){
  32536. var self=this,$self=this;
  32537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32538. return $core.withContext(function($ctx1) {
  32539. //>>excludeEnd("ctx");
  32540. if($core.assert($self._isSmalltalkObject_(anObject))){
  32541. return $recv(anObject)._isError();
  32542. } else {
  32543. return false;
  32544. }
  32545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32546. }, function($ctx1) {$ctx1.fill(self,"isError:",{anObject:anObject})});
  32547. //>>excludeEnd("ctx");
  32548. }; }),
  32549. $globals.SmalltalkImage);
  32550. $core.addMethod(
  32551. $core.method({
  32552. selector: "isSmalltalkObject:",
  32553. protocol: "testing",
  32554. //>>excludeStart("ide", pragmas.excludeIdeData);
  32555. args: ["anObject"],
  32556. source: "isSmalltalkObject: anObject\x0a\x09\x22Consider anObject a Smalltalk object if it has a 'a$cls' property.\x0a\x09Note that this may be unaccurate\x22\x0a\x09\x0a\x09<inlineJS: 'return anObject.a$cls != null'>",
  32557. referencedClasses: [],
  32558. //>>excludeEnd("ide");
  32559. pragmas: [["inlineJS:", ["return anObject.a$cls != null"]]],
  32560. messageSends: []
  32561. }, function ($methodClass){ return function (anObject){
  32562. var self=this,$self=this;
  32563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32564. return $core.withContext(function($ctx1) {
  32565. //>>excludeEnd("ctx");
  32566. return anObject.a$cls != null;
  32567. return self;
  32568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32569. }, function($ctx1) {$ctx1.fill(self,"isSmalltalkObject:",{anObject:anObject})});
  32570. //>>excludeEnd("ctx");
  32571. }; }),
  32572. $globals.SmalltalkImage);
  32573. $core.addMethod(
  32574. $core.method({
  32575. selector: "optOut:",
  32576. protocol: "accessing",
  32577. //>>excludeStart("ide", pragmas.excludeIdeData);
  32578. args: ["anObject"],
  32579. source: "optOut: anObject\x0a\x09\x22A Smalltalk object has a 'a$cls' property.\x0a\x09This shadows the property for anObject.\x0a\x09The object is treated as plain JS object following this.\x22\x0a\x09\x0a\x09<inlineJS: 'anObject.a$cls = null'>",
  32580. referencedClasses: [],
  32581. //>>excludeEnd("ide");
  32582. pragmas: [["inlineJS:", ["anObject.a$cls = null"]]],
  32583. messageSends: []
  32584. }, function ($methodClass){ return function (anObject){
  32585. var self=this,$self=this;
  32586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32587. return $core.withContext(function($ctx1) {
  32588. //>>excludeEnd("ctx");
  32589. anObject.a$cls = null;
  32590. return self;
  32591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32592. }, function($ctx1) {$ctx1.fill(self,"optOut:",{anObject:anObject})});
  32593. //>>excludeEnd("ctx");
  32594. }; }),
  32595. $globals.SmalltalkImage);
  32596. $core.addMethod(
  32597. $core.method({
  32598. selector: "packageAt:ifAbsent:",
  32599. protocol: "packages",
  32600. //>>excludeStart("ide", pragmas.excludeIdeData);
  32601. args: ["packageName", "aBlock"],
  32602. source: "packageAt: packageName ifAbsent: aBlock\x0a\x09^ self packageDictionary at: packageName ifAbsent: aBlock",
  32603. referencedClasses: [],
  32604. //>>excludeEnd("ide");
  32605. pragmas: [],
  32606. messageSends: ["at:ifAbsent:", "packageDictionary"]
  32607. }, function ($methodClass){ return function (packageName,aBlock){
  32608. var self=this,$self=this;
  32609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32610. return $core.withContext(function($ctx1) {
  32611. //>>excludeEnd("ctx");
  32612. return $recv($self._packageDictionary())._at_ifAbsent_(packageName,aBlock);
  32613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32614. }, function($ctx1) {$ctx1.fill(self,"packageAt:ifAbsent:",{packageName:packageName,aBlock:aBlock})});
  32615. //>>excludeEnd("ctx");
  32616. }; }),
  32617. $globals.SmalltalkImage);
  32618. $core.addMethod(
  32619. $core.method({
  32620. selector: "packageAt:ifPresent:",
  32621. protocol: "packages",
  32622. //>>excludeStart("ide", pragmas.excludeIdeData);
  32623. args: ["packageName", "aBlock"],
  32624. source: "packageAt: packageName ifPresent: aBlock\x0a\x09^ self packageDictionary at: packageName ifPresent: aBlock",
  32625. referencedClasses: [],
  32626. //>>excludeEnd("ide");
  32627. pragmas: [],
  32628. messageSends: ["at:ifPresent:", "packageDictionary"]
  32629. }, function ($methodClass){ return function (packageName,aBlock){
  32630. var self=this,$self=this;
  32631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32632. return $core.withContext(function($ctx1) {
  32633. //>>excludeEnd("ctx");
  32634. return $recv($self._packageDictionary())._at_ifPresent_(packageName,aBlock);
  32635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32636. }, function($ctx1) {$ctx1.fill(self,"packageAt:ifPresent:",{packageName:packageName,aBlock:aBlock})});
  32637. //>>excludeEnd("ctx");
  32638. }; }),
  32639. $globals.SmalltalkImage);
  32640. $core.addMethod(
  32641. $core.method({
  32642. selector: "packageDictionary",
  32643. protocol: "packages",
  32644. //>>excludeStart("ide", pragmas.excludeIdeData);
  32645. args: [],
  32646. source: "packageDictionary\x0a\x09^ packageDictionary ifNil: [ packageDictionary := Dictionary new ]",
  32647. referencedClasses: ["Dictionary"],
  32648. //>>excludeEnd("ide");
  32649. pragmas: [],
  32650. messageSends: ["ifNil:", "new"]
  32651. }, function ($methodClass){ return function (){
  32652. var self=this,$self=this;
  32653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32654. return $core.withContext(function($ctx1) {
  32655. //>>excludeEnd("ctx");
  32656. var $1;
  32657. $1=$self.packageDictionary;
  32658. if($1 == null || $1.a$nil){
  32659. $self.packageDictionary=$recv($globals.Dictionary)._new();
  32660. return $self.packageDictionary;
  32661. } else {
  32662. return $1;
  32663. }
  32664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32665. }, function($ctx1) {$ctx1.fill(self,"packageDictionary",{})});
  32666. //>>excludeEnd("ctx");
  32667. }; }),
  32668. $globals.SmalltalkImage);
  32669. $core.addMethod(
  32670. $core.method({
  32671. selector: "packages",
  32672. protocol: "packages",
  32673. //>>excludeStart("ide", pragmas.excludeIdeData);
  32674. args: [],
  32675. source: "packages\x0a\x09\x22Return all Package instances in the system.\x22\x0a\x0a\x09^ self packageDictionary values copy",
  32676. referencedClasses: [],
  32677. //>>excludeEnd("ide");
  32678. pragmas: [],
  32679. messageSends: ["copy", "values", "packageDictionary"]
  32680. }, function ($methodClass){ return function (){
  32681. var self=this,$self=this;
  32682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32683. return $core.withContext(function($ctx1) {
  32684. //>>excludeEnd("ctx");
  32685. return $recv($recv($self._packageDictionary())._values())._copy();
  32686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32687. }, function($ctx1) {$ctx1.fill(self,"packages",{})});
  32688. //>>excludeEnd("ctx");
  32689. }; }),
  32690. $globals.SmalltalkImage);
  32691. $core.addMethod(
  32692. $core.method({
  32693. selector: "parse:",
  32694. protocol: "accessing",
  32695. //>>excludeStart("ide", pragmas.excludeIdeData);
  32696. args: ["aString"],
  32697. source: "parse: aString\x0a\x09^ Compiler new parse: aString",
  32698. referencedClasses: ["Compiler"],
  32699. //>>excludeEnd("ide");
  32700. pragmas: [],
  32701. messageSends: ["parse:", "new"]
  32702. }, function ($methodClass){ return function (aString){
  32703. var self=this,$self=this;
  32704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32705. return $core.withContext(function($ctx1) {
  32706. //>>excludeEnd("ctx");
  32707. return $recv($recv($globals.Compiler)._new())._parse_(aString);
  32708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32709. }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString})});
  32710. //>>excludeEnd("ctx");
  32711. }; }),
  32712. $globals.SmalltalkImage);
  32713. $core.addMethod(
  32714. $core.method({
  32715. selector: "postFailedLoad:",
  32716. protocol: "image",
  32717. //>>excludeStart("ide", pragmas.excludeIdeData);
  32718. args: ["aPackage"],
  32719. source: "postFailedLoad: aPackage\x0a\x09| keys descriptors |\x0a\x09Smalltalk removePackage: aPackage name.\x0a\x09keys := Set new.\x0a\x09descriptors := self core packageDescriptors.\x0a\x09descriptors keysAndValuesDo: [ :key :value | keys add: key ].\x0a\x09keys do: [ :each |\x0a\x09\x09Smalltalk removePackage: each.\x0a\x09\x09descriptors removeKey: each ]",
  32720. referencedClasses: ["Smalltalk", "Set"],
  32721. //>>excludeEnd("ide");
  32722. pragmas: [],
  32723. messageSends: ["removePackage:", "name", "new", "packageDescriptors", "core", "keysAndValuesDo:", "add:", "do:", "removeKey:"]
  32724. }, function ($methodClass){ return function (aPackage){
  32725. var self=this,$self=this;
  32726. var keys,descriptors;
  32727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32728. return $core.withContext(function($ctx1) {
  32729. //>>excludeEnd("ctx");
  32730. [$recv($globals.Smalltalk)._removePackage_($recv(aPackage)._name())
  32731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32732. ,$ctx1.sendIdx["removePackage:"]=1
  32733. //>>excludeEnd("ctx");
  32734. ][0];
  32735. keys=$recv($globals.Set)._new();
  32736. descriptors=$recv($self._core())._packageDescriptors();
  32737. $recv(descriptors)._keysAndValuesDo_((function(key,value){
  32738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32739. return $core.withContext(function($ctx2) {
  32740. //>>excludeEnd("ctx");
  32741. return $recv(keys)._add_(key);
  32742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32743. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  32744. //>>excludeEnd("ctx");
  32745. }));
  32746. $recv(keys)._do_((function(each){
  32747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32748. return $core.withContext(function($ctx2) {
  32749. //>>excludeEnd("ctx");
  32750. $recv($globals.Smalltalk)._removePackage_(each);
  32751. return $recv(descriptors)._removeKey_(each);
  32752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32753. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  32754. //>>excludeEnd("ctx");
  32755. }));
  32756. return self;
  32757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32758. }, function($ctx1) {$ctx1.fill(self,"postFailedLoad:",{aPackage:aPackage,keys:keys,descriptors:descriptors})});
  32759. //>>excludeEnd("ctx");
  32760. }; }),
  32761. $globals.SmalltalkImage);
  32762. $core.addMethod(
  32763. $core.method({
  32764. selector: "postLoad",
  32765. protocol: "image",
  32766. //>>excludeStart("ide", pragmas.excludeIdeData);
  32767. args: [],
  32768. source: "postLoad\x0a\x09^ self adoptPackageDescriptors then: [ :pkgs |\x0a\x09\x09| classes |\x0a\x09\x09pkgs do: #beClean.\x0a\x09\x09classes := Smalltalk classes select:\x0a\x09\x09\x09[ :each | pkgs includes: each package ].\x0a\x09\x09classes do: [ :each |\x0a\x09\x09\x09each = self class ifFalse: [ each initialize ] ].\x0a\x09\x09self sweepPackageDescriptors: pkgs ]",
  32769. referencedClasses: ["Smalltalk"],
  32770. //>>excludeEnd("ide");
  32771. pragmas: [],
  32772. messageSends: ["then:", "adoptPackageDescriptors", "do:", "select:", "classes", "includes:", "package", "ifFalse:", "=", "class", "initialize", "sweepPackageDescriptors:"]
  32773. }, function ($methodClass){ return function (){
  32774. var self=this,$self=this;
  32775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32776. return $core.withContext(function($ctx1) {
  32777. //>>excludeEnd("ctx");
  32778. return $recv($self._adoptPackageDescriptors())._then_((function(pkgs){
  32779. var classes;
  32780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32781. return $core.withContext(function($ctx2) {
  32782. //>>excludeEnd("ctx");
  32783. [$recv(pkgs)._do_("beClean")
  32784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32785. ,$ctx2.sendIdx["do:"]=1
  32786. //>>excludeEnd("ctx");
  32787. ][0];
  32788. classes=$recv($recv($globals.Smalltalk)._classes())._select_((function(each){
  32789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32790. return $core.withContext(function($ctx3) {
  32791. //>>excludeEnd("ctx");
  32792. return $recv(pkgs)._includes_($recv(each)._package());
  32793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32794. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  32795. //>>excludeEnd("ctx");
  32796. }));
  32797. $recv(classes)._do_((function(each){
  32798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32799. return $core.withContext(function($ctx3) {
  32800. //>>excludeEnd("ctx");
  32801. if(!$core.assert($recv(each).__eq($self._class()))){
  32802. return $recv(each)._initialize();
  32803. }
  32804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32805. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
  32806. //>>excludeEnd("ctx");
  32807. }));
  32808. return $self._sweepPackageDescriptors_(pkgs);
  32809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32810. }, function($ctx2) {$ctx2.fillBlock({pkgs:pkgs,classes:classes},$ctx1,1)});
  32811. //>>excludeEnd("ctx");
  32812. }));
  32813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32814. }, function($ctx1) {$ctx1.fill(self,"postLoad",{})});
  32815. //>>excludeEnd("ctx");
  32816. }; }),
  32817. $globals.SmalltalkImage);
  32818. $core.addMethod(
  32819. $core.method({
  32820. selector: "pseudoVariableNames",
  32821. protocol: "accessing",
  32822. //>>excludeStart("ide", pragmas.excludeIdeData);
  32823. args: [],
  32824. source: "pseudoVariableNames\x0a\x09^ Compiler pseudoVariableNames",
  32825. referencedClasses: ["Compiler"],
  32826. //>>excludeEnd("ide");
  32827. pragmas: [],
  32828. messageSends: ["pseudoVariableNames"]
  32829. }, function ($methodClass){ return function (){
  32830. var self=this,$self=this;
  32831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32832. return $core.withContext(function($ctx1) {
  32833. //>>excludeEnd("ctx");
  32834. return $recv($globals.Compiler)._pseudoVariableNames();
  32835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32836. }, function($ctx1) {$ctx1.fill(self,"pseudoVariableNames",{})});
  32837. //>>excludeEnd("ctx");
  32838. }; }),
  32839. $globals.SmalltalkImage);
  32840. $core.addMethod(
  32841. $core.method({
  32842. selector: "readJSObject:",
  32843. protocol: "accessing",
  32844. //>>excludeStart("ide", pragmas.excludeIdeData);
  32845. args: ["anObject"],
  32846. source: "readJSObject: anObject\x0a\x09<inlineJS: 'return $core.readJSObject(anObject)'>",
  32847. referencedClasses: [],
  32848. //>>excludeEnd("ide");
  32849. pragmas: [["inlineJS:", ["return $core.readJSObject(anObject)"]]],
  32850. messageSends: []
  32851. }, function ($methodClass){ return function (anObject){
  32852. var self=this,$self=this;
  32853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32854. return $core.withContext(function($ctx1) {
  32855. //>>excludeEnd("ctx");
  32856. return $core.readJSObject(anObject);
  32857. return self;
  32858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32859. }, function($ctx1) {$ctx1.fill(self,"readJSObject:",{anObject:anObject})});
  32860. //>>excludeEnd("ctx");
  32861. }; }),
  32862. $globals.SmalltalkImage);
  32863. $core.addMethod(
  32864. $core.method({
  32865. selector: "removeClass:",
  32866. protocol: "classes",
  32867. //>>excludeStart("ide", pragmas.excludeIdeData);
  32868. args: ["aClass"],
  32869. source: "removeClass: aClass\x0a\x09aClass isMetaclass ifTrue: [ self error: aClass asString, ' is a Metaclass and cannot be removed!' ].\x0a\x09aClass allSubclassesDo: [ :subclass | self error: aClass name, ' has a subclass: ', subclass name ].\x0a\x09aClass traitUsers ifNotEmpty: [ self error: aClass name, ' has trait users.' ].\x0a\x09\x0a\x09self deleteClass: aClass.\x0a\x09aClass includingPossibleMetaDo: [ :each | each setTraitComposition: #() ].\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassRemoved new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
  32870. referencedClasses: ["SystemAnnouncer", "ClassRemoved"],
  32871. //>>excludeEnd("ide");
  32872. pragmas: [],
  32873. messageSends: ["ifTrue:", "isMetaclass", "error:", ",", "asString", "allSubclassesDo:", "name", "ifNotEmpty:", "traitUsers", "deleteClass:", "includingPossibleMetaDo:", "setTraitComposition:", "announce:", "current", "theClass:", "new", "yourself"]
  32874. }, function ($methodClass){ return function (aClass){
  32875. var self=this,$self=this;
  32876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32877. return $core.withContext(function($ctx1) {
  32878. //>>excludeEnd("ctx");
  32879. var $1,$2;
  32880. if($core.assert($recv(aClass)._isMetaclass())){
  32881. [$self._error_([$recv($recv(aClass)._asString()).__comma(" is a Metaclass and cannot be removed!")
  32882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32883. ,$ctx1.sendIdx[","]=1
  32884. //>>excludeEnd("ctx");
  32885. ][0])
  32886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32887. ,$ctx1.sendIdx["error:"]=1
  32888. //>>excludeEnd("ctx");
  32889. ][0];
  32890. }
  32891. $recv(aClass)._allSubclassesDo_((function(subclass){
  32892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32893. return $core.withContext(function($ctx2) {
  32894. //>>excludeEnd("ctx");
  32895. return [$self._error_([$recv([$recv([$recv(aClass)._name()
  32896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32897. ,$ctx2.sendIdx["name"]=1
  32898. //>>excludeEnd("ctx");
  32899. ][0]).__comma(" has a subclass: ")
  32900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32901. ,$ctx2.sendIdx[","]=3
  32902. //>>excludeEnd("ctx");
  32903. ][0]).__comma([$recv(subclass)._name()
  32904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32905. ,$ctx2.sendIdx["name"]=2
  32906. //>>excludeEnd("ctx");
  32907. ][0])
  32908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32909. ,$ctx2.sendIdx[","]=2
  32910. //>>excludeEnd("ctx");
  32911. ][0])
  32912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32913. ,$ctx2.sendIdx["error:"]=2
  32914. //>>excludeEnd("ctx");
  32915. ][0];
  32916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32917. }, function($ctx2) {$ctx2.fillBlock({subclass:subclass},$ctx1,2)});
  32918. //>>excludeEnd("ctx");
  32919. }));
  32920. $recv($recv(aClass)._traitUsers())._ifNotEmpty_((function(){
  32921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32922. return $core.withContext(function($ctx2) {
  32923. //>>excludeEnd("ctx");
  32924. return $self._error_($recv($recv(aClass)._name()).__comma(" has trait users."));
  32925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32926. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  32927. //>>excludeEnd("ctx");
  32928. }));
  32929. $self._deleteClass_(aClass);
  32930. $recv(aClass)._includingPossibleMetaDo_((function(each){
  32931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32932. return $core.withContext(function($ctx2) {
  32933. //>>excludeEnd("ctx");
  32934. return $recv(each)._setTraitComposition_([]);
  32935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32936. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  32937. //>>excludeEnd("ctx");
  32938. }));
  32939. $1=$recv($globals.SystemAnnouncer)._current();
  32940. $2=$recv($globals.ClassRemoved)._new();
  32941. $recv($2)._theClass_(aClass);
  32942. $recv($1)._announce_($recv($2)._yourself());
  32943. return self;
  32944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32945. }, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass})});
  32946. //>>excludeEnd("ctx");
  32947. }; }),
  32948. $globals.SmalltalkImage);
  32949. $core.addMethod(
  32950. $core.method({
  32951. selector: "removePackage:",
  32952. protocol: "packages",
  32953. //>>excludeStart("ide", pragmas.excludeIdeData);
  32954. args: ["packageName"],
  32955. source: "removePackage: packageName\x0a\x09\x22Removes a package and all its classes.\x22\x0a\x0a\x09| pkg |\x0a\x09pkg := self packageAt: packageName ifAbsent: [ self error: 'Missing package: ', packageName ].\x0a\x09pkg classes do: [ :each |\x0a\x09\x09\x09self removeClass: each ].\x0a\x09self packageDictionary removeKey: packageName.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09announce: (PackageRemoved new\x0a\x09\x09package: pkg;\x0a\x09\x09yourself)",
  32956. referencedClasses: ["SystemAnnouncer", "PackageRemoved"],
  32957. //>>excludeEnd("ide");
  32958. pragmas: [],
  32959. messageSends: ["packageAt:ifAbsent:", "error:", ",", "do:", "classes", "removeClass:", "removeKey:", "packageDictionary", "announce:", "current", "package:", "new", "yourself"]
  32960. }, function ($methodClass){ return function (packageName){
  32961. var self=this,$self=this;
  32962. var pkg;
  32963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32964. return $core.withContext(function($ctx1) {
  32965. //>>excludeEnd("ctx");
  32966. var $1,$2;
  32967. pkg=$self._packageAt_ifAbsent_(packageName,(function(){
  32968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32969. return $core.withContext(function($ctx2) {
  32970. //>>excludeEnd("ctx");
  32971. return $self._error_("Missing package: ".__comma(packageName));
  32972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32973. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  32974. //>>excludeEnd("ctx");
  32975. }));
  32976. $recv($recv(pkg)._classes())._do_((function(each){
  32977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32978. return $core.withContext(function($ctx2) {
  32979. //>>excludeEnd("ctx");
  32980. return $self._removeClass_(each);
  32981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32982. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  32983. //>>excludeEnd("ctx");
  32984. }));
  32985. $recv($self._packageDictionary())._removeKey_(packageName);
  32986. $1=$recv($globals.SystemAnnouncer)._current();
  32987. $2=$recv($globals.PackageRemoved)._new();
  32988. $recv($2)._package_(pkg);
  32989. $recv($1)._announce_($recv($2)._yourself());
  32990. return self;
  32991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32992. }, function($ctx1) {$ctx1.fill(self,"removePackage:",{packageName:packageName,pkg:pkg})});
  32993. //>>excludeEnd("ctx");
  32994. }; }),
  32995. $globals.SmalltalkImage);
  32996. $core.addMethod(
  32997. $core.method({
  32998. selector: "renamePackage:to:",
  32999. protocol: "packages",
  33000. //>>excludeStart("ide", pragmas.excludeIdeData);
  33001. args: ["packageName", "newName"],
  33002. source: "renamePackage: packageName to: newName\x0a\x09\x22Rename a package.\x22\x0a\x0a\x09| pkg |\x0a\x09pkg := self packageAt: packageName ifAbsent: [ self error: 'Missing package: ', packageName ].\x0a\x09self packageAt: newName ifPresent: [ self error: 'Already exists a package called: ', newName ].\x0a\x09pkg name: newName; beDirty.\x0a\x09self packageDictionary\x0a\x09\x09at: newName put: pkg;\x0a\x09\x09removeKey: packageName",
  33003. referencedClasses: [],
  33004. //>>excludeEnd("ide");
  33005. pragmas: [],
  33006. messageSends: ["packageAt:ifAbsent:", "error:", ",", "packageAt:ifPresent:", "name:", "beDirty", "at:put:", "packageDictionary", "removeKey:"]
  33007. }, function ($methodClass){ return function (packageName,newName){
  33008. var self=this,$self=this;
  33009. var pkg;
  33010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33011. return $core.withContext(function($ctx1) {
  33012. //>>excludeEnd("ctx");
  33013. var $1,$2;
  33014. pkg=$self._packageAt_ifAbsent_(packageName,(function(){
  33015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33016. return $core.withContext(function($ctx2) {
  33017. //>>excludeEnd("ctx");
  33018. return [$self._error_(["Missing package: ".__comma(packageName)
  33019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33020. ,$ctx2.sendIdx[","]=1
  33021. //>>excludeEnd("ctx");
  33022. ][0])
  33023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33024. ,$ctx2.sendIdx["error:"]=1
  33025. //>>excludeEnd("ctx");
  33026. ][0];
  33027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33028. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  33029. //>>excludeEnd("ctx");
  33030. }));
  33031. $self._packageAt_ifPresent_(newName,(function(){
  33032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33033. return $core.withContext(function($ctx2) {
  33034. //>>excludeEnd("ctx");
  33035. return $self._error_("Already exists a package called: ".__comma(newName));
  33036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33037. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  33038. //>>excludeEnd("ctx");
  33039. }));
  33040. $1=pkg;
  33041. $recv($1)._name_(newName);
  33042. $recv($1)._beDirty();
  33043. $2=$self._packageDictionary();
  33044. $recv($2)._at_put_(newName,pkg);
  33045. $recv($2)._removeKey_(packageName);
  33046. return self;
  33047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33048. }, function($ctx1) {$ctx1.fill(self,"renamePackage:to:",{packageName:packageName,newName:newName,pkg:pkg})});
  33049. //>>excludeEnd("ctx");
  33050. }; }),
  33051. $globals.SmalltalkImage);
  33052. $core.addMethod(
  33053. $core.method({
  33054. selector: "reservedWords",
  33055. protocol: "accessing",
  33056. //>>excludeStart("ide", pragmas.excludeIdeData);
  33057. args: [],
  33058. source: "reservedWords\x0a\x09^ #(\x0a\x09\x09\x22http://www.ecma-international.org/ecma-262/6.0/#sec-keywords\x22\x0a\x09\x09break case catch class const continue debugger\x0a\x09\x09default delete do else export extends finally\x0a\x09\x09for function if import in instanceof new\x0a\x09\x09return super switch this throw try typeof\x0a\x09\x09var void while with yield\x0a\x09\x09\x22in strict mode\x22\x0a\x09\x09let static\x0a\x09\x09\x22Amber protected words: these should not be compiled as-is when in code\x22\x0a\x09\x09arguments\x0a\x09\x09\x22http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words\x22\x0a\x09\x09await enum\x0a\x09\x09\x22in strict mode\x22\x0a\x09\x09implements interface package private protected public\x0a\x09)",
  33059. referencedClasses: [],
  33060. //>>excludeEnd("ide");
  33061. pragmas: [],
  33062. messageSends: []
  33063. }, function ($methodClass){ return function (){
  33064. var self=this,$self=this;
  33065. return ["break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "export", "extends", "finally", "for", "function", "if", "import", "in", "instanceof", "new", "return", "super", "switch", "this", "throw", "try", "typeof", "var", "void", "while", "with", "yield", "let", "static", "arguments", "await", "enum", "implements", "interface", "package", "private", "protected", "public"];
  33066. }; }),
  33067. $globals.SmalltalkImage);
  33068. $core.addMethod(
  33069. $core.method({
  33070. selector: "settings",
  33071. protocol: "accessing",
  33072. //>>excludeStart("ide", pragmas.excludeIdeData);
  33073. args: [],
  33074. source: "settings\x0a\x09^ SmalltalkSettings",
  33075. referencedClasses: ["SmalltalkSettings"],
  33076. //>>excludeEnd("ide");
  33077. pragmas: [],
  33078. messageSends: []
  33079. }, function ($methodClass){ return function (){
  33080. var self=this,$self=this;
  33081. return $globals.SmalltalkSettings;
  33082. }; }),
  33083. $globals.SmalltalkImage);
  33084. $core.addMethod(
  33085. $core.method({
  33086. selector: "sweepPackageDescriptors:",
  33087. protocol: "private",
  33088. //>>excludeStart("ide", pragmas.excludeIdeData);
  33089. args: ["pkgs"],
  33090. source: "sweepPackageDescriptors: pkgs\x0a\x09| pd |\x09\x0a\x09pd := self core packageDescriptors.\x0a\x09pkgs do: [ :each | pd removeKey: each name ]",
  33091. referencedClasses: [],
  33092. //>>excludeEnd("ide");
  33093. pragmas: [],
  33094. messageSends: ["packageDescriptors", "core", "do:", "removeKey:", "name"]
  33095. }, function ($methodClass){ return function (pkgs){
  33096. var self=this,$self=this;
  33097. var pd;
  33098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33099. return $core.withContext(function($ctx1) {
  33100. //>>excludeEnd("ctx");
  33101. pd=$recv($self._core())._packageDescriptors();
  33102. $recv(pkgs)._do_((function(each){
  33103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33104. return $core.withContext(function($ctx2) {
  33105. //>>excludeEnd("ctx");
  33106. return $recv(pd)._removeKey_($recv(each)._name());
  33107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33108. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  33109. //>>excludeEnd("ctx");
  33110. }));
  33111. return self;
  33112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33113. }, function($ctx1) {$ctx1.fill(self,"sweepPackageDescriptors:",{pkgs:pkgs,pd:pd})});
  33114. //>>excludeEnd("ctx");
  33115. }; }),
  33116. $globals.SmalltalkImage);
  33117. $core.addMethod(
  33118. $core.method({
  33119. selector: "try:ifTrue:catch:",
  33120. protocol: "error handling",
  33121. //>>excludeStart("ide", pragmas.excludeIdeData);
  33122. args: ["actionBlock", "aBlock", "anotherBlock"],
  33123. source: "try: actionBlock ifTrue: aBlock catch: anotherBlock\x0a\x09\x22Similar to BlockClosure >> tryifTrue:catch:, but\x0a\x09converts all JS exceptions to JavaScriptException instances.\x22\x0a\x09\x0a\x09| smalltalkError |\x0a\x09^ actionBlock\x0a\x09\x09tryIfTrue: [ :error |\x0a\x09\x09\x09smalltalkError := self asSmalltalkException: error.\x0a\x09\x09\x09aBlock value: smalltalkError ]\x0a\x09\x09catch: [ anotherBlock value: smalltalkError ]",
  33124. referencedClasses: [],
  33125. //>>excludeEnd("ide");
  33126. pragmas: [],
  33127. messageSends: ["tryIfTrue:catch:", "asSmalltalkException:", "value:"]
  33128. }, function ($methodClass){ return function (actionBlock,aBlock,anotherBlock){
  33129. var self=this,$self=this;
  33130. var smalltalkError;
  33131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33132. return $core.withContext(function($ctx1) {
  33133. //>>excludeEnd("ctx");
  33134. return $recv(actionBlock)._tryIfTrue_catch_((function(error){
  33135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33136. return $core.withContext(function($ctx2) {
  33137. //>>excludeEnd("ctx");
  33138. smalltalkError=$self._asSmalltalkException_(error);
  33139. return [$recv(aBlock)._value_(smalltalkError)
  33140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33141. ,$ctx2.sendIdx["value:"]=1
  33142. //>>excludeEnd("ctx");
  33143. ][0];
  33144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33145. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,1)});
  33146. //>>excludeEnd("ctx");
  33147. }),(function(){
  33148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33149. return $core.withContext(function($ctx2) {
  33150. //>>excludeEnd("ctx");
  33151. return $recv(anotherBlock)._value_(smalltalkError);
  33152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33153. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  33154. //>>excludeEnd("ctx");
  33155. }));
  33156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33157. }, function($ctx1) {$ctx1.fill(self,"try:ifTrue:catch:",{actionBlock:actionBlock,aBlock:aBlock,anotherBlock:anotherBlock,smalltalkError:smalltalkError})});
  33158. //>>excludeEnd("ctx");
  33159. }; }),
  33160. $globals.SmalltalkImage);
  33161. $core.addMethod(
  33162. $core.method({
  33163. selector: "tryAdoptPackageDescriptorsBeyond:",
  33164. protocol: "private",
  33165. //>>excludeStart("ide", pragmas.excludeIdeData);
  33166. args: ["aSet"],
  33167. source: "tryAdoptPackageDescriptorsBeyond: aSet\x0a\x09| original |\x0a\x09original := aSet copy.\x0a\x09self core packageDescriptors keysAndValuesDo: [ :key :value |\x0a\x09\x09aSet add: (Package named: key javaScriptDescriptor: value) ].\x0a\x09^ (aSet allSatisfy: [ :each | original includes: each ])\x0a\x09\x09ifFalse: [ (Promise all: (aSet collect: #isReady)) then: [ self tryAdoptPackageDescriptorsBeyond: aSet ] ]\x0a\x09\x09ifTrue: [ Promise value: aSet ]",
  33168. referencedClasses: ["Package", "Promise"],
  33169. //>>excludeEnd("ide");
  33170. pragmas: [],
  33171. messageSends: ["copy", "keysAndValuesDo:", "packageDescriptors", "core", "add:", "named:javaScriptDescriptor:", "ifFalse:ifTrue:", "allSatisfy:", "includes:", "then:", "all:", "collect:", "tryAdoptPackageDescriptorsBeyond:", "value:"]
  33172. }, function ($methodClass){ return function (aSet){
  33173. var self=this,$self=this;
  33174. var original;
  33175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33176. return $core.withContext(function($ctx1) {
  33177. //>>excludeEnd("ctx");
  33178. original=$recv(aSet)._copy();
  33179. $recv($recv($self._core())._packageDescriptors())._keysAndValuesDo_((function(key,value){
  33180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33181. return $core.withContext(function($ctx2) {
  33182. //>>excludeEnd("ctx");
  33183. return $recv(aSet)._add_($recv($globals.Package)._named_javaScriptDescriptor_(key,value));
  33184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33185. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  33186. //>>excludeEnd("ctx");
  33187. }));
  33188. if($core.assert($recv(aSet)._allSatisfy_((function(each){
  33189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33190. return $core.withContext(function($ctx2) {
  33191. //>>excludeEnd("ctx");
  33192. return $recv(original)._includes_(each);
  33193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33194. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  33195. //>>excludeEnd("ctx");
  33196. })))){
  33197. return $recv($globals.Promise)._value_(aSet);
  33198. } else {
  33199. return $recv($recv($globals.Promise)._all_($recv(aSet)._collect_("isReady")))._then_((function(){
  33200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33201. return $core.withContext(function($ctx2) {
  33202. //>>excludeEnd("ctx");
  33203. return $self._tryAdoptPackageDescriptorsBeyond_(aSet);
  33204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33205. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  33206. //>>excludeEnd("ctx");
  33207. }));
  33208. }
  33209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33210. }, function($ctx1) {$ctx1.fill(self,"tryAdoptPackageDescriptorsBeyond:",{aSet:aSet,original:original})});
  33211. //>>excludeEnd("ctx");
  33212. }; }),
  33213. $globals.SmalltalkImage);
  33214. $core.addMethod(
  33215. $core.method({
  33216. selector: "version",
  33217. protocol: "accessing",
  33218. //>>excludeStart("ide", pragmas.excludeIdeData);
  33219. args: [],
  33220. source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.29.4'",
  33221. referencedClasses: [],
  33222. //>>excludeEnd("ide");
  33223. pragmas: [],
  33224. messageSends: []
  33225. }, function ($methodClass){ return function (){
  33226. var self=this,$self=this;
  33227. return "0.29.4";
  33228. }; }),
  33229. $globals.SmalltalkImage);
  33230. $core.setSlots($globals.SmalltalkImage.a$cls, ["current"]);
  33231. $core.addMethod(
  33232. $core.method({
  33233. selector: "current",
  33234. protocol: "instance creation",
  33235. //>>excludeStart("ide", pragmas.excludeIdeData);
  33236. args: [],
  33237. source: "current\x0a\x09^ current ifNil: [ current := super new ] ifNotNil: [ self deprecatedAPI. current ]",
  33238. referencedClasses: [],
  33239. //>>excludeEnd("ide");
  33240. pragmas: [],
  33241. messageSends: ["ifNil:ifNotNil:", "new", "deprecatedAPI"]
  33242. }, function ($methodClass){ return function (){
  33243. var self=this,$self=this;
  33244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33245. return $core.withContext(function($ctx1) {
  33246. //>>excludeEnd("ctx");
  33247. var $1;
  33248. $1=$self.current;
  33249. if($1 == null || $1.a$nil){
  33250. $self.current=[(
  33251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33252. $ctx1.supercall = true,
  33253. //>>excludeEnd("ctx");
  33254. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
  33255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33256. ,$ctx1.supercall = false
  33257. //>>excludeEnd("ctx");
  33258. ][0];
  33259. return $self.current;
  33260. } else {
  33261. $self._deprecatedAPI();
  33262. return $self.current;
  33263. }
  33264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33265. }, function($ctx1) {$ctx1.fill(self,"current",{})});
  33266. //>>excludeEnd("ctx");
  33267. }; }),
  33268. $globals.SmalltalkImage.a$cls);
  33269. $core.addMethod(
  33270. $core.method({
  33271. selector: "initialize",
  33272. protocol: "initialization",
  33273. //>>excludeStart("ide", pragmas.excludeIdeData);
  33274. args: [],
  33275. source: "initialize\x0a\x09| st |\x0a\x09st := self current.\x0a\x09st globals at: 'Smalltalk' put: st",
  33276. referencedClasses: [],
  33277. //>>excludeEnd("ide");
  33278. pragmas: [],
  33279. messageSends: ["current", "at:put:", "globals"]
  33280. }, function ($methodClass){ return function (){
  33281. var self=this,$self=this;
  33282. var st;
  33283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33284. return $core.withContext(function($ctx1) {
  33285. //>>excludeEnd("ctx");
  33286. st=$self._current();
  33287. $recv($recv(st)._globals())._at_put_("Smalltalk",st);
  33288. return self;
  33289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33290. }, function($ctx1) {$ctx1.fill(self,"initialize",{st:st})});
  33291. //>>excludeEnd("ctx");
  33292. }; }),
  33293. $globals.SmalltalkImage.a$cls);
  33294. $core.addMethod(
  33295. $core.method({
  33296. selector: "new",
  33297. protocol: "instance creation",
  33298. //>>excludeStart("ide", pragmas.excludeIdeData);
  33299. args: [],
  33300. source: "new\x0a\x09self shouldNotImplement",
  33301. referencedClasses: [],
  33302. //>>excludeEnd("ide");
  33303. pragmas: [],
  33304. messageSends: ["shouldNotImplement"]
  33305. }, function ($methodClass){ return function (){
  33306. var self=this,$self=this;
  33307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33308. return $core.withContext(function($ctx1) {
  33309. //>>excludeEnd("ctx");
  33310. $self._shouldNotImplement();
  33311. return self;
  33312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33313. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  33314. //>>excludeEnd("ctx");
  33315. }; }),
  33316. $globals.SmalltalkImage.a$cls);
  33317. $core.setTraitComposition([{trait: $globals.TIsInGroup}, {trait: $globals.TThenable}], $globals.JSObjectProxy);
  33318. $core.addMethod(
  33319. $core.method({
  33320. selector: "nextPutJSObject:",
  33321. protocol: "*Kernel-Infrastructure",
  33322. //>>excludeStart("ide", pragmas.excludeIdeData);
  33323. args: ["aJSObject"],
  33324. source: "nextPutJSObject: aJSObject\x0a\x09self nextPut: aJSObject",
  33325. referencedClasses: [],
  33326. //>>excludeEnd("ide");
  33327. pragmas: [],
  33328. messageSends: ["nextPut:"]
  33329. }, function ($methodClass){ return function (aJSObject){
  33330. var self=this,$self=this;
  33331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33332. return $core.withContext(function($ctx1) {
  33333. //>>excludeEnd("ctx");
  33334. $self._nextPut_(aJSObject);
  33335. return self;
  33336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33337. }, function($ctx1) {$ctx1.fill(self,"nextPutJSObject:",{aJSObject:aJSObject})});
  33338. //>>excludeEnd("ctx");
  33339. }; }),
  33340. $globals.ProtoStream);
  33341. $core.addMethod(
  33342. $core.method({
  33343. selector: "asJavaScriptPropertyName",
  33344. protocol: "*Kernel-Infrastructure",
  33345. //>>excludeStart("ide", pragmas.excludeIdeData);
  33346. args: [],
  33347. source: "asJavaScriptPropertyName\x0a<inlineJS: 'return $core.st2prop(self)'>",
  33348. referencedClasses: [],
  33349. //>>excludeEnd("ide");
  33350. pragmas: [["inlineJS:", ["return $core.st2prop(self)"]]],
  33351. messageSends: []
  33352. }, function ($methodClass){ return function (){
  33353. var self=this,$self=this;
  33354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33355. return $core.withContext(function($ctx1) {
  33356. //>>excludeEnd("ctx");
  33357. return $core.st2prop(self);
  33358. return self;
  33359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33360. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptPropertyName",{})});
  33361. //>>excludeEnd("ctx");
  33362. }; }),
  33363. $globals.String);
  33364. $core.addMethod(
  33365. $core.method({
  33366. selector: "asSetting",
  33367. protocol: "*Kernel-Infrastructure",
  33368. //>>excludeStart("ide", pragmas.excludeIdeData);
  33369. args: [],
  33370. source: "asSetting\x0a\x09\x22Answer aSetting dedicated to locally store a value using this string as key.\x0a\x09Nil will be the default value.\x22\x0a\x09^ Setting at: self ifAbsent: nil",
  33371. referencedClasses: ["Setting"],
  33372. //>>excludeEnd("ide");
  33373. pragmas: [],
  33374. messageSends: ["at:ifAbsent:"]
  33375. }, function ($methodClass){ return function (){
  33376. var self=this,$self=this;
  33377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33378. return $core.withContext(function($ctx1) {
  33379. //>>excludeEnd("ctx");
  33380. return $recv($globals.Setting)._at_ifAbsent_(self,nil);
  33381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33382. }, function($ctx1) {$ctx1.fill(self,"asSetting",{})});
  33383. //>>excludeEnd("ctx");
  33384. }; }),
  33385. $globals.String);
  33386. $core.addMethod(
  33387. $core.method({
  33388. selector: "asSettingIfAbsent:",
  33389. protocol: "*Kernel-Infrastructure",
  33390. //>>excludeStart("ide", pragmas.excludeIdeData);
  33391. args: ["aDefaultValue"],
  33392. source: "asSettingIfAbsent: aDefaultValue\x0a\x09\x22Answer aSetting dedicated to locally store a value using this string as key.\x0a\x09Make this setting to have aDefaultValue.\x22\x0a\x09^ Setting at: self ifAbsent: aDefaultValue",
  33393. referencedClasses: ["Setting"],
  33394. //>>excludeEnd("ide");
  33395. pragmas: [],
  33396. messageSends: ["at:ifAbsent:"]
  33397. }, function ($methodClass){ return function (aDefaultValue){
  33398. var self=this,$self=this;
  33399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33400. return $core.withContext(function($ctx1) {
  33401. //>>excludeEnd("ctx");
  33402. return $recv($globals.Setting)._at_ifAbsent_(self,aDefaultValue);
  33403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33404. }, function($ctx1) {$ctx1.fill(self,"asSettingIfAbsent:",{aDefaultValue:aDefaultValue})});
  33405. //>>excludeEnd("ctx");
  33406. }; }),
  33407. $globals.String);
  33408. $core.addMethod(
  33409. $core.method({
  33410. selector: "settingValue",
  33411. protocol: "*Kernel-Infrastructure",
  33412. //>>excludeStart("ide", pragmas.excludeIdeData);
  33413. args: [],
  33414. source: "settingValue\x0a\x09^ self asSetting value",
  33415. referencedClasses: [],
  33416. //>>excludeEnd("ide");
  33417. pragmas: [],
  33418. messageSends: ["value", "asSetting"]
  33419. }, function ($methodClass){ return function (){
  33420. var self=this,$self=this;
  33421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33422. return $core.withContext(function($ctx1) {
  33423. //>>excludeEnd("ctx");
  33424. return $recv($self._asSetting())._value();
  33425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33426. }, function($ctx1) {$ctx1.fill(self,"settingValue",{})});
  33427. //>>excludeEnd("ctx");
  33428. }; }),
  33429. $globals.String);
  33430. $core.addMethod(
  33431. $core.method({
  33432. selector: "settingValue:",
  33433. protocol: "*Kernel-Infrastructure",
  33434. //>>excludeStart("ide", pragmas.excludeIdeData);
  33435. args: ["aValue"],
  33436. source: "settingValue: aValue\x0a\x09\x22Sets the value of the setting that will be locally stored using this string as key.\x0a\x09Note that aValue can be any object that can be stringifyed\x22\x0a\x09^ self asSetting value: aValue",
  33437. referencedClasses: [],
  33438. //>>excludeEnd("ide");
  33439. pragmas: [],
  33440. messageSends: ["value:", "asSetting"]
  33441. }, function ($methodClass){ return function (aValue){
  33442. var self=this,$self=this;
  33443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33444. return $core.withContext(function($ctx1) {
  33445. //>>excludeEnd("ctx");
  33446. return $recv($self._asSetting())._value_(aValue);
  33447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33448. }, function($ctx1) {$ctx1.fill(self,"settingValue:",{aValue:aValue})});
  33449. //>>excludeEnd("ctx");
  33450. }; }),
  33451. $globals.String);
  33452. $core.addMethod(
  33453. $core.method({
  33454. selector: "settingValueIfAbsent:",
  33455. protocol: "*Kernel-Infrastructure",
  33456. //>>excludeStart("ide", pragmas.excludeIdeData);
  33457. args: ["aDefaultValue"],
  33458. source: "settingValueIfAbsent: aDefaultValue\x0a\x09\x22Answer the value of the locally stored setting using this string as key.\x0a\x09Use aDefaultValue in case no setting is found\x22\x0a\x09^ (self asSettingIfAbsent: aDefaultValue) value",
  33459. referencedClasses: [],
  33460. //>>excludeEnd("ide");
  33461. pragmas: [],
  33462. messageSends: ["value", "asSettingIfAbsent:"]
  33463. }, function ($methodClass){ return function (aDefaultValue){
  33464. var self=this,$self=this;
  33465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33466. return $core.withContext(function($ctx1) {
  33467. //>>excludeEnd("ctx");
  33468. return $recv($self._asSettingIfAbsent_(aDefaultValue))._value();
  33469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33470. }, function($ctx1) {$ctx1.fill(self,"settingValueIfAbsent:",{aDefaultValue:aDefaultValue})});
  33471. //>>excludeEnd("ctx");
  33472. }; }),
  33473. $globals.String);
  33474. });
  33475. define('amber/core/Kernel-Exceptions',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  33476. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  33477. var $pkg = $core.addPackage("Kernel-Exceptions");
  33478. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  33479. $core.addClass("Error", $globals.Object, "Kernel-Exceptions");
  33480. $core.setSlots($globals.Error, ["message", "stack", "amberHandled", "context", "smalltalkError"]);
  33481. //>>excludeStart("ide", pragmas.excludeIdeData);
  33482. $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.";
  33483. //>>excludeEnd("ide");
  33484. $core.addMethod(
  33485. $core.method({
  33486. selector: "basicSignal",
  33487. protocol: "private",
  33488. //>>excludeStart("ide", pragmas.excludeIdeData);
  33489. args: [],
  33490. source: "basicSignal\x0a\x09<inlineJS: 'throw self;'>",
  33491. referencedClasses: [],
  33492. //>>excludeEnd("ide");
  33493. pragmas: [["inlineJS:", ["throw self;"]]],
  33494. messageSends: []
  33495. }, function ($methodClass){ return function (){
  33496. var self=this,$self=this;
  33497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33498. return $core.withContext(function($ctx1) {
  33499. //>>excludeEnd("ctx");
  33500. throw self;;
  33501. return self;
  33502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33503. }, function($ctx1) {$ctx1.fill(self,"basicSignal",{})});
  33504. //>>excludeEnd("ctx");
  33505. }; }),
  33506. $globals.Error);
  33507. $core.addMethod(
  33508. $core.method({
  33509. selector: "beHandled",
  33510. protocol: "accessing",
  33511. //>>excludeStart("ide", pragmas.excludeIdeData);
  33512. args: [],
  33513. source: "beHandled\x0a\x09amberHandled := true",
  33514. referencedClasses: [],
  33515. //>>excludeEnd("ide");
  33516. pragmas: [],
  33517. messageSends: []
  33518. }, function ($methodClass){ return function (){
  33519. var self=this,$self=this;
  33520. $self.amberHandled=true;
  33521. return self;
  33522. }; }),
  33523. $globals.Error);
  33524. $core.addMethod(
  33525. $core.method({
  33526. selector: "beUnhandled",
  33527. protocol: "accessing",
  33528. //>>excludeStart("ide", pragmas.excludeIdeData);
  33529. args: [],
  33530. source: "beUnhandled\x0a\x09amberHandled := false",
  33531. referencedClasses: [],
  33532. //>>excludeEnd("ide");
  33533. pragmas: [],
  33534. messageSends: []
  33535. }, function ($methodClass){ return function (){
  33536. var self=this,$self=this;
  33537. $self.amberHandled=false;
  33538. return self;
  33539. }; }),
  33540. $globals.Error);
  33541. $core.addMethod(
  33542. $core.method({
  33543. selector: "context",
  33544. protocol: "accessing",
  33545. //>>excludeStart("ide", pragmas.excludeIdeData);
  33546. args: [],
  33547. source: "context\x0a\x09^ context",
  33548. referencedClasses: [],
  33549. //>>excludeEnd("ide");
  33550. pragmas: [],
  33551. messageSends: []
  33552. }, function ($methodClass){ return function (){
  33553. var self=this,$self=this;
  33554. return $self.context;
  33555. }; }),
  33556. $globals.Error);
  33557. $core.addMethod(
  33558. $core.method({
  33559. selector: "context:",
  33560. protocol: "accessing",
  33561. //>>excludeStart("ide", pragmas.excludeIdeData);
  33562. args: ["aMethodContext"],
  33563. source: "context: aMethodContext\x0a\x09context := aMethodContext",
  33564. referencedClasses: [],
  33565. //>>excludeEnd("ide");
  33566. pragmas: [],
  33567. messageSends: []
  33568. }, function ($methodClass){ return function (aMethodContext){
  33569. var self=this,$self=this;
  33570. $self.context=aMethodContext;
  33571. return self;
  33572. }; }),
  33573. $globals.Error);
  33574. $core.addMethod(
  33575. $core.method({
  33576. selector: "initialize",
  33577. protocol: "initialization",
  33578. //>>excludeStart("ide", pragmas.excludeIdeData);
  33579. args: [],
  33580. source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
  33581. referencedClasses: [],
  33582. //>>excludeEnd("ide");
  33583. pragmas: [],
  33584. messageSends: ["messageText:", ",", "name", "class"]
  33585. }, function ($methodClass){ return function (){
  33586. var self=this,$self=this;
  33587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33588. return $core.withContext(function($ctx1) {
  33589. //>>excludeEnd("ctx");
  33590. $self._messageText_("Errorclass: ".__comma($recv($self._class())._name()));
  33591. return self;
  33592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33593. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  33594. //>>excludeEnd("ctx");
  33595. }; }),
  33596. $globals.Error);
  33597. $core.addMethod(
  33598. $core.method({
  33599. selector: "isError",
  33600. protocol: "testing",
  33601. //>>excludeStart("ide", pragmas.excludeIdeData);
  33602. args: [],
  33603. source: "isError\x0a\x09^ true",
  33604. referencedClasses: [],
  33605. //>>excludeEnd("ide");
  33606. pragmas: [],
  33607. messageSends: []
  33608. }, function ($methodClass){ return function (){
  33609. var self=this,$self=this;
  33610. return true;
  33611. }; }),
  33612. $globals.Error);
  33613. $core.addMethod(
  33614. $core.method({
  33615. selector: "jsStack",
  33616. protocol: "accessing",
  33617. //>>excludeStart("ide", pragmas.excludeIdeData);
  33618. args: [],
  33619. source: "jsStack\x0a\x09^ stack",
  33620. referencedClasses: [],
  33621. //>>excludeEnd("ide");
  33622. pragmas: [],
  33623. messageSends: []
  33624. }, function ($methodClass){ return function (){
  33625. var self=this,$self=this;
  33626. return $self.stack;
  33627. }; }),
  33628. $globals.Error);
  33629. $core.addMethod(
  33630. $core.method({
  33631. selector: "messageText",
  33632. protocol: "accessing",
  33633. //>>excludeStart("ide", pragmas.excludeIdeData);
  33634. args: [],
  33635. source: "messageText\x0a\x09^ message",
  33636. referencedClasses: [],
  33637. //>>excludeEnd("ide");
  33638. pragmas: [],
  33639. messageSends: []
  33640. }, function ($methodClass){ return function (){
  33641. var self=this,$self=this;
  33642. return $self.message;
  33643. }; }),
  33644. $globals.Error);
  33645. $core.addMethod(
  33646. $core.method({
  33647. selector: "messageText:",
  33648. protocol: "accessing",
  33649. //>>excludeStart("ide", pragmas.excludeIdeData);
  33650. args: ["aString"],
  33651. source: "messageText: aString\x0a\x09message := aString",
  33652. referencedClasses: [],
  33653. //>>excludeEnd("ide");
  33654. pragmas: [],
  33655. messageSends: []
  33656. }, function ($methodClass){ return function (aString){
  33657. var self=this,$self=this;
  33658. $self.message=aString;
  33659. return self;
  33660. }; }),
  33661. $globals.Error);
  33662. $core.addMethod(
  33663. $core.method({
  33664. selector: "outer",
  33665. protocol: "signaling",
  33666. //>>excludeStart("ide", pragmas.excludeIdeData);
  33667. args: [],
  33668. source: "outer\x0a\x09\x22Pharo compatibility. Just sends #pass.\x22\x0a\x09\x0a\x09^ self pass",
  33669. referencedClasses: [],
  33670. //>>excludeEnd("ide");
  33671. pragmas: [],
  33672. messageSends: ["pass"]
  33673. }, function ($methodClass){ return function (){
  33674. var self=this,$self=this;
  33675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33676. return $core.withContext(function($ctx1) {
  33677. //>>excludeEnd("ctx");
  33678. return $self._pass();
  33679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33680. }, function($ctx1) {$ctx1.fill(self,"outer",{})});
  33681. //>>excludeEnd("ctx");
  33682. }; }),
  33683. $globals.Error);
  33684. $core.addMethod(
  33685. $core.method({
  33686. selector: "pass",
  33687. protocol: "signaling",
  33688. //>>excludeStart("ide", pragmas.excludeIdeData);
  33689. args: [],
  33690. source: "pass\x0a\x09\x22Let outer handler take care of this.\x22\x0a\x0a\x09self beUnhandled; basicSignal",
  33691. referencedClasses: [],
  33692. //>>excludeEnd("ide");
  33693. pragmas: [],
  33694. messageSends: ["beUnhandled", "basicSignal"]
  33695. }, function ($methodClass){ return function (){
  33696. var self=this,$self=this;
  33697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33698. return $core.withContext(function($ctx1) {
  33699. //>>excludeEnd("ctx");
  33700. $self._beUnhandled();
  33701. $self._basicSignal();
  33702. return self;
  33703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33704. }, function($ctx1) {$ctx1.fill(self,"pass",{})});
  33705. //>>excludeEnd("ctx");
  33706. }; }),
  33707. $globals.Error);
  33708. $core.addMethod(
  33709. $core.method({
  33710. selector: "resignal",
  33711. protocol: "signaling",
  33712. //>>excludeStart("ide", pragmas.excludeIdeData);
  33713. args: [],
  33714. source: "resignal\x0a\x09self deprecatedAPI: 'Use #pass.'.\x0a\x09^ self pass",
  33715. referencedClasses: [],
  33716. //>>excludeEnd("ide");
  33717. pragmas: [],
  33718. messageSends: ["deprecatedAPI:", "pass"]
  33719. }, function ($methodClass){ return function (){
  33720. var self=this,$self=this;
  33721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33722. return $core.withContext(function($ctx1) {
  33723. //>>excludeEnd("ctx");
  33724. $self._deprecatedAPI_("Use #pass.");
  33725. return $self._pass();
  33726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33727. }, function($ctx1) {$ctx1.fill(self,"resignal",{})});
  33728. //>>excludeEnd("ctx");
  33729. }; }),
  33730. $globals.Error);
  33731. $core.addMethod(
  33732. $core.method({
  33733. selector: "signal",
  33734. protocol: "signaling",
  33735. //>>excludeStart("ide", pragmas.excludeIdeData);
  33736. args: [],
  33737. source: "signal\x0a\x09self beUnhandled; context: thisContext; basicSignal",
  33738. referencedClasses: [],
  33739. //>>excludeEnd("ide");
  33740. pragmas: [],
  33741. messageSends: ["beUnhandled", "context:", "basicSignal"]
  33742. }, function ($methodClass){ return function (){
  33743. var self=this,$self=this;
  33744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33745. return $core.withContext(function($ctx1) {
  33746. //>>excludeEnd("ctx");
  33747. $self._beUnhandled();
  33748. $self._context_($core.getThisContext());
  33749. $self._basicSignal();
  33750. return self;
  33751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33752. }, function($ctx1) {$ctx1.fill(self,"signal",{})});
  33753. //>>excludeEnd("ctx");
  33754. }; }),
  33755. $globals.Error);
  33756. $core.addMethod(
  33757. $core.method({
  33758. selector: "signal:",
  33759. protocol: "signaling",
  33760. //>>excludeStart("ide", pragmas.excludeIdeData);
  33761. args: ["aString"],
  33762. source: "signal: aString\x0a\x09self messageText: aString; signal",
  33763. referencedClasses: [],
  33764. //>>excludeEnd("ide");
  33765. pragmas: [],
  33766. messageSends: ["messageText:", "signal"]
  33767. }, function ($methodClass){ return function (aString){
  33768. var self=this,$self=this;
  33769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33770. return $core.withContext(function($ctx1) {
  33771. //>>excludeEnd("ctx");
  33772. $self._messageText_(aString);
  33773. $self._signal();
  33774. return self;
  33775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33776. }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString})});
  33777. //>>excludeEnd("ctx");
  33778. }; }),
  33779. $globals.Error);
  33780. $core.addMethod(
  33781. $core.method({
  33782. selector: "signalerContext",
  33783. protocol: "accessing",
  33784. //>>excludeStart("ide", pragmas.excludeIdeData);
  33785. args: [],
  33786. source: "signalerContext\x0a\x09^ self signalerContextFrom: self context",
  33787. referencedClasses: [],
  33788. //>>excludeEnd("ide");
  33789. pragmas: [],
  33790. messageSends: ["signalerContextFrom:", "context"]
  33791. }, function ($methodClass){ return function (){
  33792. var self=this,$self=this;
  33793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33794. return $core.withContext(function($ctx1) {
  33795. //>>excludeEnd("ctx");
  33796. return $self._signalerContextFrom_($self._context());
  33797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33798. }, function($ctx1) {$ctx1.fill(self,"signalerContext",{})});
  33799. //>>excludeEnd("ctx");
  33800. }; }),
  33801. $globals.Error);
  33802. $core.addMethod(
  33803. $core.method({
  33804. selector: "signalerContextFrom:",
  33805. protocol: "accessing",
  33806. //>>excludeStart("ide", pragmas.excludeIdeData);
  33807. args: ["aContext"],
  33808. 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: [ :one |\x0a\x09\x09(one receiver == self \x0a\x09\x09or: [ one receiver == self class ]) not ]",
  33809. referencedClasses: [],
  33810. //>>excludeEnd("ide");
  33811. pragmas: [],
  33812. messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class"]
  33813. }, function ($methodClass){ return function (aContext){
  33814. var self=this,$self=this;
  33815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33816. return $core.withContext(function($ctx1) {
  33817. //>>excludeEnd("ctx");
  33818. var $1;
  33819. return $recv(aContext)._findContextSuchThat_((function(one){
  33820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33821. return $core.withContext(function($ctx2) {
  33822. //>>excludeEnd("ctx");
  33823. if($core.assert([$recv([$recv(one)._receiver()
  33824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33825. ,$ctx2.sendIdx["receiver"]=1
  33826. //>>excludeEnd("ctx");
  33827. ][0]).__eq_eq(self)
  33828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33829. ,$ctx2.sendIdx["=="]=1
  33830. //>>excludeEnd("ctx");
  33831. ][0])){
  33832. $1=true;
  33833. } else {
  33834. $1=$recv($recv(one)._receiver()).__eq_eq($self._class());
  33835. }
  33836. return $recv($1)._not();
  33837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33838. }, function($ctx2) {$ctx2.fillBlock({one:one},$ctx1,1)});
  33839. //>>excludeEnd("ctx");
  33840. }));
  33841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33842. }, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext})});
  33843. //>>excludeEnd("ctx");
  33844. }; }),
  33845. $globals.Error);
  33846. $core.addMethod(
  33847. $core.method({
  33848. selector: "wasHandled",
  33849. protocol: "testing",
  33850. //>>excludeStart("ide", pragmas.excludeIdeData);
  33851. args: [],
  33852. source: "wasHandled\x0a\x09^ amberHandled == true",
  33853. referencedClasses: [],
  33854. //>>excludeEnd("ide");
  33855. pragmas: [],
  33856. messageSends: ["=="]
  33857. }, function ($methodClass){ return function (){
  33858. var self=this,$self=this;
  33859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33860. return $core.withContext(function($ctx1) {
  33861. //>>excludeEnd("ctx");
  33862. return $recv($self.amberHandled).__eq_eq(true);
  33863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33864. }, function($ctx1) {$ctx1.fill(self,"wasHandled",{})});
  33865. //>>excludeEnd("ctx");
  33866. }; }),
  33867. $globals.Error);
  33868. $core.addMethod(
  33869. $core.method({
  33870. selector: "classTag",
  33871. protocol: "accessing",
  33872. //>>excludeStart("ide", pragmas.excludeIdeData);
  33873. args: [],
  33874. 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'",
  33875. referencedClasses: [],
  33876. //>>excludeEnd("ide");
  33877. pragmas: [],
  33878. messageSends: []
  33879. }, function ($methodClass){ return function (){
  33880. var self=this,$self=this;
  33881. return "exception";
  33882. }; }),
  33883. $globals.Error.a$cls);
  33884. $core.addMethod(
  33885. $core.method({
  33886. selector: "signal",
  33887. protocol: "instance creation",
  33888. //>>excludeStart("ide", pragmas.excludeIdeData);
  33889. args: [],
  33890. source: "signal\x0a\x09^ self new signal",
  33891. referencedClasses: [],
  33892. //>>excludeEnd("ide");
  33893. pragmas: [],
  33894. messageSends: ["signal", "new"]
  33895. }, function ($methodClass){ return function (){
  33896. var self=this,$self=this;
  33897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33898. return $core.withContext(function($ctx1) {
  33899. //>>excludeEnd("ctx");
  33900. return $recv($self._new())._signal();
  33901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33902. }, function($ctx1) {$ctx1.fill(self,"signal",{})});
  33903. //>>excludeEnd("ctx");
  33904. }; }),
  33905. $globals.Error.a$cls);
  33906. $core.addMethod(
  33907. $core.method({
  33908. selector: "signal:",
  33909. protocol: "instance creation",
  33910. //>>excludeStart("ide", pragmas.excludeIdeData);
  33911. args: ["aString"],
  33912. source: "signal: aString\x0a\x09^ self new\x0a\x09\x09signal: aString",
  33913. referencedClasses: [],
  33914. //>>excludeEnd("ide");
  33915. pragmas: [],
  33916. messageSends: ["signal:", "new"]
  33917. }, function ($methodClass){ return function (aString){
  33918. var self=this,$self=this;
  33919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33920. return $core.withContext(function($ctx1) {
  33921. //>>excludeEnd("ctx");
  33922. return $recv($self._new())._signal_(aString);
  33923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33924. }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString})});
  33925. //>>excludeEnd("ctx");
  33926. }; }),
  33927. $globals.Error.a$cls);
  33928. $core.addClass("Halt", $globals.Error, "Kernel-Exceptions");
  33929. //>>excludeStart("ide", pragmas.excludeIdeData);
  33930. $globals.Halt.comment="I am provided to support `Object>>#halt`.";
  33931. //>>excludeEnd("ide");
  33932. $core.addMethod(
  33933. $core.method({
  33934. selector: "messageText",
  33935. protocol: "accessing",
  33936. //>>excludeStart("ide", pragmas.excludeIdeData);
  33937. args: [],
  33938. source: "messageText\x0a\x09^ 'Halt encountered'",
  33939. referencedClasses: [],
  33940. //>>excludeEnd("ide");
  33941. pragmas: [],
  33942. messageSends: []
  33943. }, function ($methodClass){ return function (){
  33944. var self=this,$self=this;
  33945. return "Halt encountered";
  33946. }; }),
  33947. $globals.Halt);
  33948. $core.addMethod(
  33949. $core.method({
  33950. selector: "signalerContextFrom:",
  33951. protocol: "accessing",
  33952. //>>excludeStart("ide", pragmas.excludeIdeData);
  33953. args: ["aContext"],
  33954. 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: [ :one |\x0a\x09\x09(one receiver == self \x0a\x09\x09or: [ (one receiver == self class) \x0a\x09\x09or: [ one method selector = #halt ]]) not ]",
  33955. referencedClasses: [],
  33956. //>>excludeEnd("ide");
  33957. pragmas: [],
  33958. messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class", "=", "selector", "method"]
  33959. }, function ($methodClass){ return function (aContext){
  33960. var self=this,$self=this;
  33961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33962. return $core.withContext(function($ctx1) {
  33963. //>>excludeEnd("ctx");
  33964. var $1;
  33965. return $recv(aContext)._findContextSuchThat_((function(one){
  33966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33967. return $core.withContext(function($ctx2) {
  33968. //>>excludeEnd("ctx");
  33969. if($core.assert([$recv([$recv(one)._receiver()
  33970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33971. ,$ctx2.sendIdx["receiver"]=1
  33972. //>>excludeEnd("ctx");
  33973. ][0]).__eq_eq(self)
  33974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33975. ,$ctx2.sendIdx["=="]=1
  33976. //>>excludeEnd("ctx");
  33977. ][0])){
  33978. $1=true;
  33979. } else {
  33980. if($core.assert($recv($recv(one)._receiver()).__eq_eq($self._class()))){
  33981. $1=true;
  33982. } else {
  33983. $1=$recv($recv($recv(one)._method())._selector()).__eq("halt");
  33984. }
  33985. }
  33986. return $recv($1)._not();
  33987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33988. }, function($ctx2) {$ctx2.fillBlock({one:one},$ctx1,1)});
  33989. //>>excludeEnd("ctx");
  33990. }));
  33991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33992. }, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext})});
  33993. //>>excludeEnd("ctx");
  33994. }; }),
  33995. $globals.Halt);
  33996. $core.addClass("JavaScriptException", $globals.Error, "Kernel-Exceptions");
  33997. $core.setSlots($globals.JavaScriptException, ["exception"]);
  33998. //>>excludeStart("ide", pragmas.excludeIdeData);
  33999. $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:`";
  34000. //>>excludeEnd("ide");
  34001. $core.addMethod(
  34002. $core.method({
  34003. selector: "exception",
  34004. protocol: "accessing",
  34005. //>>excludeStart("ide", pragmas.excludeIdeData);
  34006. args: [],
  34007. source: "exception\x0a\x09^ exception",
  34008. referencedClasses: [],
  34009. //>>excludeEnd("ide");
  34010. pragmas: [],
  34011. messageSends: []
  34012. }, function ($methodClass){ return function (){
  34013. var self=this,$self=this;
  34014. return $self.exception;
  34015. }; }),
  34016. $globals.JavaScriptException);
  34017. $core.addMethod(
  34018. $core.method({
  34019. selector: "exception:",
  34020. protocol: "accessing",
  34021. //>>excludeStart("ide", pragmas.excludeIdeData);
  34022. args: ["anException"],
  34023. source: "exception: anException\x0a\x09exception := anException",
  34024. referencedClasses: [],
  34025. //>>excludeEnd("ide");
  34026. pragmas: [],
  34027. messageSends: []
  34028. }, function ($methodClass){ return function (anException){
  34029. var self=this,$self=this;
  34030. $self.exception=anException;
  34031. return self;
  34032. }; }),
  34033. $globals.JavaScriptException);
  34034. $core.addMethod(
  34035. $core.method({
  34036. selector: "messageText",
  34037. protocol: "accessing",
  34038. //>>excludeStart("ide", pragmas.excludeIdeData);
  34039. args: [],
  34040. source: "messageText\x0a\x09<inlineJS: 'return \x22JavaScript exception: \x22 + $self.exception.toString()'>",
  34041. referencedClasses: [],
  34042. //>>excludeEnd("ide");
  34043. pragmas: [["inlineJS:", ["return \x22JavaScript exception: \x22 + $self.exception.toString()"]]],
  34044. messageSends: []
  34045. }, function ($methodClass){ return function (){
  34046. var self=this,$self=this;
  34047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34048. return $core.withContext(function($ctx1) {
  34049. //>>excludeEnd("ctx");
  34050. return "JavaScript exception: " + $self.exception.toString();
  34051. return self;
  34052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34053. }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
  34054. //>>excludeEnd("ctx");
  34055. }; }),
  34056. $globals.JavaScriptException);
  34057. $core.addMethod(
  34058. $core.method({
  34059. selector: "on:",
  34060. protocol: "instance creation",
  34061. //>>excludeStart("ide", pragmas.excludeIdeData);
  34062. args: ["anException"],
  34063. source: "on: anException\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09yourself",
  34064. referencedClasses: [],
  34065. //>>excludeEnd("ide");
  34066. pragmas: [],
  34067. messageSends: ["exception:", "new", "yourself"]
  34068. }, function ($methodClass){ return function (anException){
  34069. var self=this,$self=this;
  34070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34071. return $core.withContext(function($ctx1) {
  34072. //>>excludeEnd("ctx");
  34073. var $1;
  34074. $1=$self._new();
  34075. $recv($1)._exception_(anException);
  34076. return $recv($1)._yourself();
  34077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34078. }, function($ctx1) {$ctx1.fill(self,"on:",{anException:anException})});
  34079. //>>excludeEnd("ctx");
  34080. }; }),
  34081. $globals.JavaScriptException.a$cls);
  34082. $core.addMethod(
  34083. $core.method({
  34084. selector: "on:context:",
  34085. protocol: "instance creation",
  34086. //>>excludeStart("ide", pragmas.excludeIdeData);
  34087. args: ["anException", "aMethodContext"],
  34088. source: "on: anException context: aMethodContext\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09context: aMethodContext;\x0a\x09\x09yourself",
  34089. referencedClasses: [],
  34090. //>>excludeEnd("ide");
  34091. pragmas: [],
  34092. messageSends: ["exception:", "new", "context:", "yourself"]
  34093. }, function ($methodClass){ return function (anException,aMethodContext){
  34094. var self=this,$self=this;
  34095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34096. return $core.withContext(function($ctx1) {
  34097. //>>excludeEnd("ctx");
  34098. var $1;
  34099. $1=$self._new();
  34100. $recv($1)._exception_(anException);
  34101. $recv($1)._context_(aMethodContext);
  34102. return $recv($1)._yourself();
  34103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34104. }, function($ctx1) {$ctx1.fill(self,"on:context:",{anException:anException,aMethodContext:aMethodContext})});
  34105. //>>excludeEnd("ctx");
  34106. }; }),
  34107. $globals.JavaScriptException.a$cls);
  34108. $core.addClass("MessageNotUnderstood", $globals.Error, "Kernel-Exceptions");
  34109. $core.setSlots($globals.MessageNotUnderstood, ["smalltalkMessage", "receiver"]);
  34110. //>>excludeStart("ide", pragmas.excludeIdeData);
  34111. $globals.MessageNotUnderstood.comment="This exception is provided to support `Object>>doesNotUnderstand:`.";
  34112. //>>excludeEnd("ide");
  34113. $core.addMethod(
  34114. $core.method({
  34115. selector: "message",
  34116. protocol: "accessing",
  34117. //>>excludeStart("ide", pragmas.excludeIdeData);
  34118. args: [],
  34119. source: "message\x0a\x09^ smalltalkMessage",
  34120. referencedClasses: [],
  34121. //>>excludeEnd("ide");
  34122. pragmas: [],
  34123. messageSends: []
  34124. }, function ($methodClass){ return function (){
  34125. var self=this,$self=this;
  34126. return $self.smalltalkMessage;
  34127. }; }),
  34128. $globals.MessageNotUnderstood);
  34129. $core.addMethod(
  34130. $core.method({
  34131. selector: "message:",
  34132. protocol: "accessing",
  34133. //>>excludeStart("ide", pragmas.excludeIdeData);
  34134. args: ["aMessage"],
  34135. source: "message: aMessage\x0a\x09smalltalkMessage := aMessage",
  34136. referencedClasses: [],
  34137. //>>excludeEnd("ide");
  34138. pragmas: [],
  34139. messageSends: []
  34140. }, function ($methodClass){ return function (aMessage){
  34141. var self=this,$self=this;
  34142. $self.smalltalkMessage=aMessage;
  34143. return self;
  34144. }; }),
  34145. $globals.MessageNotUnderstood);
  34146. $core.addMethod(
  34147. $core.method({
  34148. selector: "messageText",
  34149. protocol: "accessing",
  34150. //>>excludeStart("ide", pragmas.excludeIdeData);
  34151. args: [],
  34152. source: "messageText\x0a\x09^ self receiver asString, ' does not understand #', self message selector",
  34153. referencedClasses: [],
  34154. //>>excludeEnd("ide");
  34155. pragmas: [],
  34156. messageSends: [",", "asString", "receiver", "selector", "message"]
  34157. }, function ($methodClass){ return function (){
  34158. var self=this,$self=this;
  34159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34160. return $core.withContext(function($ctx1) {
  34161. //>>excludeEnd("ctx");
  34162. return [$recv($recv($recv($self._receiver())._asString()).__comma(" does not understand #")).__comma($recv($self._message())._selector())
  34163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34164. ,$ctx1.sendIdx[","]=1
  34165. //>>excludeEnd("ctx");
  34166. ][0];
  34167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34168. }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
  34169. //>>excludeEnd("ctx");
  34170. }; }),
  34171. $globals.MessageNotUnderstood);
  34172. $core.addMethod(
  34173. $core.method({
  34174. selector: "receiver",
  34175. protocol: "accessing",
  34176. //>>excludeStart("ide", pragmas.excludeIdeData);
  34177. args: [],
  34178. source: "receiver\x0a\x09^ receiver",
  34179. referencedClasses: [],
  34180. //>>excludeEnd("ide");
  34181. pragmas: [],
  34182. messageSends: []
  34183. }, function ($methodClass){ return function (){
  34184. var self=this,$self=this;
  34185. return $self.receiver;
  34186. }; }),
  34187. $globals.MessageNotUnderstood);
  34188. $core.addMethod(
  34189. $core.method({
  34190. selector: "receiver:",
  34191. protocol: "accessing",
  34192. //>>excludeStart("ide", pragmas.excludeIdeData);
  34193. args: ["anObject"],
  34194. source: "receiver: anObject\x0a\x09receiver := anObject",
  34195. referencedClasses: [],
  34196. //>>excludeEnd("ide");
  34197. pragmas: [],
  34198. messageSends: []
  34199. }, function ($methodClass){ return function (anObject){
  34200. var self=this,$self=this;
  34201. $self.receiver=anObject;
  34202. return self;
  34203. }; }),
  34204. $globals.MessageNotUnderstood);
  34205. $core.addClass("NonBooleanReceiver", $globals.Error, "Kernel-Exceptions");
  34206. $core.setSlots($globals.NonBooleanReceiver, ["object"]);
  34207. //>>excludeStart("ide", pragmas.excludeIdeData);
  34208. $globals.NonBooleanReceiver.comment="NonBooleanReceiver exceptions may be thrown when executing inlined methods such as `#ifTrue:` with a non boolean receiver.";
  34209. //>>excludeEnd("ide");
  34210. $core.addMethod(
  34211. $core.method({
  34212. selector: "object",
  34213. protocol: "accessing",
  34214. //>>excludeStart("ide", pragmas.excludeIdeData);
  34215. args: [],
  34216. source: "object\x0a\x09^ object",
  34217. referencedClasses: [],
  34218. //>>excludeEnd("ide");
  34219. pragmas: [],
  34220. messageSends: []
  34221. }, function ($methodClass){ return function (){
  34222. var self=this,$self=this;
  34223. return $self.object;
  34224. }; }),
  34225. $globals.NonBooleanReceiver);
  34226. $core.addMethod(
  34227. $core.method({
  34228. selector: "object:",
  34229. protocol: "accessing",
  34230. //>>excludeStart("ide", pragmas.excludeIdeData);
  34231. args: ["anObject"],
  34232. source: "object: anObject\x0a\x09object := anObject",
  34233. referencedClasses: [],
  34234. //>>excludeEnd("ide");
  34235. pragmas: [],
  34236. messageSends: []
  34237. }, function ($methodClass){ return function (anObject){
  34238. var self=this,$self=this;
  34239. $self.object=anObject;
  34240. return self;
  34241. }; }),
  34242. $globals.NonBooleanReceiver);
  34243. $core.addMethod(
  34244. $core.method({
  34245. selector: "signalOn:",
  34246. protocol: "instance creation",
  34247. //>>excludeStart("ide", pragmas.excludeIdeData);
  34248. args: ["anObject"],
  34249. source: "signalOn: anObject\x0a\x09^ self new\x0a\x09\x09object: anObject;\x0a\x09\x09signal",
  34250. referencedClasses: [],
  34251. //>>excludeEnd("ide");
  34252. pragmas: [],
  34253. messageSends: ["object:", "new", "signal"]
  34254. }, function ($methodClass){ return function (anObject){
  34255. var self=this,$self=this;
  34256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34257. return $core.withContext(function($ctx1) {
  34258. //>>excludeEnd("ctx");
  34259. var $1;
  34260. $1=$self._new();
  34261. $recv($1)._object_(anObject);
  34262. return $recv($1)._signal();
  34263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34264. }, function($ctx1) {$ctx1.fill(self,"signalOn:",{anObject:anObject})});
  34265. //>>excludeEnd("ctx");
  34266. }; }),
  34267. $globals.NonBooleanReceiver.a$cls);
  34268. });
  34269. define('amber/core/Kernel-Announcements',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  34270. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  34271. var $pkg = $core.addPackage("Kernel-Announcements");
  34272. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  34273. $core.addClass("AnnouncementSubscription", $globals.Object, "Kernel-Announcements");
  34274. $core.setSlots($globals.AnnouncementSubscription, ["valuable", "announcementClass"]);
  34275. //>>excludeStart("ide", pragmas.excludeIdeData);
  34276. $globals.AnnouncementSubscription.comment="I am a single entry in a subscription registry of an `Announcer`.\x0aSeveral subscriptions by the same object is possible.";
  34277. //>>excludeEnd("ide");
  34278. $core.addMethod(
  34279. $core.method({
  34280. selector: "announcementClass",
  34281. protocol: "accessing",
  34282. //>>excludeStart("ide", pragmas.excludeIdeData);
  34283. args: [],
  34284. source: "announcementClass\x0a\x09^ announcementClass",
  34285. referencedClasses: [],
  34286. //>>excludeEnd("ide");
  34287. pragmas: [],
  34288. messageSends: []
  34289. }, function ($methodClass){ return function (){
  34290. var self=this,$self=this;
  34291. return $self.announcementClass;
  34292. }; }),
  34293. $globals.AnnouncementSubscription);
  34294. $core.addMethod(
  34295. $core.method({
  34296. selector: "announcementClass:",
  34297. protocol: "accessing",
  34298. //>>excludeStart("ide", pragmas.excludeIdeData);
  34299. args: ["aClass"],
  34300. source: "announcementClass: aClass\x0a\x09announcementClass := Smalltalk globals at: aClass name",
  34301. referencedClasses: ["Smalltalk"],
  34302. //>>excludeEnd("ide");
  34303. pragmas: [],
  34304. messageSends: ["at:", "globals", "name"]
  34305. }, function ($methodClass){ return function (aClass){
  34306. var self=this,$self=this;
  34307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34308. return $core.withContext(function($ctx1) {
  34309. //>>excludeEnd("ctx");
  34310. $self.announcementClass=$recv($recv($globals.Smalltalk)._globals())._at_($recv(aClass)._name());
  34311. return self;
  34312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34313. }, function($ctx1) {$ctx1.fill(self,"announcementClass:",{aClass:aClass})});
  34314. //>>excludeEnd("ctx");
  34315. }; }),
  34316. $globals.AnnouncementSubscription);
  34317. $core.addMethod(
  34318. $core.method({
  34319. selector: "deliver:",
  34320. protocol: "announcing",
  34321. //>>excludeStart("ide", pragmas.excludeIdeData);
  34322. args: ["anAnnouncement"],
  34323. source: "deliver: anAnnouncement\x0a\x09(self handlesAnnouncement: anAnnouncement)\x0a\x09\x09ifTrue: [ self valuable value: anAnnouncement ]",
  34324. referencedClasses: [],
  34325. //>>excludeEnd("ide");
  34326. pragmas: [],
  34327. messageSends: ["ifTrue:", "handlesAnnouncement:", "value:", "valuable"]
  34328. }, function ($methodClass){ return function (anAnnouncement){
  34329. var self=this,$self=this;
  34330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34331. return $core.withContext(function($ctx1) {
  34332. //>>excludeEnd("ctx");
  34333. if($core.assert($self._handlesAnnouncement_(anAnnouncement))){
  34334. $recv($self._valuable())._value_(anAnnouncement);
  34335. }
  34336. return self;
  34337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34338. }, function($ctx1) {$ctx1.fill(self,"deliver:",{anAnnouncement:anAnnouncement})});
  34339. //>>excludeEnd("ctx");
  34340. }; }),
  34341. $globals.AnnouncementSubscription);
  34342. $core.addMethod(
  34343. $core.method({
  34344. selector: "handlesAnnouncement:",
  34345. protocol: "announcing",
  34346. //>>excludeStart("ide", pragmas.excludeIdeData);
  34347. args: ["anAnnouncement"],
  34348. source: "handlesAnnouncement: anAnnouncement\x0a\x09\x22anAnnouncement might be announced from within another Amber environment\x22\x0a\x09\x0a\x09^ (Smalltalk globals at: anAnnouncement class name) includesBehavior: self announcementClass",
  34349. referencedClasses: ["Smalltalk"],
  34350. //>>excludeEnd("ide");
  34351. pragmas: [],
  34352. messageSends: ["includesBehavior:", "at:", "globals", "name", "class", "announcementClass"]
  34353. }, function ($methodClass){ return function (anAnnouncement){
  34354. var self=this,$self=this;
  34355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34356. return $core.withContext(function($ctx1) {
  34357. //>>excludeEnd("ctx");
  34358. return $recv($recv($recv($globals.Smalltalk)._globals())._at_($recv($recv(anAnnouncement)._class())._name()))._includesBehavior_($self._announcementClass());
  34359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34360. }, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement})});
  34361. //>>excludeEnd("ctx");
  34362. }; }),
  34363. $globals.AnnouncementSubscription);
  34364. $core.addMethod(
  34365. $core.method({
  34366. selector: "receiver",
  34367. protocol: "accessing",
  34368. //>>excludeStart("ide", pragmas.excludeIdeData);
  34369. args: [],
  34370. source: "receiver\x0a\x09^ self valuable receiver",
  34371. referencedClasses: [],
  34372. //>>excludeEnd("ide");
  34373. pragmas: [],
  34374. messageSends: ["receiver", "valuable"]
  34375. }, function ($methodClass){ return function (){
  34376. var self=this,$self=this;
  34377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34378. return $core.withContext(function($ctx1) {
  34379. //>>excludeEnd("ctx");
  34380. return $recv($self._valuable())._receiver();
  34381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34382. }, function($ctx1) {$ctx1.fill(self,"receiver",{})});
  34383. //>>excludeEnd("ctx");
  34384. }; }),
  34385. $globals.AnnouncementSubscription);
  34386. $core.addMethod(
  34387. $core.method({
  34388. selector: "valuable",
  34389. protocol: "accessing",
  34390. //>>excludeStart("ide", pragmas.excludeIdeData);
  34391. args: [],
  34392. source: "valuable\x0a\x09^ valuable",
  34393. referencedClasses: [],
  34394. //>>excludeEnd("ide");
  34395. pragmas: [],
  34396. messageSends: []
  34397. }, function ($methodClass){ return function (){
  34398. var self=this,$self=this;
  34399. return $self.valuable;
  34400. }; }),
  34401. $globals.AnnouncementSubscription);
  34402. $core.addMethod(
  34403. $core.method({
  34404. selector: "valuable:",
  34405. protocol: "accessing",
  34406. //>>excludeStart("ide", pragmas.excludeIdeData);
  34407. args: ["aValuable"],
  34408. source: "valuable: aValuable\x0a\x09valuable := aValuable",
  34409. referencedClasses: [],
  34410. //>>excludeEnd("ide");
  34411. pragmas: [],
  34412. messageSends: []
  34413. }, function ($methodClass){ return function (aValuable){
  34414. var self=this,$self=this;
  34415. $self.valuable=aValuable;
  34416. return self;
  34417. }; }),
  34418. $globals.AnnouncementSubscription);
  34419. $core.addClass("AnnouncementValuable", $globals.Object, "Kernel-Announcements");
  34420. $core.setSlots($globals.AnnouncementValuable, ["valuable", "receiver"]);
  34421. //>>excludeStart("ide", pragmas.excludeIdeData);
  34422. $globals.AnnouncementValuable.comment="I wrap `valuable` objects (typically instances of `BlockClosure`) with a `receiver` to be able to unregister subscriptions based on a `receiver`.";
  34423. //>>excludeEnd("ide");
  34424. $core.addMethod(
  34425. $core.method({
  34426. selector: "receiver",
  34427. protocol: "accessing",
  34428. //>>excludeStart("ide", pragmas.excludeIdeData);
  34429. args: [],
  34430. source: "receiver\x0a\x09^ receiver",
  34431. referencedClasses: [],
  34432. //>>excludeEnd("ide");
  34433. pragmas: [],
  34434. messageSends: []
  34435. }, function ($methodClass){ return function (){
  34436. var self=this,$self=this;
  34437. return $self.receiver;
  34438. }; }),
  34439. $globals.AnnouncementValuable);
  34440. $core.addMethod(
  34441. $core.method({
  34442. selector: "receiver:",
  34443. protocol: "accessing",
  34444. //>>excludeStart("ide", pragmas.excludeIdeData);
  34445. args: ["anObject"],
  34446. source: "receiver: anObject\x0a\x09receiver := anObject",
  34447. referencedClasses: [],
  34448. //>>excludeEnd("ide");
  34449. pragmas: [],
  34450. messageSends: []
  34451. }, function ($methodClass){ return function (anObject){
  34452. var self=this,$self=this;
  34453. $self.receiver=anObject;
  34454. return self;
  34455. }; }),
  34456. $globals.AnnouncementValuable);
  34457. $core.addMethod(
  34458. $core.method({
  34459. selector: "valuable",
  34460. protocol: "accessing",
  34461. //>>excludeStart("ide", pragmas.excludeIdeData);
  34462. args: [],
  34463. source: "valuable\x0a\x09^ valuable",
  34464. referencedClasses: [],
  34465. //>>excludeEnd("ide");
  34466. pragmas: [],
  34467. messageSends: []
  34468. }, function ($methodClass){ return function (){
  34469. var self=this,$self=this;
  34470. return $self.valuable;
  34471. }; }),
  34472. $globals.AnnouncementValuable);
  34473. $core.addMethod(
  34474. $core.method({
  34475. selector: "valuable:",
  34476. protocol: "accessing",
  34477. //>>excludeStart("ide", pragmas.excludeIdeData);
  34478. args: ["anObject"],
  34479. source: "valuable: anObject\x0a\x09valuable := anObject",
  34480. referencedClasses: [],
  34481. //>>excludeEnd("ide");
  34482. pragmas: [],
  34483. messageSends: []
  34484. }, function ($methodClass){ return function (anObject){
  34485. var self=this,$self=this;
  34486. $self.valuable=anObject;
  34487. return self;
  34488. }; }),
  34489. $globals.AnnouncementValuable);
  34490. $core.addMethod(
  34491. $core.method({
  34492. selector: "value",
  34493. protocol: "evaluating",
  34494. //>>excludeStart("ide", pragmas.excludeIdeData);
  34495. args: [],
  34496. source: "value\x0a\x09^ self valuable value",
  34497. referencedClasses: [],
  34498. //>>excludeEnd("ide");
  34499. pragmas: [],
  34500. messageSends: ["value", "valuable"]
  34501. }, function ($methodClass){ return function (){
  34502. var self=this,$self=this;
  34503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34504. return $core.withContext(function($ctx1) {
  34505. //>>excludeEnd("ctx");
  34506. return $recv($self._valuable())._value();
  34507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34508. }, function($ctx1) {$ctx1.fill(self,"value",{})});
  34509. //>>excludeEnd("ctx");
  34510. }; }),
  34511. $globals.AnnouncementValuable);
  34512. $core.addMethod(
  34513. $core.method({
  34514. selector: "value:",
  34515. protocol: "evaluating",
  34516. //>>excludeStart("ide", pragmas.excludeIdeData);
  34517. args: ["anObject"],
  34518. source: "value: anObject\x0a\x09^ self valuable value: anObject",
  34519. referencedClasses: [],
  34520. //>>excludeEnd("ide");
  34521. pragmas: [],
  34522. messageSends: ["value:", "valuable"]
  34523. }, function ($methodClass){ return function (anObject){
  34524. var self=this,$self=this;
  34525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34526. return $core.withContext(function($ctx1) {
  34527. //>>excludeEnd("ctx");
  34528. return $recv($self._valuable())._value_(anObject);
  34529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34530. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
  34531. //>>excludeEnd("ctx");
  34532. }; }),
  34533. $globals.AnnouncementValuable);
  34534. $core.addClass("Announcer", $globals.Object, "Kernel-Announcements");
  34535. $core.setSlots($globals.Announcer, ["registry", "subscriptions"]);
  34536. //>>excludeStart("ide", pragmas.excludeIdeData);
  34537. $globals.Announcer.comment="I hold annoncement subscriptions (instances of `AnnouncementSubscription`) in a private registry.\x0aI announce (trigger) announces, which are then dispatched to all subscriptions.\x0a\x0aThe code is based on the announcements as [described by Vassili Bykov](http://www.cincomsmalltalk.com/userblogs/vbykov/blogView?searchCategory=Announcements%20Framework).\x0a\x0a## API\x0a\x0aUse `#announce:` to trigger an announcement.\x0a\x0aUse `#on:do:` or `#on:send:to:` to register subscriptions.\x0a\x0aWhen using `#on:send:to:`, unregistration can be done with `#unregister:`.\x0a\x0a## Usage example:\x0a\x0a SystemAnnouncer current\x0a on: ClassAdded\x0a do: [ :ann | window alert: ann theClass name, ' added' ].";
  34538. //>>excludeEnd("ide");
  34539. $core.addMethod(
  34540. $core.method({
  34541. selector: "announce:",
  34542. protocol: "announcing",
  34543. //>>excludeStart("ide", pragmas.excludeIdeData);
  34544. args: ["anAnnouncement"],
  34545. source: "announce: anAnnouncement\x0a\x09subscriptions do: [ :each |\x0a\x09\x09each deliver: anAnnouncement ]",
  34546. referencedClasses: [],
  34547. //>>excludeEnd("ide");
  34548. pragmas: [],
  34549. messageSends: ["do:", "deliver:"]
  34550. }, function ($methodClass){ return function (anAnnouncement){
  34551. var self=this,$self=this;
  34552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34553. return $core.withContext(function($ctx1) {
  34554. //>>excludeEnd("ctx");
  34555. $recv($self.subscriptions)._do_((function(each){
  34556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34557. return $core.withContext(function($ctx2) {
  34558. //>>excludeEnd("ctx");
  34559. return $recv(each)._deliver_(anAnnouncement);
  34560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34561. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  34562. //>>excludeEnd("ctx");
  34563. }));
  34564. return self;
  34565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34566. }, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement})});
  34567. //>>excludeEnd("ctx");
  34568. }; }),
  34569. $globals.Announcer);
  34570. $core.addMethod(
  34571. $core.method({
  34572. selector: "initialize",
  34573. protocol: "initialization",
  34574. //>>excludeStart("ide", pragmas.excludeIdeData);
  34575. args: [],
  34576. source: "initialize\x0a\x09super initialize.\x0a\x09subscriptions := OrderedCollection new",
  34577. referencedClasses: ["OrderedCollection"],
  34578. //>>excludeEnd("ide");
  34579. pragmas: [],
  34580. messageSends: ["initialize", "new"]
  34581. }, function ($methodClass){ return function (){
  34582. var self=this,$self=this;
  34583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34584. return $core.withContext(function($ctx1) {
  34585. //>>excludeEnd("ctx");
  34586. [(
  34587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34588. $ctx1.supercall = true,
  34589. //>>excludeEnd("ctx");
  34590. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  34591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34592. ,$ctx1.supercall = false
  34593. //>>excludeEnd("ctx");
  34594. ][0];
  34595. $self.subscriptions=$recv($globals.OrderedCollection)._new();
  34596. return self;
  34597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34598. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  34599. //>>excludeEnd("ctx");
  34600. }; }),
  34601. $globals.Announcer);
  34602. $core.addMethod(
  34603. $core.method({
  34604. selector: "on:do:",
  34605. protocol: "subscribing",
  34606. //>>excludeStart("ide", pragmas.excludeIdeData);
  34607. args: ["aClass", "aBlock"],
  34608. source: "on: aClass do: aBlock\x0a\x09self on: aClass do: aBlock for: nil",
  34609. referencedClasses: [],
  34610. //>>excludeEnd("ide");
  34611. pragmas: [],
  34612. messageSends: ["on:do:for:"]
  34613. }, function ($methodClass){ return function (aClass,aBlock){
  34614. var self=this,$self=this;
  34615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34616. return $core.withContext(function($ctx1) {
  34617. //>>excludeEnd("ctx");
  34618. $self._on_do_for_(aClass,aBlock,nil);
  34619. return self;
  34620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34621. }, function($ctx1) {$ctx1.fill(self,"on:do:",{aClass:aClass,aBlock:aBlock})});
  34622. //>>excludeEnd("ctx");
  34623. }; }),
  34624. $globals.Announcer);
  34625. $core.addMethod(
  34626. $core.method({
  34627. selector: "on:do:for:",
  34628. protocol: "subscribing",
  34629. //>>excludeStart("ide", pragmas.excludeIdeData);
  34630. args: ["aClass", "aBlock", "aReceiver"],
  34631. source: "on: aClass do: aBlock for: aReceiver\x0a\x09subscriptions add: (AnnouncementSubscription new\x0a\x09\x09valuable: (AnnouncementValuable new\x0a\x09\x09\x09valuable: aBlock;\x0a\x09\x09\x09receiver: aReceiver;\x0a\x09\x09\x09yourself);\x0a\x09\x09announcementClass: aClass;\x0a\x09\x09yourself)",
  34632. referencedClasses: ["AnnouncementSubscription", "AnnouncementValuable"],
  34633. //>>excludeEnd("ide");
  34634. pragmas: [],
  34635. messageSends: ["add:", "valuable:", "new", "receiver:", "yourself", "announcementClass:"]
  34636. }, function ($methodClass){ return function (aClass,aBlock,aReceiver){
  34637. var self=this,$self=this;
  34638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34639. return $core.withContext(function($ctx1) {
  34640. //>>excludeEnd("ctx");
  34641. var $1,$2,$3;
  34642. $1=$self.subscriptions;
  34643. $2=[$recv($globals.AnnouncementSubscription)._new()
  34644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34645. ,$ctx1.sendIdx["new"]=1
  34646. //>>excludeEnd("ctx");
  34647. ][0];
  34648. $3=$recv($globals.AnnouncementValuable)._new();
  34649. $recv($3)._valuable_(aBlock);
  34650. $recv($3)._receiver_(aReceiver);
  34651. [$recv($2)._valuable_([$recv($3)._yourself()
  34652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34653. ,$ctx1.sendIdx["yourself"]=1
  34654. //>>excludeEnd("ctx");
  34655. ][0])
  34656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34657. ,$ctx1.sendIdx["valuable:"]=1
  34658. //>>excludeEnd("ctx");
  34659. ][0];
  34660. $recv($2)._announcementClass_(aClass);
  34661. $recv($1)._add_($recv($2)._yourself());
  34662. return self;
  34663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34664. }, function($ctx1) {$ctx1.fill(self,"on:do:for:",{aClass:aClass,aBlock:aBlock,aReceiver:aReceiver})});
  34665. //>>excludeEnd("ctx");
  34666. }; }),
  34667. $globals.Announcer);
  34668. $core.addMethod(
  34669. $core.method({
  34670. selector: "on:doOnce:",
  34671. protocol: "subscribing",
  34672. //>>excludeStart("ide", pragmas.excludeIdeData);
  34673. args: ["aClass", "aBlock"],
  34674. source: "on: aClass doOnce: aBlock\x0a\x09| subscription |\x0a\x09\x0a\x09subscription := AnnouncementSubscription new\x0a\x09\x09announcementClass: aClass;\x0a\x09\x09yourself.\x0a\x09subscription valuable: [ :ann |\x0a\x09\x09subscriptions remove: subscription.\x0a\x09\x09aBlock value: ann ].\x0a\x0a\x09subscriptions add: subscription",
  34675. referencedClasses: ["AnnouncementSubscription"],
  34676. //>>excludeEnd("ide");
  34677. pragmas: [],
  34678. messageSends: ["announcementClass:", "new", "yourself", "valuable:", "remove:", "value:", "add:"]
  34679. }, function ($methodClass){ return function (aClass,aBlock){
  34680. var self=this,$self=this;
  34681. var subscription;
  34682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34683. return $core.withContext(function($ctx1) {
  34684. //>>excludeEnd("ctx");
  34685. var $1;
  34686. $1=$recv($globals.AnnouncementSubscription)._new();
  34687. $recv($1)._announcementClass_(aClass);
  34688. subscription=$recv($1)._yourself();
  34689. $recv(subscription)._valuable_((function(ann){
  34690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34691. return $core.withContext(function($ctx2) {
  34692. //>>excludeEnd("ctx");
  34693. $recv($self.subscriptions)._remove_(subscription);
  34694. return $recv(aBlock)._value_(ann);
  34695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34696. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,1)});
  34697. //>>excludeEnd("ctx");
  34698. }));
  34699. $recv($self.subscriptions)._add_(subscription);
  34700. return self;
  34701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34702. }, function($ctx1) {$ctx1.fill(self,"on:doOnce:",{aClass:aClass,aBlock:aBlock,subscription:subscription})});
  34703. //>>excludeEnd("ctx");
  34704. }; }),
  34705. $globals.Announcer);
  34706. $core.addMethod(
  34707. $core.method({
  34708. selector: "on:send:to:",
  34709. protocol: "subscribing",
  34710. //>>excludeStart("ide", pragmas.excludeIdeData);
  34711. args: ["aClass", "aSelector", "anObject"],
  34712. source: "on: aClass send: aSelector to: anObject\x0a\x09subscriptions add: (AnnouncementSubscription new\x0a\x09\x09valuable: (MessageSend new\x0a\x09\x09\x09receiver: anObject;\x0a\x09\x09\x09selector: aSelector;\x0a\x09\x09\x09yourself);\x0a\x09\x09announcementClass: aClass;\x0a\x09\x09yourself)",
  34713. referencedClasses: ["AnnouncementSubscription", "MessageSend"],
  34714. //>>excludeEnd("ide");
  34715. pragmas: [],
  34716. messageSends: ["add:", "valuable:", "new", "receiver:", "selector:", "yourself", "announcementClass:"]
  34717. }, function ($methodClass){ return function (aClass,aSelector,anObject){
  34718. var self=this,$self=this;
  34719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34720. return $core.withContext(function($ctx1) {
  34721. //>>excludeEnd("ctx");
  34722. var $1,$2,$3;
  34723. $1=$self.subscriptions;
  34724. $2=[$recv($globals.AnnouncementSubscription)._new()
  34725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34726. ,$ctx1.sendIdx["new"]=1
  34727. //>>excludeEnd("ctx");
  34728. ][0];
  34729. $3=$recv($globals.MessageSend)._new();
  34730. $recv($3)._receiver_(anObject);
  34731. $recv($3)._selector_(aSelector);
  34732. $recv($2)._valuable_([$recv($3)._yourself()
  34733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34734. ,$ctx1.sendIdx["yourself"]=1
  34735. //>>excludeEnd("ctx");
  34736. ][0]);
  34737. $recv($2)._announcementClass_(aClass);
  34738. $recv($1)._add_($recv($2)._yourself());
  34739. return self;
  34740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34741. }, function($ctx1) {$ctx1.fill(self,"on:send:to:",{aClass:aClass,aSelector:aSelector,anObject:anObject})});
  34742. //>>excludeEnd("ctx");
  34743. }; }),
  34744. $globals.Announcer);
  34745. $core.addMethod(
  34746. $core.method({
  34747. selector: "unsubscribe:",
  34748. protocol: "subscribing",
  34749. //>>excludeStart("ide", pragmas.excludeIdeData);
  34750. args: ["anObject"],
  34751. source: "unsubscribe: anObject\x0a\x09subscriptions := subscriptions reject: [ :each |\x0a\x09\x09each receiver = anObject ]",
  34752. referencedClasses: [],
  34753. //>>excludeEnd("ide");
  34754. pragmas: [],
  34755. messageSends: ["reject:", "=", "receiver"]
  34756. }, function ($methodClass){ return function (anObject){
  34757. var self=this,$self=this;
  34758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34759. return $core.withContext(function($ctx1) {
  34760. //>>excludeEnd("ctx");
  34761. $self.subscriptions=$recv($self.subscriptions)._reject_((function(each){
  34762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34763. return $core.withContext(function($ctx2) {
  34764. //>>excludeEnd("ctx");
  34765. return $recv($recv(each)._receiver()).__eq(anObject);
  34766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34767. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  34768. //>>excludeEnd("ctx");
  34769. }));
  34770. return self;
  34771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34772. }, function($ctx1) {$ctx1.fill(self,"unsubscribe:",{anObject:anObject})});
  34773. //>>excludeEnd("ctx");
  34774. }; }),
  34775. $globals.Announcer);
  34776. $core.addClass("SystemAnnouncer", $globals.Announcer, "Kernel-Announcements");
  34777. //>>excludeStart("ide", pragmas.excludeIdeData);
  34778. $globals.SystemAnnouncer.comment="My unique instance is the global announcer handling all Amber system-related announces.\x0a\x0a## API\x0a\x0aAccess to the unique instance is done via `#current`";
  34779. //>>excludeEnd("ide");
  34780. $core.setSlots($globals.SystemAnnouncer.a$cls, ["current"]);
  34781. $core.addMethod(
  34782. $core.method({
  34783. selector: "current",
  34784. protocol: "accessing",
  34785. //>>excludeStart("ide", pragmas.excludeIdeData);
  34786. args: [],
  34787. source: "current\x0a\x09^ current ifNil: [ current := super new ]",
  34788. referencedClasses: [],
  34789. //>>excludeEnd("ide");
  34790. pragmas: [],
  34791. messageSends: ["ifNil:", "new"]
  34792. }, function ($methodClass){ return function (){
  34793. var self=this,$self=this;
  34794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34795. return $core.withContext(function($ctx1) {
  34796. //>>excludeEnd("ctx");
  34797. var $1;
  34798. $1=$self.current;
  34799. if($1 == null || $1.a$nil){
  34800. $self.current=[(
  34801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34802. $ctx1.supercall = true,
  34803. //>>excludeEnd("ctx");
  34804. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
  34805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34806. ,$ctx1.supercall = false
  34807. //>>excludeEnd("ctx");
  34808. ][0];
  34809. return $self.current;
  34810. } else {
  34811. return $1;
  34812. }
  34813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34814. }, function($ctx1) {$ctx1.fill(self,"current",{})});
  34815. //>>excludeEnd("ctx");
  34816. }; }),
  34817. $globals.SystemAnnouncer.a$cls);
  34818. $core.addMethod(
  34819. $core.method({
  34820. selector: "new",
  34821. protocol: "instance creation",
  34822. //>>excludeStart("ide", pragmas.excludeIdeData);
  34823. args: [],
  34824. source: "new\x0a\x09self shouldNotImplement",
  34825. referencedClasses: [],
  34826. //>>excludeEnd("ide");
  34827. pragmas: [],
  34828. messageSends: ["shouldNotImplement"]
  34829. }, function ($methodClass){ return function (){
  34830. var self=this,$self=this;
  34831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34832. return $core.withContext(function($ctx1) {
  34833. //>>excludeEnd("ctx");
  34834. $self._shouldNotImplement();
  34835. return self;
  34836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34837. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  34838. //>>excludeEnd("ctx");
  34839. }; }),
  34840. $globals.SystemAnnouncer.a$cls);
  34841. $core.addClass("SystemAnnouncement", $globals.Object, "Kernel-Announcements");
  34842. //>>excludeStart("ide", pragmas.excludeIdeData);
  34843. $globals.SystemAnnouncement.comment="I am the superclass of all system announcements";
  34844. //>>excludeEnd("ide");
  34845. $core.addMethod(
  34846. $core.method({
  34847. selector: "classTag",
  34848. protocol: "accessing",
  34849. //>>excludeStart("ide", pragmas.excludeIdeData);
  34850. args: [],
  34851. 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^ 'announcement'",
  34852. referencedClasses: [],
  34853. //>>excludeEnd("ide");
  34854. pragmas: [],
  34855. messageSends: []
  34856. }, function ($methodClass){ return function (){
  34857. var self=this,$self=this;
  34858. return "announcement";
  34859. }; }),
  34860. $globals.SystemAnnouncement.a$cls);
  34861. $core.addClass("ClassAnnouncement", $globals.SystemAnnouncement, "Kernel-Announcements");
  34862. $core.setSlots($globals.ClassAnnouncement, ["theClass"]);
  34863. //>>excludeStart("ide", pragmas.excludeIdeData);
  34864. $globals.ClassAnnouncement.comment="I am the abstract superclass of class-related announcements.";
  34865. //>>excludeEnd("ide");
  34866. $core.addMethod(
  34867. $core.method({
  34868. selector: "theClass",
  34869. protocol: "accessing",
  34870. //>>excludeStart("ide", pragmas.excludeIdeData);
  34871. args: [],
  34872. source: "theClass\x0a\x09^ theClass",
  34873. referencedClasses: [],
  34874. //>>excludeEnd("ide");
  34875. pragmas: [],
  34876. messageSends: []
  34877. }, function ($methodClass){ return function (){
  34878. var self=this,$self=this;
  34879. return $self.theClass;
  34880. }; }),
  34881. $globals.ClassAnnouncement);
  34882. $core.addMethod(
  34883. $core.method({
  34884. selector: "theClass:",
  34885. protocol: "accessing",
  34886. //>>excludeStart("ide", pragmas.excludeIdeData);
  34887. args: ["aClass"],
  34888. source: "theClass: aClass\x0a\x09theClass := aClass",
  34889. referencedClasses: [],
  34890. //>>excludeEnd("ide");
  34891. pragmas: [],
  34892. messageSends: []
  34893. }, function ($methodClass){ return function (aClass){
  34894. var self=this,$self=this;
  34895. $self.theClass=aClass;
  34896. return self;
  34897. }; }),
  34898. $globals.ClassAnnouncement);
  34899. $core.addClass("ClassAdded", $globals.ClassAnnouncement, "Kernel-Announcements");
  34900. //>>excludeStart("ide", pragmas.excludeIdeData);
  34901. $globals.ClassAdded.comment="I am emitted when a class is added to the system.\x0aSee ClassBuilder >> #addSubclassOf:... methods";
  34902. //>>excludeEnd("ide");
  34903. $core.addClass("ClassCommentChanged", $globals.ClassAnnouncement, "Kernel-Announcements");
  34904. //>>excludeStart("ide", pragmas.excludeIdeData);
  34905. $globals.ClassCommentChanged.comment="I am emitted when the comment of a class changes. (Behavior >> #comment)";
  34906. //>>excludeEnd("ide");
  34907. $core.addClass("ClassDefinitionChanged", $globals.ClassAnnouncement, "Kernel-Announcements");
  34908. //>>excludeStart("ide", pragmas.excludeIdeData);
  34909. $globals.ClassDefinitionChanged.comment="I am emitted when the definition of a class changes.\x0aSee ClassBuilder >> #class:instanceVariableNames:";
  34910. //>>excludeEnd("ide");
  34911. $core.addClass("ClassMigrated", $globals.ClassAnnouncement, "Kernel-Announcements");
  34912. $core.setSlots($globals.ClassMigrated, ["oldClass"]);
  34913. //>>excludeStart("ide", pragmas.excludeIdeData);
  34914. $globals.ClassMigrated.comment="I am emitted when a class is migrated.";
  34915. //>>excludeEnd("ide");
  34916. $core.addMethod(
  34917. $core.method({
  34918. selector: "oldClass",
  34919. protocol: "accessing",
  34920. //>>excludeStart("ide", pragmas.excludeIdeData);
  34921. args: [],
  34922. source: "oldClass\x0a\x09^ oldClass",
  34923. referencedClasses: [],
  34924. //>>excludeEnd("ide");
  34925. pragmas: [],
  34926. messageSends: []
  34927. }, function ($methodClass){ return function (){
  34928. var self=this,$self=this;
  34929. return $self.oldClass;
  34930. }; }),
  34931. $globals.ClassMigrated);
  34932. $core.addMethod(
  34933. $core.method({
  34934. selector: "oldClass:",
  34935. protocol: "accessing",
  34936. //>>excludeStart("ide", pragmas.excludeIdeData);
  34937. args: ["aClass"],
  34938. source: "oldClass: aClass\x0a\x09oldClass := aClass",
  34939. referencedClasses: [],
  34940. //>>excludeEnd("ide");
  34941. pragmas: [],
  34942. messageSends: []
  34943. }, function ($methodClass){ return function (aClass){
  34944. var self=this,$self=this;
  34945. $self.oldClass=aClass;
  34946. return self;
  34947. }; }),
  34948. $globals.ClassMigrated);
  34949. $core.addClass("ClassMoved", $globals.ClassAnnouncement, "Kernel-Announcements");
  34950. $core.setSlots($globals.ClassMoved, ["oldPackage"]);
  34951. //>>excludeStart("ide", pragmas.excludeIdeData);
  34952. $globals.ClassMoved.comment="I am emitted when a class is moved from one package to another.";
  34953. //>>excludeEnd("ide");
  34954. $core.addMethod(
  34955. $core.method({
  34956. selector: "oldPackage",
  34957. protocol: "accessing",
  34958. //>>excludeStart("ide", pragmas.excludeIdeData);
  34959. args: [],
  34960. source: "oldPackage\x0a\x09^ oldPackage",
  34961. referencedClasses: [],
  34962. //>>excludeEnd("ide");
  34963. pragmas: [],
  34964. messageSends: []
  34965. }, function ($methodClass){ return function (){
  34966. var self=this,$self=this;
  34967. return $self.oldPackage;
  34968. }; }),
  34969. $globals.ClassMoved);
  34970. $core.addMethod(
  34971. $core.method({
  34972. selector: "oldPackage:",
  34973. protocol: "accessing",
  34974. //>>excludeStart("ide", pragmas.excludeIdeData);
  34975. args: ["aPackage"],
  34976. source: "oldPackage: aPackage\x0a\x09oldPackage := aPackage",
  34977. referencedClasses: [],
  34978. //>>excludeEnd("ide");
  34979. pragmas: [],
  34980. messageSends: []
  34981. }, function ($methodClass){ return function (aPackage){
  34982. var self=this,$self=this;
  34983. $self.oldPackage=aPackage;
  34984. return self;
  34985. }; }),
  34986. $globals.ClassMoved);
  34987. $core.addClass("ClassRemoved", $globals.ClassAnnouncement, "Kernel-Announcements");
  34988. //>>excludeStart("ide", pragmas.excludeIdeData);
  34989. $globals.ClassRemoved.comment="I am emitted when a class is removed.\x0aSee Smalltalk >> #removeClass:";
  34990. //>>excludeEnd("ide");
  34991. $core.addClass("ClassRenamed", $globals.ClassAnnouncement, "Kernel-Announcements");
  34992. //>>excludeStart("ide", pragmas.excludeIdeData);
  34993. $globals.ClassRenamed.comment="I am emitted when a class is renamed.\x0aSee ClassBuilder >> #renameClass:to:";
  34994. //>>excludeEnd("ide");
  34995. $core.addClass("MethodAnnouncement", $globals.SystemAnnouncement, "Kernel-Announcements");
  34996. $core.setSlots($globals.MethodAnnouncement, ["method"]);
  34997. //>>excludeStart("ide", pragmas.excludeIdeData);
  34998. $globals.MethodAnnouncement.comment="I am the abstract superclass of method-related announcements.";
  34999. //>>excludeEnd("ide");
  35000. $core.addMethod(
  35001. $core.method({
  35002. selector: "method",
  35003. protocol: "accessing",
  35004. //>>excludeStart("ide", pragmas.excludeIdeData);
  35005. args: [],
  35006. source: "method\x0a\x09^ method",
  35007. referencedClasses: [],
  35008. //>>excludeEnd("ide");
  35009. pragmas: [],
  35010. messageSends: []
  35011. }, function ($methodClass){ return function (){
  35012. var self=this,$self=this;
  35013. return $self.method;
  35014. }; }),
  35015. $globals.MethodAnnouncement);
  35016. $core.addMethod(
  35017. $core.method({
  35018. selector: "method:",
  35019. protocol: "accessing",
  35020. //>>excludeStart("ide", pragmas.excludeIdeData);
  35021. args: ["aCompiledMethod"],
  35022. source: "method: aCompiledMethod\x0a\x09method := aCompiledMethod",
  35023. referencedClasses: [],
  35024. //>>excludeEnd("ide");
  35025. pragmas: [],
  35026. messageSends: []
  35027. }, function ($methodClass){ return function (aCompiledMethod){
  35028. var self=this,$self=this;
  35029. $self.method=aCompiledMethod;
  35030. return self;
  35031. }; }),
  35032. $globals.MethodAnnouncement);
  35033. $core.addClass("MethodAdded", $globals.MethodAnnouncement, "Kernel-Announcements");
  35034. //>>excludeStart("ide", pragmas.excludeIdeData);
  35035. $globals.MethodAdded.comment="I am emitted when a `CompiledMethod` is added to a class.";
  35036. //>>excludeEnd("ide");
  35037. $core.addClass("MethodModified", $globals.MethodAnnouncement, "Kernel-Announcements");
  35038. $core.setSlots($globals.MethodModified, ["oldMethod"]);
  35039. //>>excludeStart("ide", pragmas.excludeIdeData);
  35040. $globals.MethodModified.comment="I am emitted when a `CompiledMethod` is modified (a new method is installed). I hold a reference to the old method being replaced.";
  35041. //>>excludeEnd("ide");
  35042. $core.addMethod(
  35043. $core.method({
  35044. selector: "oldMethod",
  35045. protocol: "accessing",
  35046. //>>excludeStart("ide", pragmas.excludeIdeData);
  35047. args: [],
  35048. source: "oldMethod\x0a\x09^ oldMethod",
  35049. referencedClasses: [],
  35050. //>>excludeEnd("ide");
  35051. pragmas: [],
  35052. messageSends: []
  35053. }, function ($methodClass){ return function (){
  35054. var self=this,$self=this;
  35055. return $self.oldMethod;
  35056. }; }),
  35057. $globals.MethodModified);
  35058. $core.addMethod(
  35059. $core.method({
  35060. selector: "oldMethod:",
  35061. protocol: "accessing",
  35062. //>>excludeStart("ide", pragmas.excludeIdeData);
  35063. args: ["aMethod"],
  35064. source: "oldMethod: aMethod\x0a\x09oldMethod := aMethod",
  35065. referencedClasses: [],
  35066. //>>excludeEnd("ide");
  35067. pragmas: [],
  35068. messageSends: []
  35069. }, function ($methodClass){ return function (aMethod){
  35070. var self=this,$self=this;
  35071. $self.oldMethod=aMethod;
  35072. return self;
  35073. }; }),
  35074. $globals.MethodModified);
  35075. $core.addClass("MethodMoved", $globals.MethodAnnouncement, "Kernel-Announcements");
  35076. $core.setSlots($globals.MethodMoved, ["oldProtocol"]);
  35077. //>>excludeStart("ide", pragmas.excludeIdeData);
  35078. $globals.MethodMoved.comment="I am emitted when a `CompiledMethod` is moved to another protocol. I hold a refernce to the old protocol of the method.";
  35079. //>>excludeEnd("ide");
  35080. $core.addMethod(
  35081. $core.method({
  35082. selector: "oldProtocol",
  35083. protocol: "accessing",
  35084. //>>excludeStart("ide", pragmas.excludeIdeData);
  35085. args: [],
  35086. source: "oldProtocol\x0a\x09^ oldProtocol",
  35087. referencedClasses: [],
  35088. //>>excludeEnd("ide");
  35089. pragmas: [],
  35090. messageSends: []
  35091. }, function ($methodClass){ return function (){
  35092. var self=this,$self=this;
  35093. return $self.oldProtocol;
  35094. }; }),
  35095. $globals.MethodMoved);
  35096. $core.addMethod(
  35097. $core.method({
  35098. selector: "oldProtocol:",
  35099. protocol: "accessing",
  35100. //>>excludeStart("ide", pragmas.excludeIdeData);
  35101. args: ["aString"],
  35102. source: "oldProtocol: aString\x0a\x09oldProtocol := aString",
  35103. referencedClasses: [],
  35104. //>>excludeEnd("ide");
  35105. pragmas: [],
  35106. messageSends: []
  35107. }, function ($methodClass){ return function (aString){
  35108. var self=this,$self=this;
  35109. $self.oldProtocol=aString;
  35110. return self;
  35111. }; }),
  35112. $globals.MethodMoved);
  35113. $core.addClass("MethodRemoved", $globals.MethodAnnouncement, "Kernel-Announcements");
  35114. //>>excludeStart("ide", pragmas.excludeIdeData);
  35115. $globals.MethodRemoved.comment="I am emitted when a `CompiledMethod` is removed from a class.";
  35116. //>>excludeEnd("ide");
  35117. $core.addClass("PackageAnnouncement", $globals.SystemAnnouncement, "Kernel-Announcements");
  35118. $core.setSlots($globals.PackageAnnouncement, ["package"]);
  35119. //>>excludeStart("ide", pragmas.excludeIdeData);
  35120. $globals.PackageAnnouncement.comment="I am the abstract superclass of package-related announcements.";
  35121. //>>excludeEnd("ide");
  35122. $core.addMethod(
  35123. $core.method({
  35124. selector: "package",
  35125. protocol: "accessing",
  35126. //>>excludeStart("ide", pragmas.excludeIdeData);
  35127. args: [],
  35128. source: "package\x0a\x09^ package",
  35129. referencedClasses: [],
  35130. //>>excludeEnd("ide");
  35131. pragmas: [],
  35132. messageSends: []
  35133. }, function ($methodClass){ return function (){
  35134. var self=this,$self=this;
  35135. return $self.package;
  35136. }; }),
  35137. $globals.PackageAnnouncement);
  35138. $core.addMethod(
  35139. $core.method({
  35140. selector: "package:",
  35141. protocol: "accessing",
  35142. //>>excludeStart("ide", pragmas.excludeIdeData);
  35143. args: ["aPackage"],
  35144. source: "package: aPackage\x0a\x09package := aPackage",
  35145. referencedClasses: [],
  35146. //>>excludeEnd("ide");
  35147. pragmas: [],
  35148. messageSends: []
  35149. }, function ($methodClass){ return function (aPackage){
  35150. var self=this,$self=this;
  35151. $self.package=aPackage;
  35152. return self;
  35153. }; }),
  35154. $globals.PackageAnnouncement);
  35155. $core.addClass("PackageAdded", $globals.PackageAnnouncement, "Kernel-Announcements");
  35156. //>>excludeStart("ide", pragmas.excludeIdeData);
  35157. $globals.PackageAdded.comment="I am emitted when a `Package` is added to the system.";
  35158. //>>excludeEnd("ide");
  35159. $core.addClass("PackageClean", $globals.PackageAnnouncement, "Kernel-Announcements");
  35160. //>>excludeStart("ide", pragmas.excludeIdeData);
  35161. $globals.PackageClean.comment="I am emitted when a package is committed and becomes clean.";
  35162. //>>excludeEnd("ide");
  35163. $core.addClass("PackageDirty", $globals.PackageAnnouncement, "Kernel-Announcements");
  35164. //>>excludeStart("ide", pragmas.excludeIdeData);
  35165. $globals.PackageDirty.comment="I am emitted when a package becomes dirty.";
  35166. //>>excludeEnd("ide");
  35167. $core.addClass("PackageRemoved", $globals.PackageAnnouncement, "Kernel-Announcements");
  35168. //>>excludeStart("ide", pragmas.excludeIdeData);
  35169. $globals.PackageRemoved.comment="I am emitted when a `Package` is removed from the system.";
  35170. //>>excludeEnd("ide");
  35171. $core.addClass("ProtocolAnnouncement", $globals.SystemAnnouncement, "Kernel-Announcements");
  35172. $core.setSlots($globals.ProtocolAnnouncement, ["theClass", "protocol"]);
  35173. //>>excludeStart("ide", pragmas.excludeIdeData);
  35174. $globals.ProtocolAnnouncement.comment="I am the abstract superclass of protocol-related announcements.";
  35175. //>>excludeEnd("ide");
  35176. $core.addMethod(
  35177. $core.method({
  35178. selector: "package",
  35179. protocol: "accessing",
  35180. //>>excludeStart("ide", pragmas.excludeIdeData);
  35181. args: [],
  35182. source: "package\x0a\x09\x0a\x09^ self theClass ifNotNil: [ :class | class packageOfProtocol: self protocol ]",
  35183. referencedClasses: [],
  35184. //>>excludeEnd("ide");
  35185. pragmas: [],
  35186. messageSends: ["ifNotNil:", "theClass", "packageOfProtocol:", "protocol"]
  35187. }, function ($methodClass){ return function (){
  35188. var self=this,$self=this;
  35189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35190. return $core.withContext(function($ctx1) {
  35191. //>>excludeEnd("ctx");
  35192. var $1;
  35193. $1=$self._theClass();
  35194. if($1 == null || $1.a$nil){
  35195. return $1;
  35196. } else {
  35197. var class_;
  35198. class_=$1;
  35199. return $recv(class_)._packageOfProtocol_($self._protocol());
  35200. }
  35201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35202. }, function($ctx1) {$ctx1.fill(self,"package",{})});
  35203. //>>excludeEnd("ctx");
  35204. }; }),
  35205. $globals.ProtocolAnnouncement);
  35206. $core.addMethod(
  35207. $core.method({
  35208. selector: "protocol",
  35209. protocol: "accessing",
  35210. //>>excludeStart("ide", pragmas.excludeIdeData);
  35211. args: [],
  35212. source: "protocol\x0a\x09^ protocol",
  35213. referencedClasses: [],
  35214. //>>excludeEnd("ide");
  35215. pragmas: [],
  35216. messageSends: []
  35217. }, function ($methodClass){ return function (){
  35218. var self=this,$self=this;
  35219. return $self.protocol;
  35220. }; }),
  35221. $globals.ProtocolAnnouncement);
  35222. $core.addMethod(
  35223. $core.method({
  35224. selector: "protocol:",
  35225. protocol: "accessing",
  35226. //>>excludeStart("ide", pragmas.excludeIdeData);
  35227. args: ["aString"],
  35228. source: "protocol: aString\x0a\x09protocol := aString",
  35229. referencedClasses: [],
  35230. //>>excludeEnd("ide");
  35231. pragmas: [],
  35232. messageSends: []
  35233. }, function ($methodClass){ return function (aString){
  35234. var self=this,$self=this;
  35235. $self.protocol=aString;
  35236. return self;
  35237. }; }),
  35238. $globals.ProtocolAnnouncement);
  35239. $core.addMethod(
  35240. $core.method({
  35241. selector: "theClass",
  35242. protocol: "accessing",
  35243. //>>excludeStart("ide", pragmas.excludeIdeData);
  35244. args: [],
  35245. source: "theClass\x0a\x09^ theClass",
  35246. referencedClasses: [],
  35247. //>>excludeEnd("ide");
  35248. pragmas: [],
  35249. messageSends: []
  35250. }, function ($methodClass){ return function (){
  35251. var self=this,$self=this;
  35252. return $self.theClass;
  35253. }; }),
  35254. $globals.ProtocolAnnouncement);
  35255. $core.addMethod(
  35256. $core.method({
  35257. selector: "theClass:",
  35258. protocol: "accessing",
  35259. //>>excludeStart("ide", pragmas.excludeIdeData);
  35260. args: ["aClass"],
  35261. source: "theClass: aClass\x0a\x09theClass := aClass",
  35262. referencedClasses: [],
  35263. //>>excludeEnd("ide");
  35264. pragmas: [],
  35265. messageSends: []
  35266. }, function ($methodClass){ return function (aClass){
  35267. var self=this,$self=this;
  35268. $self.theClass=aClass;
  35269. return self;
  35270. }; }),
  35271. $globals.ProtocolAnnouncement);
  35272. $core.addClass("ProtocolAdded", $globals.ProtocolAnnouncement, "Kernel-Announcements");
  35273. //>>excludeStart("ide", pragmas.excludeIdeData);
  35274. $globals.ProtocolAdded.comment="I am emitted when a protocol is added to a class.";
  35275. //>>excludeEnd("ide");
  35276. $core.addClass("ProtocolRemoved", $globals.ProtocolAnnouncement, "Kernel-Announcements");
  35277. //>>excludeStart("ide", pragmas.excludeIdeData);
  35278. $globals.ProtocolRemoved.comment="I am emitted when a protocol is removed from a class.";
  35279. //>>excludeEnd("ide");
  35280. });
  35281. define('amber/core/Platform-Services',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Methods", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  35282. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  35283. var $pkg = $core.addPackage("Platform-Services");
  35284. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  35285. $core.addClass("ConsoleErrorHandler", $globals.Object, "Platform-Services");
  35286. //>>excludeStart("ide", pragmas.excludeIdeData);
  35287. $globals.ConsoleErrorHandler.comment="I am manage Smalltalk errors, displaying the stack in the console.";
  35288. //>>excludeEnd("ide");
  35289. $core.addMethod(
  35290. $core.method({
  35291. selector: "handleError:",
  35292. protocol: "error handling",
  35293. //>>excludeStart("ide", pragmas.excludeIdeData);
  35294. args: ["anError"],
  35295. source: "handleError: anError\x0a\x09anError context ifNotNil: [ self logErrorContext: anError context ].\x0a\x09self logError: anError",
  35296. referencedClasses: [],
  35297. //>>excludeEnd("ide");
  35298. pragmas: [],
  35299. messageSends: ["ifNotNil:", "context", "logErrorContext:", "logError:"]
  35300. }, function ($methodClass){ return function (anError){
  35301. var self=this,$self=this;
  35302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35303. return $core.withContext(function($ctx1) {
  35304. //>>excludeEnd("ctx");
  35305. var $1;
  35306. $1=[$recv(anError)._context()
  35307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35308. ,$ctx1.sendIdx["context"]=1
  35309. //>>excludeEnd("ctx");
  35310. ][0];
  35311. if($1 == null || $1.a$nil){
  35312. $1;
  35313. } else {
  35314. $self._logErrorContext_($recv(anError)._context());
  35315. }
  35316. $self._logError_(anError);
  35317. return self;
  35318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35319. }, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError})});
  35320. //>>excludeEnd("ctx");
  35321. }; }),
  35322. $globals.ConsoleErrorHandler);
  35323. $core.addMethod(
  35324. $core.method({
  35325. selector: "log:",
  35326. protocol: "private",
  35327. //>>excludeStart("ide", pragmas.excludeIdeData);
  35328. args: ["aString"],
  35329. source: "log: aString\x0a\x09console log: aString",
  35330. referencedClasses: [],
  35331. //>>excludeEnd("ide");
  35332. pragmas: [],
  35333. messageSends: ["log:"]
  35334. }, function ($methodClass){ return function (aString){
  35335. var self=this,$self=this;
  35336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35337. return $core.withContext(function($ctx1) {
  35338. //>>excludeEnd("ctx");
  35339. $recv(console)._log_(aString);
  35340. return self;
  35341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35342. }, function($ctx1) {$ctx1.fill(self,"log:",{aString:aString})});
  35343. //>>excludeEnd("ctx");
  35344. }; }),
  35345. $globals.ConsoleErrorHandler);
  35346. $core.addMethod(
  35347. $core.method({
  35348. selector: "logContext:",
  35349. protocol: "private",
  35350. //>>excludeStart("ide", pragmas.excludeIdeData);
  35351. args: ["aContext"],
  35352. source: "logContext: aContext\x0a\x09aContext home ifNotNil: [\x0a\x09\x09self logContext: aContext home ].\x0a\x09self log: aContext asString",
  35353. referencedClasses: [],
  35354. //>>excludeEnd("ide");
  35355. pragmas: [],
  35356. messageSends: ["ifNotNil:", "home", "logContext:", "log:", "asString"]
  35357. }, function ($methodClass){ return function (aContext){
  35358. var self=this,$self=this;
  35359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35360. return $core.withContext(function($ctx1) {
  35361. //>>excludeEnd("ctx");
  35362. var $1;
  35363. $1=[$recv(aContext)._home()
  35364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35365. ,$ctx1.sendIdx["home"]=1
  35366. //>>excludeEnd("ctx");
  35367. ][0];
  35368. if($1 == null || $1.a$nil){
  35369. $1;
  35370. } else {
  35371. $self._logContext_($recv(aContext)._home());
  35372. }
  35373. $self._log_($recv(aContext)._asString());
  35374. return self;
  35375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35376. }, function($ctx1) {$ctx1.fill(self,"logContext:",{aContext:aContext})});
  35377. //>>excludeEnd("ctx");
  35378. }; }),
  35379. $globals.ConsoleErrorHandler);
  35380. $core.addMethod(
  35381. $core.method({
  35382. selector: "logError:",
  35383. protocol: "private",
  35384. //>>excludeStart("ide", pragmas.excludeIdeData);
  35385. args: ["anError"],
  35386. source: "logError: anError\x0a\x09self log: anError messageText",
  35387. referencedClasses: [],
  35388. //>>excludeEnd("ide");
  35389. pragmas: [],
  35390. messageSends: ["log:", "messageText"]
  35391. }, function ($methodClass){ return function (anError){
  35392. var self=this,$self=this;
  35393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35394. return $core.withContext(function($ctx1) {
  35395. //>>excludeEnd("ctx");
  35396. $self._log_($recv(anError)._messageText());
  35397. return self;
  35398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35399. }, function($ctx1) {$ctx1.fill(self,"logError:",{anError:anError})});
  35400. //>>excludeEnd("ctx");
  35401. }; }),
  35402. $globals.ConsoleErrorHandler);
  35403. $core.addMethod(
  35404. $core.method({
  35405. selector: "logErrorContext:",
  35406. protocol: "private",
  35407. //>>excludeStart("ide", pragmas.excludeIdeData);
  35408. args: ["aContext"],
  35409. source: "logErrorContext: aContext\x0a\x09aContext ifNotNil: [\x0a\x09\x09aContext home ifNotNil: [\x0a\x09\x09\x09self logContext: aContext home ]]",
  35410. referencedClasses: [],
  35411. //>>excludeEnd("ide");
  35412. pragmas: [],
  35413. messageSends: ["ifNotNil:", "home", "logContext:"]
  35414. }, function ($methodClass){ return function (aContext){
  35415. var self=this,$self=this;
  35416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35417. return $core.withContext(function($ctx1) {
  35418. //>>excludeEnd("ctx");
  35419. var $1;
  35420. if(aContext == null || aContext.a$nil){
  35421. aContext;
  35422. } else {
  35423. $1=[$recv(aContext)._home()
  35424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35425. ,$ctx1.sendIdx["home"]=1
  35426. //>>excludeEnd("ctx");
  35427. ][0];
  35428. if($1 == null || $1.a$nil){
  35429. $1;
  35430. } else {
  35431. $self._logContext_($recv(aContext)._home());
  35432. }
  35433. }
  35434. return self;
  35435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35436. }, function($ctx1) {$ctx1.fill(self,"logErrorContext:",{aContext:aContext})});
  35437. //>>excludeEnd("ctx");
  35438. }; }),
  35439. $globals.ConsoleErrorHandler);
  35440. $core.setSlots($globals.ConsoleErrorHandler.a$cls, ["current"]);
  35441. $core.addMethod(
  35442. $core.method({
  35443. selector: "initialize",
  35444. protocol: "initialization",
  35445. //>>excludeStart("ide", pragmas.excludeIdeData);
  35446. args: [],
  35447. source: "initialize\x0a\x09ErrorHandler registerIfNone: self new",
  35448. referencedClasses: ["ErrorHandler"],
  35449. //>>excludeEnd("ide");
  35450. pragmas: [],
  35451. messageSends: ["registerIfNone:", "new"]
  35452. }, function ($methodClass){ return function (){
  35453. var self=this,$self=this;
  35454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35455. return $core.withContext(function($ctx1) {
  35456. //>>excludeEnd("ctx");
  35457. $recv($globals.ErrorHandler)._registerIfNone_($self._new());
  35458. return self;
  35459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35460. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  35461. //>>excludeEnd("ctx");
  35462. }; }),
  35463. $globals.ConsoleErrorHandler.a$cls);
  35464. $core.addClass("ConsoleTranscript", $globals.Object, "Platform-Services");
  35465. $core.setSlots($globals.ConsoleTranscript, ["textarea"]);
  35466. //>>excludeStart("ide", pragmas.excludeIdeData);
  35467. $globals.ConsoleTranscript.comment="I am a specific transcript emitting to the JavaScript console.\x0a\x0aIf no other transcript is registered, I am the default.";
  35468. //>>excludeEnd("ide");
  35469. $core.addMethod(
  35470. $core.method({
  35471. selector: "clear",
  35472. protocol: "printing",
  35473. //>>excludeStart("ide", pragmas.excludeIdeData);
  35474. args: [],
  35475. source: "clear\x0a\x09\x22no op\x22",
  35476. referencedClasses: [],
  35477. //>>excludeEnd("ide");
  35478. pragmas: [],
  35479. messageSends: []
  35480. }, function ($methodClass){ return function (){
  35481. var self=this,$self=this;
  35482. return self;
  35483. }; }),
  35484. $globals.ConsoleTranscript);
  35485. $core.addMethod(
  35486. $core.method({
  35487. selector: "cr",
  35488. protocol: "printing",
  35489. //>>excludeStart("ide", pragmas.excludeIdeData);
  35490. args: [],
  35491. source: "cr\x0a\x09\x22no op\x22",
  35492. referencedClasses: [],
  35493. //>>excludeEnd("ide");
  35494. pragmas: [],
  35495. messageSends: []
  35496. }, function ($methodClass){ return function (){
  35497. var self=this,$self=this;
  35498. return self;
  35499. }; }),
  35500. $globals.ConsoleTranscript);
  35501. $core.addMethod(
  35502. $core.method({
  35503. selector: "open",
  35504. protocol: "actions",
  35505. //>>excludeStart("ide", pragmas.excludeIdeData);
  35506. args: [],
  35507. source: "open",
  35508. referencedClasses: [],
  35509. //>>excludeEnd("ide");
  35510. pragmas: [],
  35511. messageSends: []
  35512. }, function ($methodClass){ return function (){
  35513. var self=this,$self=this;
  35514. return self;
  35515. }; }),
  35516. $globals.ConsoleTranscript);
  35517. $core.addMethod(
  35518. $core.method({
  35519. selector: "show:",
  35520. protocol: "printing",
  35521. //>>excludeStart("ide", pragmas.excludeIdeData);
  35522. args: ["anObject"],
  35523. source: "show: anObject\x0a\x22Smalltalk objects should have no trouble displaying themselves on the Transcript; Javascript objects don't know how, so must be wrapped in a JSObectProxy.\x22\x0a<inlineJS: 'console.log(String($recv(anObject)._asString()))'>",
  35524. referencedClasses: [],
  35525. //>>excludeEnd("ide");
  35526. pragmas: [["inlineJS:", ["console.log(String($recv(anObject)._asString()))"]]],
  35527. messageSends: []
  35528. }, function ($methodClass){ return function (anObject){
  35529. var self=this,$self=this;
  35530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35531. return $core.withContext(function($ctx1) {
  35532. //>>excludeEnd("ctx");
  35533. console.log(String($recv(anObject)._asString()));
  35534. return self;
  35535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35536. }, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject})});
  35537. //>>excludeEnd("ctx");
  35538. }; }),
  35539. $globals.ConsoleTranscript);
  35540. $core.addMethod(
  35541. $core.method({
  35542. selector: "initialize",
  35543. protocol: "initialization",
  35544. //>>excludeStart("ide", pragmas.excludeIdeData);
  35545. args: [],
  35546. source: "initialize\x0a\x09Transcript registerIfNone: self new",
  35547. referencedClasses: ["Transcript"],
  35548. //>>excludeEnd("ide");
  35549. pragmas: [],
  35550. messageSends: ["registerIfNone:", "new"]
  35551. }, function ($methodClass){ return function (){
  35552. var self=this,$self=this;
  35553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35554. return $core.withContext(function($ctx1) {
  35555. //>>excludeEnd("ctx");
  35556. $recv($globals.Transcript)._registerIfNone_($self._new());
  35557. return self;
  35558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35559. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  35560. //>>excludeEnd("ctx");
  35561. }; }),
  35562. $globals.ConsoleTranscript.a$cls);
  35563. $core.addClass("Environment", $globals.Object, "Platform-Services");
  35564. //>>excludeStart("ide", pragmas.excludeIdeData);
  35565. $globals.Environment.comment="I provide an unified entry point to manipulate Amber packages, classes and methods.\x0a\x0aTypical use cases include IDEs, remote access and restricting browsing.";
  35566. //>>excludeEnd("ide");
  35567. $core.addMethod(
  35568. $core.method({
  35569. selector: "addInstVarNamed:to:",
  35570. protocol: "compiling",
  35571. //>>excludeStart("ide", pragmas.excludeIdeData);
  35572. args: ["aString", "aClass"],
  35573. source: "addInstVarNamed: aString to: aClass\x0a\x09| newSlots |\x0a\x09newSlots := aClass slots copyWith: aString.\x0a\x0a\x09aClass isMetaclass\x0a\x09\x09ifTrue: [ self classBuilder\x0a\x09\x09\x09class: aClass slots: newSlots ]\x0a\x09\x09ifFalse: [ self classBuilder\x0a\x09\x09\x09addSubclassOf: aClass superclass \x0a\x09\x09\x09named: aClass name \x0a\x09\x09\x09slots: newSlots\x0a\x09\x09\x09package: aClass package name ]",
  35574. referencedClasses: [],
  35575. //>>excludeEnd("ide");
  35576. pragmas: [],
  35577. messageSends: ["copyWith:", "slots", "ifTrue:ifFalse:", "isMetaclass", "class:slots:", "classBuilder", "addSubclassOf:named:slots:package:", "superclass", "name", "package"]
  35578. }, function ($methodClass){ return function (aString,aClass){
  35579. var self=this,$self=this;
  35580. var newSlots;
  35581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35582. return $core.withContext(function($ctx1) {
  35583. //>>excludeEnd("ctx");
  35584. newSlots=$recv($recv(aClass)._slots())._copyWith_(aString);
  35585. if($core.assert($recv(aClass)._isMetaclass())){
  35586. $recv([$self._classBuilder()
  35587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35588. ,$ctx1.sendIdx["classBuilder"]=1
  35589. //>>excludeEnd("ctx");
  35590. ][0])._class_slots_(aClass,newSlots);
  35591. } else {
  35592. $recv($self._classBuilder())._addSubclassOf_named_slots_package_($recv(aClass)._superclass(),[$recv(aClass)._name()
  35593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35594. ,$ctx1.sendIdx["name"]=1
  35595. //>>excludeEnd("ctx");
  35596. ][0],newSlots,$recv($recv(aClass)._package())._name());
  35597. }
  35598. return self;
  35599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35600. }, function($ctx1) {$ctx1.fill(self,"addInstVarNamed:to:",{aString:aString,aClass:aClass,newSlots:newSlots})});
  35601. //>>excludeEnd("ctx");
  35602. }; }),
  35603. $globals.Environment);
  35604. $core.addMethod(
  35605. $core.method({
  35606. selector: "allSelectors",
  35607. protocol: "accessing",
  35608. //>>excludeStart("ide", pragmas.excludeIdeData);
  35609. args: [],
  35610. source: "allSelectors\x0a\x09^ Smalltalk core allSelectors",
  35611. referencedClasses: ["Smalltalk"],
  35612. //>>excludeEnd("ide");
  35613. pragmas: [],
  35614. messageSends: ["allSelectors", "core"]
  35615. }, function ($methodClass){ return function (){
  35616. var self=this,$self=this;
  35617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35618. return $core.withContext(function($ctx1) {
  35619. //>>excludeEnd("ctx");
  35620. return $recv($recv($globals.Smalltalk)._core())._allSelectors();
  35621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35622. }, function($ctx1) {$ctx1.fill(self,"allSelectors",{})});
  35623. //>>excludeEnd("ctx");
  35624. }; }),
  35625. $globals.Environment);
  35626. $core.addMethod(
  35627. $core.method({
  35628. selector: "availableClassNames",
  35629. protocol: "accessing",
  35630. //>>excludeStart("ide", pragmas.excludeIdeData);
  35631. args: [],
  35632. source: "availableClassNames\x0a\x09^ Smalltalk classes \x0a\x09\x09collect: [ :each | each name ]",
  35633. referencedClasses: ["Smalltalk"],
  35634. //>>excludeEnd("ide");
  35635. pragmas: [],
  35636. messageSends: ["collect:", "classes", "name"]
  35637. }, function ($methodClass){ return function (){
  35638. var self=this,$self=this;
  35639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35640. return $core.withContext(function($ctx1) {
  35641. //>>excludeEnd("ctx");
  35642. return $recv($recv($globals.Smalltalk)._classes())._collect_((function(each){
  35643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35644. return $core.withContext(function($ctx2) {
  35645. //>>excludeEnd("ctx");
  35646. return $recv(each)._name();
  35647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35648. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  35649. //>>excludeEnd("ctx");
  35650. }));
  35651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35652. }, function($ctx1) {$ctx1.fill(self,"availableClassNames",{})});
  35653. //>>excludeEnd("ctx");
  35654. }; }),
  35655. $globals.Environment);
  35656. $core.addMethod(
  35657. $core.method({
  35658. selector: "availablePackageNames",
  35659. protocol: "accessing",
  35660. //>>excludeStart("ide", pragmas.excludeIdeData);
  35661. args: [],
  35662. source: "availablePackageNames\x0a\x09^ Smalltalk packages \x0a\x09\x09collect: [ :each | each name ]",
  35663. referencedClasses: ["Smalltalk"],
  35664. //>>excludeEnd("ide");
  35665. pragmas: [],
  35666. messageSends: ["collect:", "packages", "name"]
  35667. }, function ($methodClass){ return function (){
  35668. var self=this,$self=this;
  35669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35670. return $core.withContext(function($ctx1) {
  35671. //>>excludeEnd("ctx");
  35672. return $recv($recv($globals.Smalltalk)._packages())._collect_((function(each){
  35673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35674. return $core.withContext(function($ctx2) {
  35675. //>>excludeEnd("ctx");
  35676. return $recv(each)._name();
  35677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35678. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  35679. //>>excludeEnd("ctx");
  35680. }));
  35681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35682. }, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{})});
  35683. //>>excludeEnd("ctx");
  35684. }; }),
  35685. $globals.Environment);
  35686. $core.addMethod(
  35687. $core.method({
  35688. selector: "availableProtocolsFor:",
  35689. protocol: "accessing",
  35690. //>>excludeStart("ide", pragmas.excludeIdeData);
  35691. args: ["aClass"],
  35692. source: "availableProtocolsFor: aClass\x0a\x09| protocols |\x0a\x09\x0a\x09protocols := aClass protocols.\x0a\x09aClass superclass ifNotNil: [ protocols addAll: (self availableProtocolsFor: aClass superclass) ].\x0a\x09^ protocols asSet asArray sort",
  35693. referencedClasses: [],
  35694. //>>excludeEnd("ide");
  35695. pragmas: [],
  35696. messageSends: ["protocols", "ifNotNil:", "superclass", "addAll:", "availableProtocolsFor:", "sort", "asArray", "asSet"]
  35697. }, function ($methodClass){ return function (aClass){
  35698. var self=this,$self=this;
  35699. var protocols;
  35700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35701. return $core.withContext(function($ctx1) {
  35702. //>>excludeEnd("ctx");
  35703. var $1;
  35704. protocols=$recv(aClass)._protocols();
  35705. $1=[$recv(aClass)._superclass()
  35706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35707. ,$ctx1.sendIdx["superclass"]=1
  35708. //>>excludeEnd("ctx");
  35709. ][0];
  35710. if($1 == null || $1.a$nil){
  35711. $1;
  35712. } else {
  35713. $recv(protocols)._addAll_($self._availableProtocolsFor_($recv(aClass)._superclass()));
  35714. }
  35715. return $recv($recv($recv(protocols)._asSet())._asArray())._sort();
  35716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35717. }, function($ctx1) {$ctx1.fill(self,"availableProtocolsFor:",{aClass:aClass,protocols:protocols})});
  35718. //>>excludeEnd("ctx");
  35719. }; }),
  35720. $globals.Environment);
  35721. $core.addMethod(
  35722. $core.method({
  35723. selector: "classBuilder",
  35724. protocol: "accessing",
  35725. //>>excludeStart("ide", pragmas.excludeIdeData);
  35726. args: [],
  35727. source: "classBuilder\x0a\x09^ ClassBuilder new",
  35728. referencedClasses: ["ClassBuilder"],
  35729. //>>excludeEnd("ide");
  35730. pragmas: [],
  35731. messageSends: ["new"]
  35732. }, function ($methodClass){ return function (){
  35733. var self=this,$self=this;
  35734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35735. return $core.withContext(function($ctx1) {
  35736. //>>excludeEnd("ctx");
  35737. return $recv($globals.ClassBuilder)._new();
  35738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35739. }, function($ctx1) {$ctx1.fill(self,"classBuilder",{})});
  35740. //>>excludeEnd("ctx");
  35741. }; }),
  35742. $globals.Environment);
  35743. $core.addMethod(
  35744. $core.method({
  35745. selector: "classNamed:",
  35746. protocol: "accessing",
  35747. //>>excludeStart("ide", pragmas.excludeIdeData);
  35748. args: ["aString"],
  35749. source: "classNamed: aString\x0a\x09^ (Smalltalk globals at: aString asSymbol)\x0a\x09\x09ifNil: [ self error: 'Invalid class name' ]",
  35750. referencedClasses: ["Smalltalk"],
  35751. //>>excludeEnd("ide");
  35752. pragmas: [],
  35753. messageSends: ["ifNil:", "at:", "globals", "asSymbol", "error:"]
  35754. }, function ($methodClass){ return function (aString){
  35755. var self=this,$self=this;
  35756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35757. return $core.withContext(function($ctx1) {
  35758. //>>excludeEnd("ctx");
  35759. var $1;
  35760. $1=$recv($recv($globals.Smalltalk)._globals())._at_($recv(aString)._asSymbol());
  35761. if($1 == null || $1.a$nil){
  35762. return $self._error_("Invalid class name");
  35763. } else {
  35764. return $1;
  35765. }
  35766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35767. }, function($ctx1) {$ctx1.fill(self,"classNamed:",{aString:aString})});
  35768. //>>excludeEnd("ctx");
  35769. }; }),
  35770. $globals.Environment);
  35771. $core.addMethod(
  35772. $core.method({
  35773. selector: "classes",
  35774. protocol: "accessing",
  35775. //>>excludeStart("ide", pragmas.excludeIdeData);
  35776. args: [],
  35777. source: "classes\x0a\x09^ Smalltalk classes",
  35778. referencedClasses: ["Smalltalk"],
  35779. //>>excludeEnd("ide");
  35780. pragmas: [],
  35781. messageSends: ["classes"]
  35782. }, function ($methodClass){ return function (){
  35783. var self=this,$self=this;
  35784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35785. return $core.withContext(function($ctx1) {
  35786. //>>excludeEnd("ctx");
  35787. return $recv($globals.Smalltalk)._classes();
  35788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35789. }, function($ctx1) {$ctx1.fill(self,"classes",{})});
  35790. //>>excludeEnd("ctx");
  35791. }; }),
  35792. $globals.Environment);
  35793. $core.addMethod(
  35794. $core.method({
  35795. selector: "commitPackage:onSuccess:onError:",
  35796. protocol: "actions",
  35797. //>>excludeStart("ide", pragmas.excludeIdeData);
  35798. args: ["aPackage", "aBlock", "anotherBlock"],
  35799. source: "commitPackage: aPackage onSuccess: aBlock onError: anotherBlock\x0a\x09aPackage transport\x0a\x09\x09commitOnSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
  35800. referencedClasses: [],
  35801. //>>excludeEnd("ide");
  35802. pragmas: [],
  35803. messageSends: ["commitOnSuccess:onError:", "transport"]
  35804. }, function ($methodClass){ return function (aPackage,aBlock,anotherBlock){
  35805. var self=this,$self=this;
  35806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35807. return $core.withContext(function($ctx1) {
  35808. //>>excludeEnd("ctx");
  35809. $recv($recv(aPackage)._transport())._commitOnSuccess_onError_(aBlock,anotherBlock);
  35810. return self;
  35811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35812. }, function($ctx1) {$ctx1.fill(self,"commitPackage:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock})});
  35813. //>>excludeEnd("ctx");
  35814. }; }),
  35815. $globals.Environment);
  35816. $core.addMethod(
  35817. $core.method({
  35818. selector: "compileClassComment:for:",
  35819. protocol: "compiling",
  35820. //>>excludeStart("ide", pragmas.excludeIdeData);
  35821. args: ["aString", "aClass"],
  35822. source: "compileClassComment: aString for: aClass\x0a\x09aClass comment: aString",
  35823. referencedClasses: [],
  35824. //>>excludeEnd("ide");
  35825. pragmas: [],
  35826. messageSends: ["comment:"]
  35827. }, function ($methodClass){ return function (aString,aClass){
  35828. var self=this,$self=this;
  35829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35830. return $core.withContext(function($ctx1) {
  35831. //>>excludeEnd("ctx");
  35832. $recv(aClass)._comment_(aString);
  35833. return self;
  35834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35835. }, function($ctx1) {$ctx1.fill(self,"compileClassComment:for:",{aString:aString,aClass:aClass})});
  35836. //>>excludeEnd("ctx");
  35837. }; }),
  35838. $globals.Environment);
  35839. $core.addMethod(
  35840. $core.method({
  35841. selector: "compileClassDefinition:",
  35842. protocol: "compiling",
  35843. //>>excludeStart("ide", pragmas.excludeIdeData);
  35844. args: ["aString"],
  35845. source: "compileClassDefinition: aString\x0a\x09[ self evaluate: aString for: DoIt new ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :error | Terminal alert: error messageText ]",
  35846. referencedClasses: ["DoIt", "Error", "Terminal"],
  35847. //>>excludeEnd("ide");
  35848. pragmas: [],
  35849. messageSends: ["on:do:", "evaluate:for:", "new", "alert:", "messageText"]
  35850. }, function ($methodClass){ return function (aString){
  35851. var self=this,$self=this;
  35852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35853. return $core.withContext(function($ctx1) {
  35854. //>>excludeEnd("ctx");
  35855. $recv((function(){
  35856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35857. return $core.withContext(function($ctx2) {
  35858. //>>excludeEnd("ctx");
  35859. return $self._evaluate_for_(aString,$recv($globals.DoIt)._new());
  35860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35861. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  35862. //>>excludeEnd("ctx");
  35863. }))._on_do_($globals.Error,(function(error){
  35864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35865. return $core.withContext(function($ctx2) {
  35866. //>>excludeEnd("ctx");
  35867. return $recv($globals.Terminal)._alert_($recv(error)._messageText());
  35868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35869. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  35870. //>>excludeEnd("ctx");
  35871. }));
  35872. return self;
  35873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35874. }, function($ctx1) {$ctx1.fill(self,"compileClassDefinition:",{aString:aString})});
  35875. //>>excludeEnd("ctx");
  35876. }; }),
  35877. $globals.Environment);
  35878. $core.addMethod(
  35879. $core.method({
  35880. selector: "compileMethod:for:protocol:",
  35881. protocol: "compiling",
  35882. //>>excludeStart("ide", pragmas.excludeIdeData);
  35883. args: ["sourceCode", "class", "protocol"],
  35884. source: "compileMethod: sourceCode for: class protocol: protocol\x0a\x09^ class\x0a\x09\x09compile: sourceCode\x0a\x09\x09protocol: protocol",
  35885. referencedClasses: [],
  35886. //>>excludeEnd("ide");
  35887. pragmas: [],
  35888. messageSends: ["compile:protocol:"]
  35889. }, function ($methodClass){ return function (sourceCode,class_,protocol){
  35890. var self=this,$self=this;
  35891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35892. return $core.withContext(function($ctx1) {
  35893. //>>excludeEnd("ctx");
  35894. return $recv(class_)._compile_protocol_(sourceCode,protocol);
  35895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35896. }, function($ctx1) {$ctx1.fill(self,"compileMethod:for:protocol:",{sourceCode:sourceCode,class_:class_,protocol:protocol})});
  35897. //>>excludeEnd("ctx");
  35898. }; }),
  35899. $globals.Environment);
  35900. $core.addMethod(
  35901. $core.method({
  35902. selector: "copyClass:to:",
  35903. protocol: "actions",
  35904. //>>excludeStart("ide", pragmas.excludeIdeData);
  35905. args: ["aClass", "aClassName"],
  35906. source: "copyClass: aClass to: aClassName\x0a\x09(Smalltalk globals at: aClassName)\x0a\x09\x09ifNotNil: [ self error: 'A class named ', aClassName, ' already exists' ].\x0a\x09\x09\x0a\x09ClassBuilder new copyClass: aClass named: aClassName",
  35907. referencedClasses: ["Smalltalk", "ClassBuilder"],
  35908. //>>excludeEnd("ide");
  35909. pragmas: [],
  35910. messageSends: ["ifNotNil:", "at:", "globals", "error:", ",", "copyClass:named:", "new"]
  35911. }, function ($methodClass){ return function (aClass,aClassName){
  35912. var self=this,$self=this;
  35913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35914. return $core.withContext(function($ctx1) {
  35915. //>>excludeEnd("ctx");
  35916. var $1;
  35917. $1=$recv($recv($globals.Smalltalk)._globals())._at_(aClassName);
  35918. if($1 == null || $1.a$nil){
  35919. $1;
  35920. } else {
  35921. $self._error_([$recv("A class named ".__comma(aClassName)).__comma(" already exists")
  35922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35923. ,$ctx1.sendIdx[","]=1
  35924. //>>excludeEnd("ctx");
  35925. ][0]);
  35926. }
  35927. $recv($recv($globals.ClassBuilder)._new())._copyClass_named_(aClass,aClassName);
  35928. return self;
  35929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35930. }, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,aClassName:aClassName})});
  35931. //>>excludeEnd("ctx");
  35932. }; }),
  35933. $globals.Environment);
  35934. $core.addMethod(
  35935. $core.method({
  35936. selector: "doItReceiver",
  35937. protocol: "accessing",
  35938. //>>excludeStart("ide", pragmas.excludeIdeData);
  35939. args: [],
  35940. source: "doItReceiver\x0a\x09^ DoIt new",
  35941. referencedClasses: ["DoIt"],
  35942. //>>excludeEnd("ide");
  35943. pragmas: [],
  35944. messageSends: ["new"]
  35945. }, function ($methodClass){ return function (){
  35946. var self=this,$self=this;
  35947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35948. return $core.withContext(function($ctx1) {
  35949. //>>excludeEnd("ctx");
  35950. return $recv($globals.DoIt)._new();
  35951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35952. }, function($ctx1) {$ctx1.fill(self,"doItReceiver",{})});
  35953. //>>excludeEnd("ctx");
  35954. }; }),
  35955. $globals.Environment);
  35956. $core.addMethod(
  35957. $core.method({
  35958. selector: "evaluate:for:",
  35959. protocol: "evaluating",
  35960. //>>excludeStart("ide", pragmas.excludeIdeData);
  35961. args: ["aString", "anObject"],
  35962. source: "evaluate: aString for: anObject\x0a\x09^ Evaluator evaluate: aString for: anObject",
  35963. referencedClasses: ["Evaluator"],
  35964. //>>excludeEnd("ide");
  35965. pragmas: [],
  35966. messageSends: ["evaluate:for:"]
  35967. }, function ($methodClass){ return function (aString,anObject){
  35968. var self=this,$self=this;
  35969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35970. return $core.withContext(function($ctx1) {
  35971. //>>excludeEnd("ctx");
  35972. return $recv($globals.Evaluator)._evaluate_for_(aString,anObject);
  35973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35974. }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject})});
  35975. //>>excludeEnd("ctx");
  35976. }; }),
  35977. $globals.Environment);
  35978. $core.addMethod(
  35979. $core.method({
  35980. selector: "evaluate:on:do:",
  35981. protocol: "error handling",
  35982. //>>excludeStart("ide", pragmas.excludeIdeData);
  35983. args: ["aBlock", "anErrorClass", "exceptionBlock"],
  35984. source: "evaluate: aBlock on: anErrorClass do: exceptionBlock\x0a\x09\x22Evaluate a block and catch exceptions happening on the environment stack\x22\x0a\x09\x0a\x09^ aBlock on: (self classNamed: anErrorClass name) do: exceptionBlock",
  35985. referencedClasses: [],
  35986. //>>excludeEnd("ide");
  35987. pragmas: [],
  35988. messageSends: ["on:do:", "classNamed:", "name"]
  35989. }, function ($methodClass){ return function (aBlock,anErrorClass,exceptionBlock){
  35990. var self=this,$self=this;
  35991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35992. return $core.withContext(function($ctx1) {
  35993. //>>excludeEnd("ctx");
  35994. return $recv(aBlock)._on_do_($self._classNamed_($recv(anErrorClass)._name()),exceptionBlock);
  35995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35996. }, function($ctx1) {$ctx1.fill(self,"evaluate:on:do:",{aBlock:aBlock,anErrorClass:anErrorClass,exceptionBlock:exceptionBlock})});
  35997. //>>excludeEnd("ctx");
  35998. }; }),
  35999. $globals.Environment);
  36000. $core.addMethod(
  36001. $core.method({
  36002. selector: "inspect:",
  36003. protocol: "actions",
  36004. //>>excludeStart("ide", pragmas.excludeIdeData);
  36005. args: ["anObject"],
  36006. source: "inspect: anObject\x0a\x09Inspector inspect: anObject",
  36007. referencedClasses: ["Inspector"],
  36008. //>>excludeEnd("ide");
  36009. pragmas: [],
  36010. messageSends: ["inspect:"]
  36011. }, function ($methodClass){ return function (anObject){
  36012. var self=this,$self=this;
  36013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36014. return $core.withContext(function($ctx1) {
  36015. //>>excludeEnd("ctx");
  36016. $recv($globals.Inspector)._inspect_(anObject);
  36017. return self;
  36018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36019. }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject})});
  36020. //>>excludeEnd("ctx");
  36021. }; }),
  36022. $globals.Environment);
  36023. $core.addMethod(
  36024. $core.method({
  36025. selector: "moveClass:toPackage:",
  36026. protocol: "actions",
  36027. //>>excludeStart("ide", pragmas.excludeIdeData);
  36028. args: ["aClass", "aPackageName"],
  36029. source: "moveClass: aClass toPackage: aPackageName\x0a\x09| package |\x0a\x09\x0a\x09package := Package named: aPackageName.\x0a\x09package ifNil: [ self error: 'Invalid package name' ].\x0a\x09package == aClass package ifTrue: [ ^ self ].\x0a\x09\x0a\x09aClass package: package.\x0a\x09aClass recompile",
  36030. referencedClasses: ["Package"],
  36031. //>>excludeEnd("ide");
  36032. pragmas: [],
  36033. messageSends: ["named:", "ifNil:", "error:", "ifTrue:", "==", "package", "package:", "recompile"]
  36034. }, function ($methodClass){ return function (aClass,aPackageName){
  36035. var self=this,$self=this;
  36036. var package_;
  36037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36038. return $core.withContext(function($ctx1) {
  36039. //>>excludeEnd("ctx");
  36040. var $1;
  36041. package_=$recv($globals.Package)._named_(aPackageName);
  36042. $1=package_;
  36043. if($1 == null || $1.a$nil){
  36044. $self._error_("Invalid package name");
  36045. } else {
  36046. $1;
  36047. }
  36048. if($core.assert($recv(package_).__eq_eq($recv(aClass)._package()))){
  36049. return self;
  36050. }
  36051. $recv(aClass)._package_(package_);
  36052. $recv(aClass)._recompile();
  36053. return self;
  36054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36055. }, function($ctx1) {$ctx1.fill(self,"moveClass:toPackage:",{aClass:aClass,aPackageName:aPackageName,package_:package_})});
  36056. //>>excludeEnd("ctx");
  36057. }; }),
  36058. $globals.Environment);
  36059. $core.addMethod(
  36060. $core.method({
  36061. selector: "moveMethod:toClass:",
  36062. protocol: "actions",
  36063. //>>excludeStart("ide", pragmas.excludeIdeData);
  36064. args: ["aMethod", "aClassName"],
  36065. source: "moveMethod: aMethod toClass: aClassName\x0a\x09| destinationClass |\x0a\x09\x0a\x09destinationClass := self classNamed: aClassName.\x0a\x09destinationClass == aMethod origin ifTrue: [ ^ self ].\x0a\x09\x0a\x09aMethod origin isMetaclass ifTrue: [ \x0a\x09\x09destinationClass := destinationClass theMetaClass ].\x0a\x09\x0a\x09destinationClass \x0a\x09\x09compile: aMethod source\x0a\x09\x09protocol: aMethod protocol.\x0a\x09aMethod origin \x0a\x09\x09removeCompiledMethod: aMethod",
  36066. referencedClasses: [],
  36067. //>>excludeEnd("ide");
  36068. pragmas: [],
  36069. messageSends: ["classNamed:", "ifTrue:", "==", "origin", "isMetaclass", "theMetaClass", "compile:protocol:", "source", "protocol", "removeCompiledMethod:"]
  36070. }, function ($methodClass){ return function (aMethod,aClassName){
  36071. var self=this,$self=this;
  36072. var destinationClass;
  36073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36074. return $core.withContext(function($ctx1) {
  36075. //>>excludeEnd("ctx");
  36076. destinationClass=$self._classNamed_(aClassName);
  36077. if($core.assert($recv(destinationClass).__eq_eq([$recv(aMethod)._origin()
  36078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36079. ,$ctx1.sendIdx["origin"]=1
  36080. //>>excludeEnd("ctx");
  36081. ][0]))){
  36082. return self;
  36083. }
  36084. if($core.assert($recv([$recv(aMethod)._origin()
  36085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36086. ,$ctx1.sendIdx["origin"]=2
  36087. //>>excludeEnd("ctx");
  36088. ][0])._isMetaclass())){
  36089. destinationClass=$recv(destinationClass)._theMetaClass();
  36090. destinationClass;
  36091. }
  36092. $recv(destinationClass)._compile_protocol_($recv(aMethod)._source(),$recv(aMethod)._protocol());
  36093. $recv($recv(aMethod)._origin())._removeCompiledMethod_(aMethod);
  36094. return self;
  36095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36096. }, function($ctx1) {$ctx1.fill(self,"moveMethod:toClass:",{aMethod:aMethod,aClassName:aClassName,destinationClass:destinationClass})});
  36097. //>>excludeEnd("ctx");
  36098. }; }),
  36099. $globals.Environment);
  36100. $core.addMethod(
  36101. $core.method({
  36102. selector: "moveMethod:toProtocol:",
  36103. protocol: "actions",
  36104. //>>excludeStart("ide", pragmas.excludeIdeData);
  36105. args: ["aMethod", "aProtocol"],
  36106. source: "moveMethod: aMethod toProtocol: aProtocol\x0a\x09aMethod protocol: aProtocol.\x0a\x0a\x09aMethod origin\x0a\x09\x09compile: aMethod source\x0a\x09\x09protocol: aMethod protocol",
  36107. referencedClasses: [],
  36108. //>>excludeEnd("ide");
  36109. pragmas: [],
  36110. messageSends: ["protocol:", "compile:protocol:", "origin", "source", "protocol"]
  36111. }, function ($methodClass){ return function (aMethod,aProtocol){
  36112. var self=this,$self=this;
  36113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36114. return $core.withContext(function($ctx1) {
  36115. //>>excludeEnd("ctx");
  36116. $recv(aMethod)._protocol_(aProtocol);
  36117. $recv($recv(aMethod)._origin())._compile_protocol_($recv(aMethod)._source(),$recv(aMethod)._protocol());
  36118. return self;
  36119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36120. }, function($ctx1) {$ctx1.fill(self,"moveMethod:toProtocol:",{aMethod:aMethod,aProtocol:aProtocol})});
  36121. //>>excludeEnd("ctx");
  36122. }; }),
  36123. $globals.Environment);
  36124. $core.addMethod(
  36125. $core.method({
  36126. selector: "packages",
  36127. protocol: "accessing",
  36128. //>>excludeStart("ide", pragmas.excludeIdeData);
  36129. args: [],
  36130. source: "packages\x0a\x09^ Smalltalk packages",
  36131. referencedClasses: ["Smalltalk"],
  36132. //>>excludeEnd("ide");
  36133. pragmas: [],
  36134. messageSends: ["packages"]
  36135. }, function ($methodClass){ return function (){
  36136. var self=this,$self=this;
  36137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36138. return $core.withContext(function($ctx1) {
  36139. //>>excludeEnd("ctx");
  36140. return $recv($globals.Smalltalk)._packages();
  36141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36142. }, function($ctx1) {$ctx1.fill(self,"packages",{})});
  36143. //>>excludeEnd("ctx");
  36144. }; }),
  36145. $globals.Environment);
  36146. $core.addMethod(
  36147. $core.method({
  36148. selector: "registerErrorHandler:",
  36149. protocol: "services",
  36150. //>>excludeStart("ide", pragmas.excludeIdeData);
  36151. args: ["anErrorHandler"],
  36152. source: "registerErrorHandler: anErrorHandler\x0a\x09ErrorHandler register: anErrorHandler",
  36153. referencedClasses: ["ErrorHandler"],
  36154. //>>excludeEnd("ide");
  36155. pragmas: [],
  36156. messageSends: ["register:"]
  36157. }, function ($methodClass){ return function (anErrorHandler){
  36158. var self=this,$self=this;
  36159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36160. return $core.withContext(function($ctx1) {
  36161. //>>excludeEnd("ctx");
  36162. $recv($globals.ErrorHandler)._register_(anErrorHandler);
  36163. return self;
  36164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36165. }, function($ctx1) {$ctx1.fill(self,"registerErrorHandler:",{anErrorHandler:anErrorHandler})});
  36166. //>>excludeEnd("ctx");
  36167. }; }),
  36168. $globals.Environment);
  36169. $core.addMethod(
  36170. $core.method({
  36171. selector: "registerFinder:",
  36172. protocol: "services",
  36173. //>>excludeStart("ide", pragmas.excludeIdeData);
  36174. args: ["aFinder"],
  36175. source: "registerFinder: aFinder\x0a\x09Finder register: aFinder",
  36176. referencedClasses: ["Finder"],
  36177. //>>excludeEnd("ide");
  36178. pragmas: [],
  36179. messageSends: ["register:"]
  36180. }, function ($methodClass){ return function (aFinder){
  36181. var self=this,$self=this;
  36182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36183. return $core.withContext(function($ctx1) {
  36184. //>>excludeEnd("ctx");
  36185. $recv($globals.Finder)._register_(aFinder);
  36186. return self;
  36187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36188. }, function($ctx1) {$ctx1.fill(self,"registerFinder:",{aFinder:aFinder})});
  36189. //>>excludeEnd("ctx");
  36190. }; }),
  36191. $globals.Environment);
  36192. $core.addMethod(
  36193. $core.method({
  36194. selector: "registerInspector:",
  36195. protocol: "services",
  36196. //>>excludeStart("ide", pragmas.excludeIdeData);
  36197. args: ["anInspector"],
  36198. source: "registerInspector: anInspector\x0a\x09Inspector register: anInspector",
  36199. referencedClasses: ["Inspector"],
  36200. //>>excludeEnd("ide");
  36201. pragmas: [],
  36202. messageSends: ["register:"]
  36203. }, function ($methodClass){ return function (anInspector){
  36204. var self=this,$self=this;
  36205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36206. return $core.withContext(function($ctx1) {
  36207. //>>excludeEnd("ctx");
  36208. $recv($globals.Inspector)._register_(anInspector);
  36209. return self;
  36210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36211. }, function($ctx1) {$ctx1.fill(self,"registerInspector:",{anInspector:anInspector})});
  36212. //>>excludeEnd("ctx");
  36213. }; }),
  36214. $globals.Environment);
  36215. $core.addMethod(
  36216. $core.method({
  36217. selector: "registerProgressHandler:",
  36218. protocol: "services",
  36219. //>>excludeStart("ide", pragmas.excludeIdeData);
  36220. args: ["aProgressHandler"],
  36221. source: "registerProgressHandler: aProgressHandler\x0a\x09ProgressHandler register: aProgressHandler",
  36222. referencedClasses: ["ProgressHandler"],
  36223. //>>excludeEnd("ide");
  36224. pragmas: [],
  36225. messageSends: ["register:"]
  36226. }, function ($methodClass){ return function (aProgressHandler){
  36227. var self=this,$self=this;
  36228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36229. return $core.withContext(function($ctx1) {
  36230. //>>excludeEnd("ctx");
  36231. $recv($globals.ProgressHandler)._register_(aProgressHandler);
  36232. return self;
  36233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36234. }, function($ctx1) {$ctx1.fill(self,"registerProgressHandler:",{aProgressHandler:aProgressHandler})});
  36235. //>>excludeEnd("ctx");
  36236. }; }),
  36237. $globals.Environment);
  36238. $core.addMethod(
  36239. $core.method({
  36240. selector: "registerTranscript:",
  36241. protocol: "services",
  36242. //>>excludeStart("ide", pragmas.excludeIdeData);
  36243. args: ["aTranscript"],
  36244. source: "registerTranscript: aTranscript\x0a\x09Transcript register: aTranscript",
  36245. referencedClasses: ["Transcript"],
  36246. //>>excludeEnd("ide");
  36247. pragmas: [],
  36248. messageSends: ["register:"]
  36249. }, function ($methodClass){ return function (aTranscript){
  36250. var self=this,$self=this;
  36251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36252. return $core.withContext(function($ctx1) {
  36253. //>>excludeEnd("ctx");
  36254. $recv($globals.Transcript)._register_(aTranscript);
  36255. return self;
  36256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36257. }, function($ctx1) {$ctx1.fill(self,"registerTranscript:",{aTranscript:aTranscript})});
  36258. //>>excludeEnd("ctx");
  36259. }; }),
  36260. $globals.Environment);
  36261. $core.addMethod(
  36262. $core.method({
  36263. selector: "removeClass:",
  36264. protocol: "actions",
  36265. //>>excludeStart("ide", pragmas.excludeIdeData);
  36266. args: ["aClass"],
  36267. source: "removeClass: aClass\x0a\x09Smalltalk removeClass: aClass",
  36268. referencedClasses: ["Smalltalk"],
  36269. //>>excludeEnd("ide");
  36270. pragmas: [],
  36271. messageSends: ["removeClass:"]
  36272. }, function ($methodClass){ return function (aClass){
  36273. var self=this,$self=this;
  36274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36275. return $core.withContext(function($ctx1) {
  36276. //>>excludeEnd("ctx");
  36277. $recv($globals.Smalltalk)._removeClass_(aClass);
  36278. return self;
  36279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36280. }, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass})});
  36281. //>>excludeEnd("ctx");
  36282. }; }),
  36283. $globals.Environment);
  36284. $core.addMethod(
  36285. $core.method({
  36286. selector: "removeMethod:",
  36287. protocol: "actions",
  36288. //>>excludeStart("ide", pragmas.excludeIdeData);
  36289. args: ["aMethod"],
  36290. source: "removeMethod: aMethod\x0a\x09aMethod origin removeCompiledMethod: aMethod",
  36291. referencedClasses: [],
  36292. //>>excludeEnd("ide");
  36293. pragmas: [],
  36294. messageSends: ["removeCompiledMethod:", "origin"]
  36295. }, function ($methodClass){ return function (aMethod){
  36296. var self=this,$self=this;
  36297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36298. return $core.withContext(function($ctx1) {
  36299. //>>excludeEnd("ctx");
  36300. $recv($recv(aMethod)._origin())._removeCompiledMethod_(aMethod);
  36301. return self;
  36302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36303. }, function($ctx1) {$ctx1.fill(self,"removeMethod:",{aMethod:aMethod})});
  36304. //>>excludeEnd("ctx");
  36305. }; }),
  36306. $globals.Environment);
  36307. $core.addMethod(
  36308. $core.method({
  36309. selector: "removeProtocol:from:",
  36310. protocol: "actions",
  36311. //>>excludeStart("ide", pragmas.excludeIdeData);
  36312. args: ["aString", "aClass"],
  36313. source: "removeProtocol: aString from: aClass\x0a\x09(aClass methodsInProtocol: aString)\x0a\x09\x09do: [ :each | aClass removeCompiledMethod: each ]",
  36314. referencedClasses: [],
  36315. //>>excludeEnd("ide");
  36316. pragmas: [],
  36317. messageSends: ["do:", "methodsInProtocol:", "removeCompiledMethod:"]
  36318. }, function ($methodClass){ return function (aString,aClass){
  36319. var self=this,$self=this;
  36320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36321. return $core.withContext(function($ctx1) {
  36322. //>>excludeEnd("ctx");
  36323. $recv($recv(aClass)._methodsInProtocol_(aString))._do_((function(each){
  36324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36325. return $core.withContext(function($ctx2) {
  36326. //>>excludeEnd("ctx");
  36327. return $recv(aClass)._removeCompiledMethod_(each);
  36328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36329. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  36330. //>>excludeEnd("ctx");
  36331. }));
  36332. return self;
  36333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36334. }, function($ctx1) {$ctx1.fill(self,"removeProtocol:from:",{aString:aString,aClass:aClass})});
  36335. //>>excludeEnd("ctx");
  36336. }; }),
  36337. $globals.Environment);
  36338. $core.addMethod(
  36339. $core.method({
  36340. selector: "renameClass:to:",
  36341. protocol: "actions",
  36342. //>>excludeStart("ide", pragmas.excludeIdeData);
  36343. args: ["aClass", "aClassName"],
  36344. source: "renameClass: aClass to: aClassName\x0a\x09(Smalltalk globals at: aClassName)\x0a\x09\x09ifNotNil: [ self error: 'A class named ', aClassName, ' already exists' ].\x0a\x09\x09\x0a\x09ClassBuilder new renameClass: aClass to: aClassName",
  36345. referencedClasses: ["Smalltalk", "ClassBuilder"],
  36346. //>>excludeEnd("ide");
  36347. pragmas: [],
  36348. messageSends: ["ifNotNil:", "at:", "globals", "error:", ",", "renameClass:to:", "new"]
  36349. }, function ($methodClass){ return function (aClass,aClassName){
  36350. var self=this,$self=this;
  36351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36352. return $core.withContext(function($ctx1) {
  36353. //>>excludeEnd("ctx");
  36354. var $1;
  36355. $1=$recv($recv($globals.Smalltalk)._globals())._at_(aClassName);
  36356. if($1 == null || $1.a$nil){
  36357. $1;
  36358. } else {
  36359. $self._error_([$recv("A class named ".__comma(aClassName)).__comma(" already exists")
  36360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36361. ,$ctx1.sendIdx[","]=1
  36362. //>>excludeEnd("ctx");
  36363. ][0]);
  36364. }
  36365. $recv($recv($globals.ClassBuilder)._new())._renameClass_to_(aClass,aClassName);
  36366. return self;
  36367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36368. }, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,aClassName:aClassName})});
  36369. //>>excludeEnd("ctx");
  36370. }; }),
  36371. $globals.Environment);
  36372. $core.addMethod(
  36373. $core.method({
  36374. selector: "renamePackage:to:",
  36375. protocol: "actions",
  36376. //>>excludeStart("ide", pragmas.excludeIdeData);
  36377. args: ["aPackageName", "aNewPackageName"],
  36378. source: "renamePackage: aPackageName to: aNewPackageName\x0a Smalltalk renamePackage: aPackageName to: aNewPackageName",
  36379. referencedClasses: ["Smalltalk"],
  36380. //>>excludeEnd("ide");
  36381. pragmas: [],
  36382. messageSends: ["renamePackage:to:"]
  36383. }, function ($methodClass){ return function (aPackageName,aNewPackageName){
  36384. var self=this,$self=this;
  36385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36386. return $core.withContext(function($ctx1) {
  36387. //>>excludeEnd("ctx");
  36388. $recv($globals.Smalltalk)._renamePackage_to_(aPackageName,aNewPackageName);
  36389. return self;
  36390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36391. }, function($ctx1) {$ctx1.fill(self,"renamePackage:to:",{aPackageName:aPackageName,aNewPackageName:aNewPackageName})});
  36392. //>>excludeEnd("ctx");
  36393. }; }),
  36394. $globals.Environment);
  36395. $core.addMethod(
  36396. $core.method({
  36397. selector: "renameProtocol:to:in:",
  36398. protocol: "actions",
  36399. //>>excludeStart("ide", pragmas.excludeIdeData);
  36400. args: ["aString", "anotherString", "aClass"],
  36401. source: "renameProtocol: aString to: anotherString in: aClass\x0a\x09(aClass methodsInProtocol: aString)\x0a\x09\x09do: [ :each | each protocol: anotherString ]",
  36402. referencedClasses: [],
  36403. //>>excludeEnd("ide");
  36404. pragmas: [],
  36405. messageSends: ["do:", "methodsInProtocol:", "protocol:"]
  36406. }, function ($methodClass){ return function (aString,anotherString,aClass){
  36407. var self=this,$self=this;
  36408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36409. return $core.withContext(function($ctx1) {
  36410. //>>excludeEnd("ctx");
  36411. $recv($recv(aClass)._methodsInProtocol_(aString))._do_((function(each){
  36412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36413. return $core.withContext(function($ctx2) {
  36414. //>>excludeEnd("ctx");
  36415. return $recv(each)._protocol_(anotherString);
  36416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36417. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  36418. //>>excludeEnd("ctx");
  36419. }));
  36420. return self;
  36421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36422. }, function($ctx1) {$ctx1.fill(self,"renameProtocol:to:in:",{aString:aString,anotherString:anotherString,aClass:aClass})});
  36423. //>>excludeEnd("ctx");
  36424. }; }),
  36425. $globals.Environment);
  36426. $core.addMethod(
  36427. $core.method({
  36428. selector: "setClassCommentOf:to:",
  36429. protocol: "actions",
  36430. //>>excludeStart("ide", pragmas.excludeIdeData);
  36431. args: ["aClass", "aString"],
  36432. source: "setClassCommentOf: aClass to: aString\x0a\x09aClass comment: aString",
  36433. referencedClasses: [],
  36434. //>>excludeEnd("ide");
  36435. pragmas: [],
  36436. messageSends: ["comment:"]
  36437. }, function ($methodClass){ return function (aClass,aString){
  36438. var self=this,$self=this;
  36439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36440. return $core.withContext(function($ctx1) {
  36441. //>>excludeEnd("ctx");
  36442. $recv(aClass)._comment_(aString);
  36443. return self;
  36444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36445. }, function($ctx1) {$ctx1.fill(self,"setClassCommentOf:to:",{aClass:aClass,aString:aString})});
  36446. //>>excludeEnd("ctx");
  36447. }; }),
  36448. $globals.Environment);
  36449. $core.addMethod(
  36450. $core.method({
  36451. selector: "systemAnnouncer",
  36452. protocol: "accessing",
  36453. //>>excludeStart("ide", pragmas.excludeIdeData);
  36454. args: [],
  36455. source: "systemAnnouncer\x0a\x09^ (Smalltalk globals at: #SystemAnnouncer) current",
  36456. referencedClasses: ["Smalltalk"],
  36457. //>>excludeEnd("ide");
  36458. pragmas: [],
  36459. messageSends: ["current", "at:", "globals"]
  36460. }, function ($methodClass){ return function (){
  36461. var self=this,$self=this;
  36462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36463. return $core.withContext(function($ctx1) {
  36464. //>>excludeEnd("ctx");
  36465. return $recv($recv($recv($globals.Smalltalk)._globals())._at_("SystemAnnouncer"))._current();
  36466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36467. }, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{})});
  36468. //>>excludeEnd("ctx");
  36469. }; }),
  36470. $globals.Environment);
  36471. $core.addClass("NullProgressHandler", $globals.Object, "Platform-Services");
  36472. //>>excludeStart("ide", pragmas.excludeIdeData);
  36473. $globals.NullProgressHandler.comment="I am the default progress handler. I do not display any progress, and simply iterate over the collection.";
  36474. //>>excludeEnd("ide");
  36475. $core.addMethod(
  36476. $core.method({
  36477. selector: "do:on:displaying:",
  36478. protocol: "progress handling",
  36479. //>>excludeStart("ide", pragmas.excludeIdeData);
  36480. args: ["aBlock", "aCollection", "aString"],
  36481. source: "do: aBlock on: aCollection displaying: aString\x0a\x09aCollection do: aBlock",
  36482. referencedClasses: [],
  36483. //>>excludeEnd("ide");
  36484. pragmas: [],
  36485. messageSends: ["do:"]
  36486. }, function ($methodClass){ return function (aBlock,aCollection,aString){
  36487. var self=this,$self=this;
  36488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36489. return $core.withContext(function($ctx1) {
  36490. //>>excludeEnd("ctx");
  36491. $recv(aCollection)._do_(aBlock);
  36492. return self;
  36493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36494. }, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString})});
  36495. //>>excludeEnd("ctx");
  36496. }; }),
  36497. $globals.NullProgressHandler);
  36498. $core.setSlots($globals.NullProgressHandler.a$cls, ["current"]);
  36499. $core.addMethod(
  36500. $core.method({
  36501. selector: "initialize",
  36502. protocol: "initialization",
  36503. //>>excludeStart("ide", pragmas.excludeIdeData);
  36504. args: [],
  36505. source: "initialize\x0a\x09ProgressHandler registerIfNone: self new",
  36506. referencedClasses: ["ProgressHandler"],
  36507. //>>excludeEnd("ide");
  36508. pragmas: [],
  36509. messageSends: ["registerIfNone:", "new"]
  36510. }, function ($methodClass){ return function (){
  36511. var self=this,$self=this;
  36512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36513. return $core.withContext(function($ctx1) {
  36514. //>>excludeEnd("ctx");
  36515. $recv($globals.ProgressHandler)._registerIfNone_($self._new());
  36516. return self;
  36517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36518. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  36519. //>>excludeEnd("ctx");
  36520. }; }),
  36521. $globals.NullProgressHandler.a$cls);
  36522. $core.addClass("Service", $globals.Object, "Platform-Services");
  36523. //>>excludeStart("ide", pragmas.excludeIdeData);
  36524. $globals.Service.comment="I implement the basic behavior for class registration to a service.\x0a\x0aSee the `Transcript` class for a concrete service.\x0a\x0a## API\x0a\x0aUse class-side methods `#register:` and `#registerIfNone:` to register classes to a specific service.";
  36525. //>>excludeEnd("ide");
  36526. $core.setSlots($globals.Service.a$cls, ["current"]);
  36527. $core.addMethod(
  36528. $core.method({
  36529. selector: "current",
  36530. protocol: "accessing",
  36531. //>>excludeStart("ide", pragmas.excludeIdeData);
  36532. args: [],
  36533. source: "current\x0a\x09^ current",
  36534. referencedClasses: [],
  36535. //>>excludeEnd("ide");
  36536. pragmas: [],
  36537. messageSends: []
  36538. }, function ($methodClass){ return function (){
  36539. var self=this,$self=this;
  36540. return $self.current;
  36541. }; }),
  36542. $globals.Service.a$cls);
  36543. $core.addMethod(
  36544. $core.method({
  36545. selector: "new",
  36546. protocol: "instance creation",
  36547. //>>excludeStart("ide", pragmas.excludeIdeData);
  36548. args: [],
  36549. source: "new\x0a\x09self shouldNotImplement",
  36550. referencedClasses: [],
  36551. //>>excludeEnd("ide");
  36552. pragmas: [],
  36553. messageSends: ["shouldNotImplement"]
  36554. }, function ($methodClass){ return function (){
  36555. var self=this,$self=this;
  36556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36557. return $core.withContext(function($ctx1) {
  36558. //>>excludeEnd("ctx");
  36559. $self._shouldNotImplement();
  36560. return self;
  36561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36562. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  36563. //>>excludeEnd("ctx");
  36564. }; }),
  36565. $globals.Service.a$cls);
  36566. $core.addMethod(
  36567. $core.method({
  36568. selector: "register:",
  36569. protocol: "registration",
  36570. //>>excludeStart("ide", pragmas.excludeIdeData);
  36571. args: ["anObject"],
  36572. source: "register: anObject\x0a\x09current := anObject",
  36573. referencedClasses: [],
  36574. //>>excludeEnd("ide");
  36575. pragmas: [],
  36576. messageSends: []
  36577. }, function ($methodClass){ return function (anObject){
  36578. var self=this,$self=this;
  36579. $self.current=anObject;
  36580. return self;
  36581. }; }),
  36582. $globals.Service.a$cls);
  36583. $core.addMethod(
  36584. $core.method({
  36585. selector: "registerIfNone:",
  36586. protocol: "registration",
  36587. //>>excludeStart("ide", pragmas.excludeIdeData);
  36588. args: ["anObject"],
  36589. source: "registerIfNone: anObject\x0a\x09self current ifNil: [ self register: anObject ]",
  36590. referencedClasses: [],
  36591. //>>excludeEnd("ide");
  36592. pragmas: [],
  36593. messageSends: ["ifNil:", "current", "register:"]
  36594. }, function ($methodClass){ return function (anObject){
  36595. var self=this,$self=this;
  36596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36597. return $core.withContext(function($ctx1) {
  36598. //>>excludeEnd("ctx");
  36599. var $1;
  36600. $1=$self._current();
  36601. if($1 == null || $1.a$nil){
  36602. $self._register_(anObject);
  36603. } else {
  36604. $1;
  36605. }
  36606. return self;
  36607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36608. }, function($ctx1) {$ctx1.fill(self,"registerIfNone:",{anObject:anObject})});
  36609. //>>excludeEnd("ctx");
  36610. }; }),
  36611. $globals.Service.a$cls);
  36612. $core.addClass("ErrorHandler", $globals.Service, "Platform-Services");
  36613. //>>excludeStart("ide", pragmas.excludeIdeData);
  36614. $globals.ErrorHandler.comment="I am the service used to handle Smalltalk errors.\x0aSee `boot.js` `handleError()` function.\x0a\x0aRegistered service instances must implement `#handleError:` to perform an action on the thrown exception.";
  36615. //>>excludeEnd("ide");
  36616. $core.addMethod(
  36617. $core.method({
  36618. selector: "handleError:",
  36619. protocol: "error handling",
  36620. //>>excludeStart("ide", pragmas.excludeIdeData);
  36621. args: ["anError"],
  36622. source: "handleError: anError\x0a\x09| smalltalkError |\x0a\x09smalltalkError := Smalltalk asSmalltalkException: anError.\x0a\x09smalltalkError context ifNil: [ smalltalkError context: thisContext ].\x0a\x09self handleUnhandledError: smalltalkError",
  36623. referencedClasses: ["Smalltalk"],
  36624. //>>excludeEnd("ide");
  36625. pragmas: [],
  36626. messageSends: ["asSmalltalkException:", "ifNil:", "context", "context:", "handleUnhandledError:"]
  36627. }, function ($methodClass){ return function (anError){
  36628. var self=this,$self=this;
  36629. var smalltalkError;
  36630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36631. return $core.withContext(function($ctx1) {
  36632. //>>excludeEnd("ctx");
  36633. var $1;
  36634. smalltalkError=$recv($globals.Smalltalk)._asSmalltalkException_(anError);
  36635. $1=$recv(smalltalkError)._context();
  36636. if($1 == null || $1.a$nil){
  36637. $recv(smalltalkError)._context_($core.getThisContext());
  36638. } else {
  36639. $1;
  36640. }
  36641. $self._handleUnhandledError_(smalltalkError);
  36642. return self;
  36643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36644. }, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError,smalltalkError:smalltalkError})});
  36645. //>>excludeEnd("ctx");
  36646. }; }),
  36647. $globals.ErrorHandler.a$cls);
  36648. $core.addMethod(
  36649. $core.method({
  36650. selector: "handleUnhandledError:",
  36651. protocol: "error handling",
  36652. //>>excludeStart("ide", pragmas.excludeIdeData);
  36653. args: ["anError"],
  36654. source: "handleUnhandledError: anError\x0a\x09anError wasHandled ifFalse: [\x0a\x09\x09self current handleError: anError.\x0a\x09\x09anError beHandled ]",
  36655. referencedClasses: [],
  36656. //>>excludeEnd("ide");
  36657. pragmas: [],
  36658. messageSends: ["ifFalse:", "wasHandled", "handleError:", "current", "beHandled"]
  36659. }, function ($methodClass){ return function (anError){
  36660. var self=this,$self=this;
  36661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36662. return $core.withContext(function($ctx1) {
  36663. //>>excludeEnd("ctx");
  36664. if(!$core.assert($recv(anError)._wasHandled())){
  36665. $recv($self._current())._handleError_(anError);
  36666. $recv(anError)._beHandled();
  36667. }
  36668. return self;
  36669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36670. }, function($ctx1) {$ctx1.fill(self,"handleUnhandledError:",{anError:anError})});
  36671. //>>excludeEnd("ctx");
  36672. }; }),
  36673. $globals.ErrorHandler.a$cls);
  36674. $core.addClass("Finder", $globals.Service, "Platform-Services");
  36675. //>>excludeStart("ide", pragmas.excludeIdeData);
  36676. $globals.Finder.comment="I am the service responsible for finding classes/methods.\x0a__There is no default finder.__\x0a\x0a## API\x0a\x0aUse `#browse` on an object to find it.";
  36677. //>>excludeEnd("ide");
  36678. $core.addMethod(
  36679. $core.method({
  36680. selector: "findClass:",
  36681. protocol: "finding",
  36682. //>>excludeStart("ide", pragmas.excludeIdeData);
  36683. args: ["aClass"],
  36684. source: "findClass: aClass\x0a\x09^ self current findClass: aClass",
  36685. referencedClasses: [],
  36686. //>>excludeEnd("ide");
  36687. pragmas: [],
  36688. messageSends: ["findClass:", "current"]
  36689. }, function ($methodClass){ return function (aClass){
  36690. var self=this,$self=this;
  36691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36692. return $core.withContext(function($ctx1) {
  36693. //>>excludeEnd("ctx");
  36694. return $recv($self._current())._findClass_(aClass);
  36695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36696. }, function($ctx1) {$ctx1.fill(self,"findClass:",{aClass:aClass})});
  36697. //>>excludeEnd("ctx");
  36698. }; }),
  36699. $globals.Finder.a$cls);
  36700. $core.addMethod(
  36701. $core.method({
  36702. selector: "findMethod:",
  36703. protocol: "finding",
  36704. //>>excludeStart("ide", pragmas.excludeIdeData);
  36705. args: ["aCompiledMethod"],
  36706. source: "findMethod: aCompiledMethod\x0a\x09^ self current findMethod: aCompiledMethod",
  36707. referencedClasses: [],
  36708. //>>excludeEnd("ide");
  36709. pragmas: [],
  36710. messageSends: ["findMethod:", "current"]
  36711. }, function ($methodClass){ return function (aCompiledMethod){
  36712. var self=this,$self=this;
  36713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36714. return $core.withContext(function($ctx1) {
  36715. //>>excludeEnd("ctx");
  36716. return $recv($self._current())._findMethod_(aCompiledMethod);
  36717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36718. }, function($ctx1) {$ctx1.fill(self,"findMethod:",{aCompiledMethod:aCompiledMethod})});
  36719. //>>excludeEnd("ctx");
  36720. }; }),
  36721. $globals.Finder.a$cls);
  36722. $core.addMethod(
  36723. $core.method({
  36724. selector: "findString:",
  36725. protocol: "finding",
  36726. //>>excludeStart("ide", pragmas.excludeIdeData);
  36727. args: ["aString"],
  36728. source: "findString: aString\x0a\x09^ self current findString: aString",
  36729. referencedClasses: [],
  36730. //>>excludeEnd("ide");
  36731. pragmas: [],
  36732. messageSends: ["findString:", "current"]
  36733. }, function ($methodClass){ return function (aString){
  36734. var self=this,$self=this;
  36735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36736. return $core.withContext(function($ctx1) {
  36737. //>>excludeEnd("ctx");
  36738. return $recv($self._current())._findString_(aString);
  36739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36740. }, function($ctx1) {$ctx1.fill(self,"findString:",{aString:aString})});
  36741. //>>excludeEnd("ctx");
  36742. }; }),
  36743. $globals.Finder.a$cls);
  36744. $core.addClass("Inspector", $globals.Service, "Platform-Services");
  36745. //>>excludeStart("ide", pragmas.excludeIdeData);
  36746. $globals.Inspector.comment="I am the service responsible for inspecting objects.\x0a\x0aThe default inspector object is the transcript.";
  36747. //>>excludeEnd("ide");
  36748. $core.addMethod(
  36749. $core.method({
  36750. selector: "inspect:",
  36751. protocol: "inspecting",
  36752. //>>excludeStart("ide", pragmas.excludeIdeData);
  36753. args: ["anObject"],
  36754. source: "inspect: anObject\x0a\x09^ self current inspect: anObject",
  36755. referencedClasses: [],
  36756. //>>excludeEnd("ide");
  36757. pragmas: [],
  36758. messageSends: ["inspect:", "current"]
  36759. }, function ($methodClass){ return function (anObject){
  36760. var self=this,$self=this;
  36761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36762. return $core.withContext(function($ctx1) {
  36763. //>>excludeEnd("ctx");
  36764. return $recv($self._current())._inspect_(anObject);
  36765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36766. }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject})});
  36767. //>>excludeEnd("ctx");
  36768. }; }),
  36769. $globals.Inspector.a$cls);
  36770. $core.addClass("Platform", $globals.Service, "Platform-Services");
  36771. //>>excludeStart("ide", pragmas.excludeIdeData);
  36772. $globals.Platform.comment="I am bridge to JS environment.\x0a\x0a## API\x0a\x0a Platform globals. \x22JS global object\x22\x0a Platform newXHR \x22new XMLHttpRequest() or its shim\x22";
  36773. //>>excludeEnd("ide");
  36774. $core.addMethod(
  36775. $core.method({
  36776. selector: "fetch:",
  36777. protocol: "accessing",
  36778. //>>excludeStart("ide", pragmas.excludeIdeData);
  36779. args: ["aStringOrObject"],
  36780. source: "fetch: aStringOrObject\x0a\x09^ self current fetch: aStringOrObject",
  36781. referencedClasses: [],
  36782. //>>excludeEnd("ide");
  36783. pragmas: [],
  36784. messageSends: ["fetch:", "current"]
  36785. }, function ($methodClass){ return function (aStringOrObject){
  36786. var self=this,$self=this;
  36787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36788. return $core.withContext(function($ctx1) {
  36789. //>>excludeEnd("ctx");
  36790. return $recv($self._current())._fetch_(aStringOrObject);
  36791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36792. }, function($ctx1) {$ctx1.fill(self,"fetch:",{aStringOrObject:aStringOrObject})});
  36793. //>>excludeEnd("ctx");
  36794. }; }),
  36795. $globals.Platform.a$cls);
  36796. $core.addMethod(
  36797. $core.method({
  36798. selector: "fetchUrl:options:",
  36799. protocol: "accessing",
  36800. //>>excludeStart("ide", pragmas.excludeIdeData);
  36801. args: ["aString", "anObject"],
  36802. source: "fetchUrl: aString options: anObject\x0a\x09^ self current fetchUrl: aString options: anObject",
  36803. referencedClasses: [],
  36804. //>>excludeEnd("ide");
  36805. pragmas: [],
  36806. messageSends: ["fetchUrl:options:", "current"]
  36807. }, function ($methodClass){ return function (aString,anObject){
  36808. var self=this,$self=this;
  36809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36810. return $core.withContext(function($ctx1) {
  36811. //>>excludeEnd("ctx");
  36812. return $recv($self._current())._fetchUrl_options_(aString,anObject);
  36813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36814. }, function($ctx1) {$ctx1.fill(self,"fetchUrl:options:",{aString:aString,anObject:anObject})});
  36815. //>>excludeEnd("ctx");
  36816. }; }),
  36817. $globals.Platform.a$cls);
  36818. $core.addMethod(
  36819. $core.method({
  36820. selector: "globals",
  36821. protocol: "accessing",
  36822. //>>excludeStart("ide", pragmas.excludeIdeData);
  36823. args: [],
  36824. source: "globals\x0a\x09^ self current globals",
  36825. referencedClasses: [],
  36826. //>>excludeEnd("ide");
  36827. pragmas: [],
  36828. messageSends: ["globals", "current"]
  36829. }, function ($methodClass){ return function (){
  36830. var self=this,$self=this;
  36831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36832. return $core.withContext(function($ctx1) {
  36833. //>>excludeEnd("ctx");
  36834. return $recv($self._current())._globals();
  36835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36836. }, function($ctx1) {$ctx1.fill(self,"globals",{})});
  36837. //>>excludeEnd("ctx");
  36838. }; }),
  36839. $globals.Platform.a$cls);
  36840. $core.addMethod(
  36841. $core.method({
  36842. selector: "includesGlobal:",
  36843. protocol: "testing",
  36844. //>>excludeStart("ide", pragmas.excludeIdeData);
  36845. args: ["aString"],
  36846. source: "includesGlobal: aString\x0a\x09^ self globals \x0a\x09\x09at: aString \x0a\x09\x09ifPresent: [ true ] \x0a\x09\x09ifAbsent: [ false ]",
  36847. referencedClasses: [],
  36848. //>>excludeEnd("ide");
  36849. pragmas: [],
  36850. messageSends: ["at:ifPresent:ifAbsent:", "globals"]
  36851. }, function ($methodClass){ return function (aString){
  36852. var self=this,$self=this;
  36853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36854. return $core.withContext(function($ctx1) {
  36855. //>>excludeEnd("ctx");
  36856. return $recv($self._globals())._at_ifPresent_ifAbsent_(aString,(function(){
  36857. return true;
  36858. }),(function(){
  36859. return false;
  36860. }));
  36861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36862. }, function($ctx1) {$ctx1.fill(self,"includesGlobal:",{aString:aString})});
  36863. //>>excludeEnd("ctx");
  36864. }; }),
  36865. $globals.Platform.a$cls);
  36866. $core.addMethod(
  36867. $core.method({
  36868. selector: "newXhr",
  36869. protocol: "accessing",
  36870. //>>excludeStart("ide", pragmas.excludeIdeData);
  36871. args: [],
  36872. source: "newXhr\x0a\x09^ self current newXhr",
  36873. referencedClasses: [],
  36874. //>>excludeEnd("ide");
  36875. pragmas: [],
  36876. messageSends: ["newXhr", "current"]
  36877. }, function ($methodClass){ return function (){
  36878. var self=this,$self=this;
  36879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36880. return $core.withContext(function($ctx1) {
  36881. //>>excludeEnd("ctx");
  36882. return $recv($self._current())._newXhr();
  36883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36884. }, function($ctx1) {$ctx1.fill(self,"newXhr",{})});
  36885. //>>excludeEnd("ctx");
  36886. }; }),
  36887. $globals.Platform.a$cls);
  36888. $core.addClass("ProgressHandler", $globals.Service, "Platform-Services");
  36889. //>>excludeStart("ide", pragmas.excludeIdeData);
  36890. $globals.ProgressHandler.comment="I am used to manage progress in collection iterations, see `SequenceableCollection >> #do:displayingProgress:`.\x0a\x0aRegistered instances must implement `#do:on:displaying:`.\x0a\x0aThe default behavior is to simply iterate over the collection, using `NullProgressHandler`.";
  36891. //>>excludeEnd("ide");
  36892. $core.addMethod(
  36893. $core.method({
  36894. selector: "do:on:displaying:",
  36895. protocol: "progress handling",
  36896. //>>excludeStart("ide", pragmas.excludeIdeData);
  36897. args: ["aBlock", "aCollection", "aString"],
  36898. source: "do: aBlock on: aCollection displaying: aString\x0a\x09self current do: aBlock on: aCollection displaying: aString",
  36899. referencedClasses: [],
  36900. //>>excludeEnd("ide");
  36901. pragmas: [],
  36902. messageSends: ["do:on:displaying:", "current"]
  36903. }, function ($methodClass){ return function (aBlock,aCollection,aString){
  36904. var self=this,$self=this;
  36905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36906. return $core.withContext(function($ctx1) {
  36907. //>>excludeEnd("ctx");
  36908. $recv($self._current())._do_on_displaying_(aBlock,aCollection,aString);
  36909. return self;
  36910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36911. }, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString})});
  36912. //>>excludeEnd("ctx");
  36913. }; }),
  36914. $globals.ProgressHandler.a$cls);
  36915. $core.addClass("Terminal", $globals.Service, "Platform-Services");
  36916. //>>excludeStart("ide", pragmas.excludeIdeData);
  36917. $globals.Terminal.comment="I am UI interface service.\x0a\x0a## API\x0a\x0a Terminal alert: 'Hey, there is a problem'.\x0a Terminal confirm: 'Affirmative?'.\x0a Terminal prompt: 'Your name:'.";
  36918. //>>excludeEnd("ide");
  36919. $core.addMethod(
  36920. $core.method({
  36921. selector: "alert:",
  36922. protocol: "dialogs",
  36923. //>>excludeStart("ide", pragmas.excludeIdeData);
  36924. args: ["aString"],
  36925. source: "alert: aString\x0a\x09^ self current alert: aString",
  36926. referencedClasses: [],
  36927. //>>excludeEnd("ide");
  36928. pragmas: [],
  36929. messageSends: ["alert:", "current"]
  36930. }, function ($methodClass){ return function (aString){
  36931. var self=this,$self=this;
  36932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36933. return $core.withContext(function($ctx1) {
  36934. //>>excludeEnd("ctx");
  36935. return $recv($self._current())._alert_(aString);
  36936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36937. }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString})});
  36938. //>>excludeEnd("ctx");
  36939. }; }),
  36940. $globals.Terminal.a$cls);
  36941. $core.addMethod(
  36942. $core.method({
  36943. selector: "confirm:",
  36944. protocol: "dialogs",
  36945. //>>excludeStart("ide", pragmas.excludeIdeData);
  36946. args: ["aString"],
  36947. source: "confirm: aString\x0a\x09^ self current confirm: aString",
  36948. referencedClasses: [],
  36949. //>>excludeEnd("ide");
  36950. pragmas: [],
  36951. messageSends: ["confirm:", "current"]
  36952. }, function ($methodClass){ return function (aString){
  36953. var self=this,$self=this;
  36954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36955. return $core.withContext(function($ctx1) {
  36956. //>>excludeEnd("ctx");
  36957. return $recv($self._current())._confirm_(aString);
  36958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36959. }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString})});
  36960. //>>excludeEnd("ctx");
  36961. }; }),
  36962. $globals.Terminal.a$cls);
  36963. $core.addMethod(
  36964. $core.method({
  36965. selector: "prompt:",
  36966. protocol: "dialogs",
  36967. //>>excludeStart("ide", pragmas.excludeIdeData);
  36968. args: ["aString"],
  36969. source: "prompt: aString\x0a\x09^ self current prompt: aString",
  36970. referencedClasses: [],
  36971. //>>excludeEnd("ide");
  36972. pragmas: [],
  36973. messageSends: ["prompt:", "current"]
  36974. }, function ($methodClass){ return function (aString){
  36975. var self=this,$self=this;
  36976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36977. return $core.withContext(function($ctx1) {
  36978. //>>excludeEnd("ctx");
  36979. return $recv($self._current())._prompt_(aString);
  36980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36981. }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString})});
  36982. //>>excludeEnd("ctx");
  36983. }; }),
  36984. $globals.Terminal.a$cls);
  36985. $core.addMethod(
  36986. $core.method({
  36987. selector: "prompt:default:",
  36988. protocol: "dialogs",
  36989. //>>excludeStart("ide", pragmas.excludeIdeData);
  36990. args: ["aString", "defaultString"],
  36991. source: "prompt: aString default: defaultString\x0a\x09^ self current prompt: aString default: defaultString",
  36992. referencedClasses: [],
  36993. //>>excludeEnd("ide");
  36994. pragmas: [],
  36995. messageSends: ["prompt:default:", "current"]
  36996. }, function ($methodClass){ return function (aString,defaultString){
  36997. var self=this,$self=this;
  36998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36999. return $core.withContext(function($ctx1) {
  37000. //>>excludeEnd("ctx");
  37001. return $recv($self._current())._prompt_default_(aString,defaultString);
  37002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37003. }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString})});
  37004. //>>excludeEnd("ctx");
  37005. }; }),
  37006. $globals.Terminal.a$cls);
  37007. $core.addClass("Transcript", $globals.Service, "Platform-Services");
  37008. //>>excludeStart("ide", pragmas.excludeIdeData);
  37009. $globals.Transcript.comment="I am a facade for Transcript actions.\x0a\x0aI delegate actions to the currently registered transcript.\x0a\x0a## API\x0a\x0a Transcript \x0a show: 'hello world';\x0a cr;\x0a show: anObject.";
  37010. //>>excludeEnd("ide");
  37011. $core.addMethod(
  37012. $core.method({
  37013. selector: "clear",
  37014. protocol: "printing",
  37015. //>>excludeStart("ide", pragmas.excludeIdeData);
  37016. args: [],
  37017. source: "clear\x0a\x09self current clear",
  37018. referencedClasses: [],
  37019. //>>excludeEnd("ide");
  37020. pragmas: [],
  37021. messageSends: ["clear", "current"]
  37022. }, function ($methodClass){ return function (){
  37023. var self=this,$self=this;
  37024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37025. return $core.withContext(function($ctx1) {
  37026. //>>excludeEnd("ctx");
  37027. $recv($self._current())._clear();
  37028. return self;
  37029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37030. }, function($ctx1) {$ctx1.fill(self,"clear",{})});
  37031. //>>excludeEnd("ctx");
  37032. }; }),
  37033. $globals.Transcript.a$cls);
  37034. $core.addMethod(
  37035. $core.method({
  37036. selector: "cr",
  37037. protocol: "printing",
  37038. //>>excludeStart("ide", pragmas.excludeIdeData);
  37039. args: [],
  37040. source: "cr\x0a\x09self current show: String cr",
  37041. referencedClasses: ["String"],
  37042. //>>excludeEnd("ide");
  37043. pragmas: [],
  37044. messageSends: ["show:", "current", "cr"]
  37045. }, function ($methodClass){ return function (){
  37046. var self=this,$self=this;
  37047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37048. return $core.withContext(function($ctx1) {
  37049. //>>excludeEnd("ctx");
  37050. $recv($self._current())._show_($recv($globals.String)._cr());
  37051. return self;
  37052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37053. }, function($ctx1) {$ctx1.fill(self,"cr",{})});
  37054. //>>excludeEnd("ctx");
  37055. }; }),
  37056. $globals.Transcript.a$cls);
  37057. $core.addMethod(
  37058. $core.method({
  37059. selector: "inspect:",
  37060. protocol: "printing",
  37061. //>>excludeStart("ide", pragmas.excludeIdeData);
  37062. args: ["anObject"],
  37063. source: "inspect: anObject\x0a\x09self show: anObject",
  37064. referencedClasses: [],
  37065. //>>excludeEnd("ide");
  37066. pragmas: [],
  37067. messageSends: ["show:"]
  37068. }, function ($methodClass){ return function (anObject){
  37069. var self=this,$self=this;
  37070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37071. return $core.withContext(function($ctx1) {
  37072. //>>excludeEnd("ctx");
  37073. $self._show_(anObject);
  37074. return self;
  37075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37076. }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject})});
  37077. //>>excludeEnd("ctx");
  37078. }; }),
  37079. $globals.Transcript.a$cls);
  37080. $core.addMethod(
  37081. $core.method({
  37082. selector: "open",
  37083. protocol: "instance creation",
  37084. //>>excludeStart("ide", pragmas.excludeIdeData);
  37085. args: [],
  37086. source: "open\x0a\x09self current open",
  37087. referencedClasses: [],
  37088. //>>excludeEnd("ide");
  37089. pragmas: [],
  37090. messageSends: ["open", "current"]
  37091. }, function ($methodClass){ return function (){
  37092. var self=this,$self=this;
  37093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37094. return $core.withContext(function($ctx1) {
  37095. //>>excludeEnd("ctx");
  37096. $recv($self._current())._open();
  37097. return self;
  37098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37099. }, function($ctx1) {$ctx1.fill(self,"open",{})});
  37100. //>>excludeEnd("ctx");
  37101. }; }),
  37102. $globals.Transcript.a$cls);
  37103. $core.addMethod(
  37104. $core.method({
  37105. selector: "show:",
  37106. protocol: "printing",
  37107. //>>excludeStart("ide", pragmas.excludeIdeData);
  37108. args: ["anObject"],
  37109. source: "show: anObject\x0a\x09self current show: anObject",
  37110. referencedClasses: [],
  37111. //>>excludeEnd("ide");
  37112. pragmas: [],
  37113. messageSends: ["show:", "current"]
  37114. }, function ($methodClass){ return function (anObject){
  37115. var self=this,$self=this;
  37116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37117. return $core.withContext(function($ctx1) {
  37118. //>>excludeEnd("ctx");
  37119. $recv($self._current())._show_(anObject);
  37120. return self;
  37121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37122. }, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject})});
  37123. //>>excludeEnd("ctx");
  37124. }; }),
  37125. $globals.Transcript.a$cls);
  37126. $core.addMethod(
  37127. $core.method({
  37128. selector: "inspectOn:",
  37129. protocol: "*Platform-Services",
  37130. //>>excludeStart("ide", pragmas.excludeIdeData);
  37131. args: ["anInspector"],
  37132. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPut: '#self' -> self;\x0a\x09\x09\x09nextPut: '#keys' -> self keys;\x0a\x09\x09\x09nextPutAll: self associations ].\x0a\x09anInspector\x0a\x09\x09setLabel: self shortenedPrintString;\x0a\x09\x09setVariables: variables",
  37133. referencedClasses: ["Array"],
  37134. //>>excludeEnd("ide");
  37135. pragmas: [],
  37136. messageSends: ["streamContents:", "nextPut:", "->", "keys", "nextPutAll:", "associations", "setLabel:", "shortenedPrintString", "setVariables:"]
  37137. }, function ($methodClass){ return function (anInspector){
  37138. var self=this,$self=this;
  37139. var variables;
  37140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37141. return $core.withContext(function($ctx1) {
  37142. //>>excludeEnd("ctx");
  37143. variables=$recv($globals.Array)._streamContents_((function(stream){
  37144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37145. return $core.withContext(function($ctx2) {
  37146. //>>excludeEnd("ctx");
  37147. [$recv(stream)._nextPut_(["#self".__minus_gt(self)
  37148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37149. ,$ctx2.sendIdx["->"]=1
  37150. //>>excludeEnd("ctx");
  37151. ][0])
  37152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37153. ,$ctx2.sendIdx["nextPut:"]=1
  37154. //>>excludeEnd("ctx");
  37155. ][0];
  37156. $recv(stream)._nextPut_("#keys".__minus_gt($self._keys()));
  37157. return $recv(stream)._nextPutAll_($self._associations());
  37158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37159. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  37160. //>>excludeEnd("ctx");
  37161. }));
  37162. $recv(anInspector)._setLabel_($self._shortenedPrintString());
  37163. $recv(anInspector)._setVariables_(variables);
  37164. return self;
  37165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37166. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
  37167. //>>excludeEnd("ctx");
  37168. }; }),
  37169. $globals.AssociativeCollection);
  37170. $core.addMethod(
  37171. $core.method({
  37172. selector: "inspectOn:",
  37173. protocol: "*Platform-Services",
  37174. //>>excludeStart("ide", pragmas.excludeIdeData);
  37175. args: ["anInspector"],
  37176. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09| i |\x0a\x09\x09stream nextPut: '#self' -> self.\x0a\x09\x09i := 1.\x0a\x09\x09self do: [ :each |\x0a\x09\x09\x09stream nextPut: i -> each.\x0a\x09\x09\x09i := i + 1 ] ].\x0a\x09anInspector\x0a\x09\x09setLabel: self shortenedPrintString;\x0a\x09\x09setVariables: variables",
  37177. referencedClasses: ["Array"],
  37178. //>>excludeEnd("ide");
  37179. pragmas: [],
  37180. messageSends: ["streamContents:", "nextPut:", "->", "do:", "+", "setLabel:", "shortenedPrintString", "setVariables:"]
  37181. }, function ($methodClass){ return function (anInspector){
  37182. var self=this,$self=this;
  37183. var variables;
  37184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37185. return $core.withContext(function($ctx1) {
  37186. //>>excludeEnd("ctx");
  37187. variables=$recv($globals.Array)._streamContents_((function(stream){
  37188. var i;
  37189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37190. return $core.withContext(function($ctx2) {
  37191. //>>excludeEnd("ctx");
  37192. [$recv(stream)._nextPut_(["#self".__minus_gt(self)
  37193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37194. ,$ctx2.sendIdx["->"]=1
  37195. //>>excludeEnd("ctx");
  37196. ][0])
  37197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37198. ,$ctx2.sendIdx["nextPut:"]=1
  37199. //>>excludeEnd("ctx");
  37200. ][0];
  37201. i=(1);
  37202. return $self._do_((function(each){
  37203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37204. return $core.withContext(function($ctx3) {
  37205. //>>excludeEnd("ctx");
  37206. $recv(stream)._nextPut_($recv(i).__minus_gt(each));
  37207. i=$recv(i).__plus((1));
  37208. return i;
  37209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37210. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  37211. //>>excludeEnd("ctx");
  37212. }));
  37213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37214. }, function($ctx2) {$ctx2.fillBlock({stream:stream,i:i},$ctx1,1)});
  37215. //>>excludeEnd("ctx");
  37216. }));
  37217. $recv(anInspector)._setLabel_($self._shortenedPrintString());
  37218. $recv(anInspector)._setVariables_(variables);
  37219. return self;
  37220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37221. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
  37222. //>>excludeEnd("ctx");
  37223. }; }),
  37224. $globals.Collection);
  37225. $core.addMethod(
  37226. $core.method({
  37227. selector: "inspectOn:",
  37228. protocol: "*Platform-Services",
  37229. //>>excludeStart("ide", pragmas.excludeIdeData);
  37230. args: ["anInspector"],
  37231. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPut: '#self' -> self;\x0a\x09\x09\x09nextPut: '#year' -> self year;\x0a\x09\x09\x09nextPut: '#month' -> self month;\x0a\x09\x09\x09nextPut: '#day' -> self day;\x0a\x09\x09\x09nextPut: '#hours' -> self hours;\x0a\x09\x09\x09nextPut: '#minutes' -> self minutes;\x0a\x09\x09\x09nextPut: '#seconds' -> self seconds;\x0a\x09\x09\x09nextPut: '#milliseconds' -> self milliseconds ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
  37232. referencedClasses: ["Array"],
  37233. //>>excludeEnd("ide");
  37234. pragmas: [],
  37235. messageSends: ["streamContents:", "nextPut:", "->", "year", "month", "day", "hours", "minutes", "seconds", "milliseconds", "setLabel:", "printString", "setVariables:"]
  37236. }, function ($methodClass){ return function (anInspector){
  37237. var self=this,$self=this;
  37238. var variables;
  37239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37240. return $core.withContext(function($ctx1) {
  37241. //>>excludeEnd("ctx");
  37242. variables=$recv($globals.Array)._streamContents_((function(stream){
  37243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37244. return $core.withContext(function($ctx2) {
  37245. //>>excludeEnd("ctx");
  37246. [$recv(stream)._nextPut_(["#self".__minus_gt(self)
  37247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37248. ,$ctx2.sendIdx["->"]=1
  37249. //>>excludeEnd("ctx");
  37250. ][0])
  37251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37252. ,$ctx2.sendIdx["nextPut:"]=1
  37253. //>>excludeEnd("ctx");
  37254. ][0];
  37255. [$recv(stream)._nextPut_(["#year".__minus_gt($self._year())
  37256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37257. ,$ctx2.sendIdx["->"]=2
  37258. //>>excludeEnd("ctx");
  37259. ][0])
  37260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37261. ,$ctx2.sendIdx["nextPut:"]=2
  37262. //>>excludeEnd("ctx");
  37263. ][0];
  37264. [$recv(stream)._nextPut_(["#month".__minus_gt($self._month())
  37265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37266. ,$ctx2.sendIdx["->"]=3
  37267. //>>excludeEnd("ctx");
  37268. ][0])
  37269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37270. ,$ctx2.sendIdx["nextPut:"]=3
  37271. //>>excludeEnd("ctx");
  37272. ][0];
  37273. [$recv(stream)._nextPut_(["#day".__minus_gt($self._day())
  37274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37275. ,$ctx2.sendIdx["->"]=4
  37276. //>>excludeEnd("ctx");
  37277. ][0])
  37278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37279. ,$ctx2.sendIdx["nextPut:"]=4
  37280. //>>excludeEnd("ctx");
  37281. ][0];
  37282. [$recv(stream)._nextPut_(["#hours".__minus_gt($self._hours())
  37283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37284. ,$ctx2.sendIdx["->"]=5
  37285. //>>excludeEnd("ctx");
  37286. ][0])
  37287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37288. ,$ctx2.sendIdx["nextPut:"]=5
  37289. //>>excludeEnd("ctx");
  37290. ][0];
  37291. [$recv(stream)._nextPut_(["#minutes".__minus_gt($self._minutes())
  37292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37293. ,$ctx2.sendIdx["->"]=6
  37294. //>>excludeEnd("ctx");
  37295. ][0])
  37296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37297. ,$ctx2.sendIdx["nextPut:"]=6
  37298. //>>excludeEnd("ctx");
  37299. ][0];
  37300. [$recv(stream)._nextPut_(["#seconds".__minus_gt($self._seconds())
  37301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37302. ,$ctx2.sendIdx["->"]=7
  37303. //>>excludeEnd("ctx");
  37304. ][0])
  37305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37306. ,$ctx2.sendIdx["nextPut:"]=7
  37307. //>>excludeEnd("ctx");
  37308. ][0];
  37309. return $recv(stream)._nextPut_("#milliseconds".__minus_gt($self._milliseconds()));
  37310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37311. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  37312. //>>excludeEnd("ctx");
  37313. }));
  37314. $recv(anInspector)._setLabel_($self._printString());
  37315. $recv(anInspector)._setVariables_(variables);
  37316. return self;
  37317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37318. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
  37319. //>>excludeEnd("ctx");
  37320. }; }),
  37321. $globals.Date);
  37322. $core.addMethod(
  37323. $core.method({
  37324. selector: "inspectOn:",
  37325. protocol: "*Platform-Services",
  37326. //>>excludeStart("ide", pragmas.excludeIdeData);
  37327. args: ["anInspector"],
  37328. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPut: '#self' -> self jsObject;\x0a\x09\x09\x09nextPutAll: (JSObjectProxy associationsOfProxy: self) ].\x0a\x09anInspector setLabel: self printString.\x0a\x09anInspector setVariables: variables",
  37329. referencedClasses: ["Array", "JSObjectProxy"],
  37330. //>>excludeEnd("ide");
  37331. pragmas: [],
  37332. messageSends: ["streamContents:", "nextPut:", "->", "jsObject", "nextPutAll:", "associationsOfProxy:", "setLabel:", "printString", "setVariables:"]
  37333. }, function ($methodClass){ return function (anInspector){
  37334. var self=this,$self=this;
  37335. var variables;
  37336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37337. return $core.withContext(function($ctx1) {
  37338. //>>excludeEnd("ctx");
  37339. variables=$recv($globals.Array)._streamContents_((function(stream){
  37340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37341. return $core.withContext(function($ctx2) {
  37342. //>>excludeEnd("ctx");
  37343. $recv(stream)._nextPut_("#self".__minus_gt($self._jsObject()));
  37344. return $recv(stream)._nextPutAll_($recv($globals.JSObjectProxy)._associationsOfProxy_(self));
  37345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37346. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  37347. //>>excludeEnd("ctx");
  37348. }));
  37349. $recv(anInspector)._setLabel_($self._printString());
  37350. $recv(anInspector)._setVariables_(variables);
  37351. return self;
  37352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37353. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
  37354. //>>excludeEnd("ctx");
  37355. }; }),
  37356. $globals.JSObjectProxy);
  37357. $core.addMethod(
  37358. $core.method({
  37359. selector: "inspectOn:",
  37360. protocol: "*Platform-Services",
  37361. //>>excludeStart("ide", pragmas.excludeIdeData);
  37362. args: ["anInspector"],
  37363. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream nextPut: '#self' -> self.\x0a\x09\x09self class allInstanceVariableNames do: [ :each |\x0a\x09\x09\x09stream nextPut: each -> (self instVarNamed: each) ] ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
  37364. referencedClasses: ["Array"],
  37365. //>>excludeEnd("ide");
  37366. pragmas: [],
  37367. messageSends: ["streamContents:", "nextPut:", "->", "do:", "allInstanceVariableNames", "class", "instVarNamed:", "setLabel:", "printString", "setVariables:"]
  37368. }, function ($methodClass){ return function (anInspector){
  37369. var self=this,$self=this;
  37370. var variables;
  37371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37372. return $core.withContext(function($ctx1) {
  37373. //>>excludeEnd("ctx");
  37374. variables=$recv($globals.Array)._streamContents_((function(stream){
  37375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37376. return $core.withContext(function($ctx2) {
  37377. //>>excludeEnd("ctx");
  37378. [$recv(stream)._nextPut_(["#self".__minus_gt(self)
  37379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37380. ,$ctx2.sendIdx["->"]=1
  37381. //>>excludeEnd("ctx");
  37382. ][0])
  37383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37384. ,$ctx2.sendIdx["nextPut:"]=1
  37385. //>>excludeEnd("ctx");
  37386. ][0];
  37387. return $recv($recv($self._class())._allInstanceVariableNames())._do_((function(each){
  37388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37389. return $core.withContext(function($ctx3) {
  37390. //>>excludeEnd("ctx");
  37391. return $recv(stream)._nextPut_($recv(each).__minus_gt($self._instVarNamed_(each)));
  37392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37393. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  37394. //>>excludeEnd("ctx");
  37395. }));
  37396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37397. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  37398. //>>excludeEnd("ctx");
  37399. }));
  37400. $recv(anInspector)._setLabel_($self._printString());
  37401. $recv(anInspector)._setVariables_(variables);
  37402. return self;
  37403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37404. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
  37405. //>>excludeEnd("ctx");
  37406. }; }),
  37407. $globals.Object);
  37408. $core.addMethod(
  37409. $core.method({
  37410. selector: "do:displayingProgress:",
  37411. protocol: "*Platform-Services",
  37412. //>>excludeStart("ide", pragmas.excludeIdeData);
  37413. args: ["aBlock", "aString"],
  37414. source: "do: aBlock displayingProgress: aString\x0a\x09ProgressHandler \x0a\x09\x09do: aBlock \x0a\x09\x09on: self \x0a\x09\x09displaying: aString",
  37415. referencedClasses: ["ProgressHandler"],
  37416. //>>excludeEnd("ide");
  37417. pragmas: [],
  37418. messageSends: ["do:on:displaying:"]
  37419. }, function ($methodClass){ return function (aBlock,aString){
  37420. var self=this,$self=this;
  37421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37422. return $core.withContext(function($ctx1) {
  37423. //>>excludeEnd("ctx");
  37424. $recv($globals.ProgressHandler)._do_on_displaying_(aBlock,self,aString);
  37425. return self;
  37426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37427. }, function($ctx1) {$ctx1.fill(self,"do:displayingProgress:",{aBlock:aBlock,aString:aString})});
  37428. //>>excludeEnd("ctx");
  37429. }; }),
  37430. $globals.SequenceableCollection);
  37431. $core.addMethod(
  37432. $core.method({
  37433. selector: "inspectOn:",
  37434. protocol: "*Platform-Services",
  37435. //>>excludeStart("ide", pragmas.excludeIdeData);
  37436. args: ["anInspector"],
  37437. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream nextPut: '#self' -> self.\x0a\x09\x09self withIndexDo: [ :each :i |\x0a\x09\x09\x09stream nextPut: i -> each ] ].\x0a\x09anInspector\x0a\x09\x09setLabel: self shortenedPrintString;\x0a\x09\x09setVariables: variables",
  37438. referencedClasses: ["Array"],
  37439. //>>excludeEnd("ide");
  37440. pragmas: [],
  37441. messageSends: ["streamContents:", "nextPut:", "->", "withIndexDo:", "setLabel:", "shortenedPrintString", "setVariables:"]
  37442. }, function ($methodClass){ return function (anInspector){
  37443. var self=this,$self=this;
  37444. var variables;
  37445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37446. return $core.withContext(function($ctx1) {
  37447. //>>excludeEnd("ctx");
  37448. variables=$recv($globals.Array)._streamContents_((function(stream){
  37449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37450. return $core.withContext(function($ctx2) {
  37451. //>>excludeEnd("ctx");
  37452. [$recv(stream)._nextPut_(["#self".__minus_gt(self)
  37453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37454. ,$ctx2.sendIdx["->"]=1
  37455. //>>excludeEnd("ctx");
  37456. ][0])
  37457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37458. ,$ctx2.sendIdx["nextPut:"]=1
  37459. //>>excludeEnd("ctx");
  37460. ][0];
  37461. return $self._withIndexDo_((function(each,i){
  37462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37463. return $core.withContext(function($ctx3) {
  37464. //>>excludeEnd("ctx");
  37465. return $recv(stream)._nextPut_($recv(i).__minus_gt(each));
  37466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37467. }, function($ctx3) {$ctx3.fillBlock({each:each,i:i},$ctx2,2)});
  37468. //>>excludeEnd("ctx");
  37469. }));
  37470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37471. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  37472. //>>excludeEnd("ctx");
  37473. }));
  37474. $recv(anInspector)._setLabel_($self._shortenedPrintString());
  37475. $recv(anInspector)._setVariables_(variables);
  37476. return self;
  37477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37478. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
  37479. //>>excludeEnd("ctx");
  37480. }; }),
  37481. $globals.SequenceableCollection);
  37482. $core.addMethod(
  37483. $core.method({
  37484. selector: "inspectOn:",
  37485. protocol: "*Platform-Services",
  37486. //>>excludeStart("ide", pragmas.excludeIdeData);
  37487. args: ["anInspector"],
  37488. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPut: '#self' -> self;\x0a\x09\x09\x09nextPut: '#home' -> self home;\x0a\x09\x09\x09nextPut: '#receiver' -> self receiver;\x0a\x09\x09\x09nextPut: '#selector' -> self selector;\x0a\x09\x09\x09nextPut: '#locals' -> self locals.\x0a\x09self class instanceVariableNames do: [ :each |\x0a\x09\x09stream nextPut: each -> (self instVarNamed: each) ] ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
  37489. referencedClasses: ["Array"],
  37490. //>>excludeEnd("ide");
  37491. pragmas: [],
  37492. messageSends: ["streamContents:", "nextPut:", "->", "home", "receiver", "selector", "locals", "do:", "instanceVariableNames", "class", "instVarNamed:", "setLabel:", "printString", "setVariables:"]
  37493. }, function ($methodClass){ return function (anInspector){
  37494. var self=this,$self=this;
  37495. var variables;
  37496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37497. return $core.withContext(function($ctx1) {
  37498. //>>excludeEnd("ctx");
  37499. variables=$recv($globals.Array)._streamContents_((function(stream){
  37500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37501. return $core.withContext(function($ctx2) {
  37502. //>>excludeEnd("ctx");
  37503. [$recv(stream)._nextPut_(["#self".__minus_gt(self)
  37504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37505. ,$ctx2.sendIdx["->"]=1
  37506. //>>excludeEnd("ctx");
  37507. ][0])
  37508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37509. ,$ctx2.sendIdx["nextPut:"]=1
  37510. //>>excludeEnd("ctx");
  37511. ][0];
  37512. [$recv(stream)._nextPut_(["#home".__minus_gt($self._home())
  37513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37514. ,$ctx2.sendIdx["->"]=2
  37515. //>>excludeEnd("ctx");
  37516. ][0])
  37517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37518. ,$ctx2.sendIdx["nextPut:"]=2
  37519. //>>excludeEnd("ctx");
  37520. ][0];
  37521. [$recv(stream)._nextPut_(["#receiver".__minus_gt($self._receiver())
  37522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37523. ,$ctx2.sendIdx["->"]=3
  37524. //>>excludeEnd("ctx");
  37525. ][0])
  37526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37527. ,$ctx2.sendIdx["nextPut:"]=3
  37528. //>>excludeEnd("ctx");
  37529. ][0];
  37530. [$recv(stream)._nextPut_(["#selector".__minus_gt($self._selector())
  37531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37532. ,$ctx2.sendIdx["->"]=4
  37533. //>>excludeEnd("ctx");
  37534. ][0])
  37535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37536. ,$ctx2.sendIdx["nextPut:"]=4
  37537. //>>excludeEnd("ctx");
  37538. ][0];
  37539. [$recv(stream)._nextPut_(["#locals".__minus_gt($self._locals())
  37540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37541. ,$ctx2.sendIdx["->"]=5
  37542. //>>excludeEnd("ctx");
  37543. ][0])
  37544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37545. ,$ctx2.sendIdx["nextPut:"]=5
  37546. //>>excludeEnd("ctx");
  37547. ][0];
  37548. return $recv($recv($self._class())._instanceVariableNames())._do_((function(each){
  37549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37550. return $core.withContext(function($ctx3) {
  37551. //>>excludeEnd("ctx");
  37552. return $recv(stream)._nextPut_($recv(each).__minus_gt($self._instVarNamed_(each)));
  37553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37554. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  37555. //>>excludeEnd("ctx");
  37556. }));
  37557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37558. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  37559. //>>excludeEnd("ctx");
  37560. }));
  37561. $recv(anInspector)._setLabel_($self._printString());
  37562. $recv(anInspector)._setVariables_(variables);
  37563. return self;
  37564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37565. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
  37566. //>>excludeEnd("ctx");
  37567. }; }),
  37568. $globals.TMethodContext);
  37569. });
  37570. define('amber/deploy',[
  37571. './helpers',
  37572. './boot', // pre-fetch, dep of ./helpers
  37573. // --- packages of the core Amber begin here ---
  37574. 'amber/core/Kernel-Helpers',
  37575. 'amber/core/Kernel-Objects',
  37576. 'amber/core/Kernel-Classes',
  37577. 'amber/core/Kernel-Methods',
  37578. 'amber/core/Kernel-Collections',
  37579. 'amber/core/Kernel-Dag',
  37580. 'amber/core/Kernel-Infrastructure',
  37581. 'amber/core/Kernel-Promises',
  37582. 'amber/core/Kernel-Exceptions',
  37583. 'amber/core/Kernel-Announcements',
  37584. 'amber/core/Platform-Services',
  37585. // --- packages of the core Amber end here ---
  37586. ], function (amber) {
  37587. return amber;
  37588. });
  37589. /*
  37590. * Generated by PEG.js 0.10.0.
  37591. *
  37592. * http://pegjs.org/
  37593. */
  37594. define('amber/parser',["./boot"], function(__boot) {
  37595. "use strict";
  37596. function peg$subclass(child, parent) {
  37597. function ctor() { this.constructor = child; }
  37598. ctor.prototype = parent.prototype;
  37599. child.prototype = new ctor();
  37600. }
  37601. function peg$SyntaxError(message, expected, found, location) {
  37602. this.message = message;
  37603. this.expected = expected;
  37604. this.found = found;
  37605. this.location = location;
  37606. this.name = "SyntaxError";
  37607. if (typeof Error.captureStackTrace === "function") {
  37608. Error.captureStackTrace(this, peg$SyntaxError);
  37609. }
  37610. }
  37611. peg$subclass(peg$SyntaxError, Error);
  37612. peg$SyntaxError.buildMessage = function(expected, found) {
  37613. var DESCRIBE_EXPECTATION_FNS = {
  37614. literal: function(expectation) {
  37615. return "\"" + literalEscape(expectation.text) + "\"";
  37616. },
  37617. "class": function(expectation) {
  37618. var escapedParts = "",
  37619. i;
  37620. for (i = 0; i < expectation.parts.length; i++) {
  37621. escapedParts += expectation.parts[i] instanceof Array
  37622. ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1])
  37623. : classEscape(expectation.parts[i]);
  37624. }
  37625. return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]";
  37626. },
  37627. any: function(expectation) {
  37628. return "any character";
  37629. },
  37630. end: function(expectation) {
  37631. return "end of input";
  37632. },
  37633. other: function(expectation) {
  37634. return expectation.description;
  37635. }
  37636. };
  37637. function hex(ch) {
  37638. return ch.charCodeAt(0).toString(16).toUpperCase();
  37639. }
  37640. function literalEscape(s) {
  37641. return s
  37642. .replace(/\\/g, '\\\\')
  37643. .replace(/"/g, '\\"')
  37644. .replace(/\0/g, '\\0')
  37645. .replace(/\t/g, '\\t')
  37646. .replace(/\n/g, '\\n')
  37647. .replace(/\r/g, '\\r')
  37648. .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
  37649. .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); });
  37650. }
  37651. function classEscape(s) {
  37652. return s
  37653. .replace(/\\/g, '\\\\')
  37654. .replace(/\]/g, '\\]')
  37655. .replace(/\^/g, '\\^')
  37656. .replace(/-/g, '\\-')
  37657. .replace(/\0/g, '\\0')
  37658. .replace(/\t/g, '\\t')
  37659. .replace(/\n/g, '\\n')
  37660. .replace(/\r/g, '\\r')
  37661. .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
  37662. .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); });
  37663. }
  37664. function describeExpectation(expectation) {
  37665. return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
  37666. }
  37667. function describeExpected(expected) {
  37668. var descriptions = new Array(expected.length),
  37669. i, j;
  37670. for (i = 0; i < expected.length; i++) {
  37671. descriptions[i] = describeExpectation(expected[i]);
  37672. }
  37673. descriptions.sort();
  37674. if (descriptions.length > 0) {
  37675. for (i = 1, j = 1; i < descriptions.length; i++) {
  37676. if (descriptions[i - 1] !== descriptions[i]) {
  37677. descriptions[j] = descriptions[i];
  37678. j++;
  37679. }
  37680. }
  37681. descriptions.length = j;
  37682. }
  37683. switch (descriptions.length) {
  37684. case 1:
  37685. return descriptions[0];
  37686. case 2:
  37687. return descriptions[0] + " or " + descriptions[1];
  37688. default:
  37689. return descriptions.slice(0, -1).join(", ")
  37690. + ", or "
  37691. + descriptions[descriptions.length - 1];
  37692. }
  37693. }
  37694. function describeFound(found) {
  37695. return found ? "\"" + literalEscape(found) + "\"" : "end of input";
  37696. }
  37697. return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
  37698. };
  37699. function peg$parse(input, options) {
  37700. options = options !== void 0 ? options : {};
  37701. var peg$FAILED = {},
  37702. peg$startRuleFunctions = { start: peg$parsestart },
  37703. peg$startRuleFunction = peg$parsestart,
  37704. peg$c0 = /^[ \t\x0B\f\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF\n\r\u2028\u2029]/,
  37705. peg$c1 = peg$classExpectation([" ", "\t", "\x0B", "\f", "\xA0", "\u1680", ["\u2000", "\u200A"], "\u202F", "\u205F", "\u3000", "\uFEFF", "\n", "\r", "\u2028", "\u2029"], false, false),
  37706. peg$c2 = "\"",
  37707. peg$c3 = peg$literalExpectation("\"", false),
  37708. peg$c4 = /^[^"]/,
  37709. peg$c5 = peg$classExpectation(["\""], true, false),
  37710. peg$c6 = ".",
  37711. peg$c7 = peg$literalExpectation(".", false),
  37712. peg$c8 = /^[a-zA-Z]/,
  37713. peg$c9 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false),
  37714. peg$c10 = /^[a-zA-Z0-9]/,
  37715. peg$c11 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false),
  37716. peg$c12 = ":",
  37717. peg$c13 = peg$literalExpectation(":", false),
  37718. peg$c14 = /^[A-Z]/,
  37719. peg$c15 = peg$classExpectation([["A", "Z"]], false, false),
  37720. peg$c16 = function(val) {
  37721. return newNode($globals.ValueNode)._value_(val);
  37722. },
  37723. peg$c17 = "'",
  37724. peg$c18 = peg$literalExpectation("'", false),
  37725. peg$c19 = "''",
  37726. peg$c20 = peg$literalExpectation("''", false),
  37727. peg$c21 = function() {return '\'';},
  37728. peg$c22 = /^[^']/,
  37729. peg$c23 = peg$classExpectation(["'"], true, false),
  37730. peg$c24 = function(val) {return val.join('');},
  37731. peg$c25 = "$",
  37732. peg$c26 = peg$literalExpectation("$", false),
  37733. peg$c27 = peg$anyExpectation(),
  37734. peg$c28 = function(char) {
  37735. return newNode($globals.ValueNode)._value_(char);
  37736. },
  37737. peg$c29 = "#",
  37738. peg$c30 = peg$literalExpectation("#", false),
  37739. peg$c31 = function(rest) {return rest;},
  37740. peg$c32 = "e",
  37741. peg$c33 = peg$literalExpectation("e", false),
  37742. peg$c34 = function(n) {return parseFloat(n);},
  37743. peg$c35 = "-",
  37744. peg$c36 = peg$literalExpectation("-", false),
  37745. peg$c37 = "16r",
  37746. peg$c38 = peg$literalExpectation("16r", false),
  37747. peg$c39 = /^[0-9a-fA-F]/,
  37748. peg$c40 = peg$classExpectation([["0", "9"], ["a", "f"], ["A", "F"]], false, false),
  37749. peg$c41 = function(neg, num) {
  37750. return parseInt(((neg || '') + num), 16);
  37751. },
  37752. peg$c42 = /^[0-9]/,
  37753. peg$c43 = peg$classExpectation([["0", "9"]], false, false),
  37754. peg$c44 = function(n) {return parseFloat(n, 10);},
  37755. peg$c45 = function(n) {return parseInt(n, 10);},
  37756. peg$c46 = "#(",
  37757. peg$c47 = peg$literalExpectation("#(", false),
  37758. peg$c48 = ")",
  37759. peg$c49 = peg$literalExpectation(")", false),
  37760. peg$c50 = function(rest) {
  37761. return newNode($globals.ValueNode)._value_(rest);
  37762. },
  37763. peg$c51 = "(",
  37764. peg$c52 = peg$literalExpectation("(", false),
  37765. peg$c53 = function(lit) {return lit._value();},
  37766. peg$c54 = "{",
  37767. peg$c55 = peg$literalExpectation("{", false),
  37768. peg$c56 = "}",
  37769. peg$c57 = peg$literalExpectation("}", false),
  37770. peg$c58 = function(expressions) {
  37771. return newNode($globals.DynamicArrayNode)._dagChildren_(expressions || []);
  37772. },
  37773. peg$c59 = "#{",
  37774. peg$c60 = peg$literalExpectation("#{", false),
  37775. peg$c61 = function(expressions) {
  37776. return newNode($globals.DynamicDictionaryNode)._dagChildren_(expressions || []);
  37777. },
  37778. peg$c62 = "true",
  37779. peg$c63 = peg$literalExpectation("true", false),
  37780. peg$c64 = function() {return true;},
  37781. peg$c65 = "false",
  37782. peg$c66 = peg$literalExpectation("false", false),
  37783. peg$c67 = function() {return false;},
  37784. peg$c68 = "nil",
  37785. peg$c69 = peg$literalExpectation("nil", false),
  37786. peg$c70 = function() {return null;},
  37787. peg$c71 = function(identifier) {
  37788. return newNode($globals.VariableNode)._identifier_(identifier);
  37789. },
  37790. peg$c72 = /^[\\+*\/=><,@%~|&\-]/,
  37791. peg$c73 = peg$classExpectation(["\\", "+", "*", "/", "=", ">", "<", ",", "@", "%", "~", "|", "&", "-"], false, false),
  37792. peg$c74 = function(key, arg) {return {key:key, arg:arg};},
  37793. peg$c75 = function(pairs) {
  37794. var selector = '';
  37795. var params = [];
  37796. for(var i = 0; i < pairs.length; i++) {
  37797. selector += pairs[i].key;
  37798. params.push(pairs[i].arg);
  37799. }
  37800. return [selector, params];
  37801. },
  37802. peg$c76 = function(selector, arg) {
  37803. return [selector, [arg]];
  37804. },
  37805. peg$c77 = function(selector) {return [selector, []];},
  37806. peg$c78 = function(expression) {
  37807. return expression;
  37808. },
  37809. peg$c79 = function(first, others) {
  37810. return [first].concat(others);
  37811. },
  37812. peg$c80 = function(selector) {
  37813. return $globals.Message._selector_arguments_(selector, []);
  37814. },
  37815. peg$c81 = function(pairs) {
  37816. var selector = '';
  37817. var args = [];
  37818. for(var i = 0; i < pairs.length; i++) {
  37819. selector += pairs[i].key;
  37820. args.push(pairs[i].arg._value());
  37821. }
  37822. return $globals.Message._selector_arguments_(selector, args)
  37823. },
  37824. peg$c82 = "<",
  37825. peg$c83 = peg$literalExpectation("<", false),
  37826. peg$c84 = ">",
  37827. peg$c85 = peg$literalExpectation(">", false),
  37828. peg$c86 = function(message) {return message;},
  37829. peg$c87 = ":=",
  37830. peg$c88 = peg$literalExpectation(":=", false),
  37831. peg$c89 = function(variable, expression) {
  37832. return newNode($globals.AssignmentNode)._left_(variable)._right_(expression);
  37833. },
  37834. peg$c90 = "^",
  37835. peg$c91 = peg$literalExpectation("^", false),
  37836. peg$c92 = function(expression) {
  37837. return newNode($globals.ReturnNode)._expression_(expression);
  37838. },
  37839. peg$c93 = "|",
  37840. peg$c94 = peg$literalExpectation("|", false),
  37841. peg$c95 = function(variable) {return variable;},
  37842. peg$c96 = function(vars) {
  37843. return vars;
  37844. },
  37845. peg$c97 = function(param) {return param;},
  37846. peg$c98 = function(params) {
  37847. return params;
  37848. },
  37849. peg$c99 = function(ret) {return [ret];},
  37850. peg$c100 = function(exps, ret) {
  37851. var expressions = exps;
  37852. expressions.push(ret);
  37853. return expressions;
  37854. },
  37855. peg$c101 = function(expressions) {return expressions || [];},
  37856. peg$c102 = "[",
  37857. peg$c103 = peg$literalExpectation("[", false),
  37858. peg$c104 = "]",
  37859. peg$c105 = peg$literalExpectation("]", false),
  37860. peg$c106 = function(params, temps, statements) {
  37861. return newNode($globals.BlockNode)
  37862. ._parameters_(params || [])
  37863. ._sequenceNode_(newSequenceNode($globals.BlockSequenceNode, temps, statements));
  37864. },
  37865. peg$c107 = function(selector) {
  37866. return newNode($globals.SendNode)._selector_(selector);
  37867. },
  37868. peg$c108 = function(receiver, tail) {
  37869. return receiver._withTail_(tail);
  37870. },
  37871. peg$c109 = function(selector, arg) {
  37872. return newNode($globals.SendNode)._selector_(selector)._arguments_([arg]);
  37873. },
  37874. peg$c110 = function(unarys, binarys) { return unarys.concat(binarys); },
  37875. peg$c111 = function(pairs) {
  37876. var selector = '';
  37877. var args = [];
  37878. for(var i = 0; i < pairs.length; i++) {
  37879. selector += pairs[i].key;
  37880. args.push(pairs[i].arg);
  37881. }
  37882. return newNode($globals.SendNode)._selector_(selector)._arguments_(args);
  37883. },
  37884. peg$c112 = function(binarys, final) {
  37885. if (final) binarys.push(final);
  37886. return binarys;
  37887. },
  37888. peg$c113 = function(receiver, tail) {return tail.length > 0;},
  37889. peg$c114 = ";",
  37890. peg$c115 = peg$literalExpectation(";", false),
  37891. peg$c116 = function(receiver, tail, mess) {return mess;},
  37892. peg$c117 = function(receiver, tail, messages) {
  37893. messages.unshift(receiver._withTail_(tail));
  37894. return newNode($globals.CascadeNode)._dagChildren_(messages);
  37895. },
  37896. peg$c118 = function(pattern, aPragmas, temps, zPragmas, statements) {
  37897. return newNode($globals.MethodNode)
  37898. ._selector_(pattern[0])
  37899. ._arguments_(pattern[1])
  37900. ._pragmas_((aPragmas || []).concat(zPragmas || []))
  37901. ._sequenceNode_(newSequenceNode($globals.SequenceNode, temps, statements));
  37902. },
  37903. peg$c119 = function(receiver, tail) { return tail.length > 0 && tail[tail.length-1]._selector() === '->' },
  37904. peg$c120 = function(receiver, tail) {
  37905. var last = tail.pop();
  37906. return [receiver._withTail_(tail), last._arguments()[0]];
  37907. },
  37908. peg$c121 = function(first, others) {
  37909. return first.concat.apply(first, others);
  37910. },
  37911. peg$currPos = 0,
  37912. peg$savedPos = 0,
  37913. peg$posDetailsCache = [{ line: 1, column: 1 }],
  37914. peg$maxFailPos = 0,
  37915. peg$maxFailExpected = [],
  37916. peg$silentFails = 0,
  37917. peg$resultsCache = {},
  37918. peg$result;
  37919. if ("startRule" in options) {
  37920. if (!(options.startRule in peg$startRuleFunctions)) {
  37921. throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
  37922. }
  37923. peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
  37924. }
  37925. function text() {
  37926. return input.substring(peg$savedPos, peg$currPos);
  37927. }
  37928. function location() {
  37929. return peg$computeLocation(peg$savedPos, peg$currPos);
  37930. }
  37931. function expected(description, location) {
  37932. location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)
  37933. throw peg$buildStructuredError(
  37934. [peg$otherExpectation(description)],
  37935. input.substring(peg$savedPos, peg$currPos),
  37936. location
  37937. );
  37938. }
  37939. function error(message, location) {
  37940. location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)
  37941. throw peg$buildSimpleError(message, location);
  37942. }
  37943. function peg$literalExpectation(text, ignoreCase) {
  37944. return { type: "literal", text: text, ignoreCase: ignoreCase };
  37945. }
  37946. function peg$classExpectation(parts, inverted, ignoreCase) {
  37947. return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase };
  37948. }
  37949. function peg$anyExpectation() {
  37950. return { type: "any" };
  37951. }
  37952. function peg$endExpectation() {
  37953. return { type: "end" };
  37954. }
  37955. function peg$otherExpectation(description) {
  37956. return { type: "other", description: description };
  37957. }
  37958. function peg$computePosDetails(pos) {
  37959. var details = peg$posDetailsCache[pos], p;
  37960. if (details) {
  37961. return details;
  37962. } else {
  37963. p = pos - 1;
  37964. while (!peg$posDetailsCache[p]) {
  37965. p--;
  37966. }
  37967. details = peg$posDetailsCache[p];
  37968. details = {
  37969. line: details.line,
  37970. column: details.column
  37971. };
  37972. while (p < pos) {
  37973. if (input.charCodeAt(p) === 10) {
  37974. details.line++;
  37975. details.column = 1;
  37976. } else {
  37977. details.column++;
  37978. }
  37979. p++;
  37980. }
  37981. peg$posDetailsCache[pos] = details;
  37982. return details;
  37983. }
  37984. }
  37985. function peg$computeLocation(startPos, endPos) {
  37986. var startPosDetails = peg$computePosDetails(startPos),
  37987. endPosDetails = peg$computePosDetails(endPos);
  37988. return {
  37989. start: {
  37990. offset: startPos,
  37991. line: startPosDetails.line,
  37992. column: startPosDetails.column
  37993. },
  37994. end: {
  37995. offset: endPos,
  37996. line: endPosDetails.line,
  37997. column: endPosDetails.column
  37998. }
  37999. };
  38000. }
  38001. function peg$fail(expected) {
  38002. if (peg$currPos < peg$maxFailPos) { return; }
  38003. if (peg$currPos > peg$maxFailPos) {
  38004. peg$maxFailPos = peg$currPos;
  38005. peg$maxFailExpected = [];
  38006. }
  38007. peg$maxFailExpected.push(expected);
  38008. }
  38009. function peg$buildSimpleError(message, location) {
  38010. return new peg$SyntaxError(message, null, null, location);
  38011. }
  38012. function peg$buildStructuredError(expected, found, location) {
  38013. return new peg$SyntaxError(
  38014. peg$SyntaxError.buildMessage(expected, found),
  38015. expected,
  38016. found,
  38017. location
  38018. );
  38019. }
  38020. function peg$parsestart() {
  38021. var s0;
  38022. var key = peg$currPos * 65 + 0,
  38023. cached = peg$resultsCache[key];
  38024. if (cached) {
  38025. peg$currPos = cached.nextPos;
  38026. return cached.result;
  38027. }
  38028. s0 = peg$parsemethod();
  38029. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38030. return s0;
  38031. }
  38032. function peg$parseseparator() {
  38033. var s0, s1;
  38034. var key = peg$currPos * 65 + 1,
  38035. cached = peg$resultsCache[key];
  38036. if (cached) {
  38037. peg$currPos = cached.nextPos;
  38038. return cached.result;
  38039. }
  38040. s0 = [];
  38041. if (peg$c0.test(input.charAt(peg$currPos))) {
  38042. s1 = input.charAt(peg$currPos);
  38043. peg$currPos++;
  38044. } else {
  38045. s1 = peg$FAILED;
  38046. if (peg$silentFails === 0) { peg$fail(peg$c1); }
  38047. }
  38048. if (s1 !== peg$FAILED) {
  38049. while (s1 !== peg$FAILED) {
  38050. s0.push(s1);
  38051. if (peg$c0.test(input.charAt(peg$currPos))) {
  38052. s1 = input.charAt(peg$currPos);
  38053. peg$currPos++;
  38054. } else {
  38055. s1 = peg$FAILED;
  38056. if (peg$silentFails === 0) { peg$fail(peg$c1); }
  38057. }
  38058. }
  38059. } else {
  38060. s0 = peg$FAILED;
  38061. }
  38062. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38063. return s0;
  38064. }
  38065. function peg$parsecomments() {
  38066. var s0, s1, s2, s3, s4;
  38067. var key = peg$currPos * 65 + 2,
  38068. cached = peg$resultsCache[key];
  38069. if (cached) {
  38070. peg$currPos = cached.nextPos;
  38071. return cached.result;
  38072. }
  38073. s0 = [];
  38074. s1 = peg$currPos;
  38075. if (input.charCodeAt(peg$currPos) === 34) {
  38076. s2 = peg$c2;
  38077. peg$currPos++;
  38078. } else {
  38079. s2 = peg$FAILED;
  38080. if (peg$silentFails === 0) { peg$fail(peg$c3); }
  38081. }
  38082. if (s2 !== peg$FAILED) {
  38083. s3 = [];
  38084. if (peg$c4.test(input.charAt(peg$currPos))) {
  38085. s4 = input.charAt(peg$currPos);
  38086. peg$currPos++;
  38087. } else {
  38088. s4 = peg$FAILED;
  38089. if (peg$silentFails === 0) { peg$fail(peg$c5); }
  38090. }
  38091. while (s4 !== peg$FAILED) {
  38092. s3.push(s4);
  38093. if (peg$c4.test(input.charAt(peg$currPos))) {
  38094. s4 = input.charAt(peg$currPos);
  38095. peg$currPos++;
  38096. } else {
  38097. s4 = peg$FAILED;
  38098. if (peg$silentFails === 0) { peg$fail(peg$c5); }
  38099. }
  38100. }
  38101. if (s3 !== peg$FAILED) {
  38102. if (input.charCodeAt(peg$currPos) === 34) {
  38103. s4 = peg$c2;
  38104. peg$currPos++;
  38105. } else {
  38106. s4 = peg$FAILED;
  38107. if (peg$silentFails === 0) { peg$fail(peg$c3); }
  38108. }
  38109. if (s4 !== peg$FAILED) {
  38110. s2 = [s2, s3, s4];
  38111. s1 = s2;
  38112. } else {
  38113. peg$currPos = s1;
  38114. s1 = peg$FAILED;
  38115. }
  38116. } else {
  38117. peg$currPos = s1;
  38118. s1 = peg$FAILED;
  38119. }
  38120. } else {
  38121. peg$currPos = s1;
  38122. s1 = peg$FAILED;
  38123. }
  38124. if (s1 !== peg$FAILED) {
  38125. while (s1 !== peg$FAILED) {
  38126. s0.push(s1);
  38127. s1 = peg$currPos;
  38128. if (input.charCodeAt(peg$currPos) === 34) {
  38129. s2 = peg$c2;
  38130. peg$currPos++;
  38131. } else {
  38132. s2 = peg$FAILED;
  38133. if (peg$silentFails === 0) { peg$fail(peg$c3); }
  38134. }
  38135. if (s2 !== peg$FAILED) {
  38136. s3 = [];
  38137. if (peg$c4.test(input.charAt(peg$currPos))) {
  38138. s4 = input.charAt(peg$currPos);
  38139. peg$currPos++;
  38140. } else {
  38141. s4 = peg$FAILED;
  38142. if (peg$silentFails === 0) { peg$fail(peg$c5); }
  38143. }
  38144. while (s4 !== peg$FAILED) {
  38145. s3.push(s4);
  38146. if (peg$c4.test(input.charAt(peg$currPos))) {
  38147. s4 = input.charAt(peg$currPos);
  38148. peg$currPos++;
  38149. } else {
  38150. s4 = peg$FAILED;
  38151. if (peg$silentFails === 0) { peg$fail(peg$c5); }
  38152. }
  38153. }
  38154. if (s3 !== peg$FAILED) {
  38155. if (input.charCodeAt(peg$currPos) === 34) {
  38156. s4 = peg$c2;
  38157. peg$currPos++;
  38158. } else {
  38159. s4 = peg$FAILED;
  38160. if (peg$silentFails === 0) { peg$fail(peg$c3); }
  38161. }
  38162. if (s4 !== peg$FAILED) {
  38163. s2 = [s2, s3, s4];
  38164. s1 = s2;
  38165. } else {
  38166. peg$currPos = s1;
  38167. s1 = peg$FAILED;
  38168. }
  38169. } else {
  38170. peg$currPos = s1;
  38171. s1 = peg$FAILED;
  38172. }
  38173. } else {
  38174. peg$currPos = s1;
  38175. s1 = peg$FAILED;
  38176. }
  38177. }
  38178. } else {
  38179. s0 = peg$FAILED;
  38180. }
  38181. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38182. return s0;
  38183. }
  38184. function peg$parsews() {
  38185. var s0, s1;
  38186. var key = peg$currPos * 65 + 3,
  38187. cached = peg$resultsCache[key];
  38188. if (cached) {
  38189. peg$currPos = cached.nextPos;
  38190. return cached.result;
  38191. }
  38192. s0 = [];
  38193. s1 = peg$parseseparator();
  38194. if (s1 === peg$FAILED) {
  38195. s1 = peg$parsecomments();
  38196. }
  38197. while (s1 !== peg$FAILED) {
  38198. s0.push(s1);
  38199. s1 = peg$parseseparator();
  38200. if (s1 === peg$FAILED) {
  38201. s1 = peg$parsecomments();
  38202. }
  38203. }
  38204. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38205. return s0;
  38206. }
  38207. function peg$parsemaybeDotsWs() {
  38208. var s0, s1;
  38209. var key = peg$currPos * 65 + 4,
  38210. cached = peg$resultsCache[key];
  38211. if (cached) {
  38212. peg$currPos = cached.nextPos;
  38213. return cached.result;
  38214. }
  38215. s0 = [];
  38216. if (input.charCodeAt(peg$currPos) === 46) {
  38217. s1 = peg$c6;
  38218. peg$currPos++;
  38219. } else {
  38220. s1 = peg$FAILED;
  38221. if (peg$silentFails === 0) { peg$fail(peg$c7); }
  38222. }
  38223. if (s1 === peg$FAILED) {
  38224. s1 = peg$parseseparator();
  38225. if (s1 === peg$FAILED) {
  38226. s1 = peg$parsecomments();
  38227. }
  38228. }
  38229. while (s1 !== peg$FAILED) {
  38230. s0.push(s1);
  38231. if (input.charCodeAt(peg$currPos) === 46) {
  38232. s1 = peg$c6;
  38233. peg$currPos++;
  38234. } else {
  38235. s1 = peg$FAILED;
  38236. if (peg$silentFails === 0) { peg$fail(peg$c7); }
  38237. }
  38238. if (s1 === peg$FAILED) {
  38239. s1 = peg$parseseparator();
  38240. if (s1 === peg$FAILED) {
  38241. s1 = peg$parsecomments();
  38242. }
  38243. }
  38244. }
  38245. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38246. return s0;
  38247. }
  38248. function peg$parsesomeDotsWs() {
  38249. var s0, s1, s2, s3;
  38250. var key = peg$currPos * 65 + 5,
  38251. cached = peg$resultsCache[key];
  38252. if (cached) {
  38253. peg$currPos = cached.nextPos;
  38254. return cached.result;
  38255. }
  38256. s0 = peg$currPos;
  38257. s1 = peg$parsews();
  38258. if (s1 !== peg$FAILED) {
  38259. if (input.charCodeAt(peg$currPos) === 46) {
  38260. s2 = peg$c6;
  38261. peg$currPos++;
  38262. } else {
  38263. s2 = peg$FAILED;
  38264. if (peg$silentFails === 0) { peg$fail(peg$c7); }
  38265. }
  38266. if (s2 !== peg$FAILED) {
  38267. s3 = peg$parsemaybeDotsWs();
  38268. if (s3 !== peg$FAILED) {
  38269. s1 = [s1, s2, s3];
  38270. s0 = s1;
  38271. } else {
  38272. peg$currPos = s0;
  38273. s0 = peg$FAILED;
  38274. }
  38275. } else {
  38276. peg$currPos = s0;
  38277. s0 = peg$FAILED;
  38278. }
  38279. } else {
  38280. peg$currPos = s0;
  38281. s0 = peg$FAILED;
  38282. }
  38283. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38284. return s0;
  38285. }
  38286. function peg$parseidentifier() {
  38287. var s0, s1, s2, s3, s4;
  38288. var key = peg$currPos * 65 + 6,
  38289. cached = peg$resultsCache[key];
  38290. if (cached) {
  38291. peg$currPos = cached.nextPos;
  38292. return cached.result;
  38293. }
  38294. s0 = peg$currPos;
  38295. s1 = peg$currPos;
  38296. if (peg$c8.test(input.charAt(peg$currPos))) {
  38297. s2 = input.charAt(peg$currPos);
  38298. peg$currPos++;
  38299. } else {
  38300. s2 = peg$FAILED;
  38301. if (peg$silentFails === 0) { peg$fail(peg$c9); }
  38302. }
  38303. if (s2 !== peg$FAILED) {
  38304. s3 = [];
  38305. if (peg$c10.test(input.charAt(peg$currPos))) {
  38306. s4 = input.charAt(peg$currPos);
  38307. peg$currPos++;
  38308. } else {
  38309. s4 = peg$FAILED;
  38310. if (peg$silentFails === 0) { peg$fail(peg$c11); }
  38311. }
  38312. while (s4 !== peg$FAILED) {
  38313. s3.push(s4);
  38314. if (peg$c10.test(input.charAt(peg$currPos))) {
  38315. s4 = input.charAt(peg$currPos);
  38316. peg$currPos++;
  38317. } else {
  38318. s4 = peg$FAILED;
  38319. if (peg$silentFails === 0) { peg$fail(peg$c11); }
  38320. }
  38321. }
  38322. if (s3 !== peg$FAILED) {
  38323. s2 = [s2, s3];
  38324. s1 = s2;
  38325. } else {
  38326. peg$currPos = s1;
  38327. s1 = peg$FAILED;
  38328. }
  38329. } else {
  38330. peg$currPos = s1;
  38331. s1 = peg$FAILED;
  38332. }
  38333. if (s1 !== peg$FAILED) {
  38334. s0 = input.substring(s0, peg$currPos);
  38335. } else {
  38336. s0 = s1;
  38337. }
  38338. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38339. return s0;
  38340. }
  38341. function peg$parsekeyword() {
  38342. var s0, s1, s2, s3;
  38343. var key = peg$currPos * 65 + 7,
  38344. cached = peg$resultsCache[key];
  38345. if (cached) {
  38346. peg$currPos = cached.nextPos;
  38347. return cached.result;
  38348. }
  38349. s0 = peg$currPos;
  38350. s1 = peg$currPos;
  38351. s2 = peg$parseidentifier();
  38352. if (s2 !== peg$FAILED) {
  38353. if (input.charCodeAt(peg$currPos) === 58) {
  38354. s3 = peg$c12;
  38355. peg$currPos++;
  38356. } else {
  38357. s3 = peg$FAILED;
  38358. if (peg$silentFails === 0) { peg$fail(peg$c13); }
  38359. }
  38360. if (s3 !== peg$FAILED) {
  38361. s2 = [s2, s3];
  38362. s1 = s2;
  38363. } else {
  38364. peg$currPos = s1;
  38365. s1 = peg$FAILED;
  38366. }
  38367. } else {
  38368. peg$currPos = s1;
  38369. s1 = peg$FAILED;
  38370. }
  38371. if (s1 !== peg$FAILED) {
  38372. s0 = input.substring(s0, peg$currPos);
  38373. } else {
  38374. s0 = s1;
  38375. }
  38376. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38377. return s0;
  38378. }
  38379. function peg$parseclassName() {
  38380. var s0, s1, s2, s3, s4;
  38381. var key = peg$currPos * 65 + 8,
  38382. cached = peg$resultsCache[key];
  38383. if (cached) {
  38384. peg$currPos = cached.nextPos;
  38385. return cached.result;
  38386. }
  38387. s0 = peg$currPos;
  38388. s1 = peg$currPos;
  38389. if (peg$c14.test(input.charAt(peg$currPos))) {
  38390. s2 = input.charAt(peg$currPos);
  38391. peg$currPos++;
  38392. } else {
  38393. s2 = peg$FAILED;
  38394. if (peg$silentFails === 0) { peg$fail(peg$c15); }
  38395. }
  38396. if (s2 !== peg$FAILED) {
  38397. s3 = [];
  38398. if (peg$c10.test(input.charAt(peg$currPos))) {
  38399. s4 = input.charAt(peg$currPos);
  38400. peg$currPos++;
  38401. } else {
  38402. s4 = peg$FAILED;
  38403. if (peg$silentFails === 0) { peg$fail(peg$c11); }
  38404. }
  38405. while (s4 !== peg$FAILED) {
  38406. s3.push(s4);
  38407. if (peg$c10.test(input.charAt(peg$currPos))) {
  38408. s4 = input.charAt(peg$currPos);
  38409. peg$currPos++;
  38410. } else {
  38411. s4 = peg$FAILED;
  38412. if (peg$silentFails === 0) { peg$fail(peg$c11); }
  38413. }
  38414. }
  38415. if (s3 !== peg$FAILED) {
  38416. s2 = [s2, s3];
  38417. s1 = s2;
  38418. } else {
  38419. peg$currPos = s1;
  38420. s1 = peg$FAILED;
  38421. }
  38422. } else {
  38423. peg$currPos = s1;
  38424. s1 = peg$FAILED;
  38425. }
  38426. if (s1 !== peg$FAILED) {
  38427. s0 = input.substring(s0, peg$currPos);
  38428. } else {
  38429. s0 = s1;
  38430. }
  38431. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38432. return s0;
  38433. }
  38434. function peg$parsestring() {
  38435. var s0, s1;
  38436. var key = peg$currPos * 65 + 9,
  38437. cached = peg$resultsCache[key];
  38438. if (cached) {
  38439. peg$currPos = cached.nextPos;
  38440. return cached.result;
  38441. }
  38442. s0 = peg$currPos;
  38443. s1 = peg$parserawString();
  38444. if (s1 !== peg$FAILED) {
  38445. peg$savedPos = s0;
  38446. s1 = peg$c16(s1);
  38447. }
  38448. s0 = s1;
  38449. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38450. return s0;
  38451. }
  38452. function peg$parserawString() {
  38453. var s0, s1, s2, s3, s4;
  38454. var key = peg$currPos * 65 + 10,
  38455. cached = peg$resultsCache[key];
  38456. if (cached) {
  38457. peg$currPos = cached.nextPos;
  38458. return cached.result;
  38459. }
  38460. s0 = peg$currPos;
  38461. if (input.charCodeAt(peg$currPos) === 39) {
  38462. s1 = peg$c17;
  38463. peg$currPos++;
  38464. } else {
  38465. s1 = peg$FAILED;
  38466. if (peg$silentFails === 0) { peg$fail(peg$c18); }
  38467. }
  38468. if (s1 !== peg$FAILED) {
  38469. s2 = [];
  38470. s3 = peg$currPos;
  38471. if (input.substr(peg$currPos, 2) === peg$c19) {
  38472. s4 = peg$c19;
  38473. peg$currPos += 2;
  38474. } else {
  38475. s4 = peg$FAILED;
  38476. if (peg$silentFails === 0) { peg$fail(peg$c20); }
  38477. }
  38478. if (s4 !== peg$FAILED) {
  38479. peg$savedPos = s3;
  38480. s4 = peg$c21();
  38481. }
  38482. s3 = s4;
  38483. if (s3 === peg$FAILED) {
  38484. if (peg$c22.test(input.charAt(peg$currPos))) {
  38485. s3 = input.charAt(peg$currPos);
  38486. peg$currPos++;
  38487. } else {
  38488. s3 = peg$FAILED;
  38489. if (peg$silentFails === 0) { peg$fail(peg$c23); }
  38490. }
  38491. }
  38492. while (s3 !== peg$FAILED) {
  38493. s2.push(s3);
  38494. s3 = peg$currPos;
  38495. if (input.substr(peg$currPos, 2) === peg$c19) {
  38496. s4 = peg$c19;
  38497. peg$currPos += 2;
  38498. } else {
  38499. s4 = peg$FAILED;
  38500. if (peg$silentFails === 0) { peg$fail(peg$c20); }
  38501. }
  38502. if (s4 !== peg$FAILED) {
  38503. peg$savedPos = s3;
  38504. s4 = peg$c21();
  38505. }
  38506. s3 = s4;
  38507. if (s3 === peg$FAILED) {
  38508. if (peg$c22.test(input.charAt(peg$currPos))) {
  38509. s3 = input.charAt(peg$currPos);
  38510. peg$currPos++;
  38511. } else {
  38512. s3 = peg$FAILED;
  38513. if (peg$silentFails === 0) { peg$fail(peg$c23); }
  38514. }
  38515. }
  38516. }
  38517. if (s2 !== peg$FAILED) {
  38518. if (input.charCodeAt(peg$currPos) === 39) {
  38519. s3 = peg$c17;
  38520. peg$currPos++;
  38521. } else {
  38522. s3 = peg$FAILED;
  38523. if (peg$silentFails === 0) { peg$fail(peg$c18); }
  38524. }
  38525. if (s3 !== peg$FAILED) {
  38526. peg$savedPos = s0;
  38527. s1 = peg$c24(s2);
  38528. s0 = s1;
  38529. } else {
  38530. peg$currPos = s0;
  38531. s0 = peg$FAILED;
  38532. }
  38533. } else {
  38534. peg$currPos = s0;
  38535. s0 = peg$FAILED;
  38536. }
  38537. } else {
  38538. peg$currPos = s0;
  38539. s0 = peg$FAILED;
  38540. }
  38541. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38542. return s0;
  38543. }
  38544. function peg$parsecharacter() {
  38545. var s0, s1, s2;
  38546. var key = peg$currPos * 65 + 11,
  38547. cached = peg$resultsCache[key];
  38548. if (cached) {
  38549. peg$currPos = cached.nextPos;
  38550. return cached.result;
  38551. }
  38552. s0 = peg$currPos;
  38553. if (input.charCodeAt(peg$currPos) === 36) {
  38554. s1 = peg$c25;
  38555. peg$currPos++;
  38556. } else {
  38557. s1 = peg$FAILED;
  38558. if (peg$silentFails === 0) { peg$fail(peg$c26); }
  38559. }
  38560. if (s1 !== peg$FAILED) {
  38561. if (input.length > peg$currPos) {
  38562. s2 = input.charAt(peg$currPos);
  38563. peg$currPos++;
  38564. } else {
  38565. s2 = peg$FAILED;
  38566. if (peg$silentFails === 0) { peg$fail(peg$c27); }
  38567. }
  38568. if (s2 !== peg$FAILED) {
  38569. peg$savedPos = s0;
  38570. s1 = peg$c28(s2);
  38571. s0 = s1;
  38572. } else {
  38573. peg$currPos = s0;
  38574. s0 = peg$FAILED;
  38575. }
  38576. } else {
  38577. peg$currPos = s0;
  38578. s0 = peg$FAILED;
  38579. }
  38580. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38581. return s0;
  38582. }
  38583. function peg$parsesymbol() {
  38584. var s0, s1, s2;
  38585. var key = peg$currPos * 65 + 12,
  38586. cached = peg$resultsCache[key];
  38587. if (cached) {
  38588. peg$currPos = cached.nextPos;
  38589. return cached.result;
  38590. }
  38591. s0 = peg$currPos;
  38592. if (input.charCodeAt(peg$currPos) === 35) {
  38593. s1 = peg$c29;
  38594. peg$currPos++;
  38595. } else {
  38596. s1 = peg$FAILED;
  38597. if (peg$silentFails === 0) { peg$fail(peg$c30); }
  38598. }
  38599. if (s1 !== peg$FAILED) {
  38600. s2 = peg$parsebareSymbol();
  38601. if (s2 !== peg$FAILED) {
  38602. peg$savedPos = s0;
  38603. s1 = peg$c31(s2);
  38604. s0 = s1;
  38605. } else {
  38606. peg$currPos = s0;
  38607. s0 = peg$FAILED;
  38608. }
  38609. } else {
  38610. peg$currPos = s0;
  38611. s0 = peg$FAILED;
  38612. }
  38613. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38614. return s0;
  38615. }
  38616. function peg$parsebareSymbol() {
  38617. var s0, s1, s2, s3;
  38618. var key = peg$currPos * 65 + 13,
  38619. cached = peg$resultsCache[key];
  38620. if (cached) {
  38621. peg$currPos = cached.nextPos;
  38622. return cached.result;
  38623. }
  38624. s0 = peg$currPos;
  38625. s1 = peg$currPos;
  38626. s2 = [];
  38627. s3 = peg$parsekeyword();
  38628. if (s3 !== peg$FAILED) {
  38629. while (s3 !== peg$FAILED) {
  38630. s2.push(s3);
  38631. s3 = peg$parsekeyword();
  38632. }
  38633. } else {
  38634. s2 = peg$FAILED;
  38635. }
  38636. if (s2 !== peg$FAILED) {
  38637. s1 = input.substring(s1, peg$currPos);
  38638. } else {
  38639. s1 = s2;
  38640. }
  38641. if (s1 === peg$FAILED) {
  38642. s1 = peg$parsebinarySelector();
  38643. if (s1 === peg$FAILED) {
  38644. s1 = peg$parseidentifier();
  38645. if (s1 === peg$FAILED) {
  38646. s1 = peg$parserawString();
  38647. }
  38648. }
  38649. }
  38650. if (s1 !== peg$FAILED) {
  38651. peg$savedPos = s0;
  38652. s1 = peg$c16(s1);
  38653. }
  38654. s0 = s1;
  38655. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38656. return s0;
  38657. }
  38658. function peg$parsenumber() {
  38659. var s0, s1;
  38660. var key = peg$currPos * 65 + 14,
  38661. cached = peg$resultsCache[key];
  38662. if (cached) {
  38663. peg$currPos = cached.nextPos;
  38664. return cached.result;
  38665. }
  38666. s0 = peg$currPos;
  38667. s1 = peg$parserawNumber();
  38668. if (s1 !== peg$FAILED) {
  38669. peg$savedPos = s0;
  38670. s1 = peg$c16(s1);
  38671. }
  38672. s0 = s1;
  38673. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38674. return s0;
  38675. }
  38676. function peg$parserawNumber() {
  38677. var s0;
  38678. var key = peg$currPos * 65 + 15,
  38679. cached = peg$resultsCache[key];
  38680. if (cached) {
  38681. peg$currPos = cached.nextPos;
  38682. return cached.result;
  38683. }
  38684. s0 = peg$parsenumberExp();
  38685. if (s0 === peg$FAILED) {
  38686. s0 = peg$parsehex();
  38687. if (s0 === peg$FAILED) {
  38688. s0 = peg$parsefloat();
  38689. if (s0 === peg$FAILED) {
  38690. s0 = peg$parseinteger();
  38691. }
  38692. }
  38693. }
  38694. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38695. return s0;
  38696. }
  38697. function peg$parsenumberExp() {
  38698. var s0, s1, s2, s3, s4, s5;
  38699. var key = peg$currPos * 65 + 16,
  38700. cached = peg$resultsCache[key];
  38701. if (cached) {
  38702. peg$currPos = cached.nextPos;
  38703. return cached.result;
  38704. }
  38705. s0 = peg$currPos;
  38706. s1 = peg$currPos;
  38707. s2 = peg$currPos;
  38708. s3 = peg$parsefloat();
  38709. if (s3 === peg$FAILED) {
  38710. s3 = peg$parseinteger();
  38711. }
  38712. if (s3 !== peg$FAILED) {
  38713. if (input.charCodeAt(peg$currPos) === 101) {
  38714. s4 = peg$c32;
  38715. peg$currPos++;
  38716. } else {
  38717. s4 = peg$FAILED;
  38718. if (peg$silentFails === 0) { peg$fail(peg$c33); }
  38719. }
  38720. if (s4 !== peg$FAILED) {
  38721. s5 = peg$parseinteger();
  38722. if (s5 !== peg$FAILED) {
  38723. s3 = [s3, s4, s5];
  38724. s2 = s3;
  38725. } else {
  38726. peg$currPos = s2;
  38727. s2 = peg$FAILED;
  38728. }
  38729. } else {
  38730. peg$currPos = s2;
  38731. s2 = peg$FAILED;
  38732. }
  38733. } else {
  38734. peg$currPos = s2;
  38735. s2 = peg$FAILED;
  38736. }
  38737. if (s2 !== peg$FAILED) {
  38738. s1 = input.substring(s1, peg$currPos);
  38739. } else {
  38740. s1 = s2;
  38741. }
  38742. if (s1 !== peg$FAILED) {
  38743. peg$savedPos = s0;
  38744. s1 = peg$c34(s1);
  38745. }
  38746. s0 = s1;
  38747. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38748. return s0;
  38749. }
  38750. function peg$parsehex() {
  38751. var s0, s1, s2, s3, s4, s5;
  38752. var key = peg$currPos * 65 + 17,
  38753. cached = peg$resultsCache[key];
  38754. if (cached) {
  38755. peg$currPos = cached.nextPos;
  38756. return cached.result;
  38757. }
  38758. s0 = peg$currPos;
  38759. if (input.charCodeAt(peg$currPos) === 45) {
  38760. s1 = peg$c35;
  38761. peg$currPos++;
  38762. } else {
  38763. s1 = peg$FAILED;
  38764. if (peg$silentFails === 0) { peg$fail(peg$c36); }
  38765. }
  38766. if (s1 === peg$FAILED) {
  38767. s1 = null;
  38768. }
  38769. if (s1 !== peg$FAILED) {
  38770. if (input.substr(peg$currPos, 3) === peg$c37) {
  38771. s2 = peg$c37;
  38772. peg$currPos += 3;
  38773. } else {
  38774. s2 = peg$FAILED;
  38775. if (peg$silentFails === 0) { peg$fail(peg$c38); }
  38776. }
  38777. if (s2 !== peg$FAILED) {
  38778. s3 = peg$currPos;
  38779. s4 = [];
  38780. if (peg$c39.test(input.charAt(peg$currPos))) {
  38781. s5 = input.charAt(peg$currPos);
  38782. peg$currPos++;
  38783. } else {
  38784. s5 = peg$FAILED;
  38785. if (peg$silentFails === 0) { peg$fail(peg$c40); }
  38786. }
  38787. if (s5 !== peg$FAILED) {
  38788. while (s5 !== peg$FAILED) {
  38789. s4.push(s5);
  38790. if (peg$c39.test(input.charAt(peg$currPos))) {
  38791. s5 = input.charAt(peg$currPos);
  38792. peg$currPos++;
  38793. } else {
  38794. s5 = peg$FAILED;
  38795. if (peg$silentFails === 0) { peg$fail(peg$c40); }
  38796. }
  38797. }
  38798. } else {
  38799. s4 = peg$FAILED;
  38800. }
  38801. if (s4 !== peg$FAILED) {
  38802. s3 = input.substring(s3, peg$currPos);
  38803. } else {
  38804. s3 = s4;
  38805. }
  38806. if (s3 !== peg$FAILED) {
  38807. peg$savedPos = s0;
  38808. s1 = peg$c41(s1, s3);
  38809. s0 = s1;
  38810. } else {
  38811. peg$currPos = s0;
  38812. s0 = peg$FAILED;
  38813. }
  38814. } else {
  38815. peg$currPos = s0;
  38816. s0 = peg$FAILED;
  38817. }
  38818. } else {
  38819. peg$currPos = s0;
  38820. s0 = peg$FAILED;
  38821. }
  38822. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38823. return s0;
  38824. }
  38825. function peg$parsefloat() {
  38826. var s0, s1, s2, s3, s4, s5, s6, s7;
  38827. var key = peg$currPos * 65 + 18,
  38828. cached = peg$resultsCache[key];
  38829. if (cached) {
  38830. peg$currPos = cached.nextPos;
  38831. return cached.result;
  38832. }
  38833. s0 = peg$currPos;
  38834. s1 = peg$currPos;
  38835. s2 = peg$currPos;
  38836. if (input.charCodeAt(peg$currPos) === 45) {
  38837. s3 = peg$c35;
  38838. peg$currPos++;
  38839. } else {
  38840. s3 = peg$FAILED;
  38841. if (peg$silentFails === 0) { peg$fail(peg$c36); }
  38842. }
  38843. if (s3 === peg$FAILED) {
  38844. s3 = null;
  38845. }
  38846. if (s3 !== peg$FAILED) {
  38847. s4 = [];
  38848. if (peg$c42.test(input.charAt(peg$currPos))) {
  38849. s5 = input.charAt(peg$currPos);
  38850. peg$currPos++;
  38851. } else {
  38852. s5 = peg$FAILED;
  38853. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  38854. }
  38855. if (s5 !== peg$FAILED) {
  38856. while (s5 !== peg$FAILED) {
  38857. s4.push(s5);
  38858. if (peg$c42.test(input.charAt(peg$currPos))) {
  38859. s5 = input.charAt(peg$currPos);
  38860. peg$currPos++;
  38861. } else {
  38862. s5 = peg$FAILED;
  38863. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  38864. }
  38865. }
  38866. } else {
  38867. s4 = peg$FAILED;
  38868. }
  38869. if (s4 !== peg$FAILED) {
  38870. if (input.charCodeAt(peg$currPos) === 46) {
  38871. s5 = peg$c6;
  38872. peg$currPos++;
  38873. } else {
  38874. s5 = peg$FAILED;
  38875. if (peg$silentFails === 0) { peg$fail(peg$c7); }
  38876. }
  38877. if (s5 !== peg$FAILED) {
  38878. s6 = [];
  38879. if (peg$c42.test(input.charAt(peg$currPos))) {
  38880. s7 = input.charAt(peg$currPos);
  38881. peg$currPos++;
  38882. } else {
  38883. s7 = peg$FAILED;
  38884. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  38885. }
  38886. if (s7 !== peg$FAILED) {
  38887. while (s7 !== peg$FAILED) {
  38888. s6.push(s7);
  38889. if (peg$c42.test(input.charAt(peg$currPos))) {
  38890. s7 = input.charAt(peg$currPos);
  38891. peg$currPos++;
  38892. } else {
  38893. s7 = peg$FAILED;
  38894. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  38895. }
  38896. }
  38897. } else {
  38898. s6 = peg$FAILED;
  38899. }
  38900. if (s6 !== peg$FAILED) {
  38901. s3 = [s3, s4, s5, s6];
  38902. s2 = s3;
  38903. } else {
  38904. peg$currPos = s2;
  38905. s2 = peg$FAILED;
  38906. }
  38907. } else {
  38908. peg$currPos = s2;
  38909. s2 = peg$FAILED;
  38910. }
  38911. } else {
  38912. peg$currPos = s2;
  38913. s2 = peg$FAILED;
  38914. }
  38915. } else {
  38916. peg$currPos = s2;
  38917. s2 = peg$FAILED;
  38918. }
  38919. if (s2 !== peg$FAILED) {
  38920. s1 = input.substring(s1, peg$currPos);
  38921. } else {
  38922. s1 = s2;
  38923. }
  38924. if (s1 !== peg$FAILED) {
  38925. peg$savedPos = s0;
  38926. s1 = peg$c44(s1);
  38927. }
  38928. s0 = s1;
  38929. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38930. return s0;
  38931. }
  38932. function peg$parseinteger() {
  38933. var s0, s1, s2, s3, s4, s5;
  38934. var key = peg$currPos * 65 + 19,
  38935. cached = peg$resultsCache[key];
  38936. if (cached) {
  38937. peg$currPos = cached.nextPos;
  38938. return cached.result;
  38939. }
  38940. s0 = peg$currPos;
  38941. s1 = peg$currPos;
  38942. s2 = peg$currPos;
  38943. if (input.charCodeAt(peg$currPos) === 45) {
  38944. s3 = peg$c35;
  38945. peg$currPos++;
  38946. } else {
  38947. s3 = peg$FAILED;
  38948. if (peg$silentFails === 0) { peg$fail(peg$c36); }
  38949. }
  38950. if (s3 === peg$FAILED) {
  38951. s3 = null;
  38952. }
  38953. if (s3 !== peg$FAILED) {
  38954. s4 = [];
  38955. if (peg$c42.test(input.charAt(peg$currPos))) {
  38956. s5 = input.charAt(peg$currPos);
  38957. peg$currPos++;
  38958. } else {
  38959. s5 = peg$FAILED;
  38960. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  38961. }
  38962. if (s5 !== peg$FAILED) {
  38963. while (s5 !== peg$FAILED) {
  38964. s4.push(s5);
  38965. if (peg$c42.test(input.charAt(peg$currPos))) {
  38966. s5 = input.charAt(peg$currPos);
  38967. peg$currPos++;
  38968. } else {
  38969. s5 = peg$FAILED;
  38970. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  38971. }
  38972. }
  38973. } else {
  38974. s4 = peg$FAILED;
  38975. }
  38976. if (s4 !== peg$FAILED) {
  38977. s3 = [s3, s4];
  38978. s2 = s3;
  38979. } else {
  38980. peg$currPos = s2;
  38981. s2 = peg$FAILED;
  38982. }
  38983. } else {
  38984. peg$currPos = s2;
  38985. s2 = peg$FAILED;
  38986. }
  38987. if (s2 !== peg$FAILED) {
  38988. s1 = input.substring(s1, peg$currPos);
  38989. } else {
  38990. s1 = s2;
  38991. }
  38992. if (s1 !== peg$FAILED) {
  38993. peg$savedPos = s0;
  38994. s1 = peg$c45(s1);
  38995. }
  38996. s0 = s1;
  38997. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  38998. return s0;
  38999. }
  39000. function peg$parseliteralArray() {
  39001. var s0, s1, s2, s3, s4;
  39002. var key = peg$currPos * 65 + 20,
  39003. cached = peg$resultsCache[key];
  39004. if (cached) {
  39005. peg$currPos = cached.nextPos;
  39006. return cached.result;
  39007. }
  39008. s0 = peg$currPos;
  39009. if (input.substr(peg$currPos, 2) === peg$c46) {
  39010. s1 = peg$c46;
  39011. peg$currPos += 2;
  39012. } else {
  39013. s1 = peg$FAILED;
  39014. if (peg$silentFails === 0) { peg$fail(peg$c47); }
  39015. }
  39016. if (s1 !== peg$FAILED) {
  39017. s2 = peg$parsewsLiteralArrayContents();
  39018. if (s2 !== peg$FAILED) {
  39019. s3 = peg$parsews();
  39020. if (s3 !== peg$FAILED) {
  39021. if (input.charCodeAt(peg$currPos) === 41) {
  39022. s4 = peg$c48;
  39023. peg$currPos++;
  39024. } else {
  39025. s4 = peg$FAILED;
  39026. if (peg$silentFails === 0) { peg$fail(peg$c49); }
  39027. }
  39028. if (s4 !== peg$FAILED) {
  39029. peg$savedPos = s0;
  39030. s1 = peg$c50(s2);
  39031. s0 = s1;
  39032. } else {
  39033. peg$currPos = s0;
  39034. s0 = peg$FAILED;
  39035. }
  39036. } else {
  39037. peg$currPos = s0;
  39038. s0 = peg$FAILED;
  39039. }
  39040. } else {
  39041. peg$currPos = s0;
  39042. s0 = peg$FAILED;
  39043. }
  39044. } else {
  39045. peg$currPos = s0;
  39046. s0 = peg$FAILED;
  39047. }
  39048. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39049. return s0;
  39050. }
  39051. function peg$parsebareLiteralArray() {
  39052. var s0, s1, s2, s3, s4;
  39053. var key = peg$currPos * 65 + 21,
  39054. cached = peg$resultsCache[key];
  39055. if (cached) {
  39056. peg$currPos = cached.nextPos;
  39057. return cached.result;
  39058. }
  39059. s0 = peg$currPos;
  39060. if (input.charCodeAt(peg$currPos) === 40) {
  39061. s1 = peg$c51;
  39062. peg$currPos++;
  39063. } else {
  39064. s1 = peg$FAILED;
  39065. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  39066. }
  39067. if (s1 !== peg$FAILED) {
  39068. s2 = peg$parsewsLiteralArrayContents();
  39069. if (s2 !== peg$FAILED) {
  39070. s3 = peg$parsews();
  39071. if (s3 !== peg$FAILED) {
  39072. if (input.charCodeAt(peg$currPos) === 41) {
  39073. s4 = peg$c48;
  39074. peg$currPos++;
  39075. } else {
  39076. s4 = peg$FAILED;
  39077. if (peg$silentFails === 0) { peg$fail(peg$c49); }
  39078. }
  39079. if (s4 !== peg$FAILED) {
  39080. peg$savedPos = s0;
  39081. s1 = peg$c50(s2);
  39082. s0 = s1;
  39083. } else {
  39084. peg$currPos = s0;
  39085. s0 = peg$FAILED;
  39086. }
  39087. } else {
  39088. peg$currPos = s0;
  39089. s0 = peg$FAILED;
  39090. }
  39091. } else {
  39092. peg$currPos = s0;
  39093. s0 = peg$FAILED;
  39094. }
  39095. } else {
  39096. peg$currPos = s0;
  39097. s0 = peg$FAILED;
  39098. }
  39099. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39100. return s0;
  39101. }
  39102. function peg$parseliteralArrayElement() {
  39103. var s0;
  39104. var key = peg$currPos * 65 + 22,
  39105. cached = peg$resultsCache[key];
  39106. if (cached) {
  39107. peg$currPos = cached.nextPos;
  39108. return cached.result;
  39109. }
  39110. s0 = peg$parseparseTimeLiteral();
  39111. if (s0 === peg$FAILED) {
  39112. s0 = peg$parsebareLiteralArray();
  39113. if (s0 === peg$FAILED) {
  39114. s0 = peg$parsebareSymbol();
  39115. }
  39116. }
  39117. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39118. return s0;
  39119. }
  39120. function peg$parsewsLiteralArrayContents() {
  39121. var s0, s1, s2, s3;
  39122. var key = peg$currPos * 65 + 23,
  39123. cached = peg$resultsCache[key];
  39124. if (cached) {
  39125. peg$currPos = cached.nextPos;
  39126. return cached.result;
  39127. }
  39128. s0 = [];
  39129. s1 = peg$currPos;
  39130. s2 = peg$parsews();
  39131. if (s2 !== peg$FAILED) {
  39132. s3 = peg$parseliteralArrayElement();
  39133. if (s3 !== peg$FAILED) {
  39134. peg$savedPos = s1;
  39135. s2 = peg$c53(s3);
  39136. s1 = s2;
  39137. } else {
  39138. peg$currPos = s1;
  39139. s1 = peg$FAILED;
  39140. }
  39141. } else {
  39142. peg$currPos = s1;
  39143. s1 = peg$FAILED;
  39144. }
  39145. while (s1 !== peg$FAILED) {
  39146. s0.push(s1);
  39147. s1 = peg$currPos;
  39148. s2 = peg$parsews();
  39149. if (s2 !== peg$FAILED) {
  39150. s3 = peg$parseliteralArrayElement();
  39151. if (s3 !== peg$FAILED) {
  39152. peg$savedPos = s1;
  39153. s2 = peg$c53(s3);
  39154. s1 = s2;
  39155. } else {
  39156. peg$currPos = s1;
  39157. s1 = peg$FAILED;
  39158. }
  39159. } else {
  39160. peg$currPos = s1;
  39161. s1 = peg$FAILED;
  39162. }
  39163. }
  39164. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39165. return s0;
  39166. }
  39167. function peg$parsedynamicArray() {
  39168. var s0, s1, s2, s3, s4;
  39169. var key = peg$currPos * 65 + 24,
  39170. cached = peg$resultsCache[key];
  39171. if (cached) {
  39172. peg$currPos = cached.nextPos;
  39173. return cached.result;
  39174. }
  39175. s0 = peg$currPos;
  39176. if (input.charCodeAt(peg$currPos) === 123) {
  39177. s1 = peg$c54;
  39178. peg$currPos++;
  39179. } else {
  39180. s1 = peg$FAILED;
  39181. if (peg$silentFails === 0) { peg$fail(peg$c55); }
  39182. }
  39183. if (s1 !== peg$FAILED) {
  39184. s2 = peg$parsewsExpressions();
  39185. if (s2 === peg$FAILED) {
  39186. s2 = null;
  39187. }
  39188. if (s2 !== peg$FAILED) {
  39189. s3 = peg$parsemaybeDotsWs();
  39190. if (s3 !== peg$FAILED) {
  39191. if (input.charCodeAt(peg$currPos) === 125) {
  39192. s4 = peg$c56;
  39193. peg$currPos++;
  39194. } else {
  39195. s4 = peg$FAILED;
  39196. if (peg$silentFails === 0) { peg$fail(peg$c57); }
  39197. }
  39198. if (s4 !== peg$FAILED) {
  39199. peg$savedPos = s0;
  39200. s1 = peg$c58(s2);
  39201. s0 = s1;
  39202. } else {
  39203. peg$currPos = s0;
  39204. s0 = peg$FAILED;
  39205. }
  39206. } else {
  39207. peg$currPos = s0;
  39208. s0 = peg$FAILED;
  39209. }
  39210. } else {
  39211. peg$currPos = s0;
  39212. s0 = peg$FAILED;
  39213. }
  39214. } else {
  39215. peg$currPos = s0;
  39216. s0 = peg$FAILED;
  39217. }
  39218. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39219. return s0;
  39220. }
  39221. function peg$parsedynamicDictionary() {
  39222. var s0, s1, s2, s3, s4;
  39223. var key = peg$currPos * 65 + 25,
  39224. cached = peg$resultsCache[key];
  39225. if (cached) {
  39226. peg$currPos = cached.nextPos;
  39227. return cached.result;
  39228. }
  39229. s0 = peg$currPos;
  39230. if (input.substr(peg$currPos, 2) === peg$c59) {
  39231. s1 = peg$c59;
  39232. peg$currPos += 2;
  39233. } else {
  39234. s1 = peg$FAILED;
  39235. if (peg$silentFails === 0) { peg$fail(peg$c60); }
  39236. }
  39237. if (s1 !== peg$FAILED) {
  39238. s2 = peg$parsewsAssociations();
  39239. if (s2 === peg$FAILED) {
  39240. s2 = null;
  39241. }
  39242. if (s2 !== peg$FAILED) {
  39243. s3 = peg$parsemaybeDotsWs();
  39244. if (s3 !== peg$FAILED) {
  39245. if (input.charCodeAt(peg$currPos) === 125) {
  39246. s4 = peg$c56;
  39247. peg$currPos++;
  39248. } else {
  39249. s4 = peg$FAILED;
  39250. if (peg$silentFails === 0) { peg$fail(peg$c57); }
  39251. }
  39252. if (s4 !== peg$FAILED) {
  39253. peg$savedPos = s0;
  39254. s1 = peg$c61(s2);
  39255. s0 = s1;
  39256. } else {
  39257. peg$currPos = s0;
  39258. s0 = peg$FAILED;
  39259. }
  39260. } else {
  39261. peg$currPos = s0;
  39262. s0 = peg$FAILED;
  39263. }
  39264. } else {
  39265. peg$currPos = s0;
  39266. s0 = peg$FAILED;
  39267. }
  39268. } else {
  39269. peg$currPos = s0;
  39270. s0 = peg$FAILED;
  39271. }
  39272. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39273. return s0;
  39274. }
  39275. function peg$parsepseudoVariable() {
  39276. var s0, s1, s2;
  39277. var key = peg$currPos * 65 + 26,
  39278. cached = peg$resultsCache[key];
  39279. if (cached) {
  39280. peg$currPos = cached.nextPos;
  39281. return cached.result;
  39282. }
  39283. s0 = peg$currPos;
  39284. s1 = peg$currPos;
  39285. if (input.substr(peg$currPos, 4) === peg$c62) {
  39286. s2 = peg$c62;
  39287. peg$currPos += 4;
  39288. } else {
  39289. s2 = peg$FAILED;
  39290. if (peg$silentFails === 0) { peg$fail(peg$c63); }
  39291. }
  39292. if (s2 !== peg$FAILED) {
  39293. peg$savedPos = s1;
  39294. s2 = peg$c64();
  39295. }
  39296. s1 = s2;
  39297. if (s1 === peg$FAILED) {
  39298. s1 = peg$currPos;
  39299. if (input.substr(peg$currPos, 5) === peg$c65) {
  39300. s2 = peg$c65;
  39301. peg$currPos += 5;
  39302. } else {
  39303. s2 = peg$FAILED;
  39304. if (peg$silentFails === 0) { peg$fail(peg$c66); }
  39305. }
  39306. if (s2 !== peg$FAILED) {
  39307. peg$savedPos = s1;
  39308. s2 = peg$c67();
  39309. }
  39310. s1 = s2;
  39311. if (s1 === peg$FAILED) {
  39312. s1 = peg$currPos;
  39313. if (input.substr(peg$currPos, 3) === peg$c68) {
  39314. s2 = peg$c68;
  39315. peg$currPos += 3;
  39316. } else {
  39317. s2 = peg$FAILED;
  39318. if (peg$silentFails === 0) { peg$fail(peg$c69); }
  39319. }
  39320. if (s2 !== peg$FAILED) {
  39321. peg$savedPos = s1;
  39322. s2 = peg$c70();
  39323. }
  39324. s1 = s2;
  39325. }
  39326. }
  39327. if (s1 !== peg$FAILED) {
  39328. peg$savedPos = s0;
  39329. s1 = peg$c16(s1);
  39330. }
  39331. s0 = s1;
  39332. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39333. return s0;
  39334. }
  39335. function peg$parseparseTimeLiteral() {
  39336. var s0;
  39337. var key = peg$currPos * 65 + 27,
  39338. cached = peg$resultsCache[key];
  39339. if (cached) {
  39340. peg$currPos = cached.nextPos;
  39341. return cached.result;
  39342. }
  39343. s0 = peg$parsepseudoVariable();
  39344. if (s0 === peg$FAILED) {
  39345. s0 = peg$parsenumber();
  39346. if (s0 === peg$FAILED) {
  39347. s0 = peg$parseliteralArray();
  39348. if (s0 === peg$FAILED) {
  39349. s0 = peg$parsestring();
  39350. if (s0 === peg$FAILED) {
  39351. s0 = peg$parsesymbol();
  39352. if (s0 === peg$FAILED) {
  39353. s0 = peg$parsecharacter();
  39354. }
  39355. }
  39356. }
  39357. }
  39358. }
  39359. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39360. return s0;
  39361. }
  39362. function peg$parseruntimeLiteral() {
  39363. var s0;
  39364. var key = peg$currPos * 65 + 28,
  39365. cached = peg$resultsCache[key];
  39366. if (cached) {
  39367. peg$currPos = cached.nextPos;
  39368. return cached.result;
  39369. }
  39370. s0 = peg$parsedynamicDictionary();
  39371. if (s0 === peg$FAILED) {
  39372. s0 = peg$parsedynamicArray();
  39373. if (s0 === peg$FAILED) {
  39374. s0 = peg$parseblock();
  39375. }
  39376. }
  39377. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39378. return s0;
  39379. }
  39380. function peg$parseliteral() {
  39381. var s0;
  39382. var key = peg$currPos * 65 + 29,
  39383. cached = peg$resultsCache[key];
  39384. if (cached) {
  39385. peg$currPos = cached.nextPos;
  39386. return cached.result;
  39387. }
  39388. s0 = peg$parseruntimeLiteral();
  39389. if (s0 === peg$FAILED) {
  39390. s0 = peg$parseparseTimeLiteral();
  39391. }
  39392. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39393. return s0;
  39394. }
  39395. function peg$parsevariable() {
  39396. var s0, s1;
  39397. var key = peg$currPos * 65 + 30,
  39398. cached = peg$resultsCache[key];
  39399. if (cached) {
  39400. peg$currPos = cached.nextPos;
  39401. return cached.result;
  39402. }
  39403. s0 = peg$currPos;
  39404. s1 = peg$parseidentifier();
  39405. if (s1 !== peg$FAILED) {
  39406. peg$savedPos = s0;
  39407. s1 = peg$c71(s1);
  39408. }
  39409. s0 = s1;
  39410. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39411. return s0;
  39412. }
  39413. function peg$parsebinarySelector() {
  39414. var s0, s1, s2;
  39415. var key = peg$currPos * 65 + 31,
  39416. cached = peg$resultsCache[key];
  39417. if (cached) {
  39418. peg$currPos = cached.nextPos;
  39419. return cached.result;
  39420. }
  39421. s0 = peg$currPos;
  39422. s1 = [];
  39423. if (peg$c72.test(input.charAt(peg$currPos))) {
  39424. s2 = input.charAt(peg$currPos);
  39425. peg$currPos++;
  39426. } else {
  39427. s2 = peg$FAILED;
  39428. if (peg$silentFails === 0) { peg$fail(peg$c73); }
  39429. }
  39430. if (s2 !== peg$FAILED) {
  39431. while (s2 !== peg$FAILED) {
  39432. s1.push(s2);
  39433. if (peg$c72.test(input.charAt(peg$currPos))) {
  39434. s2 = input.charAt(peg$currPos);
  39435. peg$currPos++;
  39436. } else {
  39437. s2 = peg$FAILED;
  39438. if (peg$silentFails === 0) { peg$fail(peg$c73); }
  39439. }
  39440. }
  39441. } else {
  39442. s1 = peg$FAILED;
  39443. }
  39444. if (s1 !== peg$FAILED) {
  39445. s0 = input.substring(s0, peg$currPos);
  39446. } else {
  39447. s0 = s1;
  39448. }
  39449. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39450. return s0;
  39451. }
  39452. function peg$parsewsKeywordPattern() {
  39453. var s0, s1, s2, s3, s4, s5, s6;
  39454. var key = peg$currPos * 65 + 32,
  39455. cached = peg$resultsCache[key];
  39456. if (cached) {
  39457. peg$currPos = cached.nextPos;
  39458. return cached.result;
  39459. }
  39460. s0 = peg$currPos;
  39461. s1 = [];
  39462. s2 = peg$currPos;
  39463. s3 = peg$parsews();
  39464. if (s3 !== peg$FAILED) {
  39465. s4 = peg$parsekeyword();
  39466. if (s4 !== peg$FAILED) {
  39467. s5 = peg$parsews();
  39468. if (s5 !== peg$FAILED) {
  39469. s6 = peg$parseidentifier();
  39470. if (s6 !== peg$FAILED) {
  39471. peg$savedPos = s2;
  39472. s3 = peg$c74(s4, s6);
  39473. s2 = s3;
  39474. } else {
  39475. peg$currPos = s2;
  39476. s2 = peg$FAILED;
  39477. }
  39478. } else {
  39479. peg$currPos = s2;
  39480. s2 = peg$FAILED;
  39481. }
  39482. } else {
  39483. peg$currPos = s2;
  39484. s2 = peg$FAILED;
  39485. }
  39486. } else {
  39487. peg$currPos = s2;
  39488. s2 = peg$FAILED;
  39489. }
  39490. if (s2 !== peg$FAILED) {
  39491. while (s2 !== peg$FAILED) {
  39492. s1.push(s2);
  39493. s2 = peg$currPos;
  39494. s3 = peg$parsews();
  39495. if (s3 !== peg$FAILED) {
  39496. s4 = peg$parsekeyword();
  39497. if (s4 !== peg$FAILED) {
  39498. s5 = peg$parsews();
  39499. if (s5 !== peg$FAILED) {
  39500. s6 = peg$parseidentifier();
  39501. if (s6 !== peg$FAILED) {
  39502. peg$savedPos = s2;
  39503. s3 = peg$c74(s4, s6);
  39504. s2 = s3;
  39505. } else {
  39506. peg$currPos = s2;
  39507. s2 = peg$FAILED;
  39508. }
  39509. } else {
  39510. peg$currPos = s2;
  39511. s2 = peg$FAILED;
  39512. }
  39513. } else {
  39514. peg$currPos = s2;
  39515. s2 = peg$FAILED;
  39516. }
  39517. } else {
  39518. peg$currPos = s2;
  39519. s2 = peg$FAILED;
  39520. }
  39521. }
  39522. } else {
  39523. s1 = peg$FAILED;
  39524. }
  39525. if (s1 !== peg$FAILED) {
  39526. peg$savedPos = s0;
  39527. s1 = peg$c75(s1);
  39528. }
  39529. s0 = s1;
  39530. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39531. return s0;
  39532. }
  39533. function peg$parsewsBinaryPattern() {
  39534. var s0, s1, s2, s3, s4;
  39535. var key = peg$currPos * 65 + 33,
  39536. cached = peg$resultsCache[key];
  39537. if (cached) {
  39538. peg$currPos = cached.nextPos;
  39539. return cached.result;
  39540. }
  39541. s0 = peg$currPos;
  39542. s1 = peg$parsews();
  39543. if (s1 !== peg$FAILED) {
  39544. s2 = peg$parsebinarySelector();
  39545. if (s2 !== peg$FAILED) {
  39546. s3 = peg$parsews();
  39547. if (s3 !== peg$FAILED) {
  39548. s4 = peg$parseidentifier();
  39549. if (s4 !== peg$FAILED) {
  39550. peg$savedPos = s0;
  39551. s1 = peg$c76(s2, s4);
  39552. s0 = s1;
  39553. } else {
  39554. peg$currPos = s0;
  39555. s0 = peg$FAILED;
  39556. }
  39557. } else {
  39558. peg$currPos = s0;
  39559. s0 = peg$FAILED;
  39560. }
  39561. } else {
  39562. peg$currPos = s0;
  39563. s0 = peg$FAILED;
  39564. }
  39565. } else {
  39566. peg$currPos = s0;
  39567. s0 = peg$FAILED;
  39568. }
  39569. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39570. return s0;
  39571. }
  39572. function peg$parsewsUnaryPattern() {
  39573. var s0, s1, s2;
  39574. var key = peg$currPos * 65 + 34,
  39575. cached = peg$resultsCache[key];
  39576. if (cached) {
  39577. peg$currPos = cached.nextPos;
  39578. return cached.result;
  39579. }
  39580. s0 = peg$currPos;
  39581. s1 = peg$parsews();
  39582. if (s1 !== peg$FAILED) {
  39583. s2 = peg$parseidentifier();
  39584. if (s2 !== peg$FAILED) {
  39585. peg$savedPos = s0;
  39586. s1 = peg$c77(s2);
  39587. s0 = s1;
  39588. } else {
  39589. peg$currPos = s0;
  39590. s0 = peg$FAILED;
  39591. }
  39592. } else {
  39593. peg$currPos = s0;
  39594. s0 = peg$FAILED;
  39595. }
  39596. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39597. return s0;
  39598. }
  39599. function peg$parseexpression() {
  39600. var s0;
  39601. var key = peg$currPos * 65 + 35,
  39602. cached = peg$resultsCache[key];
  39603. if (cached) {
  39604. peg$currPos = cached.nextPos;
  39605. return cached.result;
  39606. }
  39607. s0 = peg$parseassignment();
  39608. if (s0 === peg$FAILED) {
  39609. s0 = peg$parsecascade();
  39610. if (s0 === peg$FAILED) {
  39611. s0 = peg$parsekeywordSend();
  39612. }
  39613. }
  39614. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39615. return s0;
  39616. }
  39617. function peg$parsewsExpressionsRest() {
  39618. var s0, s1, s2;
  39619. var key = peg$currPos * 65 + 36,
  39620. cached = peg$resultsCache[key];
  39621. if (cached) {
  39622. peg$currPos = cached.nextPos;
  39623. return cached.result;
  39624. }
  39625. s0 = peg$currPos;
  39626. s1 = peg$parsesomeDotsWs();
  39627. if (s1 !== peg$FAILED) {
  39628. s2 = peg$parseexpression();
  39629. if (s2 !== peg$FAILED) {
  39630. peg$savedPos = s0;
  39631. s1 = peg$c78(s2);
  39632. s0 = s1;
  39633. } else {
  39634. peg$currPos = s0;
  39635. s0 = peg$FAILED;
  39636. }
  39637. } else {
  39638. peg$currPos = s0;
  39639. s0 = peg$FAILED;
  39640. }
  39641. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39642. return s0;
  39643. }
  39644. function peg$parsewsExpressions() {
  39645. var s0, s1, s2, s3, s4;
  39646. var key = peg$currPos * 65 + 37,
  39647. cached = peg$resultsCache[key];
  39648. if (cached) {
  39649. peg$currPos = cached.nextPos;
  39650. return cached.result;
  39651. }
  39652. s0 = peg$currPos;
  39653. s1 = peg$parsemaybeDotsWs();
  39654. if (s1 !== peg$FAILED) {
  39655. s2 = peg$parseexpression();
  39656. if (s2 !== peg$FAILED) {
  39657. s3 = [];
  39658. s4 = peg$parsewsExpressionsRest();
  39659. while (s4 !== peg$FAILED) {
  39660. s3.push(s4);
  39661. s4 = peg$parsewsExpressionsRest();
  39662. }
  39663. if (s3 !== peg$FAILED) {
  39664. peg$savedPos = s0;
  39665. s1 = peg$c79(s2, s3);
  39666. s0 = s1;
  39667. } else {
  39668. peg$currPos = s0;
  39669. s0 = peg$FAILED;
  39670. }
  39671. } else {
  39672. peg$currPos = s0;
  39673. s0 = peg$FAILED;
  39674. }
  39675. } else {
  39676. peg$currPos = s0;
  39677. s0 = peg$FAILED;
  39678. }
  39679. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39680. return s0;
  39681. }
  39682. function peg$parsewsUnaryPragmaMessage() {
  39683. var s0, s1, s2, s3, s4;
  39684. var key = peg$currPos * 65 + 38,
  39685. cached = peg$resultsCache[key];
  39686. if (cached) {
  39687. peg$currPos = cached.nextPos;
  39688. return cached.result;
  39689. }
  39690. s0 = peg$currPos;
  39691. s1 = peg$parsews();
  39692. if (s1 !== peg$FAILED) {
  39693. s2 = peg$parseidentifier();
  39694. if (s2 !== peg$FAILED) {
  39695. s3 = peg$currPos;
  39696. peg$silentFails++;
  39697. if (input.charCodeAt(peg$currPos) === 58) {
  39698. s4 = peg$c12;
  39699. peg$currPos++;
  39700. } else {
  39701. s4 = peg$FAILED;
  39702. if (peg$silentFails === 0) { peg$fail(peg$c13); }
  39703. }
  39704. peg$silentFails--;
  39705. if (s4 === peg$FAILED) {
  39706. s3 = void 0;
  39707. } else {
  39708. peg$currPos = s3;
  39709. s3 = peg$FAILED;
  39710. }
  39711. if (s3 !== peg$FAILED) {
  39712. peg$savedPos = s0;
  39713. s1 = peg$c80(s2);
  39714. s0 = s1;
  39715. } else {
  39716. peg$currPos = s0;
  39717. s0 = peg$FAILED;
  39718. }
  39719. } else {
  39720. peg$currPos = s0;
  39721. s0 = peg$FAILED;
  39722. }
  39723. } else {
  39724. peg$currPos = s0;
  39725. s0 = peg$FAILED;
  39726. }
  39727. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39728. return s0;
  39729. }
  39730. function peg$parsewsKeywordPragmaMessage() {
  39731. var s0, s1, s2, s3, s4, s5, s6;
  39732. var key = peg$currPos * 65 + 39,
  39733. cached = peg$resultsCache[key];
  39734. if (cached) {
  39735. peg$currPos = cached.nextPos;
  39736. return cached.result;
  39737. }
  39738. s0 = peg$currPos;
  39739. s1 = [];
  39740. s2 = peg$currPos;
  39741. s3 = peg$parsews();
  39742. if (s3 !== peg$FAILED) {
  39743. s4 = peg$parsekeyword();
  39744. if (s4 !== peg$FAILED) {
  39745. s5 = peg$parsews();
  39746. if (s5 !== peg$FAILED) {
  39747. s6 = peg$parseparseTimeLiteral();
  39748. if (s6 !== peg$FAILED) {
  39749. peg$savedPos = s2;
  39750. s3 = peg$c74(s4, s6);
  39751. s2 = s3;
  39752. } else {
  39753. peg$currPos = s2;
  39754. s2 = peg$FAILED;
  39755. }
  39756. } else {
  39757. peg$currPos = s2;
  39758. s2 = peg$FAILED;
  39759. }
  39760. } else {
  39761. peg$currPos = s2;
  39762. s2 = peg$FAILED;
  39763. }
  39764. } else {
  39765. peg$currPos = s2;
  39766. s2 = peg$FAILED;
  39767. }
  39768. if (s2 !== peg$FAILED) {
  39769. while (s2 !== peg$FAILED) {
  39770. s1.push(s2);
  39771. s2 = peg$currPos;
  39772. s3 = peg$parsews();
  39773. if (s3 !== peg$FAILED) {
  39774. s4 = peg$parsekeyword();
  39775. if (s4 !== peg$FAILED) {
  39776. s5 = peg$parsews();
  39777. if (s5 !== peg$FAILED) {
  39778. s6 = peg$parseparseTimeLiteral();
  39779. if (s6 !== peg$FAILED) {
  39780. peg$savedPos = s2;
  39781. s3 = peg$c74(s4, s6);
  39782. s2 = s3;
  39783. } else {
  39784. peg$currPos = s2;
  39785. s2 = peg$FAILED;
  39786. }
  39787. } else {
  39788. peg$currPos = s2;
  39789. s2 = peg$FAILED;
  39790. }
  39791. } else {
  39792. peg$currPos = s2;
  39793. s2 = peg$FAILED;
  39794. }
  39795. } else {
  39796. peg$currPos = s2;
  39797. s2 = peg$FAILED;
  39798. }
  39799. }
  39800. } else {
  39801. s1 = peg$FAILED;
  39802. }
  39803. if (s1 !== peg$FAILED) {
  39804. peg$savedPos = s0;
  39805. s1 = peg$c81(s1);
  39806. }
  39807. s0 = s1;
  39808. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39809. return s0;
  39810. }
  39811. function peg$parsewsPragmaMessage() {
  39812. var s0;
  39813. var key = peg$currPos * 65 + 40,
  39814. cached = peg$resultsCache[key];
  39815. if (cached) {
  39816. peg$currPos = cached.nextPos;
  39817. return cached.result;
  39818. }
  39819. s0 = peg$parsewsUnaryPragmaMessage();
  39820. if (s0 === peg$FAILED) {
  39821. s0 = peg$parsewsKeywordPragmaMessage();
  39822. }
  39823. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39824. return s0;
  39825. }
  39826. function peg$parsewsPragmas() {
  39827. var s0, s1, s2, s3, s4, s5, s6;
  39828. var key = peg$currPos * 65 + 41,
  39829. cached = peg$resultsCache[key];
  39830. if (cached) {
  39831. peg$currPos = cached.nextPos;
  39832. return cached.result;
  39833. }
  39834. s0 = [];
  39835. s1 = peg$currPos;
  39836. s2 = peg$parsews();
  39837. if (s2 !== peg$FAILED) {
  39838. if (input.charCodeAt(peg$currPos) === 60) {
  39839. s3 = peg$c82;
  39840. peg$currPos++;
  39841. } else {
  39842. s3 = peg$FAILED;
  39843. if (peg$silentFails === 0) { peg$fail(peg$c83); }
  39844. }
  39845. if (s3 !== peg$FAILED) {
  39846. s4 = peg$parsewsPragmaMessage();
  39847. if (s4 !== peg$FAILED) {
  39848. s5 = peg$parsews();
  39849. if (s5 !== peg$FAILED) {
  39850. if (input.charCodeAt(peg$currPos) === 62) {
  39851. s6 = peg$c84;
  39852. peg$currPos++;
  39853. } else {
  39854. s6 = peg$FAILED;
  39855. if (peg$silentFails === 0) { peg$fail(peg$c85); }
  39856. }
  39857. if (s6 !== peg$FAILED) {
  39858. peg$savedPos = s1;
  39859. s2 = peg$c86(s4);
  39860. s1 = s2;
  39861. } else {
  39862. peg$currPos = s1;
  39863. s1 = peg$FAILED;
  39864. }
  39865. } else {
  39866. peg$currPos = s1;
  39867. s1 = peg$FAILED;
  39868. }
  39869. } else {
  39870. peg$currPos = s1;
  39871. s1 = peg$FAILED;
  39872. }
  39873. } else {
  39874. peg$currPos = s1;
  39875. s1 = peg$FAILED;
  39876. }
  39877. } else {
  39878. peg$currPos = s1;
  39879. s1 = peg$FAILED;
  39880. }
  39881. while (s1 !== peg$FAILED) {
  39882. s0.push(s1);
  39883. s1 = peg$currPos;
  39884. s2 = peg$parsews();
  39885. if (s2 !== peg$FAILED) {
  39886. if (input.charCodeAt(peg$currPos) === 60) {
  39887. s3 = peg$c82;
  39888. peg$currPos++;
  39889. } else {
  39890. s3 = peg$FAILED;
  39891. if (peg$silentFails === 0) { peg$fail(peg$c83); }
  39892. }
  39893. if (s3 !== peg$FAILED) {
  39894. s4 = peg$parsewsPragmaMessage();
  39895. if (s4 !== peg$FAILED) {
  39896. s5 = peg$parsews();
  39897. if (s5 !== peg$FAILED) {
  39898. if (input.charCodeAt(peg$currPos) === 62) {
  39899. s6 = peg$c84;
  39900. peg$currPos++;
  39901. } else {
  39902. s6 = peg$FAILED;
  39903. if (peg$silentFails === 0) { peg$fail(peg$c85); }
  39904. }
  39905. if (s6 !== peg$FAILED) {
  39906. peg$savedPos = s1;
  39907. s2 = peg$c86(s4);
  39908. s1 = s2;
  39909. } else {
  39910. peg$currPos = s1;
  39911. s1 = peg$FAILED;
  39912. }
  39913. } else {
  39914. peg$currPos = s1;
  39915. s1 = peg$FAILED;
  39916. }
  39917. } else {
  39918. peg$currPos = s1;
  39919. s1 = peg$FAILED;
  39920. }
  39921. } else {
  39922. peg$currPos = s1;
  39923. s1 = peg$FAILED;
  39924. }
  39925. } else {
  39926. peg$currPos = s1;
  39927. s1 = peg$FAILED;
  39928. }
  39929. }
  39930. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39931. return s0;
  39932. }
  39933. function peg$parseassignment() {
  39934. var s0, s1, s2, s3, s4, s5;
  39935. var key = peg$currPos * 65 + 42,
  39936. cached = peg$resultsCache[key];
  39937. if (cached) {
  39938. peg$currPos = cached.nextPos;
  39939. return cached.result;
  39940. }
  39941. s0 = peg$currPos;
  39942. s1 = peg$parsevariable();
  39943. if (s1 !== peg$FAILED) {
  39944. s2 = peg$parsews();
  39945. if (s2 !== peg$FAILED) {
  39946. if (input.substr(peg$currPos, 2) === peg$c87) {
  39947. s3 = peg$c87;
  39948. peg$currPos += 2;
  39949. } else {
  39950. s3 = peg$FAILED;
  39951. if (peg$silentFails === 0) { peg$fail(peg$c88); }
  39952. }
  39953. if (s3 !== peg$FAILED) {
  39954. s4 = peg$parsews();
  39955. if (s4 !== peg$FAILED) {
  39956. s5 = peg$parseexpression();
  39957. if (s5 !== peg$FAILED) {
  39958. peg$savedPos = s0;
  39959. s1 = peg$c89(s1, s5);
  39960. s0 = s1;
  39961. } else {
  39962. peg$currPos = s0;
  39963. s0 = peg$FAILED;
  39964. }
  39965. } else {
  39966. peg$currPos = s0;
  39967. s0 = peg$FAILED;
  39968. }
  39969. } else {
  39970. peg$currPos = s0;
  39971. s0 = peg$FAILED;
  39972. }
  39973. } else {
  39974. peg$currPos = s0;
  39975. s0 = peg$FAILED;
  39976. }
  39977. } else {
  39978. peg$currPos = s0;
  39979. s0 = peg$FAILED;
  39980. }
  39981. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  39982. return s0;
  39983. }
  39984. function peg$parseret() {
  39985. var s0, s1, s2, s3;
  39986. var key = peg$currPos * 65 + 43,
  39987. cached = peg$resultsCache[key];
  39988. if (cached) {
  39989. peg$currPos = cached.nextPos;
  39990. return cached.result;
  39991. }
  39992. s0 = peg$currPos;
  39993. if (input.charCodeAt(peg$currPos) === 94) {
  39994. s1 = peg$c90;
  39995. peg$currPos++;
  39996. } else {
  39997. s1 = peg$FAILED;
  39998. if (peg$silentFails === 0) { peg$fail(peg$c91); }
  39999. }
  40000. if (s1 !== peg$FAILED) {
  40001. s2 = peg$parsews();
  40002. if (s2 !== peg$FAILED) {
  40003. s3 = peg$parseexpression();
  40004. if (s3 !== peg$FAILED) {
  40005. peg$savedPos = s0;
  40006. s1 = peg$c92(s3);
  40007. s0 = s1;
  40008. } else {
  40009. peg$currPos = s0;
  40010. s0 = peg$FAILED;
  40011. }
  40012. } else {
  40013. peg$currPos = s0;
  40014. s0 = peg$FAILED;
  40015. }
  40016. } else {
  40017. peg$currPos = s0;
  40018. s0 = peg$FAILED;
  40019. }
  40020. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40021. return s0;
  40022. }
  40023. function peg$parsetemps() {
  40024. var s0, s1, s2, s3, s4, s5;
  40025. var key = peg$currPos * 65 + 44,
  40026. cached = peg$resultsCache[key];
  40027. if (cached) {
  40028. peg$currPos = cached.nextPos;
  40029. return cached.result;
  40030. }
  40031. s0 = peg$currPos;
  40032. if (input.charCodeAt(peg$currPos) === 124) {
  40033. s1 = peg$c93;
  40034. peg$currPos++;
  40035. } else {
  40036. s1 = peg$FAILED;
  40037. if (peg$silentFails === 0) { peg$fail(peg$c94); }
  40038. }
  40039. if (s1 !== peg$FAILED) {
  40040. s2 = [];
  40041. s3 = peg$currPos;
  40042. s4 = peg$parsews();
  40043. if (s4 !== peg$FAILED) {
  40044. s5 = peg$parseidentifier();
  40045. if (s5 !== peg$FAILED) {
  40046. peg$savedPos = s3;
  40047. s4 = peg$c95(s5);
  40048. s3 = s4;
  40049. } else {
  40050. peg$currPos = s3;
  40051. s3 = peg$FAILED;
  40052. }
  40053. } else {
  40054. peg$currPos = s3;
  40055. s3 = peg$FAILED;
  40056. }
  40057. while (s3 !== peg$FAILED) {
  40058. s2.push(s3);
  40059. s3 = peg$currPos;
  40060. s4 = peg$parsews();
  40061. if (s4 !== peg$FAILED) {
  40062. s5 = peg$parseidentifier();
  40063. if (s5 !== peg$FAILED) {
  40064. peg$savedPos = s3;
  40065. s4 = peg$c95(s5);
  40066. s3 = s4;
  40067. } else {
  40068. peg$currPos = s3;
  40069. s3 = peg$FAILED;
  40070. }
  40071. } else {
  40072. peg$currPos = s3;
  40073. s3 = peg$FAILED;
  40074. }
  40075. }
  40076. if (s2 !== peg$FAILED) {
  40077. s3 = peg$parsews();
  40078. if (s3 !== peg$FAILED) {
  40079. if (input.charCodeAt(peg$currPos) === 124) {
  40080. s4 = peg$c93;
  40081. peg$currPos++;
  40082. } else {
  40083. s4 = peg$FAILED;
  40084. if (peg$silentFails === 0) { peg$fail(peg$c94); }
  40085. }
  40086. if (s4 !== peg$FAILED) {
  40087. peg$savedPos = s0;
  40088. s1 = peg$c96(s2);
  40089. s0 = s1;
  40090. } else {
  40091. peg$currPos = s0;
  40092. s0 = peg$FAILED;
  40093. }
  40094. } else {
  40095. peg$currPos = s0;
  40096. s0 = peg$FAILED;
  40097. }
  40098. } else {
  40099. peg$currPos = s0;
  40100. s0 = peg$FAILED;
  40101. }
  40102. } else {
  40103. peg$currPos = s0;
  40104. s0 = peg$FAILED;
  40105. }
  40106. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40107. return s0;
  40108. }
  40109. function peg$parsewsBlockParamList() {
  40110. var s0, s1, s2, s3, s4, s5, s6;
  40111. var key = peg$currPos * 65 + 45,
  40112. cached = peg$resultsCache[key];
  40113. if (cached) {
  40114. peg$currPos = cached.nextPos;
  40115. return cached.result;
  40116. }
  40117. s0 = peg$currPos;
  40118. s1 = [];
  40119. s2 = peg$currPos;
  40120. s3 = peg$parsews();
  40121. if (s3 !== peg$FAILED) {
  40122. if (input.charCodeAt(peg$currPos) === 58) {
  40123. s4 = peg$c12;
  40124. peg$currPos++;
  40125. } else {
  40126. s4 = peg$FAILED;
  40127. if (peg$silentFails === 0) { peg$fail(peg$c13); }
  40128. }
  40129. if (s4 !== peg$FAILED) {
  40130. s5 = peg$parsews();
  40131. if (s5 !== peg$FAILED) {
  40132. s6 = peg$parseidentifier();
  40133. if (s6 !== peg$FAILED) {
  40134. peg$savedPos = s2;
  40135. s3 = peg$c97(s6);
  40136. s2 = s3;
  40137. } else {
  40138. peg$currPos = s2;
  40139. s2 = peg$FAILED;
  40140. }
  40141. } else {
  40142. peg$currPos = s2;
  40143. s2 = peg$FAILED;
  40144. }
  40145. } else {
  40146. peg$currPos = s2;
  40147. s2 = peg$FAILED;
  40148. }
  40149. } else {
  40150. peg$currPos = s2;
  40151. s2 = peg$FAILED;
  40152. }
  40153. if (s2 !== peg$FAILED) {
  40154. while (s2 !== peg$FAILED) {
  40155. s1.push(s2);
  40156. s2 = peg$currPos;
  40157. s3 = peg$parsews();
  40158. if (s3 !== peg$FAILED) {
  40159. if (input.charCodeAt(peg$currPos) === 58) {
  40160. s4 = peg$c12;
  40161. peg$currPos++;
  40162. } else {
  40163. s4 = peg$FAILED;
  40164. if (peg$silentFails === 0) { peg$fail(peg$c13); }
  40165. }
  40166. if (s4 !== peg$FAILED) {
  40167. s5 = peg$parsews();
  40168. if (s5 !== peg$FAILED) {
  40169. s6 = peg$parseidentifier();
  40170. if (s6 !== peg$FAILED) {
  40171. peg$savedPos = s2;
  40172. s3 = peg$c97(s6);
  40173. s2 = s3;
  40174. } else {
  40175. peg$currPos = s2;
  40176. s2 = peg$FAILED;
  40177. }
  40178. } else {
  40179. peg$currPos = s2;
  40180. s2 = peg$FAILED;
  40181. }
  40182. } else {
  40183. peg$currPos = s2;
  40184. s2 = peg$FAILED;
  40185. }
  40186. } else {
  40187. peg$currPos = s2;
  40188. s2 = peg$FAILED;
  40189. }
  40190. }
  40191. } else {
  40192. s1 = peg$FAILED;
  40193. }
  40194. if (s1 !== peg$FAILED) {
  40195. s2 = peg$parsews();
  40196. if (s2 !== peg$FAILED) {
  40197. if (input.charCodeAt(peg$currPos) === 124) {
  40198. s3 = peg$c93;
  40199. peg$currPos++;
  40200. } else {
  40201. s3 = peg$FAILED;
  40202. if (peg$silentFails === 0) { peg$fail(peg$c94); }
  40203. }
  40204. if (s3 !== peg$FAILED) {
  40205. peg$savedPos = s0;
  40206. s1 = peg$c98(s1);
  40207. s0 = s1;
  40208. } else {
  40209. peg$currPos = s0;
  40210. s0 = peg$FAILED;
  40211. }
  40212. } else {
  40213. peg$currPos = s0;
  40214. s0 = peg$FAILED;
  40215. }
  40216. } else {
  40217. peg$currPos = s0;
  40218. s0 = peg$FAILED;
  40219. }
  40220. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40221. return s0;
  40222. }
  40223. function peg$parsesubexpression() {
  40224. var s0, s1, s2, s3, s4, s5;
  40225. var key = peg$currPos * 65 + 46,
  40226. cached = peg$resultsCache[key];
  40227. if (cached) {
  40228. peg$currPos = cached.nextPos;
  40229. return cached.result;
  40230. }
  40231. s0 = peg$currPos;
  40232. if (input.charCodeAt(peg$currPos) === 40) {
  40233. s1 = peg$c51;
  40234. peg$currPos++;
  40235. } else {
  40236. s1 = peg$FAILED;
  40237. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  40238. }
  40239. if (s1 !== peg$FAILED) {
  40240. s2 = peg$parsews();
  40241. if (s2 !== peg$FAILED) {
  40242. s3 = peg$parseexpression();
  40243. if (s3 !== peg$FAILED) {
  40244. s4 = peg$parsews();
  40245. if (s4 !== peg$FAILED) {
  40246. if (input.charCodeAt(peg$currPos) === 41) {
  40247. s5 = peg$c48;
  40248. peg$currPos++;
  40249. } else {
  40250. s5 = peg$FAILED;
  40251. if (peg$silentFails === 0) { peg$fail(peg$c49); }
  40252. }
  40253. if (s5 !== peg$FAILED) {
  40254. peg$savedPos = s0;
  40255. s1 = peg$c78(s3);
  40256. s0 = s1;
  40257. } else {
  40258. peg$currPos = s0;
  40259. s0 = peg$FAILED;
  40260. }
  40261. } else {
  40262. peg$currPos = s0;
  40263. s0 = peg$FAILED;
  40264. }
  40265. } else {
  40266. peg$currPos = s0;
  40267. s0 = peg$FAILED;
  40268. }
  40269. } else {
  40270. peg$currPos = s0;
  40271. s0 = peg$FAILED;
  40272. }
  40273. } else {
  40274. peg$currPos = s0;
  40275. s0 = peg$FAILED;
  40276. }
  40277. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40278. return s0;
  40279. }
  40280. function peg$parsewsStatements() {
  40281. var s0, s1, s2, s3;
  40282. var key = peg$currPos * 65 + 47,
  40283. cached = peg$resultsCache[key];
  40284. if (cached) {
  40285. peg$currPos = cached.nextPos;
  40286. return cached.result;
  40287. }
  40288. s0 = peg$currPos;
  40289. s1 = peg$parsemaybeDotsWs();
  40290. if (s1 !== peg$FAILED) {
  40291. s2 = peg$parseret();
  40292. if (s2 !== peg$FAILED) {
  40293. peg$savedPos = s0;
  40294. s1 = peg$c99(s2);
  40295. s0 = s1;
  40296. } else {
  40297. peg$currPos = s0;
  40298. s0 = peg$FAILED;
  40299. }
  40300. } else {
  40301. peg$currPos = s0;
  40302. s0 = peg$FAILED;
  40303. }
  40304. if (s0 === peg$FAILED) {
  40305. s0 = peg$currPos;
  40306. s1 = peg$parsewsExpressions();
  40307. if (s1 !== peg$FAILED) {
  40308. s2 = peg$parsesomeDotsWs();
  40309. if (s2 !== peg$FAILED) {
  40310. s3 = peg$parseret();
  40311. if (s3 !== peg$FAILED) {
  40312. peg$savedPos = s0;
  40313. s1 = peg$c100(s1, s3);
  40314. s0 = s1;
  40315. } else {
  40316. peg$currPos = s0;
  40317. s0 = peg$FAILED;
  40318. }
  40319. } else {
  40320. peg$currPos = s0;
  40321. s0 = peg$FAILED;
  40322. }
  40323. } else {
  40324. peg$currPos = s0;
  40325. s0 = peg$FAILED;
  40326. }
  40327. if (s0 === peg$FAILED) {
  40328. s0 = peg$currPos;
  40329. s1 = peg$parsewsExpressions();
  40330. if (s1 === peg$FAILED) {
  40331. s1 = null;
  40332. }
  40333. if (s1 !== peg$FAILED) {
  40334. peg$savedPos = s0;
  40335. s1 = peg$c101(s1);
  40336. }
  40337. s0 = s1;
  40338. }
  40339. }
  40340. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40341. return s0;
  40342. }
  40343. function peg$parseblock() {
  40344. var s0, s1, s2, s3, s4, s5, s6, s7;
  40345. var key = peg$currPos * 65 + 48,
  40346. cached = peg$resultsCache[key];
  40347. if (cached) {
  40348. peg$currPos = cached.nextPos;
  40349. return cached.result;
  40350. }
  40351. s0 = peg$currPos;
  40352. if (input.charCodeAt(peg$currPos) === 91) {
  40353. s1 = peg$c102;
  40354. peg$currPos++;
  40355. } else {
  40356. s1 = peg$FAILED;
  40357. if (peg$silentFails === 0) { peg$fail(peg$c103); }
  40358. }
  40359. if (s1 !== peg$FAILED) {
  40360. s2 = peg$parsewsBlockParamList();
  40361. if (s2 === peg$FAILED) {
  40362. s2 = null;
  40363. }
  40364. if (s2 !== peg$FAILED) {
  40365. s3 = peg$parsews();
  40366. if (s3 !== peg$FAILED) {
  40367. s4 = peg$parsetemps();
  40368. if (s4 === peg$FAILED) {
  40369. s4 = null;
  40370. }
  40371. if (s4 !== peg$FAILED) {
  40372. s5 = peg$parsewsStatements();
  40373. if (s5 === peg$FAILED) {
  40374. s5 = null;
  40375. }
  40376. if (s5 !== peg$FAILED) {
  40377. s6 = peg$parsemaybeDotsWs();
  40378. if (s6 !== peg$FAILED) {
  40379. if (input.charCodeAt(peg$currPos) === 93) {
  40380. s7 = peg$c104;
  40381. peg$currPos++;
  40382. } else {
  40383. s7 = peg$FAILED;
  40384. if (peg$silentFails === 0) { peg$fail(peg$c105); }
  40385. }
  40386. if (s7 !== peg$FAILED) {
  40387. peg$savedPos = s0;
  40388. s1 = peg$c106(s2, s4, s5);
  40389. s0 = s1;
  40390. } else {
  40391. peg$currPos = s0;
  40392. s0 = peg$FAILED;
  40393. }
  40394. } else {
  40395. peg$currPos = s0;
  40396. s0 = peg$FAILED;
  40397. }
  40398. } else {
  40399. peg$currPos = s0;
  40400. s0 = peg$FAILED;
  40401. }
  40402. } else {
  40403. peg$currPos = s0;
  40404. s0 = peg$FAILED;
  40405. }
  40406. } else {
  40407. peg$currPos = s0;
  40408. s0 = peg$FAILED;
  40409. }
  40410. } else {
  40411. peg$currPos = s0;
  40412. s0 = peg$FAILED;
  40413. }
  40414. } else {
  40415. peg$currPos = s0;
  40416. s0 = peg$FAILED;
  40417. }
  40418. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40419. return s0;
  40420. }
  40421. function peg$parseoperand() {
  40422. var s0;
  40423. var key = peg$currPos * 65 + 49,
  40424. cached = peg$resultsCache[key];
  40425. if (cached) {
  40426. peg$currPos = cached.nextPos;
  40427. return cached.result;
  40428. }
  40429. s0 = peg$parsevariable();
  40430. if (s0 === peg$FAILED) {
  40431. s0 = peg$parseliteral();
  40432. if (s0 === peg$FAILED) {
  40433. s0 = peg$parsesubexpression();
  40434. }
  40435. }
  40436. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40437. return s0;
  40438. }
  40439. function peg$parsewsUnaryMessage() {
  40440. var s0, s1, s2, s3, s4;
  40441. var key = peg$currPos * 65 + 50,
  40442. cached = peg$resultsCache[key];
  40443. if (cached) {
  40444. peg$currPos = cached.nextPos;
  40445. return cached.result;
  40446. }
  40447. s0 = peg$currPos;
  40448. s1 = peg$parsews();
  40449. if (s1 !== peg$FAILED) {
  40450. s2 = peg$parseidentifier();
  40451. if (s2 !== peg$FAILED) {
  40452. s3 = peg$currPos;
  40453. peg$silentFails++;
  40454. if (input.charCodeAt(peg$currPos) === 58) {
  40455. s4 = peg$c12;
  40456. peg$currPos++;
  40457. } else {
  40458. s4 = peg$FAILED;
  40459. if (peg$silentFails === 0) { peg$fail(peg$c13); }
  40460. }
  40461. peg$silentFails--;
  40462. if (s4 === peg$FAILED) {
  40463. s3 = void 0;
  40464. } else {
  40465. peg$currPos = s3;
  40466. s3 = peg$FAILED;
  40467. }
  40468. if (s3 !== peg$FAILED) {
  40469. peg$savedPos = s0;
  40470. s1 = peg$c107(s2);
  40471. s0 = s1;
  40472. } else {
  40473. peg$currPos = s0;
  40474. s0 = peg$FAILED;
  40475. }
  40476. } else {
  40477. peg$currPos = s0;
  40478. s0 = peg$FAILED;
  40479. }
  40480. } else {
  40481. peg$currPos = s0;
  40482. s0 = peg$FAILED;
  40483. }
  40484. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40485. return s0;
  40486. }
  40487. function peg$parsewsUnaryTail() {
  40488. var s0, s1;
  40489. var key = peg$currPos * 65 + 51,
  40490. cached = peg$resultsCache[key];
  40491. if (cached) {
  40492. peg$currPos = cached.nextPos;
  40493. return cached.result;
  40494. }
  40495. s0 = [];
  40496. s1 = peg$parsewsUnaryMessage();
  40497. while (s1 !== peg$FAILED) {
  40498. s0.push(s1);
  40499. s1 = peg$parsewsUnaryMessage();
  40500. }
  40501. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40502. return s0;
  40503. }
  40504. function peg$parseunarySend() {
  40505. var s0, s1, s2;
  40506. var key = peg$currPos * 65 + 52,
  40507. cached = peg$resultsCache[key];
  40508. if (cached) {
  40509. peg$currPos = cached.nextPos;
  40510. return cached.result;
  40511. }
  40512. s0 = peg$currPos;
  40513. s1 = peg$parseoperand();
  40514. if (s1 !== peg$FAILED) {
  40515. s2 = peg$parsewsUnaryTail();
  40516. if (s2 !== peg$FAILED) {
  40517. peg$savedPos = s0;
  40518. s1 = peg$c108(s1, s2);
  40519. s0 = s1;
  40520. } else {
  40521. peg$currPos = s0;
  40522. s0 = peg$FAILED;
  40523. }
  40524. } else {
  40525. peg$currPos = s0;
  40526. s0 = peg$FAILED;
  40527. }
  40528. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40529. return s0;
  40530. }
  40531. function peg$parsewsBinaryMessage() {
  40532. var s0, s1, s2, s3, s4;
  40533. var key = peg$currPos * 65 + 53,
  40534. cached = peg$resultsCache[key];
  40535. if (cached) {
  40536. peg$currPos = cached.nextPos;
  40537. return cached.result;
  40538. }
  40539. s0 = peg$currPos;
  40540. s1 = peg$parsews();
  40541. if (s1 !== peg$FAILED) {
  40542. s2 = peg$parsebinarySelector();
  40543. if (s2 !== peg$FAILED) {
  40544. s3 = peg$parsews();
  40545. if (s3 !== peg$FAILED) {
  40546. s4 = peg$parseunarySend();
  40547. if (s4 !== peg$FAILED) {
  40548. peg$savedPos = s0;
  40549. s1 = peg$c109(s2, s4);
  40550. s0 = s1;
  40551. } else {
  40552. peg$currPos = s0;
  40553. s0 = peg$FAILED;
  40554. }
  40555. } else {
  40556. peg$currPos = s0;
  40557. s0 = peg$FAILED;
  40558. }
  40559. } else {
  40560. peg$currPos = s0;
  40561. s0 = peg$FAILED;
  40562. }
  40563. } else {
  40564. peg$currPos = s0;
  40565. s0 = peg$FAILED;
  40566. }
  40567. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40568. return s0;
  40569. }
  40570. function peg$parsewsBinaryTail() {
  40571. var s0, s1, s2, s3;
  40572. var key = peg$currPos * 65 + 54,
  40573. cached = peg$resultsCache[key];
  40574. if (cached) {
  40575. peg$currPos = cached.nextPos;
  40576. return cached.result;
  40577. }
  40578. s0 = peg$currPos;
  40579. s1 = peg$parsewsUnaryTail();
  40580. if (s1 !== peg$FAILED) {
  40581. s2 = [];
  40582. s3 = peg$parsewsBinaryMessage();
  40583. while (s3 !== peg$FAILED) {
  40584. s2.push(s3);
  40585. s3 = peg$parsewsBinaryMessage();
  40586. }
  40587. if (s2 !== peg$FAILED) {
  40588. peg$savedPos = s0;
  40589. s1 = peg$c110(s1, s2);
  40590. s0 = s1;
  40591. } else {
  40592. peg$currPos = s0;
  40593. s0 = peg$FAILED;
  40594. }
  40595. } else {
  40596. peg$currPos = s0;
  40597. s0 = peg$FAILED;
  40598. }
  40599. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40600. return s0;
  40601. }
  40602. function peg$parsebinarySend() {
  40603. var s0, s1, s2;
  40604. var key = peg$currPos * 65 + 55,
  40605. cached = peg$resultsCache[key];
  40606. if (cached) {
  40607. peg$currPos = cached.nextPos;
  40608. return cached.result;
  40609. }
  40610. s0 = peg$currPos;
  40611. s1 = peg$parseoperand();
  40612. if (s1 !== peg$FAILED) {
  40613. s2 = peg$parsewsBinaryTail();
  40614. if (s2 !== peg$FAILED) {
  40615. peg$savedPos = s0;
  40616. s1 = peg$c108(s1, s2);
  40617. s0 = s1;
  40618. } else {
  40619. peg$currPos = s0;
  40620. s0 = peg$FAILED;
  40621. }
  40622. } else {
  40623. peg$currPos = s0;
  40624. s0 = peg$FAILED;
  40625. }
  40626. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40627. return s0;
  40628. }
  40629. function peg$parsewsKeywordMessage() {
  40630. var s0, s1, s2, s3, s4, s5, s6;
  40631. var key = peg$currPos * 65 + 56,
  40632. cached = peg$resultsCache[key];
  40633. if (cached) {
  40634. peg$currPos = cached.nextPos;
  40635. return cached.result;
  40636. }
  40637. s0 = peg$currPos;
  40638. s1 = [];
  40639. s2 = peg$currPos;
  40640. s3 = peg$parsews();
  40641. if (s3 !== peg$FAILED) {
  40642. s4 = peg$parsekeyword();
  40643. if (s4 !== peg$FAILED) {
  40644. s5 = peg$parsews();
  40645. if (s5 !== peg$FAILED) {
  40646. s6 = peg$parsebinarySend();
  40647. if (s6 !== peg$FAILED) {
  40648. peg$savedPos = s2;
  40649. s3 = peg$c74(s4, s6);
  40650. s2 = s3;
  40651. } else {
  40652. peg$currPos = s2;
  40653. s2 = peg$FAILED;
  40654. }
  40655. } else {
  40656. peg$currPos = s2;
  40657. s2 = peg$FAILED;
  40658. }
  40659. } else {
  40660. peg$currPos = s2;
  40661. s2 = peg$FAILED;
  40662. }
  40663. } else {
  40664. peg$currPos = s2;
  40665. s2 = peg$FAILED;
  40666. }
  40667. if (s2 !== peg$FAILED) {
  40668. while (s2 !== peg$FAILED) {
  40669. s1.push(s2);
  40670. s2 = peg$currPos;
  40671. s3 = peg$parsews();
  40672. if (s3 !== peg$FAILED) {
  40673. s4 = peg$parsekeyword();
  40674. if (s4 !== peg$FAILED) {
  40675. s5 = peg$parsews();
  40676. if (s5 !== peg$FAILED) {
  40677. s6 = peg$parsebinarySend();
  40678. if (s6 !== peg$FAILED) {
  40679. peg$savedPos = s2;
  40680. s3 = peg$c74(s4, s6);
  40681. s2 = s3;
  40682. } else {
  40683. peg$currPos = s2;
  40684. s2 = peg$FAILED;
  40685. }
  40686. } else {
  40687. peg$currPos = s2;
  40688. s2 = peg$FAILED;
  40689. }
  40690. } else {
  40691. peg$currPos = s2;
  40692. s2 = peg$FAILED;
  40693. }
  40694. } else {
  40695. peg$currPos = s2;
  40696. s2 = peg$FAILED;
  40697. }
  40698. }
  40699. } else {
  40700. s1 = peg$FAILED;
  40701. }
  40702. if (s1 !== peg$FAILED) {
  40703. peg$savedPos = s0;
  40704. s1 = peg$c111(s1);
  40705. }
  40706. s0 = s1;
  40707. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40708. return s0;
  40709. }
  40710. function peg$parsewsKeywordTail() {
  40711. var s0, s1, s2;
  40712. var key = peg$currPos * 65 + 57,
  40713. cached = peg$resultsCache[key];
  40714. if (cached) {
  40715. peg$currPos = cached.nextPos;
  40716. return cached.result;
  40717. }
  40718. s0 = peg$currPos;
  40719. s1 = peg$parsewsBinaryTail();
  40720. if (s1 !== peg$FAILED) {
  40721. s2 = peg$parsewsKeywordMessage();
  40722. if (s2 === peg$FAILED) {
  40723. s2 = null;
  40724. }
  40725. if (s2 !== peg$FAILED) {
  40726. peg$savedPos = s0;
  40727. s1 = peg$c112(s1, s2);
  40728. s0 = s1;
  40729. } else {
  40730. peg$currPos = s0;
  40731. s0 = peg$FAILED;
  40732. }
  40733. } else {
  40734. peg$currPos = s0;
  40735. s0 = peg$FAILED;
  40736. }
  40737. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40738. return s0;
  40739. }
  40740. function peg$parsekeywordSend() {
  40741. var s0, s1, s2;
  40742. var key = peg$currPos * 65 + 58,
  40743. cached = peg$resultsCache[key];
  40744. if (cached) {
  40745. peg$currPos = cached.nextPos;
  40746. return cached.result;
  40747. }
  40748. s0 = peg$currPos;
  40749. s1 = peg$parseoperand();
  40750. if (s1 !== peg$FAILED) {
  40751. s2 = peg$parsewsKeywordTail();
  40752. if (s2 !== peg$FAILED) {
  40753. peg$savedPos = s0;
  40754. s1 = peg$c108(s1, s2);
  40755. s0 = s1;
  40756. } else {
  40757. peg$currPos = s0;
  40758. s0 = peg$FAILED;
  40759. }
  40760. } else {
  40761. peg$currPos = s0;
  40762. s0 = peg$FAILED;
  40763. }
  40764. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40765. return s0;
  40766. }
  40767. function peg$parsewsMessage() {
  40768. var s0;
  40769. var key = peg$currPos * 65 + 59,
  40770. cached = peg$resultsCache[key];
  40771. if (cached) {
  40772. peg$currPos = cached.nextPos;
  40773. return cached.result;
  40774. }
  40775. s0 = peg$parsewsBinaryMessage();
  40776. if (s0 === peg$FAILED) {
  40777. s0 = peg$parsewsUnaryMessage();
  40778. if (s0 === peg$FAILED) {
  40779. s0 = peg$parsewsKeywordMessage();
  40780. }
  40781. }
  40782. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40783. return s0;
  40784. }
  40785. function peg$parsecascade() {
  40786. var s0, s1, s2, s3, s4, s5, s6, s7, s8;
  40787. var key = peg$currPos * 65 + 60,
  40788. cached = peg$resultsCache[key];
  40789. if (cached) {
  40790. peg$currPos = cached.nextPos;
  40791. return cached.result;
  40792. }
  40793. s0 = peg$currPos;
  40794. s1 = peg$parseoperand();
  40795. if (s1 !== peg$FAILED) {
  40796. s2 = peg$parsewsKeywordTail();
  40797. if (s2 !== peg$FAILED) {
  40798. peg$savedPos = peg$currPos;
  40799. s3 = peg$c113(s1, s2);
  40800. if (s3) {
  40801. s3 = void 0;
  40802. } else {
  40803. s3 = peg$FAILED;
  40804. }
  40805. if (s3 !== peg$FAILED) {
  40806. s4 = [];
  40807. s5 = peg$currPos;
  40808. s6 = peg$parsews();
  40809. if (s6 !== peg$FAILED) {
  40810. if (input.charCodeAt(peg$currPos) === 59) {
  40811. s7 = peg$c114;
  40812. peg$currPos++;
  40813. } else {
  40814. s7 = peg$FAILED;
  40815. if (peg$silentFails === 0) { peg$fail(peg$c115); }
  40816. }
  40817. if (s7 !== peg$FAILED) {
  40818. s8 = peg$parsewsMessage();
  40819. if (s8 !== peg$FAILED) {
  40820. peg$savedPos = s5;
  40821. s6 = peg$c116(s1, s2, s8);
  40822. s5 = s6;
  40823. } else {
  40824. peg$currPos = s5;
  40825. s5 = peg$FAILED;
  40826. }
  40827. } else {
  40828. peg$currPos = s5;
  40829. s5 = peg$FAILED;
  40830. }
  40831. } else {
  40832. peg$currPos = s5;
  40833. s5 = peg$FAILED;
  40834. }
  40835. if (s5 !== peg$FAILED) {
  40836. while (s5 !== peg$FAILED) {
  40837. s4.push(s5);
  40838. s5 = peg$currPos;
  40839. s6 = peg$parsews();
  40840. if (s6 !== peg$FAILED) {
  40841. if (input.charCodeAt(peg$currPos) === 59) {
  40842. s7 = peg$c114;
  40843. peg$currPos++;
  40844. } else {
  40845. s7 = peg$FAILED;
  40846. if (peg$silentFails === 0) { peg$fail(peg$c115); }
  40847. }
  40848. if (s7 !== peg$FAILED) {
  40849. s8 = peg$parsewsMessage();
  40850. if (s8 !== peg$FAILED) {
  40851. peg$savedPos = s5;
  40852. s6 = peg$c116(s1, s2, s8);
  40853. s5 = s6;
  40854. } else {
  40855. peg$currPos = s5;
  40856. s5 = peg$FAILED;
  40857. }
  40858. } else {
  40859. peg$currPos = s5;
  40860. s5 = peg$FAILED;
  40861. }
  40862. } else {
  40863. peg$currPos = s5;
  40864. s5 = peg$FAILED;
  40865. }
  40866. }
  40867. } else {
  40868. s4 = peg$FAILED;
  40869. }
  40870. if (s4 !== peg$FAILED) {
  40871. peg$savedPos = s0;
  40872. s1 = peg$c117(s1, s2, s4);
  40873. s0 = s1;
  40874. } else {
  40875. peg$currPos = s0;
  40876. s0 = peg$FAILED;
  40877. }
  40878. } else {
  40879. peg$currPos = s0;
  40880. s0 = peg$FAILED;
  40881. }
  40882. } else {
  40883. peg$currPos = s0;
  40884. s0 = peg$FAILED;
  40885. }
  40886. } else {
  40887. peg$currPos = s0;
  40888. s0 = peg$FAILED;
  40889. }
  40890. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40891. return s0;
  40892. }
  40893. function peg$parsemethod() {
  40894. var s0, s1, s2, s3, s4, s5, s6, s7;
  40895. var key = peg$currPos * 65 + 61,
  40896. cached = peg$resultsCache[key];
  40897. if (cached) {
  40898. peg$currPos = cached.nextPos;
  40899. return cached.result;
  40900. }
  40901. s0 = peg$currPos;
  40902. s1 = peg$parsewsKeywordPattern();
  40903. if (s1 === peg$FAILED) {
  40904. s1 = peg$parsewsBinaryPattern();
  40905. if (s1 === peg$FAILED) {
  40906. s1 = peg$parsewsUnaryPattern();
  40907. }
  40908. }
  40909. if (s1 !== peg$FAILED) {
  40910. s2 = peg$parsewsPragmas();
  40911. if (s2 === peg$FAILED) {
  40912. s2 = null;
  40913. }
  40914. if (s2 !== peg$FAILED) {
  40915. s3 = peg$parsews();
  40916. if (s3 !== peg$FAILED) {
  40917. s4 = peg$parsetemps();
  40918. if (s4 === peg$FAILED) {
  40919. s4 = null;
  40920. }
  40921. if (s4 !== peg$FAILED) {
  40922. s5 = peg$parsewsPragmas();
  40923. if (s5 === peg$FAILED) {
  40924. s5 = null;
  40925. }
  40926. if (s5 !== peg$FAILED) {
  40927. s6 = peg$parsewsStatements();
  40928. if (s6 === peg$FAILED) {
  40929. s6 = null;
  40930. }
  40931. if (s6 !== peg$FAILED) {
  40932. s7 = peg$parsemaybeDotsWs();
  40933. if (s7 !== peg$FAILED) {
  40934. peg$savedPos = s0;
  40935. s1 = peg$c118(s1, s2, s4, s5, s6);
  40936. s0 = s1;
  40937. } else {
  40938. peg$currPos = s0;
  40939. s0 = peg$FAILED;
  40940. }
  40941. } else {
  40942. peg$currPos = s0;
  40943. s0 = peg$FAILED;
  40944. }
  40945. } else {
  40946. peg$currPos = s0;
  40947. s0 = peg$FAILED;
  40948. }
  40949. } else {
  40950. peg$currPos = s0;
  40951. s0 = peg$FAILED;
  40952. }
  40953. } else {
  40954. peg$currPos = s0;
  40955. s0 = peg$FAILED;
  40956. }
  40957. } else {
  40958. peg$currPos = s0;
  40959. s0 = peg$FAILED;
  40960. }
  40961. } else {
  40962. peg$currPos = s0;
  40963. s0 = peg$FAILED;
  40964. }
  40965. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  40966. return s0;
  40967. }
  40968. function peg$parseassociationSend() {
  40969. var s0, s1, s2, s3;
  40970. var key = peg$currPos * 65 + 62,
  40971. cached = peg$resultsCache[key];
  40972. if (cached) {
  40973. peg$currPos = cached.nextPos;
  40974. return cached.result;
  40975. }
  40976. s0 = peg$currPos;
  40977. s1 = peg$parseoperand();
  40978. if (s1 !== peg$FAILED) {
  40979. s2 = peg$parsewsBinaryTail();
  40980. if (s2 !== peg$FAILED) {
  40981. peg$savedPos = peg$currPos;
  40982. s3 = peg$c119(s1, s2);
  40983. if (s3) {
  40984. s3 = void 0;
  40985. } else {
  40986. s3 = peg$FAILED;
  40987. }
  40988. if (s3 !== peg$FAILED) {
  40989. peg$savedPos = s0;
  40990. s1 = peg$c120(s1, s2);
  40991. s0 = s1;
  40992. } else {
  40993. peg$currPos = s0;
  40994. s0 = peg$FAILED;
  40995. }
  40996. } else {
  40997. peg$currPos = s0;
  40998. s0 = peg$FAILED;
  40999. }
  41000. } else {
  41001. peg$currPos = s0;
  41002. s0 = peg$FAILED;
  41003. }
  41004. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  41005. return s0;
  41006. }
  41007. function peg$parsewsAssociationsRest() {
  41008. var s0, s1, s2;
  41009. var key = peg$currPos * 65 + 63,
  41010. cached = peg$resultsCache[key];
  41011. if (cached) {
  41012. peg$currPos = cached.nextPos;
  41013. return cached.result;
  41014. }
  41015. s0 = peg$currPos;
  41016. s1 = peg$parsesomeDotsWs();
  41017. if (s1 !== peg$FAILED) {
  41018. s2 = peg$parseassociationSend();
  41019. if (s2 !== peg$FAILED) {
  41020. peg$savedPos = s0;
  41021. s1 = peg$c78(s2);
  41022. s0 = s1;
  41023. } else {
  41024. peg$currPos = s0;
  41025. s0 = peg$FAILED;
  41026. }
  41027. } else {
  41028. peg$currPos = s0;
  41029. s0 = peg$FAILED;
  41030. }
  41031. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  41032. return s0;
  41033. }
  41034. function peg$parsewsAssociations() {
  41035. var s0, s1, s2, s3, s4;
  41036. var key = peg$currPos * 65 + 64,
  41037. cached = peg$resultsCache[key];
  41038. if (cached) {
  41039. peg$currPos = cached.nextPos;
  41040. return cached.result;
  41041. }
  41042. s0 = peg$currPos;
  41043. s1 = peg$parsemaybeDotsWs();
  41044. if (s1 !== peg$FAILED) {
  41045. s2 = peg$parseassociationSend();
  41046. if (s2 !== peg$FAILED) {
  41047. s3 = [];
  41048. s4 = peg$parsewsAssociationsRest();
  41049. while (s4 !== peg$FAILED) {
  41050. s3.push(s4);
  41051. s4 = peg$parsewsAssociationsRest();
  41052. }
  41053. if (s3 !== peg$FAILED) {
  41054. peg$savedPos = s0;
  41055. s1 = peg$c121(s2, s3);
  41056. s0 = s1;
  41057. } else {
  41058. peg$currPos = s0;
  41059. s0 = peg$FAILED;
  41060. }
  41061. } else {
  41062. peg$currPos = s0;
  41063. s0 = peg$FAILED;
  41064. }
  41065. } else {
  41066. peg$currPos = s0;
  41067. s0 = peg$FAILED;
  41068. }
  41069. peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
  41070. return s0;
  41071. }
  41072. var $globals = __boot.globals;
  41073. function newNode(nodeClass) {
  41074. return nodeClass._new()._location_(location())._source_(text());
  41075. }
  41076. function newSequenceNode(nodeClass, temps, statements) {
  41077. return newNode(nodeClass)._temps_(temps || [])._dagChildren_(statements || []);
  41078. }
  41079. peg$result = peg$startRuleFunction();
  41080. if (peg$result !== peg$FAILED && peg$currPos === input.length) {
  41081. return peg$result;
  41082. } else {
  41083. if (peg$result !== peg$FAILED && peg$currPos < input.length) {
  41084. peg$fail(peg$endExpectation());
  41085. }
  41086. throw peg$buildStructuredError(
  41087. peg$maxFailExpected,
  41088. peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,
  41089. peg$maxFailPos < input.length
  41090. ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
  41091. : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
  41092. );
  41093. }
  41094. }
  41095. return {
  41096. SyntaxError: peg$SyntaxError,
  41097. parse: peg$parse
  41098. };
  41099. });
  41100. define('amber/core/Platform-ImportExport',["amber/boot", "require", "amber/core/Kernel-Classes", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  41101. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  41102. var $pkg = $core.addPackage("Platform-ImportExport");
  41103. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  41104. $core.addClass("AbstractExporter", $globals.Object, "Platform-ImportExport");
  41105. //>>excludeStart("ide", pragmas.excludeIdeData);
  41106. $globals.AbstractExporter.comment="I am an abstract exporter for Amber source code.\x0a\x0a## API\x0a\x0aUse `#exportPackage:on:` to export a given package on a Stream.";
  41107. //>>excludeEnd("ide");
  41108. $core.addMethod(
  41109. $core.method({
  41110. selector: "exportPackage:on:",
  41111. protocol: "output",
  41112. //>>excludeStart("ide", pragmas.excludeIdeData);
  41113. args: ["aPackage", "aStream"],
  41114. source: "exportPackage: aPackage on: aStream\x0a\x09self subclassResponsibility",
  41115. referencedClasses: [],
  41116. //>>excludeEnd("ide");
  41117. pragmas: [],
  41118. messageSends: ["subclassResponsibility"]
  41119. }, function ($methodClass){ return function (aPackage,aStream){
  41120. var self=this,$self=this;
  41121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41122. return $core.withContext(function($ctx1) {
  41123. //>>excludeEnd("ctx");
  41124. $self._subclassResponsibility();
  41125. return self;
  41126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41127. }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream})});
  41128. //>>excludeEnd("ctx");
  41129. }; }),
  41130. $globals.AbstractExporter);
  41131. $core.addMethod(
  41132. $core.method({
  41133. selector: "extensionMethodsOfPackage:",
  41134. protocol: "accessing",
  41135. //>>excludeStart("ide", pragmas.excludeIdeData);
  41136. args: ["aPackage"],
  41137. source: "extensionMethodsOfPackage: aPackage\x0a\x09| result |\x0a\x09\x0a\x09result := OrderedCollection new.\x0a\x09\x0a\x09(self extensionProtocolsOfPackage: aPackage) do: [ :each |\x0a\x09\x09result addAll: each ownMethods ].\x0a\x09\x09\x0a\x09^ result",
  41138. referencedClasses: ["OrderedCollection"],
  41139. //>>excludeEnd("ide");
  41140. pragmas: [],
  41141. messageSends: ["new", "do:", "extensionProtocolsOfPackage:", "addAll:", "ownMethods"]
  41142. }, function ($methodClass){ return function (aPackage){
  41143. var self=this,$self=this;
  41144. var result;
  41145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41146. return $core.withContext(function($ctx1) {
  41147. //>>excludeEnd("ctx");
  41148. result=$recv($globals.OrderedCollection)._new();
  41149. $recv($self._extensionProtocolsOfPackage_(aPackage))._do_((function(each){
  41150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41151. return $core.withContext(function($ctx2) {
  41152. //>>excludeEnd("ctx");
  41153. return $recv(result)._addAll_($recv(each)._ownMethods());
  41154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41155. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  41156. //>>excludeEnd("ctx");
  41157. }));
  41158. return result;
  41159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41160. }, function($ctx1) {$ctx1.fill(self,"extensionMethodsOfPackage:",{aPackage:aPackage,result:result})});
  41161. //>>excludeEnd("ctx");
  41162. }; }),
  41163. $globals.AbstractExporter);
  41164. $core.addMethod(
  41165. $core.method({
  41166. selector: "extensionProtocolsOfPackage:",
  41167. protocol: "accessing",
  41168. //>>excludeStart("ide", pragmas.excludeIdeData);
  41169. args: ["aPackage"],
  41170. source: "extensionProtocolsOfPackage: aPackage\x0a\x09| extensionName result |\x0a\x09\x0a\x09extensionName := '*', aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09\x0a\x09\x22The classes must be loaded since it is extensions only.\x0a\x09Therefore topological sorting (dependency resolution) does not matter here.\x0a\x09Not sorting topologically improves the speed by a number of magnitude.\x0a\x09\x0a\x09Not to shuffle diffs, classes are sorted by their name.\x22\x0a\x09\x0a\x09(Smalltalk classes asArray sorted: [ :a :b | a name < b name ]) do: [ :each |\x0a\x09\x09each includingPossibleMetaDo: [ :behavior |\x0a\x09\x09\x09(behavior protocols includes: extensionName) ifTrue: [\x0a\x09\x09\x09\x09result add: (ExportMethodProtocol name: extensionName theClass: behavior) ] ] ].\x0a\x0a\x09^ result",
  41171. referencedClasses: ["OrderedCollection", "Smalltalk", "ExportMethodProtocol"],
  41172. //>>excludeEnd("ide");
  41173. pragmas: [],
  41174. messageSends: [",", "name", "new", "do:", "sorted:", "asArray", "classes", "<", "includingPossibleMetaDo:", "ifTrue:", "includes:", "protocols", "add:", "name:theClass:"]
  41175. }, function ($methodClass){ return function (aPackage){
  41176. var self=this,$self=this;
  41177. var extensionName,result;
  41178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41179. return $core.withContext(function($ctx1) {
  41180. //>>excludeEnd("ctx");
  41181. extensionName="*".__comma([$recv(aPackage)._name()
  41182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41183. ,$ctx1.sendIdx["name"]=1
  41184. //>>excludeEnd("ctx");
  41185. ][0]);
  41186. result=$recv($globals.OrderedCollection)._new();
  41187. $recv($recv($recv($recv($globals.Smalltalk)._classes())._asArray())._sorted_((function(a,b){
  41188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41189. return $core.withContext(function($ctx2) {
  41190. //>>excludeEnd("ctx");
  41191. return $recv([$recv(a)._name()
  41192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41193. ,$ctx2.sendIdx["name"]=2
  41194. //>>excludeEnd("ctx");
  41195. ][0]).__lt($recv(b)._name());
  41196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41197. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  41198. //>>excludeEnd("ctx");
  41199. })))._do_((function(each){
  41200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41201. return $core.withContext(function($ctx2) {
  41202. //>>excludeEnd("ctx");
  41203. return $recv(each)._includingPossibleMetaDo_((function(behavior){
  41204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41205. return $core.withContext(function($ctx3) {
  41206. //>>excludeEnd("ctx");
  41207. if($core.assert($recv($recv(behavior)._protocols())._includes_(extensionName))){
  41208. return $recv(result)._add_($recv($globals.ExportMethodProtocol)._name_theClass_(extensionName,behavior));
  41209. }
  41210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41211. }, function($ctx3) {$ctx3.fillBlock({behavior:behavior},$ctx2,3)});
  41212. //>>excludeEnd("ctx");
  41213. }));
  41214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41215. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  41216. //>>excludeEnd("ctx");
  41217. }));
  41218. return result;
  41219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41220. }, function($ctx1) {$ctx1.fill(self,"extensionProtocolsOfPackage:",{aPackage:aPackage,extensionName:extensionName,result:result})});
  41221. //>>excludeEnd("ctx");
  41222. }; }),
  41223. $globals.AbstractExporter);
  41224. $core.addClass("ChunkExporter", $globals.AbstractExporter, "Platform-ImportExport");
  41225. //>>excludeStart("ide", pragmas.excludeIdeData);
  41226. $globals.ChunkExporter.comment="I am an exporter dedicated to outputting Amber source code in the classic Smalltalk chunk format.\x0a\x0aI do not output any compiled code.";
  41227. //>>excludeEnd("ide");
  41228. $core.addMethod(
  41229. $core.method({
  41230. selector: "chunkEscape:",
  41231. protocol: "convenience",
  41232. //>>excludeStart("ide", pragmas.excludeIdeData);
  41233. args: ["aString"],
  41234. source: "chunkEscape: aString\x0a\x09\x22Replace all occurrences of ! with !! and trim at both ends.\x22\x0a\x0a\x09^ (aString replace: '!' with: '!!') trimBoth",
  41235. referencedClasses: [],
  41236. //>>excludeEnd("ide");
  41237. pragmas: [],
  41238. messageSends: ["trimBoth", "replace:with:"]
  41239. }, function ($methodClass){ return function (aString){
  41240. var self=this,$self=this;
  41241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41242. return $core.withContext(function($ctx1) {
  41243. //>>excludeEnd("ctx");
  41244. return $recv($recv(aString)._replace_with_("!","!!"))._trimBoth();
  41245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41246. }, function($ctx1) {$ctx1.fill(self,"chunkEscape:",{aString:aString})});
  41247. //>>excludeEnd("ctx");
  41248. }; }),
  41249. $globals.ChunkExporter);
  41250. $core.addMethod(
  41251. $core.method({
  41252. selector: "exportBehavior:on:",
  41253. protocol: "output",
  41254. //>>excludeStart("ide", pragmas.excludeIdeData);
  41255. args: ["aBehavior", "aStream"],
  41256. source: "exportBehavior: aBehavior on: aStream\x0a\x09aBehavior exportBehaviorDefinitionTo: aStream using: self.\x0a\x09self \x0a\x09\x09exportProtocols: (self ownMethodProtocolsOfClass: aBehavior)\x0a\x09\x09on: aStream",
  41257. referencedClasses: [],
  41258. //>>excludeEnd("ide");
  41259. pragmas: [],
  41260. messageSends: ["exportBehaviorDefinitionTo:using:", "exportProtocols:on:", "ownMethodProtocolsOfClass:"]
  41261. }, function ($methodClass){ return function (aBehavior,aStream){
  41262. var self=this,$self=this;
  41263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41264. return $core.withContext(function($ctx1) {
  41265. //>>excludeEnd("ctx");
  41266. $recv(aBehavior)._exportBehaviorDefinitionTo_using_(aStream,self);
  41267. $self._exportProtocols_on_($self._ownMethodProtocolsOfClass_(aBehavior),aStream);
  41268. return self;
  41269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41270. }, function($ctx1) {$ctx1.fill(self,"exportBehavior:on:",{aBehavior:aBehavior,aStream:aStream})});
  41271. //>>excludeEnd("ctx");
  41272. }; }),
  41273. $globals.ChunkExporter);
  41274. $core.addMethod(
  41275. $core.method({
  41276. selector: "exportCategoryEpilogueOf:on:",
  41277. protocol: "output",
  41278. //>>excludeStart("ide", pragmas.excludeIdeData);
  41279. args: ["aCategory", "aStream"],
  41280. source: "exportCategoryEpilogueOf: aCategory on: aStream\x0a\x09aStream write: ' !'; lf; lf",
  41281. referencedClasses: [],
  41282. //>>excludeEnd("ide");
  41283. pragmas: [],
  41284. messageSends: ["write:", "lf"]
  41285. }, function ($methodClass){ return function (aCategory,aStream){
  41286. var self=this,$self=this;
  41287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41288. return $core.withContext(function($ctx1) {
  41289. //>>excludeEnd("ctx");
  41290. $recv(aStream)._write_(" !");
  41291. [$recv(aStream)._lf()
  41292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41293. ,$ctx1.sendIdx["lf"]=1
  41294. //>>excludeEnd("ctx");
  41295. ][0];
  41296. $recv(aStream)._lf();
  41297. return self;
  41298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41299. }, function($ctx1) {$ctx1.fill(self,"exportCategoryEpilogueOf:on:",{aCategory:aCategory,aStream:aStream})});
  41300. //>>excludeEnd("ctx");
  41301. }; }),
  41302. $globals.ChunkExporter);
  41303. $core.addMethod(
  41304. $core.method({
  41305. selector: "exportCategoryPrologueOf:on:",
  41306. protocol: "output",
  41307. //>>excludeStart("ide", pragmas.excludeIdeData);
  41308. args: ["aCategory", "aStream"],
  41309. source: "exportCategoryPrologueOf: aCategory on: aStream\x0a\x09aStream\x0a\x09\x09write: '!';\x0a\x09\x09print: aCategory theClass;\x0a\x09\x09write: ' methodsFor: ';\x0a\x09\x09print: aCategory;\x0a\x09\x09write: '!'",
  41310. referencedClasses: [],
  41311. //>>excludeEnd("ide");
  41312. pragmas: [],
  41313. messageSends: ["write:", "print:", "theClass"]
  41314. }, function ($methodClass){ return function (aCategory,aStream){
  41315. var self=this,$self=this;
  41316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41317. return $core.withContext(function($ctx1) {
  41318. //>>excludeEnd("ctx");
  41319. [$recv(aStream)._write_("!")
  41320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41321. ,$ctx1.sendIdx["write:"]=1
  41322. //>>excludeEnd("ctx");
  41323. ][0];
  41324. [$recv(aStream)._print_($recv(aCategory)._theClass())
  41325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41326. ,$ctx1.sendIdx["print:"]=1
  41327. //>>excludeEnd("ctx");
  41328. ][0];
  41329. [$recv(aStream)._write_(" methodsFor: ")
  41330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41331. ,$ctx1.sendIdx["write:"]=2
  41332. //>>excludeEnd("ctx");
  41333. ][0];
  41334. $recv(aStream)._print_(aCategory);
  41335. $recv(aStream)._write_("!");
  41336. return self;
  41337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41338. }, function($ctx1) {$ctx1.fill(self,"exportCategoryPrologueOf:on:",{aCategory:aCategory,aStream:aStream})});
  41339. //>>excludeEnd("ctx");
  41340. }; }),
  41341. $globals.ChunkExporter);
  41342. $core.addMethod(
  41343. $core.method({
  41344. selector: "exportDefinitionOf:on:",
  41345. protocol: "output",
  41346. //>>excludeStart("ide", pragmas.excludeIdeData);
  41347. args: ["aClass", "aStream"],
  41348. source: "exportDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09print: aClass superclass;\x0a\x09\x09write: ' subclass: ';\x0a\x09\x09printSymbol: aClass name;\x0a\x09\x09lf.\x0a\x09\x22aClass traitComposition\x0a\x09\x09ifNotEmpty: [ aStream tab; write: {'uses: '. aClass traitCompositionDefinition}; lf ].\x22\x0a\x09aStream\x0a\x09\x09tab;\x0a\x09\x09write: {'slots: {'. ('. ' join: (aClass instanceVariableNames collect: #symbolPrintString)). '}'};\x0a\x09\x09lf;\x0a\x09\x09tab;\x0a\x09\x09write: 'package: ';\x0a\x09\x09print: aClass category;\x0a\x09\x09write: '!';\x0a\x09\x09lf.\x0a\x09aClass comment ifNotEmpty: [ aStream\x0a\x09\x09write: '!'; print: aClass; write: ' commentStamp!'; lf;\x0a\x09\x09write: { self chunkEscape: aClass comment. '!' }; lf ].\x0a\x09aStream lf",
  41349. referencedClasses: [],
  41350. //>>excludeEnd("ide");
  41351. pragmas: [],
  41352. messageSends: ["print:", "superclass", "write:", "printSymbol:", "name", "lf", "tab", "join:", "collect:", "instanceVariableNames", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
  41353. }, function ($methodClass){ return function (aClass,aStream){
  41354. var self=this,$self=this;
  41355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41356. return $core.withContext(function($ctx1) {
  41357. //>>excludeEnd("ctx");
  41358. [$recv(aStream)._print_($recv(aClass)._superclass())
  41359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41360. ,$ctx1.sendIdx["print:"]=1
  41361. //>>excludeEnd("ctx");
  41362. ][0];
  41363. [$recv(aStream)._write_(" subclass: ")
  41364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41365. ,$ctx1.sendIdx["write:"]=1
  41366. //>>excludeEnd("ctx");
  41367. ][0];
  41368. $recv(aStream)._printSymbol_($recv(aClass)._name());
  41369. [$recv(aStream)._lf()
  41370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41371. ,$ctx1.sendIdx["lf"]=1
  41372. //>>excludeEnd("ctx");
  41373. ][0];
  41374. [$recv(aStream)._tab()
  41375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41376. ,$ctx1.sendIdx["tab"]=1
  41377. //>>excludeEnd("ctx");
  41378. ][0];
  41379. [$recv(aStream)._write_(["slots: {",". "._join_($recv($recv(aClass)._instanceVariableNames())._collect_("symbolPrintString")),"}"])
  41380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41381. ,$ctx1.sendIdx["write:"]=2
  41382. //>>excludeEnd("ctx");
  41383. ][0];
  41384. [$recv(aStream)._lf()
  41385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41386. ,$ctx1.sendIdx["lf"]=2
  41387. //>>excludeEnd("ctx");
  41388. ][0];
  41389. $recv(aStream)._tab();
  41390. [$recv(aStream)._write_("package: ")
  41391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41392. ,$ctx1.sendIdx["write:"]=3
  41393. //>>excludeEnd("ctx");
  41394. ][0];
  41395. [$recv(aStream)._print_($recv(aClass)._category())
  41396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41397. ,$ctx1.sendIdx["print:"]=2
  41398. //>>excludeEnd("ctx");
  41399. ][0];
  41400. [$recv(aStream)._write_("!")
  41401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41402. ,$ctx1.sendIdx["write:"]=4
  41403. //>>excludeEnd("ctx");
  41404. ][0];
  41405. [$recv(aStream)._lf()
  41406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41407. ,$ctx1.sendIdx["lf"]=3
  41408. //>>excludeEnd("ctx");
  41409. ][0];
  41410. $recv([$recv(aClass)._comment()
  41411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41412. ,$ctx1.sendIdx["comment"]=1
  41413. //>>excludeEnd("ctx");
  41414. ][0])._ifNotEmpty_((function(){
  41415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41416. return $core.withContext(function($ctx2) {
  41417. //>>excludeEnd("ctx");
  41418. [$recv(aStream)._write_("!")
  41419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41420. ,$ctx2.sendIdx["write:"]=5
  41421. //>>excludeEnd("ctx");
  41422. ][0];
  41423. $recv(aStream)._print_(aClass);
  41424. [$recv(aStream)._write_(" commentStamp!")
  41425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41426. ,$ctx2.sendIdx["write:"]=6
  41427. //>>excludeEnd("ctx");
  41428. ][0];
  41429. [$recv(aStream)._lf()
  41430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41431. ,$ctx2.sendIdx["lf"]=4
  41432. //>>excludeEnd("ctx");
  41433. ][0];
  41434. $recv(aStream)._write_([$self._chunkEscape_($recv(aClass)._comment()),"!"]);
  41435. return [$recv(aStream)._lf()
  41436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41437. ,$ctx2.sendIdx["lf"]=5
  41438. //>>excludeEnd("ctx");
  41439. ][0];
  41440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41441. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  41442. //>>excludeEnd("ctx");
  41443. }));
  41444. $recv(aStream)._lf();
  41445. return self;
  41446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41447. }, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
  41448. //>>excludeEnd("ctx");
  41449. }; }),
  41450. $globals.ChunkExporter);
  41451. $core.addMethod(
  41452. $core.method({
  41453. selector: "exportMetaDefinitionOf:on:",
  41454. protocol: "output",
  41455. //>>excludeStart("ide", pragmas.excludeIdeData);
  41456. args: ["aClass", "aStream"],
  41457. source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09| classIvars classTraitComposition |\x0a\x09classIvars := aClass class instanceVariableNames.\x0a\x09classTraitComposition := aClass class traitComposition.\x0a\x0a\x09(classIvars notEmpty \x22or: [classTraitComposition notEmpty]\x22) ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09\x09print: aClass theMetaClass.\x0a\x09\x09aStream space. \x22classTraitComposition\x0a\x09\x09\x09ifEmpty: [ aStream space ]\x0a\x09\x09\x09ifNotEmpty: [ aStream lf; tab; write: {'uses: '. aClass class traitCompositionDefinition}; lf; tab ].\x22\x0a\x09\x09aStream\x0a\x09\x09\x09write: {'slots: {'. ('. ' join: (classIvars collect: #symbolPrintString)). '}!'}; lf; lf ]",
  41458. referencedClasses: [],
  41459. //>>excludeEnd("ide");
  41460. pragmas: [],
  41461. messageSends: ["instanceVariableNames", "class", "traitComposition", "ifTrue:", "notEmpty", "print:", "theMetaClass", "space", "write:", "join:", "collect:", "lf"]
  41462. }, function ($methodClass){ return function (aClass,aStream){
  41463. var self=this,$self=this;
  41464. var classIvars,classTraitComposition;
  41465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41466. return $core.withContext(function($ctx1) {
  41467. //>>excludeEnd("ctx");
  41468. classIvars=$recv([$recv(aClass)._class()
  41469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41470. ,$ctx1.sendIdx["class"]=1
  41471. //>>excludeEnd("ctx");
  41472. ][0])._instanceVariableNames();
  41473. classTraitComposition=$recv($recv(aClass)._class())._traitComposition();
  41474. if($core.assert($recv(classIvars)._notEmpty())){
  41475. $recv(aStream)._print_($recv(aClass)._theMetaClass());
  41476. $recv(aStream)._space();
  41477. $recv(aStream)._write_(["slots: {",". "._join_($recv(classIvars)._collect_("symbolPrintString")),"}!"]);
  41478. [$recv(aStream)._lf()
  41479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41480. ,$ctx1.sendIdx["lf"]=1
  41481. //>>excludeEnd("ctx");
  41482. ][0];
  41483. $recv(aStream)._lf();
  41484. }
  41485. return self;
  41486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41487. }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream,classIvars:classIvars,classTraitComposition:classTraitComposition})});
  41488. //>>excludeEnd("ctx");
  41489. }; }),
  41490. $globals.ChunkExporter);
  41491. $core.addMethod(
  41492. $core.method({
  41493. selector: "exportMethod:on:",
  41494. protocol: "output",
  41495. //>>excludeStart("ide", pragmas.excludeIdeData);
  41496. args: ["aMethod", "aStream"],
  41497. source: "exportMethod: aMethod on: aStream\x0a\x09aStream\x0a\x09\x09lf; lf; write: (self chunkEscape: aMethod source); lf;\x0a\x09\x09write: '!'",
  41498. referencedClasses: [],
  41499. //>>excludeEnd("ide");
  41500. pragmas: [],
  41501. messageSends: ["lf", "write:", "chunkEscape:", "source"]
  41502. }, function ($methodClass){ return function (aMethod,aStream){
  41503. var self=this,$self=this;
  41504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41505. return $core.withContext(function($ctx1) {
  41506. //>>excludeEnd("ctx");
  41507. [$recv(aStream)._lf()
  41508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41509. ,$ctx1.sendIdx["lf"]=1
  41510. //>>excludeEnd("ctx");
  41511. ][0];
  41512. [$recv(aStream)._lf()
  41513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41514. ,$ctx1.sendIdx["lf"]=2
  41515. //>>excludeEnd("ctx");
  41516. ][0];
  41517. [$recv(aStream)._write_($self._chunkEscape_($recv(aMethod)._source()))
  41518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41519. ,$ctx1.sendIdx["write:"]=1
  41520. //>>excludeEnd("ctx");
  41521. ][0];
  41522. $recv(aStream)._lf();
  41523. $recv(aStream)._write_("!");
  41524. return self;
  41525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41526. }, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream})});
  41527. //>>excludeEnd("ctx");
  41528. }; }),
  41529. $globals.ChunkExporter);
  41530. $core.addMethod(
  41531. $core.method({
  41532. selector: "exportPackage:on:",
  41533. protocol: "output",
  41534. //>>excludeStart("ide", pragmas.excludeIdeData);
  41535. args: ["aPackage", "aStream"],
  41536. source: "exportPackage: aPackage on: aStream\x0a\x0a\x09self\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :eachClass | eachClass includingPossibleMetaDo: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream ] ].\x0a\x09\x0a\x09self exportPackageTraitCompositionsOf: aPackage on: aStream.\x0a\x0a\x09self \x0a\x09\x09exportProtocols: (self extensionProtocolsOfPackage: aPackage)\x0a\x09\x09on: aStream",
  41537. referencedClasses: [],
  41538. //>>excludeEnd("ide");
  41539. pragmas: [],
  41540. messageSends: ["exportPackageDefinitionOf:on:", "exportPackageImportsOf:on:", "do:", "sortedClasses", "includingPossibleMetaDo:", "exportBehavior:on:", "exportPackageTraitCompositionsOf:on:", "exportProtocols:on:", "extensionProtocolsOfPackage:"]
  41541. }, function ($methodClass){ return function (aPackage,aStream){
  41542. var self=this,$self=this;
  41543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41544. return $core.withContext(function($ctx1) {
  41545. //>>excludeEnd("ctx");
  41546. $self._exportPackageDefinitionOf_on_(aPackage,aStream);
  41547. $self._exportPackageImportsOf_on_(aPackage,aStream);
  41548. $recv($recv(aPackage)._sortedClasses())._do_((function(eachClass){
  41549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41550. return $core.withContext(function($ctx2) {
  41551. //>>excludeEnd("ctx");
  41552. return $recv(eachClass)._includingPossibleMetaDo_((function(each){
  41553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41554. return $core.withContext(function($ctx3) {
  41555. //>>excludeEnd("ctx");
  41556. return $self._exportBehavior_on_(each,aStream);
  41557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41558. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  41559. //>>excludeEnd("ctx");
  41560. }));
  41561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41562. }, function($ctx2) {$ctx2.fillBlock({eachClass:eachClass},$ctx1,1)});
  41563. //>>excludeEnd("ctx");
  41564. }));
  41565. $self._exportPackageTraitCompositionsOf_on_(aPackage,aStream);
  41566. $self._exportProtocols_on_($self._extensionProtocolsOfPackage_(aPackage),aStream);
  41567. return self;
  41568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41569. }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream})});
  41570. //>>excludeEnd("ctx");
  41571. }; }),
  41572. $globals.ChunkExporter);
  41573. $core.addMethod(
  41574. $core.method({
  41575. selector: "exportPackageDefinitionOf:on:",
  41576. protocol: "output",
  41577. //>>excludeStart("ide", pragmas.excludeIdeData);
  41578. args: ["aPackage", "aStream"],
  41579. source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: 'Smalltalk createPackage: ';\x0a\x09\x09print: aPackage name;\x0a\x09\x09write: '!';\x0a\x09\x09lf",
  41580. referencedClasses: [],
  41581. //>>excludeEnd("ide");
  41582. pragmas: [],
  41583. messageSends: ["write:", "print:", "name", "lf"]
  41584. }, function ($methodClass){ return function (aPackage,aStream){
  41585. var self=this,$self=this;
  41586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41587. return $core.withContext(function($ctx1) {
  41588. //>>excludeEnd("ctx");
  41589. [$recv(aStream)._write_("Smalltalk createPackage: ")
  41590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41591. ,$ctx1.sendIdx["write:"]=1
  41592. //>>excludeEnd("ctx");
  41593. ][0];
  41594. $recv(aStream)._print_($recv(aPackage)._name());
  41595. $recv(aStream)._write_("!");
  41596. $recv(aStream)._lf();
  41597. return self;
  41598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41599. }, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream})});
  41600. //>>excludeEnd("ctx");
  41601. }; }),
  41602. $globals.ChunkExporter);
  41603. $core.addMethod(
  41604. $core.method({
  41605. selector: "exportPackageImportsOf:on:",
  41606. protocol: "output",
  41607. //>>excludeStart("ide", pragmas.excludeIdeData);
  41608. args: ["aPackage", "aStream"],
  41609. source: "exportPackageImportsOf: aPackage on: aStream\x0a\x09aPackage imports ifNotEmpty: [ :imports | aStream\x0a\x09\x09write: '(Smalltalk packageAt: ';\x0a\x09\x09print: aPackage name;\x0a\x09\x09write: ' ifAbsent: [ self error: ';\x0a\x09\x09print: 'Package not created: ', aPackage name;\x0a\x09\x09write: { ' ]) imports: '. self chunkEscape: aPackage importsDefinition. '!' };\x0a\x09\x09lf ]",
  41610. referencedClasses: [],
  41611. //>>excludeEnd("ide");
  41612. pragmas: [],
  41613. messageSends: ["ifNotEmpty:", "imports", "write:", "print:", "name", ",", "chunkEscape:", "importsDefinition", "lf"]
  41614. }, function ($methodClass){ return function (aPackage,aStream){
  41615. var self=this,$self=this;
  41616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41617. return $core.withContext(function($ctx1) {
  41618. //>>excludeEnd("ctx");
  41619. $recv($recv(aPackage)._imports())._ifNotEmpty_((function(imports){
  41620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41621. return $core.withContext(function($ctx2) {
  41622. //>>excludeEnd("ctx");
  41623. [$recv(aStream)._write_("(Smalltalk packageAt: ")
  41624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41625. ,$ctx2.sendIdx["write:"]=1
  41626. //>>excludeEnd("ctx");
  41627. ][0];
  41628. [$recv(aStream)._print_([$recv(aPackage)._name()
  41629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41630. ,$ctx2.sendIdx["name"]=1
  41631. //>>excludeEnd("ctx");
  41632. ][0])
  41633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41634. ,$ctx2.sendIdx["print:"]=1
  41635. //>>excludeEnd("ctx");
  41636. ][0];
  41637. [$recv(aStream)._write_(" ifAbsent: [ self error: ")
  41638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41639. ,$ctx2.sendIdx["write:"]=2
  41640. //>>excludeEnd("ctx");
  41641. ][0];
  41642. $recv(aStream)._print_("Package not created: ".__comma($recv(aPackage)._name()));
  41643. $recv(aStream)._write_([" ]) imports: ",$self._chunkEscape_($recv(aPackage)._importsDefinition()),"!"]);
  41644. return $recv(aStream)._lf();
  41645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41646. }, function($ctx2) {$ctx2.fillBlock({imports:imports},$ctx1,1)});
  41647. //>>excludeEnd("ctx");
  41648. }));
  41649. return self;
  41650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41651. }, function($ctx1) {$ctx1.fill(self,"exportPackageImportsOf:on:",{aPackage:aPackage,aStream:aStream})});
  41652. //>>excludeEnd("ctx");
  41653. }; }),
  41654. $globals.ChunkExporter);
  41655. $core.addMethod(
  41656. $core.method({
  41657. selector: "exportPackageTraitCompositionsOf:on:",
  41658. protocol: "output",
  41659. //>>excludeStart("ide", pragmas.excludeIdeData);
  41660. args: ["aPackage", "aStream"],
  41661. source: "exportPackageTraitCompositionsOf: aPackage on: aStream\x0a\x09aPackage traitCompositions ifNotEmpty: [ :traitCompositions |\x0a\x09\x09traitCompositions keysAndValuesDo: [ :key :value | self exportTraitComposition: value of: key on: aStream ].\x0a\x09\x09aStream write: '! !'; lf; lf ]",
  41662. referencedClasses: [],
  41663. //>>excludeEnd("ide");
  41664. pragmas: [],
  41665. messageSends: ["ifNotEmpty:", "traitCompositions", "keysAndValuesDo:", "exportTraitComposition:of:on:", "write:", "lf"]
  41666. }, function ($methodClass){ return function (aPackage,aStream){
  41667. var self=this,$self=this;
  41668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41669. return $core.withContext(function($ctx1) {
  41670. //>>excludeEnd("ctx");
  41671. $recv($recv(aPackage)._traitCompositions())._ifNotEmpty_((function(traitCompositions){
  41672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41673. return $core.withContext(function($ctx2) {
  41674. //>>excludeEnd("ctx");
  41675. $recv(traitCompositions)._keysAndValuesDo_((function(key,value){
  41676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41677. return $core.withContext(function($ctx3) {
  41678. //>>excludeEnd("ctx");
  41679. return $self._exportTraitComposition_of_on_(value,key,aStream);
  41680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41681. }, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,2)});
  41682. //>>excludeEnd("ctx");
  41683. }));
  41684. $recv(aStream)._write_("! !");
  41685. [$recv(aStream)._lf()
  41686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41687. ,$ctx2.sendIdx["lf"]=1
  41688. //>>excludeEnd("ctx");
  41689. ][0];
  41690. return $recv(aStream)._lf();
  41691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41692. }, function($ctx2) {$ctx2.fillBlock({traitCompositions:traitCompositions},$ctx1,1)});
  41693. //>>excludeEnd("ctx");
  41694. }));
  41695. return self;
  41696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41697. }, function($ctx1) {$ctx1.fill(self,"exportPackageTraitCompositionsOf:on:",{aPackage:aPackage,aStream:aStream})});
  41698. //>>excludeEnd("ctx");
  41699. }; }),
  41700. $globals.ChunkExporter);
  41701. $core.addMethod(
  41702. $core.method({
  41703. selector: "exportProtocol:on:",
  41704. protocol: "output",
  41705. //>>excludeStart("ide", pragmas.excludeIdeData);
  41706. args: ["aProtocol", "aStream"],
  41707. source: "exportProtocol: aProtocol on: aStream\x0a\x09aProtocol ownMethods ifNotEmpty: [ :methods |\x0a\x09\x09self exportProtocolPrologueOf: aProtocol on: aStream.\x0a\x09\x09methods do: [ :method | \x0a\x09\x09\x09self exportMethod: method on: aStream ].\x0a\x09\x09self exportProtocolEpilogueOf: aProtocol on: aStream ]",
  41708. referencedClasses: [],
  41709. //>>excludeEnd("ide");
  41710. pragmas: [],
  41711. messageSends: ["ifNotEmpty:", "ownMethods", "exportProtocolPrologueOf:on:", "do:", "exportMethod:on:", "exportProtocolEpilogueOf:on:"]
  41712. }, function ($methodClass){ return function (aProtocol,aStream){
  41713. var self=this,$self=this;
  41714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41715. return $core.withContext(function($ctx1) {
  41716. //>>excludeEnd("ctx");
  41717. $recv($recv(aProtocol)._ownMethods())._ifNotEmpty_((function(methods){
  41718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41719. return $core.withContext(function($ctx2) {
  41720. //>>excludeEnd("ctx");
  41721. $self._exportProtocolPrologueOf_on_(aProtocol,aStream);
  41722. $recv(methods)._do_((function(method){
  41723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41724. return $core.withContext(function($ctx3) {
  41725. //>>excludeEnd("ctx");
  41726. return $self._exportMethod_on_(method,aStream);
  41727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41728. }, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2,2)});
  41729. //>>excludeEnd("ctx");
  41730. }));
  41731. return $self._exportProtocolEpilogueOf_on_(aProtocol,aStream);
  41732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41733. }, function($ctx2) {$ctx2.fillBlock({methods:methods},$ctx1,1)});
  41734. //>>excludeEnd("ctx");
  41735. }));
  41736. return self;
  41737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41738. }, function($ctx1) {$ctx1.fill(self,"exportProtocol:on:",{aProtocol:aProtocol,aStream:aStream})});
  41739. //>>excludeEnd("ctx");
  41740. }; }),
  41741. $globals.ChunkExporter);
  41742. $core.addMethod(
  41743. $core.method({
  41744. selector: "exportProtocolEpilogueOf:on:",
  41745. protocol: "output",
  41746. //>>excludeStart("ide", pragmas.excludeIdeData);
  41747. args: ["aProtocol", "aStream"],
  41748. source: "exportProtocolEpilogueOf: aProtocol on: aStream\x0a\x09aStream write: ' !'; lf; lf",
  41749. referencedClasses: [],
  41750. //>>excludeEnd("ide");
  41751. pragmas: [],
  41752. messageSends: ["write:", "lf"]
  41753. }, function ($methodClass){ return function (aProtocol,aStream){
  41754. var self=this,$self=this;
  41755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41756. return $core.withContext(function($ctx1) {
  41757. //>>excludeEnd("ctx");
  41758. $recv(aStream)._write_(" !");
  41759. [$recv(aStream)._lf()
  41760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41761. ,$ctx1.sendIdx["lf"]=1
  41762. //>>excludeEnd("ctx");
  41763. ][0];
  41764. $recv(aStream)._lf();
  41765. return self;
  41766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41767. }, function($ctx1) {$ctx1.fill(self,"exportProtocolEpilogueOf:on:",{aProtocol:aProtocol,aStream:aStream})});
  41768. //>>excludeEnd("ctx");
  41769. }; }),
  41770. $globals.ChunkExporter);
  41771. $core.addMethod(
  41772. $core.method({
  41773. selector: "exportProtocolPrologueOf:on:",
  41774. protocol: "output",
  41775. //>>excludeStart("ide", pragmas.excludeIdeData);
  41776. args: ["aProtocol", "aStream"],
  41777. source: "exportProtocolPrologueOf: aProtocol on: aStream\x0a\x09aStream\x0a\x09\x09write: '!';\x0a\x09\x09print: aProtocol theClass;\x0a\x09\x09write: ' methodsFor: ';\x0a\x09\x09print: aProtocol name;\x0a\x09\x09write: '!'",
  41778. referencedClasses: [],
  41779. //>>excludeEnd("ide");
  41780. pragmas: [],
  41781. messageSends: ["write:", "print:", "theClass", "name"]
  41782. }, function ($methodClass){ return function (aProtocol,aStream){
  41783. var self=this,$self=this;
  41784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41785. return $core.withContext(function($ctx1) {
  41786. //>>excludeEnd("ctx");
  41787. [$recv(aStream)._write_("!")
  41788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41789. ,$ctx1.sendIdx["write:"]=1
  41790. //>>excludeEnd("ctx");
  41791. ][0];
  41792. [$recv(aStream)._print_($recv(aProtocol)._theClass())
  41793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41794. ,$ctx1.sendIdx["print:"]=1
  41795. //>>excludeEnd("ctx");
  41796. ][0];
  41797. [$recv(aStream)._write_(" methodsFor: ")
  41798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41799. ,$ctx1.sendIdx["write:"]=2
  41800. //>>excludeEnd("ctx");
  41801. ][0];
  41802. $recv(aStream)._print_($recv(aProtocol)._name());
  41803. $recv(aStream)._write_("!");
  41804. return self;
  41805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41806. }, function($ctx1) {$ctx1.fill(self,"exportProtocolPrologueOf:on:",{aProtocol:aProtocol,aStream:aStream})});
  41807. //>>excludeEnd("ctx");
  41808. }; }),
  41809. $globals.ChunkExporter);
  41810. $core.addMethod(
  41811. $core.method({
  41812. selector: "exportProtocols:on:",
  41813. protocol: "output",
  41814. //>>excludeStart("ide", pragmas.excludeIdeData);
  41815. args: ["aCollection", "aStream"],
  41816. source: "exportProtocols: aCollection on: aStream\x0a\x09aCollection do: [ :each |\x0a\x09\x09self exportProtocol: each on: aStream ]",
  41817. referencedClasses: [],
  41818. //>>excludeEnd("ide");
  41819. pragmas: [],
  41820. messageSends: ["do:", "exportProtocol:on:"]
  41821. }, function ($methodClass){ return function (aCollection,aStream){
  41822. var self=this,$self=this;
  41823. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41824. return $core.withContext(function($ctx1) {
  41825. //>>excludeEnd("ctx");
  41826. $recv(aCollection)._do_((function(each){
  41827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41828. return $core.withContext(function($ctx2) {
  41829. //>>excludeEnd("ctx");
  41830. return $self._exportProtocol_on_(each,aStream);
  41831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41832. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  41833. //>>excludeEnd("ctx");
  41834. }));
  41835. return self;
  41836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41837. }, function($ctx1) {$ctx1.fill(self,"exportProtocols:on:",{aCollection:aCollection,aStream:aStream})});
  41838. //>>excludeEnd("ctx");
  41839. }; }),
  41840. $globals.ChunkExporter);
  41841. $core.addMethod(
  41842. $core.method({
  41843. selector: "exportTraitComposition:of:on:",
  41844. protocol: "output",
  41845. //>>excludeStart("ide", pragmas.excludeIdeData);
  41846. args: ["aTraitComposition", "aBehavior", "aStream"],
  41847. source: "exportTraitComposition: aTraitComposition of: aBehavior on: aStream\x0a\x09aStream \x0a\x09\x09print: aBehavior;\x0a\x09\x09write: ' setTraitComposition: ';\x0a\x09\x09write: aBehavior traitCompositionDefinition;\x0a\x09\x09write: ' asTraitComposition!';\x0a\x09\x09lf",
  41848. referencedClasses: [],
  41849. //>>excludeEnd("ide");
  41850. pragmas: [],
  41851. messageSends: ["print:", "write:", "traitCompositionDefinition", "lf"]
  41852. }, function ($methodClass){ return function (aTraitComposition,aBehavior,aStream){
  41853. var self=this,$self=this;
  41854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41855. return $core.withContext(function($ctx1) {
  41856. //>>excludeEnd("ctx");
  41857. $recv(aStream)._print_(aBehavior);
  41858. [$recv(aStream)._write_(" setTraitComposition: ")
  41859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41860. ,$ctx1.sendIdx["write:"]=1
  41861. //>>excludeEnd("ctx");
  41862. ][0];
  41863. [$recv(aStream)._write_($recv(aBehavior)._traitCompositionDefinition())
  41864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41865. ,$ctx1.sendIdx["write:"]=2
  41866. //>>excludeEnd("ctx");
  41867. ][0];
  41868. $recv(aStream)._write_(" asTraitComposition!");
  41869. $recv(aStream)._lf();
  41870. return self;
  41871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41872. }, function($ctx1) {$ctx1.fill(self,"exportTraitComposition:of:on:",{aTraitComposition:aTraitComposition,aBehavior:aBehavior,aStream:aStream})});
  41873. //>>excludeEnd("ctx");
  41874. }; }),
  41875. $globals.ChunkExporter);
  41876. $core.addMethod(
  41877. $core.method({
  41878. selector: "exportTraitDefinitionOf:on:",
  41879. protocol: "output",
  41880. //>>excludeStart("ide", pragmas.excludeIdeData);
  41881. args: ["aClass", "aStream"],
  41882. source: "exportTraitDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09write: 'Trait named: '; printSymbol: aClass name; lf.\x0a\x09\x22aClass traitComposition\x0a\x09\x09ifNotEmpty: [ aStream tab; write: {'uses: '. aClass traitCompositionDefinition}; lf ].\x22\x0a\x09aStream\x0a\x09\x09tab; write: 'package: '; print:\x09aClass category; write: '!'; lf.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09write: '!'; print: aClass; write: ' commentStamp!'; lf;\x0a\x09\x09write: { self chunkEscape: aClass comment. '!' }; lf ].\x0a\x09aStream lf",
  41883. referencedClasses: [],
  41884. //>>excludeEnd("ide");
  41885. pragmas: [],
  41886. messageSends: ["write:", "printSymbol:", "name", "lf", "tab", "print:", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
  41887. }, function ($methodClass){ return function (aClass,aStream){
  41888. var self=this,$self=this;
  41889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41890. return $core.withContext(function($ctx1) {
  41891. //>>excludeEnd("ctx");
  41892. [$recv(aStream)._write_("Trait named: ")
  41893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41894. ,$ctx1.sendIdx["write:"]=1
  41895. //>>excludeEnd("ctx");
  41896. ][0];
  41897. $recv(aStream)._printSymbol_($recv(aClass)._name());
  41898. [$recv(aStream)._lf()
  41899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41900. ,$ctx1.sendIdx["lf"]=1
  41901. //>>excludeEnd("ctx");
  41902. ][0];
  41903. $recv(aStream)._tab();
  41904. [$recv(aStream)._write_("package: ")
  41905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41906. ,$ctx1.sendIdx["write:"]=2
  41907. //>>excludeEnd("ctx");
  41908. ][0];
  41909. [$recv(aStream)._print_($recv(aClass)._category())
  41910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41911. ,$ctx1.sendIdx["print:"]=1
  41912. //>>excludeEnd("ctx");
  41913. ][0];
  41914. [$recv(aStream)._write_("!")
  41915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41916. ,$ctx1.sendIdx["write:"]=3
  41917. //>>excludeEnd("ctx");
  41918. ][0];
  41919. [$recv(aStream)._lf()
  41920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41921. ,$ctx1.sendIdx["lf"]=2
  41922. //>>excludeEnd("ctx");
  41923. ][0];
  41924. $recv([$recv(aClass)._comment()
  41925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41926. ,$ctx1.sendIdx["comment"]=1
  41927. //>>excludeEnd("ctx");
  41928. ][0])._ifNotEmpty_((function(){
  41929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41930. return $core.withContext(function($ctx2) {
  41931. //>>excludeEnd("ctx");
  41932. [$recv(aStream)._write_("!")
  41933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41934. ,$ctx2.sendIdx["write:"]=4
  41935. //>>excludeEnd("ctx");
  41936. ][0];
  41937. $recv(aStream)._print_(aClass);
  41938. [$recv(aStream)._write_(" commentStamp!")
  41939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41940. ,$ctx2.sendIdx["write:"]=5
  41941. //>>excludeEnd("ctx");
  41942. ][0];
  41943. [$recv(aStream)._lf()
  41944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41945. ,$ctx2.sendIdx["lf"]=3
  41946. //>>excludeEnd("ctx");
  41947. ][0];
  41948. $recv(aStream)._write_([$self._chunkEscape_($recv(aClass)._comment()),"!"]);
  41949. return [$recv(aStream)._lf()
  41950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41951. ,$ctx2.sendIdx["lf"]=4
  41952. //>>excludeEnd("ctx");
  41953. ][0];
  41954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41955. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  41956. //>>excludeEnd("ctx");
  41957. }));
  41958. $recv(aStream)._lf();
  41959. return self;
  41960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41961. }, function($ctx1) {$ctx1.fill(self,"exportTraitDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
  41962. //>>excludeEnd("ctx");
  41963. }; }),
  41964. $globals.ChunkExporter);
  41965. $core.addMethod(
  41966. $core.method({
  41967. selector: "extensionCategoriesOfPackage:",
  41968. protocol: "accessing",
  41969. //>>excludeStart("ide", pragmas.excludeIdeData);
  41970. args: ["aPackage"],
  41971. source: "extensionCategoriesOfPackage: aPackage\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| name map result |\x0a\x09name := aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09(Package sortedClasses: Smalltalk classes) do: [ :each |\x0a\x09\x09each includingPossibleMetaDo: [ :aClass |\x0a\x09\x09\x09map := Dictionary new.\x0a\x09\x09\x09aClass protocolsDo: [ :category :methods |\x0a\x09\x09\x09\x09category = ('*', name) ifTrue: [ map at: category put: methods ] ].\x0a\x09\x09\x09result addAll: ((map keys sorted: [ :a :b | a <= b ]) collect: [ :category |\x0a\x09\x09\x09\x09MethodCategory name: category theClass: aClass methods: (map at: category) ]) ] ].\x0a\x09^ result",
  41972. referencedClasses: ["OrderedCollection", "Package", "Smalltalk", "Dictionary", "MethodCategory"],
  41973. //>>excludeEnd("ide");
  41974. pragmas: [],
  41975. messageSends: ["name", "new", "do:", "sortedClasses:", "classes", "includingPossibleMetaDo:", "protocolsDo:", "ifTrue:", "=", ",", "at:put:", "addAll:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"]
  41976. }, function ($methodClass){ return function (aPackage){
  41977. var self=this,$self=this;
  41978. var name,map,result;
  41979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41980. return $core.withContext(function($ctx1) {
  41981. //>>excludeEnd("ctx");
  41982. name=$recv(aPackage)._name();
  41983. result=[$recv($globals.OrderedCollection)._new()
  41984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41985. ,$ctx1.sendIdx["new"]=1
  41986. //>>excludeEnd("ctx");
  41987. ][0];
  41988. $recv($recv($globals.Package)._sortedClasses_($recv($globals.Smalltalk)._classes()))._do_((function(each){
  41989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41990. return $core.withContext(function($ctx2) {
  41991. //>>excludeEnd("ctx");
  41992. return $recv(each)._includingPossibleMetaDo_((function(aClass){
  41993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41994. return $core.withContext(function($ctx3) {
  41995. //>>excludeEnd("ctx");
  41996. map=$recv($globals.Dictionary)._new();
  41997. $recv(aClass)._protocolsDo_((function(category,methods){
  41998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41999. return $core.withContext(function($ctx4) {
  42000. //>>excludeEnd("ctx");
  42001. if($core.assert($recv(category).__eq("*".__comma(name)))){
  42002. return $recv(map)._at_put_(category,methods);
  42003. }
  42004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42005. }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx3,3)});
  42006. //>>excludeEnd("ctx");
  42007. }));
  42008. return $recv(result)._addAll_($recv($recv($recv(map)._keys())._sorted_((function(a,b){
  42009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42010. return $core.withContext(function($ctx4) {
  42011. //>>excludeEnd("ctx");
  42012. return $recv(a).__lt_eq(b);
  42013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42014. }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx3,5)});
  42015. //>>excludeEnd("ctx");
  42016. })))._collect_((function(category){
  42017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42018. return $core.withContext(function($ctx4) {
  42019. //>>excludeEnd("ctx");
  42020. return $recv($globals.MethodCategory)._name_theClass_methods_(category,aClass,$recv(map)._at_(category));
  42021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42022. }, function($ctx4) {$ctx4.fillBlock({category:category},$ctx3,6)});
  42023. //>>excludeEnd("ctx");
  42024. })));
  42025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42026. }, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2,2)});
  42027. //>>excludeEnd("ctx");
  42028. }));
  42029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42030. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  42031. //>>excludeEnd("ctx");
  42032. }));
  42033. return result;
  42034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42035. }, function($ctx1) {$ctx1.fill(self,"extensionCategoriesOfPackage:",{aPackage:aPackage,name:name,map:map,result:result})});
  42036. //>>excludeEnd("ctx");
  42037. }; }),
  42038. $globals.ChunkExporter);
  42039. $core.addMethod(
  42040. $core.method({
  42041. selector: "ownCategoriesOfClass:",
  42042. protocol: "accessing",
  42043. //>>excludeStart("ide", pragmas.excludeIdeData);
  42044. args: ["aClass"],
  42045. source: "ownCategoriesOfClass: aClass\x0a\x09\x22Answer the protocols of aClass that are not package extensions\x22\x0a\x09\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| map |\x0a\x09map := Dictionary new.\x0a\x09aClass protocolsDo: [ :each :methods |\x0a\x09\x09(each match: '^\x5c*') ifFalse: [ map at: each put: methods ] ].\x0a\x09^ (map keys sorted: [ :a :b | a <= b ]) collect: [ :each |\x0a\x09\x09MethodCategory name: each theClass: aClass methods: (map at: each) ]",
  42046. referencedClasses: ["Dictionary", "MethodCategory"],
  42047. //>>excludeEnd("ide");
  42048. pragmas: [],
  42049. messageSends: ["new", "protocolsDo:", "ifFalse:", "match:", "at:put:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"]
  42050. }, function ($methodClass){ return function (aClass){
  42051. var self=this,$self=this;
  42052. var map;
  42053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42054. return $core.withContext(function($ctx1) {
  42055. //>>excludeEnd("ctx");
  42056. map=$recv($globals.Dictionary)._new();
  42057. $recv(aClass)._protocolsDo_((function(each,methods){
  42058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42059. return $core.withContext(function($ctx2) {
  42060. //>>excludeEnd("ctx");
  42061. if(!$core.assert($recv(each)._match_("^\x5c*"))){
  42062. return $recv(map)._at_put_(each,methods);
  42063. }
  42064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42065. }, function($ctx2) {$ctx2.fillBlock({each:each,methods:methods},$ctx1,1)});
  42066. //>>excludeEnd("ctx");
  42067. }));
  42068. return $recv($recv($recv(map)._keys())._sorted_((function(a,b){
  42069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42070. return $core.withContext(function($ctx2) {
  42071. //>>excludeEnd("ctx");
  42072. return $recv(a).__lt_eq(b);
  42073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42074. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)});
  42075. //>>excludeEnd("ctx");
  42076. })))._collect_((function(each){
  42077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42078. return $core.withContext(function($ctx2) {
  42079. //>>excludeEnd("ctx");
  42080. return $recv($globals.MethodCategory)._name_theClass_methods_(each,aClass,$recv(map)._at_(each));
  42081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42082. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  42083. //>>excludeEnd("ctx");
  42084. }));
  42085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42086. }, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfClass:",{aClass:aClass,map:map})});
  42087. //>>excludeEnd("ctx");
  42088. }; }),
  42089. $globals.ChunkExporter);
  42090. $core.addMethod(
  42091. $core.method({
  42092. selector: "ownCategoriesOfMetaClass:",
  42093. protocol: "accessing",
  42094. //>>excludeStart("ide", pragmas.excludeIdeData);
  42095. args: ["aClass"],
  42096. source: "ownCategoriesOfMetaClass: aClass\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09^ self ownCategoriesOfClass: aClass theMetaClass",
  42097. referencedClasses: [],
  42098. //>>excludeEnd("ide");
  42099. pragmas: [],
  42100. messageSends: ["ownCategoriesOfClass:", "theMetaClass"]
  42101. }, function ($methodClass){ return function (aClass){
  42102. var self=this,$self=this;
  42103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42104. return $core.withContext(function($ctx1) {
  42105. //>>excludeEnd("ctx");
  42106. return $self._ownCategoriesOfClass_($recv(aClass)._theMetaClass());
  42107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42108. }, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfMetaClass:",{aClass:aClass})});
  42109. //>>excludeEnd("ctx");
  42110. }; }),
  42111. $globals.ChunkExporter);
  42112. $core.addMethod(
  42113. $core.method({
  42114. selector: "ownMethodProtocolsOfClass:",
  42115. protocol: "accessing",
  42116. //>>excludeStart("ide", pragmas.excludeIdeData);
  42117. args: ["aClass"],
  42118. source: "ownMethodProtocolsOfClass: aClass\x0a\x09\x22Answer a collection of ExportMethodProtocol object of aClass that are not package extensions\x22\x0a\x09\x0a\x09^ aClass ownProtocols collect: [ :each |\x0a\x09\x09ExportMethodProtocol name: each theClass: aClass ]",
  42119. referencedClasses: ["ExportMethodProtocol"],
  42120. //>>excludeEnd("ide");
  42121. pragmas: [],
  42122. messageSends: ["collect:", "ownProtocols", "name:theClass:"]
  42123. }, function ($methodClass){ return function (aClass){
  42124. var self=this,$self=this;
  42125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42126. return $core.withContext(function($ctx1) {
  42127. //>>excludeEnd("ctx");
  42128. return $recv($recv(aClass)._ownProtocols())._collect_((function(each){
  42129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42130. return $core.withContext(function($ctx2) {
  42131. //>>excludeEnd("ctx");
  42132. return $recv($globals.ExportMethodProtocol)._name_theClass_(each,aClass);
  42133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42134. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  42135. //>>excludeEnd("ctx");
  42136. }));
  42137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42138. }, function($ctx1) {$ctx1.fill(self,"ownMethodProtocolsOfClass:",{aClass:aClass})});
  42139. //>>excludeEnd("ctx");
  42140. }; }),
  42141. $globals.ChunkExporter);
  42142. $core.addClass("Exporter", $globals.AbstractExporter, "Platform-ImportExport");
  42143. //>>excludeStart("ide", pragmas.excludeIdeData);
  42144. $globals.Exporter.comment="I am responsible for outputting Amber code into a JavaScript string.\x0a\x0aThe generated output is enough to reconstruct the exported data, including Smalltalk source code and other metadata.\x0a\x0a## Use case\x0a\x0aI am typically used to save code outside of the Amber runtime (committing to disk, etc.).";
  42145. //>>excludeEnd("ide");
  42146. $core.addMethod(
  42147. $core.method({
  42148. selector: "exportBehavior:on:",
  42149. protocol: "output",
  42150. //>>excludeStart("ide", pragmas.excludeIdeData);
  42151. args: ["aBehavior", "aStream"],
  42152. source: "exportBehavior: aBehavior on: aStream\x0a\x09aBehavior exportBehaviorDefinitionTo: aStream using: self.\x0a\x09aBehavior ownMethods do: [ :method |\x0a\x09\x09self exportMethod: method on: aStream ]",
  42153. referencedClasses: [],
  42154. //>>excludeEnd("ide");
  42155. pragmas: [],
  42156. messageSends: ["exportBehaviorDefinitionTo:using:", "do:", "ownMethods", "exportMethod:on:"]
  42157. }, function ($methodClass){ return function (aBehavior,aStream){
  42158. var self=this,$self=this;
  42159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42160. return $core.withContext(function($ctx1) {
  42161. //>>excludeEnd("ctx");
  42162. $recv(aBehavior)._exportBehaviorDefinitionTo_using_(aStream,self);
  42163. $recv($recv(aBehavior)._ownMethods())._do_((function(method){
  42164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42165. return $core.withContext(function($ctx2) {
  42166. //>>excludeEnd("ctx");
  42167. return $self._exportMethod_on_(method,aStream);
  42168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42169. }, function($ctx2) {$ctx2.fillBlock({method:method},$ctx1,1)});
  42170. //>>excludeEnd("ctx");
  42171. }));
  42172. return self;
  42173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42174. }, function($ctx1) {$ctx1.fill(self,"exportBehavior:on:",{aBehavior:aBehavior,aStream:aStream})});
  42175. //>>excludeEnd("ctx");
  42176. }; }),
  42177. $globals.Exporter);
  42178. $core.addMethod(
  42179. $core.method({
  42180. selector: "exportDefinitionOf:on:",
  42181. protocol: "output",
  42182. //>>excludeStart("ide", pragmas.excludeIdeData);
  42183. args: ["aClass", "aStream"],
  42184. source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09write: {\x0a\x09\x09\x09'$core.addClass('.\x0a\x09\x09\x09aClass name asJavaScriptSource. ', '.\x0a\x09\x09\x09aClass superclass ifNil: [ 'null' ] ifNotNil: [ :superclass | superclass asJavaScriptSource ]. ', '.\x0a\x09\x09\x09aClass category asJavaScriptSource.\x0a\x09\x09\x09');' };\x0a\x09\x09lf.\x0a\x09aClass instanceVariableNames ifNotEmpty: [ :ivars | aStream\x0a\x09\x09write: { '$core.setSlots('. aClass asJavaScriptSource. ', '. ivars asJavaScriptSource. ');' };\x0a\x09\x09lf ].\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09\x09write: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);'; lf;\x0a\x09\x09\x09write: { aClass asJavaScriptSource. '.comment='. aClass comment crlfSanitized asJavaScriptSource. ';' }; lf;\x0a\x09\x09\x09write: '//>>excludeEnd(\x22ide\x22);';\x0a\x09\x09\x09lf ]",
  42185. referencedClasses: [],
  42186. //>>excludeEnd("ide");
  42187. pragmas: [],
  42188. messageSends: ["lf", "write:", "asJavaScriptSource", "name", "ifNil:ifNotNil:", "superclass", "category", "ifNotEmpty:", "instanceVariableNames", "comment", "crlfSanitized"]
  42189. }, function ($methodClass){ return function (aClass,aStream){
  42190. var self=this,$self=this;
  42191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42192. return $core.withContext(function($ctx1) {
  42193. //>>excludeEnd("ctx");
  42194. var $1,$2,$3;
  42195. [$recv(aStream)._lf()
  42196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42197. ,$ctx1.sendIdx["lf"]=1
  42198. //>>excludeEnd("ctx");
  42199. ][0];
  42200. $1=[$recv($recv(aClass)._name())._asJavaScriptSource()
  42201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42202. ,$ctx1.sendIdx["asJavaScriptSource"]=1
  42203. //>>excludeEnd("ctx");
  42204. ][0];
  42205. $2=$recv(aClass)._superclass();
  42206. if($2 == null || $2.a$nil){
  42207. $3="null";
  42208. } else {
  42209. var superclass;
  42210. superclass=$2;
  42211. $3=[$recv(superclass)._asJavaScriptSource()
  42212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42213. ,$ctx1.sendIdx["asJavaScriptSource"]=2
  42214. //>>excludeEnd("ctx");
  42215. ][0];
  42216. }
  42217. [$recv(aStream)._write_(["$core.addClass(",$1,", ",$3,", ",[$recv($recv(aClass)._category())._asJavaScriptSource()
  42218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42219. ,$ctx1.sendIdx["asJavaScriptSource"]=3
  42220. //>>excludeEnd("ctx");
  42221. ][0],");"])
  42222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42223. ,$ctx1.sendIdx["write:"]=1
  42224. //>>excludeEnd("ctx");
  42225. ][0];
  42226. [$recv(aStream)._lf()
  42227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42228. ,$ctx1.sendIdx["lf"]=2
  42229. //>>excludeEnd("ctx");
  42230. ][0];
  42231. [$recv($recv(aClass)._instanceVariableNames())._ifNotEmpty_((function(ivars){
  42232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42233. return $core.withContext(function($ctx2) {
  42234. //>>excludeEnd("ctx");
  42235. [$recv(aStream)._write_(["$core.setSlots(",[$recv(aClass)._asJavaScriptSource()
  42236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42237. ,$ctx2.sendIdx["asJavaScriptSource"]=4
  42238. //>>excludeEnd("ctx");
  42239. ][0],", ",[$recv(ivars)._asJavaScriptSource()
  42240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42241. ,$ctx2.sendIdx["asJavaScriptSource"]=5
  42242. //>>excludeEnd("ctx");
  42243. ][0],");"])
  42244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42245. ,$ctx2.sendIdx["write:"]=2
  42246. //>>excludeEnd("ctx");
  42247. ][0];
  42248. return [$recv(aStream)._lf()
  42249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42250. ,$ctx2.sendIdx["lf"]=3
  42251. //>>excludeEnd("ctx");
  42252. ][0];
  42253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42254. }, function($ctx2) {$ctx2.fillBlock({ivars:ivars},$ctx1,3)});
  42255. //>>excludeEnd("ctx");
  42256. }))
  42257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42258. ,$ctx1.sendIdx["ifNotEmpty:"]=1
  42259. //>>excludeEnd("ctx");
  42260. ][0];
  42261. $recv([$recv(aClass)._comment()
  42262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42263. ,$ctx1.sendIdx["comment"]=1
  42264. //>>excludeEnd("ctx");
  42265. ][0])._ifNotEmpty_((function(){
  42266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42267. return $core.withContext(function($ctx2) {
  42268. //>>excludeEnd("ctx");
  42269. [$recv(aStream)._write_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);")
  42270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42271. ,$ctx2.sendIdx["write:"]=3
  42272. //>>excludeEnd("ctx");
  42273. ][0];
  42274. [$recv(aStream)._lf()
  42275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42276. ,$ctx2.sendIdx["lf"]=4
  42277. //>>excludeEnd("ctx");
  42278. ][0];
  42279. [$recv(aStream)._write_([[$recv(aClass)._asJavaScriptSource()
  42280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42281. ,$ctx2.sendIdx["asJavaScriptSource"]=6
  42282. //>>excludeEnd("ctx");
  42283. ][0],".comment=",$recv($recv($recv(aClass)._comment())._crlfSanitized())._asJavaScriptSource(),";"])
  42284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42285. ,$ctx2.sendIdx["write:"]=4
  42286. //>>excludeEnd("ctx");
  42287. ][0];
  42288. [$recv(aStream)._lf()
  42289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42290. ,$ctx2.sendIdx["lf"]=5
  42291. //>>excludeEnd("ctx");
  42292. ][0];
  42293. $recv(aStream)._write_("//>>excludeEnd(\x22ide\x22);");
  42294. return $recv(aStream)._lf();
  42295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42296. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  42297. //>>excludeEnd("ctx");
  42298. }));
  42299. return self;
  42300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42301. }, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
  42302. //>>excludeEnd("ctx");
  42303. }; }),
  42304. $globals.Exporter);
  42305. $core.addMethod(
  42306. $core.method({
  42307. selector: "exportMetaDefinitionOf:on:",
  42308. protocol: "output",
  42309. //>>excludeStart("ide", pragmas.excludeIdeData);
  42310. args: ["aClass", "aStream"],
  42311. source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x09aStream lf.\x0a\x09aClass theMetaClass instanceVariableNames ifNotEmpty: [ :classIvars | aStream\x0a\x09\x09write: { '$core.setSlots('. aClass theMetaClass asJavaScriptSource. ', '. classIvars asJavaScriptSource. ');' };\x0a\x09\x09lf ]",
  42312. referencedClasses: [],
  42313. //>>excludeEnd("ide");
  42314. pragmas: [],
  42315. messageSends: ["lf", "ifNotEmpty:", "instanceVariableNames", "theMetaClass", "write:", "asJavaScriptSource"]
  42316. }, function ($methodClass){ return function (aClass,aStream){
  42317. var self=this,$self=this;
  42318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42319. return $core.withContext(function($ctx1) {
  42320. //>>excludeEnd("ctx");
  42321. [$recv(aStream)._lf()
  42322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42323. ,$ctx1.sendIdx["lf"]=1
  42324. //>>excludeEnd("ctx");
  42325. ][0];
  42326. $recv($recv([$recv(aClass)._theMetaClass()
  42327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42328. ,$ctx1.sendIdx["theMetaClass"]=1
  42329. //>>excludeEnd("ctx");
  42330. ][0])._instanceVariableNames())._ifNotEmpty_((function(classIvars){
  42331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42332. return $core.withContext(function($ctx2) {
  42333. //>>excludeEnd("ctx");
  42334. $recv(aStream)._write_(["$core.setSlots(",[$recv($recv(aClass)._theMetaClass())._asJavaScriptSource()
  42335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42336. ,$ctx2.sendIdx["asJavaScriptSource"]=1
  42337. //>>excludeEnd("ctx");
  42338. ][0],", ",$recv(classIvars)._asJavaScriptSource(),");"]);
  42339. return $recv(aStream)._lf();
  42340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42341. }, function($ctx2) {$ctx2.fillBlock({classIvars:classIvars},$ctx1,1)});
  42342. //>>excludeEnd("ctx");
  42343. }));
  42344. return self;
  42345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42346. }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
  42347. //>>excludeEnd("ctx");
  42348. }; }),
  42349. $globals.Exporter);
  42350. $core.addMethod(
  42351. $core.method({
  42352. selector: "exportMethod:on:",
  42353. protocol: "output",
  42354. //>>excludeStart("ide", pragmas.excludeIdeData);
  42355. args: ["aMethod", "aStream"],
  42356. source: "exportMethod: aMethod on: aStream\x0a\x09aStream\x0a\x09\x09write: '$core.addMethod('; lf;\x0a\x09\x09write: '$core.method({'; lf;\x0a\x09\x09write: { 'selector: '. aMethod selector asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: { 'protocol: '. aMethod protocol asJavaScriptSource. ',' }; lf.\x0a\x09aMethod instantiateFn ifNil: [ aStream write: { 'fn: '. aMethod fn compiledSource. ',' }; lf ].\x0a\x09aStream\x0a\x09\x09write: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);'; lf;\x0a\x09\x09write: { 'args: '. aMethod arguments asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: { 'source: '. aMethod source asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: { 'referencedClasses: '. aMethod referencedClasses asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: '//>>excludeEnd(\x22ide\x22);'; lf;\x0a\x09\x09write: { 'pragmas: '. aMethod basicPragmas asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: { 'messageSends: '. aMethod messageSends asJavaScriptSource }; lf;\x0a\x09\x09write: '}'.\x0a\x09aMethod instantiateFn ifNotNil: [ :ifn | aStream write: { ', '. ifn compiledSource } ].\x0a\x09aStream\x0a\x09\x09write: '),'; lf;\x0a\x09\x09write: { aMethod origin asJavaScriptSource. ');' }; lf; lf",
  42357. referencedClasses: [],
  42358. //>>excludeEnd("ide");
  42359. pragmas: [],
  42360. messageSends: ["write:", "lf", "asJavaScriptSource", "selector", "protocol", "ifNil:", "instantiateFn", "compiledSource", "fn", "arguments", "source", "referencedClasses", "basicPragmas", "messageSends", "ifNotNil:", "origin"]
  42361. }, function ($methodClass){ return function (aMethod,aStream){
  42362. var self=this,$self=this;
  42363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42364. return $core.withContext(function($ctx1) {
  42365. //>>excludeEnd("ctx");
  42366. var $1,$2;
  42367. [$recv(aStream)._write_("$core.addMethod(")
  42368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42369. ,$ctx1.sendIdx["write:"]=1
  42370. //>>excludeEnd("ctx");
  42371. ][0];
  42372. [$recv(aStream)._lf()
  42373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42374. ,$ctx1.sendIdx["lf"]=1
  42375. //>>excludeEnd("ctx");
  42376. ][0];
  42377. [$recv(aStream)._write_("$core.method({")
  42378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42379. ,$ctx1.sendIdx["write:"]=2
  42380. //>>excludeEnd("ctx");
  42381. ][0];
  42382. [$recv(aStream)._lf()
  42383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42384. ,$ctx1.sendIdx["lf"]=2
  42385. //>>excludeEnd("ctx");
  42386. ][0];
  42387. [$recv(aStream)._write_(["selector: ",[$recv($recv(aMethod)._selector())._asJavaScriptSource()
  42388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42389. ,$ctx1.sendIdx["asJavaScriptSource"]=1
  42390. //>>excludeEnd("ctx");
  42391. ][0],","])
  42392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42393. ,$ctx1.sendIdx["write:"]=3
  42394. //>>excludeEnd("ctx");
  42395. ][0];
  42396. [$recv(aStream)._lf()
  42397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42398. ,$ctx1.sendIdx["lf"]=3
  42399. //>>excludeEnd("ctx");
  42400. ][0];
  42401. [$recv(aStream)._write_(["protocol: ",[$recv($recv(aMethod)._protocol())._asJavaScriptSource()
  42402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42403. ,$ctx1.sendIdx["asJavaScriptSource"]=2
  42404. //>>excludeEnd("ctx");
  42405. ][0],","])
  42406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42407. ,$ctx1.sendIdx["write:"]=4
  42408. //>>excludeEnd("ctx");
  42409. ][0];
  42410. [$recv(aStream)._lf()
  42411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42412. ,$ctx1.sendIdx["lf"]=4
  42413. //>>excludeEnd("ctx");
  42414. ][0];
  42415. $1=[$recv(aMethod)._instantiateFn()
  42416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42417. ,$ctx1.sendIdx["instantiateFn"]=1
  42418. //>>excludeEnd("ctx");
  42419. ][0];
  42420. if($1 == null || $1.a$nil){
  42421. [$recv(aStream)._write_(["fn: ",[$recv($recv(aMethod)._fn())._compiledSource()
  42422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42423. ,$ctx1.sendIdx["compiledSource"]=1
  42424. //>>excludeEnd("ctx");
  42425. ][0],","])
  42426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42427. ,$ctx1.sendIdx["write:"]=5
  42428. //>>excludeEnd("ctx");
  42429. ][0];
  42430. [$recv(aStream)._lf()
  42431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42432. ,$ctx1.sendIdx["lf"]=5
  42433. //>>excludeEnd("ctx");
  42434. ][0];
  42435. } else {
  42436. $1;
  42437. }
  42438. [$recv(aStream)._write_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);")
  42439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42440. ,$ctx1.sendIdx["write:"]=6
  42441. //>>excludeEnd("ctx");
  42442. ][0];
  42443. [$recv(aStream)._lf()
  42444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42445. ,$ctx1.sendIdx["lf"]=6
  42446. //>>excludeEnd("ctx");
  42447. ][0];
  42448. [$recv(aStream)._write_(["args: ",[$recv($recv(aMethod)._arguments())._asJavaScriptSource()
  42449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42450. ,$ctx1.sendIdx["asJavaScriptSource"]=3
  42451. //>>excludeEnd("ctx");
  42452. ][0],","])
  42453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42454. ,$ctx1.sendIdx["write:"]=7
  42455. //>>excludeEnd("ctx");
  42456. ][0];
  42457. [$recv(aStream)._lf()
  42458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42459. ,$ctx1.sendIdx["lf"]=7
  42460. //>>excludeEnd("ctx");
  42461. ][0];
  42462. [$recv(aStream)._write_(["source: ",[$recv($recv(aMethod)._source())._asJavaScriptSource()
  42463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42464. ,$ctx1.sendIdx["asJavaScriptSource"]=4
  42465. //>>excludeEnd("ctx");
  42466. ][0],","])
  42467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42468. ,$ctx1.sendIdx["write:"]=8
  42469. //>>excludeEnd("ctx");
  42470. ][0];
  42471. [$recv(aStream)._lf()
  42472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42473. ,$ctx1.sendIdx["lf"]=8
  42474. //>>excludeEnd("ctx");
  42475. ][0];
  42476. [$recv(aStream)._write_(["referencedClasses: ",[$recv($recv(aMethod)._referencedClasses())._asJavaScriptSource()
  42477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42478. ,$ctx1.sendIdx["asJavaScriptSource"]=5
  42479. //>>excludeEnd("ctx");
  42480. ][0],","])
  42481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42482. ,$ctx1.sendIdx["write:"]=9
  42483. //>>excludeEnd("ctx");
  42484. ][0];
  42485. [$recv(aStream)._lf()
  42486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42487. ,$ctx1.sendIdx["lf"]=9
  42488. //>>excludeEnd("ctx");
  42489. ][0];
  42490. [$recv(aStream)._write_("//>>excludeEnd(\x22ide\x22);")
  42491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42492. ,$ctx1.sendIdx["write:"]=10
  42493. //>>excludeEnd("ctx");
  42494. ][0];
  42495. [$recv(aStream)._lf()
  42496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42497. ,$ctx1.sendIdx["lf"]=10
  42498. //>>excludeEnd("ctx");
  42499. ][0];
  42500. [$recv(aStream)._write_(["pragmas: ",[$recv($recv(aMethod)._basicPragmas())._asJavaScriptSource()
  42501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42502. ,$ctx1.sendIdx["asJavaScriptSource"]=6
  42503. //>>excludeEnd("ctx");
  42504. ][0],","])
  42505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42506. ,$ctx1.sendIdx["write:"]=11
  42507. //>>excludeEnd("ctx");
  42508. ][0];
  42509. [$recv(aStream)._lf()
  42510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42511. ,$ctx1.sendIdx["lf"]=11
  42512. //>>excludeEnd("ctx");
  42513. ][0];
  42514. [$recv(aStream)._write_(["messageSends: ",[$recv($recv(aMethod)._messageSends())._asJavaScriptSource()
  42515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42516. ,$ctx1.sendIdx["asJavaScriptSource"]=7
  42517. //>>excludeEnd("ctx");
  42518. ][0]])
  42519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42520. ,$ctx1.sendIdx["write:"]=12
  42521. //>>excludeEnd("ctx");
  42522. ][0];
  42523. [$recv(aStream)._lf()
  42524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42525. ,$ctx1.sendIdx["lf"]=12
  42526. //>>excludeEnd("ctx");
  42527. ][0];
  42528. [$recv(aStream)._write_("}")
  42529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42530. ,$ctx1.sendIdx["write:"]=13
  42531. //>>excludeEnd("ctx");
  42532. ][0];
  42533. $2=$recv(aMethod)._instantiateFn();
  42534. if($2 == null || $2.a$nil){
  42535. $2;
  42536. } else {
  42537. var ifn;
  42538. ifn=$2;
  42539. [$recv(aStream)._write_([", ",$recv(ifn)._compiledSource()])
  42540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42541. ,$ctx1.sendIdx["write:"]=14
  42542. //>>excludeEnd("ctx");
  42543. ][0];
  42544. }
  42545. [$recv(aStream)._write_("),")
  42546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42547. ,$ctx1.sendIdx["write:"]=15
  42548. //>>excludeEnd("ctx");
  42549. ][0];
  42550. [$recv(aStream)._lf()
  42551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42552. ,$ctx1.sendIdx["lf"]=13
  42553. //>>excludeEnd("ctx");
  42554. ][0];
  42555. $recv(aStream)._write_([$recv($recv(aMethod)._origin())._asJavaScriptSource(),");"]);
  42556. [$recv(aStream)._lf()
  42557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42558. ,$ctx1.sendIdx["lf"]=14
  42559. //>>excludeEnd("ctx");
  42560. ][0];
  42561. $recv(aStream)._lf();
  42562. return self;
  42563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42564. }, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream})});
  42565. //>>excludeEnd("ctx");
  42566. }; }),
  42567. $globals.Exporter);
  42568. $core.addMethod(
  42569. $core.method({
  42570. selector: "exportPackage:on:",
  42571. protocol: "output",
  42572. //>>excludeStart("ide", pragmas.excludeIdeData);
  42573. args: ["aPackage", "aStream"],
  42574. source: "exportPackage: aPackage on: aStream\x0a\x09\x0a\x09self \x0a\x09\x09exportPackagePrologueOf: aPackage on: aStream;\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageContextOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream;\x0a\x09\x09exportPackageTransportOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :eachClass | eachClass includingPossibleMetaDo: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream ] ].\x0a\x09\x09\x09\x0a\x09self exportPackageTraitCompositionsOf: aPackage on: aStream.\x0a\x0a\x09(self extensionMethodsOfPackage: aPackage) do: [ :each |\x0a\x09\x09self exportMethod: each on: aStream ].\x0a\x09\x09\x0a\x09self exportPackageEpilogueOf: aPackage on: aStream",
  42575. referencedClasses: [],
  42576. //>>excludeEnd("ide");
  42577. pragmas: [],
  42578. messageSends: ["exportPackagePrologueOf:on:", "exportPackageDefinitionOf:on:", "exportPackageContextOf:on:", "exportPackageImportsOf:on:", "exportPackageTransportOf:on:", "do:", "sortedClasses", "includingPossibleMetaDo:", "exportBehavior:on:", "exportPackageTraitCompositionsOf:on:", "extensionMethodsOfPackage:", "exportMethod:on:", "exportPackageEpilogueOf:on:"]
  42579. }, function ($methodClass){ return function (aPackage,aStream){
  42580. var self=this,$self=this;
  42581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42582. return $core.withContext(function($ctx1) {
  42583. //>>excludeEnd("ctx");
  42584. $self._exportPackagePrologueOf_on_(aPackage,aStream);
  42585. $self._exportPackageDefinitionOf_on_(aPackage,aStream);
  42586. $self._exportPackageContextOf_on_(aPackage,aStream);
  42587. $self._exportPackageImportsOf_on_(aPackage,aStream);
  42588. $self._exportPackageTransportOf_on_(aPackage,aStream);
  42589. [$recv($recv(aPackage)._sortedClasses())._do_((function(eachClass){
  42590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42591. return $core.withContext(function($ctx2) {
  42592. //>>excludeEnd("ctx");
  42593. return $recv(eachClass)._includingPossibleMetaDo_((function(each){
  42594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42595. return $core.withContext(function($ctx3) {
  42596. //>>excludeEnd("ctx");
  42597. return $self._exportBehavior_on_(each,aStream);
  42598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42599. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  42600. //>>excludeEnd("ctx");
  42601. }));
  42602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42603. }, function($ctx2) {$ctx2.fillBlock({eachClass:eachClass},$ctx1,1)});
  42604. //>>excludeEnd("ctx");
  42605. }))
  42606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42607. ,$ctx1.sendIdx["do:"]=1
  42608. //>>excludeEnd("ctx");
  42609. ][0];
  42610. $self._exportPackageTraitCompositionsOf_on_(aPackage,aStream);
  42611. $recv($self._extensionMethodsOfPackage_(aPackage))._do_((function(each){
  42612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42613. return $core.withContext(function($ctx2) {
  42614. //>>excludeEnd("ctx");
  42615. return $self._exportMethod_on_(each,aStream);
  42616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42617. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  42618. //>>excludeEnd("ctx");
  42619. }));
  42620. $self._exportPackageEpilogueOf_on_(aPackage,aStream);
  42621. return self;
  42622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42623. }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream})});
  42624. //>>excludeEnd("ctx");
  42625. }; }),
  42626. $globals.Exporter);
  42627. $core.addMethod(
  42628. $core.method({
  42629. selector: "exportPackageBodyBlockPrologueOf:on:",
  42630. protocol: "output",
  42631. //>>excludeStart("ide", pragmas.excludeIdeData);
  42632. args: ["aPackage", "aStream"],
  42633. source: "exportPackageBodyBlockPrologueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: 'var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;'; lf",
  42634. referencedClasses: [],
  42635. //>>excludeEnd("ide");
  42636. pragmas: [],
  42637. messageSends: ["write:", "lf"]
  42638. }, function ($methodClass){ return function (aPackage,aStream){
  42639. var self=this,$self=this;
  42640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42641. return $core.withContext(function($ctx1) {
  42642. //>>excludeEnd("ctx");
  42643. $recv(aStream)._write_("var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;");
  42644. $recv(aStream)._lf();
  42645. return self;
  42646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42647. }, function($ctx1) {$ctx1.fill(self,"exportPackageBodyBlockPrologueOf:on:",{aPackage:aPackage,aStream:aStream})});
  42648. //>>excludeEnd("ctx");
  42649. }; }),
  42650. $globals.Exporter);
  42651. $core.addMethod(
  42652. $core.method({
  42653. selector: "exportPackageContextOf:on:",
  42654. protocol: "output",
  42655. //>>excludeStart("ide", pragmas.excludeIdeData);
  42656. args: ["aPackage", "aStream"],
  42657. source: "exportPackageContextOf: aPackage on: aStream\x0a\x09aPackage contextFunctionSource ifNotNil: [ :source |\x0a\x09\x09aStream\x0a\x09\x09\x09write: { '$pkg.context = '. source. ';' };\x0a\x09\x09\x09lf ]",
  42658. referencedClasses: [],
  42659. //>>excludeEnd("ide");
  42660. pragmas: [],
  42661. messageSends: ["ifNotNil:", "contextFunctionSource", "write:", "lf"]
  42662. }, function ($methodClass){ return function (aPackage,aStream){
  42663. var self=this,$self=this;
  42664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42665. return $core.withContext(function($ctx1) {
  42666. //>>excludeEnd("ctx");
  42667. var $1;
  42668. $1=$recv(aPackage)._contextFunctionSource();
  42669. if($1 == null || $1.a$nil){
  42670. $1;
  42671. } else {
  42672. var source;
  42673. source=$1;
  42674. $recv(aStream)._write_(["$pkg.context = ",source,";"]);
  42675. $recv(aStream)._lf();
  42676. }
  42677. return self;
  42678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42679. }, function($ctx1) {$ctx1.fill(self,"exportPackageContextOf:on:",{aPackage:aPackage,aStream:aStream})});
  42680. //>>excludeEnd("ctx");
  42681. }; }),
  42682. $globals.Exporter);
  42683. $core.addMethod(
  42684. $core.method({
  42685. selector: "exportPackageDefinitionOf:on:",
  42686. protocol: "output",
  42687. //>>excludeStart("ide", pragmas.excludeIdeData);
  42688. args: ["aPackage", "aStream"],
  42689. source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: { 'var $pkg = $core.addPackage('. aPackage name asJavaScriptSource. ');' };\x0a\x09\x09lf",
  42690. referencedClasses: [],
  42691. //>>excludeEnd("ide");
  42692. pragmas: [],
  42693. messageSends: ["write:", "asJavaScriptSource", "name", "lf"]
  42694. }, function ($methodClass){ return function (aPackage,aStream){
  42695. var self=this,$self=this;
  42696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42697. return $core.withContext(function($ctx1) {
  42698. //>>excludeEnd("ctx");
  42699. $recv(aStream)._write_(["var $pkg = $core.addPackage(",$recv($recv(aPackage)._name())._asJavaScriptSource(),");"]);
  42700. $recv(aStream)._lf();
  42701. return self;
  42702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42703. }, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream})});
  42704. //>>excludeEnd("ctx");
  42705. }; }),
  42706. $globals.Exporter);
  42707. $core.addMethod(
  42708. $core.method({
  42709. selector: "exportPackageEpilogueOf:on:",
  42710. protocol: "output",
  42711. //>>excludeStart("ide", pragmas.excludeIdeData);
  42712. args: ["aPackage", "aStream"],
  42713. source: "exportPackageEpilogueOf: aPackage on: aStream\x0a\x09self subclassResponsibility",
  42714. referencedClasses: [],
  42715. //>>excludeEnd("ide");
  42716. pragmas: [],
  42717. messageSends: ["subclassResponsibility"]
  42718. }, function ($methodClass){ return function (aPackage,aStream){
  42719. var self=this,$self=this;
  42720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42721. return $core.withContext(function($ctx1) {
  42722. //>>excludeEnd("ctx");
  42723. $self._subclassResponsibility();
  42724. return self;
  42725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42726. }, function($ctx1) {$ctx1.fill(self,"exportPackageEpilogueOf:on:",{aPackage:aPackage,aStream:aStream})});
  42727. //>>excludeEnd("ctx");
  42728. }; }),
  42729. $globals.Exporter);
  42730. $core.addMethod(
  42731. $core.method({
  42732. selector: "exportPackageImportsOf:on:",
  42733. protocol: "output",
  42734. //>>excludeStart("ide", pragmas.excludeIdeData);
  42735. args: ["aPackage", "aStream"],
  42736. source: "exportPackageImportsOf: aPackage on: aStream\x0a\x09aPackage importsAsJson ifNotEmpty: [ :imports |\x0a\x09\x09aStream\x0a\x09\x09\x09write: { '$pkg.imports = '. imports asJavaScriptSource. ';' };\x0a\x09\x09\x09lf ]",
  42737. referencedClasses: [],
  42738. //>>excludeEnd("ide");
  42739. pragmas: [],
  42740. messageSends: ["ifNotEmpty:", "importsAsJson", "write:", "asJavaScriptSource", "lf"]
  42741. }, function ($methodClass){ return function (aPackage,aStream){
  42742. var self=this,$self=this;
  42743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42744. return $core.withContext(function($ctx1) {
  42745. //>>excludeEnd("ctx");
  42746. $recv($recv(aPackage)._importsAsJson())._ifNotEmpty_((function(imports){
  42747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42748. return $core.withContext(function($ctx2) {
  42749. //>>excludeEnd("ctx");
  42750. $recv(aStream)._write_(["$pkg.imports = ",$recv(imports)._asJavaScriptSource(),";"]);
  42751. return $recv(aStream)._lf();
  42752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42753. }, function($ctx2) {$ctx2.fillBlock({imports:imports},$ctx1,1)});
  42754. //>>excludeEnd("ctx");
  42755. }));
  42756. return self;
  42757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42758. }, function($ctx1) {$ctx1.fill(self,"exportPackageImportsOf:on:",{aPackage:aPackage,aStream:aStream})});
  42759. //>>excludeEnd("ctx");
  42760. }; }),
  42761. $globals.Exporter);
  42762. $core.addMethod(
  42763. $core.method({
  42764. selector: "exportPackagePrologueOf:on:",
  42765. protocol: "output",
  42766. //>>excludeStart("ide", pragmas.excludeIdeData);
  42767. args: ["aPackage", "aStream"],
  42768. source: "exportPackagePrologueOf: aPackage on: aStream\x0a\x09self subclassResponsibility",
  42769. referencedClasses: [],
  42770. //>>excludeEnd("ide");
  42771. pragmas: [],
  42772. messageSends: ["subclassResponsibility"]
  42773. }, function ($methodClass){ return function (aPackage,aStream){
  42774. var self=this,$self=this;
  42775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42776. return $core.withContext(function($ctx1) {
  42777. //>>excludeEnd("ctx");
  42778. $self._subclassResponsibility();
  42779. return self;
  42780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42781. }, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aPackage:aPackage,aStream:aStream})});
  42782. //>>excludeEnd("ctx");
  42783. }; }),
  42784. $globals.Exporter);
  42785. $core.addMethod(
  42786. $core.method({
  42787. selector: "exportPackageTraitCompositionsOf:on:",
  42788. protocol: "output",
  42789. //>>excludeStart("ide", pragmas.excludeIdeData);
  42790. args: ["aPackage", "aStream"],
  42791. source: "exportPackageTraitCompositionsOf: aPackage on: aStream\x0a\x09aPackage traitCompositions ifNotEmpty: [ :traitCompositions |\x0a\x09\x09traitCompositions keysAndValuesDo: [ :key :value | self exportTraitComposition: value of: key on: aStream ].\x0a\x09\x09aStream lf ]",
  42792. referencedClasses: [],
  42793. //>>excludeEnd("ide");
  42794. pragmas: [],
  42795. messageSends: ["ifNotEmpty:", "traitCompositions", "keysAndValuesDo:", "exportTraitComposition:of:on:", "lf"]
  42796. }, function ($methodClass){ return function (aPackage,aStream){
  42797. var self=this,$self=this;
  42798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42799. return $core.withContext(function($ctx1) {
  42800. //>>excludeEnd("ctx");
  42801. $recv($recv(aPackage)._traitCompositions())._ifNotEmpty_((function(traitCompositions){
  42802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42803. return $core.withContext(function($ctx2) {
  42804. //>>excludeEnd("ctx");
  42805. $recv(traitCompositions)._keysAndValuesDo_((function(key,value){
  42806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42807. return $core.withContext(function($ctx3) {
  42808. //>>excludeEnd("ctx");
  42809. return $self._exportTraitComposition_of_on_(value,key,aStream);
  42810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42811. }, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,2)});
  42812. //>>excludeEnd("ctx");
  42813. }));
  42814. return $recv(aStream)._lf();
  42815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42816. }, function($ctx2) {$ctx2.fillBlock({traitCompositions:traitCompositions},$ctx1,1)});
  42817. //>>excludeEnd("ctx");
  42818. }));
  42819. return self;
  42820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42821. }, function($ctx1) {$ctx1.fill(self,"exportPackageTraitCompositionsOf:on:",{aPackage:aPackage,aStream:aStream})});
  42822. //>>excludeEnd("ctx");
  42823. }; }),
  42824. $globals.Exporter);
  42825. $core.addMethod(
  42826. $core.method({
  42827. selector: "exportPackageTransportOf:on:",
  42828. protocol: "output",
  42829. //>>excludeStart("ide", pragmas.excludeIdeData);
  42830. args: ["aPackage", "aStream"],
  42831. source: "exportPackageTransportOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: { '$pkg.transport = '. aPackage transport asJSONString. ';' };\x0a\x09\x09lf",
  42832. referencedClasses: [],
  42833. //>>excludeEnd("ide");
  42834. pragmas: [],
  42835. messageSends: ["write:", "asJSONString", "transport", "lf"]
  42836. }, function ($methodClass){ return function (aPackage,aStream){
  42837. var self=this,$self=this;
  42838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42839. return $core.withContext(function($ctx1) {
  42840. //>>excludeEnd("ctx");
  42841. $recv(aStream)._write_(["$pkg.transport = ",$recv($recv(aPackage)._transport())._asJSONString(),";"]);
  42842. $recv(aStream)._lf();
  42843. return self;
  42844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42845. }, function($ctx1) {$ctx1.fill(self,"exportPackageTransportOf:on:",{aPackage:aPackage,aStream:aStream})});
  42846. //>>excludeEnd("ctx");
  42847. }; }),
  42848. $globals.Exporter);
  42849. $core.addMethod(
  42850. $core.method({
  42851. selector: "exportTraitComposition:of:on:",
  42852. protocol: "output",
  42853. //>>excludeStart("ide", pragmas.excludeIdeData);
  42854. args: ["aTraitComposition", "aBehavior", "aStream"],
  42855. source: "exportTraitComposition: aTraitComposition of: aBehavior on: aStream\x0a\x09aStream write: {\x0a\x09\x09'$core.setTraitComposition('.\x0a\x09\x09aTraitComposition asJavaScriptSource.\x0a\x09\x09', '.\x0a\x09\x09aBehavior asJavaScriptSource.\x0a\x09\x09');' };\x0a\x09lf",
  42856. referencedClasses: [],
  42857. //>>excludeEnd("ide");
  42858. pragmas: [],
  42859. messageSends: ["write:", "asJavaScriptSource", "lf"]
  42860. }, function ($methodClass){ return function (aTraitComposition,aBehavior,aStream){
  42861. var self=this,$self=this;
  42862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42863. return $core.withContext(function($ctx1) {
  42864. //>>excludeEnd("ctx");
  42865. $recv(aStream)._write_(["$core.setTraitComposition(",[$recv(aTraitComposition)._asJavaScriptSource()
  42866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42867. ,$ctx1.sendIdx["asJavaScriptSource"]=1
  42868. //>>excludeEnd("ctx");
  42869. ][0],", ",$recv(aBehavior)._asJavaScriptSource(),");"]);
  42870. $recv(aStream)._lf();
  42871. return self;
  42872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42873. }, function($ctx1) {$ctx1.fill(self,"exportTraitComposition:of:on:",{aTraitComposition:aTraitComposition,aBehavior:aBehavior,aStream:aStream})});
  42874. //>>excludeEnd("ctx");
  42875. }; }),
  42876. $globals.Exporter);
  42877. $core.addMethod(
  42878. $core.method({
  42879. selector: "exportTraitDefinitionOf:on:",
  42880. protocol: "output",
  42881. //>>excludeStart("ide", pragmas.excludeIdeData);
  42882. args: ["aClass", "aStream"],
  42883. source: "exportTraitDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09write: {\x0a\x09\x09\x09'$core.addTrait('.\x0a\x09\x09\x09aClass name asJavaScriptSource. ', '.\x0a\x09\x09\x09aClass category asJavaScriptSource.\x0a\x09\x09\x09');' }.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09\x09lf;\x0a\x09\x09\x09write: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);'; lf;\x0a\x09\x09\x09write: { aClass asJavaScriptSource. '.comment='. aClass comment crlfSanitized asJavaScriptSource. ';' }; lf;\x0a\x09\x09\x09write: '//>>excludeEnd(\x22ide\x22);' ].\x0a\x09aStream lf",
  42884. referencedClasses: [],
  42885. //>>excludeEnd("ide");
  42886. pragmas: [],
  42887. messageSends: ["lf", "write:", "asJavaScriptSource", "name", "category", "ifNotEmpty:", "comment", "crlfSanitized"]
  42888. }, function ($methodClass){ return function (aClass,aStream){
  42889. var self=this,$self=this;
  42890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42891. return $core.withContext(function($ctx1) {
  42892. //>>excludeEnd("ctx");
  42893. [$recv(aStream)._lf()
  42894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42895. ,$ctx1.sendIdx["lf"]=1
  42896. //>>excludeEnd("ctx");
  42897. ][0];
  42898. [$recv(aStream)._write_(["$core.addTrait(",[$recv($recv(aClass)._name())._asJavaScriptSource()
  42899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42900. ,$ctx1.sendIdx["asJavaScriptSource"]=1
  42901. //>>excludeEnd("ctx");
  42902. ][0],", ",[$recv($recv(aClass)._category())._asJavaScriptSource()
  42903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42904. ,$ctx1.sendIdx["asJavaScriptSource"]=2
  42905. //>>excludeEnd("ctx");
  42906. ][0],");"])
  42907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42908. ,$ctx1.sendIdx["write:"]=1
  42909. //>>excludeEnd("ctx");
  42910. ][0];
  42911. $recv([$recv(aClass)._comment()
  42912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42913. ,$ctx1.sendIdx["comment"]=1
  42914. //>>excludeEnd("ctx");
  42915. ][0])._ifNotEmpty_((function(){
  42916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42917. return $core.withContext(function($ctx2) {
  42918. //>>excludeEnd("ctx");
  42919. [$recv(aStream)._lf()
  42920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42921. ,$ctx2.sendIdx["lf"]=2
  42922. //>>excludeEnd("ctx");
  42923. ][0];
  42924. [$recv(aStream)._write_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);")
  42925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42926. ,$ctx2.sendIdx["write:"]=2
  42927. //>>excludeEnd("ctx");
  42928. ][0];
  42929. [$recv(aStream)._lf()
  42930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42931. ,$ctx2.sendIdx["lf"]=3
  42932. //>>excludeEnd("ctx");
  42933. ][0];
  42934. [$recv(aStream)._write_([[$recv(aClass)._asJavaScriptSource()
  42935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42936. ,$ctx2.sendIdx["asJavaScriptSource"]=3
  42937. //>>excludeEnd("ctx");
  42938. ][0],".comment=",$recv($recv($recv(aClass)._comment())._crlfSanitized())._asJavaScriptSource(),";"])
  42939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42940. ,$ctx2.sendIdx["write:"]=3
  42941. //>>excludeEnd("ctx");
  42942. ][0];
  42943. [$recv(aStream)._lf()
  42944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42945. ,$ctx2.sendIdx["lf"]=4
  42946. //>>excludeEnd("ctx");
  42947. ][0];
  42948. return $recv(aStream)._write_("//>>excludeEnd(\x22ide\x22);");
  42949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42950. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  42951. //>>excludeEnd("ctx");
  42952. }));
  42953. $recv(aStream)._lf();
  42954. return self;
  42955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42956. }, function($ctx1) {$ctx1.fill(self,"exportTraitDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
  42957. //>>excludeEnd("ctx");
  42958. }; }),
  42959. $globals.Exporter);
  42960. $core.addMethod(
  42961. $core.method({
  42962. selector: "ownMethodsOfClass:",
  42963. protocol: "accessing",
  42964. //>>excludeStart("ide", pragmas.excludeIdeData);
  42965. args: ["aClass"],
  42966. source: "ownMethodsOfClass: aClass\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09^ ((aClass methodDictionary values) sorted: [ :a :b | a selector <= b selector ])\x0a\x09\x09reject: [ :each | (each protocol match: '^\x5c*') ]",
  42967. referencedClasses: [],
  42968. //>>excludeEnd("ide");
  42969. pragmas: [],
  42970. messageSends: ["reject:", "sorted:", "values", "methodDictionary", "<=", "selector", "match:", "protocol"]
  42971. }, function ($methodClass){ return function (aClass){
  42972. var self=this,$self=this;
  42973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42974. return $core.withContext(function($ctx1) {
  42975. //>>excludeEnd("ctx");
  42976. return $recv($recv($recv($recv(aClass)._methodDictionary())._values())._sorted_((function(a,b){
  42977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42978. return $core.withContext(function($ctx2) {
  42979. //>>excludeEnd("ctx");
  42980. return $recv([$recv(a)._selector()
  42981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42982. ,$ctx2.sendIdx["selector"]=1
  42983. //>>excludeEnd("ctx");
  42984. ][0]).__lt_eq($recv(b)._selector());
  42985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42986. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  42987. //>>excludeEnd("ctx");
  42988. })))._reject_((function(each){
  42989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42990. return $core.withContext(function($ctx2) {
  42991. //>>excludeEnd("ctx");
  42992. return $recv($recv(each)._protocol())._match_("^\x5c*");
  42993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42994. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  42995. //>>excludeEnd("ctx");
  42996. }));
  42997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42998. }, function($ctx1) {$ctx1.fill(self,"ownMethodsOfClass:",{aClass:aClass})});
  42999. //>>excludeEnd("ctx");
  43000. }; }),
  43001. $globals.Exporter);
  43002. $core.addMethod(
  43003. $core.method({
  43004. selector: "ownMethodsOfMetaClass:",
  43005. protocol: "accessing",
  43006. //>>excludeStart("ide", pragmas.excludeIdeData);
  43007. args: ["aClass"],
  43008. source: "ownMethodsOfMetaClass: aClass\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09^ self ownMethodsOfClass: aClass theMetaClass",
  43009. referencedClasses: [],
  43010. //>>excludeEnd("ide");
  43011. pragmas: [],
  43012. messageSends: ["ownMethodsOfClass:", "theMetaClass"]
  43013. }, function ($methodClass){ return function (aClass){
  43014. var self=this,$self=this;
  43015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43016. return $core.withContext(function($ctx1) {
  43017. //>>excludeEnd("ctx");
  43018. return $self._ownMethodsOfClass_($recv(aClass)._theMetaClass());
  43019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43020. }, function($ctx1) {$ctx1.fill(self,"ownMethodsOfMetaClass:",{aClass:aClass})});
  43021. //>>excludeEnd("ctx");
  43022. }; }),
  43023. $globals.Exporter);
  43024. $core.addClass("AmdExporter", $globals.Exporter, "Platform-ImportExport");
  43025. $core.setSlots($globals.AmdExporter, ["namespace"]);
  43026. //>>excludeStart("ide", pragmas.excludeIdeData);
  43027. $globals.AmdExporter.comment="I am used to export Packages in an AMD (Asynchronous Module Definition) JavaScript format.";
  43028. //>>excludeEnd("ide");
  43029. $core.addMethod(
  43030. $core.method({
  43031. selector: "amdNamesOfPackages:",
  43032. protocol: "private",
  43033. //>>excludeStart("ide", pragmas.excludeIdeData);
  43034. args: ["anArray"],
  43035. source: "amdNamesOfPackages: anArray\x0a\x09^ (anArray\x0a\x09\x09select: [ :each | (self amdNamespaceOfPackage: each) notNil ])\x0a\x09\x09collect: [ :each | (self amdNamespaceOfPackage: each), '/', each name ]",
  43036. referencedClasses: [],
  43037. //>>excludeEnd("ide");
  43038. pragmas: [],
  43039. messageSends: ["collect:", "select:", "notNil", "amdNamespaceOfPackage:", ",", "name"]
  43040. }, function ($methodClass){ return function (anArray){
  43041. var self=this,$self=this;
  43042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43043. return $core.withContext(function($ctx1) {
  43044. //>>excludeEnd("ctx");
  43045. return $recv($recv(anArray)._select_((function(each){
  43046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43047. return $core.withContext(function($ctx2) {
  43048. //>>excludeEnd("ctx");
  43049. return $recv([$self._amdNamespaceOfPackage_(each)
  43050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43051. ,$ctx2.sendIdx["amdNamespaceOfPackage:"]=1
  43052. //>>excludeEnd("ctx");
  43053. ][0])._notNil();
  43054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43055. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  43056. //>>excludeEnd("ctx");
  43057. })))._collect_((function(each){
  43058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43059. return $core.withContext(function($ctx2) {
  43060. //>>excludeEnd("ctx");
  43061. return [$recv($recv($self._amdNamespaceOfPackage_(each)).__comma("/")).__comma($recv(each)._name())
  43062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43063. ,$ctx2.sendIdx[","]=1
  43064. //>>excludeEnd("ctx");
  43065. ][0];
  43066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43067. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  43068. //>>excludeEnd("ctx");
  43069. }));
  43070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43071. }, function($ctx1) {$ctx1.fill(self,"amdNamesOfPackages:",{anArray:anArray})});
  43072. //>>excludeEnd("ctx");
  43073. }; }),
  43074. $globals.AmdExporter);
  43075. $core.addMethod(
  43076. $core.method({
  43077. selector: "amdNamespaceOfPackage:",
  43078. protocol: "private",
  43079. //>>excludeStart("ide", pragmas.excludeIdeData);
  43080. args: ["aPackage"],
  43081. source: "amdNamespaceOfPackage: aPackage\x0a\x09^ (aPackage transport type = 'amd')\x0a\x09\x09ifTrue: [ aPackage transport namespace ]\x0a\x09\x09ifFalse: [ nil ]",
  43082. referencedClasses: [],
  43083. //>>excludeEnd("ide");
  43084. pragmas: [],
  43085. messageSends: ["ifTrue:ifFalse:", "=", "type", "transport", "namespace"]
  43086. }, function ($methodClass){ return function (aPackage){
  43087. var self=this,$self=this;
  43088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43089. return $core.withContext(function($ctx1) {
  43090. //>>excludeEnd("ctx");
  43091. if($core.assert($recv($recv([$recv(aPackage)._transport()
  43092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43093. ,$ctx1.sendIdx["transport"]=1
  43094. //>>excludeEnd("ctx");
  43095. ][0])._type()).__eq("amd"))){
  43096. return $recv($recv(aPackage)._transport())._namespace();
  43097. } else {
  43098. return nil;
  43099. }
  43100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43101. }, function($ctx1) {$ctx1.fill(self,"amdNamespaceOfPackage:",{aPackage:aPackage})});
  43102. //>>excludeEnd("ctx");
  43103. }; }),
  43104. $globals.AmdExporter);
  43105. $core.addMethod(
  43106. $core.method({
  43107. selector: "exportPackageEpilogueOf:on:",
  43108. protocol: "output",
  43109. //>>excludeStart("ide", pragmas.excludeIdeData);
  43110. args: ["aPackage", "aStream"],
  43111. source: "exportPackageEpilogueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: '});';\x0a\x09\x09lf",
  43112. referencedClasses: [],
  43113. //>>excludeEnd("ide");
  43114. pragmas: [],
  43115. messageSends: ["write:", "lf"]
  43116. }, function ($methodClass){ return function (aPackage,aStream){
  43117. var self=this,$self=this;
  43118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43119. return $core.withContext(function($ctx1) {
  43120. //>>excludeEnd("ctx");
  43121. $recv(aStream)._write_("});");
  43122. $recv(aStream)._lf();
  43123. return self;
  43124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43125. }, function($ctx1) {$ctx1.fill(self,"exportPackageEpilogueOf:on:",{aPackage:aPackage,aStream:aStream})});
  43126. //>>excludeEnd("ctx");
  43127. }; }),
  43128. $globals.AmdExporter);
  43129. $core.addMethod(
  43130. $core.method({
  43131. selector: "exportPackageImportsOf:on:",
  43132. protocol: "output",
  43133. //>>excludeStart("ide", pragmas.excludeIdeData);
  43134. args: ["aPackage", "aStream"],
  43135. source: "exportPackageImportsOf: aPackage on: aStream\x0a\x09| importsForOutput pragmaStart pragmaEnd |\x0a\x09pragmaStart := '//>>excludeStart(\x22imports\x22, pragmas.excludeImports);', String lf.\x0a\x09pragmaEnd := '//>>excludeEnd(\x22imports\x22);', String lf.\x0a\x09super exportPackageImportsOf: aPackage on: aStream.\x0a\x09importsForOutput := self importsForOutput: aPackage.\x0a\x09importsForOutput value ifNotEmpty: [ :imports |\x0a\x09\x09| vars |\x0a\x09\x09aStream write: pragmaStart.\x0a\x09\x09vars := importsForOutput key.\x0a\x09\x09vars ifNotEmpty: [ aStream write: { 'var '. ',' join: vars. ';' }; lf ]. \x0a\x09\x09aStream\x0a\x09\x09\x09write: {\x0a\x09\x09\x09\x09'$pkg.isReady = new Promise(function (resolve, reject) { requirejs('.\x0a\x09\x09\x09\x09imports asJavaScriptSource.\x0a\x09\x09\x09\x09', function ('.\x0a\x09\x09\x09\x09',' join: ((1 to: vars size) collect: [ :each | '$', each asString ]).\x0a\x09\x09\x09\x09') {'.\x0a\x09\x09\x09\x09(1 to: vars size) collect: [ :each | (vars at: each), '=$', each asString, '; ' ].\x0a\x09\x09\x09\x09'resolve();}, reject); });' };\x0a\x09\x09\x09lf;\x0a\x09\x09\x09write: pragmaEnd ]",
  43136. referencedClasses: ["String"],
  43137. //>>excludeEnd("ide");
  43138. pragmas: [],
  43139. messageSends: [",", "lf", "exportPackageImportsOf:on:", "importsForOutput:", "ifNotEmpty:", "value", "write:", "key", "join:", "asJavaScriptSource", "collect:", "to:", "size", "asString", "at:"]
  43140. }, function ($methodClass){ return function (aPackage,aStream){
  43141. var self=this,$self=this;
  43142. var importsForOutput,pragmaStart,pragmaEnd;
  43143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43144. return $core.withContext(function($ctx1) {
  43145. //>>excludeEnd("ctx");
  43146. pragmaStart=["//>>excludeStart(\x22imports\x22, pragmas.excludeImports);".__comma([$recv($globals.String)._lf()
  43147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43148. ,$ctx1.sendIdx["lf"]=1
  43149. //>>excludeEnd("ctx");
  43150. ][0])
  43151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43152. ,$ctx1.sendIdx[","]=1
  43153. //>>excludeEnd("ctx");
  43154. ][0];
  43155. pragmaEnd=["//>>excludeEnd(\x22imports\x22);".__comma([$recv($globals.String)._lf()
  43156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43157. ,$ctx1.sendIdx["lf"]=2
  43158. //>>excludeEnd("ctx");
  43159. ][0])
  43160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43161. ,$ctx1.sendIdx[","]=2
  43162. //>>excludeEnd("ctx");
  43163. ][0];
  43164. [(
  43165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43166. $ctx1.supercall = true,
  43167. //>>excludeEnd("ctx");
  43168. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._exportPackageImportsOf_on_.call($self,aPackage,aStream))
  43169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43170. ,$ctx1.supercall = false
  43171. //>>excludeEnd("ctx");
  43172. ][0];
  43173. importsForOutput=$self._importsForOutput_(aPackage);
  43174. [$recv($recv(importsForOutput)._value())._ifNotEmpty_((function(imports){
  43175. var vars;
  43176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43177. return $core.withContext(function($ctx2) {
  43178. //>>excludeEnd("ctx");
  43179. [$recv(aStream)._write_(pragmaStart)
  43180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43181. ,$ctx2.sendIdx["write:"]=1
  43182. //>>excludeEnd("ctx");
  43183. ][0];
  43184. vars=$recv(importsForOutput)._key();
  43185. $recv(vars)._ifNotEmpty_((function(){
  43186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43187. return $core.withContext(function($ctx3) {
  43188. //>>excludeEnd("ctx");
  43189. [$recv(aStream)._write_(["var ",[","._join_(vars)
  43190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43191. ,$ctx3.sendIdx["join:"]=1
  43192. //>>excludeEnd("ctx");
  43193. ][0],";"])
  43194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43195. ,$ctx3.sendIdx["write:"]=2
  43196. //>>excludeEnd("ctx");
  43197. ][0];
  43198. return [$recv(aStream)._lf()
  43199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43200. ,$ctx3.sendIdx["lf"]=3
  43201. //>>excludeEnd("ctx");
  43202. ][0];
  43203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43204. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  43205. //>>excludeEnd("ctx");
  43206. }));
  43207. [$recv(aStream)._write_(["$pkg.isReady = new Promise(function (resolve, reject) { requirejs(",$recv(imports)._asJavaScriptSource(),", function (",","._join_([$recv([(1)._to_([$recv(vars)._size()
  43208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43209. ,$ctx2.sendIdx["size"]=1
  43210. //>>excludeEnd("ctx");
  43211. ][0])
  43212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43213. ,$ctx2.sendIdx["to:"]=1
  43214. //>>excludeEnd("ctx");
  43215. ][0])._collect_((function(each){
  43216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43217. return $core.withContext(function($ctx3) {
  43218. //>>excludeEnd("ctx");
  43219. return ["$".__comma([$recv(each)._asString()
  43220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43221. ,$ctx3.sendIdx["asString"]=1
  43222. //>>excludeEnd("ctx");
  43223. ][0])
  43224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43225. ,$ctx3.sendIdx[","]=3
  43226. //>>excludeEnd("ctx");
  43227. ][0];
  43228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43229. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
  43230. //>>excludeEnd("ctx");
  43231. }))
  43232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43233. ,$ctx2.sendIdx["collect:"]=1
  43234. //>>excludeEnd("ctx");
  43235. ][0]),") {",$recv((1)._to_($recv(vars)._size()))._collect_((function(each){
  43236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43237. return $core.withContext(function($ctx3) {
  43238. //>>excludeEnd("ctx");
  43239. return [$recv([$recv($recv($recv(vars)._at_(each)).__comma("=$")).__comma($recv(each)._asString())
  43240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43241. ,$ctx3.sendIdx[","]=5
  43242. //>>excludeEnd("ctx");
  43243. ][0]).__comma("; ")
  43244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43245. ,$ctx3.sendIdx[","]=4
  43246. //>>excludeEnd("ctx");
  43247. ][0];
  43248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43249. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,4)});
  43250. //>>excludeEnd("ctx");
  43251. })),"resolve();}, reject); });"])
  43252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43253. ,$ctx2.sendIdx["write:"]=3
  43254. //>>excludeEnd("ctx");
  43255. ][0];
  43256. $recv(aStream)._lf();
  43257. return $recv(aStream)._write_(pragmaEnd);
  43258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43259. }, function($ctx2) {$ctx2.fillBlock({imports:imports,vars:vars},$ctx1,1)});
  43260. //>>excludeEnd("ctx");
  43261. }))
  43262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43263. ,$ctx1.sendIdx["ifNotEmpty:"]=1
  43264. //>>excludeEnd("ctx");
  43265. ][0];
  43266. return self;
  43267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43268. }, function($ctx1) {$ctx1.fill(self,"exportPackageImportsOf:on:",{aPackage:aPackage,aStream:aStream,importsForOutput:importsForOutput,pragmaStart:pragmaStart,pragmaEnd:pragmaEnd})});
  43269. //>>excludeEnd("ctx");
  43270. }; }),
  43271. $globals.AmdExporter);
  43272. $core.addMethod(
  43273. $core.method({
  43274. selector: "exportPackagePrologueOf:on:",
  43275. protocol: "output",
  43276. //>>excludeStart("ide", pragmas.excludeIdeData);
  43277. args: ["aPackage", "aStream"],
  43278. source: "exportPackagePrologueOf: aPackage on: aStream\x0a\x09| loadDependencies pragmaStart pragmaEnd |\x0a\x09pragmaStart := '//>>excludeStart(\x22imports\x22, pragmas.excludeImports);', String lf.\x0a\x09pragmaEnd := '//>>excludeEnd(\x22imports\x22);', String lf.\x0a\x09loadDependencies := self amdNamesOfPackages: aPackage loadDependencies.\x0a\x09aStream\x0a\x09\x09write: {\x0a\x09\x09\x09'define('.\x0a\x09\x09\x09(#('amber/boot' 'require'), loadDependencies asArray sorted) asJavaScriptSource.\x0a\x09\x09\x09', function($boot,requirejs){\x22use strict\x22;' };\x0a\x09\x09lf.\x0a\x09self exportPackageBodyBlockPrologueOf: aPackage on: aStream",
  43279. referencedClasses: ["String"],
  43280. //>>excludeEnd("ide");
  43281. pragmas: [],
  43282. messageSends: [",", "lf", "amdNamesOfPackages:", "loadDependencies", "write:", "asJavaScriptSource", "sorted", "asArray", "exportPackageBodyBlockPrologueOf:on:"]
  43283. }, function ($methodClass){ return function (aPackage,aStream){
  43284. var self=this,$self=this;
  43285. var loadDependencies,pragmaStart,pragmaEnd;
  43286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43287. return $core.withContext(function($ctx1) {
  43288. //>>excludeEnd("ctx");
  43289. pragmaStart=["//>>excludeStart(\x22imports\x22, pragmas.excludeImports);".__comma([$recv($globals.String)._lf()
  43290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43291. ,$ctx1.sendIdx["lf"]=1
  43292. //>>excludeEnd("ctx");
  43293. ][0])
  43294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43295. ,$ctx1.sendIdx[","]=1
  43296. //>>excludeEnd("ctx");
  43297. ][0];
  43298. pragmaEnd=["//>>excludeEnd(\x22imports\x22);".__comma([$recv($globals.String)._lf()
  43299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43300. ,$ctx1.sendIdx["lf"]=2
  43301. //>>excludeEnd("ctx");
  43302. ][0])
  43303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43304. ,$ctx1.sendIdx[","]=2
  43305. //>>excludeEnd("ctx");
  43306. ][0];
  43307. loadDependencies=$self._amdNamesOfPackages_($recv(aPackage)._loadDependencies());
  43308. $recv(aStream)._write_(["define(",$recv(["amber/boot", "require"].__comma($recv($recv(loadDependencies)._asArray())._sorted()))._asJavaScriptSource(),", function($boot,requirejs){\x22use strict\x22;"]);
  43309. $recv(aStream)._lf();
  43310. $self._exportPackageBodyBlockPrologueOf_on_(aPackage,aStream);
  43311. return self;
  43312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43313. }, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aPackage:aPackage,aStream:aStream,loadDependencies:loadDependencies,pragmaStart:pragmaStart,pragmaEnd:pragmaEnd})});
  43314. //>>excludeEnd("ctx");
  43315. }; }),
  43316. $globals.AmdExporter);
  43317. $core.addMethod(
  43318. $core.method({
  43319. selector: "importsForOutput:",
  43320. protocol: "private",
  43321. //>>excludeStart("ide", pragmas.excludeIdeData);
  43322. args: ["aPackage"],
  43323. source: "importsForOutput: aPackage\x0a\x09\x22Returns an association where key is list of import variables\x0a\x09and value is list of external dependencies, with ones imported as variables\x0a\x09put at the beginning with same order as is in key.\x0a\x09\x0a\x09For example imports:{'jQuery'->'jquery'. 'bootstrap'} would yield\x0a\x09#('jQuery') -> #('jquery' 'bootstrap')\x22\x0a\x09| namedImports anonImports importVarNames |\x0a\x09namedImports := #().\x0a\x09anonImports := #().\x0a\x09importVarNames := #().\x0a\x09aPackage imports do: [ :each | each isString\x0a\x09\x09ifTrue: [ anonImports add: each ]\x0a\x09\x09ifFalse: [ namedImports add: each value.\x0a\x09\x09\x09importVarNames add: each key ]].\x0a\x09^ importVarNames -> (namedImports, anonImports)",
  43324. referencedClasses: [],
  43325. //>>excludeEnd("ide");
  43326. pragmas: [],
  43327. messageSends: ["do:", "imports", "ifTrue:ifFalse:", "isString", "add:", "value", "key", "->", ","]
  43328. }, function ($methodClass){ return function (aPackage){
  43329. var self=this,$self=this;
  43330. var namedImports,anonImports,importVarNames;
  43331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43332. return $core.withContext(function($ctx1) {
  43333. //>>excludeEnd("ctx");
  43334. namedImports=[];
  43335. anonImports=[];
  43336. importVarNames=[];
  43337. $recv($recv(aPackage)._imports())._do_((function(each){
  43338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43339. return $core.withContext(function($ctx2) {
  43340. //>>excludeEnd("ctx");
  43341. if($core.assert($recv(each)._isString())){
  43342. return [$recv(anonImports)._add_(each)
  43343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43344. ,$ctx2.sendIdx["add:"]=1
  43345. //>>excludeEnd("ctx");
  43346. ][0];
  43347. } else {
  43348. [$recv(namedImports)._add_($recv(each)._value())
  43349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43350. ,$ctx2.sendIdx["add:"]=2
  43351. //>>excludeEnd("ctx");
  43352. ][0];
  43353. return $recv(importVarNames)._add_($recv(each)._key());
  43354. }
  43355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43356. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  43357. //>>excludeEnd("ctx");
  43358. }));
  43359. return $recv(importVarNames).__minus_gt($recv(namedImports).__comma(anonImports));
  43360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43361. }, function($ctx1) {$ctx1.fill(self,"importsForOutput:",{aPackage:aPackage,namedImports:namedImports,anonImports:anonImports,importVarNames:importVarNames})});
  43362. //>>excludeEnd("ctx");
  43363. }; }),
  43364. $globals.AmdExporter);
  43365. $core.addClass("ChunkParser", $globals.Object, "Platform-ImportExport");
  43366. $core.setSlots($globals.ChunkParser, ["stream", "last"]);
  43367. //>>excludeStart("ide", pragmas.excludeIdeData);
  43368. $globals.ChunkParser.comment="I am responsible for parsing aStream contents in the chunk format.\x0a\x0a## API\x0a\x0a ChunkParser new\x0a stream: aStream;\x0a nextChunk";
  43369. //>>excludeEnd("ide");
  43370. $core.addMethod(
  43371. $core.method({
  43372. selector: "last",
  43373. protocol: "accessing",
  43374. //>>excludeStart("ide", pragmas.excludeIdeData);
  43375. args: [],
  43376. source: "last\x0a\x09^ last",
  43377. referencedClasses: [],
  43378. //>>excludeEnd("ide");
  43379. pragmas: [],
  43380. messageSends: []
  43381. }, function ($methodClass){ return function (){
  43382. var self=this,$self=this;
  43383. return $self.last;
  43384. }; }),
  43385. $globals.ChunkParser);
  43386. $core.addMethod(
  43387. $core.method({
  43388. selector: "nextChunk",
  43389. protocol: "reading",
  43390. //>>excludeStart("ide", pragmas.excludeIdeData);
  43391. args: [],
  43392. source: "nextChunk\x0a\x09\x22The chunk format (Smalltalk Interchange Format or Fileout format)\x0a\x09is a trivial format but can be a bit tricky to understand:\x0a\x09\x09- Uses the exclamation mark as delimiter of chunks.\x0a\x09\x09- Inside a chunk a normal exclamation mark must be doubled.\x0a\x09\x09- A non empty chunk must be a valid Smalltalk expression.\x0a\x09\x09- A chunk on top level with a preceding empty chunk is an instruction chunk:\x0a\x09\x09\x09- The object created by the expression then takes over reading chunks.\x0a\x0a\x09This method returns next chunk as a String (trimmed), empty String (all whitespace) or nil.\x22\x0a\x0a\x09| char result chunk |\x0a\x09result := '' writeStream.\x0a\x09\x09[ char := stream next.\x0a\x09\x09char notNil ] whileTrue: [\x0a\x09\x09\x09\x09char = '!' ifTrue: [\x0a\x09\x09\x09\x09\x09\x09stream peek = '!'\x0a\x09\x09\x09\x09\x09\x09\x09\x09ifTrue: [ stream next \x22skipping the escape double\x22 ]\x0a\x09\x09\x09\x09\x09\x09\x09\x09ifFalse: [ ^ last := result contents trimBoth \x22chunk end marker found\x22 ]].\x0a\x09\x09\x09\x09result nextPut: char ].\x0a\x09^ last := nil \x22a chunk needs to end with !\x22",
  43393. referencedClasses: [],
  43394. //>>excludeEnd("ide");
  43395. pragmas: [],
  43396. messageSends: ["writeStream", "whileTrue:", "next", "notNil", "ifTrue:", "=", "ifTrue:ifFalse:", "peek", "trimBoth", "contents", "nextPut:"]
  43397. }, function ($methodClass){ return function (){
  43398. var self=this,$self=this;
  43399. var char,result,chunk;
  43400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43401. return $core.withContext(function($ctx1) {
  43402. //>>excludeEnd("ctx");
  43403. var $early={};
  43404. try {
  43405. result=""._writeStream();
  43406. $recv((function(){
  43407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43408. return $core.withContext(function($ctx2) {
  43409. //>>excludeEnd("ctx");
  43410. char=[$recv($self.stream)._next()
  43411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43412. ,$ctx2.sendIdx["next"]=1
  43413. //>>excludeEnd("ctx");
  43414. ][0];
  43415. return $recv(char)._notNil();
  43416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43417. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43418. //>>excludeEnd("ctx");
  43419. }))._whileTrue_((function(){
  43420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43421. return $core.withContext(function($ctx2) {
  43422. //>>excludeEnd("ctx");
  43423. if($core.assert([$recv(char).__eq("!")
  43424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43425. ,$ctx2.sendIdx["="]=1
  43426. //>>excludeEnd("ctx");
  43427. ][0])){
  43428. if($core.assert($recv($recv($self.stream)._peek()).__eq("!"))){
  43429. $recv($self.stream)._next();
  43430. } else {
  43431. $self.last=$recv($recv(result)._contents())._trimBoth();
  43432. throw $early=[$self.last];
  43433. }
  43434. }
  43435. return $recv(result)._nextPut_(char);
  43436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43437. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  43438. //>>excludeEnd("ctx");
  43439. }));
  43440. $self.last=nil;
  43441. return $self.last;
  43442. }
  43443. catch(e) {if(e===$early)return e[0]; throw e}
  43444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43445. }, function($ctx1) {$ctx1.fill(self,"nextChunk",{char:char,result:result,chunk:chunk})});
  43446. //>>excludeEnd("ctx");
  43447. }; }),
  43448. $globals.ChunkParser);
  43449. $core.addMethod(
  43450. $core.method({
  43451. selector: "stream:",
  43452. protocol: "accessing",
  43453. //>>excludeStart("ide", pragmas.excludeIdeData);
  43454. args: ["aStream"],
  43455. source: "stream: aStream\x0a\x09stream := aStream",
  43456. referencedClasses: [],
  43457. //>>excludeEnd("ide");
  43458. pragmas: [],
  43459. messageSends: []
  43460. }, function ($methodClass){ return function (aStream){
  43461. var self=this,$self=this;
  43462. $self.stream=aStream;
  43463. return self;
  43464. }; }),
  43465. $globals.ChunkParser);
  43466. $core.addMethod(
  43467. $core.method({
  43468. selector: "on:",
  43469. protocol: "instance creation",
  43470. //>>excludeStart("ide", pragmas.excludeIdeData);
  43471. args: ["aStream"],
  43472. source: "on: aStream\x0a\x09^ self new stream: aStream",
  43473. referencedClasses: [],
  43474. //>>excludeEnd("ide");
  43475. pragmas: [],
  43476. messageSends: ["stream:", "new"]
  43477. }, function ($methodClass){ return function (aStream){
  43478. var self=this,$self=this;
  43479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43480. return $core.withContext(function($ctx1) {
  43481. //>>excludeEnd("ctx");
  43482. return $recv($self._new())._stream_(aStream);
  43483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43484. }, function($ctx1) {$ctx1.fill(self,"on:",{aStream:aStream})});
  43485. //>>excludeEnd("ctx");
  43486. }; }),
  43487. $globals.ChunkParser.a$cls);
  43488. $core.addClass("ClassCommentReader", $globals.Object, "Platform-ImportExport");
  43489. $core.setSlots($globals.ClassCommentReader, ["class"]);
  43490. //>>excludeStart("ide", pragmas.excludeIdeData);
  43491. $globals.ClassCommentReader.comment="I provide a mechanism for retrieving class comments stored on a file.\x0a\x0aSee also `ClassCategoryReader`.";
  43492. //>>excludeEnd("ide");
  43493. $core.addMethod(
  43494. $core.method({
  43495. selector: "class:",
  43496. protocol: "accessing",
  43497. //>>excludeStart("ide", pragmas.excludeIdeData);
  43498. args: ["aClass"],
  43499. source: "class: aClass\x0a\x09class := aClass",
  43500. referencedClasses: [],
  43501. //>>excludeEnd("ide");
  43502. pragmas: [],
  43503. messageSends: []
  43504. }, function ($methodClass){ return function (aClass){
  43505. var self=this,$self=this;
  43506. $self.class=aClass;
  43507. return self;
  43508. }; }),
  43509. $globals.ClassCommentReader);
  43510. $core.addMethod(
  43511. $core.method({
  43512. selector: "initialize",
  43513. protocol: "initialization",
  43514. //>>excludeStart("ide", pragmas.excludeIdeData);
  43515. args: [],
  43516. source: "initialize\x0a\x09super initialize.",
  43517. referencedClasses: [],
  43518. //>>excludeEnd("ide");
  43519. pragmas: [],
  43520. messageSends: ["initialize"]
  43521. }, function ($methodClass){ return function (){
  43522. var self=this,$self=this;
  43523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43524. return $core.withContext(function($ctx1) {
  43525. //>>excludeEnd("ctx");
  43526. [(
  43527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43528. $ctx1.supercall = true,
  43529. //>>excludeEnd("ctx");
  43530. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  43531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43532. ,$ctx1.supercall = false
  43533. //>>excludeEnd("ctx");
  43534. ][0];
  43535. return self;
  43536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43537. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  43538. //>>excludeEnd("ctx");
  43539. }; }),
  43540. $globals.ClassCommentReader);
  43541. $core.addMethod(
  43542. $core.method({
  43543. selector: "scanFrom:",
  43544. protocol: "fileIn",
  43545. //>>excludeStart("ide", pragmas.excludeIdeData);
  43546. args: ["aChunkParser"],
  43547. source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09chunk := aChunkParser nextChunk.\x0a\x09chunk ifNotEmpty: [\x0a\x09\x09self setComment: chunk ].",
  43548. referencedClasses: [],
  43549. //>>excludeEnd("ide");
  43550. pragmas: [],
  43551. messageSends: ["nextChunk", "ifNotEmpty:", "setComment:"]
  43552. }, function ($methodClass){ return function (aChunkParser){
  43553. var self=this,$self=this;
  43554. var chunk;
  43555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43556. return $core.withContext(function($ctx1) {
  43557. //>>excludeEnd("ctx");
  43558. chunk=$recv(aChunkParser)._nextChunk();
  43559. $recv(chunk)._ifNotEmpty_((function(){
  43560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43561. return $core.withContext(function($ctx2) {
  43562. //>>excludeEnd("ctx");
  43563. return $self._setComment_(chunk);
  43564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43565. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43566. //>>excludeEnd("ctx");
  43567. }));
  43568. return self;
  43569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43570. }, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk})});
  43571. //>>excludeEnd("ctx");
  43572. }; }),
  43573. $globals.ClassCommentReader);
  43574. $core.addMethod(
  43575. $core.method({
  43576. selector: "setComment:",
  43577. protocol: "private",
  43578. //>>excludeStart("ide", pragmas.excludeIdeData);
  43579. args: ["aString"],
  43580. source: "setComment: aString\x0a\x09class comment: aString",
  43581. referencedClasses: [],
  43582. //>>excludeEnd("ide");
  43583. pragmas: [],
  43584. messageSends: ["comment:"]
  43585. }, function ($methodClass){ return function (aString){
  43586. var self=this,$self=this;
  43587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43588. return $core.withContext(function($ctx1) {
  43589. //>>excludeEnd("ctx");
  43590. $recv($self.class)._comment_(aString);
  43591. return self;
  43592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43593. }, function($ctx1) {$ctx1.fill(self,"setComment:",{aString:aString})});
  43594. //>>excludeEnd("ctx");
  43595. }; }),
  43596. $globals.ClassCommentReader);
  43597. $core.addClass("ClassProtocolReader", $globals.Object, "Platform-ImportExport");
  43598. $core.setSlots($globals.ClassProtocolReader, ["class", "category"]);
  43599. //>>excludeStart("ide", pragmas.excludeIdeData);
  43600. $globals.ClassProtocolReader.comment="I provide a mechanism for retrieving class descriptions stored on a file in the Smalltalk chunk format.";
  43601. //>>excludeEnd("ide");
  43602. $core.addMethod(
  43603. $core.method({
  43604. selector: "class:category:",
  43605. protocol: "accessing",
  43606. //>>excludeStart("ide", pragmas.excludeIdeData);
  43607. args: ["aClass", "aString"],
  43608. source: "class: aClass category: aString\x0a\x09class := aClass.\x0a\x09category := aString",
  43609. referencedClasses: [],
  43610. //>>excludeEnd("ide");
  43611. pragmas: [],
  43612. messageSends: []
  43613. }, function ($methodClass){ return function (aClass,aString){
  43614. var self=this,$self=this;
  43615. $self.class=aClass;
  43616. $self.category=aString;
  43617. return self;
  43618. }; }),
  43619. $globals.ClassProtocolReader);
  43620. $core.addMethod(
  43621. $core.method({
  43622. selector: "compileMethod:",
  43623. protocol: "private",
  43624. //>>excludeStart("ide", pragmas.excludeIdeData);
  43625. args: ["aString"],
  43626. source: "compileMethod: aString\x0a\x09Compiler new install: aString forClass: class protocol: category",
  43627. referencedClasses: ["Compiler"],
  43628. //>>excludeEnd("ide");
  43629. pragmas: [],
  43630. messageSends: ["install:forClass:protocol:", "new"]
  43631. }, function ($methodClass){ return function (aString){
  43632. var self=this,$self=this;
  43633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43634. return $core.withContext(function($ctx1) {
  43635. //>>excludeEnd("ctx");
  43636. $recv($recv($globals.Compiler)._new())._install_forClass_protocol_(aString,$self.class,$self.category);
  43637. return self;
  43638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43639. }, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString})});
  43640. //>>excludeEnd("ctx");
  43641. }; }),
  43642. $globals.ClassProtocolReader);
  43643. $core.addMethod(
  43644. $core.method({
  43645. selector: "initialize",
  43646. protocol: "initialization",
  43647. //>>excludeStart("ide", pragmas.excludeIdeData);
  43648. args: [],
  43649. source: "initialize\x0a\x09super initialize.",
  43650. referencedClasses: [],
  43651. //>>excludeEnd("ide");
  43652. pragmas: [],
  43653. messageSends: ["initialize"]
  43654. }, function ($methodClass){ return function (){
  43655. var self=this,$self=this;
  43656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43657. return $core.withContext(function($ctx1) {
  43658. //>>excludeEnd("ctx");
  43659. [(
  43660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43661. $ctx1.supercall = true,
  43662. //>>excludeEnd("ctx");
  43663. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  43664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43665. ,$ctx1.supercall = false
  43666. //>>excludeEnd("ctx");
  43667. ][0];
  43668. return self;
  43669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43670. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  43671. //>>excludeEnd("ctx");
  43672. }; }),
  43673. $globals.ClassProtocolReader);
  43674. $core.addMethod(
  43675. $core.method({
  43676. selector: "scanFrom:",
  43677. protocol: "fileIn",
  43678. //>>excludeStart("ide", pragmas.excludeIdeData);
  43679. args: ["aChunkParser"],
  43680. source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09[ chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty ] whileFalse: [\x0a\x09\x09self compileMethod: chunk ]",
  43681. referencedClasses: [],
  43682. //>>excludeEnd("ide");
  43683. pragmas: [],
  43684. messageSends: ["whileFalse:", "nextChunk", "isEmpty", "compileMethod:"]
  43685. }, function ($methodClass){ return function (aChunkParser){
  43686. var self=this,$self=this;
  43687. var chunk;
  43688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43689. return $core.withContext(function($ctx1) {
  43690. //>>excludeEnd("ctx");
  43691. $recv((function(){
  43692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43693. return $core.withContext(function($ctx2) {
  43694. //>>excludeEnd("ctx");
  43695. chunk=$recv(aChunkParser)._nextChunk();
  43696. return $recv(chunk)._isEmpty();
  43697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43698. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43699. //>>excludeEnd("ctx");
  43700. }))._whileFalse_((function(){
  43701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43702. return $core.withContext(function($ctx2) {
  43703. //>>excludeEnd("ctx");
  43704. return $self._compileMethod_(chunk);
  43705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43706. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  43707. //>>excludeEnd("ctx");
  43708. }));
  43709. return self;
  43710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43711. }, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk})});
  43712. //>>excludeEnd("ctx");
  43713. }; }),
  43714. $globals.ClassProtocolReader);
  43715. $core.addClass("ExportMethodProtocol", $globals.Object, "Platform-ImportExport");
  43716. $core.setSlots($globals.ExportMethodProtocol, ["name", "theClass"]);
  43717. //>>excludeStart("ide", pragmas.excludeIdeData);
  43718. $globals.ExportMethodProtocol.comment="I am an abstraction for a method protocol in a class / metaclass.\x0a\x0aI know of my class, name and methods.\x0aI am used when exporting a package.";
  43719. //>>excludeEnd("ide");
  43720. $core.addMethod(
  43721. $core.method({
  43722. selector: "methods",
  43723. protocol: "accessing",
  43724. //>>excludeStart("ide", pragmas.excludeIdeData);
  43725. args: [],
  43726. source: "methods\x0a\x09^ (self theClass methodsInProtocol: self name)\x0a\x09\x09sorted: [ :a :b | a selector <= b selector ]",
  43727. referencedClasses: [],
  43728. //>>excludeEnd("ide");
  43729. pragmas: [],
  43730. messageSends: ["sorted:", "methodsInProtocol:", "theClass", "name", "<=", "selector"]
  43731. }, function ($methodClass){ return function (){
  43732. var self=this,$self=this;
  43733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43734. return $core.withContext(function($ctx1) {
  43735. //>>excludeEnd("ctx");
  43736. return $recv($recv($self._theClass())._methodsInProtocol_($self._name()))._sorted_((function(a,b){
  43737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43738. return $core.withContext(function($ctx2) {
  43739. //>>excludeEnd("ctx");
  43740. return $recv([$recv(a)._selector()
  43741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43742. ,$ctx2.sendIdx["selector"]=1
  43743. //>>excludeEnd("ctx");
  43744. ][0]).__lt_eq($recv(b)._selector());
  43745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43746. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  43747. //>>excludeEnd("ctx");
  43748. }));
  43749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43750. }, function($ctx1) {$ctx1.fill(self,"methods",{})});
  43751. //>>excludeEnd("ctx");
  43752. }; }),
  43753. $globals.ExportMethodProtocol);
  43754. $core.addMethod(
  43755. $core.method({
  43756. selector: "name",
  43757. protocol: "accessing",
  43758. //>>excludeStart("ide", pragmas.excludeIdeData);
  43759. args: [],
  43760. source: "name\x0a\x09^ name",
  43761. referencedClasses: [],
  43762. //>>excludeEnd("ide");
  43763. pragmas: [],
  43764. messageSends: []
  43765. }, function ($methodClass){ return function (){
  43766. var self=this,$self=this;
  43767. return $self.name;
  43768. }; }),
  43769. $globals.ExportMethodProtocol);
  43770. $core.addMethod(
  43771. $core.method({
  43772. selector: "name:",
  43773. protocol: "accessing",
  43774. //>>excludeStart("ide", pragmas.excludeIdeData);
  43775. args: ["aString"],
  43776. source: "name: aString\x0a\x09name := aString",
  43777. referencedClasses: [],
  43778. //>>excludeEnd("ide");
  43779. pragmas: [],
  43780. messageSends: []
  43781. }, function ($methodClass){ return function (aString){
  43782. var self=this,$self=this;
  43783. $self.name=aString;
  43784. return self;
  43785. }; }),
  43786. $globals.ExportMethodProtocol);
  43787. $core.addMethod(
  43788. $core.method({
  43789. selector: "ownMethods",
  43790. protocol: "accessing",
  43791. //>>excludeStart("ide", pragmas.excludeIdeData);
  43792. args: [],
  43793. source: "ownMethods\x0a\x09^ (self theClass ownMethodsInProtocol: self name)\x0a\x09\x09sorted: [ :a :b | a selector <= b selector ]",
  43794. referencedClasses: [],
  43795. //>>excludeEnd("ide");
  43796. pragmas: [],
  43797. messageSends: ["sorted:", "ownMethodsInProtocol:", "theClass", "name", "<=", "selector"]
  43798. }, function ($methodClass){ return function (){
  43799. var self=this,$self=this;
  43800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43801. return $core.withContext(function($ctx1) {
  43802. //>>excludeEnd("ctx");
  43803. return $recv($recv($self._theClass())._ownMethodsInProtocol_($self._name()))._sorted_((function(a,b){
  43804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43805. return $core.withContext(function($ctx2) {
  43806. //>>excludeEnd("ctx");
  43807. return $recv([$recv(a)._selector()
  43808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43809. ,$ctx2.sendIdx["selector"]=1
  43810. //>>excludeEnd("ctx");
  43811. ][0]).__lt_eq($recv(b)._selector());
  43812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43813. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  43814. //>>excludeEnd("ctx");
  43815. }));
  43816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43817. }, function($ctx1) {$ctx1.fill(self,"ownMethods",{})});
  43818. //>>excludeEnd("ctx");
  43819. }; }),
  43820. $globals.ExportMethodProtocol);
  43821. $core.addMethod(
  43822. $core.method({
  43823. selector: "theClass",
  43824. protocol: "accessing",
  43825. //>>excludeStart("ide", pragmas.excludeIdeData);
  43826. args: [],
  43827. source: "theClass\x0a\x09^ theClass",
  43828. referencedClasses: [],
  43829. //>>excludeEnd("ide");
  43830. pragmas: [],
  43831. messageSends: []
  43832. }, function ($methodClass){ return function (){
  43833. var self=this,$self=this;
  43834. return $self.theClass;
  43835. }; }),
  43836. $globals.ExportMethodProtocol);
  43837. $core.addMethod(
  43838. $core.method({
  43839. selector: "theClass:",
  43840. protocol: "accessing",
  43841. //>>excludeStart("ide", pragmas.excludeIdeData);
  43842. args: ["aClass"],
  43843. source: "theClass: aClass\x0a\x09theClass := aClass",
  43844. referencedClasses: [],
  43845. //>>excludeEnd("ide");
  43846. pragmas: [],
  43847. messageSends: []
  43848. }, function ($methodClass){ return function (aClass){
  43849. var self=this,$self=this;
  43850. $self.theClass=aClass;
  43851. return self;
  43852. }; }),
  43853. $globals.ExportMethodProtocol);
  43854. $core.addMethod(
  43855. $core.method({
  43856. selector: "name:theClass:",
  43857. protocol: "instance creation",
  43858. //>>excludeStart("ide", pragmas.excludeIdeData);
  43859. args: ["aString", "aClass"],
  43860. source: "name: aString theClass: aClass\x0a\x09^ self new\x0a\x09\x09name: aString;\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
  43861. referencedClasses: [],
  43862. //>>excludeEnd("ide");
  43863. pragmas: [],
  43864. messageSends: ["name:", "new", "theClass:", "yourself"]
  43865. }, function ($methodClass){ return function (aString,aClass){
  43866. var self=this,$self=this;
  43867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43868. return $core.withContext(function($ctx1) {
  43869. //>>excludeEnd("ctx");
  43870. var $1;
  43871. $1=$self._new();
  43872. $recv($1)._name_(aString);
  43873. $recv($1)._theClass_(aClass);
  43874. return $recv($1)._yourself();
  43875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43876. }, function($ctx1) {$ctx1.fill(self,"name:theClass:",{aString:aString,aClass:aClass})});
  43877. //>>excludeEnd("ctx");
  43878. }; }),
  43879. $globals.ExportMethodProtocol.a$cls);
  43880. $core.addClass("Importer", $globals.Object, "Platform-ImportExport");
  43881. $core.setSlots($globals.Importer, ["lastSection", "lastChunk"]);
  43882. //>>excludeStart("ide", pragmas.excludeIdeData);
  43883. $globals.Importer.comment="I can import Amber code from a string in the chunk format.\x0a\x0a## API\x0a\x0a Importer new import: aString";
  43884. //>>excludeEnd("ide");
  43885. $core.addMethod(
  43886. $core.method({
  43887. selector: "import:",
  43888. protocol: "fileIn",
  43889. //>>excludeStart("ide", pragmas.excludeIdeData);
  43890. args: ["aStream"],
  43891. source: "import: aStream\x0a\x09| chunk result parser lastEmpty |\x0a\x09parser := ChunkParser on: aStream.\x0a\x09lastEmpty := false.\x0a\x09lastSection := 'n/a, not started'.\x0a\x09lastChunk := nil.\x0a\x09[\x0a\x09[ chunk := parser nextChunk.\x0a\x09chunk isNil ] whileFalse: [\x0a\x09\x09chunk\x0a\x09\x09\x09ifEmpty: [ lastEmpty := true ]\x0a\x09\x09\x09ifNotEmpty: [\x0a\x09\x09\x09\x09lastSection := chunk.\x0a\x09\x09\x09\x09result := Compiler new evaluateExpression: chunk.\x0a\x09\x09\x09\x09lastEmpty\x0a\x09\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09lastEmpty := false.\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09result scanFrom: parser ]] ].\x0a\x09lastSection := 'n/a, finished'\x0a\x09] on: Error do: [:e | lastChunk := parser last. e pass ].",
  43892. referencedClasses: ["ChunkParser", "Compiler", "Error"],
  43893. //>>excludeEnd("ide");
  43894. pragmas: [],
  43895. messageSends: ["on:", "on:do:", "whileFalse:", "nextChunk", "isNil", "ifEmpty:ifNotEmpty:", "evaluateExpression:", "new", "ifTrue:", "scanFrom:", "last", "pass"]
  43896. }, function ($methodClass){ return function (aStream){
  43897. var self=this,$self=this;
  43898. var chunk,result,parser,lastEmpty;
  43899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43900. return $core.withContext(function($ctx1) {
  43901. //>>excludeEnd("ctx");
  43902. parser=$recv($globals.ChunkParser)._on_(aStream);
  43903. lastEmpty=false;
  43904. $self.lastSection="n/a, not started";
  43905. $self.lastChunk=nil;
  43906. $recv((function(){
  43907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43908. return $core.withContext(function($ctx2) {
  43909. //>>excludeEnd("ctx");
  43910. $recv((function(){
  43911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43912. return $core.withContext(function($ctx3) {
  43913. //>>excludeEnd("ctx");
  43914. chunk=$recv(parser)._nextChunk();
  43915. return $recv(chunk)._isNil();
  43916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43917. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  43918. //>>excludeEnd("ctx");
  43919. }))._whileFalse_((function(){
  43920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43921. return $core.withContext(function($ctx3) {
  43922. //>>excludeEnd("ctx");
  43923. return $recv(chunk)._ifEmpty_ifNotEmpty_((function(){
  43924. lastEmpty=true;
  43925. return lastEmpty;
  43926. }),(function(){
  43927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43928. return $core.withContext(function($ctx4) {
  43929. //>>excludeEnd("ctx");
  43930. $self.lastSection=chunk;
  43931. result=$recv($recv($globals.Compiler)._new())._evaluateExpression_(chunk);
  43932. if($core.assert(lastEmpty)){
  43933. lastEmpty=false;
  43934. return $recv(result)._scanFrom_(parser);
  43935. }
  43936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43937. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)});
  43938. //>>excludeEnd("ctx");
  43939. }));
  43940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43941. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  43942. //>>excludeEnd("ctx");
  43943. }));
  43944. $self.lastSection="n/a, finished";
  43945. return $self.lastSection;
  43946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43947. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43948. //>>excludeEnd("ctx");
  43949. }))._on_do_($globals.Error,(function(e){
  43950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43951. return $core.withContext(function($ctx2) {
  43952. //>>excludeEnd("ctx");
  43953. $self.lastChunk=$recv(parser)._last();
  43954. return $recv(e)._pass();
  43955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43956. }, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,7)});
  43957. //>>excludeEnd("ctx");
  43958. }));
  43959. return self;
  43960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43961. }, function($ctx1) {$ctx1.fill(self,"import:",{aStream:aStream,chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty})});
  43962. //>>excludeEnd("ctx");
  43963. }; }),
  43964. $globals.Importer);
  43965. $core.addMethod(
  43966. $core.method({
  43967. selector: "lastChunk",
  43968. protocol: "accessing",
  43969. //>>excludeStart("ide", pragmas.excludeIdeData);
  43970. args: [],
  43971. source: "lastChunk\x0a\x09^ lastChunk",
  43972. referencedClasses: [],
  43973. //>>excludeEnd("ide");
  43974. pragmas: [],
  43975. messageSends: []
  43976. }, function ($methodClass){ return function (){
  43977. var self=this,$self=this;
  43978. return $self.lastChunk;
  43979. }; }),
  43980. $globals.Importer);
  43981. $core.addMethod(
  43982. $core.method({
  43983. selector: "lastSection",
  43984. protocol: "accessing",
  43985. //>>excludeStart("ide", pragmas.excludeIdeData);
  43986. args: [],
  43987. source: "lastSection\x0a\x09^ lastSection",
  43988. referencedClasses: [],
  43989. //>>excludeEnd("ide");
  43990. pragmas: [],
  43991. messageSends: []
  43992. }, function ($methodClass){ return function (){
  43993. var self=this,$self=this;
  43994. return $self.lastSection;
  43995. }; }),
  43996. $globals.Importer);
  43997. $core.addClass("PackageCommitError", $globals.Error, "Platform-ImportExport");
  43998. //>>excludeStart("ide", pragmas.excludeIdeData);
  43999. $globals.PackageCommitError.comment="I get signaled when an attempt to commit a package has failed.";
  44000. //>>excludeEnd("ide");
  44001. $core.addClass("PackageHandler", $globals.Object, "Platform-ImportExport");
  44002. //>>excludeStart("ide", pragmas.excludeIdeData);
  44003. $globals.PackageHandler.comment="I am responsible for handling package loading and committing.\x0a\x0aI should not be used directly. Instead, use the corresponding `Package` methods.";
  44004. //>>excludeEnd("ide");
  44005. $core.addMethod(
  44006. $core.method({
  44007. selector: "ajaxPutAt:data:onSuccess:onError:",
  44008. protocol: "private",
  44009. //>>excludeStart("ide", pragmas.excludeIdeData);
  44010. args: ["aURL", "aString", "aBlock", "anotherBlock"],
  44011. source: "ajaxPutAt: aURL data: aString onSuccess: aBlock onError: anotherBlock\x0a\x09| xhr |\x0a\x09xhr := Platform newXhr.\x0a\x09xhr open: 'PUT' url: aURL async: true.\x0a\x09xhr onreadystatechange: [\x0a\x09\x09xhr readyState = 4 ifTrue: [\x0a\x09\x09\x09(xhr status >= 200 and: [ xhr status < 300 ])\x0a\x09\x09\x09\x09ifTrue: aBlock\x0a\x09\x09\x09\x09ifFalse: anotherBlock ]].\x0a\x09xhr send: aString",
  44012. referencedClasses: ["Platform"],
  44013. //>>excludeEnd("ide");
  44014. pragmas: [],
  44015. messageSends: ["newXhr", "open:url:async:", "onreadystatechange:", "ifTrue:", "=", "readyState", "ifTrue:ifFalse:", "and:", ">=", "status", "<", "send:"]
  44016. }, function ($methodClass){ return function (aURL,aString,aBlock,anotherBlock){
  44017. var self=this,$self=this;
  44018. var xhr;
  44019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44020. return $core.withContext(function($ctx1) {
  44021. //>>excludeEnd("ctx");
  44022. var $1;
  44023. xhr=$recv($globals.Platform)._newXhr();
  44024. $recv(xhr)._open_url_async_("PUT",aURL,true);
  44025. $recv(xhr)._onreadystatechange_((function(){
  44026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44027. return $core.withContext(function($ctx2) {
  44028. //>>excludeEnd("ctx");
  44029. if($core.assert($recv($recv(xhr)._readyState()).__eq((4)))){
  44030. if($core.assert($recv([$recv(xhr)._status()
  44031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44032. ,$ctx2.sendIdx["status"]=1
  44033. //>>excludeEnd("ctx");
  44034. ][0]).__gt_eq((200)))){
  44035. $1=$recv($recv(xhr)._status()).__lt((300));
  44036. } else {
  44037. $1=false;
  44038. }
  44039. return $recv($1)._ifTrue_ifFalse_(aBlock,anotherBlock);
  44040. }
  44041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44042. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  44043. //>>excludeEnd("ctx");
  44044. }));
  44045. $recv(xhr)._send_(aString);
  44046. return self;
  44047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44048. }, function($ctx1) {$ctx1.fill(self,"ajaxPutAt:data:onSuccess:onError:",{aURL:aURL,aString:aString,aBlock:aBlock,anotherBlock:anotherBlock,xhr:xhr})});
  44049. //>>excludeEnd("ctx");
  44050. }; }),
  44051. $globals.PackageHandler);
  44052. $core.addMethod(
  44053. $core.method({
  44054. selector: "chunkContentsFor:",
  44055. protocol: "accessing",
  44056. //>>excludeStart("ide", pragmas.excludeIdeData);
  44057. args: ["aPackage"],
  44058. source: "chunkContentsFor: aPackage\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09self chunkExporter exportPackage: aPackage on: str ]",
  44059. referencedClasses: ["String"],
  44060. //>>excludeEnd("ide");
  44061. pragmas: [],
  44062. messageSends: ["streamContents:", "exportPackage:on:", "chunkExporter"]
  44063. }, function ($methodClass){ return function (aPackage){
  44064. var self=this,$self=this;
  44065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44066. return $core.withContext(function($ctx1) {
  44067. //>>excludeEnd("ctx");
  44068. return $recv($globals.String)._streamContents_((function(str){
  44069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44070. return $core.withContext(function($ctx2) {
  44071. //>>excludeEnd("ctx");
  44072. return $recv($self._chunkExporter())._exportPackage_on_(aPackage,str);
  44073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44074. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  44075. //>>excludeEnd("ctx");
  44076. }));
  44077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44078. }, function($ctx1) {$ctx1.fill(self,"chunkContentsFor:",{aPackage:aPackage})});
  44079. //>>excludeEnd("ctx");
  44080. }; }),
  44081. $globals.PackageHandler);
  44082. $core.addMethod(
  44083. $core.method({
  44084. selector: "chunkExporter",
  44085. protocol: "factory",
  44086. //>>excludeStart("ide", pragmas.excludeIdeData);
  44087. args: [],
  44088. source: "chunkExporter\x0a\x09^ self chunkExporterClass new",
  44089. referencedClasses: [],
  44090. //>>excludeEnd("ide");
  44091. pragmas: [],
  44092. messageSends: ["new", "chunkExporterClass"]
  44093. }, function ($methodClass){ return function (){
  44094. var self=this,$self=this;
  44095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44096. return $core.withContext(function($ctx1) {
  44097. //>>excludeEnd("ctx");
  44098. return $recv($self._chunkExporterClass())._new();
  44099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44100. }, function($ctx1) {$ctx1.fill(self,"chunkExporter",{})});
  44101. //>>excludeEnd("ctx");
  44102. }; }),
  44103. $globals.PackageHandler);
  44104. $core.addMethod(
  44105. $core.method({
  44106. selector: "chunkExporterClass",
  44107. protocol: "accessing",
  44108. //>>excludeStart("ide", pragmas.excludeIdeData);
  44109. args: [],
  44110. source: "chunkExporterClass\x0a\x09^ ChunkExporter",
  44111. referencedClasses: ["ChunkExporter"],
  44112. //>>excludeEnd("ide");
  44113. pragmas: [],
  44114. messageSends: []
  44115. }, function ($methodClass){ return function (){
  44116. var self=this,$self=this;
  44117. return $globals.ChunkExporter;
  44118. }; }),
  44119. $globals.PackageHandler);
  44120. $core.addMethod(
  44121. $core.method({
  44122. selector: "commit:",
  44123. protocol: "committing",
  44124. //>>excludeStart("ide", pragmas.excludeIdeData);
  44125. args: ["aPackage"],
  44126. source: "commit: aPackage\x0a\x09self \x0a\x09\x09commit: aPackage\x0a\x09\x09onSuccess: []\x0a\x09\x09onError: [ :error |\x0a\x09\x09\x09PackageCommitError new\x0a\x09\x09\x09\x09messageText: 'Commiting failed with reason: \x22' , (error responseText) , '\x22';\x0a\x09\x09\x09\x09signal ]",
  44127. referencedClasses: ["PackageCommitError"],
  44128. //>>excludeEnd("ide");
  44129. pragmas: [],
  44130. messageSends: ["commit:onSuccess:onError:", "messageText:", "new", ",", "responseText", "signal"]
  44131. }, function ($methodClass){ return function (aPackage){
  44132. var self=this,$self=this;
  44133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44134. return $core.withContext(function($ctx1) {
  44135. //>>excludeEnd("ctx");
  44136. var $1;
  44137. $self._commit_onSuccess_onError_(aPackage,(function(){
  44138. }),(function(error){
  44139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44140. return $core.withContext(function($ctx2) {
  44141. //>>excludeEnd("ctx");
  44142. $1=$recv($globals.PackageCommitError)._new();
  44143. $recv($1)._messageText_([$recv("Commiting failed with reason: \x22".__comma($recv(error)._responseText())).__comma("\x22")
  44144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44145. ,$ctx2.sendIdx[","]=1
  44146. //>>excludeEnd("ctx");
  44147. ][0]);
  44148. return $recv($1)._signal();
  44149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44150. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  44151. //>>excludeEnd("ctx");
  44152. }));
  44153. return self;
  44154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44155. }, function($ctx1) {$ctx1.fill(self,"commit:",{aPackage:aPackage})});
  44156. //>>excludeEnd("ctx");
  44157. }; }),
  44158. $globals.PackageHandler);
  44159. $core.addMethod(
  44160. $core.method({
  44161. selector: "commit:onSuccess:onError:",
  44162. protocol: "committing",
  44163. //>>excludeStart("ide", pragmas.excludeIdeData);
  44164. args: ["aPackage", "aBlock", "anotherBlock"],
  44165. source: "commit: aPackage onSuccess: aBlock onError: anotherBlock\x0a\x09self \x0a\x09\x09commitJsFileFor: aPackage \x0a\x09\x09onSuccess: [\x0a\x09\x09\x09self \x0a\x09\x09\x09\x09commitStFileFor: aPackage \x0a\x09\x09\x09\x09onSuccess: [ aPackage beClean. aBlock value ]\x0a\x09\x09\x09\x09onError: anotherBlock ] \x0a\x09\x09onError: anotherBlock",
  44166. referencedClasses: [],
  44167. //>>excludeEnd("ide");
  44168. pragmas: [],
  44169. messageSends: ["commitJsFileFor:onSuccess:onError:", "commitStFileFor:onSuccess:onError:", "beClean", "value"]
  44170. }, function ($methodClass){ return function (aPackage,aBlock,anotherBlock){
  44171. var self=this,$self=this;
  44172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44173. return $core.withContext(function($ctx1) {
  44174. //>>excludeEnd("ctx");
  44175. $self._commitJsFileFor_onSuccess_onError_(aPackage,(function(){
  44176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44177. return $core.withContext(function($ctx2) {
  44178. //>>excludeEnd("ctx");
  44179. return $self._commitStFileFor_onSuccess_onError_(aPackage,(function(){
  44180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44181. return $core.withContext(function($ctx3) {
  44182. //>>excludeEnd("ctx");
  44183. $recv(aPackage)._beClean();
  44184. return $recv(aBlock)._value();
  44185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44186. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  44187. //>>excludeEnd("ctx");
  44188. }),anotherBlock);
  44189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44190. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  44191. //>>excludeEnd("ctx");
  44192. }),anotherBlock);
  44193. return self;
  44194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44195. }, function($ctx1) {$ctx1.fill(self,"commit:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock})});
  44196. //>>excludeEnd("ctx");
  44197. }; }),
  44198. $globals.PackageHandler);
  44199. $core.addMethod(
  44200. $core.method({
  44201. selector: "commitJsFileFor:onSuccess:onError:",
  44202. protocol: "committing",
  44203. //>>excludeStart("ide", pragmas.excludeIdeData);
  44204. args: ["aPackage", "aBlock", "anotherBlock"],
  44205. source: "commitJsFileFor: aPackage onSuccess: aBlock onError: anotherBlock\x0a\x09self \x0a\x09\x09ajaxPutAt: (self commitPathJsFor: aPackage), '/', aPackage name, '.js'\x0a\x09\x09data: (self contentsFor: aPackage)\x0a\x09\x09onSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
  44206. referencedClasses: [],
  44207. //>>excludeEnd("ide");
  44208. pragmas: [],
  44209. messageSends: ["ajaxPutAt:data:onSuccess:onError:", ",", "commitPathJsFor:", "name", "contentsFor:"]
  44210. }, function ($methodClass){ return function (aPackage,aBlock,anotherBlock){
  44211. var self=this,$self=this;
  44212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44213. return $core.withContext(function($ctx1) {
  44214. //>>excludeEnd("ctx");
  44215. $self._ajaxPutAt_data_onSuccess_onError_([$recv([$recv($recv($self._commitPathJsFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name())
  44216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44217. ,$ctx1.sendIdx[","]=2
  44218. //>>excludeEnd("ctx");
  44219. ][0]).__comma(".js")
  44220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44221. ,$ctx1.sendIdx[","]=1
  44222. //>>excludeEnd("ctx");
  44223. ][0],$self._contentsFor_(aPackage),aBlock,anotherBlock);
  44224. return self;
  44225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44226. }, function($ctx1) {$ctx1.fill(self,"commitJsFileFor:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock})});
  44227. //>>excludeEnd("ctx");
  44228. }; }),
  44229. $globals.PackageHandler);
  44230. $core.addMethod(
  44231. $core.method({
  44232. selector: "commitPathJsFor:",
  44233. protocol: "accessing",
  44234. //>>excludeStart("ide", pragmas.excludeIdeData);
  44235. args: ["aPackage"],
  44236. source: "commitPathJsFor: aPackage\x0a\x09self subclassResponsibility",
  44237. referencedClasses: [],
  44238. //>>excludeEnd("ide");
  44239. pragmas: [],
  44240. messageSends: ["subclassResponsibility"]
  44241. }, function ($methodClass){ return function (aPackage){
  44242. var self=this,$self=this;
  44243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44244. return $core.withContext(function($ctx1) {
  44245. //>>excludeEnd("ctx");
  44246. $self._subclassResponsibility();
  44247. return self;
  44248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44249. }, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage})});
  44250. //>>excludeEnd("ctx");
  44251. }; }),
  44252. $globals.PackageHandler);
  44253. $core.addMethod(
  44254. $core.method({
  44255. selector: "commitPathStFor:",
  44256. protocol: "accessing",
  44257. //>>excludeStart("ide", pragmas.excludeIdeData);
  44258. args: ["aPackage"],
  44259. source: "commitPathStFor: aPackage\x0a\x09self subclassResponsibility",
  44260. referencedClasses: [],
  44261. //>>excludeEnd("ide");
  44262. pragmas: [],
  44263. messageSends: ["subclassResponsibility"]
  44264. }, function ($methodClass){ return function (aPackage){
  44265. var self=this,$self=this;
  44266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44267. return $core.withContext(function($ctx1) {
  44268. //>>excludeEnd("ctx");
  44269. $self._subclassResponsibility();
  44270. return self;
  44271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44272. }, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage})});
  44273. //>>excludeEnd("ctx");
  44274. }; }),
  44275. $globals.PackageHandler);
  44276. $core.addMethod(
  44277. $core.method({
  44278. selector: "commitStFileFor:onSuccess:onError:",
  44279. protocol: "committing",
  44280. //>>excludeStart("ide", pragmas.excludeIdeData);
  44281. args: ["aPackage", "aBlock", "anotherBlock"],
  44282. source: "commitStFileFor: aPackage onSuccess: aBlock onError: anotherBlock\x0a\x09self \x0a\x09\x09ajaxPutAt: (self commitPathStFor: aPackage), '/', aPackage name, '.st'\x0a\x09\x09data: (self chunkContentsFor: aPackage)\x0a\x09\x09onSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
  44283. referencedClasses: [],
  44284. //>>excludeEnd("ide");
  44285. pragmas: [],
  44286. messageSends: ["ajaxPutAt:data:onSuccess:onError:", ",", "commitPathStFor:", "name", "chunkContentsFor:"]
  44287. }, function ($methodClass){ return function (aPackage,aBlock,anotherBlock){
  44288. var self=this,$self=this;
  44289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44290. return $core.withContext(function($ctx1) {
  44291. //>>excludeEnd("ctx");
  44292. $self._ajaxPutAt_data_onSuccess_onError_([$recv([$recv($recv($self._commitPathStFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name())
  44293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44294. ,$ctx1.sendIdx[","]=2
  44295. //>>excludeEnd("ctx");
  44296. ][0]).__comma(".st")
  44297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44298. ,$ctx1.sendIdx[","]=1
  44299. //>>excludeEnd("ctx");
  44300. ][0],$self._chunkContentsFor_(aPackage),aBlock,anotherBlock);
  44301. return self;
  44302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44303. }, function($ctx1) {$ctx1.fill(self,"commitStFileFor:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock})});
  44304. //>>excludeEnd("ctx");
  44305. }; }),
  44306. $globals.PackageHandler);
  44307. $core.addMethod(
  44308. $core.method({
  44309. selector: "contentsFor:",
  44310. protocol: "accessing",
  44311. //>>excludeStart("ide", pragmas.excludeIdeData);
  44312. args: ["aPackage"],
  44313. source: "contentsFor: aPackage\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09self exporter exportPackage: aPackage on: str ]",
  44314. referencedClasses: ["String"],
  44315. //>>excludeEnd("ide");
  44316. pragmas: [],
  44317. messageSends: ["streamContents:", "exportPackage:on:", "exporter"]
  44318. }, function ($methodClass){ return function (aPackage){
  44319. var self=this,$self=this;
  44320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44321. return $core.withContext(function($ctx1) {
  44322. //>>excludeEnd("ctx");
  44323. return $recv($globals.String)._streamContents_((function(str){
  44324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44325. return $core.withContext(function($ctx2) {
  44326. //>>excludeEnd("ctx");
  44327. return $recv($self._exporter())._exportPackage_on_(aPackage,str);
  44328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44329. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  44330. //>>excludeEnd("ctx");
  44331. }));
  44332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44333. }, function($ctx1) {$ctx1.fill(self,"contentsFor:",{aPackage:aPackage})});
  44334. //>>excludeEnd("ctx");
  44335. }; }),
  44336. $globals.PackageHandler);
  44337. $core.addMethod(
  44338. $core.method({
  44339. selector: "exporter",
  44340. protocol: "factory",
  44341. //>>excludeStart("ide", pragmas.excludeIdeData);
  44342. args: [],
  44343. source: "exporter\x0a\x09^ self exporterClass new",
  44344. referencedClasses: [],
  44345. //>>excludeEnd("ide");
  44346. pragmas: [],
  44347. messageSends: ["new", "exporterClass"]
  44348. }, function ($methodClass){ return function (){
  44349. var self=this,$self=this;
  44350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44351. return $core.withContext(function($ctx1) {
  44352. //>>excludeEnd("ctx");
  44353. return $recv($self._exporterClass())._new();
  44354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44355. }, function($ctx1) {$ctx1.fill(self,"exporter",{})});
  44356. //>>excludeEnd("ctx");
  44357. }; }),
  44358. $globals.PackageHandler);
  44359. $core.addMethod(
  44360. $core.method({
  44361. selector: "exporterClass",
  44362. protocol: "accessing",
  44363. //>>excludeStart("ide", pragmas.excludeIdeData);
  44364. args: [],
  44365. source: "exporterClass\x0a\x09self subclassResponsibility",
  44366. referencedClasses: [],
  44367. //>>excludeEnd("ide");
  44368. pragmas: [],
  44369. messageSends: ["subclassResponsibility"]
  44370. }, function ($methodClass){ return function (){
  44371. var self=this,$self=this;
  44372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44373. return $core.withContext(function($ctx1) {
  44374. //>>excludeEnd("ctx");
  44375. $self._subclassResponsibility();
  44376. return self;
  44377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44378. }, function($ctx1) {$ctx1.fill(self,"exporterClass",{})});
  44379. //>>excludeEnd("ctx");
  44380. }; }),
  44381. $globals.PackageHandler);
  44382. $core.addMethod(
  44383. $core.method({
  44384. selector: "load:",
  44385. protocol: "loading",
  44386. //>>excludeStart("ide", pragmas.excludeIdeData);
  44387. args: ["aPackage"],
  44388. source: "load: aPackage\x0a\x09\x22Should return a TThenable\x22\x0a\x09self subclassResponsibility",
  44389. referencedClasses: [],
  44390. //>>excludeEnd("ide");
  44391. pragmas: [],
  44392. messageSends: ["subclassResponsibility"]
  44393. }, function ($methodClass){ return function (aPackage){
  44394. var self=this,$self=this;
  44395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44396. return $core.withContext(function($ctx1) {
  44397. //>>excludeEnd("ctx");
  44398. $self._subclassResponsibility();
  44399. return self;
  44400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44401. }, function($ctx1) {$ctx1.fill(self,"load:",{aPackage:aPackage})});
  44402. //>>excludeEnd("ctx");
  44403. }; }),
  44404. $globals.PackageHandler);
  44405. $core.addMethod(
  44406. $core.method({
  44407. selector: "onCommitError:",
  44408. protocol: "error handling",
  44409. //>>excludeStart("ide", pragmas.excludeIdeData);
  44410. args: ["anError"],
  44411. source: "onCommitError: anError\x0a\x09PackageCommitError new\x0a\x09\x09messageText: 'Commiting failed with reason: \x22' , (anError responseText) , '\x22';\x0a\x09\x09signal",
  44412. referencedClasses: ["PackageCommitError"],
  44413. //>>excludeEnd("ide");
  44414. pragmas: [],
  44415. messageSends: ["messageText:", "new", ",", "responseText", "signal"]
  44416. }, function ($methodClass){ return function (anError){
  44417. var self=this,$self=this;
  44418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44419. return $core.withContext(function($ctx1) {
  44420. //>>excludeEnd("ctx");
  44421. var $1;
  44422. $1=$recv($globals.PackageCommitError)._new();
  44423. $recv($1)._messageText_([$recv("Commiting failed with reason: \x22".__comma($recv(anError)._responseText())).__comma("\x22")
  44424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44425. ,$ctx1.sendIdx[","]=1
  44426. //>>excludeEnd("ctx");
  44427. ][0]);
  44428. $recv($1)._signal();
  44429. return self;
  44430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44431. }, function($ctx1) {$ctx1.fill(self,"onCommitError:",{anError:anError})});
  44432. //>>excludeEnd("ctx");
  44433. }; }),
  44434. $globals.PackageHandler);
  44435. $core.addMethod(
  44436. $core.method({
  44437. selector: "setPath:forPackage:",
  44438. protocol: "accessing",
  44439. //>>excludeStart("ide", pragmas.excludeIdeData);
  44440. args: ["aString", "aPackage"],
  44441. source: "setPath: aString forPackage: aPackage\x0a\x09self subclassResponsibility",
  44442. referencedClasses: [],
  44443. //>>excludeEnd("ide");
  44444. pragmas: [],
  44445. messageSends: ["subclassResponsibility"]
  44446. }, function ($methodClass){ return function (aString,aPackage){
  44447. var self=this,$self=this;
  44448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44449. return $core.withContext(function($ctx1) {
  44450. //>>excludeEnd("ctx");
  44451. $self._subclassResponsibility();
  44452. return self;
  44453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44454. }, function($ctx1) {$ctx1.fill(self,"setPath:forPackage:",{aString:aString,aPackage:aPackage})});
  44455. //>>excludeEnd("ctx");
  44456. }; }),
  44457. $globals.PackageHandler);
  44458. $core.addClass("AmdPackageHandler", $globals.PackageHandler, "Platform-ImportExport");
  44459. //>>excludeStart("ide", pragmas.excludeIdeData);
  44460. $globals.AmdPackageHandler.comment="I am responsible for handling package loading and committing.\x0a\x0aI should not be used directly. Instead, use the corresponding `Package` methods.";
  44461. //>>excludeEnd("ide");
  44462. $core.addMethod(
  44463. $core.method({
  44464. selector: "commitPathJsFor:",
  44465. protocol: "accessing",
  44466. //>>excludeStart("ide", pragmas.excludeIdeData);
  44467. args: ["aPackage"],
  44468. source: "commitPathJsFor: aPackage\x0a\x09^ self toUrl: (self namespaceFor: aPackage)",
  44469. referencedClasses: [],
  44470. //>>excludeEnd("ide");
  44471. pragmas: [],
  44472. messageSends: ["toUrl:", "namespaceFor:"]
  44473. }, function ($methodClass){ return function (aPackage){
  44474. var self=this,$self=this;
  44475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44476. return $core.withContext(function($ctx1) {
  44477. //>>excludeEnd("ctx");
  44478. return $self._toUrl_($self._namespaceFor_(aPackage));
  44479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44480. }, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage})});
  44481. //>>excludeEnd("ctx");
  44482. }; }),
  44483. $globals.AmdPackageHandler);
  44484. $core.addMethod(
  44485. $core.method({
  44486. selector: "commitPathStFor:",
  44487. protocol: "accessing",
  44488. //>>excludeStart("ide", pragmas.excludeIdeData);
  44489. args: ["aPackage"],
  44490. source: "commitPathStFor: aPackage\x0a\x09\x22If _source is not mapped, .st will be committed to .js path.\x0a\x09It is recommended not to use _source as it can be deprecated.\x22\x0a\x09\x0a\x09| path pathWithout |\x0a\x09path := self toUrl: (self namespaceFor: aPackage), '/_source'.\x0a\x09pathWithout := self commitPathJsFor: aPackage.\x0a\x09^ path = (pathWithout, '/_source') ifTrue: [ pathWithout ] ifFalse: [ path ]",
  44491. referencedClasses: [],
  44492. //>>excludeEnd("ide");
  44493. pragmas: [],
  44494. messageSends: ["toUrl:", ",", "namespaceFor:", "commitPathJsFor:", "ifTrue:ifFalse:", "="]
  44495. }, function ($methodClass){ return function (aPackage){
  44496. var self=this,$self=this;
  44497. var path,pathWithout;
  44498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44499. return $core.withContext(function($ctx1) {
  44500. //>>excludeEnd("ctx");
  44501. path=$self._toUrl_([$recv($self._namespaceFor_(aPackage)).__comma("/_source")
  44502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44503. ,$ctx1.sendIdx[","]=1
  44504. //>>excludeEnd("ctx");
  44505. ][0]);
  44506. pathWithout=$self._commitPathJsFor_(aPackage);
  44507. if($core.assert($recv(path).__eq($recv(pathWithout).__comma("/_source")))){
  44508. return pathWithout;
  44509. } else {
  44510. return path;
  44511. }
  44512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44513. }, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage,path:path,pathWithout:pathWithout})});
  44514. //>>excludeEnd("ctx");
  44515. }; }),
  44516. $globals.AmdPackageHandler);
  44517. $core.addMethod(
  44518. $core.method({
  44519. selector: "exporterClass",
  44520. protocol: "accessing",
  44521. //>>excludeStart("ide", pragmas.excludeIdeData);
  44522. args: [],
  44523. source: "exporterClass\x0a\x09^ AmdExporter",
  44524. referencedClasses: ["AmdExporter"],
  44525. //>>excludeEnd("ide");
  44526. pragmas: [],
  44527. messageSends: []
  44528. }, function ($methodClass){ return function (){
  44529. var self=this,$self=this;
  44530. return $globals.AmdExporter;
  44531. }; }),
  44532. $globals.AmdPackageHandler);
  44533. $core.addMethod(
  44534. $core.method({
  44535. selector: "load:",
  44536. protocol: "loading",
  44537. //>>excludeStart("ide", pragmas.excludeIdeData);
  44538. args: ["aPackage"],
  44539. source: "load: aPackage\x0a\x09^ Promise new: [ :model |\x0a\x09\x09Smalltalk amdRequire\x0a\x09\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09\x09ifNotNil: [ :require |\x0a\x09\x09\x09\x09require\x0a\x09\x09\x09\x09\x09value: { (self namespaceFor: aPackage), '/', aPackage name }\x0a\x09\x09\x09\x09\x09value: [ :result | model value: result ]\x0a\x09\x09\x09\x09\x09value: [ :error | model signal: error ] ] ]",
  44540. referencedClasses: ["Promise", "Smalltalk"],
  44541. //>>excludeEnd("ide");
  44542. pragmas: [],
  44543. messageSends: ["new:", "ifNil:ifNotNil:", "amdRequire", "error:", "value:value:value:", ",", "namespaceFor:", "name", "value:", "signal:"]
  44544. }, function ($methodClass){ return function (aPackage){
  44545. var self=this,$self=this;
  44546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44547. return $core.withContext(function($ctx1) {
  44548. //>>excludeEnd("ctx");
  44549. var $1;
  44550. return $recv($globals.Promise)._new_((function(model){
  44551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44552. return $core.withContext(function($ctx2) {
  44553. //>>excludeEnd("ctx");
  44554. $1=$recv($globals.Smalltalk)._amdRequire();
  44555. if($1 == null || $1.a$nil){
  44556. return $self._error_("AMD loader not present");
  44557. } else {
  44558. var require;
  44559. require=$1;
  44560. return $recv(require)._value_value_value_([[$recv($recv($self._namespaceFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name())
  44561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44562. ,$ctx2.sendIdx[","]=1
  44563. //>>excludeEnd("ctx");
  44564. ][0]],(function(result){
  44565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44566. return $core.withContext(function($ctx3) {
  44567. //>>excludeEnd("ctx");
  44568. return $recv(model)._value_(result);
  44569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44570. }, function($ctx3) {$ctx3.fillBlock({result:result},$ctx2,4)});
  44571. //>>excludeEnd("ctx");
  44572. }),(function(error){
  44573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44574. return $core.withContext(function($ctx3) {
  44575. //>>excludeEnd("ctx");
  44576. return $recv(model)._signal_(error);
  44577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44578. }, function($ctx3) {$ctx3.fillBlock({error:error},$ctx2,5)});
  44579. //>>excludeEnd("ctx");
  44580. }));
  44581. }
  44582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44583. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,1)});
  44584. //>>excludeEnd("ctx");
  44585. }));
  44586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44587. }, function($ctx1) {$ctx1.fill(self,"load:",{aPackage:aPackage})});
  44588. //>>excludeEnd("ctx");
  44589. }; }),
  44590. $globals.AmdPackageHandler);
  44591. $core.addMethod(
  44592. $core.method({
  44593. selector: "namespaceFor:",
  44594. protocol: "committing",
  44595. //>>excludeStart("ide", pragmas.excludeIdeData);
  44596. args: ["aPackage"],
  44597. source: "namespaceFor: aPackage\x0a\x09^ aPackage transport namespace",
  44598. referencedClasses: [],
  44599. //>>excludeEnd("ide");
  44600. pragmas: [],
  44601. messageSends: ["namespace", "transport"]
  44602. }, function ($methodClass){ return function (aPackage){
  44603. var self=this,$self=this;
  44604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44605. return $core.withContext(function($ctx1) {
  44606. //>>excludeEnd("ctx");
  44607. return $recv($recv(aPackage)._transport())._namespace();
  44608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44609. }, function($ctx1) {$ctx1.fill(self,"namespaceFor:",{aPackage:aPackage})});
  44610. //>>excludeEnd("ctx");
  44611. }; }),
  44612. $globals.AmdPackageHandler);
  44613. $core.addMethod(
  44614. $core.method({
  44615. selector: "setPath:forPackage:",
  44616. protocol: "accessing",
  44617. //>>excludeStart("ide", pragmas.excludeIdeData);
  44618. args: ["aString", "aPackage"],
  44619. source: "setPath: aString forPackage: aPackage\x0a\x09\x22Set the path the the package's `namespace`\x22\x0a\x09\x0a\x09\x22Smalltalk amdRequire\x0a\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09ifNotNil: [ :require |\x22\x0a\x09\x09\x09require provided config: #{\x0a\x09\x09\x09\x09'paths' -> #{\x0a\x09\x09\x09\x09\x09(self namespaceFor: aPackage) -> aString\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09}\x0a\x09\x09\x22]\x22",
  44620. referencedClasses: [],
  44621. //>>excludeEnd("ide");
  44622. pragmas: [],
  44623. messageSends: ["config:", "provided", "namespaceFor:"]
  44624. }, function ($methodClass){ return function (aString,aPackage){
  44625. var self=this,$self=this;
  44626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44627. return $core.withContext(function($ctx1) {
  44628. //>>excludeEnd("ctx");
  44629. $recv($recv(require)._provided())._config_($globals.HashedCollection._newFromPairs_(["paths",$globals.HashedCollection._newFromPairs_([$self._namespaceFor_(aPackage),aString])]));
  44630. return self;
  44631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44632. }, function($ctx1) {$ctx1.fill(self,"setPath:forPackage:",{aString:aString,aPackage:aPackage})});
  44633. //>>excludeEnd("ctx");
  44634. }; }),
  44635. $globals.AmdPackageHandler);
  44636. $core.addMethod(
  44637. $core.method({
  44638. selector: "toUrl:",
  44639. protocol: "private",
  44640. //>>excludeStart("ide", pragmas.excludeIdeData);
  44641. args: ["aString"],
  44642. source: "toUrl: aString\x0a\x09^ Smalltalk amdRequire\x0a\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09ifNotNil: [ :require | require provided toUrl: aString ]",
  44643. referencedClasses: ["Smalltalk"],
  44644. //>>excludeEnd("ide");
  44645. pragmas: [],
  44646. messageSends: ["ifNil:ifNotNil:", "amdRequire", "error:", "toUrl:", "provided"]
  44647. }, function ($methodClass){ return function (aString){
  44648. var self=this,$self=this;
  44649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44650. return $core.withContext(function($ctx1) {
  44651. //>>excludeEnd("ctx");
  44652. var $1;
  44653. $1=$recv($globals.Smalltalk)._amdRequire();
  44654. if($1 == null || $1.a$nil){
  44655. return $self._error_("AMD loader not present");
  44656. } else {
  44657. var require;
  44658. require=$1;
  44659. return $recv($recv(require)._provided())._toUrl_(aString);
  44660. }
  44661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44662. }, function($ctx1) {$ctx1.fill(self,"toUrl:",{aString:aString})});
  44663. //>>excludeEnd("ctx");
  44664. }; }),
  44665. $globals.AmdPackageHandler);
  44666. $core.addMethod(
  44667. $core.method({
  44668. selector: "defaultNamespace",
  44669. protocol: "commit paths",
  44670. //>>excludeStart("ide", pragmas.excludeIdeData);
  44671. args: [],
  44672. source: "defaultNamespace\x0a\x09^ Smalltalk defaultAmdNamespace",
  44673. referencedClasses: ["Smalltalk"],
  44674. //>>excludeEnd("ide");
  44675. pragmas: [],
  44676. messageSends: ["defaultAmdNamespace"]
  44677. }, function ($methodClass){ return function (){
  44678. var self=this,$self=this;
  44679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44680. return $core.withContext(function($ctx1) {
  44681. //>>excludeEnd("ctx");
  44682. return $recv($globals.Smalltalk)._defaultAmdNamespace();
  44683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44684. }, function($ctx1) {$ctx1.fill(self,"defaultNamespace",{})});
  44685. //>>excludeEnd("ctx");
  44686. }; }),
  44687. $globals.AmdPackageHandler.a$cls);
  44688. $core.addMethod(
  44689. $core.method({
  44690. selector: "defaultNamespace:",
  44691. protocol: "commit paths",
  44692. //>>excludeStart("ide", pragmas.excludeIdeData);
  44693. args: ["aString"],
  44694. source: "defaultNamespace: aString\x0a\x09Smalltalk defaultAmdNamespace: aString",
  44695. referencedClasses: ["Smalltalk"],
  44696. //>>excludeEnd("ide");
  44697. pragmas: [],
  44698. messageSends: ["defaultAmdNamespace:"]
  44699. }, function ($methodClass){ return function (aString){
  44700. var self=this,$self=this;
  44701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44702. return $core.withContext(function($ctx1) {
  44703. //>>excludeEnd("ctx");
  44704. $recv($globals.Smalltalk)._defaultAmdNamespace_(aString);
  44705. return self;
  44706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44707. }, function($ctx1) {$ctx1.fill(self,"defaultNamespace:",{aString:aString})});
  44708. //>>excludeEnd("ctx");
  44709. }; }),
  44710. $globals.AmdPackageHandler.a$cls);
  44711. $core.addClass("PackageTransport", $globals.Object, "Platform-ImportExport");
  44712. $core.setSlots($globals.PackageTransport, ["package"]);
  44713. //>>excludeStart("ide", pragmas.excludeIdeData);
  44714. $globals.PackageTransport.comment="I represent the transport mechanism used to commit a package.\x0a\x0aMy concrete subclasses have a `#handler` to which committing is delegated.";
  44715. //>>excludeEnd("ide");
  44716. $core.addMethod(
  44717. $core.method({
  44718. selector: "asJavaScriptObject",
  44719. protocol: "converting",
  44720. //>>excludeStart("ide", pragmas.excludeIdeData);
  44721. args: [],
  44722. source: "asJavaScriptObject\x0a\x09^ #{ 'type' -> self type }",
  44723. referencedClasses: [],
  44724. //>>excludeEnd("ide");
  44725. pragmas: [],
  44726. messageSends: ["type"]
  44727. }, function ($methodClass){ return function (){
  44728. var self=this,$self=this;
  44729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44730. return $core.withContext(function($ctx1) {
  44731. //>>excludeEnd("ctx");
  44732. return $globals.HashedCollection._newFromPairs_(["type",$self._type()]);
  44733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44734. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{})});
  44735. //>>excludeEnd("ctx");
  44736. }; }),
  44737. $globals.PackageTransport);
  44738. $core.addMethod(
  44739. $core.method({
  44740. selector: "commit",
  44741. protocol: "committing",
  44742. //>>excludeStart("ide", pragmas.excludeIdeData);
  44743. args: [],
  44744. source: "commit\x0a\x09self commitHandler commit: self package",
  44745. referencedClasses: [],
  44746. //>>excludeEnd("ide");
  44747. pragmas: [],
  44748. messageSends: ["commit:", "commitHandler", "package"]
  44749. }, function ($methodClass){ return function (){
  44750. var self=this,$self=this;
  44751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44752. return $core.withContext(function($ctx1) {
  44753. //>>excludeEnd("ctx");
  44754. $recv($self._commitHandler())._commit_($self._package());
  44755. return self;
  44756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44757. }, function($ctx1) {$ctx1.fill(self,"commit",{})});
  44758. //>>excludeEnd("ctx");
  44759. }; }),
  44760. $globals.PackageTransport);
  44761. $core.addMethod(
  44762. $core.method({
  44763. selector: "commitHandler",
  44764. protocol: "factory",
  44765. //>>excludeStart("ide", pragmas.excludeIdeData);
  44766. args: [],
  44767. source: "commitHandler\x0a\x09^ self commitHandlerClass new",
  44768. referencedClasses: [],
  44769. //>>excludeEnd("ide");
  44770. pragmas: [],
  44771. messageSends: ["new", "commitHandlerClass"]
  44772. }, function ($methodClass){ return function (){
  44773. var self=this,$self=this;
  44774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44775. return $core.withContext(function($ctx1) {
  44776. //>>excludeEnd("ctx");
  44777. return $recv($self._commitHandlerClass())._new();
  44778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44779. }, function($ctx1) {$ctx1.fill(self,"commitHandler",{})});
  44780. //>>excludeEnd("ctx");
  44781. }; }),
  44782. $globals.PackageTransport);
  44783. $core.addMethod(
  44784. $core.method({
  44785. selector: "commitHandlerClass",
  44786. protocol: "accessing",
  44787. //>>excludeStart("ide", pragmas.excludeIdeData);
  44788. args: [],
  44789. source: "commitHandlerClass\x0a\x09self subclassResponsibility",
  44790. referencedClasses: [],
  44791. //>>excludeEnd("ide");
  44792. pragmas: [],
  44793. messageSends: ["subclassResponsibility"]
  44794. }, function ($methodClass){ return function (){
  44795. var self=this,$self=this;
  44796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44797. return $core.withContext(function($ctx1) {
  44798. //>>excludeEnd("ctx");
  44799. $self._subclassResponsibility();
  44800. return self;
  44801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44802. }, function($ctx1) {$ctx1.fill(self,"commitHandlerClass",{})});
  44803. //>>excludeEnd("ctx");
  44804. }; }),
  44805. $globals.PackageTransport);
  44806. $core.addMethod(
  44807. $core.method({
  44808. selector: "commitOnSuccess:onError:",
  44809. protocol: "committing",
  44810. //>>excludeStart("ide", pragmas.excludeIdeData);
  44811. args: ["aBlock", "anotherBlock"],
  44812. source: "commitOnSuccess: aBlock onError: anotherBlock\x0a\x09self commitHandler \x0a\x09\x09commit: self package\x0a\x09\x09onSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
  44813. referencedClasses: [],
  44814. //>>excludeEnd("ide");
  44815. pragmas: [],
  44816. messageSends: ["commit:onSuccess:onError:", "commitHandler", "package"]
  44817. }, function ($methodClass){ return function (aBlock,anotherBlock){
  44818. var self=this,$self=this;
  44819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44820. return $core.withContext(function($ctx1) {
  44821. //>>excludeEnd("ctx");
  44822. $recv($self._commitHandler())._commit_onSuccess_onError_($self._package(),aBlock,anotherBlock);
  44823. return self;
  44824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44825. }, function($ctx1) {$ctx1.fill(self,"commitOnSuccess:onError:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  44826. //>>excludeEnd("ctx");
  44827. }; }),
  44828. $globals.PackageTransport);
  44829. $core.addMethod(
  44830. $core.method({
  44831. selector: "definition",
  44832. protocol: "accessing",
  44833. //>>excludeStart("ide", pragmas.excludeIdeData);
  44834. args: [],
  44835. source: "definition\x0a\x09^ ''",
  44836. referencedClasses: [],
  44837. //>>excludeEnd("ide");
  44838. pragmas: [],
  44839. messageSends: []
  44840. }, function ($methodClass){ return function (){
  44841. var self=this,$self=this;
  44842. return "";
  44843. }; }),
  44844. $globals.PackageTransport);
  44845. $core.addMethod(
  44846. $core.method({
  44847. selector: "load",
  44848. protocol: "loading",
  44849. //>>excludeStart("ide", pragmas.excludeIdeData);
  44850. args: [],
  44851. source: "load\x0a\x09^ ((self commitHandler load: self package)\x0a\x09\x09then: [ Smalltalk postLoad ])\x0a\x09\x09catch: [ :e | Smalltalk postFailedLoad: self package. e pass ]",
  44852. referencedClasses: ["Smalltalk"],
  44853. //>>excludeEnd("ide");
  44854. pragmas: [],
  44855. messageSends: ["catch:", "then:", "load:", "commitHandler", "package", "postLoad", "postFailedLoad:", "pass"]
  44856. }, function ($methodClass){ return function (){
  44857. var self=this,$self=this;
  44858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44859. return $core.withContext(function($ctx1) {
  44860. //>>excludeEnd("ctx");
  44861. return $recv($recv($recv($self._commitHandler())._load_([$self._package()
  44862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44863. ,$ctx1.sendIdx["package"]=1
  44864. //>>excludeEnd("ctx");
  44865. ][0]))._then_((function(){
  44866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44867. return $core.withContext(function($ctx2) {
  44868. //>>excludeEnd("ctx");
  44869. return $recv($globals.Smalltalk)._postLoad();
  44870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44871. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  44872. //>>excludeEnd("ctx");
  44873. })))._catch_((function(e){
  44874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44875. return $core.withContext(function($ctx2) {
  44876. //>>excludeEnd("ctx");
  44877. $recv($globals.Smalltalk)._postFailedLoad_($self._package());
  44878. return $recv(e)._pass();
  44879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44880. }, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,2)});
  44881. //>>excludeEnd("ctx");
  44882. }));
  44883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44884. }, function($ctx1) {$ctx1.fill(self,"load",{})});
  44885. //>>excludeEnd("ctx");
  44886. }; }),
  44887. $globals.PackageTransport);
  44888. $core.addMethod(
  44889. $core.method({
  44890. selector: "package",
  44891. protocol: "accessing",
  44892. //>>excludeStart("ide", pragmas.excludeIdeData);
  44893. args: [],
  44894. source: "package\x0a\x09^ package",
  44895. referencedClasses: [],
  44896. //>>excludeEnd("ide");
  44897. pragmas: [],
  44898. messageSends: []
  44899. }, function ($methodClass){ return function (){
  44900. var self=this,$self=this;
  44901. return $self.package;
  44902. }; }),
  44903. $globals.PackageTransport);
  44904. $core.addMethod(
  44905. $core.method({
  44906. selector: "package:",
  44907. protocol: "accessing",
  44908. //>>excludeStart("ide", pragmas.excludeIdeData);
  44909. args: ["aPackage"],
  44910. source: "package: aPackage\x0a\x09package := aPackage",
  44911. referencedClasses: [],
  44912. //>>excludeEnd("ide");
  44913. pragmas: [],
  44914. messageSends: []
  44915. }, function ($methodClass){ return function (aPackage){
  44916. var self=this,$self=this;
  44917. $self.package=aPackage;
  44918. return self;
  44919. }; }),
  44920. $globals.PackageTransport);
  44921. $core.addMethod(
  44922. $core.method({
  44923. selector: "setPath:",
  44924. protocol: "actions",
  44925. //>>excludeStart("ide", pragmas.excludeIdeData);
  44926. args: ["aString"],
  44927. source: "setPath: aString\x0a\x09\x22Set the commit path for the package\x22\x0a\x0a\x09self commitHandler setPath: aString forPackage: package",
  44928. referencedClasses: [],
  44929. //>>excludeEnd("ide");
  44930. pragmas: [],
  44931. messageSends: ["setPath:forPackage:", "commitHandler"]
  44932. }, function ($methodClass){ return function (aString){
  44933. var self=this,$self=this;
  44934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44935. return $core.withContext(function($ctx1) {
  44936. //>>excludeEnd("ctx");
  44937. $recv($self._commitHandler())._setPath_forPackage_(aString,$self.package);
  44938. return self;
  44939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44940. }, function($ctx1) {$ctx1.fill(self,"setPath:",{aString:aString})});
  44941. //>>excludeEnd("ctx");
  44942. }; }),
  44943. $globals.PackageTransport);
  44944. $core.addMethod(
  44945. $core.method({
  44946. selector: "setupFromJson:",
  44947. protocol: "initialization",
  44948. //>>excludeStart("ide", pragmas.excludeIdeData);
  44949. args: ["anObject"],
  44950. source: "setupFromJson: anObject\x0a\x09\x22no op. override if needed in subclasses\x22",
  44951. referencedClasses: [],
  44952. //>>excludeEnd("ide");
  44953. pragmas: [],
  44954. messageSends: []
  44955. }, function ($methodClass){ return function (anObject){
  44956. var self=this,$self=this;
  44957. return self;
  44958. }; }),
  44959. $globals.PackageTransport);
  44960. $core.addMethod(
  44961. $core.method({
  44962. selector: "type",
  44963. protocol: "accessing",
  44964. //>>excludeStart("ide", pragmas.excludeIdeData);
  44965. args: [],
  44966. source: "type\x0a\x09^ self class type",
  44967. referencedClasses: [],
  44968. //>>excludeEnd("ide");
  44969. pragmas: [],
  44970. messageSends: ["type", "class"]
  44971. }, function ($methodClass){ return function (){
  44972. var self=this,$self=this;
  44973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44974. return $core.withContext(function($ctx1) {
  44975. //>>excludeEnd("ctx");
  44976. return $recv($self._class())._type();
  44977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44978. }, function($ctx1) {$ctx1.fill(self,"type",{})});
  44979. //>>excludeEnd("ctx");
  44980. }; }),
  44981. $globals.PackageTransport);
  44982. $core.setSlots($globals.PackageTransport.a$cls, ["registry"]);
  44983. $core.addMethod(
  44984. $core.method({
  44985. selector: "classRegisteredFor:",
  44986. protocol: "accessing",
  44987. //>>excludeStart("ide", pragmas.excludeIdeData);
  44988. args: ["aString"],
  44989. source: "classRegisteredFor: aString\x0a\x09^ registry at: aString",
  44990. referencedClasses: [],
  44991. //>>excludeEnd("ide");
  44992. pragmas: [],
  44993. messageSends: ["at:"]
  44994. }, function ($methodClass){ return function (aString){
  44995. var self=this,$self=this;
  44996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44997. return $core.withContext(function($ctx1) {
  44998. //>>excludeEnd("ctx");
  44999. return $recv($self.registry)._at_(aString);
  45000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45001. }, function($ctx1) {$ctx1.fill(self,"classRegisteredFor:",{aString:aString})});
  45002. //>>excludeEnd("ctx");
  45003. }; }),
  45004. $globals.PackageTransport.a$cls);
  45005. $core.addMethod(
  45006. $core.method({
  45007. selector: "defaultType",
  45008. protocol: "accessing",
  45009. //>>excludeStart("ide", pragmas.excludeIdeData);
  45010. args: [],
  45011. source: "defaultType\x0a\x09^ AmdPackageTransport type",
  45012. referencedClasses: ["AmdPackageTransport"],
  45013. //>>excludeEnd("ide");
  45014. pragmas: [],
  45015. messageSends: ["type"]
  45016. }, function ($methodClass){ return function (){
  45017. var self=this,$self=this;
  45018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45019. return $core.withContext(function($ctx1) {
  45020. //>>excludeEnd("ctx");
  45021. return $recv($globals.AmdPackageTransport)._type();
  45022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45023. }, function($ctx1) {$ctx1.fill(self,"defaultType",{})});
  45024. //>>excludeEnd("ctx");
  45025. }; }),
  45026. $globals.PackageTransport.a$cls);
  45027. $core.addMethod(
  45028. $core.method({
  45029. selector: "for:",
  45030. protocol: "instance creation",
  45031. //>>excludeStart("ide", pragmas.excludeIdeData);
  45032. args: ["aString"],
  45033. source: "for: aString\x0a\x09^ (self classRegisteredFor: aString) new",
  45034. referencedClasses: [],
  45035. //>>excludeEnd("ide");
  45036. pragmas: [],
  45037. messageSends: ["new", "classRegisteredFor:"]
  45038. }, function ($methodClass){ return function (aString){
  45039. var self=this,$self=this;
  45040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45041. return $core.withContext(function($ctx1) {
  45042. //>>excludeEnd("ctx");
  45043. return $recv($self._classRegisteredFor_(aString))._new();
  45044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45045. }, function($ctx1) {$ctx1.fill(self,"for:",{aString:aString})});
  45046. //>>excludeEnd("ctx");
  45047. }; }),
  45048. $globals.PackageTransport.a$cls);
  45049. $core.addMethod(
  45050. $core.method({
  45051. selector: "fromJson:",
  45052. protocol: "instance creation",
  45053. //>>excludeStart("ide", pragmas.excludeIdeData);
  45054. args: ["anObject"],
  45055. source: "fromJson: anObject\x0a\x09anObject ifNil: [ ^ self for: self defaultType ].\x0a\x09\x0a\x09^ (self for: anObject type)\x0a\x09\x09setupFromJson: anObject;\x0a\x09\x09yourself",
  45056. referencedClasses: [],
  45057. //>>excludeEnd("ide");
  45058. pragmas: [],
  45059. messageSends: ["ifNil:", "for:", "defaultType", "setupFromJson:", "type", "yourself"]
  45060. }, function ($methodClass){ return function (anObject){
  45061. var self=this,$self=this;
  45062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45063. return $core.withContext(function($ctx1) {
  45064. //>>excludeEnd("ctx");
  45065. var $1;
  45066. if(anObject == null || anObject.a$nil){
  45067. return [$self._for_($self._defaultType())
  45068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45069. ,$ctx1.sendIdx["for:"]=1
  45070. //>>excludeEnd("ctx");
  45071. ][0];
  45072. } else {
  45073. anObject;
  45074. }
  45075. $1=$self._for_($recv(anObject)._type());
  45076. $recv($1)._setupFromJson_(anObject);
  45077. return $recv($1)._yourself();
  45078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45079. }, function($ctx1) {$ctx1.fill(self,"fromJson:",{anObject:anObject})});
  45080. //>>excludeEnd("ctx");
  45081. }; }),
  45082. $globals.PackageTransport.a$cls);
  45083. $core.addMethod(
  45084. $core.method({
  45085. selector: "initialize",
  45086. protocol: "initialization",
  45087. //>>excludeStart("ide", pragmas.excludeIdeData);
  45088. args: [],
  45089. source: "initialize\x0a\x09super initialize.\x0a\x09self == PackageTransport\x0a\x09\x09ifTrue: [ registry := #{} ]\x0a\x09\x09ifFalse: [ self register ]",
  45090. referencedClasses: ["PackageTransport"],
  45091. //>>excludeEnd("ide");
  45092. pragmas: [],
  45093. messageSends: ["initialize", "ifTrue:ifFalse:", "==", "register"]
  45094. }, function ($methodClass){ return function (){
  45095. var self=this,$self=this;
  45096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45097. return $core.withContext(function($ctx1) {
  45098. //>>excludeEnd("ctx");
  45099. [(
  45100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45101. $ctx1.supercall = true,
  45102. //>>excludeEnd("ctx");
  45103. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  45104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45105. ,$ctx1.supercall = false
  45106. //>>excludeEnd("ctx");
  45107. ][0];
  45108. if($core.assert($self.__eq_eq($globals.PackageTransport))){
  45109. $self.registry=$globals.HashedCollection._newFromPairs_([]);
  45110. $self.registry;
  45111. } else {
  45112. $self._register();
  45113. }
  45114. return self;
  45115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45116. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  45117. //>>excludeEnd("ctx");
  45118. }; }),
  45119. $globals.PackageTransport.a$cls);
  45120. $core.addMethod(
  45121. $core.method({
  45122. selector: "register",
  45123. protocol: "registration",
  45124. //>>excludeStart("ide", pragmas.excludeIdeData);
  45125. args: [],
  45126. source: "register\x0a\x09PackageTransport register: self",
  45127. referencedClasses: ["PackageTransport"],
  45128. //>>excludeEnd("ide");
  45129. pragmas: [],
  45130. messageSends: ["register:"]
  45131. }, function ($methodClass){ return function (){
  45132. var self=this,$self=this;
  45133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45134. return $core.withContext(function($ctx1) {
  45135. //>>excludeEnd("ctx");
  45136. $recv($globals.PackageTransport)._register_(self);
  45137. return self;
  45138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45139. }, function($ctx1) {$ctx1.fill(self,"register",{})});
  45140. //>>excludeEnd("ctx");
  45141. }; }),
  45142. $globals.PackageTransport.a$cls);
  45143. $core.addMethod(
  45144. $core.method({
  45145. selector: "register:",
  45146. protocol: "registration",
  45147. //>>excludeStart("ide", pragmas.excludeIdeData);
  45148. args: ["aClass"],
  45149. source: "register: aClass\x0a\x09aClass type ifNotNil: [\x0a\x09\x09registry at: aClass type put: aClass ]",
  45150. referencedClasses: [],
  45151. //>>excludeEnd("ide");
  45152. pragmas: [],
  45153. messageSends: ["ifNotNil:", "type", "at:put:"]
  45154. }, function ($methodClass){ return function (aClass){
  45155. var self=this,$self=this;
  45156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45157. return $core.withContext(function($ctx1) {
  45158. //>>excludeEnd("ctx");
  45159. var $1;
  45160. $1=[$recv(aClass)._type()
  45161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45162. ,$ctx1.sendIdx["type"]=1
  45163. //>>excludeEnd("ctx");
  45164. ][0];
  45165. if($1 == null || $1.a$nil){
  45166. $1;
  45167. } else {
  45168. $recv($self.registry)._at_put_($recv(aClass)._type(),aClass);
  45169. }
  45170. return self;
  45171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45172. }, function($ctx1) {$ctx1.fill(self,"register:",{aClass:aClass})});
  45173. //>>excludeEnd("ctx");
  45174. }; }),
  45175. $globals.PackageTransport.a$cls);
  45176. $core.addMethod(
  45177. $core.method({
  45178. selector: "type",
  45179. protocol: "accessing",
  45180. //>>excludeStart("ide", pragmas.excludeIdeData);
  45181. args: [],
  45182. source: "type\x0a\x09\x22Override in subclasses\x22\x0a\x09^ nil",
  45183. referencedClasses: [],
  45184. //>>excludeEnd("ide");
  45185. pragmas: [],
  45186. messageSends: []
  45187. }, function ($methodClass){ return function (){
  45188. var self=this,$self=this;
  45189. return nil;
  45190. }; }),
  45191. $globals.PackageTransport.a$cls);
  45192. $core.addClass("AmdPackageTransport", $globals.PackageTransport, "Platform-ImportExport");
  45193. $core.setSlots($globals.AmdPackageTransport, ["namespace"]);
  45194. //>>excludeStart("ide", pragmas.excludeIdeData);
  45195. $globals.AmdPackageTransport.comment="I am the default transport for committing packages.\x0a\x0aSee `AmdExporter` and `AmdPackageHandler`.";
  45196. //>>excludeEnd("ide");
  45197. $core.addMethod(
  45198. $core.method({
  45199. selector: "asJavaScriptObject",
  45200. protocol: "converting",
  45201. //>>excludeStart("ide", pragmas.excludeIdeData);
  45202. args: [],
  45203. source: "asJavaScriptObject\x0a\x09^ super asJavaScriptObject\x0a\x09\x09at: 'amdNamespace' put: self namespace;\x0a\x09\x09yourself",
  45204. referencedClasses: [],
  45205. //>>excludeEnd("ide");
  45206. pragmas: [],
  45207. messageSends: ["at:put:", "asJavaScriptObject", "namespace", "yourself"]
  45208. }, function ($methodClass){ return function (){
  45209. var self=this,$self=this;
  45210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45211. return $core.withContext(function($ctx1) {
  45212. //>>excludeEnd("ctx");
  45213. var $1;
  45214. $1=[(
  45215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45216. $ctx1.supercall = true,
  45217. //>>excludeEnd("ctx");
  45218. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._asJavaScriptObject.call($self))
  45219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45220. ,$ctx1.supercall = false
  45221. //>>excludeEnd("ctx");
  45222. ][0];
  45223. $recv($1)._at_put_("amdNamespace",$self._namespace());
  45224. return $recv($1)._yourself();
  45225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45226. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{})});
  45227. //>>excludeEnd("ctx");
  45228. }; }),
  45229. $globals.AmdPackageTransport);
  45230. $core.addMethod(
  45231. $core.method({
  45232. selector: "commitHandlerClass",
  45233. protocol: "accessing",
  45234. //>>excludeStart("ide", pragmas.excludeIdeData);
  45235. args: [],
  45236. source: "commitHandlerClass\x0a\x09^ AmdPackageHandler",
  45237. referencedClasses: ["AmdPackageHandler"],
  45238. //>>excludeEnd("ide");
  45239. pragmas: [],
  45240. messageSends: []
  45241. }, function ($methodClass){ return function (){
  45242. var self=this,$self=this;
  45243. return $globals.AmdPackageHandler;
  45244. }; }),
  45245. $globals.AmdPackageTransport);
  45246. $core.addMethod(
  45247. $core.method({
  45248. selector: "defaultNamespace",
  45249. protocol: "defaults",
  45250. //>>excludeStart("ide", pragmas.excludeIdeData);
  45251. args: [],
  45252. source: "defaultNamespace\x0a\x09^ Smalltalk defaultAmdNamespace",
  45253. referencedClasses: ["Smalltalk"],
  45254. //>>excludeEnd("ide");
  45255. pragmas: [],
  45256. messageSends: ["defaultAmdNamespace"]
  45257. }, function ($methodClass){ return function (){
  45258. var self=this,$self=this;
  45259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45260. return $core.withContext(function($ctx1) {
  45261. //>>excludeEnd("ctx");
  45262. return $recv($globals.Smalltalk)._defaultAmdNamespace();
  45263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45264. }, function($ctx1) {$ctx1.fill(self,"defaultNamespace",{})});
  45265. //>>excludeEnd("ctx");
  45266. }; }),
  45267. $globals.AmdPackageTransport);
  45268. $core.addMethod(
  45269. $core.method({
  45270. selector: "definition",
  45271. protocol: "accessing",
  45272. //>>excludeStart("ide", pragmas.excludeIdeData);
  45273. args: [],
  45274. source: "definition\x0a\x09^ String streamContents: [ :stream | stream \x0a\x09\x09write: { self class name. ' namespace: ' }; print: self namespace ]",
  45275. referencedClasses: ["String"],
  45276. //>>excludeEnd("ide");
  45277. pragmas: [],
  45278. messageSends: ["streamContents:", "write:", "name", "class", "print:", "namespace"]
  45279. }, function ($methodClass){ return function (){
  45280. var self=this,$self=this;
  45281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45282. return $core.withContext(function($ctx1) {
  45283. //>>excludeEnd("ctx");
  45284. return $recv($globals.String)._streamContents_((function(stream){
  45285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45286. return $core.withContext(function($ctx2) {
  45287. //>>excludeEnd("ctx");
  45288. $recv(stream)._write_([$recv($self._class())._name()," namespace: "]);
  45289. return $recv(stream)._print_($self._namespace());
  45290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45291. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  45292. //>>excludeEnd("ctx");
  45293. }));
  45294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45295. }, function($ctx1) {$ctx1.fill(self,"definition",{})});
  45296. //>>excludeEnd("ctx");
  45297. }; }),
  45298. $globals.AmdPackageTransport);
  45299. $core.addMethod(
  45300. $core.method({
  45301. selector: "namespace",
  45302. protocol: "accessing",
  45303. //>>excludeStart("ide", pragmas.excludeIdeData);
  45304. args: [],
  45305. source: "namespace\x0a\x09^ namespace ifNil: [ self defaultNamespace ]",
  45306. referencedClasses: [],
  45307. //>>excludeEnd("ide");
  45308. pragmas: [],
  45309. messageSends: ["ifNil:", "defaultNamespace"]
  45310. }, function ($methodClass){ return function (){
  45311. var self=this,$self=this;
  45312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45313. return $core.withContext(function($ctx1) {
  45314. //>>excludeEnd("ctx");
  45315. var $1;
  45316. $1=$self.namespace;
  45317. if($1 == null || $1.a$nil){
  45318. return $self._defaultNamespace();
  45319. } else {
  45320. return $1;
  45321. }
  45322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45323. }, function($ctx1) {$ctx1.fill(self,"namespace",{})});
  45324. //>>excludeEnd("ctx");
  45325. }; }),
  45326. $globals.AmdPackageTransport);
  45327. $core.addMethod(
  45328. $core.method({
  45329. selector: "namespace:",
  45330. protocol: "accessing",
  45331. //>>excludeStart("ide", pragmas.excludeIdeData);
  45332. args: ["aString"],
  45333. source: "namespace: aString\x0a\x09namespace := aString",
  45334. referencedClasses: [],
  45335. //>>excludeEnd("ide");
  45336. pragmas: [],
  45337. messageSends: []
  45338. }, function ($methodClass){ return function (aString){
  45339. var self=this,$self=this;
  45340. $self.namespace=aString;
  45341. return self;
  45342. }; }),
  45343. $globals.AmdPackageTransport);
  45344. $core.addMethod(
  45345. $core.method({
  45346. selector: "printOn:",
  45347. protocol: "printing",
  45348. //>>excludeStart("ide", pragmas.excludeIdeData);
  45349. args: ["aStream"],
  45350. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream\x0a\x09\x09nextPutAll: ' (AMD Namespace: ';\x0a\x09\x09nextPutAll: self namespace;\x0a\x09\x09nextPutAll: ')'",
  45351. referencedClasses: [],
  45352. //>>excludeEnd("ide");
  45353. pragmas: [],
  45354. messageSends: ["printOn:", "nextPutAll:", "namespace"]
  45355. }, function ($methodClass){ return function (aStream){
  45356. var self=this,$self=this;
  45357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45358. return $core.withContext(function($ctx1) {
  45359. //>>excludeEnd("ctx");
  45360. [(
  45361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45362. $ctx1.supercall = true,
  45363. //>>excludeEnd("ctx");
  45364. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
  45365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45366. ,$ctx1.supercall = false
  45367. //>>excludeEnd("ctx");
  45368. ][0];
  45369. [$recv(aStream)._nextPutAll_(" (AMD Namespace: ")
  45370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45371. ,$ctx1.sendIdx["nextPutAll:"]=1
  45372. //>>excludeEnd("ctx");
  45373. ][0];
  45374. [$recv(aStream)._nextPutAll_($self._namespace())
  45375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45376. ,$ctx1.sendIdx["nextPutAll:"]=2
  45377. //>>excludeEnd("ctx");
  45378. ][0];
  45379. $recv(aStream)._nextPutAll_(")");
  45380. return self;
  45381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45382. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
  45383. //>>excludeEnd("ctx");
  45384. }; }),
  45385. $globals.AmdPackageTransport);
  45386. $core.addMethod(
  45387. $core.method({
  45388. selector: "setupFromJson:",
  45389. protocol: "initialization",
  45390. //>>excludeStart("ide", pragmas.excludeIdeData);
  45391. args: ["anObject"],
  45392. source: "setupFromJson: anObject\x0a\x09self namespace: (anObject at: 'amdNamespace')",
  45393. referencedClasses: [],
  45394. //>>excludeEnd("ide");
  45395. pragmas: [],
  45396. messageSends: ["namespace:", "at:"]
  45397. }, function ($methodClass){ return function (anObject){
  45398. var self=this,$self=this;
  45399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45400. return $core.withContext(function($ctx1) {
  45401. //>>excludeEnd("ctx");
  45402. $self._namespace_($recv(anObject)._at_("amdNamespace"));
  45403. return self;
  45404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45405. }, function($ctx1) {$ctx1.fill(self,"setupFromJson:",{anObject:anObject})});
  45406. //>>excludeEnd("ctx");
  45407. }; }),
  45408. $globals.AmdPackageTransport);
  45409. $core.addMethod(
  45410. $core.method({
  45411. selector: "namespace:",
  45412. protocol: "instance creation",
  45413. //>>excludeStart("ide", pragmas.excludeIdeData);
  45414. args: ["aString"],
  45415. source: "namespace: aString\x0a\x09^ self new\x0a\x09\x09namespace: aString;\x0a\x09\x09yourself",
  45416. referencedClasses: [],
  45417. //>>excludeEnd("ide");
  45418. pragmas: [],
  45419. messageSends: ["namespace:", "new", "yourself"]
  45420. }, function ($methodClass){ return function (aString){
  45421. var self=this,$self=this;
  45422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45423. return $core.withContext(function($ctx1) {
  45424. //>>excludeEnd("ctx");
  45425. var $1;
  45426. $1=$self._new();
  45427. $recv($1)._namespace_(aString);
  45428. return $recv($1)._yourself();
  45429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45430. }, function($ctx1) {$ctx1.fill(self,"namespace:",{aString:aString})});
  45431. //>>excludeEnd("ctx");
  45432. }; }),
  45433. $globals.AmdPackageTransport.a$cls);
  45434. $core.addMethod(
  45435. $core.method({
  45436. selector: "type",
  45437. protocol: "accessing",
  45438. //>>excludeStart("ide", pragmas.excludeIdeData);
  45439. args: [],
  45440. source: "type\x0a\x09^ 'amd'",
  45441. referencedClasses: [],
  45442. //>>excludeEnd("ide");
  45443. pragmas: [],
  45444. messageSends: []
  45445. }, function ($methodClass){ return function (){
  45446. var self=this,$self=this;
  45447. return "amd";
  45448. }; }),
  45449. $globals.AmdPackageTransport.a$cls);
  45450. $core.addMethod(
  45451. $core.method({
  45452. selector: "exportBehaviorDefinitionTo:using:",
  45453. protocol: "*Platform-ImportExport",
  45454. //>>excludeStart("ide", pragmas.excludeIdeData);
  45455. args: ["aStream", "anExporter"],
  45456. source: "exportBehaviorDefinitionTo: aStream using: anExporter\x0a\x09anExporter exportDefinitionOf: self on: aStream",
  45457. referencedClasses: [],
  45458. //>>excludeEnd("ide");
  45459. pragmas: [],
  45460. messageSends: ["exportDefinitionOf:on:"]
  45461. }, function ($methodClass){ return function (aStream,anExporter){
  45462. var self=this,$self=this;
  45463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45464. return $core.withContext(function($ctx1) {
  45465. //>>excludeEnd("ctx");
  45466. $recv(anExporter)._exportDefinitionOf_on_(self,aStream);
  45467. return self;
  45468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45469. }, function($ctx1) {$ctx1.fill(self,"exportBehaviorDefinitionTo:using:",{aStream:aStream,anExporter:anExporter})});
  45470. //>>excludeEnd("ctx");
  45471. }; }),
  45472. $globals.Class);
  45473. $core.addMethod(
  45474. $core.method({
  45475. selector: "exportBehaviorDefinitionTo:using:",
  45476. protocol: "*Platform-ImportExport",
  45477. //>>excludeStart("ide", pragmas.excludeIdeData);
  45478. args: ["aStream", "anExporter"],
  45479. source: "exportBehaviorDefinitionTo: aStream using: anExporter\x0a\x09anExporter exportMetaDefinitionOf: self instanceClass on: aStream",
  45480. referencedClasses: [],
  45481. //>>excludeEnd("ide");
  45482. pragmas: [],
  45483. messageSends: ["exportMetaDefinitionOf:on:", "instanceClass"]
  45484. }, function ($methodClass){ return function (aStream,anExporter){
  45485. var self=this,$self=this;
  45486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45487. return $core.withContext(function($ctx1) {
  45488. //>>excludeEnd("ctx");
  45489. $recv(anExporter)._exportMetaDefinitionOf_on_($self._instanceClass(),aStream);
  45490. return self;
  45491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45492. }, function($ctx1) {$ctx1.fill(self,"exportBehaviorDefinitionTo:using:",{aStream:aStream,anExporter:anExporter})});
  45493. //>>excludeEnd("ctx");
  45494. }; }),
  45495. $globals.Metaclass);
  45496. $core.addMethod(
  45497. $core.method({
  45498. selector: "commit",
  45499. protocol: "*Platform-ImportExport",
  45500. //>>excludeStart("ide", pragmas.excludeIdeData);
  45501. args: [],
  45502. source: "commit\x0a\x09^ self transport commit",
  45503. referencedClasses: [],
  45504. //>>excludeEnd("ide");
  45505. pragmas: [],
  45506. messageSends: ["commit", "transport"]
  45507. }, function ($methodClass){ return function (){
  45508. var self=this,$self=this;
  45509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45510. return $core.withContext(function($ctx1) {
  45511. //>>excludeEnd("ctx");
  45512. return $recv($self._transport())._commit();
  45513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45514. }, function($ctx1) {$ctx1.fill(self,"commit",{})});
  45515. //>>excludeEnd("ctx");
  45516. }; }),
  45517. $globals.Package);
  45518. $core.addMethod(
  45519. $core.method({
  45520. selector: "load",
  45521. protocol: "*Platform-ImportExport",
  45522. //>>excludeStart("ide", pragmas.excludeIdeData);
  45523. args: [],
  45524. source: "load\x0a\x09^ self transport load",
  45525. referencedClasses: [],
  45526. //>>excludeEnd("ide");
  45527. pragmas: [],
  45528. messageSends: ["load", "transport"]
  45529. }, function ($methodClass){ return function (){
  45530. var self=this,$self=this;
  45531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45532. return $core.withContext(function($ctx1) {
  45533. //>>excludeEnd("ctx");
  45534. return $recv($self._transport())._load();
  45535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45536. }, function($ctx1) {$ctx1.fill(self,"load",{})});
  45537. //>>excludeEnd("ctx");
  45538. }; }),
  45539. $globals.Package);
  45540. $core.addMethod(
  45541. $core.method({
  45542. selector: "loadFromNamespace:",
  45543. protocol: "*Platform-ImportExport",
  45544. //>>excludeStart("ide", pragmas.excludeIdeData);
  45545. args: ["aString"],
  45546. source: "loadFromNamespace: aString\x0a\x09^ self transport\x0a\x09\x09namespace: aString;\x0a\x09\x09load",
  45547. referencedClasses: [],
  45548. //>>excludeEnd("ide");
  45549. pragmas: [],
  45550. messageSends: ["namespace:", "transport", "load"]
  45551. }, function ($methodClass){ return function (aString){
  45552. var self=this,$self=this;
  45553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45554. return $core.withContext(function($ctx1) {
  45555. //>>excludeEnd("ctx");
  45556. var $1;
  45557. $1=$self._transport();
  45558. $recv($1)._namespace_(aString);
  45559. return $recv($1)._load();
  45560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45561. }, function($ctx1) {$ctx1.fill(self,"loadFromNamespace:",{aString:aString})});
  45562. //>>excludeEnd("ctx");
  45563. }; }),
  45564. $globals.Package);
  45565. $core.addMethod(
  45566. $core.method({
  45567. selector: "load:",
  45568. protocol: "*Platform-ImportExport",
  45569. //>>excludeStart("ide", pragmas.excludeIdeData);
  45570. args: ["aPackageName"],
  45571. source: "load: aPackageName\x0a\x09^ (self named: aPackageName) load",
  45572. referencedClasses: [],
  45573. //>>excludeEnd("ide");
  45574. pragmas: [],
  45575. messageSends: ["load", "named:"]
  45576. }, function ($methodClass){ return function (aPackageName){
  45577. var self=this,$self=this;
  45578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45579. return $core.withContext(function($ctx1) {
  45580. //>>excludeEnd("ctx");
  45581. return $recv($self._named_(aPackageName))._load();
  45582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45583. }, function($ctx1) {$ctx1.fill(self,"load:",{aPackageName:aPackageName})});
  45584. //>>excludeEnd("ctx");
  45585. }; }),
  45586. $globals.Package.a$cls);
  45587. $core.addMethod(
  45588. $core.method({
  45589. selector: "load:fromNamespace:",
  45590. protocol: "*Platform-ImportExport",
  45591. //>>excludeStart("ide", pragmas.excludeIdeData);
  45592. args: ["aPackageName", "aString"],
  45593. source: "load: aPackageName fromNamespace: aString\x0a\x09^ (self named: aPackageName) loadFromNamespace: aString",
  45594. referencedClasses: [],
  45595. //>>excludeEnd("ide");
  45596. pragmas: [],
  45597. messageSends: ["loadFromNamespace:", "named:"]
  45598. }, function ($methodClass){ return function (aPackageName,aString){
  45599. var self=this,$self=this;
  45600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45601. return $core.withContext(function($ctx1) {
  45602. //>>excludeEnd("ctx");
  45603. return $recv($self._named_(aPackageName))._loadFromNamespace_(aString);
  45604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45605. }, function($ctx1) {$ctx1.fill(self,"load:fromNamespace:",{aPackageName:aPackageName,aString:aString})});
  45606. //>>excludeEnd("ctx");
  45607. }; }),
  45608. $globals.Package.a$cls);
  45609. $core.addMethod(
  45610. $core.method({
  45611. selector: "methodsFor:",
  45612. protocol: "*Platform-ImportExport",
  45613. //>>excludeStart("ide", pragmas.excludeIdeData);
  45614. args: ["aString"],
  45615. source: "methodsFor: aString\x0a\x09^ ClassProtocolReader new\x0a\x09\x09class: self category: aString;\x0a\x09\x09yourself",
  45616. referencedClasses: ["ClassProtocolReader"],
  45617. //>>excludeEnd("ide");
  45618. pragmas: [],
  45619. messageSends: ["class:category:", "new", "yourself"]
  45620. }, function ($methodClass){ return function (aString){
  45621. var self=this,$self=this;
  45622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45623. return $core.withContext(function($ctx1) {
  45624. //>>excludeEnd("ctx");
  45625. var $1;
  45626. $1=$recv($globals.ClassProtocolReader)._new();
  45627. $recv($1)._class_category_(self,aString);
  45628. return $recv($1)._yourself();
  45629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45630. }, function($ctx1) {$ctx1.fill(self,"methodsFor:",{aString:aString})});
  45631. //>>excludeEnd("ctx");
  45632. }; }),
  45633. $globals.TBehaviorProvider);
  45634. $core.addMethod(
  45635. $core.method({
  45636. selector: "methodsFor:stamp:",
  45637. protocol: "*Platform-ImportExport",
  45638. //>>excludeStart("ide", pragmas.excludeIdeData);
  45639. args: ["aString", "aStamp"],
  45640. source: "methodsFor: aString stamp: aStamp\x0a\x09\x22Added for file-in compatibility, ignores stamp.\x22\x0a\x09^ self methodsFor: aString",
  45641. referencedClasses: [],
  45642. //>>excludeEnd("ide");
  45643. pragmas: [],
  45644. messageSends: ["methodsFor:"]
  45645. }, function ($methodClass){ return function (aString,aStamp){
  45646. var self=this,$self=this;
  45647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45648. return $core.withContext(function($ctx1) {
  45649. //>>excludeEnd("ctx");
  45650. return $self._methodsFor_(aString);
  45651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45652. }, function($ctx1) {$ctx1.fill(self,"methodsFor:stamp:",{aString:aString,aStamp:aStamp})});
  45653. //>>excludeEnd("ctx");
  45654. }; }),
  45655. $globals.TBehaviorProvider);
  45656. $core.addMethod(
  45657. $core.method({
  45658. selector: "commentStamp",
  45659. protocol: "*Platform-ImportExport",
  45660. //>>excludeStart("ide", pragmas.excludeIdeData);
  45661. args: [],
  45662. source: "commentStamp\x0a\x09^ ClassCommentReader new\x0a\x09class: self;\x0a\x09yourself",
  45663. referencedClasses: ["ClassCommentReader"],
  45664. //>>excludeEnd("ide");
  45665. pragmas: [],
  45666. messageSends: ["class:", "new", "yourself"]
  45667. }, function ($methodClass){ return function (){
  45668. var self=this,$self=this;
  45669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45670. return $core.withContext(function($ctx1) {
  45671. //>>excludeEnd("ctx");
  45672. var $1;
  45673. $1=$recv($globals.ClassCommentReader)._new();
  45674. $recv($1)._class_(self);
  45675. return $recv($1)._yourself();
  45676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45677. }, function($ctx1) {$ctx1.fill(self,"commentStamp",{})});
  45678. //>>excludeEnd("ctx");
  45679. }; }),
  45680. $globals.TMasterBehavior);
  45681. $core.addMethod(
  45682. $core.method({
  45683. selector: "commentStamp:prior:",
  45684. protocol: "*Platform-ImportExport",
  45685. //>>excludeStart("ide", pragmas.excludeIdeData);
  45686. args: ["aStamp", "prior"],
  45687. source: "commentStamp: aStamp prior: prior\x0a\x09\x09^ self commentStamp",
  45688. referencedClasses: [],
  45689. //>>excludeEnd("ide");
  45690. pragmas: [],
  45691. messageSends: ["commentStamp"]
  45692. }, function ($methodClass){ return function (aStamp,prior){
  45693. var self=this,$self=this;
  45694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45695. return $core.withContext(function($ctx1) {
  45696. //>>excludeEnd("ctx");
  45697. return $self._commentStamp();
  45698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45699. }, function($ctx1) {$ctx1.fill(self,"commentStamp:prior:",{aStamp:aStamp,prior:prior})});
  45700. //>>excludeEnd("ctx");
  45701. }; }),
  45702. $globals.TMasterBehavior);
  45703. $core.addMethod(
  45704. $core.method({
  45705. selector: "exportBehaviorDefinitionTo:using:",
  45706. protocol: "*Platform-ImportExport",
  45707. //>>excludeStart("ide", pragmas.excludeIdeData);
  45708. args: ["aStream", "anExporter"],
  45709. source: "exportBehaviorDefinitionTo: aStream using: anExporter\x0a\x09anExporter exportTraitDefinitionOf: self on: aStream",
  45710. referencedClasses: [],
  45711. //>>excludeEnd("ide");
  45712. pragmas: [],
  45713. messageSends: ["exportTraitDefinitionOf:on:"]
  45714. }, function ($methodClass){ return function (aStream,anExporter){
  45715. var self=this,$self=this;
  45716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45717. return $core.withContext(function($ctx1) {
  45718. //>>excludeEnd("ctx");
  45719. $recv(anExporter)._exportTraitDefinitionOf_on_(self,aStream);
  45720. return self;
  45721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45722. }, function($ctx1) {$ctx1.fill(self,"exportBehaviorDefinitionTo:using:",{aStream:aStream,anExporter:anExporter})});
  45723. //>>excludeEnd("ctx");
  45724. }; }),
  45725. $globals.Trait);
  45726. });
  45727. define('amber/core/Compiler-Core',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  45728. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  45729. var $pkg = $core.addPackage("Compiler-Core");
  45730. $pkg.context = function () { return {smalltalkParser:smalltalkParser}; };
  45731. $pkg.imports = ["smalltalkParser=amber/parser"];
  45732. //>>excludeStart("imports", pragmas.excludeImports);
  45733. var smalltalkParser;
  45734. $pkg.isReady = new Promise(function (resolve, reject) { requirejs(["amber/parser"], function ($1) {smalltalkParser=$1; resolve();}, reject); });
  45735. //>>excludeEnd("imports");
  45736. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  45737. $core.addClass("AbstractCodeGenerator", $globals.Object, "Compiler-Core");
  45738. $core.setSlots($globals.AbstractCodeGenerator, ["currentClass", "currentPackage", "source"]);
  45739. //>>excludeStart("ide", pragmas.excludeIdeData);
  45740. $globals.AbstractCodeGenerator.comment="I am the abstract super class of all code generators and provide their common API.";
  45741. //>>excludeEnd("ide");
  45742. $core.addMethod(
  45743. $core.method({
  45744. selector: "compileNode:",
  45745. protocol: "compiling",
  45746. //>>excludeStart("ide", pragmas.excludeIdeData);
  45747. args: ["aNode"],
  45748. source: "compileNode: aNode\x0a\x09^ self transformers\x0a\x09\x09inject: aNode\x0a\x09\x09into: [ :input :transformer | transformer value: input ]",
  45749. referencedClasses: [],
  45750. //>>excludeEnd("ide");
  45751. pragmas: [],
  45752. messageSends: ["inject:into:", "transformers", "value:"]
  45753. }, function ($methodClass){ return function (aNode){
  45754. var self=this,$self=this;
  45755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45756. return $core.withContext(function($ctx1) {
  45757. //>>excludeEnd("ctx");
  45758. return $recv($self._transformers())._inject_into_(aNode,(function(input,transformer){
  45759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45760. return $core.withContext(function($ctx2) {
  45761. //>>excludeEnd("ctx");
  45762. return $recv(transformer)._value_(input);
  45763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45764. }, function($ctx2) {$ctx2.fillBlock({input:input,transformer:transformer},$ctx1,1)});
  45765. //>>excludeEnd("ctx");
  45766. }));
  45767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45768. }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode})});
  45769. //>>excludeEnd("ctx");
  45770. }; }),
  45771. $globals.AbstractCodeGenerator);
  45772. $core.addMethod(
  45773. $core.method({
  45774. selector: "currentClass",
  45775. protocol: "accessing",
  45776. //>>excludeStart("ide", pragmas.excludeIdeData);
  45777. args: [],
  45778. source: "currentClass\x0a\x09^ currentClass",
  45779. referencedClasses: [],
  45780. //>>excludeEnd("ide");
  45781. pragmas: [],
  45782. messageSends: []
  45783. }, function ($methodClass){ return function (){
  45784. var self=this,$self=this;
  45785. return $self.currentClass;
  45786. }; }),
  45787. $globals.AbstractCodeGenerator);
  45788. $core.addMethod(
  45789. $core.method({
  45790. selector: "currentClass:",
  45791. protocol: "accessing",
  45792. //>>excludeStart("ide", pragmas.excludeIdeData);
  45793. args: ["aClass"],
  45794. source: "currentClass: aClass\x0a\x09currentClass := aClass",
  45795. referencedClasses: [],
  45796. //>>excludeEnd("ide");
  45797. pragmas: [],
  45798. messageSends: []
  45799. }, function ($methodClass){ return function (aClass){
  45800. var self=this,$self=this;
  45801. $self.currentClass=aClass;
  45802. return self;
  45803. }; }),
  45804. $globals.AbstractCodeGenerator);
  45805. $core.addMethod(
  45806. $core.method({
  45807. selector: "currentPackage",
  45808. protocol: "accessing",
  45809. //>>excludeStart("ide", pragmas.excludeIdeData);
  45810. args: [],
  45811. source: "currentPackage\x0a\x09^ currentPackage",
  45812. referencedClasses: [],
  45813. //>>excludeEnd("ide");
  45814. pragmas: [],
  45815. messageSends: []
  45816. }, function ($methodClass){ return function (){
  45817. var self=this,$self=this;
  45818. return $self.currentPackage;
  45819. }; }),
  45820. $globals.AbstractCodeGenerator);
  45821. $core.addMethod(
  45822. $core.method({
  45823. selector: "currentPackage:",
  45824. protocol: "accessing",
  45825. //>>excludeStart("ide", pragmas.excludeIdeData);
  45826. args: ["anObject"],
  45827. source: "currentPackage: anObject\x0a\x09currentPackage := anObject",
  45828. referencedClasses: [],
  45829. //>>excludeEnd("ide");
  45830. pragmas: [],
  45831. messageSends: []
  45832. }, function ($methodClass){ return function (anObject){
  45833. var self=this,$self=this;
  45834. $self.currentPackage=anObject;
  45835. return self;
  45836. }; }),
  45837. $globals.AbstractCodeGenerator);
  45838. $core.addMethod(
  45839. $core.method({
  45840. selector: "pseudoVariables",
  45841. protocol: "accessing",
  45842. //>>excludeStart("ide", pragmas.excludeIdeData);
  45843. args: [],
  45844. source: "pseudoVariables\x0a\x09^ Smalltalk pseudoVariableNames",
  45845. referencedClasses: ["Smalltalk"],
  45846. //>>excludeEnd("ide");
  45847. pragmas: [],
  45848. messageSends: ["pseudoVariableNames"]
  45849. }, function ($methodClass){ return function (){
  45850. var self=this,$self=this;
  45851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45852. return $core.withContext(function($ctx1) {
  45853. //>>excludeEnd("ctx");
  45854. return $recv($globals.Smalltalk)._pseudoVariableNames();
  45855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45856. }, function($ctx1) {$ctx1.fill(self,"pseudoVariables",{})});
  45857. //>>excludeEnd("ctx");
  45858. }; }),
  45859. $globals.AbstractCodeGenerator);
  45860. $core.addMethod(
  45861. $core.method({
  45862. selector: "source",
  45863. protocol: "accessing",
  45864. //>>excludeStart("ide", pragmas.excludeIdeData);
  45865. args: [],
  45866. source: "source\x0a\x09^ source ifNil: [ '' ]",
  45867. referencedClasses: [],
  45868. //>>excludeEnd("ide");
  45869. pragmas: [],
  45870. messageSends: ["ifNil:"]
  45871. }, function ($methodClass){ return function (){
  45872. var self=this,$self=this;
  45873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45874. return $core.withContext(function($ctx1) {
  45875. //>>excludeEnd("ctx");
  45876. var $1;
  45877. $1=$self.source;
  45878. if($1 == null || $1.a$nil){
  45879. return "";
  45880. } else {
  45881. return $1;
  45882. }
  45883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45884. }, function($ctx1) {$ctx1.fill(self,"source",{})});
  45885. //>>excludeEnd("ctx");
  45886. }; }),
  45887. $globals.AbstractCodeGenerator);
  45888. $core.addMethod(
  45889. $core.method({
  45890. selector: "source:",
  45891. protocol: "accessing",
  45892. //>>excludeStart("ide", pragmas.excludeIdeData);
  45893. args: ["aString"],
  45894. source: "source: aString\x0a\x09source := aString",
  45895. referencedClasses: [],
  45896. //>>excludeEnd("ide");
  45897. pragmas: [],
  45898. messageSends: []
  45899. }, function ($methodClass){ return function (aString){
  45900. var self=this,$self=this;
  45901. $self.source=aString;
  45902. return self;
  45903. }; }),
  45904. $globals.AbstractCodeGenerator);
  45905. $core.addMethod(
  45906. $core.method({
  45907. selector: "transformers",
  45908. protocol: "compiling",
  45909. //>>excludeStart("ide", pragmas.excludeIdeData);
  45910. args: [],
  45911. source: "transformers\x0a\x09| dict |\x0a\x09dict := self transformersDictionary.\x0a\x09^ dict keys asArray sort collect: [ :each | dict at: each ]",
  45912. referencedClasses: [],
  45913. //>>excludeEnd("ide");
  45914. pragmas: [],
  45915. messageSends: ["transformersDictionary", "collect:", "sort", "asArray", "keys", "at:"]
  45916. }, function ($methodClass){ return function (){
  45917. var self=this,$self=this;
  45918. var dict;
  45919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45920. return $core.withContext(function($ctx1) {
  45921. //>>excludeEnd("ctx");
  45922. dict=$self._transformersDictionary();
  45923. return $recv($recv($recv($recv(dict)._keys())._asArray())._sort())._collect_((function(each){
  45924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45925. return $core.withContext(function($ctx2) {
  45926. //>>excludeEnd("ctx");
  45927. return $recv(dict)._at_(each);
  45928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45929. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  45930. //>>excludeEnd("ctx");
  45931. }));
  45932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45933. }, function($ctx1) {$ctx1.fill(self,"transformers",{dict:dict})});
  45934. //>>excludeEnd("ctx");
  45935. }; }),
  45936. $globals.AbstractCodeGenerator);
  45937. $core.addMethod(
  45938. $core.method({
  45939. selector: "transformersDictionary",
  45940. protocol: "compiling",
  45941. //>>excludeStart("ide", pragmas.excludeIdeData);
  45942. args: [],
  45943. source: "transformersDictionary\x0a\x09self subclassResponsibility",
  45944. referencedClasses: [],
  45945. //>>excludeEnd("ide");
  45946. pragmas: [],
  45947. messageSends: ["subclassResponsibility"]
  45948. }, function ($methodClass){ return function (){
  45949. var self=this,$self=this;
  45950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45951. return $core.withContext(function($ctx1) {
  45952. //>>excludeEnd("ctx");
  45953. $self._subclassResponsibility();
  45954. return self;
  45955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45956. }, function($ctx1) {$ctx1.fill(self,"transformersDictionary",{})});
  45957. //>>excludeEnd("ctx");
  45958. }; }),
  45959. $globals.AbstractCodeGenerator);
  45960. $core.addClass("AstGenerator", $globals.AbstractCodeGenerator, "Compiler-Core");
  45961. $core.setSlots($globals.AstGenerator, ["transformersDictionary"]);
  45962. //>>excludeStart("ide", pragmas.excludeIdeData);
  45963. $globals.AstGenerator.comment="I am a very basic code generator.\x0aI generate semantically augmented abstract syntax tree,\x0aSome initial pragmas (eg. #inlineJS:) are applied to transform the tree.";
  45964. //>>excludeEnd("ide");
  45965. $core.addMethod(
  45966. $core.method({
  45967. selector: "semanticAnalyzer",
  45968. protocol: "compiling",
  45969. //>>excludeStart("ide", pragmas.excludeIdeData);
  45970. args: [],
  45971. source: "semanticAnalyzer\x0a\x09^ (SemanticAnalyzer on: self currentClass)\x0a\x09\x09thePackage: self currentPackage;\x0a\x09\x09yourself",
  45972. referencedClasses: ["SemanticAnalyzer"],
  45973. //>>excludeEnd("ide");
  45974. pragmas: [],
  45975. messageSends: ["thePackage:", "on:", "currentClass", "currentPackage", "yourself"]
  45976. }, function ($methodClass){ return function (){
  45977. var self=this,$self=this;
  45978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45979. return $core.withContext(function($ctx1) {
  45980. //>>excludeEnd("ctx");
  45981. var $1;
  45982. $1=$recv($globals.SemanticAnalyzer)._on_($self._currentClass());
  45983. $recv($1)._thePackage_($self._currentPackage());
  45984. return $recv($1)._yourself();
  45985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45986. }, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer",{})});
  45987. //>>excludeEnd("ctx");
  45988. }; }),
  45989. $globals.AstGenerator);
  45990. $core.addMethod(
  45991. $core.method({
  45992. selector: "semanticAstPragmator",
  45993. protocol: "compiling",
  45994. //>>excludeStart("ide", pragmas.excludeIdeData);
  45995. args: [],
  45996. source: "semanticAstPragmator\x0a\x09^ AstSemanticPragmator new",
  45997. referencedClasses: ["AstSemanticPragmator"],
  45998. //>>excludeEnd("ide");
  45999. pragmas: [],
  46000. messageSends: ["new"]
  46001. }, function ($methodClass){ return function (){
  46002. var self=this,$self=this;
  46003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46004. return $core.withContext(function($ctx1) {
  46005. //>>excludeEnd("ctx");
  46006. return $recv($globals.AstSemanticPragmator)._new();
  46007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46008. }, function($ctx1) {$ctx1.fill(self,"semanticAstPragmator",{})});
  46009. //>>excludeEnd("ctx");
  46010. }; }),
  46011. $globals.AstGenerator);
  46012. $core.addMethod(
  46013. $core.method({
  46014. selector: "transformersDictionary",
  46015. protocol: "compiling",
  46016. //>>excludeStart("ide", pragmas.excludeIdeData);
  46017. args: [],
  46018. source: "transformersDictionary\x0a\x09^ transformersDictionary ifNil: [ transformersDictionary := Dictionary new\x0a\x09\x09at: '2000-semantic' put: self semanticAnalyzer;\x0a\x09\x09at: '2500-semanticPragmas' put: self semanticAstPragmator;\x0a\x09\x09yourself ]",
  46019. referencedClasses: ["Dictionary"],
  46020. //>>excludeEnd("ide");
  46021. pragmas: [],
  46022. messageSends: ["ifNil:", "at:put:", "new", "semanticAnalyzer", "semanticAstPragmator", "yourself"]
  46023. }, function ($methodClass){ return function (){
  46024. var self=this,$self=this;
  46025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46026. return $core.withContext(function($ctx1) {
  46027. //>>excludeEnd("ctx");
  46028. var $1,$2;
  46029. $1=$self.transformersDictionary;
  46030. if($1 == null || $1.a$nil){
  46031. $2=$recv($globals.Dictionary)._new();
  46032. [$recv($2)._at_put_("2000-semantic",$self._semanticAnalyzer())
  46033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46034. ,$ctx1.sendIdx["at:put:"]=1
  46035. //>>excludeEnd("ctx");
  46036. ][0];
  46037. $recv($2)._at_put_("2500-semanticPragmas",$self._semanticAstPragmator());
  46038. $self.transformersDictionary=$recv($2)._yourself();
  46039. return $self.transformersDictionary;
  46040. } else {
  46041. return $1;
  46042. }
  46043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46044. }, function($ctx1) {$ctx1.fill(self,"transformersDictionary",{})});
  46045. //>>excludeEnd("ctx");
  46046. }; }),
  46047. $globals.AstGenerator);
  46048. $core.addClass("CodeGenerator", $globals.AstGenerator, "Compiler-Core");
  46049. //>>excludeStart("ide", pragmas.excludeIdeData);
  46050. $globals.CodeGenerator.comment="I am a basic code generator. I generate a valid JavaScript output, but do not perform any inlining.\x0aSee `InliningCodeGenerator` for an optimized JavaScript code generation.";
  46051. //>>excludeEnd("ide");
  46052. $core.addMethod(
  46053. $core.method({
  46054. selector: "irTranslator",
  46055. protocol: "compiling",
  46056. //>>excludeStart("ide", pragmas.excludeIdeData);
  46057. args: [],
  46058. source: "irTranslator\x0a\x09^ self irTranslatorClass new\x0a\x09\x09currentClass: self currentClass;\x0a\x09\x09yourself",
  46059. referencedClasses: [],
  46060. //>>excludeEnd("ide");
  46061. pragmas: [],
  46062. messageSends: ["currentClass:", "new", "irTranslatorClass", "currentClass", "yourself"]
  46063. }, function ($methodClass){ return function (){
  46064. var self=this,$self=this;
  46065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46066. return $core.withContext(function($ctx1) {
  46067. //>>excludeEnd("ctx");
  46068. var $1;
  46069. $1=$recv($self._irTranslatorClass())._new();
  46070. $recv($1)._currentClass_($self._currentClass());
  46071. return $recv($1)._yourself();
  46072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46073. }, function($ctx1) {$ctx1.fill(self,"irTranslator",{})});
  46074. //>>excludeEnd("ctx");
  46075. }; }),
  46076. $globals.CodeGenerator);
  46077. $core.addMethod(
  46078. $core.method({
  46079. selector: "irTranslatorClass",
  46080. protocol: "compiling",
  46081. //>>excludeStart("ide", pragmas.excludeIdeData);
  46082. args: [],
  46083. source: "irTranslatorClass\x0a\x09^ IRJSTranslator",
  46084. referencedClasses: ["IRJSTranslator"],
  46085. //>>excludeEnd("ide");
  46086. pragmas: [],
  46087. messageSends: []
  46088. }, function ($methodClass){ return function (){
  46089. var self=this,$self=this;
  46090. return $globals.IRJSTranslator;
  46091. }; }),
  46092. $globals.CodeGenerator);
  46093. $core.addMethod(
  46094. $core.method({
  46095. selector: "lateIRPragmator",
  46096. protocol: "compiling",
  46097. //>>excludeStart("ide", pragmas.excludeIdeData);
  46098. args: [],
  46099. source: "lateIRPragmator\x0a\x09^ IRLatePragmator new",
  46100. referencedClasses: ["IRLatePragmator"],
  46101. //>>excludeEnd("ide");
  46102. pragmas: [],
  46103. messageSends: ["new"]
  46104. }, function ($methodClass){ return function (){
  46105. var self=this,$self=this;
  46106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46107. return $core.withContext(function($ctx1) {
  46108. //>>excludeEnd("ctx");
  46109. return $recv($globals.IRLatePragmator)._new();
  46110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46111. }, function($ctx1) {$ctx1.fill(self,"lateIRPragmator",{})});
  46112. //>>excludeEnd("ctx");
  46113. }; }),
  46114. $globals.CodeGenerator);
  46115. $core.addMethod(
  46116. $core.method({
  46117. selector: "transformersDictionary",
  46118. protocol: "compiling",
  46119. //>>excludeStart("ide", pragmas.excludeIdeData);
  46120. args: [],
  46121. source: "transformersDictionary\x0a\x09^ transformersDictionary ifNil: [ transformersDictionary := super transformersDictionary\x0a\x09\x09at: '5000-astToIr' put: self translator;\x0a\x09\x09at: '7000-irLatePragmas' put: self lateIRPragmator;\x0a\x09\x09at: '8000-irToJs' put: self irTranslator;\x0a\x09\x09yourself ]",
  46122. referencedClasses: [],
  46123. //>>excludeEnd("ide");
  46124. pragmas: [],
  46125. messageSends: ["ifNil:", "at:put:", "transformersDictionary", "translator", "lateIRPragmator", "irTranslator", "yourself"]
  46126. }, function ($methodClass){ return function (){
  46127. var self=this,$self=this;
  46128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46129. return $core.withContext(function($ctx1) {
  46130. //>>excludeEnd("ctx");
  46131. var $1,$2;
  46132. $1=$self.transformersDictionary;
  46133. if($1 == null || $1.a$nil){
  46134. $2=[(
  46135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46136. $ctx1.supercall = true,
  46137. //>>excludeEnd("ctx");
  46138. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._transformersDictionary.call($self))
  46139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46140. ,$ctx1.supercall = false
  46141. //>>excludeEnd("ctx");
  46142. ][0];
  46143. [$recv($2)._at_put_("5000-astToIr",$self._translator())
  46144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46145. ,$ctx1.sendIdx["at:put:"]=1
  46146. //>>excludeEnd("ctx");
  46147. ][0];
  46148. [$recv($2)._at_put_("7000-irLatePragmas",$self._lateIRPragmator())
  46149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46150. ,$ctx1.sendIdx["at:put:"]=2
  46151. //>>excludeEnd("ctx");
  46152. ][0];
  46153. $recv($2)._at_put_("8000-irToJs",$self._irTranslator());
  46154. $self.transformersDictionary=$recv($2)._yourself();
  46155. return $self.transformersDictionary;
  46156. } else {
  46157. return $1;
  46158. }
  46159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46160. }, function($ctx1) {$ctx1.fill(self,"transformersDictionary",{})});
  46161. //>>excludeEnd("ctx");
  46162. }; }),
  46163. $globals.CodeGenerator);
  46164. $core.addMethod(
  46165. $core.method({
  46166. selector: "translator",
  46167. protocol: "compiling",
  46168. //>>excludeStart("ide", pragmas.excludeIdeData);
  46169. args: [],
  46170. source: "translator\x0a\x09^ IRASTTranslator new\x0a\x09\x09source: self source;\x0a\x09\x09theClass: self currentClass;\x0a\x09\x09yourself",
  46171. referencedClasses: ["IRASTTranslator"],
  46172. //>>excludeEnd("ide");
  46173. pragmas: [],
  46174. messageSends: ["source:", "new", "source", "theClass:", "currentClass", "yourself"]
  46175. }, function ($methodClass){ return function (){
  46176. var self=this,$self=this;
  46177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46178. return $core.withContext(function($ctx1) {
  46179. //>>excludeEnd("ctx");
  46180. var $1;
  46181. $1=$recv($globals.IRASTTranslator)._new();
  46182. $recv($1)._source_($self._source());
  46183. $recv($1)._theClass_($self._currentClass());
  46184. return $recv($1)._yourself();
  46185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46186. }, function($ctx1) {$ctx1.fill(self,"translator",{})});
  46187. //>>excludeEnd("ctx");
  46188. }; }),
  46189. $globals.CodeGenerator);
  46190. $core.addClass("Compiler", $globals.Object, "Compiler-Core");
  46191. $core.setSlots($globals.Compiler, ["currentPackage", "codeGeneratorClass", "codeGenerator"]);
  46192. //>>excludeStart("ide", pragmas.excludeIdeData);
  46193. $globals.Compiler.comment="I provide the public interface for compiling Amber source code into JavaScript.\x0a\x0aThe code generator used to produce JavaScript can be plugged with `#codeGeneratorClass`.\x0aThe default code generator is an instance of `InlinedCodeGenerator`";
  46194. //>>excludeEnd("ide");
  46195. $core.addMethod(
  46196. $core.method({
  46197. selector: "ast:forClass:protocol:",
  46198. protocol: "compiling",
  46199. //>>excludeStart("ide", pragmas.excludeIdeData);
  46200. args: ["aString", "aClass", "anotherString"],
  46201. source: "ast: aString forClass: aClass protocol: anotherString\x0a\x09^ self\x0a\x09\x09codeGeneratorClass: AstGenerator;\x0a\x09\x09start: aString forClass: aClass protocol: anotherString;\x0a\x09\x09compileNode: (self parse: aString)",
  46202. referencedClasses: ["AstGenerator"],
  46203. //>>excludeEnd("ide");
  46204. pragmas: [],
  46205. messageSends: ["codeGeneratorClass:", "start:forClass:protocol:", "compileNode:", "parse:"]
  46206. }, function ($methodClass){ return function (aString,aClass,anotherString){
  46207. var self=this,$self=this;
  46208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46209. return $core.withContext(function($ctx1) {
  46210. //>>excludeEnd("ctx");
  46211. $self._codeGeneratorClass_($globals.AstGenerator);
  46212. $self._start_forClass_protocol_(aString,aClass,anotherString);
  46213. return $self._compileNode_($self._parse_(aString));
  46214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46215. }, function($ctx1) {$ctx1.fill(self,"ast:forClass:protocol:",{aString:aString,aClass:aClass,anotherString:anotherString})});
  46216. //>>excludeEnd("ctx");
  46217. }; }),
  46218. $globals.Compiler);
  46219. $core.addMethod(
  46220. $core.method({
  46221. selector: "basicParse:",
  46222. protocol: "private",
  46223. //>>excludeStart("ide", pragmas.excludeIdeData);
  46224. args: ["aString"],
  46225. source: "basicParse: aString\x0a\x09^ smalltalkParser parse: aString",
  46226. referencedClasses: [],
  46227. //>>excludeEnd("ide");
  46228. pragmas: [],
  46229. messageSends: ["parse:"]
  46230. }, function ($methodClass){ return function (aString){
  46231. var self=this,$self=this;
  46232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46233. return $core.withContext(function($ctx1) {
  46234. //>>excludeEnd("ctx");
  46235. return $recv(smalltalkParser)._parse_(aString);
  46236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46237. }, function($ctx1) {$ctx1.fill(self,"basicParse:",{aString:aString})});
  46238. //>>excludeEnd("ctx");
  46239. }; }),
  46240. $globals.Compiler);
  46241. $core.addMethod(
  46242. $core.method({
  46243. selector: "cleanCodeGenerator",
  46244. protocol: "accessing",
  46245. //>>excludeStart("ide", pragmas.excludeIdeData);
  46246. args: [],
  46247. source: "cleanCodeGenerator\x0a\x09codeGenerator := nil",
  46248. referencedClasses: [],
  46249. //>>excludeEnd("ide");
  46250. pragmas: [],
  46251. messageSends: []
  46252. }, function ($methodClass){ return function (){
  46253. var self=this,$self=this;
  46254. $self.codeGenerator=nil;
  46255. return self;
  46256. }; }),
  46257. $globals.Compiler);
  46258. $core.addMethod(
  46259. $core.method({
  46260. selector: "codeGenerator",
  46261. protocol: "accessing",
  46262. //>>excludeStart("ide", pragmas.excludeIdeData);
  46263. args: [],
  46264. source: "codeGenerator\x0a\x09^ codeGenerator",
  46265. referencedClasses: [],
  46266. //>>excludeEnd("ide");
  46267. pragmas: [],
  46268. messageSends: []
  46269. }, function ($methodClass){ return function (){
  46270. var self=this,$self=this;
  46271. return $self.codeGenerator;
  46272. }; }),
  46273. $globals.Compiler);
  46274. $core.addMethod(
  46275. $core.method({
  46276. selector: "codeGenerator:",
  46277. protocol: "accessing",
  46278. //>>excludeStart("ide", pragmas.excludeIdeData);
  46279. args: ["anObject"],
  46280. source: "codeGenerator: anObject\x0a\x09codeGenerator := anObject",
  46281. referencedClasses: [],
  46282. //>>excludeEnd("ide");
  46283. pragmas: [],
  46284. messageSends: []
  46285. }, function ($methodClass){ return function (anObject){
  46286. var self=this,$self=this;
  46287. $self.codeGenerator=anObject;
  46288. return self;
  46289. }; }),
  46290. $globals.Compiler);
  46291. $core.addMethod(
  46292. $core.method({
  46293. selector: "codeGeneratorClass",
  46294. protocol: "accessing",
  46295. //>>excludeStart("ide", pragmas.excludeIdeData);
  46296. args: [],
  46297. source: "codeGeneratorClass\x0a\x09^ codeGeneratorClass ifNil: [ InliningCodeGenerator ]",
  46298. referencedClasses: ["InliningCodeGenerator"],
  46299. //>>excludeEnd("ide");
  46300. pragmas: [],
  46301. messageSends: ["ifNil:"]
  46302. }, function ($methodClass){ return function (){
  46303. var self=this,$self=this;
  46304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46305. return $core.withContext(function($ctx1) {
  46306. //>>excludeEnd("ctx");
  46307. var $1;
  46308. $1=$self.codeGeneratorClass;
  46309. if($1 == null || $1.a$nil){
  46310. return $globals.InliningCodeGenerator;
  46311. } else {
  46312. return $1;
  46313. }
  46314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46315. }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{})});
  46316. //>>excludeEnd("ctx");
  46317. }; }),
  46318. $globals.Compiler);
  46319. $core.addMethod(
  46320. $core.method({
  46321. selector: "codeGeneratorClass:",
  46322. protocol: "accessing",
  46323. //>>excludeStart("ide", pragmas.excludeIdeData);
  46324. args: ["aClass"],
  46325. source: "codeGeneratorClass: aClass\x0a\x09codeGeneratorClass := aClass",
  46326. referencedClasses: [],
  46327. //>>excludeEnd("ide");
  46328. pragmas: [],
  46329. messageSends: []
  46330. }, function ($methodClass){ return function (aClass){
  46331. var self=this,$self=this;
  46332. $self.codeGeneratorClass=aClass;
  46333. return self;
  46334. }; }),
  46335. $globals.Compiler);
  46336. $core.addMethod(
  46337. $core.method({
  46338. selector: "compile:forClass:protocol:",
  46339. protocol: "compiling",
  46340. //>>excludeStart("ide", pragmas.excludeIdeData);
  46341. args: ["aString", "aClass", "anotherString"],
  46342. source: "compile: aString forClass: aClass protocol: anotherString\x0a\x09| sanitizedSource compilationResult result pragmas closureFactory |\x0a\x09sanitizedSource := aString crlfSanitized.\x0a\x09compilationResult := self\x0a\x09\x09start: sanitizedSource forClass: aClass protocol: anotherString;\x0a\x09\x09compileNode: (self parse: sanitizedSource).\x0a\x09closureFactory := self\x0a\x09\x09eval: (self wrappedSourceOf: compilationResult)\x0a\x09\x09forPackage: self currentPackage.\x0a\x09result := Smalltalk core method: #{\x0a\x09\x09#selector -> compilationResult selector.\x0a\x09\x09#protocol -> anotherString.\x0a\x09\x09#source -> sanitizedSource.\x0a\x09\x09#messageSends -> compilationResult messageSends asArray.\x0a\x09\x09#args -> compilationResult arguments.\x0a\x09\x09#referencedClasses -> compilationResult classReferences asArray.\x0a\x09} withFactory: closureFactory.\x0a\x09result pragmas: compilationResult pragmas.\x0a\x09^ result",
  46343. referencedClasses: ["Smalltalk"],
  46344. //>>excludeEnd("ide");
  46345. pragmas: [],
  46346. messageSends: ["crlfSanitized", "start:forClass:protocol:", "compileNode:", "parse:", "eval:forPackage:", "wrappedSourceOf:", "currentPackage", "method:withFactory:", "core", "selector", "asArray", "messageSends", "arguments", "classReferences", "pragmas:", "pragmas"]
  46347. }, function ($methodClass){ return function (aString,aClass,anotherString){
  46348. var self=this,$self=this;
  46349. var sanitizedSource,compilationResult,result,pragmas,closureFactory;
  46350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46351. return $core.withContext(function($ctx1) {
  46352. //>>excludeEnd("ctx");
  46353. sanitizedSource=$recv(aString)._crlfSanitized();
  46354. $self._start_forClass_protocol_(sanitizedSource,aClass,anotherString);
  46355. compilationResult=$self._compileNode_($self._parse_(sanitizedSource));
  46356. closureFactory=$self._eval_forPackage_($self._wrappedSourceOf_(compilationResult),$self._currentPackage());
  46357. result=$recv($recv($globals.Smalltalk)._core())._method_withFactory_($globals.HashedCollection._newFromPairs_(["selector",$recv(compilationResult)._selector(),"protocol",anotherString,"source",sanitizedSource,"messageSends",[$recv($recv(compilationResult)._messageSends())._asArray()
  46358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46359. ,$ctx1.sendIdx["asArray"]=1
  46360. //>>excludeEnd("ctx");
  46361. ][0],"args",$recv(compilationResult)._arguments(),"referencedClasses",$recv($recv(compilationResult)._classReferences())._asArray()]),closureFactory);
  46362. $recv(result)._pragmas_($recv(compilationResult)._pragmas());
  46363. return result;
  46364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46365. }, function($ctx1) {$ctx1.fill(self,"compile:forClass:protocol:",{aString:aString,aClass:aClass,anotherString:anotherString,sanitizedSource:sanitizedSource,compilationResult:compilationResult,result:result,pragmas:pragmas,closureFactory:closureFactory})});
  46366. //>>excludeEnd("ctx");
  46367. }; }),
  46368. $globals.Compiler);
  46369. $core.addMethod(
  46370. $core.method({
  46371. selector: "compileNode:",
  46372. protocol: "compiling",
  46373. //>>excludeStart("ide", pragmas.excludeIdeData);
  46374. args: ["aNode"],
  46375. source: "compileNode: aNode\x0a | result |\x0a\x09result := self codeGenerator compileNode: aNode.\x0a\x09self cleanCodeGenerator.\x0a\x09^ result",
  46376. referencedClasses: [],
  46377. //>>excludeEnd("ide");
  46378. pragmas: [],
  46379. messageSends: ["compileNode:", "codeGenerator", "cleanCodeGenerator"]
  46380. }, function ($methodClass){ return function (aNode){
  46381. var self=this,$self=this;
  46382. var result;
  46383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46384. return $core.withContext(function($ctx1) {
  46385. //>>excludeEnd("ctx");
  46386. result=$recv($self._codeGenerator())._compileNode_(aNode);
  46387. $self._cleanCodeGenerator();
  46388. return result;
  46389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46390. }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,result:result})});
  46391. //>>excludeEnd("ctx");
  46392. }; }),
  46393. $globals.Compiler);
  46394. $core.addMethod(
  46395. $core.method({
  46396. selector: "currentPackage",
  46397. protocol: "accessing",
  46398. //>>excludeStart("ide", pragmas.excludeIdeData);
  46399. args: [],
  46400. source: "currentPackage\x0a\x09^ currentPackage",
  46401. referencedClasses: [],
  46402. //>>excludeEnd("ide");
  46403. pragmas: [],
  46404. messageSends: []
  46405. }, function ($methodClass){ return function (){
  46406. var self=this,$self=this;
  46407. return $self.currentPackage;
  46408. }; }),
  46409. $globals.Compiler);
  46410. $core.addMethod(
  46411. $core.method({
  46412. selector: "currentPackage:",
  46413. protocol: "accessing",
  46414. //>>excludeStart("ide", pragmas.excludeIdeData);
  46415. args: ["anObject"],
  46416. source: "currentPackage: anObject\x0a\x09currentPackage := anObject",
  46417. referencedClasses: [],
  46418. //>>excludeEnd("ide");
  46419. pragmas: [],
  46420. messageSends: []
  46421. }, function ($methodClass){ return function (anObject){
  46422. var self=this,$self=this;
  46423. $self.currentPackage=anObject;
  46424. return self;
  46425. }; }),
  46426. $globals.Compiler);
  46427. $core.addMethod(
  46428. $core.method({
  46429. selector: "error:",
  46430. protocol: "error handling",
  46431. //>>excludeStart("ide", pragmas.excludeIdeData);
  46432. args: ["aString"],
  46433. source: "error: aString\x0a\x09CompilerError signal: aString",
  46434. referencedClasses: ["CompilerError"],
  46435. //>>excludeEnd("ide");
  46436. pragmas: [],
  46437. messageSends: ["signal:"]
  46438. }, function ($methodClass){ return function (aString){
  46439. var self=this,$self=this;
  46440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46441. return $core.withContext(function($ctx1) {
  46442. //>>excludeEnd("ctx");
  46443. $recv($globals.CompilerError)._signal_(aString);
  46444. return self;
  46445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46446. }, function($ctx1) {$ctx1.fill(self,"error:",{aString:aString})});
  46447. //>>excludeEnd("ctx");
  46448. }; }),
  46449. $globals.Compiler);
  46450. $core.addMethod(
  46451. $core.method({
  46452. selector: "eval:",
  46453. protocol: "compiling",
  46454. //>>excludeStart("ide", pragmas.excludeIdeData);
  46455. args: ["aString"],
  46456. source: "eval: aString\x0a\x09<inlineJS: 'return eval(aString)'>",
  46457. referencedClasses: [],
  46458. //>>excludeEnd("ide");
  46459. pragmas: [["inlineJS:", ["return eval(aString)"]]],
  46460. messageSends: []
  46461. }, function ($methodClass){ return function (aString){
  46462. var self=this,$self=this;
  46463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46464. return $core.withContext(function($ctx1) {
  46465. //>>excludeEnd("ctx");
  46466. return eval(aString);
  46467. return self;
  46468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46469. }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString})});
  46470. //>>excludeEnd("ctx");
  46471. }; }),
  46472. $globals.Compiler);
  46473. $core.addMethod(
  46474. $core.method({
  46475. selector: "eval:forPackage:",
  46476. protocol: "compiling",
  46477. //>>excludeStart("ide", pragmas.excludeIdeData);
  46478. args: ["aString", "aPackage"],
  46479. source: "eval: aString forPackage: aPackage\x0a\x09^ aPackage\x0a\x09\x09ifNil: [ self eval: aString ]\x0a\x09\x09ifNotNil: [ aPackage eval: aString ]",
  46480. referencedClasses: [],
  46481. //>>excludeEnd("ide");
  46482. pragmas: [],
  46483. messageSends: ["ifNil:ifNotNil:", "eval:"]
  46484. }, function ($methodClass){ return function (aString,aPackage){
  46485. var self=this,$self=this;
  46486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46487. return $core.withContext(function($ctx1) {
  46488. //>>excludeEnd("ctx");
  46489. if(aPackage == null || aPackage.a$nil){
  46490. return [$self._eval_(aString)
  46491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46492. ,$ctx1.sendIdx["eval:"]=1
  46493. //>>excludeEnd("ctx");
  46494. ][0];
  46495. } else {
  46496. return $recv(aPackage)._eval_(aString);
  46497. }
  46498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46499. }, function($ctx1) {$ctx1.fill(self,"eval:forPackage:",{aString:aString,aPackage:aPackage})});
  46500. //>>excludeEnd("ctx");
  46501. }; }),
  46502. $globals.Compiler);
  46503. $core.addMethod(
  46504. $core.method({
  46505. selector: "evaluateExpression:",
  46506. protocol: "compiling",
  46507. //>>excludeStart("ide", pragmas.excludeIdeData);
  46508. args: ["aString"],
  46509. source: "evaluateExpression: aString\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression and answer the returned object\x22\x0a\x09^ self evaluateExpression: aString on: DoIt new",
  46510. referencedClasses: ["DoIt"],
  46511. //>>excludeEnd("ide");
  46512. pragmas: [],
  46513. messageSends: ["evaluateExpression:on:", "new"]
  46514. }, function ($methodClass){ return function (aString){
  46515. var self=this,$self=this;
  46516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46517. return $core.withContext(function($ctx1) {
  46518. //>>excludeEnd("ctx");
  46519. return $self._evaluateExpression_on_(aString,$recv($globals.DoIt)._new());
  46520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46521. }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString})});
  46522. //>>excludeEnd("ctx");
  46523. }; }),
  46524. $globals.Compiler);
  46525. $core.addMethod(
  46526. $core.method({
  46527. selector: "evaluateExpression:on:",
  46528. protocol: "compiling",
  46529. //>>excludeStart("ide", pragmas.excludeIdeData);
  46530. args: ["aString", "anObject"],
  46531. source: "evaluateExpression: aString on: anObject\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression with anObject as the receiver and answer the returned object\x22\x0a\x09| result method |\x0a\x09method := self\x0a\x09\x09install: (self sourceForExpression: aString)\x0a\x09\x09forClass: anObject class\x0a\x09\x09protocol: '**xxxDoIt'.\x0a\x09result := anObject xxxDoIt.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09^ result",
  46532. referencedClasses: [],
  46533. //>>excludeEnd("ide");
  46534. pragmas: [],
  46535. messageSends: ["install:forClass:protocol:", "sourceForExpression:", "class", "xxxDoIt", "removeCompiledMethod:"]
  46536. }, function ($methodClass){ return function (aString,anObject){
  46537. var self=this,$self=this;
  46538. var result,method;
  46539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46540. return $core.withContext(function($ctx1) {
  46541. //>>excludeEnd("ctx");
  46542. method=$self._install_forClass_protocol_($self._sourceForExpression_(aString),[$recv(anObject)._class()
  46543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46544. ,$ctx1.sendIdx["class"]=1
  46545. //>>excludeEnd("ctx");
  46546. ][0],"**xxxDoIt");
  46547. result=$recv(anObject)._xxxDoIt();
  46548. $recv($recv(anObject)._class())._removeCompiledMethod_(method);
  46549. return result;
  46550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46551. }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:on:",{aString:aString,anObject:anObject,result:result,method:method})});
  46552. //>>excludeEnd("ctx");
  46553. }; }),
  46554. $globals.Compiler);
  46555. $core.addMethod(
  46556. $core.method({
  46557. selector: "install:forClass:protocol:",
  46558. protocol: "compiling",
  46559. //>>excludeStart("ide", pragmas.excludeIdeData);
  46560. args: ["aString", "aBehavior", "anotherString"],
  46561. source: "install: aString forClass: aBehavior protocol: anotherString\x0a\x09| compiledMethod |\x0a\x09compiledMethod := self compile: aString forClass: aBehavior protocol: anotherString.\x0a\x09aBehavior addCompiledMethod: compiledMethod.\x0a\x09^ compiledMethod",
  46562. referencedClasses: [],
  46563. //>>excludeEnd("ide");
  46564. pragmas: [],
  46565. messageSends: ["compile:forClass:protocol:", "addCompiledMethod:"]
  46566. }, function ($methodClass){ return function (aString,aBehavior,anotherString){
  46567. var self=this,$self=this;
  46568. var compiledMethod;
  46569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46570. return $core.withContext(function($ctx1) {
  46571. //>>excludeEnd("ctx");
  46572. compiledMethod=$self._compile_forClass_protocol_(aString,aBehavior,anotherString);
  46573. $recv(aBehavior)._addCompiledMethod_(compiledMethod);
  46574. return compiledMethod;
  46575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46576. }, function($ctx1) {$ctx1.fill(self,"install:forClass:protocol:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString,compiledMethod:compiledMethod})});
  46577. //>>excludeEnd("ctx");
  46578. }; }),
  46579. $globals.Compiler);
  46580. $core.addMethod(
  46581. $core.method({
  46582. selector: "parse:",
  46583. protocol: "compiling",
  46584. //>>excludeStart("ide", pragmas.excludeIdeData);
  46585. args: ["aString"],
  46586. source: "parse: aString\x0a\x09| result |\x0a\x09\x0a\x09[ result := self basicParse: aString ] \x0a\x09\x09tryCatch: [ :ex | (self parseError: ex parsing: aString) signal ].\x0a\x09\x09\x0a\x09^ result",
  46587. referencedClasses: [],
  46588. //>>excludeEnd("ide");
  46589. pragmas: [],
  46590. messageSends: ["tryCatch:", "basicParse:", "signal", "parseError:parsing:"]
  46591. }, function ($methodClass){ return function (aString){
  46592. var self=this,$self=this;
  46593. var result;
  46594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46595. return $core.withContext(function($ctx1) {
  46596. //>>excludeEnd("ctx");
  46597. $recv((function(){
  46598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46599. return $core.withContext(function($ctx2) {
  46600. //>>excludeEnd("ctx");
  46601. result=$self._basicParse_(aString);
  46602. return result;
  46603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46604. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  46605. //>>excludeEnd("ctx");
  46606. }))._tryCatch_((function(ex){
  46607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46608. return $core.withContext(function($ctx2) {
  46609. //>>excludeEnd("ctx");
  46610. return $recv($self._parseError_parsing_(ex,aString))._signal();
  46611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46612. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
  46613. //>>excludeEnd("ctx");
  46614. }));
  46615. return result;
  46616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46617. }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString,result:result})});
  46618. //>>excludeEnd("ctx");
  46619. }; }),
  46620. $globals.Compiler);
  46621. $core.addMethod(
  46622. $core.method({
  46623. selector: "parseError:parsing:",
  46624. protocol: "error handling",
  46625. //>>excludeStart("ide", pragmas.excludeIdeData);
  46626. args: ["anException", "aString"],
  46627. source: "parseError: anException parsing: aString\x0a\x09(anException basicAt: 'location')\x0a\x09\x09ifNil: [ ^ anException pass ]\x0a\x09\x09ifNotNil: [ :loc |\x0a\x09\x09\x09^ ParseError new \x0a\x09\x09\x09\x09messageText: \x0a\x09\x09\x09\x09\x09'Parse error on line ', loc start line asString,\x0a\x09\x09\x09\x09\x09' column ' , loc start column asString,\x0a\x09\x09\x09\x09\x09' : Unexpected character ', (anException basicAt: 'found');\x0a\x09\x09\x09\x09yourself ]",
  46628. referencedClasses: ["ParseError"],
  46629. //>>excludeEnd("ide");
  46630. pragmas: [],
  46631. messageSends: ["ifNil:ifNotNil:", "basicAt:", "pass", "messageText:", "new", ",", "asString", "line", "start", "column", "yourself"]
  46632. }, function ($methodClass){ return function (anException,aString){
  46633. var self=this,$self=this;
  46634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46635. return $core.withContext(function($ctx1) {
  46636. //>>excludeEnd("ctx");
  46637. var $1,$2;
  46638. $1=[$recv(anException)._basicAt_("location")
  46639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46640. ,$ctx1.sendIdx["basicAt:"]=1
  46641. //>>excludeEnd("ctx");
  46642. ][0];
  46643. if($1 == null || $1.a$nil){
  46644. return $recv(anException)._pass();
  46645. } else {
  46646. var loc;
  46647. loc=$1;
  46648. $2=$recv($globals.ParseError)._new();
  46649. $recv($2)._messageText_([$recv([$recv([$recv([$recv("Parse error on line ".__comma([$recv($recv([$recv(loc)._start()
  46650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46651. ,$ctx1.sendIdx["start"]=1
  46652. //>>excludeEnd("ctx");
  46653. ][0])._line())._asString()
  46654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46655. ,$ctx1.sendIdx["asString"]=1
  46656. //>>excludeEnd("ctx");
  46657. ][0])).__comma(" column ")
  46658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46659. ,$ctx1.sendIdx[","]=4
  46660. //>>excludeEnd("ctx");
  46661. ][0]).__comma($recv($recv($recv(loc)._start())._column())._asString())
  46662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46663. ,$ctx1.sendIdx[","]=3
  46664. //>>excludeEnd("ctx");
  46665. ][0]).__comma(" : Unexpected character ")
  46666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46667. ,$ctx1.sendIdx[","]=2
  46668. //>>excludeEnd("ctx");
  46669. ][0]).__comma($recv(anException)._basicAt_("found"))
  46670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46671. ,$ctx1.sendIdx[","]=1
  46672. //>>excludeEnd("ctx");
  46673. ][0]);
  46674. return $recv($2)._yourself();
  46675. }
  46676. return self;
  46677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46678. }, function($ctx1) {$ctx1.fill(self,"parseError:parsing:",{anException:anException,aString:aString})});
  46679. //>>excludeEnd("ctx");
  46680. }; }),
  46681. $globals.Compiler);
  46682. $core.addMethod(
  46683. $core.method({
  46684. selector: "parseExpression:",
  46685. protocol: "compiling",
  46686. //>>excludeStart("ide", pragmas.excludeIdeData);
  46687. args: ["aString"],
  46688. source: "parseExpression: aString\x0a\x09^ self parse: (self sourceForExpression: aString)",
  46689. referencedClasses: [],
  46690. //>>excludeEnd("ide");
  46691. pragmas: [],
  46692. messageSends: ["parse:", "sourceForExpression:"]
  46693. }, function ($methodClass){ return function (aString){
  46694. var self=this,$self=this;
  46695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46696. return $core.withContext(function($ctx1) {
  46697. //>>excludeEnd("ctx");
  46698. return $self._parse_($self._sourceForExpression_(aString));
  46699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46700. }, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString})});
  46701. //>>excludeEnd("ctx");
  46702. }; }),
  46703. $globals.Compiler);
  46704. $core.addMethod(
  46705. $core.method({
  46706. selector: "recompile:",
  46707. protocol: "compiling",
  46708. //>>excludeStart("ide", pragmas.excludeIdeData);
  46709. args: ["aClass"],
  46710. source: "recompile: aClass\x0a\x09aClass includingPossibleMetaDo: [ :eachSide |\x0a\x09\x09eachSide methodDictionary values\x0a\x09\x09\x09do: [ :each | each origin = eachSide ifTrue: [ \x0a\x09\x09\x09\x09self \x0a\x09\x09\x09\x09\x09install: each source \x0a\x09\x09\x09\x09\x09forClass: eachSide \x0a\x09\x09\x09\x09\x09protocol: each protocol ] ]\x0a\x09\x09\x09displayingProgress: 'Recompiling ', eachSide name ]",
  46711. referencedClasses: [],
  46712. //>>excludeEnd("ide");
  46713. pragmas: [],
  46714. messageSends: ["includingPossibleMetaDo:", "do:displayingProgress:", "values", "methodDictionary", "ifTrue:", "=", "origin", "install:forClass:protocol:", "source", "protocol", ",", "name"]
  46715. }, function ($methodClass){ return function (aClass){
  46716. var self=this,$self=this;
  46717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46718. return $core.withContext(function($ctx1) {
  46719. //>>excludeEnd("ctx");
  46720. $recv(aClass)._includingPossibleMetaDo_((function(eachSide){
  46721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46722. return $core.withContext(function($ctx2) {
  46723. //>>excludeEnd("ctx");
  46724. return $recv($recv($recv(eachSide)._methodDictionary())._values())._do_displayingProgress_((function(each){
  46725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46726. return $core.withContext(function($ctx3) {
  46727. //>>excludeEnd("ctx");
  46728. if($core.assert($recv($recv(each)._origin()).__eq(eachSide))){
  46729. return $self._install_forClass_protocol_($recv(each)._source(),eachSide,$recv(each)._protocol());
  46730. }
  46731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46732. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  46733. //>>excludeEnd("ctx");
  46734. }),"Recompiling ".__comma($recv(eachSide)._name()));
  46735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46736. }, function($ctx2) {$ctx2.fillBlock({eachSide:eachSide},$ctx1,1)});
  46737. //>>excludeEnd("ctx");
  46738. }));
  46739. return self;
  46740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46741. }, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass})});
  46742. //>>excludeEnd("ctx");
  46743. }; }),
  46744. $globals.Compiler);
  46745. $core.addMethod(
  46746. $core.method({
  46747. selector: "recompileAll",
  46748. protocol: "compiling",
  46749. //>>excludeStart("ide", pragmas.excludeIdeData);
  46750. args: [],
  46751. source: "recompileAll\x0a\x09Smalltalk classes \x0a\x09\x09do: [ :each | self recompile: each ]\x0a\x09\x09displayingProgress: 'Compiling all classes...'",
  46752. referencedClasses: ["Smalltalk"],
  46753. //>>excludeEnd("ide");
  46754. pragmas: [],
  46755. messageSends: ["do:displayingProgress:", "classes", "recompile:"]
  46756. }, function ($methodClass){ return function (){
  46757. var self=this,$self=this;
  46758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46759. return $core.withContext(function($ctx1) {
  46760. //>>excludeEnd("ctx");
  46761. $recv($recv($globals.Smalltalk)._classes())._do_displayingProgress_((function(each){
  46762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46763. return $core.withContext(function($ctx2) {
  46764. //>>excludeEnd("ctx");
  46765. return $self._recompile_(each);
  46766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46767. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  46768. //>>excludeEnd("ctx");
  46769. }),"Compiling all classes...");
  46770. return self;
  46771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46772. }, function($ctx1) {$ctx1.fill(self,"recompileAll",{})});
  46773. //>>excludeEnd("ctx");
  46774. }; }),
  46775. $globals.Compiler);
  46776. $core.addMethod(
  46777. $core.method({
  46778. selector: "sourceForExpression:",
  46779. protocol: "compiling",
  46780. //>>excludeStart("ide", pragmas.excludeIdeData);
  46781. args: ["aString"],
  46782. source: "sourceForExpression: aString\x0a\x09^ 'xxxDoIt ^ [ ', aString, ' ] value'",
  46783. referencedClasses: [],
  46784. //>>excludeEnd("ide");
  46785. pragmas: [],
  46786. messageSends: [","]
  46787. }, function ($methodClass){ return function (aString){
  46788. var self=this,$self=this;
  46789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46790. return $core.withContext(function($ctx1) {
  46791. //>>excludeEnd("ctx");
  46792. return [$recv("xxxDoIt ^ [ ".__comma(aString)).__comma(" ] value")
  46793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46794. ,$ctx1.sendIdx[","]=1
  46795. //>>excludeEnd("ctx");
  46796. ][0];
  46797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46798. }, function($ctx1) {$ctx1.fill(self,"sourceForExpression:",{aString:aString})});
  46799. //>>excludeEnd("ctx");
  46800. }; }),
  46801. $globals.Compiler);
  46802. $core.addMethod(
  46803. $core.method({
  46804. selector: "start:forClass:protocol:",
  46805. protocol: "compiling",
  46806. //>>excludeStart("ide", pragmas.excludeIdeData);
  46807. args: ["aString", "aClass", "anotherString"],
  46808. source: "start: aString forClass: aClass protocol: anotherString\x0a\x09| package |\x0a\x09package := aClass packageOfProtocol: anotherString.\x0a\x09self\x0a\x09\x09currentPackage: package;\x0a\x09\x09codeGenerator: (self codeGeneratorClass new\x0a\x09\x09\x09source: aString;\x0a\x09\x09\x09currentClass: aClass;\x0a\x09\x09\x09currentPackage: package;\x0a\x09\x09\x09yourself)",
  46809. referencedClasses: [],
  46810. //>>excludeEnd("ide");
  46811. pragmas: [],
  46812. messageSends: ["packageOfProtocol:", "currentPackage:", "codeGenerator:", "source:", "new", "codeGeneratorClass", "currentClass:", "yourself"]
  46813. }, function ($methodClass){ return function (aString,aClass,anotherString){
  46814. var self=this,$self=this;
  46815. var package_;
  46816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46817. return $core.withContext(function($ctx1) {
  46818. //>>excludeEnd("ctx");
  46819. var $1;
  46820. package_=$recv(aClass)._packageOfProtocol_(anotherString);
  46821. [$self._currentPackage_(package_)
  46822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46823. ,$ctx1.sendIdx["currentPackage:"]=1
  46824. //>>excludeEnd("ctx");
  46825. ][0];
  46826. $1=$recv($self._codeGeneratorClass())._new();
  46827. $recv($1)._source_(aString);
  46828. $recv($1)._currentClass_(aClass);
  46829. $recv($1)._currentPackage_(package_);
  46830. $self._codeGenerator_($recv($1)._yourself());
  46831. return self;
  46832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46833. }, function($ctx1) {$ctx1.fill(self,"start:forClass:protocol:",{aString:aString,aClass:aClass,anotherString:anotherString,package_:package_})});
  46834. //>>excludeEnd("ctx");
  46835. }; }),
  46836. $globals.Compiler);
  46837. $core.addMethod(
  46838. $core.method({
  46839. selector: "transformerAt:put:",
  46840. protocol: "compiling",
  46841. //>>excludeStart("ide", pragmas.excludeIdeData);
  46842. args: ["aString", "anObject"],
  46843. source: "transformerAt: aString put: anObject\x0a\x09self codeGenerator transformersDictionary at: aString put: anObject",
  46844. referencedClasses: [],
  46845. //>>excludeEnd("ide");
  46846. pragmas: [],
  46847. messageSends: ["at:put:", "transformersDictionary", "codeGenerator"]
  46848. }, function ($methodClass){ return function (aString,anObject){
  46849. var self=this,$self=this;
  46850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46851. return $core.withContext(function($ctx1) {
  46852. //>>excludeEnd("ctx");
  46853. $recv($recv($self._codeGenerator())._transformersDictionary())._at_put_(aString,anObject);
  46854. return self;
  46855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46856. }, function($ctx1) {$ctx1.fill(self,"transformerAt:put:",{aString:aString,anObject:anObject})});
  46857. //>>excludeEnd("ctx");
  46858. }; }),
  46859. $globals.Compiler);
  46860. $core.addMethod(
  46861. $core.method({
  46862. selector: "wrappedSourceOf:",
  46863. protocol: "private",
  46864. //>>excludeStart("ide", pragmas.excludeIdeData);
  46865. args: ["anIRMethod"],
  46866. source: "wrappedSourceOf: anIRMethod\x0a\x09^ anIRMethod attachments\x0a\x09\x09ifEmpty: [\x0a\x09\x09\x09'(function ($methodClass){ return ',\x0a\x09\x09\x09anIRMethod compiledSource,\x0a\x09\x09\x09'; })' ]\x0a\x09\x09ifNotEmpty: [ :attachments |\x0a\x09\x09\x09'(function ($methodClass){ return Object.defineProperty(',\x0a\x09\x09\x09anIRMethod compiledSource,\x0a\x09\x09\x09',\x22a$atx\x22,{enumerable:false,configurable:true,writable:true,value:',\x0a\x09\x09\x09attachments asJavaScriptSource,\x0a\x09\x09\x09'}); })' ]",
  46867. referencedClasses: [],
  46868. //>>excludeEnd("ide");
  46869. pragmas: [],
  46870. messageSends: ["ifEmpty:ifNotEmpty:", "attachments", ",", "compiledSource", "asJavaScriptSource"]
  46871. }, function ($methodClass){ return function (anIRMethod){
  46872. var self=this,$self=this;
  46873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46874. return $core.withContext(function($ctx1) {
  46875. //>>excludeEnd("ctx");
  46876. return $recv($recv(anIRMethod)._attachments())._ifEmpty_ifNotEmpty_((function(){
  46877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46878. return $core.withContext(function($ctx2) {
  46879. //>>excludeEnd("ctx");
  46880. return [$recv(["(function ($methodClass){ return ".__comma([$recv(anIRMethod)._compiledSource()
  46881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46882. ,$ctx2.sendIdx["compiledSource"]=1
  46883. //>>excludeEnd("ctx");
  46884. ][0])
  46885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46886. ,$ctx2.sendIdx[","]=2
  46887. //>>excludeEnd("ctx");
  46888. ][0]).__comma("; })")
  46889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46890. ,$ctx2.sendIdx[","]=1
  46891. //>>excludeEnd("ctx");
  46892. ][0];
  46893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46894. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  46895. //>>excludeEnd("ctx");
  46896. }),(function(attachments){
  46897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46898. return $core.withContext(function($ctx2) {
  46899. //>>excludeEnd("ctx");
  46900. return [$recv([$recv([$recv("(function ($methodClass){ return Object.defineProperty(".__comma($recv(anIRMethod)._compiledSource())).__comma(",\x22a$atx\x22,{enumerable:false,configurable:true,writable:true,value:")
  46901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46902. ,$ctx2.sendIdx[","]=5
  46903. //>>excludeEnd("ctx");
  46904. ][0]).__comma($recv(attachments)._asJavaScriptSource())
  46905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46906. ,$ctx2.sendIdx[","]=4
  46907. //>>excludeEnd("ctx");
  46908. ][0]).__comma("}); })")
  46909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46910. ,$ctx2.sendIdx[","]=3
  46911. //>>excludeEnd("ctx");
  46912. ][0];
  46913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46914. }, function($ctx2) {$ctx2.fillBlock({attachments:attachments},$ctx1,2)});
  46915. //>>excludeEnd("ctx");
  46916. }));
  46917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46918. }, function($ctx1) {$ctx1.fill(self,"wrappedSourceOf:",{anIRMethod:anIRMethod})});
  46919. //>>excludeEnd("ctx");
  46920. }; }),
  46921. $globals.Compiler);
  46922. $core.addMethod(
  46923. $core.method({
  46924. selector: "eval:",
  46925. protocol: "evaluating",
  46926. //>>excludeStart("ide", pragmas.excludeIdeData);
  46927. args: ["aString"],
  46928. source: "eval: aString\x0a\x09^ self new eval: aString",
  46929. referencedClasses: [],
  46930. //>>excludeEnd("ide");
  46931. pragmas: [],
  46932. messageSends: ["eval:", "new"]
  46933. }, function ($methodClass){ return function (aString){
  46934. var self=this,$self=this;
  46935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46936. return $core.withContext(function($ctx1) {
  46937. //>>excludeEnd("ctx");
  46938. return $recv($self._new())._eval_(aString);
  46939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46940. }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString})});
  46941. //>>excludeEnd("ctx");
  46942. }; }),
  46943. $globals.Compiler.a$cls);
  46944. $core.addMethod(
  46945. $core.method({
  46946. selector: "initialize",
  46947. protocol: "initialization",
  46948. //>>excludeStart("ide", pragmas.excludeIdeData);
  46949. args: [],
  46950. source: "initialize\x0a\x09\x22TODO remove, backward compat\x22\x0a\x09Smalltalk globals at: #SmalltalkParser put: smalltalkParser",
  46951. referencedClasses: ["Smalltalk"],
  46952. //>>excludeEnd("ide");
  46953. pragmas: [],
  46954. messageSends: ["at:put:", "globals"]
  46955. }, function ($methodClass){ return function (){
  46956. var self=this,$self=this;
  46957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46958. return $core.withContext(function($ctx1) {
  46959. //>>excludeEnd("ctx");
  46960. $recv($recv($globals.Smalltalk)._globals())._at_put_("SmalltalkParser",smalltalkParser);
  46961. return self;
  46962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46963. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  46964. //>>excludeEnd("ctx");
  46965. }; }),
  46966. $globals.Compiler.a$cls);
  46967. $core.addMethod(
  46968. $core.method({
  46969. selector: "parse:",
  46970. protocol: "parsing",
  46971. //>>excludeStart("ide", pragmas.excludeIdeData);
  46972. args: ["aString"],
  46973. source: "parse: aString\x0a\x09^ self new parse: aString",
  46974. referencedClasses: [],
  46975. //>>excludeEnd("ide");
  46976. pragmas: [],
  46977. messageSends: ["parse:", "new"]
  46978. }, function ($methodClass){ return function (aString){
  46979. var self=this,$self=this;
  46980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46981. return $core.withContext(function($ctx1) {
  46982. //>>excludeEnd("ctx");
  46983. return $recv($self._new())._parse_(aString);
  46984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46985. }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString})});
  46986. //>>excludeEnd("ctx");
  46987. }; }),
  46988. $globals.Compiler.a$cls);
  46989. $core.addMethod(
  46990. $core.method({
  46991. selector: "pseudoVariableNames",
  46992. protocol: "parsing",
  46993. //>>excludeStart("ide", pragmas.excludeIdeData);
  46994. args: [],
  46995. source: "pseudoVariableNames\x0a\x09^ PseudoVar dictionary keys asArray",
  46996. referencedClasses: ["PseudoVar"],
  46997. //>>excludeEnd("ide");
  46998. pragmas: [],
  46999. messageSends: ["asArray", "keys", "dictionary"]
  47000. }, function ($methodClass){ return function (){
  47001. var self=this,$self=this;
  47002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47003. return $core.withContext(function($ctx1) {
  47004. //>>excludeEnd("ctx");
  47005. return $recv($recv($recv($globals.PseudoVar)._dictionary())._keys())._asArray();
  47006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47007. }, function($ctx1) {$ctx1.fill(self,"pseudoVariableNames",{})});
  47008. //>>excludeEnd("ctx");
  47009. }; }),
  47010. $globals.Compiler.a$cls);
  47011. $core.addMethod(
  47012. $core.method({
  47013. selector: "recompile:",
  47014. protocol: "compiling",
  47015. //>>excludeStart("ide", pragmas.excludeIdeData);
  47016. args: ["aClass"],
  47017. source: "recompile: aClass\x0a\x09self new recompile: aClass",
  47018. referencedClasses: [],
  47019. //>>excludeEnd("ide");
  47020. pragmas: [],
  47021. messageSends: ["recompile:", "new"]
  47022. }, function ($methodClass){ return function (aClass){
  47023. var self=this,$self=this;
  47024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47025. return $core.withContext(function($ctx1) {
  47026. //>>excludeEnd("ctx");
  47027. $recv($self._new())._recompile_(aClass);
  47028. return self;
  47029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47030. }, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass})});
  47031. //>>excludeEnd("ctx");
  47032. }; }),
  47033. $globals.Compiler.a$cls);
  47034. $core.addMethod(
  47035. $core.method({
  47036. selector: "recompileAll",
  47037. protocol: "compiling",
  47038. //>>excludeStart("ide", pragmas.excludeIdeData);
  47039. args: [],
  47040. source: "recompileAll\x0a\x09Smalltalk classes do: [ :each |\x0a\x09\x09self recompile: each ]",
  47041. referencedClasses: ["Smalltalk"],
  47042. //>>excludeEnd("ide");
  47043. pragmas: [],
  47044. messageSends: ["do:", "classes", "recompile:"]
  47045. }, function ($methodClass){ return function (){
  47046. var self=this,$self=this;
  47047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47048. return $core.withContext(function($ctx1) {
  47049. //>>excludeEnd("ctx");
  47050. $recv($recv($globals.Smalltalk)._classes())._do_((function(each){
  47051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47052. return $core.withContext(function($ctx2) {
  47053. //>>excludeEnd("ctx");
  47054. return $self._recompile_(each);
  47055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47056. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  47057. //>>excludeEnd("ctx");
  47058. }));
  47059. return self;
  47060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47061. }, function($ctx1) {$ctx1.fill(self,"recompileAll",{})});
  47062. //>>excludeEnd("ctx");
  47063. }; }),
  47064. $globals.Compiler.a$cls);
  47065. $core.addClass("DoIt", $globals.Object, "Compiler-Core");
  47066. //>>excludeStart("ide", pragmas.excludeIdeData);
  47067. $globals.DoIt.comment="`DoIt` is the class used to compile and evaluate expressions. See `Compiler >> evaluateExpression:`.";
  47068. //>>excludeEnd("ide");
  47069. $core.addClass("Evaluator", $globals.Object, "Compiler-Core");
  47070. //>>excludeStart("ide", pragmas.excludeIdeData);
  47071. $globals.Evaluator.comment="I evaluate code against a receiver, dispatching #evaluate:on: to the receiver.";
  47072. //>>excludeEnd("ide");
  47073. $core.addMethod(
  47074. $core.method({
  47075. selector: "evaluate:for:",
  47076. protocol: "evaluating",
  47077. //>>excludeStart("ide", pragmas.excludeIdeData);
  47078. args: ["aString", "anObject"],
  47079. source: "evaluate: aString for: anObject\x0a\x09^ anObject evaluate: aString on: self",
  47080. referencedClasses: [],
  47081. //>>excludeEnd("ide");
  47082. pragmas: [],
  47083. messageSends: ["evaluate:on:"]
  47084. }, function ($methodClass){ return function (aString,anObject){
  47085. var self=this,$self=this;
  47086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47087. return $core.withContext(function($ctx1) {
  47088. //>>excludeEnd("ctx");
  47089. return $recv(anObject)._evaluate_on_(aString,self);
  47090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47091. }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject})});
  47092. //>>excludeEnd("ctx");
  47093. }; }),
  47094. $globals.Evaluator);
  47095. $core.addMethod(
  47096. $core.method({
  47097. selector: "evaluate:receiver:",
  47098. protocol: "evaluating",
  47099. //>>excludeStart("ide", pragmas.excludeIdeData);
  47100. args: ["aString", "anObject"],
  47101. source: "evaluate: aString receiver: anObject\x0a\x09| compiler |\x0a\x09\x0a\x09compiler := Compiler new.\x0a\x09[ compiler parseExpression: aString ] \x0a\x09\x09on: Error \x0a\x09\x09do: [ :ex | ^ Terminal alert: ex messageText ].\x0a\x0a\x09^ compiler evaluateExpression: aString on: anObject",
  47102. referencedClasses: ["Compiler", "Error", "Terminal"],
  47103. //>>excludeEnd("ide");
  47104. pragmas: [],
  47105. messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "evaluateExpression:on:"]
  47106. }, function ($methodClass){ return function (aString,anObject){
  47107. var self=this,$self=this;
  47108. var compiler;
  47109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47110. return $core.withContext(function($ctx1) {
  47111. //>>excludeEnd("ctx");
  47112. var $early={};
  47113. try {
  47114. compiler=$recv($globals.Compiler)._new();
  47115. $recv((function(){
  47116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47117. return $core.withContext(function($ctx2) {
  47118. //>>excludeEnd("ctx");
  47119. return $recv(compiler)._parseExpression_(aString);
  47120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47121. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  47122. //>>excludeEnd("ctx");
  47123. }))._on_do_($globals.Error,(function(ex){
  47124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47125. return $core.withContext(function($ctx2) {
  47126. //>>excludeEnd("ctx");
  47127. throw $early=[$recv($globals.Terminal)._alert_($recv(ex)._messageText())];
  47128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47129. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
  47130. //>>excludeEnd("ctx");
  47131. }));
  47132. return $recv(compiler)._evaluateExpression_on_(aString,anObject);
  47133. }
  47134. catch(e) {if(e===$early)return e[0]; throw e}
  47135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47136. }, function($ctx1) {$ctx1.fill(self,"evaluate:receiver:",{aString:aString,anObject:anObject,compiler:compiler})});
  47137. //>>excludeEnd("ctx");
  47138. }; }),
  47139. $globals.Evaluator);
  47140. $core.addMethod(
  47141. $core.method({
  47142. selector: "evaluate:for:",
  47143. protocol: "instance creation",
  47144. //>>excludeStart("ide", pragmas.excludeIdeData);
  47145. args: ["aString", "anObject"],
  47146. source: "evaluate: aString for: anObject\x0a\x09^ self new evaluate: aString for: anObject",
  47147. referencedClasses: [],
  47148. //>>excludeEnd("ide");
  47149. pragmas: [],
  47150. messageSends: ["evaluate:for:", "new"]
  47151. }, function ($methodClass){ return function (aString,anObject){
  47152. var self=this,$self=this;
  47153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47154. return $core.withContext(function($ctx1) {
  47155. //>>excludeEnd("ctx");
  47156. return $recv($self._new())._evaluate_for_(aString,anObject);
  47157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47158. }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject})});
  47159. //>>excludeEnd("ctx");
  47160. }; }),
  47161. $globals.Evaluator.a$cls);
  47162. $core.addClass("ParseError", $globals.Error, "Compiler-Core");
  47163. //>>excludeStart("ide", pragmas.excludeIdeData);
  47164. $globals.ParseError.comment="Instance of ParseError are signaled on any parsing error.\x0aSee `Compiler >> #parse:`";
  47165. //>>excludeEnd("ide");
  47166. $core.addTrait("TPragmator", "Compiler-Core");
  47167. $core.addMethod(
  47168. $core.method({
  47169. selector: "canProcessPragma:",
  47170. protocol: "pragma processing",
  47171. //>>excludeStart("ide", pragmas.excludeIdeData);
  47172. args: ["aMessage"],
  47173. source: "canProcessPragma: aMessage\x0a\x09^ self class includesSelector: aMessage selector",
  47174. referencedClasses: [],
  47175. //>>excludeEnd("ide");
  47176. pragmas: [],
  47177. messageSends: ["includesSelector:", "class", "selector"]
  47178. }, function ($methodClass){ return function (aMessage){
  47179. var self=this,$self=this;
  47180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47181. return $core.withContext(function($ctx1) {
  47182. //>>excludeEnd("ctx");
  47183. return $recv($self._class())._includesSelector_($recv(aMessage)._selector());
  47184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47185. }, function($ctx1) {$ctx1.fill(self,"canProcessPragma:",{aMessage:aMessage})});
  47186. //>>excludeEnd("ctx");
  47187. }; }),
  47188. $globals.TPragmator);
  47189. $core.addMethod(
  47190. $core.method({
  47191. selector: "processPragma:",
  47192. protocol: "pragma processing",
  47193. //>>excludeStart("ide", pragmas.excludeIdeData);
  47194. args: ["aMessage"],
  47195. source: "processPragma: aMessage\x0a\x09(self canProcessPragma: aMessage) ifTrue: [\x0a\x09\x09^ aMessage sendTo: self ]",
  47196. referencedClasses: [],
  47197. //>>excludeEnd("ide");
  47198. pragmas: [],
  47199. messageSends: ["ifTrue:", "canProcessPragma:", "sendTo:"]
  47200. }, function ($methodClass){ return function (aMessage){
  47201. var self=this,$self=this;
  47202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47203. return $core.withContext(function($ctx1) {
  47204. //>>excludeEnd("ctx");
  47205. if($core.assert($self._canProcessPragma_(aMessage))){
  47206. return $recv(aMessage)._sendTo_(self);
  47207. }
  47208. return self;
  47209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47210. }, function($ctx1) {$ctx1.fill(self,"processPragma:",{aMessage:aMessage})});
  47211. //>>excludeEnd("ctx");
  47212. }; }),
  47213. $globals.TPragmator);
  47214. $core.addMethod(
  47215. $core.method({
  47216. selector: "processPragmas:",
  47217. protocol: "pragma processing",
  47218. //>>excludeStart("ide", pragmas.excludeIdeData);
  47219. args: ["aCollection"],
  47220. source: "processPragmas: aCollection\x0a\x09aCollection do: [ :each | self processPragma: each ]",
  47221. referencedClasses: [],
  47222. //>>excludeEnd("ide");
  47223. pragmas: [],
  47224. messageSends: ["do:", "processPragma:"]
  47225. }, function ($methodClass){ return function (aCollection){
  47226. var self=this,$self=this;
  47227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47228. return $core.withContext(function($ctx1) {
  47229. //>>excludeEnd("ctx");
  47230. $recv(aCollection)._do_((function(each){
  47231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47232. return $core.withContext(function($ctx2) {
  47233. //>>excludeEnd("ctx");
  47234. return $self._processPragma_(each);
  47235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47236. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  47237. //>>excludeEnd("ctx");
  47238. }));
  47239. return self;
  47240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47241. }, function($ctx1) {$ctx1.fill(self,"processPragmas:",{aCollection:aCollection})});
  47242. //>>excludeEnd("ctx");
  47243. }; }),
  47244. $globals.TPragmator);
  47245. $core.addMethod(
  47246. $core.method({
  47247. selector: "eval:",
  47248. protocol: "*Compiler-Core",
  47249. //>>excludeStart("ide", pragmas.excludeIdeData);
  47250. args: ["aString"],
  47251. source: "eval: aString\x0a\x09^ self context\x0a\x09\x09ifEmpty: [ Compiler eval: aString ]\x0a\x09\x09ifNotEmpty: [ :context |\x0a\x09\x09\x09| wrapperSource |\x0a\x09\x09\x09wrapperSource :=\x0a\x09\x09\x09\x09'(function(', (',' join: context keys), '){return(', aString, ');})'.\x0a\x09\x09\x09(Compiler eval: wrapperSource)\x0a\x09\x09\x09\x09valueWithPossibleArguments: context values ]",
  47252. referencedClasses: ["Compiler"],
  47253. //>>excludeEnd("ide");
  47254. pragmas: [],
  47255. messageSends: ["ifEmpty:ifNotEmpty:", "context", "eval:", ",", "join:", "keys", "valueWithPossibleArguments:", "values"]
  47256. }, function ($methodClass){ return function (aString){
  47257. var self=this,$self=this;
  47258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47259. return $core.withContext(function($ctx1) {
  47260. //>>excludeEnd("ctx");
  47261. return $recv($self._context())._ifEmpty_ifNotEmpty_((function(){
  47262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47263. return $core.withContext(function($ctx2) {
  47264. //>>excludeEnd("ctx");
  47265. return [$recv($globals.Compiler)._eval_(aString)
  47266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47267. ,$ctx2.sendIdx["eval:"]=1
  47268. //>>excludeEnd("ctx");
  47269. ][0];
  47270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47271. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  47272. //>>excludeEnd("ctx");
  47273. }),(function(context){
  47274. var wrapperSource;
  47275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47276. return $core.withContext(function($ctx2) {
  47277. //>>excludeEnd("ctx");
  47278. wrapperSource=[$recv([$recv([$recv("(function(".__comma(","._join_($recv(context)._keys()))).__comma("){return(")
  47279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47280. ,$ctx2.sendIdx[","]=3
  47281. //>>excludeEnd("ctx");
  47282. ][0]).__comma(aString)
  47283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47284. ,$ctx2.sendIdx[","]=2
  47285. //>>excludeEnd("ctx");
  47286. ][0]).__comma(");})")
  47287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47288. ,$ctx2.sendIdx[","]=1
  47289. //>>excludeEnd("ctx");
  47290. ][0];
  47291. return $recv($recv($globals.Compiler)._eval_(wrapperSource))._valueWithPossibleArguments_($recv(context)._values());
  47292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47293. }, function($ctx2) {$ctx2.fillBlock({context:context,wrapperSource:wrapperSource},$ctx1,2)});
  47294. //>>excludeEnd("ctx");
  47295. }));
  47296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47297. }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString})});
  47298. //>>excludeEnd("ctx");
  47299. }; }),
  47300. $globals.Package);
  47301. $core.addMethod(
  47302. $core.method({
  47303. selector: "asVariableName",
  47304. protocol: "*Compiler-Core",
  47305. //>>excludeStart("ide", pragmas.excludeIdeData);
  47306. args: [],
  47307. source: "asVariableName\x0a\x09^ (Smalltalk reservedWords includes: self)\x0a\x09\x09ifTrue: [ self, '_' ]\x0a\x09\x09ifFalse: [ self ]",
  47308. referencedClasses: ["Smalltalk"],
  47309. //>>excludeEnd("ide");
  47310. pragmas: [],
  47311. messageSends: ["ifTrue:ifFalse:", "includes:", "reservedWords", ","]
  47312. }, function ($methodClass){ return function (){
  47313. var self=this,$self=this;
  47314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47315. return $core.withContext(function($ctx1) {
  47316. //>>excludeEnd("ctx");
  47317. if($core.assert($recv($recv($globals.Smalltalk)._reservedWords())._includes_(self))){
  47318. return $self.__comma("_");
  47319. } else {
  47320. return self;
  47321. }
  47322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47323. }, function($ctx1) {$ctx1.fill(self,"asVariableName",{})});
  47324. //>>excludeEnd("ctx");
  47325. }; }),
  47326. $globals.String);
  47327. });
  47328. define('amber/core/Compiler-AST',["amber/boot", "require", "amber/core/Compiler-Core", "amber/core/Kernel-Dag", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Methods", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  47329. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  47330. var $pkg = $core.addPackage("Compiler-AST");
  47331. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  47332. $core.addClass("ASTNode", $globals.DagParentNode, "Compiler-AST");
  47333. $core.setSlots($globals.ASTNode, ["parent", "position", "source"]);
  47334. //>>excludeStart("ide", pragmas.excludeIdeData);
  47335. $globals.ASTNode.comment="I am the abstract root class of the abstract syntax tree.\x0a\x0aConcrete classes should implement `#accept:` to allow visiting.\x0a\x0a`position` holds a point containing line and column number of the symbol location in the original source file.";
  47336. //>>excludeEnd("ide");
  47337. $core.addMethod(
  47338. $core.method({
  47339. selector: "inPosition:",
  47340. protocol: "testing",
  47341. //>>excludeStart("ide", pragmas.excludeIdeData);
  47342. args: ["aPoint"],
  47343. source: "inPosition: aPoint\x0a\x09^ (self positionStart <= aPoint and: [\x0a\x09\x09self positionEnd >= aPoint ])",
  47344. referencedClasses: [],
  47345. //>>excludeEnd("ide");
  47346. pragmas: [],
  47347. messageSends: ["and:", "<=", "positionStart", ">=", "positionEnd"]
  47348. }, function ($methodClass){ return function (aPoint){
  47349. var self=this,$self=this;
  47350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47351. return $core.withContext(function($ctx1) {
  47352. //>>excludeEnd("ctx");
  47353. if($core.assert($recv($self._positionStart()).__lt_eq(aPoint))){
  47354. return $recv($self._positionEnd()).__gt_eq(aPoint);
  47355. } else {
  47356. return false;
  47357. }
  47358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47359. }, function($ctx1) {$ctx1.fill(self,"inPosition:",{aPoint:aPoint})});
  47360. //>>excludeEnd("ctx");
  47361. }; }),
  47362. $globals.ASTNode);
  47363. $core.addMethod(
  47364. $core.method({
  47365. selector: "isNavigationNode",
  47366. protocol: "testing",
  47367. //>>excludeStart("ide", pragmas.excludeIdeData);
  47368. args: [],
  47369. source: "isNavigationNode\x0a\x09\x22Answer true if the node can be navigated to\x22\x0a\x09\x0a\x09^ false",
  47370. referencedClasses: [],
  47371. //>>excludeEnd("ide");
  47372. pragmas: [],
  47373. messageSends: []
  47374. }, function ($methodClass){ return function (){
  47375. var self=this,$self=this;
  47376. return false;
  47377. }; }),
  47378. $globals.ASTNode);
  47379. $core.addMethod(
  47380. $core.method({
  47381. selector: "isReturnNode",
  47382. protocol: "testing",
  47383. //>>excludeStart("ide", pragmas.excludeIdeData);
  47384. args: [],
  47385. source: "isReturnNode\x0a\x09^ false",
  47386. referencedClasses: [],
  47387. //>>excludeEnd("ide");
  47388. pragmas: [],
  47389. messageSends: []
  47390. }, function ($methodClass){ return function (){
  47391. var self=this,$self=this;
  47392. return false;
  47393. }; }),
  47394. $globals.ASTNode);
  47395. $core.addMethod(
  47396. $core.method({
  47397. selector: "location:",
  47398. protocol: "accessing",
  47399. //>>excludeStart("ide", pragmas.excludeIdeData);
  47400. args: ["aLocation"],
  47401. source: "location: aLocation\x0a\x09self position: aLocation start line @ aLocation start column",
  47402. referencedClasses: [],
  47403. //>>excludeEnd("ide");
  47404. pragmas: [],
  47405. messageSends: ["position:", "@", "line", "start", "column"]
  47406. }, function ($methodClass){ return function (aLocation){
  47407. var self=this,$self=this;
  47408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47409. return $core.withContext(function($ctx1) {
  47410. //>>excludeEnd("ctx");
  47411. $self._position_($recv($recv([$recv(aLocation)._start()
  47412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47413. ,$ctx1.sendIdx["start"]=1
  47414. //>>excludeEnd("ctx");
  47415. ][0])._line()).__at($recv($recv(aLocation)._start())._column()));
  47416. return self;
  47417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47418. }, function($ctx1) {$ctx1.fill(self,"location:",{aLocation:aLocation})});
  47419. //>>excludeEnd("ctx");
  47420. }; }),
  47421. $globals.ASTNode);
  47422. $core.addMethod(
  47423. $core.method({
  47424. selector: "navigationNodeAt:ifAbsent:",
  47425. protocol: "accessing",
  47426. //>>excludeStart("ide", pragmas.excludeIdeData);
  47427. args: ["aPoint", "aBlock"],
  47428. source: "navigationNodeAt: aPoint ifAbsent: aBlock\x0a\x09\x22Answer the navigation node in the receiver's tree at aPoint \x0a\x09or nil if no navigation node was found.\x0a\x09\x0a\x09See `node >> isNaviationNode`\x22\x0a\x09\x0a\x09| children |\x0a\x09\x0a\x09children := self allDagChildren select: [ :each | \x0a\x09\x09each isNavigationNode and: [ each inPosition: aPoint ] ].\x0a\x09\x0a\x09children ifEmpty: [ ^ aBlock value ].\x0a\x09\x0a\x09^ (children asArray sort: [ :a :b | \x0a\x09\x09(a positionStart dist: aPoint) <= \x0a\x09\x09(b positionStart dist: aPoint) ]) first",
  47429. referencedClasses: [],
  47430. //>>excludeEnd("ide");
  47431. pragmas: [],
  47432. messageSends: ["select:", "allDagChildren", "and:", "isNavigationNode", "inPosition:", "ifEmpty:", "value", "first", "sort:", "asArray", "<=", "dist:", "positionStart"]
  47433. }, function ($methodClass){ return function (aPoint,aBlock){
  47434. var self=this,$self=this;
  47435. var children;
  47436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47437. return $core.withContext(function($ctx1) {
  47438. //>>excludeEnd("ctx");
  47439. var $early={};
  47440. try {
  47441. children=$recv($self._allDagChildren())._select_((function(each){
  47442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47443. return $core.withContext(function($ctx2) {
  47444. //>>excludeEnd("ctx");
  47445. if($core.assert($recv(each)._isNavigationNode())){
  47446. return $recv(each)._inPosition_(aPoint);
  47447. } else {
  47448. return false;
  47449. }
  47450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47451. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  47452. //>>excludeEnd("ctx");
  47453. }));
  47454. $recv(children)._ifEmpty_((function(){
  47455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47456. return $core.withContext(function($ctx2) {
  47457. //>>excludeEnd("ctx");
  47458. throw $early=[$recv(aBlock)._value()];
  47459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47460. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  47461. //>>excludeEnd("ctx");
  47462. }));
  47463. return $recv($recv($recv(children)._asArray())._sort_((function(a,b){
  47464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47465. return $core.withContext(function($ctx2) {
  47466. //>>excludeEnd("ctx");
  47467. return $recv([$recv([$recv(a)._positionStart()
  47468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47469. ,$ctx2.sendIdx["positionStart"]=1
  47470. //>>excludeEnd("ctx");
  47471. ][0])._dist_(aPoint)
  47472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47473. ,$ctx2.sendIdx["dist:"]=1
  47474. //>>excludeEnd("ctx");
  47475. ][0]).__lt_eq($recv($recv(b)._positionStart())._dist_(aPoint));
  47476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47477. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,4)});
  47478. //>>excludeEnd("ctx");
  47479. })))._first();
  47480. }
  47481. catch(e) {if(e===$early)return e[0]; throw e}
  47482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47483. }, function($ctx1) {$ctx1.fill(self,"navigationNodeAt:ifAbsent:",{aPoint:aPoint,aBlock:aBlock,children:children})});
  47484. //>>excludeEnd("ctx");
  47485. }; }),
  47486. $globals.ASTNode);
  47487. $core.addMethod(
  47488. $core.method({
  47489. selector: "parent",
  47490. protocol: "accessing",
  47491. //>>excludeStart("ide", pragmas.excludeIdeData);
  47492. args: [],
  47493. source: "parent\x0a\x09^ parent",
  47494. referencedClasses: [],
  47495. //>>excludeEnd("ide");
  47496. pragmas: [],
  47497. messageSends: []
  47498. }, function ($methodClass){ return function (){
  47499. var self=this,$self=this;
  47500. return $self.parent;
  47501. }; }),
  47502. $globals.ASTNode);
  47503. $core.addMethod(
  47504. $core.method({
  47505. selector: "parent:",
  47506. protocol: "accessing",
  47507. //>>excludeStart("ide", pragmas.excludeIdeData);
  47508. args: ["aNode"],
  47509. source: "parent: aNode\x0a\x09parent := aNode",
  47510. referencedClasses: [],
  47511. //>>excludeEnd("ide");
  47512. pragmas: [],
  47513. messageSends: []
  47514. }, function ($methodClass){ return function (aNode){
  47515. var self=this,$self=this;
  47516. $self.parent=aNode;
  47517. return self;
  47518. }; }),
  47519. $globals.ASTNode);
  47520. $core.addMethod(
  47521. $core.method({
  47522. selector: "position",
  47523. protocol: "accessing",
  47524. //>>excludeStart("ide", pragmas.excludeIdeData);
  47525. args: [],
  47526. source: "position\x0a\x09\x22answer the line and column of the receiver in the source code\x22\x0a\x09\x0a\x09^ position ifNil: [ \x0a\x09\x09self parent ifNotNil: [ :node | node position ] ]",
  47527. referencedClasses: [],
  47528. //>>excludeEnd("ide");
  47529. pragmas: [],
  47530. messageSends: ["ifNil:", "ifNotNil:", "parent", "position"]
  47531. }, function ($methodClass){ return function (){
  47532. var self=this,$self=this;
  47533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47534. return $core.withContext(function($ctx1) {
  47535. //>>excludeEnd("ctx");
  47536. var $1,$2;
  47537. $1=$self.position;
  47538. if($1 == null || $1.a$nil){
  47539. $2=$self._parent();
  47540. if($2 == null || $2.a$nil){
  47541. return $2;
  47542. } else {
  47543. var node;
  47544. node=$2;
  47545. return $recv(node)._position();
  47546. }
  47547. } else {
  47548. return $1;
  47549. }
  47550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47551. }, function($ctx1) {$ctx1.fill(self,"position",{})});
  47552. //>>excludeEnd("ctx");
  47553. }; }),
  47554. $globals.ASTNode);
  47555. $core.addMethod(
  47556. $core.method({
  47557. selector: "position:",
  47558. protocol: "accessing",
  47559. //>>excludeStart("ide", pragmas.excludeIdeData);
  47560. args: ["aPosition"],
  47561. source: "position: aPosition\x0a\x09position := aPosition",
  47562. referencedClasses: [],
  47563. //>>excludeEnd("ide");
  47564. pragmas: [],
  47565. messageSends: []
  47566. }, function ($methodClass){ return function (aPosition){
  47567. var self=this,$self=this;
  47568. $self.position=aPosition;
  47569. return self;
  47570. }; }),
  47571. $globals.ASTNode);
  47572. $core.addMethod(
  47573. $core.method({
  47574. selector: "positionEnd",
  47575. protocol: "accessing",
  47576. //>>excludeStart("ide", pragmas.excludeIdeData);
  47577. args: [],
  47578. source: "positionEnd\x0a\x09^ self positionStart + ((self source lines size - 1) @ (self source lines last size - 1))",
  47579. referencedClasses: [],
  47580. //>>excludeEnd("ide");
  47581. pragmas: [],
  47582. messageSends: ["+", "positionStart", "@", "-", "size", "lines", "source", "last"]
  47583. }, function ($methodClass){ return function (){
  47584. var self=this,$self=this;
  47585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47586. return $core.withContext(function($ctx1) {
  47587. //>>excludeEnd("ctx");
  47588. return $recv($self._positionStart()).__plus($recv([$recv([$recv([$recv([$self._source()
  47589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47590. ,$ctx1.sendIdx["source"]=1
  47591. //>>excludeEnd("ctx");
  47592. ][0])._lines()
  47593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47594. ,$ctx1.sendIdx["lines"]=1
  47595. //>>excludeEnd("ctx");
  47596. ][0])._size()
  47597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47598. ,$ctx1.sendIdx["size"]=1
  47599. //>>excludeEnd("ctx");
  47600. ][0]).__minus((1))
  47601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47602. ,$ctx1.sendIdx["-"]=1
  47603. //>>excludeEnd("ctx");
  47604. ][0]).__at($recv($recv($recv($recv($self._source())._lines())._last())._size()).__minus((1))));
  47605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47606. }, function($ctx1) {$ctx1.fill(self,"positionEnd",{})});
  47607. //>>excludeEnd("ctx");
  47608. }; }),
  47609. $globals.ASTNode);
  47610. $core.addMethod(
  47611. $core.method({
  47612. selector: "positionStart",
  47613. protocol: "accessing",
  47614. //>>excludeStart("ide", pragmas.excludeIdeData);
  47615. args: [],
  47616. source: "positionStart\x0a\x09^ self position",
  47617. referencedClasses: [],
  47618. //>>excludeEnd("ide");
  47619. pragmas: [],
  47620. messageSends: ["position"]
  47621. }, function ($methodClass){ return function (){
  47622. var self=this,$self=this;
  47623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47624. return $core.withContext(function($ctx1) {
  47625. //>>excludeEnd("ctx");
  47626. return $self._position();
  47627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47628. }, function($ctx1) {$ctx1.fill(self,"positionStart",{})});
  47629. //>>excludeEnd("ctx");
  47630. }; }),
  47631. $globals.ASTNode);
  47632. $core.addMethod(
  47633. $core.method({
  47634. selector: "size",
  47635. protocol: "accessing",
  47636. //>>excludeStart("ide", pragmas.excludeIdeData);
  47637. args: [],
  47638. source: "size\x0a\x09^ self source size",
  47639. referencedClasses: [],
  47640. //>>excludeEnd("ide");
  47641. pragmas: [],
  47642. messageSends: ["size", "source"]
  47643. }, function ($methodClass){ return function (){
  47644. var self=this,$self=this;
  47645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47646. return $core.withContext(function($ctx1) {
  47647. //>>excludeEnd("ctx");
  47648. return $recv($self._source())._size();
  47649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47650. }, function($ctx1) {$ctx1.fill(self,"size",{})});
  47651. //>>excludeEnd("ctx");
  47652. }; }),
  47653. $globals.ASTNode);
  47654. $core.addMethod(
  47655. $core.method({
  47656. selector: "source",
  47657. protocol: "accessing",
  47658. //>>excludeStart("ide", pragmas.excludeIdeData);
  47659. args: [],
  47660. source: "source\x0a\x09^ source ifNil: [ '' ]",
  47661. referencedClasses: [],
  47662. //>>excludeEnd("ide");
  47663. pragmas: [],
  47664. messageSends: ["ifNil:"]
  47665. }, function ($methodClass){ return function (){
  47666. var self=this,$self=this;
  47667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47668. return $core.withContext(function($ctx1) {
  47669. //>>excludeEnd("ctx");
  47670. var $1;
  47671. $1=$self.source;
  47672. if($1 == null || $1.a$nil){
  47673. return "";
  47674. } else {
  47675. return $1;
  47676. }
  47677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47678. }, function($ctx1) {$ctx1.fill(self,"source",{})});
  47679. //>>excludeEnd("ctx");
  47680. }; }),
  47681. $globals.ASTNode);
  47682. $core.addMethod(
  47683. $core.method({
  47684. selector: "source:",
  47685. protocol: "accessing",
  47686. //>>excludeStart("ide", pragmas.excludeIdeData);
  47687. args: ["aString"],
  47688. source: "source: aString\x0a\x09source := aString",
  47689. referencedClasses: [],
  47690. //>>excludeEnd("ide");
  47691. pragmas: [],
  47692. messageSends: []
  47693. }, function ($methodClass){ return function (aString){
  47694. var self=this,$self=this;
  47695. $self.source=aString;
  47696. return self;
  47697. }; }),
  47698. $globals.ASTNode);
  47699. $core.addClass("ExpressionNode", $globals.ASTNode, "Compiler-AST");
  47700. $core.setSlots($globals.ExpressionNode, ["shouldBeAliased"]);
  47701. //>>excludeStart("ide", pragmas.excludeIdeData);
  47702. $globals.ExpressionNode.comment="I am the abstract root class for expression nodes.";
  47703. //>>excludeEnd("ide");
  47704. $core.addMethod(
  47705. $core.method({
  47706. selector: "isIdempotent",
  47707. protocol: "testing",
  47708. //>>excludeStart("ide", pragmas.excludeIdeData);
  47709. args: [],
  47710. source: "isIdempotent\x0a\x09^ false",
  47711. referencedClasses: [],
  47712. //>>excludeEnd("ide");
  47713. pragmas: [],
  47714. messageSends: []
  47715. }, function ($methodClass){ return function (){
  47716. var self=this,$self=this;
  47717. return false;
  47718. }; }),
  47719. $globals.ExpressionNode);
  47720. $core.addMethod(
  47721. $core.method({
  47722. selector: "isImmutable",
  47723. protocol: "testing",
  47724. //>>excludeStart("ide", pragmas.excludeIdeData);
  47725. args: [],
  47726. source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent instead.'.\x0a\x09^ self isIdempotent",
  47727. referencedClasses: [],
  47728. //>>excludeEnd("ide");
  47729. pragmas: [],
  47730. messageSends: ["deprecatedAPI:", "isIdempotent"]
  47731. }, function ($methodClass){ return function (){
  47732. var self=this,$self=this;
  47733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47734. return $core.withContext(function($ctx1) {
  47735. //>>excludeEnd("ctx");
  47736. $self._deprecatedAPI_("Use #isIdempotent instead.");
  47737. return $self._isIdempotent();
  47738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47739. }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
  47740. //>>excludeEnd("ctx");
  47741. }; }),
  47742. $globals.ExpressionNode);
  47743. $core.addMethod(
  47744. $core.method({
  47745. selector: "isSuper",
  47746. protocol: "testing",
  47747. //>>excludeStart("ide", pragmas.excludeIdeData);
  47748. args: [],
  47749. source: "isSuper\x0a\x09^ false",
  47750. referencedClasses: [],
  47751. //>>excludeEnd("ide");
  47752. pragmas: [],
  47753. messageSends: []
  47754. }, function ($methodClass){ return function (){
  47755. var self=this,$self=this;
  47756. return false;
  47757. }; }),
  47758. $globals.ExpressionNode);
  47759. $core.addMethod(
  47760. $core.method({
  47761. selector: "shouldBeAliased",
  47762. protocol: "accessing",
  47763. //>>excludeStart("ide", pragmas.excludeIdeData);
  47764. args: [],
  47765. source: "shouldBeAliased\x0a\x09^ shouldBeAliased ifNil: [ false ]",
  47766. referencedClasses: [],
  47767. //>>excludeEnd("ide");
  47768. pragmas: [],
  47769. messageSends: ["ifNil:"]
  47770. }, function ($methodClass){ return function (){
  47771. var self=this,$self=this;
  47772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47773. return $core.withContext(function($ctx1) {
  47774. //>>excludeEnd("ctx");
  47775. var $1;
  47776. $1=$self.shouldBeAliased;
  47777. if($1 == null || $1.a$nil){
  47778. return false;
  47779. } else {
  47780. return $1;
  47781. }
  47782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47783. }, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{})});
  47784. //>>excludeEnd("ctx");
  47785. }; }),
  47786. $globals.ExpressionNode);
  47787. $core.addMethod(
  47788. $core.method({
  47789. selector: "shouldBeAliased:",
  47790. protocol: "accessing",
  47791. //>>excludeStart("ide", pragmas.excludeIdeData);
  47792. args: ["aBoolean"],
  47793. source: "shouldBeAliased: aBoolean\x0a\x09shouldBeAliased := aBoolean",
  47794. referencedClasses: [],
  47795. //>>excludeEnd("ide");
  47796. pragmas: [],
  47797. messageSends: []
  47798. }, function ($methodClass){ return function (aBoolean){
  47799. var self=this,$self=this;
  47800. $self.shouldBeAliased=aBoolean;
  47801. return self;
  47802. }; }),
  47803. $globals.ExpressionNode);
  47804. $core.addMethod(
  47805. $core.method({
  47806. selector: "withTail:",
  47807. protocol: "building",
  47808. //>>excludeStart("ide", pragmas.excludeIdeData);
  47809. args: ["aCollection"],
  47810. source: "withTail: aCollection\x0a\x09^ aCollection inject: self into: [\x0a\x09\x09:receiver :send | SendNode new\x0a\x09\x09\x09position: send position;\x0a\x09\x09\x09source: send source;\x0a\x09\x09\x09receiver: receiver;\x0a\x09\x09\x09selector: send selector;\x0a\x09\x09\x09arguments: send arguments;\x0a\x09\x09\x09yourself ]",
  47811. referencedClasses: ["SendNode"],
  47812. //>>excludeEnd("ide");
  47813. pragmas: [],
  47814. messageSends: ["inject:into:", "position:", "new", "position", "source:", "source", "receiver:", "selector:", "selector", "arguments:", "arguments", "yourself"]
  47815. }, function ($methodClass){ return function (aCollection){
  47816. var self=this,$self=this;
  47817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47818. return $core.withContext(function($ctx1) {
  47819. //>>excludeEnd("ctx");
  47820. var $1;
  47821. return $recv(aCollection)._inject_into_(self,(function(receiver,send){
  47822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47823. return $core.withContext(function($ctx2) {
  47824. //>>excludeEnd("ctx");
  47825. $1=$recv($globals.SendNode)._new();
  47826. $recv($1)._position_($recv(send)._position());
  47827. $recv($1)._source_($recv(send)._source());
  47828. $recv($1)._receiver_(receiver);
  47829. $recv($1)._selector_($recv(send)._selector());
  47830. $recv($1)._arguments_($recv(send)._arguments());
  47831. return $recv($1)._yourself();
  47832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47833. }, function($ctx2) {$ctx2.fillBlock({receiver:receiver,send:send},$ctx1,1)});
  47834. //>>excludeEnd("ctx");
  47835. }));
  47836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47837. }, function($ctx1) {$ctx1.fill(self,"withTail:",{aCollection:aCollection})});
  47838. //>>excludeEnd("ctx");
  47839. }; }),
  47840. $globals.ExpressionNode);
  47841. $core.addClass("AssignmentNode", $globals.ExpressionNode, "Compiler-AST");
  47842. $core.setSlots($globals.AssignmentNode, ["left", "right"]);
  47843. //>>excludeStart("ide", pragmas.excludeIdeData);
  47844. $globals.AssignmentNode.comment="I represent an assignment node.";
  47845. //>>excludeEnd("ide");
  47846. $core.addMethod(
  47847. $core.method({
  47848. selector: "acceptDagVisitor:",
  47849. protocol: "visiting",
  47850. //>>excludeStart("ide", pragmas.excludeIdeData);
  47851. args: ["aVisitor"],
  47852. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitAssignmentNode: self",
  47853. referencedClasses: [],
  47854. //>>excludeEnd("ide");
  47855. pragmas: [],
  47856. messageSends: ["visitAssignmentNode:"]
  47857. }, function ($methodClass){ return function (aVisitor){
  47858. var self=this,$self=this;
  47859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47860. return $core.withContext(function($ctx1) {
  47861. //>>excludeEnd("ctx");
  47862. return $recv(aVisitor)._visitAssignmentNode_(self);
  47863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47864. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  47865. //>>excludeEnd("ctx");
  47866. }; }),
  47867. $globals.AssignmentNode);
  47868. $core.addMethod(
  47869. $core.method({
  47870. selector: "dagChildren",
  47871. protocol: "accessing",
  47872. //>>excludeStart("ide", pragmas.excludeIdeData);
  47873. args: [],
  47874. source: "dagChildren\x0a\x09^ { self left. self right }",
  47875. referencedClasses: [],
  47876. //>>excludeEnd("ide");
  47877. pragmas: [],
  47878. messageSends: ["left", "right"]
  47879. }, function ($methodClass){ return function (){
  47880. var self=this,$self=this;
  47881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47882. return $core.withContext(function($ctx1) {
  47883. //>>excludeEnd("ctx");
  47884. return [$self._left(),$self._right()];
  47885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47886. }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
  47887. //>>excludeEnd("ctx");
  47888. }; }),
  47889. $globals.AssignmentNode);
  47890. $core.addMethod(
  47891. $core.method({
  47892. selector: "left",
  47893. protocol: "accessing",
  47894. //>>excludeStart("ide", pragmas.excludeIdeData);
  47895. args: [],
  47896. source: "left\x0a\x09^ left",
  47897. referencedClasses: [],
  47898. //>>excludeEnd("ide");
  47899. pragmas: [],
  47900. messageSends: []
  47901. }, function ($methodClass){ return function (){
  47902. var self=this,$self=this;
  47903. return $self.left;
  47904. }; }),
  47905. $globals.AssignmentNode);
  47906. $core.addMethod(
  47907. $core.method({
  47908. selector: "left:",
  47909. protocol: "accessing",
  47910. //>>excludeStart("ide", pragmas.excludeIdeData);
  47911. args: ["aNode"],
  47912. source: "left: aNode\x0a\x09left := aNode",
  47913. referencedClasses: [],
  47914. //>>excludeEnd("ide");
  47915. pragmas: [],
  47916. messageSends: []
  47917. }, function ($methodClass){ return function (aNode){
  47918. var self=this,$self=this;
  47919. $self.left=aNode;
  47920. return self;
  47921. }; }),
  47922. $globals.AssignmentNode);
  47923. $core.addMethod(
  47924. $core.method({
  47925. selector: "right",
  47926. protocol: "accessing",
  47927. //>>excludeStart("ide", pragmas.excludeIdeData);
  47928. args: [],
  47929. source: "right\x0a\x09^ right",
  47930. referencedClasses: [],
  47931. //>>excludeEnd("ide");
  47932. pragmas: [],
  47933. messageSends: []
  47934. }, function ($methodClass){ return function (){
  47935. var self=this,$self=this;
  47936. return $self.right;
  47937. }; }),
  47938. $globals.AssignmentNode);
  47939. $core.addMethod(
  47940. $core.method({
  47941. selector: "right:",
  47942. protocol: "accessing",
  47943. //>>excludeStart("ide", pragmas.excludeIdeData);
  47944. args: ["aNode"],
  47945. source: "right: aNode\x0a\x09right := aNode",
  47946. referencedClasses: [],
  47947. //>>excludeEnd("ide");
  47948. pragmas: [],
  47949. messageSends: []
  47950. }, function ($methodClass){ return function (aNode){
  47951. var self=this,$self=this;
  47952. $self.right=aNode;
  47953. return self;
  47954. }; }),
  47955. $globals.AssignmentNode);
  47956. $core.addClass("BlockNode", $globals.ExpressionNode, "Compiler-AST");
  47957. $core.setSlots($globals.BlockNode, ["parameters", "scope", "sequenceNode"]);
  47958. //>>excludeStart("ide", pragmas.excludeIdeData);
  47959. $globals.BlockNode.comment="I represent an block closure node.";
  47960. //>>excludeEnd("ide");
  47961. $core.addMethod(
  47962. $core.method({
  47963. selector: "acceptDagVisitor:",
  47964. protocol: "visiting",
  47965. //>>excludeStart("ide", pragmas.excludeIdeData);
  47966. args: ["aVisitor"],
  47967. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitBlockNode: self",
  47968. referencedClasses: [],
  47969. //>>excludeEnd("ide");
  47970. pragmas: [],
  47971. messageSends: ["visitBlockNode:"]
  47972. }, function ($methodClass){ return function (aVisitor){
  47973. var self=this,$self=this;
  47974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47975. return $core.withContext(function($ctx1) {
  47976. //>>excludeEnd("ctx");
  47977. return $recv(aVisitor)._visitBlockNode_(self);
  47978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47979. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  47980. //>>excludeEnd("ctx");
  47981. }; }),
  47982. $globals.BlockNode);
  47983. $core.addMethod(
  47984. $core.method({
  47985. selector: "dagChild",
  47986. protocol: "accessing",
  47987. //>>excludeStart("ide", pragmas.excludeIdeData);
  47988. args: [],
  47989. source: "dagChild\x0a\x09^ self sequenceNode",
  47990. referencedClasses: [],
  47991. //>>excludeEnd("ide");
  47992. pragmas: [],
  47993. messageSends: ["sequenceNode"]
  47994. }, function ($methodClass){ return function (){
  47995. var self=this,$self=this;
  47996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47997. return $core.withContext(function($ctx1) {
  47998. //>>excludeEnd("ctx");
  47999. return $self._sequenceNode();
  48000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48001. }, function($ctx1) {$ctx1.fill(self,"dagChild",{})});
  48002. //>>excludeEnd("ctx");
  48003. }; }),
  48004. $globals.BlockNode);
  48005. $core.addMethod(
  48006. $core.method({
  48007. selector: "parameters",
  48008. protocol: "accessing",
  48009. //>>excludeStart("ide", pragmas.excludeIdeData);
  48010. args: [],
  48011. source: "parameters\x0a\x09^ parameters ifNil: [ parameters := Array new ]",
  48012. referencedClasses: ["Array"],
  48013. //>>excludeEnd("ide");
  48014. pragmas: [],
  48015. messageSends: ["ifNil:", "new"]
  48016. }, function ($methodClass){ return function (){
  48017. var self=this,$self=this;
  48018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48019. return $core.withContext(function($ctx1) {
  48020. //>>excludeEnd("ctx");
  48021. var $1;
  48022. $1=$self.parameters;
  48023. if($1 == null || $1.a$nil){
  48024. $self.parameters=$recv($globals.Array)._new();
  48025. return $self.parameters;
  48026. } else {
  48027. return $1;
  48028. }
  48029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48030. }, function($ctx1) {$ctx1.fill(self,"parameters",{})});
  48031. //>>excludeEnd("ctx");
  48032. }; }),
  48033. $globals.BlockNode);
  48034. $core.addMethod(
  48035. $core.method({
  48036. selector: "parameters:",
  48037. protocol: "accessing",
  48038. //>>excludeStart("ide", pragmas.excludeIdeData);
  48039. args: ["aCollection"],
  48040. source: "parameters: aCollection\x0a\x09parameters := aCollection",
  48041. referencedClasses: [],
  48042. //>>excludeEnd("ide");
  48043. pragmas: [],
  48044. messageSends: []
  48045. }, function ($methodClass){ return function (aCollection){
  48046. var self=this,$self=this;
  48047. $self.parameters=aCollection;
  48048. return self;
  48049. }; }),
  48050. $globals.BlockNode);
  48051. $core.addMethod(
  48052. $core.method({
  48053. selector: "scope",
  48054. protocol: "accessing",
  48055. //>>excludeStart("ide", pragmas.excludeIdeData);
  48056. args: [],
  48057. source: "scope\x0a\x09^ scope",
  48058. referencedClasses: [],
  48059. //>>excludeEnd("ide");
  48060. pragmas: [],
  48061. messageSends: []
  48062. }, function ($methodClass){ return function (){
  48063. var self=this,$self=this;
  48064. return $self.scope;
  48065. }; }),
  48066. $globals.BlockNode);
  48067. $core.addMethod(
  48068. $core.method({
  48069. selector: "scope:",
  48070. protocol: "accessing",
  48071. //>>excludeStart("ide", pragmas.excludeIdeData);
  48072. args: ["aLexicalScope"],
  48073. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  48074. referencedClasses: [],
  48075. //>>excludeEnd("ide");
  48076. pragmas: [],
  48077. messageSends: []
  48078. }, function ($methodClass){ return function (aLexicalScope){
  48079. var self=this,$self=this;
  48080. $self.scope=aLexicalScope;
  48081. return self;
  48082. }; }),
  48083. $globals.BlockNode);
  48084. $core.addMethod(
  48085. $core.method({
  48086. selector: "sequenceNode",
  48087. protocol: "accessing",
  48088. //>>excludeStart("ide", pragmas.excludeIdeData);
  48089. args: [],
  48090. source: "sequenceNode\x0a\x09^ sequenceNode",
  48091. referencedClasses: [],
  48092. //>>excludeEnd("ide");
  48093. pragmas: [],
  48094. messageSends: []
  48095. }, function ($methodClass){ return function (){
  48096. var self=this,$self=this;
  48097. return $self.sequenceNode;
  48098. }; }),
  48099. $globals.BlockNode);
  48100. $core.addMethod(
  48101. $core.method({
  48102. selector: "sequenceNode:",
  48103. protocol: "accessing",
  48104. //>>excludeStart("ide", pragmas.excludeIdeData);
  48105. args: ["anObject"],
  48106. source: "sequenceNode: anObject\x0a\x09sequenceNode := anObject",
  48107. referencedClasses: [],
  48108. //>>excludeEnd("ide");
  48109. pragmas: [],
  48110. messageSends: []
  48111. }, function ($methodClass){ return function (anObject){
  48112. var self=this,$self=this;
  48113. $self.sequenceNode=anObject;
  48114. return self;
  48115. }; }),
  48116. $globals.BlockNode);
  48117. $core.addClass("CascadeNode", $globals.ExpressionNode, "Compiler-AST");
  48118. $core.setSlots($globals.CascadeNode, ["receiver"]);
  48119. //>>excludeStart("ide", pragmas.excludeIdeData);
  48120. $globals.CascadeNode.comment="I represent an cascade node.";
  48121. //>>excludeEnd("ide");
  48122. $core.addMethod(
  48123. $core.method({
  48124. selector: "acceptDagVisitor:",
  48125. protocol: "visiting",
  48126. //>>excludeStart("ide", pragmas.excludeIdeData);
  48127. args: ["aVisitor"],
  48128. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitCascadeNode: self",
  48129. referencedClasses: [],
  48130. //>>excludeEnd("ide");
  48131. pragmas: [],
  48132. messageSends: ["visitCascadeNode:"]
  48133. }, function ($methodClass){ return function (aVisitor){
  48134. var self=this,$self=this;
  48135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48136. return $core.withContext(function($ctx1) {
  48137. //>>excludeEnd("ctx");
  48138. return $recv(aVisitor)._visitCascadeNode_(self);
  48139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48140. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  48141. //>>excludeEnd("ctx");
  48142. }; }),
  48143. $globals.CascadeNode);
  48144. $core.addMethod(
  48145. $core.method({
  48146. selector: "receiver",
  48147. protocol: "accessing",
  48148. //>>excludeStart("ide", pragmas.excludeIdeData);
  48149. args: [],
  48150. source: "receiver\x0a\x09^ receiver",
  48151. referencedClasses: [],
  48152. //>>excludeEnd("ide");
  48153. pragmas: [],
  48154. messageSends: []
  48155. }, function ($methodClass){ return function (){
  48156. var self=this,$self=this;
  48157. return $self.receiver;
  48158. }; }),
  48159. $globals.CascadeNode);
  48160. $core.addMethod(
  48161. $core.method({
  48162. selector: "receiver:",
  48163. protocol: "accessing",
  48164. //>>excludeStart("ide", pragmas.excludeIdeData);
  48165. args: ["aNode"],
  48166. source: "receiver: aNode\x0a\x09receiver := aNode",
  48167. referencedClasses: [],
  48168. //>>excludeEnd("ide");
  48169. pragmas: [],
  48170. messageSends: []
  48171. }, function ($methodClass){ return function (aNode){
  48172. var self=this,$self=this;
  48173. $self.receiver=aNode;
  48174. return self;
  48175. }; }),
  48176. $globals.CascadeNode);
  48177. $core.addClass("DynamicArrayNode", $globals.ExpressionNode, "Compiler-AST");
  48178. //>>excludeStart("ide", pragmas.excludeIdeData);
  48179. $globals.DynamicArrayNode.comment="I represent an dynamic array node.";
  48180. //>>excludeEnd("ide");
  48181. $core.addMethod(
  48182. $core.method({
  48183. selector: "acceptDagVisitor:",
  48184. protocol: "visiting",
  48185. //>>excludeStart("ide", pragmas.excludeIdeData);
  48186. args: ["aVisitor"],
  48187. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDynamicArrayNode: self",
  48188. referencedClasses: [],
  48189. //>>excludeEnd("ide");
  48190. pragmas: [],
  48191. messageSends: ["visitDynamicArrayNode:"]
  48192. }, function ($methodClass){ return function (aVisitor){
  48193. var self=this,$self=this;
  48194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48195. return $core.withContext(function($ctx1) {
  48196. //>>excludeEnd("ctx");
  48197. return $recv(aVisitor)._visitDynamicArrayNode_(self);
  48198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48199. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  48200. //>>excludeEnd("ctx");
  48201. }; }),
  48202. $globals.DynamicArrayNode);
  48203. $core.addClass("DynamicDictionaryNode", $globals.ExpressionNode, "Compiler-AST");
  48204. //>>excludeStart("ide", pragmas.excludeIdeData);
  48205. $globals.DynamicDictionaryNode.comment="I represent an dynamic dictionary node.";
  48206. //>>excludeEnd("ide");
  48207. $core.addMethod(
  48208. $core.method({
  48209. selector: "acceptDagVisitor:",
  48210. protocol: "visiting",
  48211. //>>excludeStart("ide", pragmas.excludeIdeData);
  48212. args: ["aVisitor"],
  48213. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDynamicDictionaryNode: self",
  48214. referencedClasses: [],
  48215. //>>excludeEnd("ide");
  48216. pragmas: [],
  48217. messageSends: ["visitDynamicDictionaryNode:"]
  48218. }, function ($methodClass){ return function (aVisitor){
  48219. var self=this,$self=this;
  48220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48221. return $core.withContext(function($ctx1) {
  48222. //>>excludeEnd("ctx");
  48223. return $recv(aVisitor)._visitDynamicDictionaryNode_(self);
  48224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48225. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  48226. //>>excludeEnd("ctx");
  48227. }; }),
  48228. $globals.DynamicDictionaryNode);
  48229. $core.addClass("SendNode", $globals.ExpressionNode, "Compiler-AST");
  48230. $core.setSlots($globals.SendNode, ["selector", "arguments", "receiver", "index", "javaScriptSelector", "argumentSwitcher", "isSideEffect"]);
  48231. //>>excludeStart("ide", pragmas.excludeIdeData);
  48232. $globals.SendNode.comment="I represent an message send node.";
  48233. //>>excludeEnd("ide");
  48234. $core.addMethod(
  48235. $core.method({
  48236. selector: "acceptDagVisitor:",
  48237. protocol: "visiting",
  48238. //>>excludeStart("ide", pragmas.excludeIdeData);
  48239. args: ["aVisitor"],
  48240. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitSendNode: self",
  48241. referencedClasses: [],
  48242. //>>excludeEnd("ide");
  48243. pragmas: [],
  48244. messageSends: ["visitSendNode:"]
  48245. }, function ($methodClass){ return function (aVisitor){
  48246. var self=this,$self=this;
  48247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48248. return $core.withContext(function($ctx1) {
  48249. //>>excludeEnd("ctx");
  48250. return $recv(aVisitor)._visitSendNode_(self);
  48251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48252. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  48253. //>>excludeEnd("ctx");
  48254. }; }),
  48255. $globals.SendNode);
  48256. $core.addMethod(
  48257. $core.method({
  48258. selector: "argumentSwitcher",
  48259. protocol: "accessing",
  48260. //>>excludeStart("ide", pragmas.excludeIdeData);
  48261. args: [],
  48262. source: "argumentSwitcher\x0a\x09^ argumentSwitcher",
  48263. referencedClasses: [],
  48264. //>>excludeEnd("ide");
  48265. pragmas: [],
  48266. messageSends: []
  48267. }, function ($methodClass){ return function (){
  48268. var self=this,$self=this;
  48269. return $self.argumentSwitcher;
  48270. }; }),
  48271. $globals.SendNode);
  48272. $core.addMethod(
  48273. $core.method({
  48274. selector: "argumentSwitcher:",
  48275. protocol: "accessing",
  48276. //>>excludeStart("ide", pragmas.excludeIdeData);
  48277. args: ["aJSFunction"],
  48278. source: "argumentSwitcher: aJSFunction\x0a\x09argumentSwitcher := aJSFunction",
  48279. referencedClasses: [],
  48280. //>>excludeEnd("ide");
  48281. pragmas: [],
  48282. messageSends: []
  48283. }, function ($methodClass){ return function (aJSFunction){
  48284. var self=this,$self=this;
  48285. $self.argumentSwitcher=aJSFunction;
  48286. return self;
  48287. }; }),
  48288. $globals.SendNode);
  48289. $core.addMethod(
  48290. $core.method({
  48291. selector: "arguments",
  48292. protocol: "accessing",
  48293. //>>excludeStart("ide", pragmas.excludeIdeData);
  48294. args: [],
  48295. source: "arguments\x0a\x09^ arguments ifNil: [ arguments := #() ]",
  48296. referencedClasses: [],
  48297. //>>excludeEnd("ide");
  48298. pragmas: [],
  48299. messageSends: ["ifNil:"]
  48300. }, function ($methodClass){ return function (){
  48301. var self=this,$self=this;
  48302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48303. return $core.withContext(function($ctx1) {
  48304. //>>excludeEnd("ctx");
  48305. var $1;
  48306. $1=$self.arguments;
  48307. if($1 == null || $1.a$nil){
  48308. $self.arguments=[];
  48309. return $self.arguments;
  48310. } else {
  48311. return $1;
  48312. }
  48313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48314. }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
  48315. //>>excludeEnd("ctx");
  48316. }; }),
  48317. $globals.SendNode);
  48318. $core.addMethod(
  48319. $core.method({
  48320. selector: "arguments:",
  48321. protocol: "accessing",
  48322. //>>excludeStart("ide", pragmas.excludeIdeData);
  48323. args: ["aCollection"],
  48324. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  48325. referencedClasses: [],
  48326. //>>excludeEnd("ide");
  48327. pragmas: [],
  48328. messageSends: []
  48329. }, function ($methodClass){ return function (aCollection){
  48330. var self=this,$self=this;
  48331. $self.arguments=aCollection;
  48332. return self;
  48333. }; }),
  48334. $globals.SendNode);
  48335. $core.addMethod(
  48336. $core.method({
  48337. selector: "beSideEffect",
  48338. protocol: "accessing",
  48339. //>>excludeStart("ide", pragmas.excludeIdeData);
  48340. args: [],
  48341. source: "beSideEffect\x0a\x09isSideEffect := true",
  48342. referencedClasses: [],
  48343. //>>excludeEnd("ide");
  48344. pragmas: [],
  48345. messageSends: []
  48346. }, function ($methodClass){ return function (){
  48347. var self=this,$self=this;
  48348. $self.isSideEffect=true;
  48349. return self;
  48350. }; }),
  48351. $globals.SendNode);
  48352. $core.addMethod(
  48353. $core.method({
  48354. selector: "dagChildren",
  48355. protocol: "accessing",
  48356. //>>excludeStart("ide", pragmas.excludeIdeData);
  48357. args: [],
  48358. source: "dagChildren\x0a\x09self receiver ifNil: [ ^ self arguments copy ].\x0a\x09\x0a\x09^ self arguments copyWithFirst: self receiver",
  48359. referencedClasses: [],
  48360. //>>excludeEnd("ide");
  48361. pragmas: [],
  48362. messageSends: ["ifNil:", "receiver", "copy", "arguments", "copyWithFirst:"]
  48363. }, function ($methodClass){ return function (){
  48364. var self=this,$self=this;
  48365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48366. return $core.withContext(function($ctx1) {
  48367. //>>excludeEnd("ctx");
  48368. var $1;
  48369. $1=[$self._receiver()
  48370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48371. ,$ctx1.sendIdx["receiver"]=1
  48372. //>>excludeEnd("ctx");
  48373. ][0];
  48374. if($1 == null || $1.a$nil){
  48375. return $recv([$self._arguments()
  48376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48377. ,$ctx1.sendIdx["arguments"]=1
  48378. //>>excludeEnd("ctx");
  48379. ][0])._copy();
  48380. } else {
  48381. $1;
  48382. }
  48383. return $recv($self._arguments())._copyWithFirst_($self._receiver());
  48384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48385. }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
  48386. //>>excludeEnd("ctx");
  48387. }; }),
  48388. $globals.SendNode);
  48389. $core.addMethod(
  48390. $core.method({
  48391. selector: "index",
  48392. protocol: "accessing",
  48393. //>>excludeStart("ide", pragmas.excludeIdeData);
  48394. args: [],
  48395. source: "index\x0a\x09^ index",
  48396. referencedClasses: [],
  48397. //>>excludeEnd("ide");
  48398. pragmas: [],
  48399. messageSends: []
  48400. }, function ($methodClass){ return function (){
  48401. var self=this,$self=this;
  48402. return $self.index;
  48403. }; }),
  48404. $globals.SendNode);
  48405. $core.addMethod(
  48406. $core.method({
  48407. selector: "index:",
  48408. protocol: "accessing",
  48409. //>>excludeStart("ide", pragmas.excludeIdeData);
  48410. args: ["anInteger"],
  48411. source: "index: anInteger\x0a\x09index := anInteger",
  48412. referencedClasses: [],
  48413. //>>excludeEnd("ide");
  48414. pragmas: [],
  48415. messageSends: []
  48416. }, function ($methodClass){ return function (anInteger){
  48417. var self=this,$self=this;
  48418. $self.index=anInteger;
  48419. return self;
  48420. }; }),
  48421. $globals.SendNode);
  48422. $core.addMethod(
  48423. $core.method({
  48424. selector: "isNavigationNode",
  48425. protocol: "testing",
  48426. //>>excludeStart("ide", pragmas.excludeIdeData);
  48427. args: [],
  48428. source: "isNavigationNode\x0a\x09^ true",
  48429. referencedClasses: [],
  48430. //>>excludeEnd("ide");
  48431. pragmas: [],
  48432. messageSends: []
  48433. }, function ($methodClass){ return function (){
  48434. var self=this,$self=this;
  48435. return true;
  48436. }; }),
  48437. $globals.SendNode);
  48438. $core.addMethod(
  48439. $core.method({
  48440. selector: "isSideEffect",
  48441. protocol: "accessing",
  48442. //>>excludeStart("ide", pragmas.excludeIdeData);
  48443. args: [],
  48444. source: "isSideEffect\x0a\x09^ isSideEffect ifNil: [ false ]",
  48445. referencedClasses: [],
  48446. //>>excludeEnd("ide");
  48447. pragmas: [],
  48448. messageSends: ["ifNil:"]
  48449. }, function ($methodClass){ return function (){
  48450. var self=this,$self=this;
  48451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48452. return $core.withContext(function($ctx1) {
  48453. //>>excludeEnd("ctx");
  48454. var $1;
  48455. $1=$self.isSideEffect;
  48456. if($1 == null || $1.a$nil){
  48457. return false;
  48458. } else {
  48459. return $1;
  48460. }
  48461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48462. }, function($ctx1) {$ctx1.fill(self,"isSideEffect",{})});
  48463. //>>excludeEnd("ctx");
  48464. }; }),
  48465. $globals.SendNode);
  48466. $core.addMethod(
  48467. $core.method({
  48468. selector: "javaScriptSelector",
  48469. protocol: "accessing",
  48470. //>>excludeStart("ide", pragmas.excludeIdeData);
  48471. args: [],
  48472. source: "javaScriptSelector\x0a\x09^ javaScriptSelector",
  48473. referencedClasses: [],
  48474. //>>excludeEnd("ide");
  48475. pragmas: [],
  48476. messageSends: []
  48477. }, function ($methodClass){ return function (){
  48478. var self=this,$self=this;
  48479. return $self.javaScriptSelector;
  48480. }; }),
  48481. $globals.SendNode);
  48482. $core.addMethod(
  48483. $core.method({
  48484. selector: "javaScriptSelector:",
  48485. protocol: "accessing",
  48486. //>>excludeStart("ide", pragmas.excludeIdeData);
  48487. args: ["aString"],
  48488. source: "javaScriptSelector: aString\x0a\x09javaScriptSelector := aString",
  48489. referencedClasses: [],
  48490. //>>excludeEnd("ide");
  48491. pragmas: [],
  48492. messageSends: []
  48493. }, function ($methodClass){ return function (aString){
  48494. var self=this,$self=this;
  48495. $self.javaScriptSelector=aString;
  48496. return self;
  48497. }; }),
  48498. $globals.SendNode);
  48499. $core.addMethod(
  48500. $core.method({
  48501. selector: "navigationLink",
  48502. protocol: "accessing",
  48503. //>>excludeStart("ide", pragmas.excludeIdeData);
  48504. args: [],
  48505. source: "navigationLink\x0a\x09^ self selector",
  48506. referencedClasses: [],
  48507. //>>excludeEnd("ide");
  48508. pragmas: [],
  48509. messageSends: ["selector"]
  48510. }, function ($methodClass){ return function (){
  48511. var self=this,$self=this;
  48512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48513. return $core.withContext(function($ctx1) {
  48514. //>>excludeEnd("ctx");
  48515. return $self._selector();
  48516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48517. }, function($ctx1) {$ctx1.fill(self,"navigationLink",{})});
  48518. //>>excludeEnd("ctx");
  48519. }; }),
  48520. $globals.SendNode);
  48521. $core.addMethod(
  48522. $core.method({
  48523. selector: "receiver",
  48524. protocol: "accessing",
  48525. //>>excludeStart("ide", pragmas.excludeIdeData);
  48526. args: [],
  48527. source: "receiver\x0a\x09^ receiver",
  48528. referencedClasses: [],
  48529. //>>excludeEnd("ide");
  48530. pragmas: [],
  48531. messageSends: []
  48532. }, function ($methodClass){ return function (){
  48533. var self=this,$self=this;
  48534. return $self.receiver;
  48535. }; }),
  48536. $globals.SendNode);
  48537. $core.addMethod(
  48538. $core.method({
  48539. selector: "receiver:",
  48540. protocol: "accessing",
  48541. //>>excludeStart("ide", pragmas.excludeIdeData);
  48542. args: ["aNode"],
  48543. source: "receiver: aNode\x0a\x09receiver := aNode",
  48544. referencedClasses: [],
  48545. //>>excludeEnd("ide");
  48546. pragmas: [],
  48547. messageSends: []
  48548. }, function ($methodClass){ return function (aNode){
  48549. var self=this,$self=this;
  48550. $self.receiver=aNode;
  48551. return self;
  48552. }; }),
  48553. $globals.SendNode);
  48554. $core.addMethod(
  48555. $core.method({
  48556. selector: "selector",
  48557. protocol: "accessing",
  48558. //>>excludeStart("ide", pragmas.excludeIdeData);
  48559. args: [],
  48560. source: "selector\x0a\x09^ selector",
  48561. referencedClasses: [],
  48562. //>>excludeEnd("ide");
  48563. pragmas: [],
  48564. messageSends: []
  48565. }, function ($methodClass){ return function (){
  48566. var self=this,$self=this;
  48567. return $self.selector;
  48568. }; }),
  48569. $globals.SendNode);
  48570. $core.addMethod(
  48571. $core.method({
  48572. selector: "selector:",
  48573. protocol: "accessing",
  48574. //>>excludeStart("ide", pragmas.excludeIdeData);
  48575. args: ["aString"],
  48576. source: "selector: aString\x0a\x09selector := aString",
  48577. referencedClasses: [],
  48578. //>>excludeEnd("ide");
  48579. pragmas: [],
  48580. messageSends: []
  48581. }, function ($methodClass){ return function (aString){
  48582. var self=this,$self=this;
  48583. $self.selector=aString;
  48584. return self;
  48585. }; }),
  48586. $globals.SendNode);
  48587. $core.addMethod(
  48588. $core.method({
  48589. selector: "superSend",
  48590. protocol: "accessing",
  48591. //>>excludeStart("ide", pragmas.excludeIdeData);
  48592. args: [],
  48593. source: "superSend\x0a\x09^ self receiver ifNil: [ false ] ifNotNil: [ :recv | recv isSuper ]",
  48594. referencedClasses: [],
  48595. //>>excludeEnd("ide");
  48596. pragmas: [],
  48597. messageSends: ["ifNil:ifNotNil:", "receiver", "isSuper"]
  48598. }, function ($methodClass){ return function (){
  48599. var self=this,$self=this;
  48600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48601. return $core.withContext(function($ctx1) {
  48602. //>>excludeEnd("ctx");
  48603. var $1;
  48604. $1=$self._receiver();
  48605. if($1 == null || $1.a$nil){
  48606. return false;
  48607. } else {
  48608. var recv;
  48609. recv=$1;
  48610. return $recv(recv)._isSuper();
  48611. }
  48612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48613. }, function($ctx1) {$ctx1.fill(self,"superSend",{})});
  48614. //>>excludeEnd("ctx");
  48615. }; }),
  48616. $globals.SendNode);
  48617. $core.addClass("ValueNode", $globals.ExpressionNode, "Compiler-AST");
  48618. $core.setSlots($globals.ValueNode, ["value"]);
  48619. //>>excludeStart("ide", pragmas.excludeIdeData);
  48620. $globals.ValueNode.comment="I represent a value node.";
  48621. //>>excludeEnd("ide");
  48622. $core.addMethod(
  48623. $core.method({
  48624. selector: "acceptDagVisitor:",
  48625. protocol: "visiting",
  48626. //>>excludeStart("ide", pragmas.excludeIdeData);
  48627. args: ["aVisitor"],
  48628. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitValueNode: self",
  48629. referencedClasses: [],
  48630. //>>excludeEnd("ide");
  48631. pragmas: [],
  48632. messageSends: ["visitValueNode:"]
  48633. }, function ($methodClass){ return function (aVisitor){
  48634. var self=this,$self=this;
  48635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48636. return $core.withContext(function($ctx1) {
  48637. //>>excludeEnd("ctx");
  48638. return $recv(aVisitor)._visitValueNode_(self);
  48639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48640. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  48641. //>>excludeEnd("ctx");
  48642. }; }),
  48643. $globals.ValueNode);
  48644. $core.addMethod(
  48645. $core.method({
  48646. selector: "isIdempotent",
  48647. protocol: "testing",
  48648. //>>excludeStart("ide", pragmas.excludeIdeData);
  48649. args: [],
  48650. source: "isIdempotent\x0a\x09^ self value isImmutable",
  48651. referencedClasses: [],
  48652. //>>excludeEnd("ide");
  48653. pragmas: [],
  48654. messageSends: ["isImmutable", "value"]
  48655. }, function ($methodClass){ return function (){
  48656. var self=this,$self=this;
  48657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48658. return $core.withContext(function($ctx1) {
  48659. //>>excludeEnd("ctx");
  48660. return $recv($self._value())._isImmutable();
  48661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48662. }, function($ctx1) {$ctx1.fill(self,"isIdempotent",{})});
  48663. //>>excludeEnd("ctx");
  48664. }; }),
  48665. $globals.ValueNode);
  48666. $core.addMethod(
  48667. $core.method({
  48668. selector: "value",
  48669. protocol: "accessing",
  48670. //>>excludeStart("ide", pragmas.excludeIdeData);
  48671. args: [],
  48672. source: "value\x0a\x09^ value",
  48673. referencedClasses: [],
  48674. //>>excludeEnd("ide");
  48675. pragmas: [],
  48676. messageSends: []
  48677. }, function ($methodClass){ return function (){
  48678. var self=this,$self=this;
  48679. return $self.value;
  48680. }; }),
  48681. $globals.ValueNode);
  48682. $core.addMethod(
  48683. $core.method({
  48684. selector: "value:",
  48685. protocol: "accessing",
  48686. //>>excludeStart("ide", pragmas.excludeIdeData);
  48687. args: ["anObject"],
  48688. source: "value: anObject\x0a\x09value := anObject",
  48689. referencedClasses: [],
  48690. //>>excludeEnd("ide");
  48691. pragmas: [],
  48692. messageSends: []
  48693. }, function ($methodClass){ return function (anObject){
  48694. var self=this,$self=this;
  48695. $self.value=anObject;
  48696. return self;
  48697. }; }),
  48698. $globals.ValueNode);
  48699. $core.addClass("VariableNode", $globals.ExpressionNode, "Compiler-AST");
  48700. $core.setSlots($globals.VariableNode, ["identifier", "assigned", "binding"]);
  48701. //>>excludeStart("ide", pragmas.excludeIdeData);
  48702. $globals.VariableNode.comment="I represent an variable node.";
  48703. //>>excludeEnd("ide");
  48704. $core.addMethod(
  48705. $core.method({
  48706. selector: "acceptDagVisitor:",
  48707. protocol: "visiting",
  48708. //>>excludeStart("ide", pragmas.excludeIdeData);
  48709. args: ["aVisitor"],
  48710. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitVariableNode: self",
  48711. referencedClasses: [],
  48712. //>>excludeEnd("ide");
  48713. pragmas: [],
  48714. messageSends: ["visitVariableNode:"]
  48715. }, function ($methodClass){ return function (aVisitor){
  48716. var self=this,$self=this;
  48717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48718. return $core.withContext(function($ctx1) {
  48719. //>>excludeEnd("ctx");
  48720. return $recv(aVisitor)._visitVariableNode_(self);
  48721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48722. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  48723. //>>excludeEnd("ctx");
  48724. }; }),
  48725. $globals.VariableNode);
  48726. $core.addMethod(
  48727. $core.method({
  48728. selector: "alias",
  48729. protocol: "accessing",
  48730. //>>excludeStart("ide", pragmas.excludeIdeData);
  48731. args: [],
  48732. source: "alias\x0a\x09^ self binding alias",
  48733. referencedClasses: [],
  48734. //>>excludeEnd("ide");
  48735. pragmas: [],
  48736. messageSends: ["alias", "binding"]
  48737. }, function ($methodClass){ return function (){
  48738. var self=this,$self=this;
  48739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48740. return $core.withContext(function($ctx1) {
  48741. //>>excludeEnd("ctx");
  48742. return $recv($self._binding())._alias();
  48743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48744. }, function($ctx1) {$ctx1.fill(self,"alias",{})});
  48745. //>>excludeEnd("ctx");
  48746. }; }),
  48747. $globals.VariableNode);
  48748. $core.addMethod(
  48749. $core.method({
  48750. selector: "assigned",
  48751. protocol: "accessing",
  48752. //>>excludeStart("ide", pragmas.excludeIdeData);
  48753. args: [],
  48754. source: "assigned\x0a\x09^ assigned ifNil: [ false ]",
  48755. referencedClasses: [],
  48756. //>>excludeEnd("ide");
  48757. pragmas: [],
  48758. messageSends: ["ifNil:"]
  48759. }, function ($methodClass){ return function (){
  48760. var self=this,$self=this;
  48761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48762. return $core.withContext(function($ctx1) {
  48763. //>>excludeEnd("ctx");
  48764. var $1;
  48765. $1=$self.assigned;
  48766. if($1 == null || $1.a$nil){
  48767. return false;
  48768. } else {
  48769. return $1;
  48770. }
  48771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48772. }, function($ctx1) {$ctx1.fill(self,"assigned",{})});
  48773. //>>excludeEnd("ctx");
  48774. }; }),
  48775. $globals.VariableNode);
  48776. $core.addMethod(
  48777. $core.method({
  48778. selector: "assigned:",
  48779. protocol: "accessing",
  48780. //>>excludeStart("ide", pragmas.excludeIdeData);
  48781. args: ["aBoolean"],
  48782. source: "assigned: aBoolean\x0a\x09assigned := aBoolean",
  48783. referencedClasses: [],
  48784. //>>excludeEnd("ide");
  48785. pragmas: [],
  48786. messageSends: []
  48787. }, function ($methodClass){ return function (aBoolean){
  48788. var self=this,$self=this;
  48789. $self.assigned=aBoolean;
  48790. return self;
  48791. }; }),
  48792. $globals.VariableNode);
  48793. $core.addMethod(
  48794. $core.method({
  48795. selector: "binding",
  48796. protocol: "accessing",
  48797. //>>excludeStart("ide", pragmas.excludeIdeData);
  48798. args: [],
  48799. source: "binding\x0a\x09^ binding",
  48800. referencedClasses: [],
  48801. //>>excludeEnd("ide");
  48802. pragmas: [],
  48803. messageSends: []
  48804. }, function ($methodClass){ return function (){
  48805. var self=this,$self=this;
  48806. return $self.binding;
  48807. }; }),
  48808. $globals.VariableNode);
  48809. $core.addMethod(
  48810. $core.method({
  48811. selector: "binding:",
  48812. protocol: "accessing",
  48813. //>>excludeStart("ide", pragmas.excludeIdeData);
  48814. args: ["aScopeVar"],
  48815. source: "binding: aScopeVar\x0a\x09binding := aScopeVar",
  48816. referencedClasses: [],
  48817. //>>excludeEnd("ide");
  48818. pragmas: [],
  48819. messageSends: []
  48820. }, function ($methodClass){ return function (aScopeVar){
  48821. var self=this,$self=this;
  48822. $self.binding=aScopeVar;
  48823. return self;
  48824. }; }),
  48825. $globals.VariableNode);
  48826. $core.addMethod(
  48827. $core.method({
  48828. selector: "identifier",
  48829. protocol: "accessing",
  48830. //>>excludeStart("ide", pragmas.excludeIdeData);
  48831. args: [],
  48832. source: "identifier\x0a\x09^ identifier",
  48833. referencedClasses: [],
  48834. //>>excludeEnd("ide");
  48835. pragmas: [],
  48836. messageSends: []
  48837. }, function ($methodClass){ return function (){
  48838. var self=this,$self=this;
  48839. return $self.identifier;
  48840. }; }),
  48841. $globals.VariableNode);
  48842. $core.addMethod(
  48843. $core.method({
  48844. selector: "identifier:",
  48845. protocol: "accessing",
  48846. //>>excludeStart("ide", pragmas.excludeIdeData);
  48847. args: ["anObject"],
  48848. source: "identifier: anObject\x0a\x09identifier := anObject",
  48849. referencedClasses: [],
  48850. //>>excludeEnd("ide");
  48851. pragmas: [],
  48852. messageSends: []
  48853. }, function ($methodClass){ return function (anObject){
  48854. var self=this,$self=this;
  48855. $self.identifier=anObject;
  48856. return self;
  48857. }; }),
  48858. $globals.VariableNode);
  48859. $core.addMethod(
  48860. $core.method({
  48861. selector: "isAssignable",
  48862. protocol: "testing",
  48863. //>>excludeStart("ide", pragmas.excludeIdeData);
  48864. args: [],
  48865. source: "isAssignable\x0a\x09^ self binding isAssignable",
  48866. referencedClasses: [],
  48867. //>>excludeEnd("ide");
  48868. pragmas: [],
  48869. messageSends: ["isAssignable", "binding"]
  48870. }, function ($methodClass){ return function (){
  48871. var self=this,$self=this;
  48872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48873. return $core.withContext(function($ctx1) {
  48874. //>>excludeEnd("ctx");
  48875. return $recv($self._binding())._isAssignable();
  48876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48877. }, function($ctx1) {$ctx1.fill(self,"isAssignable",{})});
  48878. //>>excludeEnd("ctx");
  48879. }; }),
  48880. $globals.VariableNode);
  48881. $core.addMethod(
  48882. $core.method({
  48883. selector: "isIdempotent",
  48884. protocol: "testing",
  48885. //>>excludeStart("ide", pragmas.excludeIdeData);
  48886. args: [],
  48887. source: "isIdempotent\x0a\x09^ self binding isIdempotent",
  48888. referencedClasses: [],
  48889. //>>excludeEnd("ide");
  48890. pragmas: [],
  48891. messageSends: ["isIdempotent", "binding"]
  48892. }, function ($methodClass){ return function (){
  48893. var self=this,$self=this;
  48894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48895. return $core.withContext(function($ctx1) {
  48896. //>>excludeEnd("ctx");
  48897. return $recv($self._binding())._isIdempotent();
  48898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48899. }, function($ctx1) {$ctx1.fill(self,"isIdempotent",{})});
  48900. //>>excludeEnd("ctx");
  48901. }; }),
  48902. $globals.VariableNode);
  48903. $core.addMethod(
  48904. $core.method({
  48905. selector: "isImmutable",
  48906. protocol: "testing",
  48907. //>>excludeStart("ide", pragmas.excludeIdeData);
  48908. args: [],
  48909. source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.\x0a\x09^ self isIdempotent \x22to be consistent with super\x22",
  48910. referencedClasses: [],
  48911. //>>excludeEnd("ide");
  48912. pragmas: [],
  48913. messageSends: ["deprecatedAPI:", "isIdempotent"]
  48914. }, function ($methodClass){ return function (){
  48915. var self=this,$self=this;
  48916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48917. return $core.withContext(function($ctx1) {
  48918. //>>excludeEnd("ctx");
  48919. $self._deprecatedAPI_("Use #isIdempotent / #isAssignable not instead.");
  48920. return $self._isIdempotent();
  48921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48922. }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
  48923. //>>excludeEnd("ctx");
  48924. }; }),
  48925. $globals.VariableNode);
  48926. $core.addMethod(
  48927. $core.method({
  48928. selector: "isNavigationNode",
  48929. protocol: "testing",
  48930. //>>excludeStart("ide", pragmas.excludeIdeData);
  48931. args: [],
  48932. source: "isNavigationNode\x0a\x09^ true",
  48933. referencedClasses: [],
  48934. //>>excludeEnd("ide");
  48935. pragmas: [],
  48936. messageSends: []
  48937. }, function ($methodClass){ return function (){
  48938. var self=this,$self=this;
  48939. return true;
  48940. }; }),
  48941. $globals.VariableNode);
  48942. $core.addMethod(
  48943. $core.method({
  48944. selector: "isSuper",
  48945. protocol: "testing",
  48946. //>>excludeStart("ide", pragmas.excludeIdeData);
  48947. args: [],
  48948. source: "isSuper\x0a\x09^ self binding isSuper",
  48949. referencedClasses: [],
  48950. //>>excludeEnd("ide");
  48951. pragmas: [],
  48952. messageSends: ["isSuper", "binding"]
  48953. }, function ($methodClass){ return function (){
  48954. var self=this,$self=this;
  48955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48956. return $core.withContext(function($ctx1) {
  48957. //>>excludeEnd("ctx");
  48958. return $recv($self._binding())._isSuper();
  48959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48960. }, function($ctx1) {$ctx1.fill(self,"isSuper",{})});
  48961. //>>excludeEnd("ctx");
  48962. }; }),
  48963. $globals.VariableNode);
  48964. $core.addMethod(
  48965. $core.method({
  48966. selector: "navigationLink",
  48967. protocol: "accessing",
  48968. //>>excludeStart("ide", pragmas.excludeIdeData);
  48969. args: [],
  48970. source: "navigationLink\x0a\x09^ self identifier",
  48971. referencedClasses: [],
  48972. //>>excludeEnd("ide");
  48973. pragmas: [],
  48974. messageSends: ["identifier"]
  48975. }, function ($methodClass){ return function (){
  48976. var self=this,$self=this;
  48977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48978. return $core.withContext(function($ctx1) {
  48979. //>>excludeEnd("ctx");
  48980. return $self._identifier();
  48981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48982. }, function($ctx1) {$ctx1.fill(self,"navigationLink",{})});
  48983. //>>excludeEnd("ctx");
  48984. }; }),
  48985. $globals.VariableNode);
  48986. $core.addMethod(
  48987. $core.method({
  48988. selector: "value",
  48989. protocol: "accessing",
  48990. //>>excludeStart("ide", pragmas.excludeIdeData);
  48991. args: [],
  48992. source: "value\x0a\x09self deprecatedAPI: 'Use #identifier instead.'.\x0a\x09^ self identifier",
  48993. referencedClasses: [],
  48994. //>>excludeEnd("ide");
  48995. pragmas: [],
  48996. messageSends: ["deprecatedAPI:", "identifier"]
  48997. }, function ($methodClass){ return function (){
  48998. var self=this,$self=this;
  48999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49000. return $core.withContext(function($ctx1) {
  49001. //>>excludeEnd("ctx");
  49002. $self._deprecatedAPI_("Use #identifier instead.");
  49003. return $self._identifier();
  49004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49005. }, function($ctx1) {$ctx1.fill(self,"value",{})});
  49006. //>>excludeEnd("ctx");
  49007. }; }),
  49008. $globals.VariableNode);
  49009. $core.addMethod(
  49010. $core.method({
  49011. selector: "value:",
  49012. protocol: "accessing",
  49013. //>>excludeStart("ide", pragmas.excludeIdeData);
  49014. args: ["anObject"],
  49015. source: "value: anObject\x0a\x09self deprecatedAPI: 'Use #identifier: instead.'.\x0a\x09self identifier: anObject",
  49016. referencedClasses: [],
  49017. //>>excludeEnd("ide");
  49018. pragmas: [],
  49019. messageSends: ["deprecatedAPI:", "identifier:"]
  49020. }, function ($methodClass){ return function (anObject){
  49021. var self=this,$self=this;
  49022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49023. return $core.withContext(function($ctx1) {
  49024. //>>excludeEnd("ctx");
  49025. $self._deprecatedAPI_("Use #identifier: instead.");
  49026. $self._identifier_(anObject);
  49027. return self;
  49028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49029. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
  49030. //>>excludeEnd("ctx");
  49031. }; }),
  49032. $globals.VariableNode);
  49033. $core.addClass("JSStatementNode", $globals.ASTNode, "Compiler-AST");
  49034. //>>excludeStart("ide", pragmas.excludeIdeData);
  49035. $globals.JSStatementNode.comment="I represent an JavaScript statement node.";
  49036. //>>excludeEnd("ide");
  49037. $core.addMethod(
  49038. $core.method({
  49039. selector: "acceptDagVisitor:",
  49040. protocol: "visiting",
  49041. //>>excludeStart("ide", pragmas.excludeIdeData);
  49042. args: ["aVisitor"],
  49043. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitJSStatementNode: self",
  49044. referencedClasses: [],
  49045. //>>excludeEnd("ide");
  49046. pragmas: [],
  49047. messageSends: ["visitJSStatementNode:"]
  49048. }, function ($methodClass){ return function (aVisitor){
  49049. var self=this,$self=this;
  49050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49051. return $core.withContext(function($ctx1) {
  49052. //>>excludeEnd("ctx");
  49053. return $recv(aVisitor)._visitJSStatementNode_(self);
  49054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49055. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  49056. //>>excludeEnd("ctx");
  49057. }; }),
  49058. $globals.JSStatementNode);
  49059. $core.addClass("MethodNode", $globals.ASTNode, "Compiler-AST");
  49060. $core.setSlots($globals.MethodNode, ["selector", "arguments", "pragmas", "scope", "classReferences", "sendIndexes", "sequenceNode"]);
  49061. //>>excludeStart("ide", pragmas.excludeIdeData);
  49062. $globals.MethodNode.comment="I represent an method node.\x0a\x0aA method node must be the root and only method node of a valid AST.";
  49063. //>>excludeEnd("ide");
  49064. $core.addMethod(
  49065. $core.method({
  49066. selector: "acceptDagVisitor:",
  49067. protocol: "visiting",
  49068. //>>excludeStart("ide", pragmas.excludeIdeData);
  49069. args: ["aVisitor"],
  49070. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitMethodNode: self",
  49071. referencedClasses: [],
  49072. //>>excludeEnd("ide");
  49073. pragmas: [],
  49074. messageSends: ["visitMethodNode:"]
  49075. }, function ($methodClass){ return function (aVisitor){
  49076. var self=this,$self=this;
  49077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49078. return $core.withContext(function($ctx1) {
  49079. //>>excludeEnd("ctx");
  49080. return $recv(aVisitor)._visitMethodNode_(self);
  49081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49082. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  49083. //>>excludeEnd("ctx");
  49084. }; }),
  49085. $globals.MethodNode);
  49086. $core.addMethod(
  49087. $core.method({
  49088. selector: "arguments",
  49089. protocol: "accessing",
  49090. //>>excludeStart("ide", pragmas.excludeIdeData);
  49091. args: [],
  49092. source: "arguments\x0a\x09^ arguments ifNil: [ #() ]",
  49093. referencedClasses: [],
  49094. //>>excludeEnd("ide");
  49095. pragmas: [],
  49096. messageSends: ["ifNil:"]
  49097. }, function ($methodClass){ return function (){
  49098. var self=this,$self=this;
  49099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49100. return $core.withContext(function($ctx1) {
  49101. //>>excludeEnd("ctx");
  49102. var $1;
  49103. $1=$self.arguments;
  49104. if($1 == null || $1.a$nil){
  49105. return [];
  49106. } else {
  49107. return $1;
  49108. }
  49109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49110. }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
  49111. //>>excludeEnd("ctx");
  49112. }; }),
  49113. $globals.MethodNode);
  49114. $core.addMethod(
  49115. $core.method({
  49116. selector: "arguments:",
  49117. protocol: "accessing",
  49118. //>>excludeStart("ide", pragmas.excludeIdeData);
  49119. args: ["aCollection"],
  49120. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  49121. referencedClasses: [],
  49122. //>>excludeEnd("ide");
  49123. pragmas: [],
  49124. messageSends: []
  49125. }, function ($methodClass){ return function (aCollection){
  49126. var self=this,$self=this;
  49127. $self.arguments=aCollection;
  49128. return self;
  49129. }; }),
  49130. $globals.MethodNode);
  49131. $core.addMethod(
  49132. $core.method({
  49133. selector: "classReferences",
  49134. protocol: "accessing",
  49135. //>>excludeStart("ide", pragmas.excludeIdeData);
  49136. args: [],
  49137. source: "classReferences\x0a\x09^ classReferences",
  49138. referencedClasses: [],
  49139. //>>excludeEnd("ide");
  49140. pragmas: [],
  49141. messageSends: []
  49142. }, function ($methodClass){ return function (){
  49143. var self=this,$self=this;
  49144. return $self.classReferences;
  49145. }; }),
  49146. $globals.MethodNode);
  49147. $core.addMethod(
  49148. $core.method({
  49149. selector: "classReferences:",
  49150. protocol: "accessing",
  49151. //>>excludeStart("ide", pragmas.excludeIdeData);
  49152. args: ["aCollection"],
  49153. source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
  49154. referencedClasses: [],
  49155. //>>excludeEnd("ide");
  49156. pragmas: [],
  49157. messageSends: []
  49158. }, function ($methodClass){ return function (aCollection){
  49159. var self=this,$self=this;
  49160. $self.classReferences=aCollection;
  49161. return self;
  49162. }; }),
  49163. $globals.MethodNode);
  49164. $core.addMethod(
  49165. $core.method({
  49166. selector: "dagChild",
  49167. protocol: "accessing",
  49168. //>>excludeStart("ide", pragmas.excludeIdeData);
  49169. args: [],
  49170. source: "dagChild\x0a\x09^ self sequenceNode",
  49171. referencedClasses: [],
  49172. //>>excludeEnd("ide");
  49173. pragmas: [],
  49174. messageSends: ["sequenceNode"]
  49175. }, function ($methodClass){ return function (){
  49176. var self=this,$self=this;
  49177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49178. return $core.withContext(function($ctx1) {
  49179. //>>excludeEnd("ctx");
  49180. return $self._sequenceNode();
  49181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49182. }, function($ctx1) {$ctx1.fill(self,"dagChild",{})});
  49183. //>>excludeEnd("ctx");
  49184. }; }),
  49185. $globals.MethodNode);
  49186. $core.addMethod(
  49187. $core.method({
  49188. selector: "messageSends",
  49189. protocol: "accessing",
  49190. //>>excludeStart("ide", pragmas.excludeIdeData);
  49191. args: [],
  49192. source: "messageSends\x0a\x09^ self sendIndexes keys",
  49193. referencedClasses: [],
  49194. //>>excludeEnd("ide");
  49195. pragmas: [],
  49196. messageSends: ["keys", "sendIndexes"]
  49197. }, function ($methodClass){ return function (){
  49198. var self=this,$self=this;
  49199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49200. return $core.withContext(function($ctx1) {
  49201. //>>excludeEnd("ctx");
  49202. return $recv($self._sendIndexes())._keys();
  49203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49204. }, function($ctx1) {$ctx1.fill(self,"messageSends",{})});
  49205. //>>excludeEnd("ctx");
  49206. }; }),
  49207. $globals.MethodNode);
  49208. $core.addMethod(
  49209. $core.method({
  49210. selector: "method",
  49211. protocol: "accessing",
  49212. //>>excludeStart("ide", pragmas.excludeIdeData);
  49213. args: [],
  49214. source: "method\x0a\x09^ self",
  49215. referencedClasses: [],
  49216. //>>excludeEnd("ide");
  49217. pragmas: [],
  49218. messageSends: []
  49219. }, function ($methodClass){ return function (){
  49220. var self=this,$self=this;
  49221. return self;
  49222. }; }),
  49223. $globals.MethodNode);
  49224. $core.addMethod(
  49225. $core.method({
  49226. selector: "pragmas",
  49227. protocol: "accessing",
  49228. //>>excludeStart("ide", pragmas.excludeIdeData);
  49229. args: [],
  49230. source: "pragmas\x0a\x09^ pragmas ifNil: [ #() ]",
  49231. referencedClasses: [],
  49232. //>>excludeEnd("ide");
  49233. pragmas: [],
  49234. messageSends: ["ifNil:"]
  49235. }, function ($methodClass){ return function (){
  49236. var self=this,$self=this;
  49237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49238. return $core.withContext(function($ctx1) {
  49239. //>>excludeEnd("ctx");
  49240. var $1;
  49241. $1=$self.pragmas;
  49242. if($1 == null || $1.a$nil){
  49243. return [];
  49244. } else {
  49245. return $1;
  49246. }
  49247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49248. }, function($ctx1) {$ctx1.fill(self,"pragmas",{})});
  49249. //>>excludeEnd("ctx");
  49250. }; }),
  49251. $globals.MethodNode);
  49252. $core.addMethod(
  49253. $core.method({
  49254. selector: "pragmas:",
  49255. protocol: "accessing",
  49256. //>>excludeStart("ide", pragmas.excludeIdeData);
  49257. args: ["aCollection"],
  49258. source: "pragmas: aCollection\x0a\x09pragmas := aCollection",
  49259. referencedClasses: [],
  49260. //>>excludeEnd("ide");
  49261. pragmas: [],
  49262. messageSends: []
  49263. }, function ($methodClass){ return function (aCollection){
  49264. var self=this,$self=this;
  49265. $self.pragmas=aCollection;
  49266. return self;
  49267. }; }),
  49268. $globals.MethodNode);
  49269. $core.addMethod(
  49270. $core.method({
  49271. selector: "scope",
  49272. protocol: "accessing",
  49273. //>>excludeStart("ide", pragmas.excludeIdeData);
  49274. args: [],
  49275. source: "scope\x0a\x09^ scope",
  49276. referencedClasses: [],
  49277. //>>excludeEnd("ide");
  49278. pragmas: [],
  49279. messageSends: []
  49280. }, function ($methodClass){ return function (){
  49281. var self=this,$self=this;
  49282. return $self.scope;
  49283. }; }),
  49284. $globals.MethodNode);
  49285. $core.addMethod(
  49286. $core.method({
  49287. selector: "scope:",
  49288. protocol: "accessing",
  49289. //>>excludeStart("ide", pragmas.excludeIdeData);
  49290. args: ["aMethodScope"],
  49291. source: "scope: aMethodScope\x0a\x09scope := aMethodScope",
  49292. referencedClasses: [],
  49293. //>>excludeEnd("ide");
  49294. pragmas: [],
  49295. messageSends: []
  49296. }, function ($methodClass){ return function (aMethodScope){
  49297. var self=this,$self=this;
  49298. $self.scope=aMethodScope;
  49299. return self;
  49300. }; }),
  49301. $globals.MethodNode);
  49302. $core.addMethod(
  49303. $core.method({
  49304. selector: "selector",
  49305. protocol: "accessing",
  49306. //>>excludeStart("ide", pragmas.excludeIdeData);
  49307. args: [],
  49308. source: "selector\x0a\x09^ selector",
  49309. referencedClasses: [],
  49310. //>>excludeEnd("ide");
  49311. pragmas: [],
  49312. messageSends: []
  49313. }, function ($methodClass){ return function (){
  49314. var self=this,$self=this;
  49315. return $self.selector;
  49316. }; }),
  49317. $globals.MethodNode);
  49318. $core.addMethod(
  49319. $core.method({
  49320. selector: "selector:",
  49321. protocol: "accessing",
  49322. //>>excludeStart("ide", pragmas.excludeIdeData);
  49323. args: ["aString"],
  49324. source: "selector: aString\x0a\x09selector := aString",
  49325. referencedClasses: [],
  49326. //>>excludeEnd("ide");
  49327. pragmas: [],
  49328. messageSends: []
  49329. }, function ($methodClass){ return function (aString){
  49330. var self=this,$self=this;
  49331. $self.selector=aString;
  49332. return self;
  49333. }; }),
  49334. $globals.MethodNode);
  49335. $core.addMethod(
  49336. $core.method({
  49337. selector: "sendIndexes",
  49338. protocol: "accessing",
  49339. //>>excludeStart("ide", pragmas.excludeIdeData);
  49340. args: [],
  49341. source: "sendIndexes\x0a\x09^ sendIndexes",
  49342. referencedClasses: [],
  49343. //>>excludeEnd("ide");
  49344. pragmas: [],
  49345. messageSends: []
  49346. }, function ($methodClass){ return function (){
  49347. var self=this,$self=this;
  49348. return $self.sendIndexes;
  49349. }; }),
  49350. $globals.MethodNode);
  49351. $core.addMethod(
  49352. $core.method({
  49353. selector: "sendIndexes:",
  49354. protocol: "accessing",
  49355. //>>excludeStart("ide", pragmas.excludeIdeData);
  49356. args: ["aDictionary"],
  49357. source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
  49358. referencedClasses: [],
  49359. //>>excludeEnd("ide");
  49360. pragmas: [],
  49361. messageSends: []
  49362. }, function ($methodClass){ return function (aDictionary){
  49363. var self=this,$self=this;
  49364. $self.sendIndexes=aDictionary;
  49365. return self;
  49366. }; }),
  49367. $globals.MethodNode);
  49368. $core.addMethod(
  49369. $core.method({
  49370. selector: "sequenceNode",
  49371. protocol: "accessing",
  49372. //>>excludeStart("ide", pragmas.excludeIdeData);
  49373. args: [],
  49374. source: "sequenceNode\x0a\x09^ sequenceNode",
  49375. referencedClasses: [],
  49376. //>>excludeEnd("ide");
  49377. pragmas: [],
  49378. messageSends: []
  49379. }, function ($methodClass){ return function (){
  49380. var self=this,$self=this;
  49381. return $self.sequenceNode;
  49382. }; }),
  49383. $globals.MethodNode);
  49384. $core.addMethod(
  49385. $core.method({
  49386. selector: "sequenceNode:",
  49387. protocol: "accessing",
  49388. //>>excludeStart("ide", pragmas.excludeIdeData);
  49389. args: ["aSequenceNode"],
  49390. source: "sequenceNode: aSequenceNode\x0a\x09sequenceNode := aSequenceNode",
  49391. referencedClasses: [],
  49392. //>>excludeEnd("ide");
  49393. pragmas: [],
  49394. messageSends: []
  49395. }, function ($methodClass){ return function (aSequenceNode){
  49396. var self=this,$self=this;
  49397. $self.sequenceNode=aSequenceNode;
  49398. return self;
  49399. }; }),
  49400. $globals.MethodNode);
  49401. $core.addClass("ReturnNode", $globals.ASTNode, "Compiler-AST");
  49402. $core.setSlots($globals.ReturnNode, ["scope", "expression"]);
  49403. //>>excludeStart("ide", pragmas.excludeIdeData);
  49404. $globals.ReturnNode.comment="I represent an return node. At the AST level, there is not difference between a local return or non-local return.";
  49405. //>>excludeEnd("ide");
  49406. $core.addMethod(
  49407. $core.method({
  49408. selector: "acceptDagVisitor:",
  49409. protocol: "visiting",
  49410. //>>excludeStart("ide", pragmas.excludeIdeData);
  49411. args: ["aVisitor"],
  49412. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitReturnNode: self",
  49413. referencedClasses: [],
  49414. //>>excludeEnd("ide");
  49415. pragmas: [],
  49416. messageSends: ["visitReturnNode:"]
  49417. }, function ($methodClass){ return function (aVisitor){
  49418. var self=this,$self=this;
  49419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49420. return $core.withContext(function($ctx1) {
  49421. //>>excludeEnd("ctx");
  49422. return $recv(aVisitor)._visitReturnNode_(self);
  49423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49424. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  49425. //>>excludeEnd("ctx");
  49426. }; }),
  49427. $globals.ReturnNode);
  49428. $core.addMethod(
  49429. $core.method({
  49430. selector: "dagChild",
  49431. protocol: "accessing",
  49432. //>>excludeStart("ide", pragmas.excludeIdeData);
  49433. args: [],
  49434. source: "dagChild\x0a\x09^ self expression",
  49435. referencedClasses: [],
  49436. //>>excludeEnd("ide");
  49437. pragmas: [],
  49438. messageSends: ["expression"]
  49439. }, function ($methodClass){ return function (){
  49440. var self=this,$self=this;
  49441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49442. return $core.withContext(function($ctx1) {
  49443. //>>excludeEnd("ctx");
  49444. return $self._expression();
  49445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49446. }, function($ctx1) {$ctx1.fill(self,"dagChild",{})});
  49447. //>>excludeEnd("ctx");
  49448. }; }),
  49449. $globals.ReturnNode);
  49450. $core.addMethod(
  49451. $core.method({
  49452. selector: "expression",
  49453. protocol: "accessing",
  49454. //>>excludeStart("ide", pragmas.excludeIdeData);
  49455. args: [],
  49456. source: "expression\x0a\x09^ expression ifNil: [ nodes first ]",
  49457. referencedClasses: [],
  49458. //>>excludeEnd("ide");
  49459. pragmas: [],
  49460. messageSends: ["ifNil:", "first"]
  49461. }, function ($methodClass){ return function (){
  49462. var self=this,$self=this;
  49463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49464. return $core.withContext(function($ctx1) {
  49465. //>>excludeEnd("ctx");
  49466. var $1;
  49467. $1=$self.expression;
  49468. if($1 == null || $1.a$nil){
  49469. return $recv($self.nodes)._first();
  49470. } else {
  49471. return $1;
  49472. }
  49473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49474. }, function($ctx1) {$ctx1.fill(self,"expression",{})});
  49475. //>>excludeEnd("ctx");
  49476. }; }),
  49477. $globals.ReturnNode);
  49478. $core.addMethod(
  49479. $core.method({
  49480. selector: "expression:",
  49481. protocol: "accessing",
  49482. //>>excludeStart("ide", pragmas.excludeIdeData);
  49483. args: ["anObject"],
  49484. source: "expression: anObject\x0a\x09expression := anObject",
  49485. referencedClasses: [],
  49486. //>>excludeEnd("ide");
  49487. pragmas: [],
  49488. messageSends: []
  49489. }, function ($methodClass){ return function (anObject){
  49490. var self=this,$self=this;
  49491. $self.expression=anObject;
  49492. return self;
  49493. }; }),
  49494. $globals.ReturnNode);
  49495. $core.addMethod(
  49496. $core.method({
  49497. selector: "isReturnNode",
  49498. protocol: "testing",
  49499. //>>excludeStart("ide", pragmas.excludeIdeData);
  49500. args: [],
  49501. source: "isReturnNode\x0a\x09^ true",
  49502. referencedClasses: [],
  49503. //>>excludeEnd("ide");
  49504. pragmas: [],
  49505. messageSends: []
  49506. }, function ($methodClass){ return function (){
  49507. var self=this,$self=this;
  49508. return true;
  49509. }; }),
  49510. $globals.ReturnNode);
  49511. $core.addMethod(
  49512. $core.method({
  49513. selector: "nonLocalReturn",
  49514. protocol: "testing",
  49515. //>>excludeStart("ide", pragmas.excludeIdeData);
  49516. args: [],
  49517. source: "nonLocalReturn\x0a\x09^ self scope isMethodScope not",
  49518. referencedClasses: [],
  49519. //>>excludeEnd("ide");
  49520. pragmas: [],
  49521. messageSends: ["not", "isMethodScope", "scope"]
  49522. }, function ($methodClass){ return function (){
  49523. var self=this,$self=this;
  49524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49525. return $core.withContext(function($ctx1) {
  49526. //>>excludeEnd("ctx");
  49527. return $recv($recv($self._scope())._isMethodScope())._not();
  49528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49529. }, function($ctx1) {$ctx1.fill(self,"nonLocalReturn",{})});
  49530. //>>excludeEnd("ctx");
  49531. }; }),
  49532. $globals.ReturnNode);
  49533. $core.addMethod(
  49534. $core.method({
  49535. selector: "scope",
  49536. protocol: "accessing",
  49537. //>>excludeStart("ide", pragmas.excludeIdeData);
  49538. args: [],
  49539. source: "scope\x0a\x09^ scope",
  49540. referencedClasses: [],
  49541. //>>excludeEnd("ide");
  49542. pragmas: [],
  49543. messageSends: []
  49544. }, function ($methodClass){ return function (){
  49545. var self=this,$self=this;
  49546. return $self.scope;
  49547. }; }),
  49548. $globals.ReturnNode);
  49549. $core.addMethod(
  49550. $core.method({
  49551. selector: "scope:",
  49552. protocol: "accessing",
  49553. //>>excludeStart("ide", pragmas.excludeIdeData);
  49554. args: ["aLexicalScope"],
  49555. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  49556. referencedClasses: [],
  49557. //>>excludeEnd("ide");
  49558. pragmas: [],
  49559. messageSends: []
  49560. }, function ($methodClass){ return function (aLexicalScope){
  49561. var self=this,$self=this;
  49562. $self.scope=aLexicalScope;
  49563. return self;
  49564. }; }),
  49565. $globals.ReturnNode);
  49566. $core.addClass("SequenceNode", $globals.ASTNode, "Compiler-AST");
  49567. $core.setSlots($globals.SequenceNode, ["temps"]);
  49568. //>>excludeStart("ide", pragmas.excludeIdeData);
  49569. $globals.SequenceNode.comment="I represent an sequence node. A sequence represent a set of instructions inside the same scope (the method scope or a block scope).";
  49570. //>>excludeEnd("ide");
  49571. $core.addMethod(
  49572. $core.method({
  49573. selector: "acceptDagVisitor:",
  49574. protocol: "visiting",
  49575. //>>excludeStart("ide", pragmas.excludeIdeData);
  49576. args: ["aVisitor"],
  49577. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitSequenceNode: self",
  49578. referencedClasses: [],
  49579. //>>excludeEnd("ide");
  49580. pragmas: [],
  49581. messageSends: ["visitSequenceNode:"]
  49582. }, function ($methodClass){ return function (aVisitor){
  49583. var self=this,$self=this;
  49584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49585. return $core.withContext(function($ctx1) {
  49586. //>>excludeEnd("ctx");
  49587. return $recv(aVisitor)._visitSequenceNode_(self);
  49588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49589. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  49590. //>>excludeEnd("ctx");
  49591. }; }),
  49592. $globals.SequenceNode);
  49593. $core.addMethod(
  49594. $core.method({
  49595. selector: "temps",
  49596. protocol: "accessing",
  49597. //>>excludeStart("ide", pragmas.excludeIdeData);
  49598. args: [],
  49599. source: "temps\x0a\x09^ temps ifNil: [ #() ]",
  49600. referencedClasses: [],
  49601. //>>excludeEnd("ide");
  49602. pragmas: [],
  49603. messageSends: ["ifNil:"]
  49604. }, function ($methodClass){ return function (){
  49605. var self=this,$self=this;
  49606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49607. return $core.withContext(function($ctx1) {
  49608. //>>excludeEnd("ctx");
  49609. var $1;
  49610. $1=$self.temps;
  49611. if($1 == null || $1.a$nil){
  49612. return [];
  49613. } else {
  49614. return $1;
  49615. }
  49616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49617. }, function($ctx1) {$ctx1.fill(self,"temps",{})});
  49618. //>>excludeEnd("ctx");
  49619. }; }),
  49620. $globals.SequenceNode);
  49621. $core.addMethod(
  49622. $core.method({
  49623. selector: "temps:",
  49624. protocol: "accessing",
  49625. //>>excludeStart("ide", pragmas.excludeIdeData);
  49626. args: ["aCollection"],
  49627. source: "temps: aCollection\x0a\x09temps := aCollection",
  49628. referencedClasses: [],
  49629. //>>excludeEnd("ide");
  49630. pragmas: [],
  49631. messageSends: []
  49632. }, function ($methodClass){ return function (aCollection){
  49633. var self=this,$self=this;
  49634. $self.temps=aCollection;
  49635. return self;
  49636. }; }),
  49637. $globals.SequenceNode);
  49638. $core.addClass("BlockSequenceNode", $globals.SequenceNode, "Compiler-AST");
  49639. //>>excludeStart("ide", pragmas.excludeIdeData);
  49640. $globals.BlockSequenceNode.comment="I represent an special sequence node for block scopes.";
  49641. //>>excludeEnd("ide");
  49642. $core.addMethod(
  49643. $core.method({
  49644. selector: "acceptDagVisitor:",
  49645. protocol: "visiting",
  49646. //>>excludeStart("ide", pragmas.excludeIdeData);
  49647. args: ["aVisitor"],
  49648. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitBlockSequenceNode: self",
  49649. referencedClasses: [],
  49650. //>>excludeEnd("ide");
  49651. pragmas: [],
  49652. messageSends: ["visitBlockSequenceNode:"]
  49653. }, function ($methodClass){ return function (aVisitor){
  49654. var self=this,$self=this;
  49655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49656. return $core.withContext(function($ctx1) {
  49657. //>>excludeEnd("ctx");
  49658. return $recv(aVisitor)._visitBlockSequenceNode_(self);
  49659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49660. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  49661. //>>excludeEnd("ctx");
  49662. }; }),
  49663. $globals.BlockSequenceNode);
  49664. $core.addClass("AstPragmator", $globals.Object, "Compiler-AST");
  49665. $core.setSlots($globals.AstPragmator, ["methodNode"]);
  49666. //>>excludeStart("ide", pragmas.excludeIdeData);
  49667. $globals.AstPragmator.comment="I am abstract superclass for pragma-processing transformer.\x0a\x0aMy subclasses should implement messages for each pragma\x0athey process. Pragma processing checks if a message is known\x0ato a class but not to its superclass. IOW, each and only those\x0apragmas are processed which are defined as methods in the subclass.\x0a\x0aThese messages can access sequence node in which\x0aa pragma occurred and its containing method node\x0aas `self sequenceNode` and `self methodNode`.\x0a\x0aSee `EarlyPragmator` for an example.";
  49668. //>>excludeEnd("ide");
  49669. $core.addMethod(
  49670. $core.method({
  49671. selector: "methodNode",
  49672. protocol: "accessing",
  49673. //>>excludeStart("ide", pragmas.excludeIdeData);
  49674. args: [],
  49675. source: "methodNode\x0a\x09^ methodNode",
  49676. referencedClasses: [],
  49677. //>>excludeEnd("ide");
  49678. pragmas: [],
  49679. messageSends: []
  49680. }, function ($methodClass){ return function (){
  49681. var self=this,$self=this;
  49682. return $self.methodNode;
  49683. }; }),
  49684. $globals.AstPragmator);
  49685. $core.addMethod(
  49686. $core.method({
  49687. selector: "methodNode:",
  49688. protocol: "accessing",
  49689. //>>excludeStart("ide", pragmas.excludeIdeData);
  49690. args: ["anObject"],
  49691. source: "methodNode: anObject\x0a\x09methodNode := anObject",
  49692. referencedClasses: [],
  49693. //>>excludeEnd("ide");
  49694. pragmas: [],
  49695. messageSends: []
  49696. }, function ($methodClass){ return function (anObject){
  49697. var self=this,$self=this;
  49698. $self.methodNode=anObject;
  49699. return self;
  49700. }; }),
  49701. $globals.AstPragmator);
  49702. $core.addMethod(
  49703. $core.method({
  49704. selector: "value:",
  49705. protocol: "visiting",
  49706. //>>excludeStart("ide", pragmas.excludeIdeData);
  49707. args: ["aMethodNode"],
  49708. source: "value: aMethodNode\x0a\x09self methodNode: aMethodNode.\x0a\x09self processPragmas: aMethodNode pragmas.\x0a\x09^ aMethodNode",
  49709. referencedClasses: [],
  49710. //>>excludeEnd("ide");
  49711. pragmas: [],
  49712. messageSends: ["methodNode:", "processPragmas:", "pragmas"]
  49713. }, function ($methodClass){ return function (aMethodNode){
  49714. var self=this,$self=this;
  49715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49716. return $core.withContext(function($ctx1) {
  49717. //>>excludeEnd("ctx");
  49718. $self._methodNode_(aMethodNode);
  49719. $self._processPragmas_($recv(aMethodNode)._pragmas());
  49720. return aMethodNode;
  49721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49722. }, function($ctx1) {$ctx1.fill(self,"value:",{aMethodNode:aMethodNode})});
  49723. //>>excludeEnd("ctx");
  49724. }; }),
  49725. $globals.AstPragmator);
  49726. $core.addClass("AstSemanticPragmator", $globals.AstPragmator, "Compiler-AST");
  49727. $core.addMethod(
  49728. $core.method({
  49729. selector: "inlineJS:",
  49730. protocol: "pragmas",
  49731. //>>excludeStart("ide", pragmas.excludeIdeData);
  49732. args: ["aString"],
  49733. source: "inlineJS: aString\x0a\x09self methodNode sequenceNode dagChildren ifNotEmpty: [\x0a\x09\x09CompilerError signal: 'There must be no other code or code generator pragma than a lone inlineJS:' ].\x0a\x09self methodNode sequenceNode addDagChild: (\x0a\x09\x09JSStatementNode new\x0a\x09\x09\x09source: aString;\x0a\x09\x09\x09yourself)",
  49734. referencedClasses: ["CompilerError", "JSStatementNode"],
  49735. //>>excludeEnd("ide");
  49736. pragmas: [],
  49737. messageSends: ["ifNotEmpty:", "dagChildren", "sequenceNode", "methodNode", "signal:", "addDagChild:", "source:", "new", "yourself"]
  49738. }, function ($methodClass){ return function (aString){
  49739. var self=this,$self=this;
  49740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49741. return $core.withContext(function($ctx1) {
  49742. //>>excludeEnd("ctx");
  49743. var $1,$2;
  49744. $recv($recv([$recv([$self._methodNode()
  49745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49746. ,$ctx1.sendIdx["methodNode"]=1
  49747. //>>excludeEnd("ctx");
  49748. ][0])._sequenceNode()
  49749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49750. ,$ctx1.sendIdx["sequenceNode"]=1
  49751. //>>excludeEnd("ctx");
  49752. ][0])._dagChildren())._ifNotEmpty_((function(){
  49753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49754. return $core.withContext(function($ctx2) {
  49755. //>>excludeEnd("ctx");
  49756. return $recv($globals.CompilerError)._signal_("There must be no other code or code generator pragma than a lone inlineJS:");
  49757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49758. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  49759. //>>excludeEnd("ctx");
  49760. }));
  49761. $1=$recv($self._methodNode())._sequenceNode();
  49762. $2=$recv($globals.JSStatementNode)._new();
  49763. $recv($2)._source_(aString);
  49764. $recv($1)._addDagChild_($recv($2)._yourself());
  49765. return self;
  49766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49767. }, function($ctx1) {$ctx1.fill(self,"inlineJS:",{aString:aString})});
  49768. //>>excludeEnd("ctx");
  49769. }; }),
  49770. $globals.AstSemanticPragmator);
  49771. $core.addClass("CompilerError", $globals.Error, "Compiler-AST");
  49772. //>>excludeStart("ide", pragmas.excludeIdeData);
  49773. $globals.CompilerError.comment="I am the common superclass of all compiling errors.";
  49774. //>>excludeEnd("ide");
  49775. $core.addClass("ParentFakingPathDagVisitor", $globals.PathDagVisitor, "Compiler-AST");
  49776. $core.setSlots($globals.ParentFakingPathDagVisitor, ["setParentSelector"]);
  49777. //>>excludeStart("ide", pragmas.excludeIdeData);
  49778. $globals.ParentFakingPathDagVisitor.comment="I am base class of `DagNode` visitor.\x0a\x0aI hold the path of ancestors up to actual node\x0ain `self path`.";
  49779. //>>excludeEnd("ide");
  49780. $core.addMethod(
  49781. $core.method({
  49782. selector: "visit:",
  49783. protocol: "visiting",
  49784. //>>excludeStart("ide", pragmas.excludeIdeData);
  49785. args: ["aNode"],
  49786. source: "visit: aNode\x0a\x09self path ifNotEmpty: [ :p | aNode parent: p last ].\x0a\x09^ super visit: aNode",
  49787. referencedClasses: [],
  49788. //>>excludeEnd("ide");
  49789. pragmas: [],
  49790. messageSends: ["ifNotEmpty:", "path", "parent:", "last", "visit:"]
  49791. }, function ($methodClass){ return function (aNode){
  49792. var self=this,$self=this;
  49793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49794. return $core.withContext(function($ctx1) {
  49795. //>>excludeEnd("ctx");
  49796. $recv($self._path())._ifNotEmpty_((function(p){
  49797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49798. return $core.withContext(function($ctx2) {
  49799. //>>excludeEnd("ctx");
  49800. return $recv(aNode)._parent_($recv(p)._last());
  49801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49802. }, function($ctx2) {$ctx2.fillBlock({p:p},$ctx1,1)});
  49803. //>>excludeEnd("ctx");
  49804. }));
  49805. return [(
  49806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49807. $ctx1.supercall = true,
  49808. //>>excludeEnd("ctx");
  49809. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visit_.call($self,aNode))
  49810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49811. ,$ctx1.supercall = false
  49812. //>>excludeEnd("ctx");
  49813. ][0];
  49814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49815. }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode})});
  49816. //>>excludeEnd("ctx");
  49817. }; }),
  49818. $globals.ParentFakingPathDagVisitor);
  49819. $core.addClass("NodeVisitor", $globals.ParentFakingPathDagVisitor, "Compiler-AST");
  49820. //>>excludeStart("ide", pragmas.excludeIdeData);
  49821. $globals.NodeVisitor.comment="I am the abstract super class of all AST node visitors.";
  49822. //>>excludeEnd("ide");
  49823. $core.addMethod(
  49824. $core.method({
  49825. selector: "visitAssignmentNode:",
  49826. protocol: "visiting",
  49827. //>>excludeStart("ide", pragmas.excludeIdeData);
  49828. args: ["aNode"],
  49829. source: "visitAssignmentNode: aNode\x0a\x09^ self visitDagNode: aNode",
  49830. referencedClasses: [],
  49831. //>>excludeEnd("ide");
  49832. pragmas: [],
  49833. messageSends: ["visitDagNode:"]
  49834. }, function ($methodClass){ return function (aNode){
  49835. var self=this,$self=this;
  49836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49837. return $core.withContext(function($ctx1) {
  49838. //>>excludeEnd("ctx");
  49839. return $self._visitDagNode_(aNode);
  49840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49841. }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode})});
  49842. //>>excludeEnd("ctx");
  49843. }; }),
  49844. $globals.NodeVisitor);
  49845. $core.addMethod(
  49846. $core.method({
  49847. selector: "visitBlockNode:",
  49848. protocol: "visiting",
  49849. //>>excludeStart("ide", pragmas.excludeIdeData);
  49850. args: ["aNode"],
  49851. source: "visitBlockNode: aNode\x0a\x09^ self visitDagNode: aNode",
  49852. referencedClasses: [],
  49853. //>>excludeEnd("ide");
  49854. pragmas: [],
  49855. messageSends: ["visitDagNode:"]
  49856. }, function ($methodClass){ return function (aNode){
  49857. var self=this,$self=this;
  49858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49859. return $core.withContext(function($ctx1) {
  49860. //>>excludeEnd("ctx");
  49861. return $self._visitDagNode_(aNode);
  49862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49863. }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode})});
  49864. //>>excludeEnd("ctx");
  49865. }; }),
  49866. $globals.NodeVisitor);
  49867. $core.addMethod(
  49868. $core.method({
  49869. selector: "visitBlockSequenceNode:",
  49870. protocol: "visiting",
  49871. //>>excludeStart("ide", pragmas.excludeIdeData);
  49872. args: ["aNode"],
  49873. source: "visitBlockSequenceNode: aNode\x0a\x09^ self visitSequenceNode: aNode",
  49874. referencedClasses: [],
  49875. //>>excludeEnd("ide");
  49876. pragmas: [],
  49877. messageSends: ["visitSequenceNode:"]
  49878. }, function ($methodClass){ return function (aNode){
  49879. var self=this,$self=this;
  49880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49881. return $core.withContext(function($ctx1) {
  49882. //>>excludeEnd("ctx");
  49883. return $self._visitSequenceNode_(aNode);
  49884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49885. }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode})});
  49886. //>>excludeEnd("ctx");
  49887. }; }),
  49888. $globals.NodeVisitor);
  49889. $core.addMethod(
  49890. $core.method({
  49891. selector: "visitCascadeNode:",
  49892. protocol: "visiting",
  49893. //>>excludeStart("ide", pragmas.excludeIdeData);
  49894. args: ["aNode"],
  49895. source: "visitCascadeNode: aNode\x0a\x09^ self visitDagNode: aNode",
  49896. referencedClasses: [],
  49897. //>>excludeEnd("ide");
  49898. pragmas: [],
  49899. messageSends: ["visitDagNode:"]
  49900. }, function ($methodClass){ return function (aNode){
  49901. var self=this,$self=this;
  49902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49903. return $core.withContext(function($ctx1) {
  49904. //>>excludeEnd("ctx");
  49905. return $self._visitDagNode_(aNode);
  49906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49907. }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode})});
  49908. //>>excludeEnd("ctx");
  49909. }; }),
  49910. $globals.NodeVisitor);
  49911. $core.addMethod(
  49912. $core.method({
  49913. selector: "visitDagNode:",
  49914. protocol: "visiting",
  49915. //>>excludeStart("ide", pragmas.excludeIdeData);
  49916. args: ["aNode"],
  49917. source: "visitDagNode: aNode\x0a\x09^ self visitDagNodeVariantSimple: aNode",
  49918. referencedClasses: [],
  49919. //>>excludeEnd("ide");
  49920. pragmas: [],
  49921. messageSends: ["visitDagNodeVariantSimple:"]
  49922. }, function ($methodClass){ return function (aNode){
  49923. var self=this,$self=this;
  49924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49925. return $core.withContext(function($ctx1) {
  49926. //>>excludeEnd("ctx");
  49927. return $self._visitDagNodeVariantSimple_(aNode);
  49928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49929. }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode})});
  49930. //>>excludeEnd("ctx");
  49931. }; }),
  49932. $globals.NodeVisitor);
  49933. $core.addMethod(
  49934. $core.method({
  49935. selector: "visitDynamicArrayNode:",
  49936. protocol: "visiting",
  49937. //>>excludeStart("ide", pragmas.excludeIdeData);
  49938. args: ["aNode"],
  49939. source: "visitDynamicArrayNode: aNode\x0a\x09^ self visitDagNode: aNode",
  49940. referencedClasses: [],
  49941. //>>excludeEnd("ide");
  49942. pragmas: [],
  49943. messageSends: ["visitDagNode:"]
  49944. }, function ($methodClass){ return function (aNode){
  49945. var self=this,$self=this;
  49946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49947. return $core.withContext(function($ctx1) {
  49948. //>>excludeEnd("ctx");
  49949. return $self._visitDagNode_(aNode);
  49950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49951. }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode})});
  49952. //>>excludeEnd("ctx");
  49953. }; }),
  49954. $globals.NodeVisitor);
  49955. $core.addMethod(
  49956. $core.method({
  49957. selector: "visitDynamicDictionaryNode:",
  49958. protocol: "visiting",
  49959. //>>excludeStart("ide", pragmas.excludeIdeData);
  49960. args: ["aNode"],
  49961. source: "visitDynamicDictionaryNode: aNode\x0a\x09^ self visitDagNode: aNode",
  49962. referencedClasses: [],
  49963. //>>excludeEnd("ide");
  49964. pragmas: [],
  49965. messageSends: ["visitDagNode:"]
  49966. }, function ($methodClass){ return function (aNode){
  49967. var self=this,$self=this;
  49968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49969. return $core.withContext(function($ctx1) {
  49970. //>>excludeEnd("ctx");
  49971. return $self._visitDagNode_(aNode);
  49972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49973. }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode})});
  49974. //>>excludeEnd("ctx");
  49975. }; }),
  49976. $globals.NodeVisitor);
  49977. $core.addMethod(
  49978. $core.method({
  49979. selector: "visitJSStatementNode:",
  49980. protocol: "visiting",
  49981. //>>excludeStart("ide", pragmas.excludeIdeData);
  49982. args: ["aNode"],
  49983. source: "visitJSStatementNode: aNode\x0a\x09^ self visitDagNode: aNode",
  49984. referencedClasses: [],
  49985. //>>excludeEnd("ide");
  49986. pragmas: [],
  49987. messageSends: ["visitDagNode:"]
  49988. }, function ($methodClass){ return function (aNode){
  49989. var self=this,$self=this;
  49990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49991. return $core.withContext(function($ctx1) {
  49992. //>>excludeEnd("ctx");
  49993. return $self._visitDagNode_(aNode);
  49994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49995. }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode})});
  49996. //>>excludeEnd("ctx");
  49997. }; }),
  49998. $globals.NodeVisitor);
  49999. $core.addMethod(
  50000. $core.method({
  50001. selector: "visitMethodNode:",
  50002. protocol: "visiting",
  50003. //>>excludeStart("ide", pragmas.excludeIdeData);
  50004. args: ["aNode"],
  50005. source: "visitMethodNode: aNode\x0a\x09^ self visitDagNode: aNode",
  50006. referencedClasses: [],
  50007. //>>excludeEnd("ide");
  50008. pragmas: [],
  50009. messageSends: ["visitDagNode:"]
  50010. }, function ($methodClass){ return function (aNode){
  50011. var self=this,$self=this;
  50012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50013. return $core.withContext(function($ctx1) {
  50014. //>>excludeEnd("ctx");
  50015. return $self._visitDagNode_(aNode);
  50016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50017. }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode})});
  50018. //>>excludeEnd("ctx");
  50019. }; }),
  50020. $globals.NodeVisitor);
  50021. $core.addMethod(
  50022. $core.method({
  50023. selector: "visitReturnNode:",
  50024. protocol: "visiting",
  50025. //>>excludeStart("ide", pragmas.excludeIdeData);
  50026. args: ["aNode"],
  50027. source: "visitReturnNode: aNode\x0a\x09^ self visitDagNode: aNode",
  50028. referencedClasses: [],
  50029. //>>excludeEnd("ide");
  50030. pragmas: [],
  50031. messageSends: ["visitDagNode:"]
  50032. }, function ($methodClass){ return function (aNode){
  50033. var self=this,$self=this;
  50034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50035. return $core.withContext(function($ctx1) {
  50036. //>>excludeEnd("ctx");
  50037. return $self._visitDagNode_(aNode);
  50038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50039. }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode})});
  50040. //>>excludeEnd("ctx");
  50041. }; }),
  50042. $globals.NodeVisitor);
  50043. $core.addMethod(
  50044. $core.method({
  50045. selector: "visitSendNode:",
  50046. protocol: "visiting",
  50047. //>>excludeStart("ide", pragmas.excludeIdeData);
  50048. args: ["aNode"],
  50049. source: "visitSendNode: aNode\x0a\x09^ self visitDagNode: aNode",
  50050. referencedClasses: [],
  50051. //>>excludeEnd("ide");
  50052. pragmas: [],
  50053. messageSends: ["visitDagNode:"]
  50054. }, function ($methodClass){ return function (aNode){
  50055. var self=this,$self=this;
  50056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50057. return $core.withContext(function($ctx1) {
  50058. //>>excludeEnd("ctx");
  50059. return $self._visitDagNode_(aNode);
  50060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50061. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode})});
  50062. //>>excludeEnd("ctx");
  50063. }; }),
  50064. $globals.NodeVisitor);
  50065. $core.addMethod(
  50066. $core.method({
  50067. selector: "visitSequenceNode:",
  50068. protocol: "visiting",
  50069. //>>excludeStart("ide", pragmas.excludeIdeData);
  50070. args: ["aNode"],
  50071. source: "visitSequenceNode: aNode\x0a\x09^ self visitDagNode: aNode",
  50072. referencedClasses: [],
  50073. //>>excludeEnd("ide");
  50074. pragmas: [],
  50075. messageSends: ["visitDagNode:"]
  50076. }, function ($methodClass){ return function (aNode){
  50077. var self=this,$self=this;
  50078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50079. return $core.withContext(function($ctx1) {
  50080. //>>excludeEnd("ctx");
  50081. return $self._visitDagNode_(aNode);
  50082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50083. }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode})});
  50084. //>>excludeEnd("ctx");
  50085. }; }),
  50086. $globals.NodeVisitor);
  50087. $core.addMethod(
  50088. $core.method({
  50089. selector: "visitValueNode:",
  50090. protocol: "visiting",
  50091. //>>excludeStart("ide", pragmas.excludeIdeData);
  50092. args: ["aNode"],
  50093. source: "visitValueNode: aNode\x0a\x09^ self visitDagNode: aNode",
  50094. referencedClasses: [],
  50095. //>>excludeEnd("ide");
  50096. pragmas: [],
  50097. messageSends: ["visitDagNode:"]
  50098. }, function ($methodClass){ return function (aNode){
  50099. var self=this,$self=this;
  50100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50101. return $core.withContext(function($ctx1) {
  50102. //>>excludeEnd("ctx");
  50103. return $self._visitDagNode_(aNode);
  50104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50105. }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode})});
  50106. //>>excludeEnd("ctx");
  50107. }; }),
  50108. $globals.NodeVisitor);
  50109. $core.addMethod(
  50110. $core.method({
  50111. selector: "visitVariableNode:",
  50112. protocol: "visiting",
  50113. //>>excludeStart("ide", pragmas.excludeIdeData);
  50114. args: ["aNode"],
  50115. source: "visitVariableNode: aNode\x0a\x09^ self visitDagNode: aNode",
  50116. referencedClasses: [],
  50117. //>>excludeEnd("ide");
  50118. pragmas: [],
  50119. messageSends: ["visitDagNode:"]
  50120. }, function ($methodClass){ return function (aNode){
  50121. var self=this,$self=this;
  50122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50123. return $core.withContext(function($ctx1) {
  50124. //>>excludeEnd("ctx");
  50125. return $self._visitDagNode_(aNode);
  50126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50127. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
  50128. //>>excludeEnd("ctx");
  50129. }; }),
  50130. $globals.NodeVisitor);
  50131. $core.setTraitComposition([{trait: $globals.TDerivedDagChildren}], $globals.AssignmentNode);
  50132. $core.setTraitComposition([{trait: $globals.TSingleDagChild}], $globals.BlockNode);
  50133. $core.setTraitComposition([{trait: $globals.TDerivedDagChildren}], $globals.SendNode);
  50134. $core.setTraitComposition([{trait: $globals.TDagSink}], $globals.ValueNode);
  50135. $core.setTraitComposition([{trait: $globals.TDagSink}], $globals.VariableNode);
  50136. $core.setTraitComposition([{trait: $globals.TDagSink}], $globals.JSStatementNode);
  50137. $core.setTraitComposition([{trait: $globals.TSingleDagChild}], $globals.MethodNode);
  50138. $core.setTraitComposition([{trait: $globals.TSingleDagChild}], $globals.ReturnNode);
  50139. $core.setTraitComposition([{trait: $globals.TPragmator}], $globals.AstPragmator);
  50140. $core.addMethod(
  50141. $core.method({
  50142. selector: "ast",
  50143. protocol: "*Compiler-AST",
  50144. //>>excludeStart("ide", pragmas.excludeIdeData);
  50145. args: [],
  50146. source: "ast\x0a\x09self source ifEmpty: [ CompilerError signal: 'Method source is empty' ].\x0a\x09\x0a\x09^ Compiler new\x0a\x09\x09ast: self source\x0a\x09\x09forClass: self origin\x0a\x09\x09protocol: self protocol",
  50147. referencedClasses: ["CompilerError", "Compiler"],
  50148. //>>excludeEnd("ide");
  50149. pragmas: [],
  50150. messageSends: ["ifEmpty:", "source", "signal:", "ast:forClass:protocol:", "new", "origin", "protocol"]
  50151. }, function ($methodClass){ return function (){
  50152. var self=this,$self=this;
  50153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50154. return $core.withContext(function($ctx1) {
  50155. //>>excludeEnd("ctx");
  50156. $recv([$self._source()
  50157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50158. ,$ctx1.sendIdx["source"]=1
  50159. //>>excludeEnd("ctx");
  50160. ][0])._ifEmpty_((function(){
  50161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50162. return $core.withContext(function($ctx2) {
  50163. //>>excludeEnd("ctx");
  50164. return $recv($globals.CompilerError)._signal_("Method source is empty");
  50165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50166. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  50167. //>>excludeEnd("ctx");
  50168. }));
  50169. return $recv($recv($globals.Compiler)._new())._ast_forClass_protocol_($self._source(),$self._origin(),$self._protocol());
  50170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50171. }, function($ctx1) {$ctx1.fill(self,"ast",{})});
  50172. //>>excludeEnd("ctx");
  50173. }; }),
  50174. $globals.CompiledMethod);
  50175. });
  50176. define('amber/core/Compiler-Semantic',["amber/boot", "require", "amber/core/Compiler-AST", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  50177. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  50178. var $pkg = $core.addPackage("Compiler-Semantic");
  50179. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  50180. $core.addClass("JSSuperSendVisitor", $globals.NodeVisitor, "Compiler-Semantic");
  50181. $core.setSlots($globals.JSSuperSendVisitor, ["selector", "arguments", "property", "args"]);
  50182. $core.addMethod(
  50183. $core.method({
  50184. selector: "args",
  50185. protocol: "accessing",
  50186. //>>excludeStart("ide", pragmas.excludeIdeData);
  50187. args: [],
  50188. source: "args\x0a\x09^ args",
  50189. referencedClasses: [],
  50190. //>>excludeEnd("ide");
  50191. pragmas: [],
  50192. messageSends: []
  50193. }, function ($methodClass){ return function (){
  50194. var self=this,$self=this;
  50195. return $self.args;
  50196. }; }),
  50197. $globals.JSSuperSendVisitor);
  50198. $core.addMethod(
  50199. $core.method({
  50200. selector: "args:",
  50201. protocol: "accessing",
  50202. //>>excludeStart("ide", pragmas.excludeIdeData);
  50203. args: ["aCollection"],
  50204. source: "args: aCollection\x0a\x09args := aCollection",
  50205. referencedClasses: [],
  50206. //>>excludeEnd("ide");
  50207. pragmas: [],
  50208. messageSends: []
  50209. }, function ($methodClass){ return function (aCollection){
  50210. var self=this,$self=this;
  50211. $self.args=aCollection;
  50212. return self;
  50213. }; }),
  50214. $globals.JSSuperSendVisitor);
  50215. $core.addMethod(
  50216. $core.method({
  50217. selector: "arguments",
  50218. protocol: "accessing",
  50219. //>>excludeStart("ide", pragmas.excludeIdeData);
  50220. args: [],
  50221. source: "arguments\x0a\x09^ arguments",
  50222. referencedClasses: [],
  50223. //>>excludeEnd("ide");
  50224. pragmas: [],
  50225. messageSends: []
  50226. }, function ($methodClass){ return function (){
  50227. var self=this,$self=this;
  50228. return $self.arguments;
  50229. }; }),
  50230. $globals.JSSuperSendVisitor);
  50231. $core.addMethod(
  50232. $core.method({
  50233. selector: "arguments:",
  50234. protocol: "accessing",
  50235. //>>excludeStart("ide", pragmas.excludeIdeData);
  50236. args: ["aCollection"],
  50237. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  50238. referencedClasses: [],
  50239. //>>excludeEnd("ide");
  50240. pragmas: [],
  50241. messageSends: []
  50242. }, function ($methodClass){ return function (aCollection){
  50243. var self=this,$self=this;
  50244. $self.arguments=aCollection;
  50245. return self;
  50246. }; }),
  50247. $globals.JSSuperSendVisitor);
  50248. $core.addMethod(
  50249. $core.method({
  50250. selector: "property",
  50251. protocol: "accessing",
  50252. //>>excludeStart("ide", pragmas.excludeIdeData);
  50253. args: [],
  50254. source: "property\x0a\x09^ property",
  50255. referencedClasses: [],
  50256. //>>excludeEnd("ide");
  50257. pragmas: [],
  50258. messageSends: []
  50259. }, function ($methodClass){ return function (){
  50260. var self=this,$self=this;
  50261. return $self.property;
  50262. }; }),
  50263. $globals.JSSuperSendVisitor);
  50264. $core.addMethod(
  50265. $core.method({
  50266. selector: "property:",
  50267. protocol: "accessing",
  50268. //>>excludeStart("ide", pragmas.excludeIdeData);
  50269. args: ["anObject"],
  50270. source: "property: anObject\x0a\x09property := anObject",
  50271. referencedClasses: [],
  50272. //>>excludeEnd("ide");
  50273. pragmas: [],
  50274. messageSends: []
  50275. }, function ($methodClass){ return function (anObject){
  50276. var self=this,$self=this;
  50277. $self.property=anObject;
  50278. return self;
  50279. }; }),
  50280. $globals.JSSuperSendVisitor);
  50281. $core.addMethod(
  50282. $core.method({
  50283. selector: "selector",
  50284. protocol: "accessing",
  50285. //>>excludeStart("ide", pragmas.excludeIdeData);
  50286. args: [],
  50287. source: "selector\x0a\x09^ selector",
  50288. referencedClasses: [],
  50289. //>>excludeEnd("ide");
  50290. pragmas: [],
  50291. messageSends: []
  50292. }, function ($methodClass){ return function (){
  50293. var self=this,$self=this;
  50294. return $self.selector;
  50295. }; }),
  50296. $globals.JSSuperSendVisitor);
  50297. $core.addMethod(
  50298. $core.method({
  50299. selector: "selector:",
  50300. protocol: "accessing",
  50301. //>>excludeStart("ide", pragmas.excludeIdeData);
  50302. args: ["anObject"],
  50303. source: "selector: anObject\x0a\x09selector := anObject",
  50304. referencedClasses: [],
  50305. //>>excludeEnd("ide");
  50306. pragmas: [],
  50307. messageSends: []
  50308. }, function ($methodClass){ return function (anObject){
  50309. var self=this,$self=this;
  50310. $self.selector=anObject;
  50311. return self;
  50312. }; }),
  50313. $globals.JSSuperSendVisitor);
  50314. $core.addMethod(
  50315. $core.method({
  50316. selector: "switcherFrom:to:",
  50317. protocol: "accessing",
  50318. //>>excludeStart("ide", pragmas.excludeIdeData);
  50319. args: ["aCollection", "anotherCollection"],
  50320. source: "switcherFrom: aCollection to: anotherCollection\x0a\x09^ NativeFunction\x0a\x09\x09constructorNamed: #Function\x0a\x09\x09value: (',' join: aCollection)\x0a\x09\x09value: 'return [', (',' join: anotherCollection), ']'",
  50321. referencedClasses: ["NativeFunction"],
  50322. //>>excludeEnd("ide");
  50323. pragmas: [],
  50324. messageSends: ["constructorNamed:value:value:", "join:", ","]
  50325. }, function ($methodClass){ return function (aCollection,anotherCollection){
  50326. var self=this,$self=this;
  50327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50328. return $core.withContext(function($ctx1) {
  50329. //>>excludeEnd("ctx");
  50330. return $recv($globals.NativeFunction)._constructorNamed_value_value_("Function",[","._join_(aCollection)
  50331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50332. ,$ctx1.sendIdx["join:"]=1
  50333. //>>excludeEnd("ctx");
  50334. ][0],[$recv("return [".__comma(","._join_(anotherCollection))).__comma("]")
  50335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50336. ,$ctx1.sendIdx[","]=1
  50337. //>>excludeEnd("ctx");
  50338. ][0]);
  50339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50340. }, function($ctx1) {$ctx1.fill(self,"switcherFrom:to:",{aCollection:aCollection,anotherCollection:anotherCollection})});
  50341. //>>excludeEnd("ctx");
  50342. }; }),
  50343. $globals.JSSuperSendVisitor);
  50344. $core.addMethod(
  50345. $core.method({
  50346. selector: "visitMethodNode:",
  50347. protocol: "accessing",
  50348. //>>excludeStart("ide", pragmas.excludeIdeData);
  50349. args: ["aNode"],
  50350. source: "visitMethodNode: aNode\x0a\x09self selector: aNode selector.\x0a\x09self arguments: aNode arguments.\x0a\x09^ super visitMethodNode: aNode",
  50351. referencedClasses: [],
  50352. //>>excludeEnd("ide");
  50353. pragmas: [],
  50354. messageSends: ["selector:", "selector", "arguments:", "arguments", "visitMethodNode:"]
  50355. }, function ($methodClass){ return function (aNode){
  50356. var self=this,$self=this;
  50357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50358. return $core.withContext(function($ctx1) {
  50359. //>>excludeEnd("ctx");
  50360. $self._selector_($recv(aNode)._selector());
  50361. $self._arguments_($recv(aNode)._arguments());
  50362. return [(
  50363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50364. $ctx1.supercall = true,
  50365. //>>excludeEnd("ctx");
  50366. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitMethodNode_.call($self,aNode))
  50367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50368. ,$ctx1.supercall = false
  50369. //>>excludeEnd("ctx");
  50370. ][0];
  50371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50372. }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode})});
  50373. //>>excludeEnd("ctx");
  50374. }; }),
  50375. $globals.JSSuperSendVisitor);
  50376. $core.addMethod(
  50377. $core.method({
  50378. selector: "visitSendNode:",
  50379. protocol: "accessing",
  50380. //>>excludeStart("ide", pragmas.excludeIdeData);
  50381. args: ["aNode"],
  50382. source: "visitSendNode: aNode\x0a\x09| receiver |\x0a\x09receiver := aNode receiver.\x0a\x09receiver isSuper ifTrue: [\x0a\x09\x09aNode selector = self selector ifTrue: [\x0a\x09\x09\x09| old |\x0a\x09\x09\x09old := receiver binding.\x0a\x09\x09\x09receiver binding: (\x0a\x09\x09\x09\x09JavaScriptSuperVar new\x0a\x09\x09\x09\x09\x09scope: old scope;\x0a\x09\x09\x09\x09\x09name: old name;\x0a\x09\x09\x09\x09\x09yourself ).\x0a\x09\x09\x09self args ifNotNil: [ :myArgs |\x0a\x09\x09\x09\x09myArgs = self arguments ifFalse: [\x0a\x09\x09\x09\x09\x09aNode argumentSwitcher:\x0a\x09\x09\x09\x09\x09\x09(self switcherFrom: self arguments to: myArgs) ] ].\x0a\x09\x09\x09aNode javaScriptSelector: self property ] ].\x0a\x09^ super visitSendNode: aNode",
  50383. referencedClasses: ["JavaScriptSuperVar"],
  50384. //>>excludeEnd("ide");
  50385. pragmas: [],
  50386. messageSends: ["receiver", "ifTrue:", "isSuper", "=", "selector", "binding", "binding:", "scope:", "new", "scope", "name:", "name", "yourself", "ifNotNil:", "args", "ifFalse:", "arguments", "argumentSwitcher:", "switcherFrom:to:", "javaScriptSelector:", "property", "visitSendNode:"]
  50387. }, function ($methodClass){ return function (aNode){
  50388. var self=this,$self=this;
  50389. var receiver;
  50390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50391. return $core.withContext(function($ctx1) {
  50392. //>>excludeEnd("ctx");
  50393. var $1,$2,$3;
  50394. receiver=$recv(aNode)._receiver();
  50395. if($core.assert($recv(receiver)._isSuper())){
  50396. if($core.assert([$recv([$recv(aNode)._selector()
  50397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50398. ,$ctx1.sendIdx["selector"]=1
  50399. //>>excludeEnd("ctx");
  50400. ][0]).__eq($self._selector())
  50401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50402. ,$ctx1.sendIdx["="]=1
  50403. //>>excludeEnd("ctx");
  50404. ][0])){
  50405. var old;
  50406. old=$recv(receiver)._binding();
  50407. $1=receiver;
  50408. $2=$recv($globals.JavaScriptSuperVar)._new();
  50409. $recv($2)._scope_($recv(old)._scope());
  50410. $recv($2)._name_($recv(old)._name());
  50411. $recv($1)._binding_($recv($2)._yourself());
  50412. $3=$self._args();
  50413. if($3 == null || $3.a$nil){
  50414. $3;
  50415. } else {
  50416. var myArgs;
  50417. myArgs=$3;
  50418. if(!$core.assert($recv(myArgs).__eq([$self._arguments()
  50419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50420. ,$ctx1.sendIdx["arguments"]=1
  50421. //>>excludeEnd("ctx");
  50422. ][0]))){
  50423. $recv(aNode)._argumentSwitcher_($self._switcherFrom_to_($self._arguments(),myArgs));
  50424. }
  50425. }
  50426. $recv(aNode)._javaScriptSelector_($self._property());
  50427. }
  50428. }
  50429. return [(
  50430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50431. $ctx1.supercall = true,
  50432. //>>excludeEnd("ctx");
  50433. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSendNode_.call($self,aNode))
  50434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50435. ,$ctx1.supercall = false
  50436. //>>excludeEnd("ctx");
  50437. ][0];
  50438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50439. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,receiver:receiver})});
  50440. //>>excludeEnd("ctx");
  50441. }; }),
  50442. $globals.JSSuperSendVisitor);
  50443. $core.addClass("LexicalScope", $globals.Object, "Compiler-Semantic");
  50444. $core.setSlots($globals.LexicalScope, ["node", "instruction", "temps", "args", "outerScope", "blockIndex"]);
  50445. //>>excludeStart("ide", pragmas.excludeIdeData);
  50446. $globals.LexicalScope.comment="I represent a lexical scope where variable names are associated with ScopeVars\x0aInstances are used for block scopes. Method scopes are instances of MethodLexicalScope.\x0a\x0aI am attached to a ScopeVar and method/block nodes.\x0aEach context (method/closure) get a fresh scope that inherits from its outer scope.";
  50447. //>>excludeEnd("ide");
  50448. $core.addMethod(
  50449. $core.method({
  50450. selector: "addArg:",
  50451. protocol: "adding",
  50452. //>>excludeStart("ide", pragmas.excludeIdeData);
  50453. args: ["aString"],
  50454. source: "addArg: aString\x0a\x09self args at: aString put: (ArgVar on: aString).\x0a\x09(self args at: aString) scope: self",
  50455. referencedClasses: ["ArgVar"],
  50456. //>>excludeEnd("ide");
  50457. pragmas: [],
  50458. messageSends: ["at:put:", "args", "on:", "scope:", "at:"]
  50459. }, function ($methodClass){ return function (aString){
  50460. var self=this,$self=this;
  50461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50462. return $core.withContext(function($ctx1) {
  50463. //>>excludeEnd("ctx");
  50464. $recv([$self._args()
  50465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50466. ,$ctx1.sendIdx["args"]=1
  50467. //>>excludeEnd("ctx");
  50468. ][0])._at_put_(aString,$recv($globals.ArgVar)._on_(aString));
  50469. $recv($recv($self._args())._at_(aString))._scope_(self);
  50470. return self;
  50471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50472. }, function($ctx1) {$ctx1.fill(self,"addArg:",{aString:aString})});
  50473. //>>excludeEnd("ctx");
  50474. }; }),
  50475. $globals.LexicalScope);
  50476. $core.addMethod(
  50477. $core.method({
  50478. selector: "addTemp:",
  50479. protocol: "adding",
  50480. //>>excludeStart("ide", pragmas.excludeIdeData);
  50481. args: ["aString"],
  50482. source: "addTemp: aString\x0a\x09self temps at: aString put: (TempVar on: aString).\x0a\x09(self temps at: aString) scope: self",
  50483. referencedClasses: ["TempVar"],
  50484. //>>excludeEnd("ide");
  50485. pragmas: [],
  50486. messageSends: ["at:put:", "temps", "on:", "scope:", "at:"]
  50487. }, function ($methodClass){ return function (aString){
  50488. var self=this,$self=this;
  50489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50490. return $core.withContext(function($ctx1) {
  50491. //>>excludeEnd("ctx");
  50492. $recv([$self._temps()
  50493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50494. ,$ctx1.sendIdx["temps"]=1
  50495. //>>excludeEnd("ctx");
  50496. ][0])._at_put_(aString,$recv($globals.TempVar)._on_(aString));
  50497. $recv($recv($self._temps())._at_(aString))._scope_(self);
  50498. return self;
  50499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50500. }, function($ctx1) {$ctx1.fill(self,"addTemp:",{aString:aString})});
  50501. //>>excludeEnd("ctx");
  50502. }; }),
  50503. $globals.LexicalScope);
  50504. $core.addMethod(
  50505. $core.method({
  50506. selector: "alias",
  50507. protocol: "accessing",
  50508. //>>excludeStart("ide", pragmas.excludeIdeData);
  50509. args: [],
  50510. source: "alias\x0a\x09^ '$ctx', self scopeLevel asString",
  50511. referencedClasses: [],
  50512. //>>excludeEnd("ide");
  50513. pragmas: [],
  50514. messageSends: [",", "asString", "scopeLevel"]
  50515. }, function ($methodClass){ return function (){
  50516. var self=this,$self=this;
  50517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50518. return $core.withContext(function($ctx1) {
  50519. //>>excludeEnd("ctx");
  50520. return "$ctx".__comma($recv($self._scopeLevel())._asString());
  50521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50522. }, function($ctx1) {$ctx1.fill(self,"alias",{})});
  50523. //>>excludeEnd("ctx");
  50524. }; }),
  50525. $globals.LexicalScope);
  50526. $core.addMethod(
  50527. $core.method({
  50528. selector: "allVariableNames",
  50529. protocol: "accessing",
  50530. //>>excludeStart("ide", pragmas.excludeIdeData);
  50531. args: [],
  50532. source: "allVariableNames\x0a\x09^ self args keys, self temps keys",
  50533. referencedClasses: [],
  50534. //>>excludeEnd("ide");
  50535. pragmas: [],
  50536. messageSends: [",", "keys", "args", "temps"]
  50537. }, function ($methodClass){ return function (){
  50538. var self=this,$self=this;
  50539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50540. return $core.withContext(function($ctx1) {
  50541. //>>excludeEnd("ctx");
  50542. return $recv([$recv($self._args())._keys()
  50543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50544. ,$ctx1.sendIdx["keys"]=1
  50545. //>>excludeEnd("ctx");
  50546. ][0]).__comma($recv($self._temps())._keys());
  50547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50548. }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{})});
  50549. //>>excludeEnd("ctx");
  50550. }; }),
  50551. $globals.LexicalScope);
  50552. $core.addMethod(
  50553. $core.method({
  50554. selector: "args",
  50555. protocol: "accessing",
  50556. //>>excludeStart("ide", pragmas.excludeIdeData);
  50557. args: [],
  50558. source: "args\x0a\x09^ args ifNil: [ args := Dictionary new ]",
  50559. referencedClasses: ["Dictionary"],
  50560. //>>excludeEnd("ide");
  50561. pragmas: [],
  50562. messageSends: ["ifNil:", "new"]
  50563. }, function ($methodClass){ return function (){
  50564. var self=this,$self=this;
  50565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50566. return $core.withContext(function($ctx1) {
  50567. //>>excludeEnd("ctx");
  50568. var $1;
  50569. $1=$self.args;
  50570. if($1 == null || $1.a$nil){
  50571. $self.args=$recv($globals.Dictionary)._new();
  50572. return $self.args;
  50573. } else {
  50574. return $1;
  50575. }
  50576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50577. }, function($ctx1) {$ctx1.fill(self,"args",{})});
  50578. //>>excludeEnd("ctx");
  50579. }; }),
  50580. $globals.LexicalScope);
  50581. $core.addMethod(
  50582. $core.method({
  50583. selector: "bindingFor:",
  50584. protocol: "accessing",
  50585. //>>excludeStart("ide", pragmas.excludeIdeData);
  50586. args: ["aString"],
  50587. source: "bindingFor: aString\x0a\x09^ self pseudoVars at: aString ifAbsent: [\x0a\x09\x09self args at: aString ifAbsent: [\x0a\x09\x09\x09self temps at: aString ifAbsent: [ nil ]]]",
  50588. referencedClasses: [],
  50589. //>>excludeEnd("ide");
  50590. pragmas: [],
  50591. messageSends: ["at:ifAbsent:", "pseudoVars", "args", "temps"]
  50592. }, function ($methodClass){ return function (aString){
  50593. var self=this,$self=this;
  50594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50595. return $core.withContext(function($ctx1) {
  50596. //>>excludeEnd("ctx");
  50597. return [$recv($self._pseudoVars())._at_ifAbsent_(aString,(function(){
  50598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50599. return $core.withContext(function($ctx2) {
  50600. //>>excludeEnd("ctx");
  50601. return [$recv($self._args())._at_ifAbsent_(aString,(function(){
  50602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50603. return $core.withContext(function($ctx3) {
  50604. //>>excludeEnd("ctx");
  50605. return $recv($self._temps())._at_ifAbsent_(aString,(function(){
  50606. return nil;
  50607. }));
  50608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50609. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  50610. //>>excludeEnd("ctx");
  50611. }))
  50612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50613. ,$ctx2.sendIdx["at:ifAbsent:"]=2
  50614. //>>excludeEnd("ctx");
  50615. ][0];
  50616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50617. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  50618. //>>excludeEnd("ctx");
  50619. }))
  50620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50621. ,$ctx1.sendIdx["at:ifAbsent:"]=1
  50622. //>>excludeEnd("ctx");
  50623. ][0];
  50624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50625. }, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aString:aString})});
  50626. //>>excludeEnd("ctx");
  50627. }; }),
  50628. $globals.LexicalScope);
  50629. $core.addMethod(
  50630. $core.method({
  50631. selector: "blockIndex",
  50632. protocol: "accessing",
  50633. //>>excludeStart("ide", pragmas.excludeIdeData);
  50634. args: [],
  50635. source: "blockIndex\x0a\x09^ blockIndex ifNil: [ 0 ]",
  50636. referencedClasses: [],
  50637. //>>excludeEnd("ide");
  50638. pragmas: [],
  50639. messageSends: ["ifNil:"]
  50640. }, function ($methodClass){ return function (){
  50641. var self=this,$self=this;
  50642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50643. return $core.withContext(function($ctx1) {
  50644. //>>excludeEnd("ctx");
  50645. var $1;
  50646. $1=$self.blockIndex;
  50647. if($1 == null || $1.a$nil){
  50648. return (0);
  50649. } else {
  50650. return $1;
  50651. }
  50652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50653. }, function($ctx1) {$ctx1.fill(self,"blockIndex",{})});
  50654. //>>excludeEnd("ctx");
  50655. }; }),
  50656. $globals.LexicalScope);
  50657. $core.addMethod(
  50658. $core.method({
  50659. selector: "blockIndex:",
  50660. protocol: "accessing",
  50661. //>>excludeStart("ide", pragmas.excludeIdeData);
  50662. args: ["anInteger"],
  50663. source: "blockIndex: anInteger \x0a\x09blockIndex := anInteger",
  50664. referencedClasses: [],
  50665. //>>excludeEnd("ide");
  50666. pragmas: [],
  50667. messageSends: []
  50668. }, function ($methodClass){ return function (anInteger){
  50669. var self=this,$self=this;
  50670. $self.blockIndex=anInteger;
  50671. return self;
  50672. }; }),
  50673. $globals.LexicalScope);
  50674. $core.addMethod(
  50675. $core.method({
  50676. selector: "canFlattenNonLocalReturns",
  50677. protocol: "testing",
  50678. //>>excludeStart("ide", pragmas.excludeIdeData);
  50679. args: [],
  50680. source: "canFlattenNonLocalReturns\x0a\x09^ self isInlined and: [ self outerScope canFlattenNonLocalReturns ]",
  50681. referencedClasses: [],
  50682. //>>excludeEnd("ide");
  50683. pragmas: [],
  50684. messageSends: ["and:", "isInlined", "canFlattenNonLocalReturns", "outerScope"]
  50685. }, function ($methodClass){ return function (){
  50686. var self=this,$self=this;
  50687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50688. return $core.withContext(function($ctx1) {
  50689. //>>excludeEnd("ctx");
  50690. if($core.assert($self._isInlined())){
  50691. return $recv($self._outerScope())._canFlattenNonLocalReturns();
  50692. } else {
  50693. return false;
  50694. }
  50695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50696. }, function($ctx1) {$ctx1.fill(self,"canFlattenNonLocalReturns",{})});
  50697. //>>excludeEnd("ctx");
  50698. }; }),
  50699. $globals.LexicalScope);
  50700. $core.addMethod(
  50701. $core.method({
  50702. selector: "instruction",
  50703. protocol: "accessing",
  50704. //>>excludeStart("ide", pragmas.excludeIdeData);
  50705. args: [],
  50706. source: "instruction\x0a\x09^ instruction",
  50707. referencedClasses: [],
  50708. //>>excludeEnd("ide");
  50709. pragmas: [],
  50710. messageSends: []
  50711. }, function ($methodClass){ return function (){
  50712. var self=this,$self=this;
  50713. return $self.instruction;
  50714. }; }),
  50715. $globals.LexicalScope);
  50716. $core.addMethod(
  50717. $core.method({
  50718. selector: "instruction:",
  50719. protocol: "accessing",
  50720. //>>excludeStart("ide", pragmas.excludeIdeData);
  50721. args: ["anIRInstruction"],
  50722. source: "instruction: anIRInstruction\x0a\x09instruction := anIRInstruction",
  50723. referencedClasses: [],
  50724. //>>excludeEnd("ide");
  50725. pragmas: [],
  50726. messageSends: []
  50727. }, function ($methodClass){ return function (anIRInstruction){
  50728. var self=this,$self=this;
  50729. $self.instruction=anIRInstruction;
  50730. return self;
  50731. }; }),
  50732. $globals.LexicalScope);
  50733. $core.addMethod(
  50734. $core.method({
  50735. selector: "isBlockScope",
  50736. protocol: "testing",
  50737. //>>excludeStart("ide", pragmas.excludeIdeData);
  50738. args: [],
  50739. source: "isBlockScope\x0a\x09^ self isMethodScope not",
  50740. referencedClasses: [],
  50741. //>>excludeEnd("ide");
  50742. pragmas: [],
  50743. messageSends: ["not", "isMethodScope"]
  50744. }, function ($methodClass){ return function (){
  50745. var self=this,$self=this;
  50746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50747. return $core.withContext(function($ctx1) {
  50748. //>>excludeEnd("ctx");
  50749. return $recv($self._isMethodScope())._not();
  50750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50751. }, function($ctx1) {$ctx1.fill(self,"isBlockScope",{})});
  50752. //>>excludeEnd("ctx");
  50753. }; }),
  50754. $globals.LexicalScope);
  50755. $core.addMethod(
  50756. $core.method({
  50757. selector: "isInlined",
  50758. protocol: "testing",
  50759. //>>excludeStart("ide", pragmas.excludeIdeData);
  50760. args: [],
  50761. source: "isInlined\x0a\x09^ self instruction ifNil: [ false ] ifNotNil: [ :instr | instr isInlined ]",
  50762. referencedClasses: [],
  50763. //>>excludeEnd("ide");
  50764. pragmas: [],
  50765. messageSends: ["ifNil:ifNotNil:", "instruction", "isInlined"]
  50766. }, function ($methodClass){ return function (){
  50767. var self=this,$self=this;
  50768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50769. return $core.withContext(function($ctx1) {
  50770. //>>excludeEnd("ctx");
  50771. var $1;
  50772. $1=$self._instruction();
  50773. if($1 == null || $1.a$nil){
  50774. return false;
  50775. } else {
  50776. var instr;
  50777. instr=$1;
  50778. return $recv(instr)._isInlined();
  50779. }
  50780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50781. }, function($ctx1) {$ctx1.fill(self,"isInlined",{})});
  50782. //>>excludeEnd("ctx");
  50783. }; }),
  50784. $globals.LexicalScope);
  50785. $core.addMethod(
  50786. $core.method({
  50787. selector: "isMethodScope",
  50788. protocol: "testing",
  50789. //>>excludeStart("ide", pragmas.excludeIdeData);
  50790. args: [],
  50791. source: "isMethodScope\x0a\x09^ false",
  50792. referencedClasses: [],
  50793. //>>excludeEnd("ide");
  50794. pragmas: [],
  50795. messageSends: []
  50796. }, function ($methodClass){ return function (){
  50797. var self=this,$self=this;
  50798. return false;
  50799. }; }),
  50800. $globals.LexicalScope);
  50801. $core.addMethod(
  50802. $core.method({
  50803. selector: "lookupVariable:",
  50804. protocol: "accessing",
  50805. //>>excludeStart("ide", pragmas.excludeIdeData);
  50806. args: ["aString"],
  50807. source: "lookupVariable: aString\x0a\x09| lookup |\x0a\x09lookup := (self bindingFor: aString).\x0a\x09lookup ifNil: [\x0a\x09\x09lookup := self outerScope ifNotNil: [\x0a\x09\x09\x09(self outerScope lookupVariable: aString) ]].\x0a\x09^ lookup",
  50808. referencedClasses: [],
  50809. //>>excludeEnd("ide");
  50810. pragmas: [],
  50811. messageSends: ["bindingFor:", "ifNil:", "ifNotNil:", "outerScope", "lookupVariable:"]
  50812. }, function ($methodClass){ return function (aString){
  50813. var self=this,$self=this;
  50814. var lookup;
  50815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50816. return $core.withContext(function($ctx1) {
  50817. //>>excludeEnd("ctx");
  50818. var $1,$2;
  50819. lookup=$self._bindingFor_(aString);
  50820. $1=lookup;
  50821. if($1 == null || $1.a$nil){
  50822. $2=[$self._outerScope()
  50823. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50824. ,$ctx1.sendIdx["outerScope"]=1
  50825. //>>excludeEnd("ctx");
  50826. ][0];
  50827. if($2 == null || $2.a$nil){
  50828. lookup=$2;
  50829. } else {
  50830. lookup=$recv($self._outerScope())._lookupVariable_(aString);
  50831. }
  50832. lookup;
  50833. } else {
  50834. $1;
  50835. }
  50836. return lookup;
  50837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50838. }, function($ctx1) {$ctx1.fill(self,"lookupVariable:",{aString:aString,lookup:lookup})});
  50839. //>>excludeEnd("ctx");
  50840. }; }),
  50841. $globals.LexicalScope);
  50842. $core.addMethod(
  50843. $core.method({
  50844. selector: "methodScope",
  50845. protocol: "accessing",
  50846. //>>excludeStart("ide", pragmas.excludeIdeData);
  50847. args: [],
  50848. source: "methodScope\x0a\x09^ self outerScope ifNotNil: [\x0a\x09\x09self outerScope methodScope ]",
  50849. referencedClasses: [],
  50850. //>>excludeEnd("ide");
  50851. pragmas: [],
  50852. messageSends: ["ifNotNil:", "outerScope", "methodScope"]
  50853. }, function ($methodClass){ return function (){
  50854. var self=this,$self=this;
  50855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50856. return $core.withContext(function($ctx1) {
  50857. //>>excludeEnd("ctx");
  50858. var $1;
  50859. $1=[$self._outerScope()
  50860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50861. ,$ctx1.sendIdx["outerScope"]=1
  50862. //>>excludeEnd("ctx");
  50863. ][0];
  50864. if($1 == null || $1.a$nil){
  50865. return $1;
  50866. } else {
  50867. return $recv($self._outerScope())._methodScope();
  50868. }
  50869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50870. }, function($ctx1) {$ctx1.fill(self,"methodScope",{})});
  50871. //>>excludeEnd("ctx");
  50872. }; }),
  50873. $globals.LexicalScope);
  50874. $core.addMethod(
  50875. $core.method({
  50876. selector: "node",
  50877. protocol: "accessing",
  50878. //>>excludeStart("ide", pragmas.excludeIdeData);
  50879. args: [],
  50880. source: "node\x0a\x09\x22Answer the node in which I am defined\x22\x0a\x09\x0a\x09^ node",
  50881. referencedClasses: [],
  50882. //>>excludeEnd("ide");
  50883. pragmas: [],
  50884. messageSends: []
  50885. }, function ($methodClass){ return function (){
  50886. var self=this,$self=this;
  50887. return $self.node;
  50888. }; }),
  50889. $globals.LexicalScope);
  50890. $core.addMethod(
  50891. $core.method({
  50892. selector: "node:",
  50893. protocol: "accessing",
  50894. //>>excludeStart("ide", pragmas.excludeIdeData);
  50895. args: ["aNode"],
  50896. source: "node: aNode\x0a\x09node := aNode",
  50897. referencedClasses: [],
  50898. //>>excludeEnd("ide");
  50899. pragmas: [],
  50900. messageSends: []
  50901. }, function ($methodClass){ return function (aNode){
  50902. var self=this,$self=this;
  50903. $self.node=aNode;
  50904. return self;
  50905. }; }),
  50906. $globals.LexicalScope);
  50907. $core.addMethod(
  50908. $core.method({
  50909. selector: "outerScope",
  50910. protocol: "accessing",
  50911. //>>excludeStart("ide", pragmas.excludeIdeData);
  50912. args: [],
  50913. source: "outerScope\x0a\x09^ outerScope",
  50914. referencedClasses: [],
  50915. //>>excludeEnd("ide");
  50916. pragmas: [],
  50917. messageSends: []
  50918. }, function ($methodClass){ return function (){
  50919. var self=this,$self=this;
  50920. return $self.outerScope;
  50921. }; }),
  50922. $globals.LexicalScope);
  50923. $core.addMethod(
  50924. $core.method({
  50925. selector: "outerScope:",
  50926. protocol: "accessing",
  50927. //>>excludeStart("ide", pragmas.excludeIdeData);
  50928. args: ["aLexicalScope"],
  50929. source: "outerScope: aLexicalScope\x0a\x09outerScope := aLexicalScope",
  50930. referencedClasses: [],
  50931. //>>excludeEnd("ide");
  50932. pragmas: [],
  50933. messageSends: []
  50934. }, function ($methodClass){ return function (aLexicalScope){
  50935. var self=this,$self=this;
  50936. $self.outerScope=aLexicalScope;
  50937. return self;
  50938. }; }),
  50939. $globals.LexicalScope);
  50940. $core.addMethod(
  50941. $core.method({
  50942. selector: "pseudoVars",
  50943. protocol: "accessing",
  50944. //>>excludeStart("ide", pragmas.excludeIdeData);
  50945. args: [],
  50946. source: "pseudoVars\x0a\x09^ self methodScope pseudoVars",
  50947. referencedClasses: [],
  50948. //>>excludeEnd("ide");
  50949. pragmas: [],
  50950. messageSends: ["pseudoVars", "methodScope"]
  50951. }, function ($methodClass){ return function (){
  50952. var self=this,$self=this;
  50953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50954. return $core.withContext(function($ctx1) {
  50955. //>>excludeEnd("ctx");
  50956. return $recv($self._methodScope())._pseudoVars();
  50957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50958. }, function($ctx1) {$ctx1.fill(self,"pseudoVars",{})});
  50959. //>>excludeEnd("ctx");
  50960. }; }),
  50961. $globals.LexicalScope);
  50962. $core.addMethod(
  50963. $core.method({
  50964. selector: "scopeLevel",
  50965. protocol: "accessing",
  50966. //>>excludeStart("ide", pragmas.excludeIdeData);
  50967. args: [],
  50968. source: "scopeLevel\x0a\x09self outerScope ifNil: [ ^ 1 ].\x0a\x09self isInlined ifTrue: [ ^ self outerScope scopeLevel ].\x0a\x09\x0a\x09^ self outerScope scopeLevel + 1",
  50969. referencedClasses: [],
  50970. //>>excludeEnd("ide");
  50971. pragmas: [],
  50972. messageSends: ["ifNil:", "outerScope", "ifTrue:", "isInlined", "scopeLevel", "+"]
  50973. }, function ($methodClass){ return function (){
  50974. var self=this,$self=this;
  50975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50976. return $core.withContext(function($ctx1) {
  50977. //>>excludeEnd("ctx");
  50978. var $1;
  50979. $1=[$self._outerScope()
  50980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50981. ,$ctx1.sendIdx["outerScope"]=1
  50982. //>>excludeEnd("ctx");
  50983. ][0];
  50984. if($1 == null || $1.a$nil){
  50985. return (1);
  50986. } else {
  50987. $1;
  50988. }
  50989. if($core.assert($self._isInlined())){
  50990. return [$recv([$self._outerScope()
  50991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50992. ,$ctx1.sendIdx["outerScope"]=2
  50993. //>>excludeEnd("ctx");
  50994. ][0])._scopeLevel()
  50995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  50996. ,$ctx1.sendIdx["scopeLevel"]=1
  50997. //>>excludeEnd("ctx");
  50998. ][0];
  50999. }
  51000. return $recv($recv($self._outerScope())._scopeLevel()).__plus((1));
  51001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51002. }, function($ctx1) {$ctx1.fill(self,"scopeLevel",{})});
  51003. //>>excludeEnd("ctx");
  51004. }; }),
  51005. $globals.LexicalScope);
  51006. $core.addMethod(
  51007. $core.method({
  51008. selector: "temps",
  51009. protocol: "accessing",
  51010. //>>excludeStart("ide", pragmas.excludeIdeData);
  51011. args: [],
  51012. source: "temps\x0a\x09^ temps ifNil: [ temps := Dictionary new ]",
  51013. referencedClasses: ["Dictionary"],
  51014. //>>excludeEnd("ide");
  51015. pragmas: [],
  51016. messageSends: ["ifNil:", "new"]
  51017. }, function ($methodClass){ return function (){
  51018. var self=this,$self=this;
  51019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51020. return $core.withContext(function($ctx1) {
  51021. //>>excludeEnd("ctx");
  51022. var $1;
  51023. $1=$self.temps;
  51024. if($1 == null || $1.a$nil){
  51025. $self.temps=$recv($globals.Dictionary)._new();
  51026. return $self.temps;
  51027. } else {
  51028. return $1;
  51029. }
  51030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51031. }, function($ctx1) {$ctx1.fill(self,"temps",{})});
  51032. //>>excludeEnd("ctx");
  51033. }; }),
  51034. $globals.LexicalScope);
  51035. $core.addClass("MethodLexicalScope", $globals.LexicalScope, "Compiler-Semantic");
  51036. $core.setSlots($globals.MethodLexicalScope, ["slotVars", "pseudoVars", "localReturn", "nonLocalReturns"]);
  51037. //>>excludeStart("ide", pragmas.excludeIdeData);
  51038. $globals.MethodLexicalScope.comment="I represent a method scope.";
  51039. //>>excludeEnd("ide");
  51040. $core.addMethod(
  51041. $core.method({
  51042. selector: "addNonLocalReturn:",
  51043. protocol: "adding",
  51044. //>>excludeStart("ide", pragmas.excludeIdeData);
  51045. args: ["aScope"],
  51046. source: "addNonLocalReturn: aScope\x0a\x09self nonLocalReturns add: aScope",
  51047. referencedClasses: [],
  51048. //>>excludeEnd("ide");
  51049. pragmas: [],
  51050. messageSends: ["add:", "nonLocalReturns"]
  51051. }, function ($methodClass){ return function (aScope){
  51052. var self=this,$self=this;
  51053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51054. return $core.withContext(function($ctx1) {
  51055. //>>excludeEnd("ctx");
  51056. $recv($self._nonLocalReturns())._add_(aScope);
  51057. return self;
  51058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51059. }, function($ctx1) {$ctx1.fill(self,"addNonLocalReturn:",{aScope:aScope})});
  51060. //>>excludeEnd("ctx");
  51061. }; }),
  51062. $globals.MethodLexicalScope);
  51063. $core.addMethod(
  51064. $core.method({
  51065. selector: "addSlotVar:",
  51066. protocol: "adding",
  51067. //>>excludeStart("ide", pragmas.excludeIdeData);
  51068. args: ["aString"],
  51069. source: "addSlotVar: aString\x0a\x09self slotVars at: aString put: (SlotVar on: aString).\x0a\x09(self slotVars at: aString) scope: self",
  51070. referencedClasses: ["SlotVar"],
  51071. //>>excludeEnd("ide");
  51072. pragmas: [],
  51073. messageSends: ["at:put:", "slotVars", "on:", "scope:", "at:"]
  51074. }, function ($methodClass){ return function (aString){
  51075. var self=this,$self=this;
  51076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51077. return $core.withContext(function($ctx1) {
  51078. //>>excludeEnd("ctx");
  51079. $recv([$self._slotVars()
  51080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51081. ,$ctx1.sendIdx["slotVars"]=1
  51082. //>>excludeEnd("ctx");
  51083. ][0])._at_put_(aString,$recv($globals.SlotVar)._on_(aString));
  51084. $recv($recv($self._slotVars())._at_(aString))._scope_(self);
  51085. return self;
  51086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51087. }, function($ctx1) {$ctx1.fill(self,"addSlotVar:",{aString:aString})});
  51088. //>>excludeEnd("ctx");
  51089. }; }),
  51090. $globals.MethodLexicalScope);
  51091. $core.addMethod(
  51092. $core.method({
  51093. selector: "allVariableNames",
  51094. protocol: "accessing",
  51095. //>>excludeStart("ide", pragmas.excludeIdeData);
  51096. args: [],
  51097. source: "allVariableNames\x0a\x09^ super allVariableNames, self slotVars keys",
  51098. referencedClasses: [],
  51099. //>>excludeEnd("ide");
  51100. pragmas: [],
  51101. messageSends: [",", "allVariableNames", "keys", "slotVars"]
  51102. }, function ($methodClass){ return function (){
  51103. var self=this,$self=this;
  51104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51105. return $core.withContext(function($ctx1) {
  51106. //>>excludeEnd("ctx");
  51107. return $recv([(
  51108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51109. $ctx1.supercall = true,
  51110. //>>excludeEnd("ctx");
  51111. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._allVariableNames.call($self))
  51112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51113. ,$ctx1.supercall = false
  51114. //>>excludeEnd("ctx");
  51115. ][0]).__comma($recv($self._slotVars())._keys());
  51116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51117. }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{})});
  51118. //>>excludeEnd("ctx");
  51119. }; }),
  51120. $globals.MethodLexicalScope);
  51121. $core.addMethod(
  51122. $core.method({
  51123. selector: "bindingFor:",
  51124. protocol: "accessing",
  51125. //>>excludeStart("ide", pragmas.excludeIdeData);
  51126. args: ["aString"],
  51127. source: "bindingFor: aString\x0a\x09^ (super bindingFor: aString) ifNil: [\x0a\x09\x09self slotVars at: aString ifAbsent: [ nil ]]",
  51128. referencedClasses: [],
  51129. //>>excludeEnd("ide");
  51130. pragmas: [],
  51131. messageSends: ["ifNil:", "bindingFor:", "at:ifAbsent:", "slotVars"]
  51132. }, function ($methodClass){ return function (aString){
  51133. var self=this,$self=this;
  51134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51135. return $core.withContext(function($ctx1) {
  51136. //>>excludeEnd("ctx");
  51137. var $1;
  51138. $1=[(
  51139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51140. $ctx1.supercall = true,
  51141. //>>excludeEnd("ctx");
  51142. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._bindingFor_.call($self,aString))
  51143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51144. ,$ctx1.supercall = false
  51145. //>>excludeEnd("ctx");
  51146. ][0];
  51147. if($1 == null || $1.a$nil){
  51148. return $recv($self._slotVars())._at_ifAbsent_(aString,(function(){
  51149. return nil;
  51150. }));
  51151. } else {
  51152. return $1;
  51153. }
  51154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51155. }, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aString:aString})});
  51156. //>>excludeEnd("ctx");
  51157. }; }),
  51158. $globals.MethodLexicalScope);
  51159. $core.addMethod(
  51160. $core.method({
  51161. selector: "canFlattenNonLocalReturns",
  51162. protocol: "testing",
  51163. //>>excludeStart("ide", pragmas.excludeIdeData);
  51164. args: [],
  51165. source: "canFlattenNonLocalReturns\x0a\x09^ true",
  51166. referencedClasses: [],
  51167. //>>excludeEnd("ide");
  51168. pragmas: [],
  51169. messageSends: []
  51170. }, function ($methodClass){ return function (){
  51171. var self=this,$self=this;
  51172. return true;
  51173. }; }),
  51174. $globals.MethodLexicalScope);
  51175. $core.addMethod(
  51176. $core.method({
  51177. selector: "hasLocalReturn",
  51178. protocol: "testing",
  51179. //>>excludeStart("ide", pragmas.excludeIdeData);
  51180. args: [],
  51181. source: "hasLocalReturn\x0a\x09^ self localReturn",
  51182. referencedClasses: [],
  51183. //>>excludeEnd("ide");
  51184. pragmas: [],
  51185. messageSends: ["localReturn"]
  51186. }, function ($methodClass){ return function (){
  51187. var self=this,$self=this;
  51188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51189. return $core.withContext(function($ctx1) {
  51190. //>>excludeEnd("ctx");
  51191. return $self._localReturn();
  51192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51193. }, function($ctx1) {$ctx1.fill(self,"hasLocalReturn",{})});
  51194. //>>excludeEnd("ctx");
  51195. }; }),
  51196. $globals.MethodLexicalScope);
  51197. $core.addMethod(
  51198. $core.method({
  51199. selector: "hasNonLocalReturn",
  51200. protocol: "testing",
  51201. //>>excludeStart("ide", pragmas.excludeIdeData);
  51202. args: [],
  51203. source: "hasNonLocalReturn\x0a\x09^ self nonLocalReturns notEmpty",
  51204. referencedClasses: [],
  51205. //>>excludeEnd("ide");
  51206. pragmas: [],
  51207. messageSends: ["notEmpty", "nonLocalReturns"]
  51208. }, function ($methodClass){ return function (){
  51209. var self=this,$self=this;
  51210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51211. return $core.withContext(function($ctx1) {
  51212. //>>excludeEnd("ctx");
  51213. return $recv($self._nonLocalReturns())._notEmpty();
  51214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51215. }, function($ctx1) {$ctx1.fill(self,"hasNonLocalReturn",{})});
  51216. //>>excludeEnd("ctx");
  51217. }; }),
  51218. $globals.MethodLexicalScope);
  51219. $core.addMethod(
  51220. $core.method({
  51221. selector: "isMethodScope",
  51222. protocol: "testing",
  51223. //>>excludeStart("ide", pragmas.excludeIdeData);
  51224. args: [],
  51225. source: "isMethodScope\x0a\x09^ true",
  51226. referencedClasses: [],
  51227. //>>excludeEnd("ide");
  51228. pragmas: [],
  51229. messageSends: []
  51230. }, function ($methodClass){ return function (){
  51231. var self=this,$self=this;
  51232. return true;
  51233. }; }),
  51234. $globals.MethodLexicalScope);
  51235. $core.addMethod(
  51236. $core.method({
  51237. selector: "localReturn",
  51238. protocol: "accessing",
  51239. //>>excludeStart("ide", pragmas.excludeIdeData);
  51240. args: [],
  51241. source: "localReturn\x0a\x09^ localReturn ifNil: [ false ]",
  51242. referencedClasses: [],
  51243. //>>excludeEnd("ide");
  51244. pragmas: [],
  51245. messageSends: ["ifNil:"]
  51246. }, function ($methodClass){ return function (){
  51247. var self=this,$self=this;
  51248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51249. return $core.withContext(function($ctx1) {
  51250. //>>excludeEnd("ctx");
  51251. var $1;
  51252. $1=$self.localReturn;
  51253. if($1 == null || $1.a$nil){
  51254. return false;
  51255. } else {
  51256. return $1;
  51257. }
  51258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51259. }, function($ctx1) {$ctx1.fill(self,"localReturn",{})});
  51260. //>>excludeEnd("ctx");
  51261. }; }),
  51262. $globals.MethodLexicalScope);
  51263. $core.addMethod(
  51264. $core.method({
  51265. selector: "localReturn:",
  51266. protocol: "accessing",
  51267. //>>excludeStart("ide", pragmas.excludeIdeData);
  51268. args: ["aBoolean"],
  51269. source: "localReturn: aBoolean\x0a\x09localReturn := aBoolean",
  51270. referencedClasses: [],
  51271. //>>excludeEnd("ide");
  51272. pragmas: [],
  51273. messageSends: []
  51274. }, function ($methodClass){ return function (aBoolean){
  51275. var self=this,$self=this;
  51276. $self.localReturn=aBoolean;
  51277. return self;
  51278. }; }),
  51279. $globals.MethodLexicalScope);
  51280. $core.addMethod(
  51281. $core.method({
  51282. selector: "methodScope",
  51283. protocol: "accessing",
  51284. //>>excludeStart("ide", pragmas.excludeIdeData);
  51285. args: [],
  51286. source: "methodScope\x0a\x09^ self",
  51287. referencedClasses: [],
  51288. //>>excludeEnd("ide");
  51289. pragmas: [],
  51290. messageSends: []
  51291. }, function ($methodClass){ return function (){
  51292. var self=this,$self=this;
  51293. return self;
  51294. }; }),
  51295. $globals.MethodLexicalScope);
  51296. $core.addMethod(
  51297. $core.method({
  51298. selector: "nonLocalReturns",
  51299. protocol: "accessing",
  51300. //>>excludeStart("ide", pragmas.excludeIdeData);
  51301. args: [],
  51302. source: "nonLocalReturns\x0a\x09^ nonLocalReturns ifNil: [ nonLocalReturns := OrderedCollection new ]",
  51303. referencedClasses: ["OrderedCollection"],
  51304. //>>excludeEnd("ide");
  51305. pragmas: [],
  51306. messageSends: ["ifNil:", "new"]
  51307. }, function ($methodClass){ return function (){
  51308. var self=this,$self=this;
  51309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51310. return $core.withContext(function($ctx1) {
  51311. //>>excludeEnd("ctx");
  51312. var $1;
  51313. $1=$self.nonLocalReturns;
  51314. if($1 == null || $1.a$nil){
  51315. $self.nonLocalReturns=$recv($globals.OrderedCollection)._new();
  51316. return $self.nonLocalReturns;
  51317. } else {
  51318. return $1;
  51319. }
  51320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51321. }, function($ctx1) {$ctx1.fill(self,"nonLocalReturns",{})});
  51322. //>>excludeEnd("ctx");
  51323. }; }),
  51324. $globals.MethodLexicalScope);
  51325. $core.addMethod(
  51326. $core.method({
  51327. selector: "pseudoVars",
  51328. protocol: "accessing",
  51329. //>>excludeStart("ide", pragmas.excludeIdeData);
  51330. args: [],
  51331. source: "pseudoVars\x0a\x09pseudoVars ifNil: [\x0a\x09\x09pseudoVars := Dictionary new.\x0a\x09\x09PseudoVar dictionary keysAndValuesDo: [ :each :impl |\x0a\x09\x09\x09pseudoVars at: each put: ((impl on: each)\x0a\x09\x09\x09\x09scope: self methodScope;\x0a\x09\x09\x09\x09yourself) ] ].\x0a\x09^ pseudoVars",
  51332. referencedClasses: ["Dictionary", "PseudoVar"],
  51333. //>>excludeEnd("ide");
  51334. pragmas: [],
  51335. messageSends: ["ifNil:", "new", "keysAndValuesDo:", "dictionary", "at:put:", "scope:", "on:", "methodScope", "yourself"]
  51336. }, function ($methodClass){ return function (){
  51337. var self=this,$self=this;
  51338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51339. return $core.withContext(function($ctx1) {
  51340. //>>excludeEnd("ctx");
  51341. var $1,$2,$3;
  51342. $1=$self.pseudoVars;
  51343. if($1 == null || $1.a$nil){
  51344. $self.pseudoVars=$recv($globals.Dictionary)._new();
  51345. $recv($recv($globals.PseudoVar)._dictionary())._keysAndValuesDo_((function(each,impl){
  51346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51347. return $core.withContext(function($ctx2) {
  51348. //>>excludeEnd("ctx");
  51349. $2=$self.pseudoVars;
  51350. $3=$recv(impl)._on_(each);
  51351. $recv($3)._scope_($self._methodScope());
  51352. return $recv($2)._at_put_(each,$recv($3)._yourself());
  51353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51354. }, function($ctx2) {$ctx2.fillBlock({each:each,impl:impl},$ctx1,2)});
  51355. //>>excludeEnd("ctx");
  51356. }));
  51357. } else {
  51358. $1;
  51359. }
  51360. return $self.pseudoVars;
  51361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51362. }, function($ctx1) {$ctx1.fill(self,"pseudoVars",{})});
  51363. //>>excludeEnd("ctx");
  51364. }; }),
  51365. $globals.MethodLexicalScope);
  51366. $core.addMethod(
  51367. $core.method({
  51368. selector: "removeNonLocalReturn:",
  51369. protocol: "adding",
  51370. //>>excludeStart("ide", pragmas.excludeIdeData);
  51371. args: ["aScope"],
  51372. source: "removeNonLocalReturn: aScope\x0a\x09self nonLocalReturns remove: aScope ifAbsent: []",
  51373. referencedClasses: [],
  51374. //>>excludeEnd("ide");
  51375. pragmas: [],
  51376. messageSends: ["remove:ifAbsent:", "nonLocalReturns"]
  51377. }, function ($methodClass){ return function (aScope){
  51378. var self=this,$self=this;
  51379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51380. return $core.withContext(function($ctx1) {
  51381. //>>excludeEnd("ctx");
  51382. $recv($self._nonLocalReturns())._remove_ifAbsent_(aScope,(function(){
  51383. }));
  51384. return self;
  51385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51386. }, function($ctx1) {$ctx1.fill(self,"removeNonLocalReturn:",{aScope:aScope})});
  51387. //>>excludeEnd("ctx");
  51388. }; }),
  51389. $globals.MethodLexicalScope);
  51390. $core.addMethod(
  51391. $core.method({
  51392. selector: "slotVars",
  51393. protocol: "accessing",
  51394. //>>excludeStart("ide", pragmas.excludeIdeData);
  51395. args: [],
  51396. source: "slotVars\x0a\x09^ slotVars ifNil: [ slotVars := Dictionary new ]",
  51397. referencedClasses: ["Dictionary"],
  51398. //>>excludeEnd("ide");
  51399. pragmas: [],
  51400. messageSends: ["ifNil:", "new"]
  51401. }, function ($methodClass){ return function (){
  51402. var self=this,$self=this;
  51403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51404. return $core.withContext(function($ctx1) {
  51405. //>>excludeEnd("ctx");
  51406. var $1;
  51407. $1=$self.slotVars;
  51408. if($1 == null || $1.a$nil){
  51409. $self.slotVars=$recv($globals.Dictionary)._new();
  51410. return $self.slotVars;
  51411. } else {
  51412. return $1;
  51413. }
  51414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51415. }, function($ctx1) {$ctx1.fill(self,"slotVars",{})});
  51416. //>>excludeEnd("ctx");
  51417. }; }),
  51418. $globals.MethodLexicalScope);
  51419. $core.addClass("ScopeVar", $globals.Object, "Compiler-Semantic");
  51420. $core.setSlots($globals.ScopeVar, ["scope", "name"]);
  51421. //>>excludeStart("ide", pragmas.excludeIdeData);
  51422. $globals.ScopeVar.comment="I am an entry in a LexicalScope that gets associated with variable nodes of the same name.\x0aThere are 4 different subclasses of vars: temp vars, local vars, args, and unknown/global vars.";
  51423. //>>excludeEnd("ide");
  51424. $core.addMethod(
  51425. $core.method({
  51426. selector: "alias",
  51427. protocol: "accessing",
  51428. //>>excludeStart("ide", pragmas.excludeIdeData);
  51429. args: [],
  51430. source: "alias\x0a\x09^ self name asVariableName",
  51431. referencedClasses: [],
  51432. //>>excludeEnd("ide");
  51433. pragmas: [],
  51434. messageSends: ["asVariableName", "name"]
  51435. }, function ($methodClass){ return function (){
  51436. var self=this,$self=this;
  51437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51438. return $core.withContext(function($ctx1) {
  51439. //>>excludeEnd("ctx");
  51440. return $recv($self._name())._asVariableName();
  51441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51442. }, function($ctx1) {$ctx1.fill(self,"alias",{})});
  51443. //>>excludeEnd("ctx");
  51444. }; }),
  51445. $globals.ScopeVar);
  51446. $core.addMethod(
  51447. $core.method({
  51448. selector: "isAssignable",
  51449. protocol: "testing",
  51450. //>>excludeStart("ide", pragmas.excludeIdeData);
  51451. args: [],
  51452. source: "isAssignable\x0a\x09^ false",
  51453. referencedClasses: [],
  51454. //>>excludeEnd("ide");
  51455. pragmas: [],
  51456. messageSends: []
  51457. }, function ($methodClass){ return function (){
  51458. var self=this,$self=this;
  51459. return false;
  51460. }; }),
  51461. $globals.ScopeVar);
  51462. $core.addMethod(
  51463. $core.method({
  51464. selector: "isIdempotent",
  51465. protocol: "testing",
  51466. //>>excludeStart("ide", pragmas.excludeIdeData);
  51467. args: [],
  51468. source: "isIdempotent\x0a\x09^ false",
  51469. referencedClasses: [],
  51470. //>>excludeEnd("ide");
  51471. pragmas: [],
  51472. messageSends: []
  51473. }, function ($methodClass){ return function (){
  51474. var self=this,$self=this;
  51475. return false;
  51476. }; }),
  51477. $globals.ScopeVar);
  51478. $core.addMethod(
  51479. $core.method({
  51480. selector: "isImmutable",
  51481. protocol: "testing",
  51482. //>>excludeStart("ide", pragmas.excludeIdeData);
  51483. args: [],
  51484. source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.\x0a\x09^ self isIdempotent",
  51485. referencedClasses: [],
  51486. //>>excludeEnd("ide");
  51487. pragmas: [],
  51488. messageSends: ["deprecatedAPI:", "isIdempotent"]
  51489. }, function ($methodClass){ return function (){
  51490. var self=this,$self=this;
  51491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51492. return $core.withContext(function($ctx1) {
  51493. //>>excludeEnd("ctx");
  51494. $self._deprecatedAPI_("Use #isIdempotent / #isAssignable not instead.");
  51495. return $self._isIdempotent();
  51496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51497. }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
  51498. //>>excludeEnd("ctx");
  51499. }; }),
  51500. $globals.ScopeVar);
  51501. $core.addMethod(
  51502. $core.method({
  51503. selector: "isSuper",
  51504. protocol: "testing",
  51505. //>>excludeStart("ide", pragmas.excludeIdeData);
  51506. args: [],
  51507. source: "isSuper\x0a\x09^ false",
  51508. referencedClasses: [],
  51509. //>>excludeEnd("ide");
  51510. pragmas: [],
  51511. messageSends: []
  51512. }, function ($methodClass){ return function (){
  51513. var self=this,$self=this;
  51514. return false;
  51515. }; }),
  51516. $globals.ScopeVar);
  51517. $core.addMethod(
  51518. $core.method({
  51519. selector: "name",
  51520. protocol: "accessing",
  51521. //>>excludeStart("ide", pragmas.excludeIdeData);
  51522. args: [],
  51523. source: "name\x0a\x09^ name",
  51524. referencedClasses: [],
  51525. //>>excludeEnd("ide");
  51526. pragmas: [],
  51527. messageSends: []
  51528. }, function ($methodClass){ return function (){
  51529. var self=this,$self=this;
  51530. return $self.name;
  51531. }; }),
  51532. $globals.ScopeVar);
  51533. $core.addMethod(
  51534. $core.method({
  51535. selector: "name:",
  51536. protocol: "accessing",
  51537. //>>excludeStart("ide", pragmas.excludeIdeData);
  51538. args: ["aString"],
  51539. source: "name: aString\x0a\x09name := aString",
  51540. referencedClasses: [],
  51541. //>>excludeEnd("ide");
  51542. pragmas: [],
  51543. messageSends: []
  51544. }, function ($methodClass){ return function (aString){
  51545. var self=this,$self=this;
  51546. $self.name=aString;
  51547. return self;
  51548. }; }),
  51549. $globals.ScopeVar);
  51550. $core.addMethod(
  51551. $core.method({
  51552. selector: "scope",
  51553. protocol: "accessing",
  51554. //>>excludeStart("ide", pragmas.excludeIdeData);
  51555. args: [],
  51556. source: "scope\x0a\x09^ scope",
  51557. referencedClasses: [],
  51558. //>>excludeEnd("ide");
  51559. pragmas: [],
  51560. messageSends: []
  51561. }, function ($methodClass){ return function (){
  51562. var self=this,$self=this;
  51563. return $self.scope;
  51564. }; }),
  51565. $globals.ScopeVar);
  51566. $core.addMethod(
  51567. $core.method({
  51568. selector: "scope:",
  51569. protocol: "accessing",
  51570. //>>excludeStart("ide", pragmas.excludeIdeData);
  51571. args: ["aScope"],
  51572. source: "scope: aScope\x0a\x09scope := aScope",
  51573. referencedClasses: [],
  51574. //>>excludeEnd("ide");
  51575. pragmas: [],
  51576. messageSends: []
  51577. }, function ($methodClass){ return function (aScope){
  51578. var self=this,$self=this;
  51579. $self.scope=aScope;
  51580. return self;
  51581. }; }),
  51582. $globals.ScopeVar);
  51583. $core.addMethod(
  51584. $core.method({
  51585. selector: "on:",
  51586. protocol: "instance creation",
  51587. //>>excludeStart("ide", pragmas.excludeIdeData);
  51588. args: ["aString"],
  51589. source: "on: aString\x0a\x09^ self new\x0a\x09\x09name: aString;\x0a\x09\x09yourself",
  51590. referencedClasses: [],
  51591. //>>excludeEnd("ide");
  51592. pragmas: [],
  51593. messageSends: ["name:", "new", "yourself"]
  51594. }, function ($methodClass){ return function (aString){
  51595. var self=this,$self=this;
  51596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51597. return $core.withContext(function($ctx1) {
  51598. //>>excludeEnd("ctx");
  51599. var $1;
  51600. $1=$self._new();
  51601. $recv($1)._name_(aString);
  51602. return $recv($1)._yourself();
  51603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51604. }, function($ctx1) {$ctx1.fill(self,"on:",{aString:aString})});
  51605. //>>excludeEnd("ctx");
  51606. }; }),
  51607. $globals.ScopeVar.a$cls);
  51608. $core.addClass("AliasVar", $globals.ScopeVar, "Compiler-Semantic");
  51609. //>>excludeStart("ide", pragmas.excludeIdeData);
  51610. $globals.AliasVar.comment="I am an internally defined variable by the compiler";
  51611. //>>excludeEnd("ide");
  51612. $core.addMethod(
  51613. $core.method({
  51614. selector: "isAssignable",
  51615. protocol: "testing",
  51616. //>>excludeStart("ide", pragmas.excludeIdeData);
  51617. args: [],
  51618. source: "isAssignable\x0a\x09self error: 'Alias variable is internal, it should never appear in normal variable context.'",
  51619. referencedClasses: [],
  51620. //>>excludeEnd("ide");
  51621. pragmas: [],
  51622. messageSends: ["error:"]
  51623. }, function ($methodClass){ return function (){
  51624. var self=this,$self=this;
  51625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51626. return $core.withContext(function($ctx1) {
  51627. //>>excludeEnd("ctx");
  51628. $self._error_("Alias variable is internal, it should never appear in normal variable context.");
  51629. return self;
  51630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51631. }, function($ctx1) {$ctx1.fill(self,"isAssignable",{})});
  51632. //>>excludeEnd("ctx");
  51633. }; }),
  51634. $globals.AliasVar);
  51635. $core.addMethod(
  51636. $core.method({
  51637. selector: "isIdempotent",
  51638. protocol: "testing",
  51639. //>>excludeStart("ide", pragmas.excludeIdeData);
  51640. args: [],
  51641. source: "isIdempotent\x0a\x09^ true",
  51642. referencedClasses: [],
  51643. //>>excludeEnd("ide");
  51644. pragmas: [],
  51645. messageSends: []
  51646. }, function ($methodClass){ return function (){
  51647. var self=this,$self=this;
  51648. return true;
  51649. }; }),
  51650. $globals.AliasVar);
  51651. $core.addClass("ArgVar", $globals.ScopeVar, "Compiler-Semantic");
  51652. //>>excludeStart("ide", pragmas.excludeIdeData);
  51653. $globals.ArgVar.comment="I am an argument of a method or block.";
  51654. //>>excludeEnd("ide");
  51655. $core.addMethod(
  51656. $core.method({
  51657. selector: "isIdempotent",
  51658. protocol: "testing",
  51659. //>>excludeStart("ide", pragmas.excludeIdeData);
  51660. args: [],
  51661. source: "isIdempotent\x0a\x09^ true",
  51662. referencedClasses: [],
  51663. //>>excludeEnd("ide");
  51664. pragmas: [],
  51665. messageSends: []
  51666. }, function ($methodClass){ return function (){
  51667. var self=this,$self=this;
  51668. return true;
  51669. }; }),
  51670. $globals.ArgVar);
  51671. $core.addClass("ClassRefVar", $globals.ScopeVar, "Compiler-Semantic");
  51672. //>>excludeStart("ide", pragmas.excludeIdeData);
  51673. $globals.ClassRefVar.comment="I am an class reference variable";
  51674. //>>excludeEnd("ide");
  51675. $core.addMethod(
  51676. $core.method({
  51677. selector: "alias",
  51678. protocol: "accessing",
  51679. //>>excludeStart("ide", pragmas.excludeIdeData);
  51680. args: [],
  51681. source: "alias\x0a\x09^ '$globals.', self name",
  51682. referencedClasses: [],
  51683. //>>excludeEnd("ide");
  51684. pragmas: [],
  51685. messageSends: [",", "name"]
  51686. }, function ($methodClass){ return function (){
  51687. var self=this,$self=this;
  51688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51689. return $core.withContext(function($ctx1) {
  51690. //>>excludeEnd("ctx");
  51691. return "$globals.".__comma($self._name());
  51692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51693. }, function($ctx1) {$ctx1.fill(self,"alias",{})});
  51694. //>>excludeEnd("ctx");
  51695. }; }),
  51696. $globals.ClassRefVar);
  51697. $core.addClass("ExternallyKnownVar", $globals.ScopeVar, "Compiler-Semantic");
  51698. //>>excludeStart("ide", pragmas.excludeIdeData);
  51699. $globals.ExternallyKnownVar.comment="I am a variable known externally (not in method scope).";
  51700. //>>excludeEnd("ide");
  51701. $core.addClass("PseudoVar", $globals.ScopeVar, "Compiler-Semantic");
  51702. //>>excludeStart("ide", pragmas.excludeIdeData);
  51703. $globals.PseudoVar.comment="I am an pseudo variable.\x0a\x0aThe five Smalltalk pseudo variables are: 'self', 'super', 'nil', 'true' and 'false'";
  51704. //>>excludeEnd("ide");
  51705. $core.addMethod(
  51706. $core.method({
  51707. selector: "alias",
  51708. protocol: "accessing",
  51709. //>>excludeStart("ide", pragmas.excludeIdeData);
  51710. args: [],
  51711. source: "alias\x0a\x09^ self name",
  51712. referencedClasses: [],
  51713. //>>excludeEnd("ide");
  51714. pragmas: [],
  51715. messageSends: ["name"]
  51716. }, function ($methodClass){ return function (){
  51717. var self=this,$self=this;
  51718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51719. return $core.withContext(function($ctx1) {
  51720. //>>excludeEnd("ctx");
  51721. return $self._name();
  51722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51723. }, function($ctx1) {$ctx1.fill(self,"alias",{})});
  51724. //>>excludeEnd("ctx");
  51725. }; }),
  51726. $globals.PseudoVar);
  51727. $core.addMethod(
  51728. $core.method({
  51729. selector: "isIdempotent",
  51730. protocol: "testing",
  51731. //>>excludeStart("ide", pragmas.excludeIdeData);
  51732. args: [],
  51733. source: "isIdempotent\x0a\x09^ true",
  51734. referencedClasses: [],
  51735. //>>excludeEnd("ide");
  51736. pragmas: [],
  51737. messageSends: []
  51738. }, function ($methodClass){ return function (){
  51739. var self=this,$self=this;
  51740. return true;
  51741. }; }),
  51742. $globals.PseudoVar);
  51743. $core.setSlots($globals.PseudoVar.a$cls, ["dictionary", "receiverNames"]);
  51744. $core.addMethod(
  51745. $core.method({
  51746. selector: "dictionary",
  51747. protocol: "accessing",
  51748. //>>excludeStart("ide", pragmas.excludeIdeData);
  51749. args: [],
  51750. source: "dictionary\x0a\x09^ dictionary ifNil: [ dictionary := Dictionary new\x0a\x09\x09at: #self put: PseudoVar;\x0a\x09\x09at: #super put: SuperVar;\x0a\x09\x09at: #nil put: PseudoVar;\x0a\x09\x09at: #false put: PseudoVar;\x0a\x09\x09at: #true put: PseudoVar;\x0a\x09\x09at: #thisContext put: ThisContextVar;\x0a\x09\x09yourself ]",
  51751. referencedClasses: ["Dictionary", "PseudoVar", "SuperVar", "ThisContextVar"],
  51752. //>>excludeEnd("ide");
  51753. pragmas: [],
  51754. messageSends: ["ifNil:", "at:put:", "new", "yourself"]
  51755. }, function ($methodClass){ return function (){
  51756. var self=this,$self=this;
  51757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51758. return $core.withContext(function($ctx1) {
  51759. //>>excludeEnd("ctx");
  51760. var $1,$2;
  51761. $1=$self.dictionary;
  51762. if($1 == null || $1.a$nil){
  51763. $2=$recv($globals.Dictionary)._new();
  51764. [$recv($2)._at_put_("self",$globals.PseudoVar)
  51765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51766. ,$ctx1.sendIdx["at:put:"]=1
  51767. //>>excludeEnd("ctx");
  51768. ][0];
  51769. [$recv($2)._at_put_("super",$globals.SuperVar)
  51770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51771. ,$ctx1.sendIdx["at:put:"]=2
  51772. //>>excludeEnd("ctx");
  51773. ][0];
  51774. [$recv($2)._at_put_("nil",$globals.PseudoVar)
  51775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51776. ,$ctx1.sendIdx["at:put:"]=3
  51777. //>>excludeEnd("ctx");
  51778. ][0];
  51779. [$recv($2)._at_put_("false",$globals.PseudoVar)
  51780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51781. ,$ctx1.sendIdx["at:put:"]=4
  51782. //>>excludeEnd("ctx");
  51783. ][0];
  51784. [$recv($2)._at_put_("true",$globals.PseudoVar)
  51785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51786. ,$ctx1.sendIdx["at:put:"]=5
  51787. //>>excludeEnd("ctx");
  51788. ][0];
  51789. $recv($2)._at_put_("thisContext",$globals.ThisContextVar);
  51790. $self.dictionary=$recv($2)._yourself();
  51791. return $self.dictionary;
  51792. } else {
  51793. return $1;
  51794. }
  51795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51796. }, function($ctx1) {$ctx1.fill(self,"dictionary",{})});
  51797. //>>excludeEnd("ctx");
  51798. }; }),
  51799. $globals.PseudoVar.a$cls);
  51800. $core.addMethod(
  51801. $core.method({
  51802. selector: "receiverNames",
  51803. protocol: "accessing",
  51804. //>>excludeStart("ide", pragmas.excludeIdeData);
  51805. args: [],
  51806. source: "receiverNames\x0a\x09^ receiverNames ifNil: [ receiverNames := Dictionary new\x0a\x09\x09at: #self put: '$self';\x0a\x09\x09at: #super put: '$self';\x0a\x09\x09at: #nil put: '$nil';\x0a\x09\x09yourself ]",
  51807. referencedClasses: ["Dictionary"],
  51808. //>>excludeEnd("ide");
  51809. pragmas: [],
  51810. messageSends: ["ifNil:", "at:put:", "new", "yourself"]
  51811. }, function ($methodClass){ return function (){
  51812. var self=this,$self=this;
  51813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51814. return $core.withContext(function($ctx1) {
  51815. //>>excludeEnd("ctx");
  51816. var $1,$2;
  51817. $1=$self.receiverNames;
  51818. if($1 == null || $1.a$nil){
  51819. $2=$recv($globals.Dictionary)._new();
  51820. [$recv($2)._at_put_("self","$self")
  51821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51822. ,$ctx1.sendIdx["at:put:"]=1
  51823. //>>excludeEnd("ctx");
  51824. ][0];
  51825. [$recv($2)._at_put_("super","$self")
  51826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51827. ,$ctx1.sendIdx["at:put:"]=2
  51828. //>>excludeEnd("ctx");
  51829. ][0];
  51830. $recv($2)._at_put_("nil","$nil");
  51831. $self.receiverNames=$recv($2)._yourself();
  51832. return $self.receiverNames;
  51833. } else {
  51834. return $1;
  51835. }
  51836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51837. }, function($ctx1) {$ctx1.fill(self,"receiverNames",{})});
  51838. //>>excludeEnd("ctx");
  51839. }; }),
  51840. $globals.PseudoVar.a$cls);
  51841. $core.addClass("SuperVar", $globals.PseudoVar, "Compiler-Semantic");
  51842. //>>excludeStart("ide", pragmas.excludeIdeData);
  51843. $globals.SuperVar.comment="I am a 'super' pseudo variable.";
  51844. //>>excludeEnd("ide");
  51845. $core.addMethod(
  51846. $core.method({
  51847. selector: "isSuper",
  51848. protocol: "testing",
  51849. //>>excludeStart("ide", pragmas.excludeIdeData);
  51850. args: [],
  51851. source: "isSuper\x0a\x09^ true",
  51852. referencedClasses: [],
  51853. //>>excludeEnd("ide");
  51854. pragmas: [],
  51855. messageSends: []
  51856. }, function ($methodClass){ return function (){
  51857. var self=this,$self=this;
  51858. return true;
  51859. }; }),
  51860. $globals.SuperVar);
  51861. $core.addMethod(
  51862. $core.method({
  51863. selector: "lookupAsJavaScriptSource",
  51864. protocol: "accessing",
  51865. //>>excludeStart("ide", pragmas.excludeIdeData);
  51866. args: [],
  51867. source: "lookupAsJavaScriptSource\x0a\x09^ '($methodClass.superclass||$boot.nilAsClass).fn.prototype'",
  51868. referencedClasses: [],
  51869. //>>excludeEnd("ide");
  51870. pragmas: [],
  51871. messageSends: []
  51872. }, function ($methodClass){ return function (){
  51873. var self=this,$self=this;
  51874. return "($methodClass.superclass||$boot.nilAsClass).fn.prototype";
  51875. }; }),
  51876. $globals.SuperVar);
  51877. $core.addClass("JavaScriptSuperVar", $globals.SuperVar, "Compiler-Semantic");
  51878. $core.addMethod(
  51879. $core.method({
  51880. selector: "lookupAsJavaScriptSource",
  51881. protocol: "accessing",
  51882. //>>excludeStart("ide", pragmas.excludeIdeData);
  51883. args: [],
  51884. source: "lookupAsJavaScriptSource\x0a\x09^ 'Object.getPrototypeOf($methodClass.fn.prototype)'",
  51885. referencedClasses: [],
  51886. //>>excludeEnd("ide");
  51887. pragmas: [],
  51888. messageSends: []
  51889. }, function ($methodClass){ return function (){
  51890. var self=this,$self=this;
  51891. return "Object.getPrototypeOf($methodClass.fn.prototype)";
  51892. }; }),
  51893. $globals.JavaScriptSuperVar);
  51894. $core.addClass("ThisContextVar", $globals.PseudoVar, "Compiler-Semantic");
  51895. //>>excludeStart("ide", pragmas.excludeIdeData);
  51896. $globals.ThisContextVar.comment="I am a 'thisContext' pseudo variable.";
  51897. //>>excludeEnd("ide");
  51898. $core.addMethod(
  51899. $core.method({
  51900. selector: "alias",
  51901. protocol: "accessing",
  51902. //>>excludeStart("ide", pragmas.excludeIdeData);
  51903. args: [],
  51904. source: "alias\x0a\x09^ '$core.getThisContext()'",
  51905. referencedClasses: [],
  51906. //>>excludeEnd("ide");
  51907. pragmas: [],
  51908. messageSends: []
  51909. }, function ($methodClass){ return function (){
  51910. var self=this,$self=this;
  51911. return "$core.getThisContext()";
  51912. }; }),
  51913. $globals.ThisContextVar);
  51914. $core.addClass("SlotVar", $globals.ScopeVar, "Compiler-Semantic");
  51915. //>>excludeStart("ide", pragmas.excludeIdeData);
  51916. $globals.SlotVar.comment="I am a slot variable of a method's class.";
  51917. //>>excludeEnd("ide");
  51918. $core.addMethod(
  51919. $core.method({
  51920. selector: "alias",
  51921. protocol: "testing",
  51922. //>>excludeStart("ide", pragmas.excludeIdeData);
  51923. args: [],
  51924. source: "alias\x0a\x09^ '$self.', self name",
  51925. referencedClasses: [],
  51926. //>>excludeEnd("ide");
  51927. pragmas: [],
  51928. messageSends: [",", "name"]
  51929. }, function ($methodClass){ return function (){
  51930. var self=this,$self=this;
  51931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51932. return $core.withContext(function($ctx1) {
  51933. //>>excludeEnd("ctx");
  51934. return "$self.".__comma($self._name());
  51935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51936. }, function($ctx1) {$ctx1.fill(self,"alias",{})});
  51937. //>>excludeEnd("ctx");
  51938. }; }),
  51939. $globals.SlotVar);
  51940. $core.addMethod(
  51941. $core.method({
  51942. selector: "isAssignable",
  51943. protocol: "testing",
  51944. //>>excludeStart("ide", pragmas.excludeIdeData);
  51945. args: [],
  51946. source: "isAssignable\x0a\x09^ true",
  51947. referencedClasses: [],
  51948. //>>excludeEnd("ide");
  51949. pragmas: [],
  51950. messageSends: []
  51951. }, function ($methodClass){ return function (){
  51952. var self=this,$self=this;
  51953. return true;
  51954. }; }),
  51955. $globals.SlotVar);
  51956. $core.addClass("TempVar", $globals.ScopeVar, "Compiler-Semantic");
  51957. //>>excludeStart("ide", pragmas.excludeIdeData);
  51958. $globals.TempVar.comment="I am an temporary variable of a method or block.";
  51959. //>>excludeEnd("ide");
  51960. $core.addMethod(
  51961. $core.method({
  51962. selector: "isAssignable",
  51963. protocol: "testing",
  51964. //>>excludeStart("ide", pragmas.excludeIdeData);
  51965. args: [],
  51966. source: "isAssignable\x0a\x09^ true",
  51967. referencedClasses: [],
  51968. //>>excludeEnd("ide");
  51969. pragmas: [],
  51970. messageSends: []
  51971. }, function ($methodClass){ return function (){
  51972. var self=this,$self=this;
  51973. return true;
  51974. }; }),
  51975. $globals.TempVar);
  51976. $core.addClass("SemanticAnalyzer", $globals.NodeVisitor, "Compiler-Semantic");
  51977. $core.setSlots($globals.SemanticAnalyzer, ["currentScope", "blockIndex", "thePackage", "theClass", "classReferences", "messageSends"]);
  51978. //>>excludeStart("ide", pragmas.excludeIdeData);
  51979. $globals.SemanticAnalyzer.comment="I semantically analyze the abstract syntax tree and annotate it with informations such as non local returns and variable scopes.";
  51980. //>>excludeEnd("ide");
  51981. $core.addMethod(
  51982. $core.method({
  51983. selector: "bindUnscopedVariable:",
  51984. protocol: "private",
  51985. //>>excludeStart("ide", pragmas.excludeIdeData);
  51986. args: ["aString"],
  51987. source: "bindUnscopedVariable: aString\x0a\x09aString isCapitalized ifTrue: [ \x22Capital letter variables might be globals.\x22\x0a\x09\x09self classReferences add: aString.\x0a\x09\x09^ ClassRefVar new name: aString; yourself ].\x0a\x0a\x09\x22Throw an error if the variable is undeclared in the global JS scope (i.e. window).\x0a\x09We allow all variables listed by Smalltalk>>#globalJsVariables.\x0a\x09This list includes: `window`, `document`, `process` and `global`\x0a\x09for nodejs and browser environments.\x0a\x09\x0a\x09This is only to make sure compilation works on both browser-based and nodejs environments.\x0a\x09The ideal solution would be to use a pragma instead\x22\x0a\x0a\x09((Smalltalk globalJsVariables includes: aString)\x0a\x09\x09or: [ self isVariableKnown: aString inPackage: self thePackage ]) ifTrue: [\x0a\x09\x09\x09^ ExternallyKnownVar new name: aString; yourself ].\x0a\x0a\x09self errorUnknownVariable: aString",
  51988. referencedClasses: ["ClassRefVar", "Smalltalk", "ExternallyKnownVar"],
  51989. //>>excludeEnd("ide");
  51990. pragmas: [],
  51991. messageSends: ["ifTrue:", "isCapitalized", "add:", "classReferences", "name:", "new", "yourself", "or:", "includes:", "globalJsVariables", "isVariableKnown:inPackage:", "thePackage", "errorUnknownVariable:"]
  51992. }, function ($methodClass){ return function (aString){
  51993. var self=this,$self=this;
  51994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51995. return $core.withContext(function($ctx1) {
  51996. //>>excludeEnd("ctx");
  51997. var $1,$2,$3;
  51998. if($core.assert($recv(aString)._isCapitalized())){
  51999. $recv($self._classReferences())._add_(aString);
  52000. $1=[$recv($globals.ClassRefVar)._new()
  52001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52002. ,$ctx1.sendIdx["new"]=1
  52003. //>>excludeEnd("ctx");
  52004. ][0];
  52005. [$recv($1)._name_(aString)
  52006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52007. ,$ctx1.sendIdx["name:"]=1
  52008. //>>excludeEnd("ctx");
  52009. ][0];
  52010. return [$recv($1)._yourself()
  52011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52012. ,$ctx1.sendIdx["yourself"]=1
  52013. //>>excludeEnd("ctx");
  52014. ][0];
  52015. }
  52016. if($core.assert($recv($recv($globals.Smalltalk)._globalJsVariables())._includes_(aString))){
  52017. $2=true;
  52018. } else {
  52019. $2=$self._isVariableKnown_inPackage_(aString,$self._thePackage());
  52020. }
  52021. if($core.assert($2)){
  52022. $3=$recv($globals.ExternallyKnownVar)._new();
  52023. $recv($3)._name_(aString);
  52024. return $recv($3)._yourself();
  52025. }
  52026. $self._errorUnknownVariable_(aString);
  52027. return self;
  52028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52029. }, function($ctx1) {$ctx1.fill(self,"bindUnscopedVariable:",{aString:aString})});
  52030. //>>excludeEnd("ctx");
  52031. }; }),
  52032. $globals.SemanticAnalyzer);
  52033. $core.addMethod(
  52034. $core.method({
  52035. selector: "classReferences",
  52036. protocol: "accessing",
  52037. //>>excludeStart("ide", pragmas.excludeIdeData);
  52038. args: [],
  52039. source: "classReferences\x0a\x09^ classReferences ifNil: [ classReferences := Set new ]",
  52040. referencedClasses: ["Set"],
  52041. //>>excludeEnd("ide");
  52042. pragmas: [],
  52043. messageSends: ["ifNil:", "new"]
  52044. }, function ($methodClass){ return function (){
  52045. var self=this,$self=this;
  52046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52047. return $core.withContext(function($ctx1) {
  52048. //>>excludeEnd("ctx");
  52049. var $1;
  52050. $1=$self.classReferences;
  52051. if($1 == null || $1.a$nil){
  52052. $self.classReferences=$recv($globals.Set)._new();
  52053. return $self.classReferences;
  52054. } else {
  52055. return $1;
  52056. }
  52057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52058. }, function($ctx1) {$ctx1.fill(self,"classReferences",{})});
  52059. //>>excludeEnd("ctx");
  52060. }; }),
  52061. $globals.SemanticAnalyzer);
  52062. $core.addMethod(
  52063. $core.method({
  52064. selector: "errorInvalidAssignment:",
  52065. protocol: "error handling",
  52066. //>>excludeStart("ide", pragmas.excludeIdeData);
  52067. args: ["aString"],
  52068. source: "errorInvalidAssignment: aString\x0a\x09InvalidAssignmentError new\x0a\x09\x09variableName: aString;\x0a\x09\x09signal",
  52069. referencedClasses: ["InvalidAssignmentError"],
  52070. //>>excludeEnd("ide");
  52071. pragmas: [],
  52072. messageSends: ["variableName:", "new", "signal"]
  52073. }, function ($methodClass){ return function (aString){
  52074. var self=this,$self=this;
  52075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52076. return $core.withContext(function($ctx1) {
  52077. //>>excludeEnd("ctx");
  52078. var $1;
  52079. $1=$recv($globals.InvalidAssignmentError)._new();
  52080. $recv($1)._variableName_(aString);
  52081. $recv($1)._signal();
  52082. return self;
  52083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52084. }, function($ctx1) {$ctx1.fill(self,"errorInvalidAssignment:",{aString:aString})});
  52085. //>>excludeEnd("ctx");
  52086. }; }),
  52087. $globals.SemanticAnalyzer);
  52088. $core.addMethod(
  52089. $core.method({
  52090. selector: "errorShadowingVariable:",
  52091. protocol: "error handling",
  52092. //>>excludeStart("ide", pragmas.excludeIdeData);
  52093. args: ["aString"],
  52094. source: "errorShadowingVariable: aString\x0a\x09ShadowingVariableError new\x0a\x09\x09variableName: aString;\x0a\x09\x09signal",
  52095. referencedClasses: ["ShadowingVariableError"],
  52096. //>>excludeEnd("ide");
  52097. pragmas: [],
  52098. messageSends: ["variableName:", "new", "signal"]
  52099. }, function ($methodClass){ return function (aString){
  52100. var self=this,$self=this;
  52101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52102. return $core.withContext(function($ctx1) {
  52103. //>>excludeEnd("ctx");
  52104. var $1;
  52105. $1=$recv($globals.ShadowingVariableError)._new();
  52106. $recv($1)._variableName_(aString);
  52107. $recv($1)._signal();
  52108. return self;
  52109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52110. }, function($ctx1) {$ctx1.fill(self,"errorShadowingVariable:",{aString:aString})});
  52111. //>>excludeEnd("ctx");
  52112. }; }),
  52113. $globals.SemanticAnalyzer);
  52114. $core.addMethod(
  52115. $core.method({
  52116. selector: "errorUnknownVariable:",
  52117. protocol: "error handling",
  52118. //>>excludeStart("ide", pragmas.excludeIdeData);
  52119. args: ["aString"],
  52120. source: "errorUnknownVariable: aString\x0a\x09UnknownVariableError new\x0a\x09\x09variableName: aString;\x0a\x09\x09signal",
  52121. referencedClasses: ["UnknownVariableError"],
  52122. //>>excludeEnd("ide");
  52123. pragmas: [],
  52124. messageSends: ["variableName:", "new", "signal"]
  52125. }, function ($methodClass){ return function (aString){
  52126. var self=this,$self=this;
  52127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52128. return $core.withContext(function($ctx1) {
  52129. //>>excludeEnd("ctx");
  52130. var $1;
  52131. $1=$recv($globals.UnknownVariableError)._new();
  52132. $recv($1)._variableName_(aString);
  52133. $recv($1)._signal();
  52134. return self;
  52135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52136. }, function($ctx1) {$ctx1.fill(self,"errorUnknownVariable:",{aString:aString})});
  52137. //>>excludeEnd("ctx");
  52138. }; }),
  52139. $globals.SemanticAnalyzer);
  52140. $core.addMethod(
  52141. $core.method({
  52142. selector: "isVariableKnown:inPackage:",
  52143. protocol: "testing",
  52144. //>>excludeStart("ide", pragmas.excludeIdeData);
  52145. args: ["aString", "aPackage"],
  52146. source: "isVariableKnown: aString inPackage: aPackage\x0a\x09aPackage ifNotNil: [\x0a\x09\x09| packageKnownVars |\x0a\x09\x09packageKnownVars := (aPackage imports reject: #isString) collect: #key.\x0a\x09\x09(packageKnownVars includes: aString) ifTrue: [ ^ true ] ].\x0a\x09^ Compiler new\x0a\x09\x09eval: 'typeof(', aString, ')!== \x22undefined\x22||(function(){try{return(', aString, ',true)}catch(_){return false}})()'\x0a\x09\x09forPackage: aPackage",
  52147. referencedClasses: ["Compiler"],
  52148. //>>excludeEnd("ide");
  52149. pragmas: [],
  52150. messageSends: ["ifNotNil:", "collect:", "reject:", "imports", "ifTrue:", "includes:", "eval:forPackage:", "new", ","]
  52151. }, function ($methodClass){ return function (aString,aPackage){
  52152. var self=this,$self=this;
  52153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52154. return $core.withContext(function($ctx1) {
  52155. //>>excludeEnd("ctx");
  52156. if(aPackage == null || aPackage.a$nil){
  52157. aPackage;
  52158. } else {
  52159. var packageKnownVars;
  52160. packageKnownVars=$recv($recv($recv(aPackage)._imports())._reject_("isString"))._collect_("key");
  52161. if($core.assert($recv(packageKnownVars)._includes_(aString))){
  52162. return true;
  52163. }
  52164. }
  52165. return $recv($recv($globals.Compiler)._new())._eval_forPackage_([$recv([$recv([$recv("typeof(".__comma(aString)).__comma(")!== \x22undefined\x22||(function(){try{return(")
  52166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52167. ,$ctx1.sendIdx[","]=3
  52168. //>>excludeEnd("ctx");
  52169. ][0]).__comma(aString)
  52170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52171. ,$ctx1.sendIdx[","]=2
  52172. //>>excludeEnd("ctx");
  52173. ][0]).__comma(",true)}catch(_){return false}})()")
  52174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52175. ,$ctx1.sendIdx[","]=1
  52176. //>>excludeEnd("ctx");
  52177. ][0],aPackage);
  52178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52179. }, function($ctx1) {$ctx1.fill(self,"isVariableKnown:inPackage:",{aString:aString,aPackage:aPackage})});
  52180. //>>excludeEnd("ctx");
  52181. }; }),
  52182. $globals.SemanticAnalyzer);
  52183. $core.addMethod(
  52184. $core.method({
  52185. selector: "messageSends",
  52186. protocol: "accessing",
  52187. //>>excludeStart("ide", pragmas.excludeIdeData);
  52188. args: [],
  52189. source: "messageSends\x0a\x09^ messageSends ifNil: [ messageSends := Dictionary new ]",
  52190. referencedClasses: ["Dictionary"],
  52191. //>>excludeEnd("ide");
  52192. pragmas: [],
  52193. messageSends: ["ifNil:", "new"]
  52194. }, function ($methodClass){ return function (){
  52195. var self=this,$self=this;
  52196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52197. return $core.withContext(function($ctx1) {
  52198. //>>excludeEnd("ctx");
  52199. var $1;
  52200. $1=$self.messageSends;
  52201. if($1 == null || $1.a$nil){
  52202. $self.messageSends=$recv($globals.Dictionary)._new();
  52203. return $self.messageSends;
  52204. } else {
  52205. return $1;
  52206. }
  52207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52208. }, function($ctx1) {$ctx1.fill(self,"messageSends",{})});
  52209. //>>excludeEnd("ctx");
  52210. }; }),
  52211. $globals.SemanticAnalyzer);
  52212. $core.addMethod(
  52213. $core.method({
  52214. selector: "newBlockScope",
  52215. protocol: "factory",
  52216. //>>excludeStart("ide", pragmas.excludeIdeData);
  52217. args: [],
  52218. source: "newBlockScope\x0a\x09^ self newScopeOfClass: LexicalScope",
  52219. referencedClasses: ["LexicalScope"],
  52220. //>>excludeEnd("ide");
  52221. pragmas: [],
  52222. messageSends: ["newScopeOfClass:"]
  52223. }, function ($methodClass){ return function (){
  52224. var self=this,$self=this;
  52225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52226. return $core.withContext(function($ctx1) {
  52227. //>>excludeEnd("ctx");
  52228. return $self._newScopeOfClass_($globals.LexicalScope);
  52229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52230. }, function($ctx1) {$ctx1.fill(self,"newBlockScope",{})});
  52231. //>>excludeEnd("ctx");
  52232. }; }),
  52233. $globals.SemanticAnalyzer);
  52234. $core.addMethod(
  52235. $core.method({
  52236. selector: "newMethodScope",
  52237. protocol: "factory",
  52238. //>>excludeStart("ide", pragmas.excludeIdeData);
  52239. args: [],
  52240. source: "newMethodScope\x0a\x09^ self newScopeOfClass: MethodLexicalScope",
  52241. referencedClasses: ["MethodLexicalScope"],
  52242. //>>excludeEnd("ide");
  52243. pragmas: [],
  52244. messageSends: ["newScopeOfClass:"]
  52245. }, function ($methodClass){ return function (){
  52246. var self=this,$self=this;
  52247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52248. return $core.withContext(function($ctx1) {
  52249. //>>excludeEnd("ctx");
  52250. return $self._newScopeOfClass_($globals.MethodLexicalScope);
  52251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52252. }, function($ctx1) {$ctx1.fill(self,"newMethodScope",{})});
  52253. //>>excludeEnd("ctx");
  52254. }; }),
  52255. $globals.SemanticAnalyzer);
  52256. $core.addMethod(
  52257. $core.method({
  52258. selector: "newScopeOfClass:",
  52259. protocol: "factory",
  52260. //>>excludeStart("ide", pragmas.excludeIdeData);
  52261. args: ["aLexicalScopeClass"],
  52262. source: "newScopeOfClass: aLexicalScopeClass\x0a\x09^ aLexicalScopeClass new\x0a\x09\x09outerScope: currentScope;\x0a\x09\x09yourself",
  52263. referencedClasses: [],
  52264. //>>excludeEnd("ide");
  52265. pragmas: [],
  52266. messageSends: ["outerScope:", "new", "yourself"]
  52267. }, function ($methodClass){ return function (aLexicalScopeClass){
  52268. var self=this,$self=this;
  52269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52270. return $core.withContext(function($ctx1) {
  52271. //>>excludeEnd("ctx");
  52272. var $1;
  52273. $1=$recv(aLexicalScopeClass)._new();
  52274. $recv($1)._outerScope_($self.currentScope);
  52275. return $recv($1)._yourself();
  52276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52277. }, function($ctx1) {$ctx1.fill(self,"newScopeOfClass:",{aLexicalScopeClass:aLexicalScopeClass})});
  52278. //>>excludeEnd("ctx");
  52279. }; }),
  52280. $globals.SemanticAnalyzer);
  52281. $core.addMethod(
  52282. $core.method({
  52283. selector: "nextBlockIndex",
  52284. protocol: "private",
  52285. //>>excludeStart("ide", pragmas.excludeIdeData);
  52286. args: [],
  52287. source: "nextBlockIndex\x0a\x09blockIndex ifNil: [ blockIndex := 0 ].\x0a\x09\x0a\x09blockIndex := blockIndex + 1.\x0a\x09^ blockIndex",
  52288. referencedClasses: [],
  52289. //>>excludeEnd("ide");
  52290. pragmas: [],
  52291. messageSends: ["ifNil:", "+"]
  52292. }, function ($methodClass){ return function (){
  52293. var self=this,$self=this;
  52294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52295. return $core.withContext(function($ctx1) {
  52296. //>>excludeEnd("ctx");
  52297. var $1;
  52298. $1=$self.blockIndex;
  52299. if($1 == null || $1.a$nil){
  52300. $self.blockIndex=(0);
  52301. $self.blockIndex;
  52302. } else {
  52303. $1;
  52304. }
  52305. $self.blockIndex=$recv($self.blockIndex).__plus((1));
  52306. return $self.blockIndex;
  52307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52308. }, function($ctx1) {$ctx1.fill(self,"nextBlockIndex",{})});
  52309. //>>excludeEnd("ctx");
  52310. }; }),
  52311. $globals.SemanticAnalyzer);
  52312. $core.addMethod(
  52313. $core.method({
  52314. selector: "popScope",
  52315. protocol: "scope",
  52316. //>>excludeStart("ide", pragmas.excludeIdeData);
  52317. args: [],
  52318. source: "popScope\x0a\x09currentScope ifNotNil: [\x0a\x09\x09currentScope := currentScope outerScope ]",
  52319. referencedClasses: [],
  52320. //>>excludeEnd("ide");
  52321. pragmas: [],
  52322. messageSends: ["ifNotNil:", "outerScope"]
  52323. }, function ($methodClass){ return function (){
  52324. var self=this,$self=this;
  52325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52326. return $core.withContext(function($ctx1) {
  52327. //>>excludeEnd("ctx");
  52328. var $1;
  52329. $1=$self.currentScope;
  52330. if($1 == null || $1.a$nil){
  52331. $1;
  52332. } else {
  52333. $self.currentScope=$recv($self.currentScope)._outerScope();
  52334. $self.currentScope;
  52335. }
  52336. return self;
  52337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52338. }, function($ctx1) {$ctx1.fill(self,"popScope",{})});
  52339. //>>excludeEnd("ctx");
  52340. }; }),
  52341. $globals.SemanticAnalyzer);
  52342. $core.addMethod(
  52343. $core.method({
  52344. selector: "pushScope:",
  52345. protocol: "scope",
  52346. //>>excludeStart("ide", pragmas.excludeIdeData);
  52347. args: ["aScope"],
  52348. source: "pushScope: aScope\x0a\x09aScope outerScope: currentScope.\x0a\x09currentScope := aScope",
  52349. referencedClasses: [],
  52350. //>>excludeEnd("ide");
  52351. pragmas: [],
  52352. messageSends: ["outerScope:"]
  52353. }, function ($methodClass){ return function (aScope){
  52354. var self=this,$self=this;
  52355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52356. return $core.withContext(function($ctx1) {
  52357. //>>excludeEnd("ctx");
  52358. $recv(aScope)._outerScope_($self.currentScope);
  52359. $self.currentScope=aScope;
  52360. return self;
  52361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52362. }, function($ctx1) {$ctx1.fill(self,"pushScope:",{aScope:aScope})});
  52363. //>>excludeEnd("ctx");
  52364. }; }),
  52365. $globals.SemanticAnalyzer);
  52366. $core.addMethod(
  52367. $core.method({
  52368. selector: "theClass",
  52369. protocol: "accessing",
  52370. //>>excludeStart("ide", pragmas.excludeIdeData);
  52371. args: [],
  52372. source: "theClass\x0a\x09^ theClass",
  52373. referencedClasses: [],
  52374. //>>excludeEnd("ide");
  52375. pragmas: [],
  52376. messageSends: []
  52377. }, function ($methodClass){ return function (){
  52378. var self=this,$self=this;
  52379. return $self.theClass;
  52380. }; }),
  52381. $globals.SemanticAnalyzer);
  52382. $core.addMethod(
  52383. $core.method({
  52384. selector: "theClass:",
  52385. protocol: "accessing",
  52386. //>>excludeStart("ide", pragmas.excludeIdeData);
  52387. args: ["aClass"],
  52388. source: "theClass: aClass\x0a\x09theClass := aClass",
  52389. referencedClasses: [],
  52390. //>>excludeEnd("ide");
  52391. pragmas: [],
  52392. messageSends: []
  52393. }, function ($methodClass){ return function (aClass){
  52394. var self=this,$self=this;
  52395. $self.theClass=aClass;
  52396. return self;
  52397. }; }),
  52398. $globals.SemanticAnalyzer);
  52399. $core.addMethod(
  52400. $core.method({
  52401. selector: "thePackage",
  52402. protocol: "accessing",
  52403. //>>excludeStart("ide", pragmas.excludeIdeData);
  52404. args: [],
  52405. source: "thePackage\x0a\x09^ thePackage",
  52406. referencedClasses: [],
  52407. //>>excludeEnd("ide");
  52408. pragmas: [],
  52409. messageSends: []
  52410. }, function ($methodClass){ return function (){
  52411. var self=this,$self=this;
  52412. return $self.thePackage;
  52413. }; }),
  52414. $globals.SemanticAnalyzer);
  52415. $core.addMethod(
  52416. $core.method({
  52417. selector: "thePackage:",
  52418. protocol: "accessing",
  52419. //>>excludeStart("ide", pragmas.excludeIdeData);
  52420. args: ["aPackage"],
  52421. source: "thePackage: aPackage\x0a\x09thePackage := aPackage",
  52422. referencedClasses: [],
  52423. //>>excludeEnd("ide");
  52424. pragmas: [],
  52425. messageSends: []
  52426. }, function ($methodClass){ return function (aPackage){
  52427. var self=this,$self=this;
  52428. $self.thePackage=aPackage;
  52429. return self;
  52430. }; }),
  52431. $globals.SemanticAnalyzer);
  52432. $core.addMethod(
  52433. $core.method({
  52434. selector: "validateVariableScope:",
  52435. protocol: "scope",
  52436. //>>excludeStart("ide", pragmas.excludeIdeData);
  52437. args: ["aString"],
  52438. source: "validateVariableScope: aString\x0a\x09\x22Validate the variable scope in by doing a recursive lookup, up to the method scope\x22\x0a\x0a\x09(currentScope lookupVariable: aString) ifNotNil: [\x0a\x09\x09self errorShadowingVariable: aString ]",
  52439. referencedClasses: [],
  52440. //>>excludeEnd("ide");
  52441. pragmas: [],
  52442. messageSends: ["ifNotNil:", "lookupVariable:", "errorShadowingVariable:"]
  52443. }, function ($methodClass){ return function (aString){
  52444. var self=this,$self=this;
  52445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52446. return $core.withContext(function($ctx1) {
  52447. //>>excludeEnd("ctx");
  52448. var $1;
  52449. $1=$recv($self.currentScope)._lookupVariable_(aString);
  52450. if($1 == null || $1.a$nil){
  52451. $1;
  52452. } else {
  52453. $self._errorShadowingVariable_(aString);
  52454. }
  52455. return self;
  52456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52457. }, function($ctx1) {$ctx1.fill(self,"validateVariableScope:",{aString:aString})});
  52458. //>>excludeEnd("ctx");
  52459. }; }),
  52460. $globals.SemanticAnalyzer);
  52461. $core.addMethod(
  52462. $core.method({
  52463. selector: "visitAssignmentNode:",
  52464. protocol: "visiting",
  52465. //>>excludeStart("ide", pragmas.excludeIdeData);
  52466. args: ["aNode"],
  52467. source: "visitAssignmentNode: aNode\x0a\x09| lhs |\x0a\x09super visitAssignmentNode: aNode.\x0a\x09lhs := aNode left.\x0a\x09lhs isAssignable ifFalse: [ self errorInvalidAssignment: lhs identifier ].\x0a\x09lhs assigned: true",
  52468. referencedClasses: [],
  52469. //>>excludeEnd("ide");
  52470. pragmas: [],
  52471. messageSends: ["visitAssignmentNode:", "left", "ifFalse:", "isAssignable", "errorInvalidAssignment:", "identifier", "assigned:"]
  52472. }, function ($methodClass){ return function (aNode){
  52473. var self=this,$self=this;
  52474. var lhs;
  52475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52476. return $core.withContext(function($ctx1) {
  52477. //>>excludeEnd("ctx");
  52478. [(
  52479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52480. $ctx1.supercall = true,
  52481. //>>excludeEnd("ctx");
  52482. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitAssignmentNode_.call($self,aNode))
  52483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52484. ,$ctx1.supercall = false
  52485. //>>excludeEnd("ctx");
  52486. ][0];
  52487. lhs=$recv(aNode)._left();
  52488. if(!$core.assert($recv(lhs)._isAssignable())){
  52489. $self._errorInvalidAssignment_($recv(lhs)._identifier());
  52490. }
  52491. $recv(lhs)._assigned_(true);
  52492. return self;
  52493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52494. }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,lhs:lhs})});
  52495. //>>excludeEnd("ctx");
  52496. }; }),
  52497. $globals.SemanticAnalyzer);
  52498. $core.addMethod(
  52499. $core.method({
  52500. selector: "visitBlockNode:",
  52501. protocol: "visiting",
  52502. //>>excludeStart("ide", pragmas.excludeIdeData);
  52503. args: ["aNode"],
  52504. source: "visitBlockNode: aNode\x0a\x09self pushScope: self newBlockScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x09currentScope blockIndex: self nextBlockIndex.\x0a\x0a\x09aNode parameters do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitBlockNode: aNode.\x0a\x09self popScope",
  52505. referencedClasses: [],
  52506. //>>excludeEnd("ide");
  52507. pragmas: [],
  52508. messageSends: ["pushScope:", "newBlockScope", "scope:", "node:", "blockIndex:", "nextBlockIndex", "do:", "parameters", "validateVariableScope:", "addArg:", "visitBlockNode:", "popScope"]
  52509. }, function ($methodClass){ return function (aNode){
  52510. var self=this,$self=this;
  52511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52512. return $core.withContext(function($ctx1) {
  52513. //>>excludeEnd("ctx");
  52514. $self._pushScope_($self._newBlockScope());
  52515. $recv(aNode)._scope_($self.currentScope);
  52516. $recv($self.currentScope)._node_(aNode);
  52517. $recv($self.currentScope)._blockIndex_($self._nextBlockIndex());
  52518. $recv($recv(aNode)._parameters())._do_((function(each){
  52519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52520. return $core.withContext(function($ctx2) {
  52521. //>>excludeEnd("ctx");
  52522. $self._validateVariableScope_(each);
  52523. return $recv($self.currentScope)._addArg_(each);
  52524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52525. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  52526. //>>excludeEnd("ctx");
  52527. }));
  52528. [(
  52529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52530. $ctx1.supercall = true,
  52531. //>>excludeEnd("ctx");
  52532. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitBlockNode_.call($self,aNode))
  52533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52534. ,$ctx1.supercall = false
  52535. //>>excludeEnd("ctx");
  52536. ][0];
  52537. $self._popScope();
  52538. return self;
  52539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52540. }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode})});
  52541. //>>excludeEnd("ctx");
  52542. }; }),
  52543. $globals.SemanticAnalyzer);
  52544. $core.addMethod(
  52545. $core.method({
  52546. selector: "visitCascadeNode:",
  52547. protocol: "visiting",
  52548. //>>excludeStart("ide", pragmas.excludeIdeData);
  52549. args: ["aNode"],
  52550. source: "visitCascadeNode: aNode\x0a\x09aNode receiver: aNode dagChildren first receiver.\x0a\x09aNode dagChildren allButLast do: [ :each | each beSideEffect ].\x0a\x09super visitCascadeNode: aNode",
  52551. referencedClasses: [],
  52552. //>>excludeEnd("ide");
  52553. pragmas: [],
  52554. messageSends: ["receiver:", "receiver", "first", "dagChildren", "do:", "allButLast", "beSideEffect", "visitCascadeNode:"]
  52555. }, function ($methodClass){ return function (aNode){
  52556. var self=this,$self=this;
  52557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52558. return $core.withContext(function($ctx1) {
  52559. //>>excludeEnd("ctx");
  52560. $recv(aNode)._receiver_($recv($recv([$recv(aNode)._dagChildren()
  52561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52562. ,$ctx1.sendIdx["dagChildren"]=1
  52563. //>>excludeEnd("ctx");
  52564. ][0])._first())._receiver());
  52565. $recv($recv($recv(aNode)._dagChildren())._allButLast())._do_((function(each){
  52566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52567. return $core.withContext(function($ctx2) {
  52568. //>>excludeEnd("ctx");
  52569. return $recv(each)._beSideEffect();
  52570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52571. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  52572. //>>excludeEnd("ctx");
  52573. }));
  52574. [(
  52575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52576. $ctx1.supercall = true,
  52577. //>>excludeEnd("ctx");
  52578. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitCascadeNode_.call($self,aNode))
  52579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52580. ,$ctx1.supercall = false
  52581. //>>excludeEnd("ctx");
  52582. ][0];
  52583. return self;
  52584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52585. }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode})});
  52586. //>>excludeEnd("ctx");
  52587. }; }),
  52588. $globals.SemanticAnalyzer);
  52589. $core.addMethod(
  52590. $core.method({
  52591. selector: "visitMethodNode:",
  52592. protocol: "visiting",
  52593. //>>excludeStart("ide", pragmas.excludeIdeData);
  52594. args: ["aNode"],
  52595. source: "visitMethodNode: aNode\x0a\x09self pushScope: self newMethodScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x0a\x09self theClass allSlotNames do: [ :each |\x0a\x09\x09currentScope addSlotVar: each ].\x0a\x09aNode arguments do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitMethodNode: aNode.\x0a\x0a\x09aNode\x0a\x09\x09classReferences: self classReferences;\x0a\x09\x09sendIndexes: self messageSends.\x0a\x09self popScope.\x0a\x09^ aNode",
  52596. referencedClasses: [],
  52597. //>>excludeEnd("ide");
  52598. pragmas: [],
  52599. messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allSlotNames", "theClass", "addSlotVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "sendIndexes:", "messageSends", "popScope"]
  52600. }, function ($methodClass){ return function (aNode){
  52601. var self=this,$self=this;
  52602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52603. return $core.withContext(function($ctx1) {
  52604. //>>excludeEnd("ctx");
  52605. $self._pushScope_($self._newMethodScope());
  52606. $recv(aNode)._scope_($self.currentScope);
  52607. $recv($self.currentScope)._node_(aNode);
  52608. [$recv($recv($self._theClass())._allSlotNames())._do_((function(each){
  52609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52610. return $core.withContext(function($ctx2) {
  52611. //>>excludeEnd("ctx");
  52612. return $recv($self.currentScope)._addSlotVar_(each);
  52613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52614. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  52615. //>>excludeEnd("ctx");
  52616. }))
  52617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52618. ,$ctx1.sendIdx["do:"]=1
  52619. //>>excludeEnd("ctx");
  52620. ][0];
  52621. $recv($recv(aNode)._arguments())._do_((function(each){
  52622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52623. return $core.withContext(function($ctx2) {
  52624. //>>excludeEnd("ctx");
  52625. $self._validateVariableScope_(each);
  52626. return $recv($self.currentScope)._addArg_(each);
  52627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52628. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  52629. //>>excludeEnd("ctx");
  52630. }));
  52631. [(
  52632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52633. $ctx1.supercall = true,
  52634. //>>excludeEnd("ctx");
  52635. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitMethodNode_.call($self,aNode))
  52636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52637. ,$ctx1.supercall = false
  52638. //>>excludeEnd("ctx");
  52639. ][0];
  52640. $recv(aNode)._classReferences_($self._classReferences());
  52641. $recv(aNode)._sendIndexes_($self._messageSends());
  52642. $self._popScope();
  52643. return aNode;
  52644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52645. }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode})});
  52646. //>>excludeEnd("ctx");
  52647. }; }),
  52648. $globals.SemanticAnalyzer);
  52649. $core.addMethod(
  52650. $core.method({
  52651. selector: "visitReturnNode:",
  52652. protocol: "visiting",
  52653. //>>excludeStart("ide", pragmas.excludeIdeData);
  52654. args: ["aNode"],
  52655. source: "visitReturnNode: aNode\x0a\x09aNode scope: currentScope.\x0a\x09currentScope isMethodScope\x0a\x09\x09ifTrue: [ currentScope localReturn: true ]\x0a\x09\x09ifFalse: [ currentScope methodScope addNonLocalReturn: currentScope ].\x0a\x09super visitReturnNode: aNode",
  52656. referencedClasses: [],
  52657. //>>excludeEnd("ide");
  52658. pragmas: [],
  52659. messageSends: ["scope:", "ifTrue:ifFalse:", "isMethodScope", "localReturn:", "addNonLocalReturn:", "methodScope", "visitReturnNode:"]
  52660. }, function ($methodClass){ return function (aNode){
  52661. var self=this,$self=this;
  52662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52663. return $core.withContext(function($ctx1) {
  52664. //>>excludeEnd("ctx");
  52665. $recv(aNode)._scope_($self.currentScope);
  52666. if($core.assert($recv($self.currentScope)._isMethodScope())){
  52667. $recv($self.currentScope)._localReturn_(true);
  52668. } else {
  52669. $recv($recv($self.currentScope)._methodScope())._addNonLocalReturn_($self.currentScope);
  52670. }
  52671. [(
  52672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52673. $ctx1.supercall = true,
  52674. //>>excludeEnd("ctx");
  52675. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitReturnNode_.call($self,aNode))
  52676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52677. ,$ctx1.supercall = false
  52678. //>>excludeEnd("ctx");
  52679. ][0];
  52680. return self;
  52681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52682. }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode})});
  52683. //>>excludeEnd("ctx");
  52684. }; }),
  52685. $globals.SemanticAnalyzer);
  52686. $core.addMethod(
  52687. $core.method({
  52688. selector: "visitSendNode:",
  52689. protocol: "visiting",
  52690. //>>excludeStart("ide", pragmas.excludeIdeData);
  52691. args: ["aNode"],
  52692. source: "visitSendNode: aNode\x0a\x0a\x09| sends |\x0a\x09sends := self messageSends at: aNode selector ifAbsentPut: [ OrderedCollection new ].\x0a\x09sends add: aNode.\x0a\x0a\x09aNode index: sends size.\x0a\x0a\x09super visitSendNode: aNode",
  52693. referencedClasses: ["OrderedCollection"],
  52694. //>>excludeEnd("ide");
  52695. pragmas: [],
  52696. messageSends: ["at:ifAbsentPut:", "messageSends", "selector", "new", "add:", "index:", "size", "visitSendNode:"]
  52697. }, function ($methodClass){ return function (aNode){
  52698. var self=this,$self=this;
  52699. var sends;
  52700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52701. return $core.withContext(function($ctx1) {
  52702. //>>excludeEnd("ctx");
  52703. sends=$recv($self._messageSends())._at_ifAbsentPut_($recv(aNode)._selector(),(function(){
  52704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52705. return $core.withContext(function($ctx2) {
  52706. //>>excludeEnd("ctx");
  52707. return $recv($globals.OrderedCollection)._new();
  52708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52709. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  52710. //>>excludeEnd("ctx");
  52711. }));
  52712. $recv(sends)._add_(aNode);
  52713. $recv(aNode)._index_($recv(sends)._size());
  52714. [(
  52715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52716. $ctx1.supercall = true,
  52717. //>>excludeEnd("ctx");
  52718. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSendNode_.call($self,aNode))
  52719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52720. ,$ctx1.supercall = false
  52721. //>>excludeEnd("ctx");
  52722. ][0];
  52723. return self;
  52724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52725. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,sends:sends})});
  52726. //>>excludeEnd("ctx");
  52727. }; }),
  52728. $globals.SemanticAnalyzer);
  52729. $core.addMethod(
  52730. $core.method({
  52731. selector: "visitSequenceNode:",
  52732. protocol: "visiting",
  52733. //>>excludeStart("ide", pragmas.excludeIdeData);
  52734. args: ["aNode"],
  52735. source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addTemp: each ].\x0a\x0a\x09super visitSequenceNode: aNode",
  52736. referencedClasses: [],
  52737. //>>excludeEnd("ide");
  52738. pragmas: [],
  52739. messageSends: ["do:", "temps", "validateVariableScope:", "addTemp:", "visitSequenceNode:"]
  52740. }, function ($methodClass){ return function (aNode){
  52741. var self=this,$self=this;
  52742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52743. return $core.withContext(function($ctx1) {
  52744. //>>excludeEnd("ctx");
  52745. $recv($recv(aNode)._temps())._do_((function(each){
  52746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52747. return $core.withContext(function($ctx2) {
  52748. //>>excludeEnd("ctx");
  52749. $self._validateVariableScope_(each);
  52750. return $recv($self.currentScope)._addTemp_(each);
  52751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52752. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  52753. //>>excludeEnd("ctx");
  52754. }));
  52755. [(
  52756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52757. $ctx1.supercall = true,
  52758. //>>excludeEnd("ctx");
  52759. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSequenceNode_.call($self,aNode))
  52760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52761. ,$ctx1.supercall = false
  52762. //>>excludeEnd("ctx");
  52763. ][0];
  52764. return self;
  52765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52766. }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode})});
  52767. //>>excludeEnd("ctx");
  52768. }; }),
  52769. $globals.SemanticAnalyzer);
  52770. $core.addMethod(
  52771. $core.method({
  52772. selector: "visitVariableNode:",
  52773. protocol: "visiting",
  52774. //>>excludeStart("ide", pragmas.excludeIdeData);
  52775. args: ["aNode"],
  52776. source: "visitVariableNode: aNode\x0a\x09\x22Bind a ScopeVar to aNode by doing a lookup in the current scope.\x0a\x09If no var is found in scope, represent an externally known variable or throw an error.\x22\x0a\x0a\x09aNode binding:\x0a\x09\x09((currentScope lookupVariable: aNode identifier) ifNil: [ self bindUnscopedVariable: aNode identifier ])",
  52777. referencedClasses: [],
  52778. //>>excludeEnd("ide");
  52779. pragmas: [],
  52780. messageSends: ["binding:", "ifNil:", "lookupVariable:", "identifier", "bindUnscopedVariable:"]
  52781. }, function ($methodClass){ return function (aNode){
  52782. var self=this,$self=this;
  52783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52784. return $core.withContext(function($ctx1) {
  52785. //>>excludeEnd("ctx");
  52786. var $1,$2;
  52787. $1=$recv($self.currentScope)._lookupVariable_([$recv(aNode)._identifier()
  52788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52789. ,$ctx1.sendIdx["identifier"]=1
  52790. //>>excludeEnd("ctx");
  52791. ][0]);
  52792. if($1 == null || $1.a$nil){
  52793. $2=$self._bindUnscopedVariable_($recv(aNode)._identifier());
  52794. } else {
  52795. $2=$1;
  52796. }
  52797. $recv(aNode)._binding_($2);
  52798. return self;
  52799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52800. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
  52801. //>>excludeEnd("ctx");
  52802. }; }),
  52803. $globals.SemanticAnalyzer);
  52804. $core.addMethod(
  52805. $core.method({
  52806. selector: "on:",
  52807. protocol: "instance creation",
  52808. //>>excludeStart("ide", pragmas.excludeIdeData);
  52809. args: ["aClass"],
  52810. source: "on: aClass\x0a\x09^ self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
  52811. referencedClasses: [],
  52812. //>>excludeEnd("ide");
  52813. pragmas: [],
  52814. messageSends: ["theClass:", "new", "yourself"]
  52815. }, function ($methodClass){ return function (aClass){
  52816. var self=this,$self=this;
  52817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52818. return $core.withContext(function($ctx1) {
  52819. //>>excludeEnd("ctx");
  52820. var $1;
  52821. $1=$self._new();
  52822. $recv($1)._theClass_(aClass);
  52823. return $recv($1)._yourself();
  52824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52825. }, function($ctx1) {$ctx1.fill(self,"on:",{aClass:aClass})});
  52826. //>>excludeEnd("ctx");
  52827. }; }),
  52828. $globals.SemanticAnalyzer.a$cls);
  52829. $core.addClass("SemanticError", $globals.CompilerError, "Compiler-Semantic");
  52830. //>>excludeStart("ide", pragmas.excludeIdeData);
  52831. $globals.SemanticError.comment="I represent an abstract semantic error thrown by the SemanticAnalyzer.\x0aSemantic errors can be unknown variable errors, etc.\x0aSee my subclasses for concrete errors.\x0a\x0aThe IDE should catch instances of Semantic error to deal with them when compiling";
  52832. //>>excludeEnd("ide");
  52833. $core.addClass("InvalidAssignmentError", $globals.SemanticError, "Compiler-Semantic");
  52834. $core.setSlots($globals.InvalidAssignmentError, ["variableName"]);
  52835. //>>excludeStart("ide", pragmas.excludeIdeData);
  52836. $globals.InvalidAssignmentError.comment="I get signaled when a pseudo variable gets assigned.";
  52837. //>>excludeEnd("ide");
  52838. $core.addMethod(
  52839. $core.method({
  52840. selector: "messageText",
  52841. protocol: "accessing",
  52842. //>>excludeStart("ide", pragmas.excludeIdeData);
  52843. args: [],
  52844. source: "messageText\x0a\x09^ ' Invalid assignment to variable: ', self variableName",
  52845. referencedClasses: [],
  52846. //>>excludeEnd("ide");
  52847. pragmas: [],
  52848. messageSends: [",", "variableName"]
  52849. }, function ($methodClass){ return function (){
  52850. var self=this,$self=this;
  52851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52852. return $core.withContext(function($ctx1) {
  52853. //>>excludeEnd("ctx");
  52854. return " Invalid assignment to variable: ".__comma($self._variableName());
  52855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52856. }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
  52857. //>>excludeEnd("ctx");
  52858. }; }),
  52859. $globals.InvalidAssignmentError);
  52860. $core.addMethod(
  52861. $core.method({
  52862. selector: "variableName",
  52863. protocol: "accessing",
  52864. //>>excludeStart("ide", pragmas.excludeIdeData);
  52865. args: [],
  52866. source: "variableName\x0a\x09^ variableName",
  52867. referencedClasses: [],
  52868. //>>excludeEnd("ide");
  52869. pragmas: [],
  52870. messageSends: []
  52871. }, function ($methodClass){ return function (){
  52872. var self=this,$self=this;
  52873. return $self.variableName;
  52874. }; }),
  52875. $globals.InvalidAssignmentError);
  52876. $core.addMethod(
  52877. $core.method({
  52878. selector: "variableName:",
  52879. protocol: "accessing",
  52880. //>>excludeStart("ide", pragmas.excludeIdeData);
  52881. args: ["aString"],
  52882. source: "variableName: aString\x0a\x09variableName := aString",
  52883. referencedClasses: [],
  52884. //>>excludeEnd("ide");
  52885. pragmas: [],
  52886. messageSends: []
  52887. }, function ($methodClass){ return function (aString){
  52888. var self=this,$self=this;
  52889. $self.variableName=aString;
  52890. return self;
  52891. }; }),
  52892. $globals.InvalidAssignmentError);
  52893. $core.addClass("ShadowingVariableError", $globals.SemanticError, "Compiler-Semantic");
  52894. $core.setSlots($globals.ShadowingVariableError, ["variableName"]);
  52895. //>>excludeStart("ide", pragmas.excludeIdeData);
  52896. $globals.ShadowingVariableError.comment="I get signaled when a variable in a block or method scope shadows a variable of the same name in an outer scope.";
  52897. //>>excludeEnd("ide");
  52898. $core.addMethod(
  52899. $core.method({
  52900. selector: "messageText",
  52901. protocol: "accessing",
  52902. //>>excludeStart("ide", pragmas.excludeIdeData);
  52903. args: [],
  52904. source: "messageText\x0a\x09^ 'Variable shadowing error: ', self variableName, ' is already defined'",
  52905. referencedClasses: [],
  52906. //>>excludeEnd("ide");
  52907. pragmas: [],
  52908. messageSends: [",", "variableName"]
  52909. }, function ($methodClass){ return function (){
  52910. var self=this,$self=this;
  52911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52912. return $core.withContext(function($ctx1) {
  52913. //>>excludeEnd("ctx");
  52914. return [$recv("Variable shadowing error: ".__comma($self._variableName())).__comma(" is already defined")
  52915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52916. ,$ctx1.sendIdx[","]=1
  52917. //>>excludeEnd("ctx");
  52918. ][0];
  52919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52920. }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
  52921. //>>excludeEnd("ctx");
  52922. }; }),
  52923. $globals.ShadowingVariableError);
  52924. $core.addMethod(
  52925. $core.method({
  52926. selector: "variableName",
  52927. protocol: "accessing",
  52928. //>>excludeStart("ide", pragmas.excludeIdeData);
  52929. args: [],
  52930. source: "variableName\x0a\x09^ variableName",
  52931. referencedClasses: [],
  52932. //>>excludeEnd("ide");
  52933. pragmas: [],
  52934. messageSends: []
  52935. }, function ($methodClass){ return function (){
  52936. var self=this,$self=this;
  52937. return $self.variableName;
  52938. }; }),
  52939. $globals.ShadowingVariableError);
  52940. $core.addMethod(
  52941. $core.method({
  52942. selector: "variableName:",
  52943. protocol: "accessing",
  52944. //>>excludeStart("ide", pragmas.excludeIdeData);
  52945. args: ["aString"],
  52946. source: "variableName: aString\x0a\x09variableName := aString",
  52947. referencedClasses: [],
  52948. //>>excludeEnd("ide");
  52949. pragmas: [],
  52950. messageSends: []
  52951. }, function ($methodClass){ return function (aString){
  52952. var self=this,$self=this;
  52953. $self.variableName=aString;
  52954. return self;
  52955. }; }),
  52956. $globals.ShadowingVariableError);
  52957. $core.addClass("UnknownVariableError", $globals.SemanticError, "Compiler-Semantic");
  52958. $core.setSlots($globals.UnknownVariableError, ["variableName"]);
  52959. //>>excludeStart("ide", pragmas.excludeIdeData);
  52960. $globals.UnknownVariableError.comment="I get signaled when a variable is not defined.\x0aThe default behavior is to allow it, as this is how Amber currently is able to seamlessly send messages to JavaScript objects.";
  52961. //>>excludeEnd("ide");
  52962. $core.addMethod(
  52963. $core.method({
  52964. selector: "messageText",
  52965. protocol: "accessing",
  52966. //>>excludeStart("ide", pragmas.excludeIdeData);
  52967. args: [],
  52968. source: "messageText\x0a\x09^ 'Unknown Variable error: ', self variableName, ' is not defined'",
  52969. referencedClasses: [],
  52970. //>>excludeEnd("ide");
  52971. pragmas: [],
  52972. messageSends: [",", "variableName"]
  52973. }, function ($methodClass){ return function (){
  52974. var self=this,$self=this;
  52975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52976. return $core.withContext(function($ctx1) {
  52977. //>>excludeEnd("ctx");
  52978. return [$recv("Unknown Variable error: ".__comma($self._variableName())).__comma(" is not defined")
  52979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52980. ,$ctx1.sendIdx[","]=1
  52981. //>>excludeEnd("ctx");
  52982. ][0];
  52983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  52984. }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
  52985. //>>excludeEnd("ctx");
  52986. }; }),
  52987. $globals.UnknownVariableError);
  52988. $core.addMethod(
  52989. $core.method({
  52990. selector: "variableName",
  52991. protocol: "accessing",
  52992. //>>excludeStart("ide", pragmas.excludeIdeData);
  52993. args: [],
  52994. source: "variableName\x0a\x09^ variableName",
  52995. referencedClasses: [],
  52996. //>>excludeEnd("ide");
  52997. pragmas: [],
  52998. messageSends: []
  52999. }, function ($methodClass){ return function (){
  53000. var self=this,$self=this;
  53001. return $self.variableName;
  53002. }; }),
  53003. $globals.UnknownVariableError);
  53004. $core.addMethod(
  53005. $core.method({
  53006. selector: "variableName:",
  53007. protocol: "accessing",
  53008. //>>excludeStart("ide", pragmas.excludeIdeData);
  53009. args: ["aString"],
  53010. source: "variableName: aString\x0a\x09variableName := aString",
  53011. referencedClasses: [],
  53012. //>>excludeEnd("ide");
  53013. pragmas: [],
  53014. messageSends: []
  53015. }, function ($methodClass){ return function (aString){
  53016. var self=this,$self=this;
  53017. $self.variableName=aString;
  53018. return self;
  53019. }; }),
  53020. $globals.UnknownVariableError);
  53021. $core.addMethod(
  53022. $core.method({
  53023. selector: "jsOverride:",
  53024. protocol: "*Compiler-Semantic",
  53025. //>>excludeStart("ide", pragmas.excludeIdeData);
  53026. args: ["aString"],
  53027. source: "jsOverride: aString\x0a\x09(JSSuperSendVisitor new property: aString; yourself)\x0a\x09\x09visit: self methodNode",
  53028. referencedClasses: ["JSSuperSendVisitor"],
  53029. //>>excludeEnd("ide");
  53030. pragmas: [],
  53031. messageSends: ["visit:", "property:", "new", "yourself", "methodNode"]
  53032. }, function ($methodClass){ return function (aString){
  53033. var self=this,$self=this;
  53034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53035. return $core.withContext(function($ctx1) {
  53036. //>>excludeEnd("ctx");
  53037. var $1;
  53038. $1=$recv($globals.JSSuperSendVisitor)._new();
  53039. $recv($1)._property_(aString);
  53040. $recv($recv($1)._yourself())._visit_($self._methodNode());
  53041. return self;
  53042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53043. }, function($ctx1) {$ctx1.fill(self,"jsOverride:",{aString:aString})});
  53044. //>>excludeEnd("ctx");
  53045. }; }),
  53046. $globals.AstSemanticPragmator);
  53047. $core.addMethod(
  53048. $core.method({
  53049. selector: "jsOverride:args:",
  53050. protocol: "*Compiler-Semantic",
  53051. //>>excludeStart("ide", pragmas.excludeIdeData);
  53052. args: ["aString", "aCollection"],
  53053. source: "jsOverride: aString args: aCollection\x0a\x09(JSSuperSendVisitor new property: aString; args: aCollection; yourself)\x0a\x09\x09visit: self methodNode",
  53054. referencedClasses: ["JSSuperSendVisitor"],
  53055. //>>excludeEnd("ide");
  53056. pragmas: [],
  53057. messageSends: ["visit:", "property:", "new", "args:", "yourself", "methodNode"]
  53058. }, function ($methodClass){ return function (aString,aCollection){
  53059. var self=this,$self=this;
  53060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53061. return $core.withContext(function($ctx1) {
  53062. //>>excludeEnd("ctx");
  53063. var $1;
  53064. $1=$recv($globals.JSSuperSendVisitor)._new();
  53065. $recv($1)._property_(aString);
  53066. $recv($1)._args_(aCollection);
  53067. $recv($recv($1)._yourself())._visit_($self._methodNode());
  53068. return self;
  53069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53070. }, function($ctx1) {$ctx1.fill(self,"jsOverride:args:",{aString:aString,aCollection:aCollection})});
  53071. //>>excludeEnd("ctx");
  53072. }; }),
  53073. $globals.AstSemanticPragmator);
  53074. });
  53075. define('amber/core/Compiler-IR',["amber/boot", "require", "amber/core/Compiler-AST", "amber/core/Compiler-Core", "amber/core/Compiler-Semantic", "amber/core/Kernel-Dag", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  53076. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  53077. var $pkg = $core.addPackage("Compiler-IR");
  53078. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  53079. $core.addClass("IRASTTranslator", $globals.NodeVisitor, "Compiler-IR");
  53080. $core.setSlots($globals.IRASTTranslator, ["source", "theClass", "method", "sequence"]);
  53081. //>>excludeStart("ide", pragmas.excludeIdeData);
  53082. $globals.IRASTTranslator.comment="I am the AST (abstract syntax tree) visitor responsible for building the intermediate representation graph.";
  53083. //>>excludeEnd("ide");
  53084. $core.addMethod(
  53085. $core.method({
  53086. selector: "addToSequence:",
  53087. protocol: "visiting",
  53088. //>>excludeStart("ide", pragmas.excludeIdeData);
  53089. args: ["anInstruction"],
  53090. source: "addToSequence: anInstruction\x0a\x09anInstruction ifNotNil: [\x0a\x09\x09anInstruction isVariable ifFalse: [\x0a\x09\x09\x09self sequence add: anInstruction ] ].\x0a\x09^ anInstruction",
  53091. referencedClasses: [],
  53092. //>>excludeEnd("ide");
  53093. pragmas: [],
  53094. messageSends: ["ifNotNil:", "ifFalse:", "isVariable", "add:", "sequence"]
  53095. }, function ($methodClass){ return function (anInstruction){
  53096. var self=this,$self=this;
  53097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53098. return $core.withContext(function($ctx1) {
  53099. //>>excludeEnd("ctx");
  53100. if(anInstruction == null || anInstruction.a$nil){
  53101. anInstruction;
  53102. } else {
  53103. if(!$core.assert($recv(anInstruction)._isVariable())){
  53104. $recv($self._sequence())._add_(anInstruction);
  53105. }
  53106. }
  53107. return anInstruction;
  53108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53109. }, function($ctx1) {$ctx1.fill(self,"addToSequence:",{anInstruction:anInstruction})});
  53110. //>>excludeEnd("ctx");
  53111. }; }),
  53112. $globals.IRASTTranslator);
  53113. $core.addMethod(
  53114. $core.method({
  53115. selector: "alias:",
  53116. protocol: "visiting",
  53117. //>>excludeStart("ide", pragmas.excludeIdeData);
  53118. args: ["anExpressionNode"],
  53119. source: "alias: anExpressionNode\x0a\x09| assignment |\x0a\x0a\x09anExpressionNode isIdempotent ifTrue: [ ^ self visit: anExpressionNode ].\x0a\x0a\x09assignment := self method newAliasingOf: (self visit: anExpressionNode).\x0a\x09self addToSequence: assignment.\x0a\x0a\x09^ assignment left",
  53120. referencedClasses: [],
  53121. //>>excludeEnd("ide");
  53122. pragmas: [],
  53123. messageSends: ["ifTrue:", "isIdempotent", "visit:", "newAliasingOf:", "method", "addToSequence:", "left"]
  53124. }, function ($methodClass){ return function (anExpressionNode){
  53125. var self=this,$self=this;
  53126. var assignment;
  53127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53128. return $core.withContext(function($ctx1) {
  53129. //>>excludeEnd("ctx");
  53130. if($core.assert($recv(anExpressionNode)._isIdempotent())){
  53131. return [$self._visit_(anExpressionNode)
  53132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53133. ,$ctx1.sendIdx["visit:"]=1
  53134. //>>excludeEnd("ctx");
  53135. ][0];
  53136. }
  53137. assignment=$recv($self._method())._newAliasingOf_($self._visit_(anExpressionNode));
  53138. $self._addToSequence_(assignment);
  53139. return $recv(assignment)._left();
  53140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53141. }, function($ctx1) {$ctx1.fill(self,"alias:",{anExpressionNode:anExpressionNode,assignment:assignment})});
  53142. //>>excludeEnd("ctx");
  53143. }; }),
  53144. $globals.IRASTTranslator);
  53145. $core.addMethod(
  53146. $core.method({
  53147. selector: "aliasTemporally:",
  53148. protocol: "visiting",
  53149. //>>excludeStart("ide", pragmas.excludeIdeData);
  53150. args: ["aCollection"],
  53151. source: "aliasTemporally: aCollection\x0a\x09\x22https://lolg.it/amber/amber/issues/296\x0a\x09\x0a\x09If a node is aliased, all preceding ones are aliased as well.\x0a\x09The tree is iterated twice. First we get the aliasing dependency,\x0a\x09then the aliasing itself is done\x22\x0a\x0a\x09| threshold shouldAlias |\x0a\x09shouldAlias := false.\x0a\x09threshold := aCollection reversed\x0a\x09\x09detect: [ :each |\x0a\x09\x09\x09shouldAlias or: [\x0a\x09\x09\x09\x09each shouldBeAliased or: [\x0a\x09\x09\x09\x09\x09(each hasOpeningStatements or: [ each subtreeNeedsAliasing ]) ifTrue: [ shouldAlias := true ].\x0a\x09\x09\x09\x09\x09false ] ] ]\x0a\x09\x09ifNone: [ nil ].\x0a\x09threshold ifNil: [ ^ self visitAll: aCollection ].\x0a\x0a\x09shouldAlias := true.\x0a\x09^ aCollection collect: [ :each |\x0a\x09\x09shouldAlias\x0a\x09\x09\x09ifTrue: [ each == threshold ifTrue: [ shouldAlias := false ]. self alias: each ]\x0a\x09\x09\x09ifFalse: [ self visit: each ] ]",
  53152. referencedClasses: [],
  53153. //>>excludeEnd("ide");
  53154. pragmas: [],
  53155. messageSends: ["detect:ifNone:", "reversed", "or:", "shouldBeAliased", "ifTrue:", "hasOpeningStatements", "subtreeNeedsAliasing", "ifNil:", "visitAll:", "collect:", "ifTrue:ifFalse:", "==", "alias:", "visit:"]
  53156. }, function ($methodClass){ return function (aCollection){
  53157. var self=this,$self=this;
  53158. var threshold,shouldAlias;
  53159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53160. return $core.withContext(function($ctx1) {
  53161. //>>excludeEnd("ctx");
  53162. var $1,$2;
  53163. shouldAlias=false;
  53164. threshold=$recv($recv(aCollection)._reversed())._detect_ifNone_((function(each){
  53165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53166. return $core.withContext(function($ctx2) {
  53167. //>>excludeEnd("ctx");
  53168. if($core.assert(shouldAlias)){
  53169. return true;
  53170. } else {
  53171. if($core.assert($recv(each)._shouldBeAliased())){
  53172. return true;
  53173. } else {
  53174. if($core.assert($recv(each)._hasOpeningStatements())){
  53175. $1=true;
  53176. } else {
  53177. $1=$recv(each)._subtreeNeedsAliasing();
  53178. }
  53179. if($core.assert($1)){
  53180. shouldAlias=true;
  53181. shouldAlias;
  53182. }
  53183. return false;
  53184. }
  53185. }
  53186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53187. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  53188. //>>excludeEnd("ctx");
  53189. }),(function(){
  53190. return nil;
  53191. }));
  53192. $2=threshold;
  53193. if($2 == null || $2.a$nil){
  53194. return $self._visitAll_(aCollection);
  53195. } else {
  53196. $2;
  53197. }
  53198. shouldAlias=true;
  53199. return $recv(aCollection)._collect_((function(each){
  53200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53201. return $core.withContext(function($ctx2) {
  53202. //>>excludeEnd("ctx");
  53203. if($core.assert(shouldAlias)){
  53204. if($core.assert($recv(each).__eq_eq(threshold))){
  53205. shouldAlias=false;
  53206. shouldAlias;
  53207. }
  53208. return $self._alias_(each);
  53209. } else {
  53210. return $self._visit_(each);
  53211. }
  53212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53213. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,8)});
  53214. //>>excludeEnd("ctx");
  53215. }));
  53216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53217. }, function($ctx1) {$ctx1.fill(self,"aliasTemporally:",{aCollection:aCollection,threshold:threshold,shouldAlias:shouldAlias})});
  53218. //>>excludeEnd("ctx");
  53219. }; }),
  53220. $globals.IRASTTranslator);
  53221. $core.addMethod(
  53222. $core.method({
  53223. selector: "method",
  53224. protocol: "accessing",
  53225. //>>excludeStart("ide", pragmas.excludeIdeData);
  53226. args: [],
  53227. source: "method\x0a\x09^ method",
  53228. referencedClasses: [],
  53229. //>>excludeEnd("ide");
  53230. pragmas: [],
  53231. messageSends: []
  53232. }, function ($methodClass){ return function (){
  53233. var self=this,$self=this;
  53234. return $self.method;
  53235. }; }),
  53236. $globals.IRASTTranslator);
  53237. $core.addMethod(
  53238. $core.method({
  53239. selector: "method:",
  53240. protocol: "accessing",
  53241. //>>excludeStart("ide", pragmas.excludeIdeData);
  53242. args: ["anIRMethod"],
  53243. source: "method: anIRMethod\x0a\x09method := anIRMethod",
  53244. referencedClasses: [],
  53245. //>>excludeEnd("ide");
  53246. pragmas: [],
  53247. messageSends: []
  53248. }, function ($methodClass){ return function (anIRMethod){
  53249. var self=this,$self=this;
  53250. $self.method=anIRMethod;
  53251. return self;
  53252. }; }),
  53253. $globals.IRASTTranslator);
  53254. $core.addMethod(
  53255. $core.method({
  53256. selector: "sequence",
  53257. protocol: "accessing",
  53258. //>>excludeStart("ide", pragmas.excludeIdeData);
  53259. args: [],
  53260. source: "sequence\x0a\x09^ sequence",
  53261. referencedClasses: [],
  53262. //>>excludeEnd("ide");
  53263. pragmas: [],
  53264. messageSends: []
  53265. }, function ($methodClass){ return function (){
  53266. var self=this,$self=this;
  53267. return $self.sequence;
  53268. }; }),
  53269. $globals.IRASTTranslator);
  53270. $core.addMethod(
  53271. $core.method({
  53272. selector: "sequence:",
  53273. protocol: "accessing",
  53274. //>>excludeStart("ide", pragmas.excludeIdeData);
  53275. args: ["anIRSequence"],
  53276. source: "sequence: anIRSequence\x0a\x09sequence := anIRSequence",
  53277. referencedClasses: [],
  53278. //>>excludeEnd("ide");
  53279. pragmas: [],
  53280. messageSends: []
  53281. }, function ($methodClass){ return function (anIRSequence){
  53282. var self=this,$self=this;
  53283. $self.sequence=anIRSequence;
  53284. return self;
  53285. }; }),
  53286. $globals.IRASTTranslator);
  53287. $core.addMethod(
  53288. $core.method({
  53289. selector: "source",
  53290. protocol: "accessing",
  53291. //>>excludeStart("ide", pragmas.excludeIdeData);
  53292. args: [],
  53293. source: "source\x0a\x09^ source",
  53294. referencedClasses: [],
  53295. //>>excludeEnd("ide");
  53296. pragmas: [],
  53297. messageSends: []
  53298. }, function ($methodClass){ return function (){
  53299. var self=this,$self=this;
  53300. return $self.source;
  53301. }; }),
  53302. $globals.IRASTTranslator);
  53303. $core.addMethod(
  53304. $core.method({
  53305. selector: "source:",
  53306. protocol: "accessing",
  53307. //>>excludeStart("ide", pragmas.excludeIdeData);
  53308. args: ["aString"],
  53309. source: "source: aString\x0a\x09source := aString",
  53310. referencedClasses: [],
  53311. //>>excludeEnd("ide");
  53312. pragmas: [],
  53313. messageSends: []
  53314. }, function ($methodClass){ return function (aString){
  53315. var self=this,$self=this;
  53316. $self.source=aString;
  53317. return self;
  53318. }; }),
  53319. $globals.IRASTTranslator);
  53320. $core.addMethod(
  53321. $core.method({
  53322. selector: "theClass",
  53323. protocol: "accessing",
  53324. //>>excludeStart("ide", pragmas.excludeIdeData);
  53325. args: [],
  53326. source: "theClass\x0a\x09^ theClass",
  53327. referencedClasses: [],
  53328. //>>excludeEnd("ide");
  53329. pragmas: [],
  53330. messageSends: []
  53331. }, function ($methodClass){ return function (){
  53332. var self=this,$self=this;
  53333. return $self.theClass;
  53334. }; }),
  53335. $globals.IRASTTranslator);
  53336. $core.addMethod(
  53337. $core.method({
  53338. selector: "theClass:",
  53339. protocol: "accessing",
  53340. //>>excludeStart("ide", pragmas.excludeIdeData);
  53341. args: ["aClass"],
  53342. source: "theClass: aClass\x0a\x09theClass := aClass",
  53343. referencedClasses: [],
  53344. //>>excludeEnd("ide");
  53345. pragmas: [],
  53346. messageSends: []
  53347. }, function ($methodClass){ return function (aClass){
  53348. var self=this,$self=this;
  53349. $self.theClass=aClass;
  53350. return self;
  53351. }; }),
  53352. $globals.IRASTTranslator);
  53353. $core.addMethod(
  53354. $core.method({
  53355. selector: "visitAssignmentNode:",
  53356. protocol: "visiting",
  53357. //>>excludeStart("ide", pragmas.excludeIdeData);
  53358. args: ["aNode"],
  53359. source: "visitAssignmentNode: aNode\x0a\x09| left right assignment |\x0a\x09right := self visit: aNode right.\x0a\x09left := self visit: aNode left.\x0a\x09self addToSequence: (IRAssignment new\x0a\x09\x09add: left;\x0a\x09\x09add: right;\x0a\x09\x09yourself).\x0a\x09^ left",
  53360. referencedClasses: ["IRAssignment"],
  53361. //>>excludeEnd("ide");
  53362. pragmas: [],
  53363. messageSends: ["visit:", "right", "left", "addToSequence:", "add:", "new", "yourself"]
  53364. }, function ($methodClass){ return function (aNode){
  53365. var self=this,$self=this;
  53366. var left,right,assignment;
  53367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53368. return $core.withContext(function($ctx1) {
  53369. //>>excludeEnd("ctx");
  53370. var $1;
  53371. right=[$self._visit_($recv(aNode)._right())
  53372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53373. ,$ctx1.sendIdx["visit:"]=1
  53374. //>>excludeEnd("ctx");
  53375. ][0];
  53376. left=$self._visit_($recv(aNode)._left());
  53377. $1=$recv($globals.IRAssignment)._new();
  53378. [$recv($1)._add_(left)
  53379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53380. ,$ctx1.sendIdx["add:"]=1
  53381. //>>excludeEnd("ctx");
  53382. ][0];
  53383. $recv($1)._add_(right);
  53384. $self._addToSequence_($recv($1)._yourself());
  53385. return left;
  53386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53387. }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,left:left,right:right,assignment:assignment})});
  53388. //>>excludeEnd("ctx");
  53389. }; }),
  53390. $globals.IRASTTranslator);
  53391. $core.addMethod(
  53392. $core.method({
  53393. selector: "visitBlockNode:",
  53394. protocol: "visiting",
  53395. //>>excludeStart("ide", pragmas.excludeIdeData);
  53396. args: ["aNode"],
  53397. source: "visitBlockNode: aNode\x0a\x09| closure |\x0a\x09closure := IRClosure new\x0a\x09\x09arguments: aNode parameters;\x0a\x09\x09requiresSmalltalkContext: aNode requiresSmalltalkContext;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself.\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09closure add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x09closure add: (self visit: aNode sequenceNode).\x0a\x09^ closure",
  53398. referencedClasses: ["IRClosure", "IRTempDeclaration"],
  53399. //>>excludeEnd("ide");
  53400. pragmas: [],
  53401. messageSends: ["arguments:", "new", "parameters", "requiresSmalltalkContext:", "requiresSmalltalkContext", "scope:", "scope", "yourself", "do:", "temps", "add:", "name:", "name", "visit:", "sequenceNode"]
  53402. }, function ($methodClass){ return function (aNode){
  53403. var self=this,$self=this;
  53404. var closure;
  53405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53406. return $core.withContext(function($ctx1) {
  53407. //>>excludeEnd("ctx");
  53408. var $1,$2,$3;
  53409. $1=[$recv($globals.IRClosure)._new()
  53410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53411. ,$ctx1.sendIdx["new"]=1
  53412. //>>excludeEnd("ctx");
  53413. ][0];
  53414. $recv($1)._arguments_($recv(aNode)._parameters());
  53415. $recv($1)._requiresSmalltalkContext_($recv(aNode)._requiresSmalltalkContext());
  53416. [$recv($1)._scope_([$recv(aNode)._scope()
  53417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53418. ,$ctx1.sendIdx["scope"]=1
  53419. //>>excludeEnd("ctx");
  53420. ][0])
  53421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53422. ,$ctx1.sendIdx["scope:"]=1
  53423. //>>excludeEnd("ctx");
  53424. ][0];
  53425. closure=[$recv($1)._yourself()
  53426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53427. ,$ctx1.sendIdx["yourself"]=1
  53428. //>>excludeEnd("ctx");
  53429. ][0];
  53430. $recv($recv([$recv(aNode)._scope()
  53431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53432. ,$ctx1.sendIdx["scope"]=2
  53433. //>>excludeEnd("ctx");
  53434. ][0])._temps())._do_((function(each){
  53435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53436. return $core.withContext(function($ctx2) {
  53437. //>>excludeEnd("ctx");
  53438. $2=closure;
  53439. $3=$recv($globals.IRTempDeclaration)._new();
  53440. $recv($3)._name_($recv(each)._name());
  53441. $recv($3)._scope_($recv(aNode)._scope());
  53442. return [$recv($2)._add_($recv($3)._yourself())
  53443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53444. ,$ctx2.sendIdx["add:"]=1
  53445. //>>excludeEnd("ctx");
  53446. ][0];
  53447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53448. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  53449. //>>excludeEnd("ctx");
  53450. }));
  53451. $recv(closure)._add_($self._visit_($recv(aNode)._sequenceNode()));
  53452. return closure;
  53453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53454. }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,closure:closure})});
  53455. //>>excludeEnd("ctx");
  53456. }; }),
  53457. $globals.IRASTTranslator);
  53458. $core.addMethod(
  53459. $core.method({
  53460. selector: "visitBlockSequenceNode:",
  53461. protocol: "visiting",
  53462. //>>excludeStart("ide", pragmas.excludeIdeData);
  53463. args: ["aNode"],
  53464. source: "visitBlockSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRBlockSequence new\x0a\x09\x09do: [\x0a\x09\x09\x09aNode dagChildren ifNotEmpty: [\x0a\x09\x09\x09\x09aNode dagChildren allButLast do: [ :each |\x0a\x09\x09\x09\x09\x09self addToSequence: (self visit: each) ].\x0a\x09\x09\x09\x09aNode dagChildren last isReturnNode\x0a\x09\x09\x09\x09\x09ifFalse: [ self addToSequence: (IRBlockReturn new add: (self visit: aNode dagChildren last); yourself) ]\x0a\x09\x09\x09\x09\x09ifTrue: [ self addToSequence: (self visit: aNode dagChildren last) ] ]]",
  53465. referencedClasses: ["IRBlockSequence", "IRBlockReturn"],
  53466. //>>excludeEnd("ide");
  53467. pragmas: [],
  53468. messageSends: ["withSequence:do:", "new", "ifNotEmpty:", "dagChildren", "do:", "allButLast", "addToSequence:", "visit:", "ifFalse:ifTrue:", "isReturnNode", "last", "add:", "yourself"]
  53469. }, function ($methodClass){ return function (aNode){
  53470. var self=this,$self=this;
  53471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53472. return $core.withContext(function($ctx1) {
  53473. //>>excludeEnd("ctx");
  53474. var $1;
  53475. return $self._withSequence_do_([$recv($globals.IRBlockSequence)._new()
  53476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53477. ,$ctx1.sendIdx["new"]=1
  53478. //>>excludeEnd("ctx");
  53479. ][0],(function(){
  53480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53481. return $core.withContext(function($ctx2) {
  53482. //>>excludeEnd("ctx");
  53483. return $recv([$recv(aNode)._dagChildren()
  53484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53485. ,$ctx2.sendIdx["dagChildren"]=1
  53486. //>>excludeEnd("ctx");
  53487. ][0])._ifNotEmpty_((function(){
  53488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53489. return $core.withContext(function($ctx3) {
  53490. //>>excludeEnd("ctx");
  53491. $recv($recv([$recv(aNode)._dagChildren()
  53492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53493. ,$ctx3.sendIdx["dagChildren"]=2
  53494. //>>excludeEnd("ctx");
  53495. ][0])._allButLast())._do_((function(each){
  53496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53497. return $core.withContext(function($ctx4) {
  53498. //>>excludeEnd("ctx");
  53499. return [$self._addToSequence_([$self._visit_(each)
  53500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53501. ,$ctx4.sendIdx["visit:"]=1
  53502. //>>excludeEnd("ctx");
  53503. ][0])
  53504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53505. ,$ctx4.sendIdx["addToSequence:"]=1
  53506. //>>excludeEnd("ctx");
  53507. ][0];
  53508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53509. }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)});
  53510. //>>excludeEnd("ctx");
  53511. }));
  53512. if($core.assert($recv([$recv([$recv(aNode)._dagChildren()
  53513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53514. ,$ctx3.sendIdx["dagChildren"]=3
  53515. //>>excludeEnd("ctx");
  53516. ][0])._last()
  53517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53518. ,$ctx3.sendIdx["last"]=1
  53519. //>>excludeEnd("ctx");
  53520. ][0])._isReturnNode())){
  53521. return $self._addToSequence_($self._visit_($recv($recv(aNode)._dagChildren())._last()));
  53522. } else {
  53523. $1=$recv($globals.IRBlockReturn)._new();
  53524. $recv($1)._add_([$self._visit_([$recv([$recv(aNode)._dagChildren()
  53525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53526. ,$ctx3.sendIdx["dagChildren"]=4
  53527. //>>excludeEnd("ctx");
  53528. ][0])._last()
  53529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53530. ,$ctx3.sendIdx["last"]=2
  53531. //>>excludeEnd("ctx");
  53532. ][0])
  53533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53534. ,$ctx3.sendIdx["visit:"]=2
  53535. //>>excludeEnd("ctx");
  53536. ][0]);
  53537. return [$self._addToSequence_($recv($1)._yourself())
  53538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53539. ,$ctx3.sendIdx["addToSequence:"]=2
  53540. //>>excludeEnd("ctx");
  53541. ][0];
  53542. }
  53543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53544. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  53545. //>>excludeEnd("ctx");
  53546. }));
  53547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53548. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  53549. //>>excludeEnd("ctx");
  53550. }));
  53551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53552. }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode})});
  53553. //>>excludeEnd("ctx");
  53554. }; }),
  53555. $globals.IRASTTranslator);
  53556. $core.addMethod(
  53557. $core.method({
  53558. selector: "visitCascadeNode:",
  53559. protocol: "visiting",
  53560. //>>excludeStart("ide", pragmas.excludeIdeData);
  53561. args: ["aNode"],
  53562. source: "visitCascadeNode: aNode\x0a\x09| receiver |\x0a\x09receiver := aNode receiver.\x0a\x09receiver isIdempotent ifFalse: [\x0a\x09\x09| alias |\x0a\x09\x09alias := self alias: receiver.\x0a\x09\x09receiver := VariableNode new binding: alias variable ].\x0a\x09aNode dagChildren do: [ :each | each receiver: receiver ].\x0a\x0a\x09aNode dagChildren allButLast do: [ :each |\x0a\x09\x09self addToSequence: (self visit: each) ].\x0a\x0a\x09^ self visit: aNode dagChildren last",
  53563. referencedClasses: ["VariableNode"],
  53564. //>>excludeEnd("ide");
  53565. pragmas: [],
  53566. messageSends: ["receiver", "ifFalse:", "isIdempotent", "alias:", "binding:", "new", "variable", "do:", "dagChildren", "receiver:", "allButLast", "addToSequence:", "visit:", "last"]
  53567. }, function ($methodClass){ return function (aNode){
  53568. var self=this,$self=this;
  53569. var receiver;
  53570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53571. return $core.withContext(function($ctx1) {
  53572. //>>excludeEnd("ctx");
  53573. receiver=$recv(aNode)._receiver();
  53574. if(!$core.assert($recv(receiver)._isIdempotent())){
  53575. var alias;
  53576. alias=$self._alias_(receiver);
  53577. receiver=$recv($recv($globals.VariableNode)._new())._binding_($recv(alias)._variable());
  53578. receiver;
  53579. }
  53580. [$recv([$recv(aNode)._dagChildren()
  53581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53582. ,$ctx1.sendIdx["dagChildren"]=1
  53583. //>>excludeEnd("ctx");
  53584. ][0])._do_((function(each){
  53585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53586. return $core.withContext(function($ctx2) {
  53587. //>>excludeEnd("ctx");
  53588. return $recv(each)._receiver_(receiver);
  53589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53590. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  53591. //>>excludeEnd("ctx");
  53592. }))
  53593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53594. ,$ctx1.sendIdx["do:"]=1
  53595. //>>excludeEnd("ctx");
  53596. ][0];
  53597. $recv($recv([$recv(aNode)._dagChildren()
  53598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53599. ,$ctx1.sendIdx["dagChildren"]=2
  53600. //>>excludeEnd("ctx");
  53601. ][0])._allButLast())._do_((function(each){
  53602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53603. return $core.withContext(function($ctx2) {
  53604. //>>excludeEnd("ctx");
  53605. return $self._addToSequence_([$self._visit_(each)
  53606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53607. ,$ctx2.sendIdx["visit:"]=1
  53608. //>>excludeEnd("ctx");
  53609. ][0]);
  53610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53611. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  53612. //>>excludeEnd("ctx");
  53613. }));
  53614. return $self._visit_($recv($recv(aNode)._dagChildren())._last());
  53615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53616. }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode,receiver:receiver})});
  53617. //>>excludeEnd("ctx");
  53618. }; }),
  53619. $globals.IRASTTranslator);
  53620. $core.addMethod(
  53621. $core.method({
  53622. selector: "visitDynamicArrayNode:",
  53623. protocol: "visiting",
  53624. //>>excludeStart("ide", pragmas.excludeIdeData);
  53625. args: ["aNode"],
  53626. source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\x09(self aliasTemporally: aNode dagChildren) do: [ :each | array add: each ].\x0a\x09^ array",
  53627. referencedClasses: ["IRDynamicArray"],
  53628. //>>excludeEnd("ide");
  53629. pragmas: [],
  53630. messageSends: ["new", "do:", "aliasTemporally:", "dagChildren", "add:"]
  53631. }, function ($methodClass){ return function (aNode){
  53632. var self=this,$self=this;
  53633. var array;
  53634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53635. return $core.withContext(function($ctx1) {
  53636. //>>excludeEnd("ctx");
  53637. array=$recv($globals.IRDynamicArray)._new();
  53638. $recv($self._aliasTemporally_($recv(aNode)._dagChildren()))._do_((function(each){
  53639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53640. return $core.withContext(function($ctx2) {
  53641. //>>excludeEnd("ctx");
  53642. return $recv(array)._add_(each);
  53643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53644. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  53645. //>>excludeEnd("ctx");
  53646. }));
  53647. return array;
  53648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53649. }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array})});
  53650. //>>excludeEnd("ctx");
  53651. }; }),
  53652. $globals.IRASTTranslator);
  53653. $core.addMethod(
  53654. $core.method({
  53655. selector: "visitDynamicDictionaryNode:",
  53656. protocol: "visiting",
  53657. //>>excludeStart("ide", pragmas.excludeIdeData);
  53658. args: ["aNode"],
  53659. source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a\x09(self aliasTemporally: aNode dagChildren) do: [ :each | dictionary add: each ].\x0a\x09^ dictionary",
  53660. referencedClasses: ["IRDynamicDictionary"],
  53661. //>>excludeEnd("ide");
  53662. pragmas: [],
  53663. messageSends: ["new", "do:", "aliasTemporally:", "dagChildren", "add:"]
  53664. }, function ($methodClass){ return function (aNode){
  53665. var self=this,$self=this;
  53666. var dictionary;
  53667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53668. return $core.withContext(function($ctx1) {
  53669. //>>excludeEnd("ctx");
  53670. dictionary=$recv($globals.IRDynamicDictionary)._new();
  53671. $recv($self._aliasTemporally_($recv(aNode)._dagChildren()))._do_((function(each){
  53672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53673. return $core.withContext(function($ctx2) {
  53674. //>>excludeEnd("ctx");
  53675. return $recv(dictionary)._add_(each);
  53676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53677. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  53678. //>>excludeEnd("ctx");
  53679. }));
  53680. return dictionary;
  53681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53682. }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,dictionary:dictionary})});
  53683. //>>excludeEnd("ctx");
  53684. }; }),
  53685. $globals.IRASTTranslator);
  53686. $core.addMethod(
  53687. $core.method({
  53688. selector: "visitJSStatementNode:",
  53689. protocol: "visiting",
  53690. //>>excludeStart("ide", pragmas.excludeIdeData);
  53691. args: ["aNode"],
  53692. source: "visitJSStatementNode: aNode\x0a\x09^ IRVerbatim new\x0a\x09\x09source: aNode source crlfSanitized;\x0a\x09\x09yourself",
  53693. referencedClasses: ["IRVerbatim"],
  53694. //>>excludeEnd("ide");
  53695. pragmas: [],
  53696. messageSends: ["source:", "new", "crlfSanitized", "source", "yourself"]
  53697. }, function ($methodClass){ return function (aNode){
  53698. var self=this,$self=this;
  53699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53700. return $core.withContext(function($ctx1) {
  53701. //>>excludeEnd("ctx");
  53702. var $1;
  53703. $1=$recv($globals.IRVerbatim)._new();
  53704. $recv($1)._source_($recv($recv(aNode)._source())._crlfSanitized());
  53705. return $recv($1)._yourself();
  53706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53707. }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode})});
  53708. //>>excludeEnd("ctx");
  53709. }; }),
  53710. $globals.IRASTTranslator);
  53711. $core.addMethod(
  53712. $core.method({
  53713. selector: "visitMethodNode:",
  53714. protocol: "visiting",
  53715. //>>excludeStart("ide", pragmas.excludeIdeData);
  53716. args: ["aNode"],
  53717. source: "visitMethodNode: aNode\x0a\x09| irSequence |\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source;\x0a\x09\x09pragmas: (aNode pragmas collect: [ :each |\x0a\x09\x09\x09Message\x0a\x09\x09\x09\x09selector: each selector\x0a\x09\x09\x09\x09arguments: (each arguments collect: [ :eachArg |\x0a\x09\x09\x09\x09\x09eachArg isString ifTrue: [ eachArg crlfSanitized ] ifFalse: [ eachArg ]])]);\x0a\x09\x09theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09sendIndexes: aNode sendIndexes;\x0a\x09\x09requiresSmalltalkContext: aNode requiresSmalltalkContext;\x0a\x09\x09classReferences: aNode classReferences;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself).\x0a\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09self method add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09self method add: (irSequence := self visit: aNode sequenceNode).\x0a\x0a\x09aNode scope hasLocalReturn ifFalse: [ irSequence\x0a\x09\x09add: (IRReturn new\x0a\x09\x09\x09add: (IRVariable new\x0a\x09\x09\x09\x09variable: (aNode scope pseudoVars at: 'self');\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09^ self method",
  53718. referencedClasses: ["IRMethod", "Message", "IRTempDeclaration", "IRReturn", "IRVariable"],
  53719. //>>excludeEnd("ide");
  53720. pragmas: [],
  53721. messageSends: ["method:", "source:", "new", "source", "pragmas:", "collect:", "pragmas", "selector:arguments:", "selector", "arguments", "ifTrue:ifFalse:", "isString", "crlfSanitized", "theClass:", "theClass", "arguments:", "selector:", "sendIndexes:", "sendIndexes", "requiresSmalltalkContext:", "requiresSmalltalkContext", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "temps", "add:", "method", "name:", "name", "visit:", "sequenceNode", "ifFalse:", "hasLocalReturn", "variable:", "at:", "pseudoVars"]
  53722. }, function ($methodClass){ return function (aNode){
  53723. var self=this,$self=this;
  53724. var irSequence;
  53725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53726. return $core.withContext(function($ctx1) {
  53727. //>>excludeEnd("ctx");
  53728. var $1,$2,$3,$4,$5,$6,$7;
  53729. $1=[$recv($globals.IRMethod)._new()
  53730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53731. ,$ctx1.sendIdx["new"]=1
  53732. //>>excludeEnd("ctx");
  53733. ][0];
  53734. $recv($1)._source_($self._source());
  53735. $recv($1)._pragmas_([$recv($recv(aNode)._pragmas())._collect_((function(each){
  53736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53737. return $core.withContext(function($ctx2) {
  53738. //>>excludeEnd("ctx");
  53739. return $recv($globals.Message)._selector_arguments_([$recv(each)._selector()
  53740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53741. ,$ctx2.sendIdx["selector"]=1
  53742. //>>excludeEnd("ctx");
  53743. ][0],$recv([$recv(each)._arguments()
  53744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53745. ,$ctx2.sendIdx["arguments"]=1
  53746. //>>excludeEnd("ctx");
  53747. ][0])._collect_((function(eachArg){
  53748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53749. return $core.withContext(function($ctx3) {
  53750. //>>excludeEnd("ctx");
  53751. if($core.assert($recv(eachArg)._isString())){
  53752. return $recv(eachArg)._crlfSanitized();
  53753. } else {
  53754. return eachArg;
  53755. }
  53756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53757. }, function($ctx3) {$ctx3.fillBlock({eachArg:eachArg},$ctx2,2)});
  53758. //>>excludeEnd("ctx");
  53759. })));
  53760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53761. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  53762. //>>excludeEnd("ctx");
  53763. }))
  53764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53765. ,$ctx1.sendIdx["collect:"]=1
  53766. //>>excludeEnd("ctx");
  53767. ][0]);
  53768. $recv($1)._theClass_($self._theClass());
  53769. $recv($1)._arguments_($recv(aNode)._arguments());
  53770. $recv($1)._selector_($recv(aNode)._selector());
  53771. $recv($1)._sendIndexes_($recv(aNode)._sendIndexes());
  53772. $recv($1)._requiresSmalltalkContext_($recv(aNode)._requiresSmalltalkContext());
  53773. $recv($1)._classReferences_($recv(aNode)._classReferences());
  53774. [$recv($1)._scope_([$recv(aNode)._scope()
  53775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53776. ,$ctx1.sendIdx["scope"]=1
  53777. //>>excludeEnd("ctx");
  53778. ][0])
  53779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53780. ,$ctx1.sendIdx["scope:"]=1
  53781. //>>excludeEnd("ctx");
  53782. ][0];
  53783. $self._method_([$recv($1)._yourself()
  53784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53785. ,$ctx1.sendIdx["yourself"]=1
  53786. //>>excludeEnd("ctx");
  53787. ][0]);
  53788. $recv($recv([$recv(aNode)._scope()
  53789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53790. ,$ctx1.sendIdx["scope"]=2
  53791. //>>excludeEnd("ctx");
  53792. ][0])._temps())._do_((function(each){
  53793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53794. return $core.withContext(function($ctx2) {
  53795. //>>excludeEnd("ctx");
  53796. $2=[$self._method()
  53797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53798. ,$ctx2.sendIdx["method"]=1
  53799. //>>excludeEnd("ctx");
  53800. ][0];
  53801. $3=[$recv($globals.IRTempDeclaration)._new()
  53802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53803. ,$ctx2.sendIdx["new"]=2
  53804. //>>excludeEnd("ctx");
  53805. ][0];
  53806. $recv($3)._name_($recv(each)._name());
  53807. $recv($3)._scope_([$recv(aNode)._scope()
  53808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53809. ,$ctx2.sendIdx["scope"]=3
  53810. //>>excludeEnd("ctx");
  53811. ][0]);
  53812. return [$recv($2)._add_([$recv($3)._yourself()
  53813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53814. ,$ctx2.sendIdx["yourself"]=2
  53815. //>>excludeEnd("ctx");
  53816. ][0])
  53817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53818. ,$ctx2.sendIdx["add:"]=1
  53819. //>>excludeEnd("ctx");
  53820. ][0];
  53821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53822. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)});
  53823. //>>excludeEnd("ctx");
  53824. }));
  53825. $4=[$self._method()
  53826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53827. ,$ctx1.sendIdx["method"]=2
  53828. //>>excludeEnd("ctx");
  53829. ][0];
  53830. irSequence=$self._visit_($recv(aNode)._sequenceNode());
  53831. [$recv($4)._add_(irSequence)
  53832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53833. ,$ctx1.sendIdx["add:"]=2
  53834. //>>excludeEnd("ctx");
  53835. ][0];
  53836. if(!$core.assert($recv([$recv(aNode)._scope()
  53837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53838. ,$ctx1.sendIdx["scope"]=4
  53839. //>>excludeEnd("ctx");
  53840. ][0])._hasLocalReturn())){
  53841. $5=irSequence;
  53842. $6=[$recv($globals.IRReturn)._new()
  53843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53844. ,$ctx1.sendIdx["new"]=3
  53845. //>>excludeEnd("ctx");
  53846. ][0];
  53847. $7=$recv($globals.IRVariable)._new();
  53848. $recv($7)._variable_($recv($recv($recv(aNode)._scope())._pseudoVars())._at_("self"));
  53849. $recv($6)._add_([$recv($7)._yourself()
  53850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53851. ,$ctx1.sendIdx["yourself"]=3
  53852. //>>excludeEnd("ctx");
  53853. ][0]);
  53854. [$recv($5)._add_($recv($6)._yourself())
  53855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53856. ,$ctx1.sendIdx["add:"]=3
  53857. //>>excludeEnd("ctx");
  53858. ][0];
  53859. }
  53860. return $self._method();
  53861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53862. }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode,irSequence:irSequence})});
  53863. //>>excludeEnd("ctx");
  53864. }; }),
  53865. $globals.IRASTTranslator);
  53866. $core.addMethod(
  53867. $core.method({
  53868. selector: "visitReturnNode:",
  53869. protocol: "visiting",
  53870. //>>excludeStart("ide", pragmas.excludeIdeData);
  53871. args: ["aNode"],
  53872. source: "visitReturnNode: aNode\x0a\x09^ (aNode nonLocalReturn\x0a\x09\x09ifTrue: [ IRNonLocalReturn new ]\x0a\x09\x09ifFalse: [ IRReturn new ])\x0a\x09\x09scope: aNode scope;\x0a\x09\x09add: (self visit: aNode expression);\x0a\x09\x09yourself",
  53873. referencedClasses: ["IRNonLocalReturn", "IRReturn"],
  53874. //>>excludeEnd("ide");
  53875. pragmas: [],
  53876. messageSends: ["scope:", "ifTrue:ifFalse:", "nonLocalReturn", "new", "scope", "add:", "visit:", "expression", "yourself"]
  53877. }, function ($methodClass){ return function (aNode){
  53878. var self=this,$self=this;
  53879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53880. return $core.withContext(function($ctx1) {
  53881. //>>excludeEnd("ctx");
  53882. var $1;
  53883. if($core.assert($recv(aNode)._nonLocalReturn())){
  53884. $1=[$recv($globals.IRNonLocalReturn)._new()
  53885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53886. ,$ctx1.sendIdx["new"]=1
  53887. //>>excludeEnd("ctx");
  53888. ][0];
  53889. } else {
  53890. $1=$recv($globals.IRReturn)._new();
  53891. }
  53892. $recv($1)._scope_($recv(aNode)._scope());
  53893. $recv($1)._add_($self._visit_($recv(aNode)._expression()));
  53894. return $recv($1)._yourself();
  53895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53896. }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode})});
  53897. //>>excludeEnd("ctx");
  53898. }; }),
  53899. $globals.IRASTTranslator);
  53900. $core.addMethod(
  53901. $core.method({
  53902. selector: "visitSendNode:",
  53903. protocol: "visiting",
  53904. //>>excludeStart("ide", pragmas.excludeIdeData);
  53905. args: ["aNode"],
  53906. source: "visitSendNode: aNode\x0a\x09| send |\x0a\x09send := IRSend new.\x0a\x09send\x0a\x09\x09selector: aNode selector;\x0a\x09\x09javaScriptSelector: aNode javaScriptSelector;\x0a\x09\x09argumentSwitcher: aNode argumentSwitcher;\x0a\x09\x09index: aNode index.\x0a\x09\x0a\x09(self aliasTemporally: aNode dagChildren) do: [ :each | send add: each ].\x0a\x0a\x09^ send",
  53907. referencedClasses: ["IRSend"],
  53908. //>>excludeEnd("ide");
  53909. pragmas: [],
  53910. messageSends: ["new", "selector:", "selector", "javaScriptSelector:", "javaScriptSelector", "argumentSwitcher:", "argumentSwitcher", "index:", "index", "do:", "aliasTemporally:", "dagChildren", "add:"]
  53911. }, function ($methodClass){ return function (aNode){
  53912. var self=this,$self=this;
  53913. var send;
  53914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53915. return $core.withContext(function($ctx1) {
  53916. //>>excludeEnd("ctx");
  53917. var $1;
  53918. send=$recv($globals.IRSend)._new();
  53919. $1=send;
  53920. $recv($1)._selector_($recv(aNode)._selector());
  53921. $recv($1)._javaScriptSelector_($recv(aNode)._javaScriptSelector());
  53922. $recv($1)._argumentSwitcher_($recv(aNode)._argumentSwitcher());
  53923. $recv($1)._index_($recv(aNode)._index());
  53924. $recv($self._aliasTemporally_($recv(aNode)._dagChildren()))._do_((function(each){
  53925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53926. return $core.withContext(function($ctx2) {
  53927. //>>excludeEnd("ctx");
  53928. return $recv(send)._add_(each);
  53929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53930. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  53931. //>>excludeEnd("ctx");
  53932. }));
  53933. return send;
  53934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53935. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,send:send})});
  53936. //>>excludeEnd("ctx");
  53937. }; }),
  53938. $globals.IRASTTranslator);
  53939. $core.addMethod(
  53940. $core.method({
  53941. selector: "visitSequenceNode:",
  53942. protocol: "visiting",
  53943. //>>excludeStart("ide", pragmas.excludeIdeData);
  53944. args: ["aNode"],
  53945. source: "visitSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRSequence new\x0a\x09\x09do: [ aNode dagChildren do: [ :each |\x0a\x09\x09\x09self addToSequence: (self visit: each) ] ]",
  53946. referencedClasses: ["IRSequence"],
  53947. //>>excludeEnd("ide");
  53948. pragmas: [],
  53949. messageSends: ["withSequence:do:", "new", "do:", "dagChildren", "addToSequence:", "visit:"]
  53950. }, function ($methodClass){ return function (aNode){
  53951. var self=this,$self=this;
  53952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53953. return $core.withContext(function($ctx1) {
  53954. //>>excludeEnd("ctx");
  53955. return $self._withSequence_do_($recv($globals.IRSequence)._new(),(function(){
  53956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53957. return $core.withContext(function($ctx2) {
  53958. //>>excludeEnd("ctx");
  53959. return $recv($recv(aNode)._dagChildren())._do_((function(each){
  53960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53961. return $core.withContext(function($ctx3) {
  53962. //>>excludeEnd("ctx");
  53963. return $self._addToSequence_($self._visit_(each));
  53964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53965. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  53966. //>>excludeEnd("ctx");
  53967. }));
  53968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53969. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  53970. //>>excludeEnd("ctx");
  53971. }));
  53972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53973. }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode})});
  53974. //>>excludeEnd("ctx");
  53975. }; }),
  53976. $globals.IRASTTranslator);
  53977. $core.addMethod(
  53978. $core.method({
  53979. selector: "visitValueNode:",
  53980. protocol: "visiting",
  53981. //>>excludeStart("ide", pragmas.excludeIdeData);
  53982. args: ["aNode"],
  53983. source: "visitValueNode: aNode\x0a\x09^ IRValue new\x0a\x09\x09value: aNode value;\x0a\x09\x09yourself",
  53984. referencedClasses: ["IRValue"],
  53985. //>>excludeEnd("ide");
  53986. pragmas: [],
  53987. messageSends: ["value:", "new", "value", "yourself"]
  53988. }, function ($methodClass){ return function (aNode){
  53989. var self=this,$self=this;
  53990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53991. return $core.withContext(function($ctx1) {
  53992. //>>excludeEnd("ctx");
  53993. var $1;
  53994. $1=$recv($globals.IRValue)._new();
  53995. $recv($1)._value_($recv(aNode)._value());
  53996. return $recv($1)._yourself();
  53997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53998. }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode})});
  53999. //>>excludeEnd("ctx");
  54000. }; }),
  54001. $globals.IRASTTranslator);
  54002. $core.addMethod(
  54003. $core.method({
  54004. selector: "visitVariableNode:",
  54005. protocol: "visiting",
  54006. //>>excludeStart("ide", pragmas.excludeIdeData);
  54007. args: ["aNode"],
  54008. source: "visitVariableNode: aNode\x0a\x09^ IRVariable new\x0a\x09\x09variable: aNode binding;\x0a\x09\x09yourself",
  54009. referencedClasses: ["IRVariable"],
  54010. //>>excludeEnd("ide");
  54011. pragmas: [],
  54012. messageSends: ["variable:", "new", "binding", "yourself"]
  54013. }, function ($methodClass){ return function (aNode){
  54014. var self=this,$self=this;
  54015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54016. return $core.withContext(function($ctx1) {
  54017. //>>excludeEnd("ctx");
  54018. var $1;
  54019. $1=$recv($globals.IRVariable)._new();
  54020. $recv($1)._variable_($recv(aNode)._binding());
  54021. return $recv($1)._yourself();
  54022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54023. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
  54024. //>>excludeEnd("ctx");
  54025. }; }),
  54026. $globals.IRASTTranslator);
  54027. $core.addMethod(
  54028. $core.method({
  54029. selector: "withSequence:do:",
  54030. protocol: "accessing",
  54031. //>>excludeStart("ide", pragmas.excludeIdeData);
  54032. args: ["aSequence", "aBlock"],
  54033. source: "withSequence: aSequence do: aBlock\x0a\x09| outerSequence |\x0a\x09outerSequence := self sequence.\x0a\x09self sequence: aSequence.\x0a\x09aBlock value.\x0a\x09self sequence: outerSequence.\x0a\x09^ aSequence",
  54034. referencedClasses: [],
  54035. //>>excludeEnd("ide");
  54036. pragmas: [],
  54037. messageSends: ["sequence", "sequence:", "value"]
  54038. }, function ($methodClass){ return function (aSequence,aBlock){
  54039. var self=this,$self=this;
  54040. var outerSequence;
  54041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54042. return $core.withContext(function($ctx1) {
  54043. //>>excludeEnd("ctx");
  54044. outerSequence=$self._sequence();
  54045. [$self._sequence_(aSequence)
  54046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54047. ,$ctx1.sendIdx["sequence:"]=1
  54048. //>>excludeEnd("ctx");
  54049. ][0];
  54050. $recv(aBlock)._value();
  54051. $self._sequence_(outerSequence);
  54052. return aSequence;
  54053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54054. }, function($ctx1) {$ctx1.fill(self,"withSequence:do:",{aSequence:aSequence,aBlock:aBlock,outerSequence:outerSequence})});
  54055. //>>excludeEnd("ctx");
  54056. }; }),
  54057. $globals.IRASTTranslator);
  54058. $core.addClass("IRAliasFactory", $globals.Object, "Compiler-IR");
  54059. $core.setSlots($globals.IRAliasFactory, ["counter"]);
  54060. $core.addMethod(
  54061. $core.method({
  54062. selector: "initialize",
  54063. protocol: "initialization",
  54064. //>>excludeStart("ide", pragmas.excludeIdeData);
  54065. args: [],
  54066. source: "initialize\x0a\x09super initialize.\x0a\x09counter := 0",
  54067. referencedClasses: [],
  54068. //>>excludeEnd("ide");
  54069. pragmas: [],
  54070. messageSends: ["initialize"]
  54071. }, function ($methodClass){ return function (){
  54072. var self=this,$self=this;
  54073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54074. return $core.withContext(function($ctx1) {
  54075. //>>excludeEnd("ctx");
  54076. [(
  54077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54078. $ctx1.supercall = true,
  54079. //>>excludeEnd("ctx");
  54080. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  54081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54082. ,$ctx1.supercall = false
  54083. //>>excludeEnd("ctx");
  54084. ][0];
  54085. $self.counter=(0);
  54086. return self;
  54087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54088. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  54089. //>>excludeEnd("ctx");
  54090. }; }),
  54091. $globals.IRAliasFactory);
  54092. $core.addMethod(
  54093. $core.method({
  54094. selector: "next",
  54095. protocol: "accessing",
  54096. //>>excludeStart("ide", pragmas.excludeIdeData);
  54097. args: [],
  54098. source: "next\x0a\x09counter := counter + 1.\x0a\x09^ AliasVar new\x0a\x09\x09name: '$', counter asString;\x0a\x09\x09yourself",
  54099. referencedClasses: ["AliasVar"],
  54100. //>>excludeEnd("ide");
  54101. pragmas: [],
  54102. messageSends: ["+", "name:", "new", ",", "asString", "yourself"]
  54103. }, function ($methodClass){ return function (){
  54104. var self=this,$self=this;
  54105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54106. return $core.withContext(function($ctx1) {
  54107. //>>excludeEnd("ctx");
  54108. var $1;
  54109. $self.counter=$recv($self.counter).__plus((1));
  54110. $1=$recv($globals.AliasVar)._new();
  54111. $recv($1)._name_("$".__comma($recv($self.counter)._asString()));
  54112. return $recv($1)._yourself();
  54113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54114. }, function($ctx1) {$ctx1.fill(self,"next",{})});
  54115. //>>excludeEnd("ctx");
  54116. }; }),
  54117. $globals.IRAliasFactory);
  54118. $core.addClass("IRInstruction", $globals.DagParentNode, "Compiler-IR");
  54119. $core.setSlots($globals.IRInstruction, ["parent"]);
  54120. //>>excludeStart("ide", pragmas.excludeIdeData);
  54121. $globals.IRInstruction.comment="I am the abstract root class of the IR (intermediate representation) instructions class hierarchy.\x0aThe IR graph is used to emit JavaScript code using a JSStream.";
  54122. //>>excludeEnd("ide");
  54123. $core.addMethod(
  54124. $core.method({
  54125. selector: "add:",
  54126. protocol: "building",
  54127. //>>excludeStart("ide", pragmas.excludeIdeData);
  54128. args: ["anObject"],
  54129. source: "add: anObject\x0a\x09^ self addDagChild: anObject",
  54130. referencedClasses: [],
  54131. //>>excludeEnd("ide");
  54132. pragmas: [],
  54133. messageSends: ["addDagChild:"]
  54134. }, function ($methodClass){ return function (anObject){
  54135. var self=this,$self=this;
  54136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54137. return $core.withContext(function($ctx1) {
  54138. //>>excludeEnd("ctx");
  54139. return $self._addDagChild_(anObject);
  54140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54141. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject})});
  54142. //>>excludeEnd("ctx");
  54143. }; }),
  54144. $globals.IRInstruction);
  54145. $core.addMethod(
  54146. $core.method({
  54147. selector: "asReceiver",
  54148. protocol: "converting",
  54149. //>>excludeStart("ide", pragmas.excludeIdeData);
  54150. args: [],
  54151. source: "asReceiver\x0a\x09\x22Return customized form to act as receiver.\x0a\x09Return self to use standard $recv(...) boxing.\x22\x0a\x09^ nil",
  54152. referencedClasses: [],
  54153. //>>excludeEnd("ide");
  54154. pragmas: [],
  54155. messageSends: []
  54156. }, function ($methodClass){ return function (){
  54157. var self=this,$self=this;
  54158. return nil;
  54159. }; }),
  54160. $globals.IRInstruction);
  54161. $core.addMethod(
  54162. $core.method({
  54163. selector: "isClosure",
  54164. protocol: "testing",
  54165. //>>excludeStart("ide", pragmas.excludeIdeData);
  54166. args: [],
  54167. source: "isClosure\x0a\x09^ false",
  54168. referencedClasses: [],
  54169. //>>excludeEnd("ide");
  54170. pragmas: [],
  54171. messageSends: []
  54172. }, function ($methodClass){ return function (){
  54173. var self=this,$self=this;
  54174. return false;
  54175. }; }),
  54176. $globals.IRInstruction);
  54177. $core.addMethod(
  54178. $core.method({
  54179. selector: "isInlined",
  54180. protocol: "testing",
  54181. //>>excludeStart("ide", pragmas.excludeIdeData);
  54182. args: [],
  54183. source: "isInlined\x0a\x09^ false",
  54184. referencedClasses: [],
  54185. //>>excludeEnd("ide");
  54186. pragmas: [],
  54187. messageSends: []
  54188. }, function ($methodClass){ return function (){
  54189. var self=this,$self=this;
  54190. return false;
  54191. }; }),
  54192. $globals.IRInstruction);
  54193. $core.addMethod(
  54194. $core.method({
  54195. selector: "isMethod",
  54196. protocol: "testing",
  54197. //>>excludeStart("ide", pragmas.excludeIdeData);
  54198. args: [],
  54199. source: "isMethod\x0a\x09^ false",
  54200. referencedClasses: [],
  54201. //>>excludeEnd("ide");
  54202. pragmas: [],
  54203. messageSends: []
  54204. }, function ($methodClass){ return function (){
  54205. var self=this,$self=this;
  54206. return false;
  54207. }; }),
  54208. $globals.IRInstruction);
  54209. $core.addMethod(
  54210. $core.method({
  54211. selector: "isSend",
  54212. protocol: "testing",
  54213. //>>excludeStart("ide", pragmas.excludeIdeData);
  54214. args: [],
  54215. source: "isSend\x0a\x09^ false",
  54216. referencedClasses: [],
  54217. //>>excludeEnd("ide");
  54218. pragmas: [],
  54219. messageSends: []
  54220. }, function ($methodClass){ return function (){
  54221. var self=this,$self=this;
  54222. return false;
  54223. }; }),
  54224. $globals.IRInstruction);
  54225. $core.addMethod(
  54226. $core.method({
  54227. selector: "isSequence",
  54228. protocol: "testing",
  54229. //>>excludeStart("ide", pragmas.excludeIdeData);
  54230. args: [],
  54231. source: "isSequence\x0a\x09^ false",
  54232. referencedClasses: [],
  54233. //>>excludeEnd("ide");
  54234. pragmas: [],
  54235. messageSends: []
  54236. }, function ($methodClass){ return function (){
  54237. var self=this,$self=this;
  54238. return false;
  54239. }; }),
  54240. $globals.IRInstruction);
  54241. $core.addMethod(
  54242. $core.method({
  54243. selector: "isSuper",
  54244. protocol: "testing",
  54245. //>>excludeStart("ide", pragmas.excludeIdeData);
  54246. args: [],
  54247. source: "isSuper\x0a\x09^ false",
  54248. referencedClasses: [],
  54249. //>>excludeEnd("ide");
  54250. pragmas: [],
  54251. messageSends: []
  54252. }, function ($methodClass){ return function (){
  54253. var self=this,$self=this;
  54254. return false;
  54255. }; }),
  54256. $globals.IRInstruction);
  54257. $core.addMethod(
  54258. $core.method({
  54259. selector: "isTempDeclaration",
  54260. protocol: "testing",
  54261. //>>excludeStart("ide", pragmas.excludeIdeData);
  54262. args: [],
  54263. source: "isTempDeclaration\x0a\x09^ false",
  54264. referencedClasses: [],
  54265. //>>excludeEnd("ide");
  54266. pragmas: [],
  54267. messageSends: []
  54268. }, function ($methodClass){ return function (){
  54269. var self=this,$self=this;
  54270. return false;
  54271. }; }),
  54272. $globals.IRInstruction);
  54273. $core.addMethod(
  54274. $core.method({
  54275. selector: "isVariable",
  54276. protocol: "testing",
  54277. //>>excludeStart("ide", pragmas.excludeIdeData);
  54278. args: [],
  54279. source: "isVariable\x0a\x09^ false",
  54280. referencedClasses: [],
  54281. //>>excludeEnd("ide");
  54282. pragmas: [],
  54283. messageSends: []
  54284. }, function ($methodClass){ return function (){
  54285. var self=this,$self=this;
  54286. return false;
  54287. }; }),
  54288. $globals.IRInstruction);
  54289. $core.addMethod(
  54290. $core.method({
  54291. selector: "method",
  54292. protocol: "accessing",
  54293. //>>excludeStart("ide", pragmas.excludeIdeData);
  54294. args: [],
  54295. source: "method\x0a\x09^ self parent method",
  54296. referencedClasses: [],
  54297. //>>excludeEnd("ide");
  54298. pragmas: [],
  54299. messageSends: ["method", "parent"]
  54300. }, function ($methodClass){ return function (){
  54301. var self=this,$self=this;
  54302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54303. return $core.withContext(function($ctx1) {
  54304. //>>excludeEnd("ctx");
  54305. return $recv($self._parent())._method();
  54306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54307. }, function($ctx1) {$ctx1.fill(self,"method",{})});
  54308. //>>excludeEnd("ctx");
  54309. }; }),
  54310. $globals.IRInstruction);
  54311. $core.addMethod(
  54312. $core.method({
  54313. selector: "needsBoxingAsReceiver",
  54314. protocol: "testing",
  54315. //>>excludeStart("ide", pragmas.excludeIdeData);
  54316. args: [],
  54317. source: "needsBoxingAsReceiver\x0a\x09self deprecatedAPI: 'Use asReceiver isNil instead.'.\x0a\x09^ self asReceiver isNil",
  54318. referencedClasses: [],
  54319. //>>excludeEnd("ide");
  54320. pragmas: [],
  54321. messageSends: ["deprecatedAPI:", "isNil", "asReceiver"]
  54322. }, function ($methodClass){ return function (){
  54323. var self=this,$self=this;
  54324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54325. return $core.withContext(function($ctx1) {
  54326. //>>excludeEnd("ctx");
  54327. $self._deprecatedAPI_("Use asReceiver isNil instead.");
  54328. return $recv($self._asReceiver())._isNil();
  54329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54330. }, function($ctx1) {$ctx1.fill(self,"needsBoxingAsReceiver",{})});
  54331. //>>excludeEnd("ctx");
  54332. }; }),
  54333. $globals.IRInstruction);
  54334. $core.addMethod(
  54335. $core.method({
  54336. selector: "parent",
  54337. protocol: "accessing",
  54338. //>>excludeStart("ide", pragmas.excludeIdeData);
  54339. args: [],
  54340. source: "parent\x0a\x09^ parent",
  54341. referencedClasses: [],
  54342. //>>excludeEnd("ide");
  54343. pragmas: [],
  54344. messageSends: []
  54345. }, function ($methodClass){ return function (){
  54346. var self=this,$self=this;
  54347. return $self.parent;
  54348. }; }),
  54349. $globals.IRInstruction);
  54350. $core.addMethod(
  54351. $core.method({
  54352. selector: "parent:",
  54353. protocol: "accessing",
  54354. //>>excludeStart("ide", pragmas.excludeIdeData);
  54355. args: ["anIRInstruction"],
  54356. source: "parent: anIRInstruction\x0a\x09parent := anIRInstruction",
  54357. referencedClasses: [],
  54358. //>>excludeEnd("ide");
  54359. pragmas: [],
  54360. messageSends: []
  54361. }, function ($methodClass){ return function (anIRInstruction){
  54362. var self=this,$self=this;
  54363. $self.parent=anIRInstruction;
  54364. return self;
  54365. }; }),
  54366. $globals.IRInstruction);
  54367. $core.addMethod(
  54368. $core.method({
  54369. selector: "remove:",
  54370. protocol: "building",
  54371. //>>excludeStart("ide", pragmas.excludeIdeData);
  54372. args: ["anIRInstruction"],
  54373. source: "remove: anIRInstruction\x0a\x09self dagChildren remove: anIRInstruction",
  54374. referencedClasses: [],
  54375. //>>excludeEnd("ide");
  54376. pragmas: [],
  54377. messageSends: ["remove:", "dagChildren"]
  54378. }, function ($methodClass){ return function (anIRInstruction){
  54379. var self=this,$self=this;
  54380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54381. return $core.withContext(function($ctx1) {
  54382. //>>excludeEnd("ctx");
  54383. $recv($self._dagChildren())._remove_(anIRInstruction);
  54384. return self;
  54385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54386. }, function($ctx1) {$ctx1.fill(self,"remove:",{anIRInstruction:anIRInstruction})});
  54387. //>>excludeEnd("ctx");
  54388. }; }),
  54389. $globals.IRInstruction);
  54390. $core.addMethod(
  54391. $core.method({
  54392. selector: "replace:with:",
  54393. protocol: "building",
  54394. //>>excludeStart("ide", pragmas.excludeIdeData);
  54395. args: ["anIRInstruction", "anotherIRInstruction"],
  54396. source: "replace: anIRInstruction with: anotherIRInstruction\x0a\x09anotherIRInstruction parent: self.\x0a\x09self dagChildren\x0a\x09\x09at: (self dagChildren indexOf: anIRInstruction)\x0a\x09\x09put: anotherIRInstruction",
  54397. referencedClasses: [],
  54398. //>>excludeEnd("ide");
  54399. pragmas: [],
  54400. messageSends: ["parent:", "at:put:", "dagChildren", "indexOf:"]
  54401. }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
  54402. var self=this,$self=this;
  54403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54404. return $core.withContext(function($ctx1) {
  54405. //>>excludeEnd("ctx");
  54406. $recv(anotherIRInstruction)._parent_(self);
  54407. $recv([$self._dagChildren()
  54408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54409. ,$ctx1.sendIdx["dagChildren"]=1
  54410. //>>excludeEnd("ctx");
  54411. ][0])._at_put_($recv($self._dagChildren())._indexOf_(anIRInstruction),anotherIRInstruction);
  54412. return self;
  54413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54414. }, function($ctx1) {$ctx1.fill(self,"replace:with:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
  54415. //>>excludeEnd("ctx");
  54416. }; }),
  54417. $globals.IRInstruction);
  54418. $core.addMethod(
  54419. $core.method({
  54420. selector: "replaceWith:",
  54421. protocol: "building",
  54422. //>>excludeStart("ide", pragmas.excludeIdeData);
  54423. args: ["anIRInstruction"],
  54424. source: "replaceWith: anIRInstruction\x0a\x09self parent replace: self with: anIRInstruction",
  54425. referencedClasses: [],
  54426. //>>excludeEnd("ide");
  54427. pragmas: [],
  54428. messageSends: ["replace:with:", "parent"]
  54429. }, function ($methodClass){ return function (anIRInstruction){
  54430. var self=this,$self=this;
  54431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54432. return $core.withContext(function($ctx1) {
  54433. //>>excludeEnd("ctx");
  54434. $recv($self._parent())._replace_with_(self,anIRInstruction);
  54435. return self;
  54436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54437. }, function($ctx1) {$ctx1.fill(self,"replaceWith:",{anIRInstruction:anIRInstruction})});
  54438. //>>excludeEnd("ctx");
  54439. }; }),
  54440. $globals.IRInstruction);
  54441. $core.addMethod(
  54442. $core.method({
  54443. selector: "scope",
  54444. protocol: "accessing",
  54445. //>>excludeStart("ide", pragmas.excludeIdeData);
  54446. args: [],
  54447. source: "scope\x0a\x09^ self parent ifNotNil: [ :node | \x0a\x09\x09node scope ]",
  54448. referencedClasses: [],
  54449. //>>excludeEnd("ide");
  54450. pragmas: [],
  54451. messageSends: ["ifNotNil:", "parent", "scope"]
  54452. }, function ($methodClass){ return function (){
  54453. var self=this,$self=this;
  54454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54455. return $core.withContext(function($ctx1) {
  54456. //>>excludeEnd("ctx");
  54457. var $1;
  54458. $1=$self._parent();
  54459. if($1 == null || $1.a$nil){
  54460. return $1;
  54461. } else {
  54462. var node;
  54463. node=$1;
  54464. return $recv(node)._scope();
  54465. }
  54466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54467. }, function($ctx1) {$ctx1.fill(self,"scope",{})});
  54468. //>>excludeEnd("ctx");
  54469. }; }),
  54470. $globals.IRInstruction);
  54471. $core.addMethod(
  54472. $core.method({
  54473. selector: "yieldsValue",
  54474. protocol: "testing",
  54475. //>>excludeStart("ide", pragmas.excludeIdeData);
  54476. args: [],
  54477. source: "yieldsValue\x0a\x09^ true",
  54478. referencedClasses: [],
  54479. //>>excludeEnd("ide");
  54480. pragmas: [],
  54481. messageSends: []
  54482. }, function ($methodClass){ return function (){
  54483. var self=this,$self=this;
  54484. return true;
  54485. }; }),
  54486. $globals.IRInstruction);
  54487. $core.addMethod(
  54488. $core.method({
  54489. selector: "on:",
  54490. protocol: "instance creation",
  54491. //>>excludeStart("ide", pragmas.excludeIdeData);
  54492. args: ["aBuilder"],
  54493. source: "on: aBuilder\x0a\x09^ self new\x0a\x09\x09builder: aBuilder;\x0a\x09\x09yourself",
  54494. referencedClasses: [],
  54495. //>>excludeEnd("ide");
  54496. pragmas: [],
  54497. messageSends: ["builder:", "new", "yourself"]
  54498. }, function ($methodClass){ return function (aBuilder){
  54499. var self=this,$self=this;
  54500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54501. return $core.withContext(function($ctx1) {
  54502. //>>excludeEnd("ctx");
  54503. var $1;
  54504. $1=$self._new();
  54505. $recv($1)._builder_(aBuilder);
  54506. return $recv($1)._yourself();
  54507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54508. }, function($ctx1) {$ctx1.fill(self,"on:",{aBuilder:aBuilder})});
  54509. //>>excludeEnd("ctx");
  54510. }; }),
  54511. $globals.IRInstruction.a$cls);
  54512. $core.addClass("IRAssignment", $globals.IRInstruction, "Compiler-IR");
  54513. $core.addMethod(
  54514. $core.method({
  54515. selector: "acceptDagVisitor:",
  54516. protocol: "visiting",
  54517. //>>excludeStart("ide", pragmas.excludeIdeData);
  54518. args: ["aVisitor"],
  54519. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRAssignment: self",
  54520. referencedClasses: [],
  54521. //>>excludeEnd("ide");
  54522. pragmas: [],
  54523. messageSends: ["visitIRAssignment:"]
  54524. }, function ($methodClass){ return function (aVisitor){
  54525. var self=this,$self=this;
  54526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54527. return $core.withContext(function($ctx1) {
  54528. //>>excludeEnd("ctx");
  54529. return $recv(aVisitor)._visitIRAssignment_(self);
  54530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54531. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  54532. //>>excludeEnd("ctx");
  54533. }; }),
  54534. $globals.IRAssignment);
  54535. $core.addMethod(
  54536. $core.method({
  54537. selector: "left",
  54538. protocol: "accessing",
  54539. //>>excludeStart("ide", pragmas.excludeIdeData);
  54540. args: [],
  54541. source: "left\x0a\x09^ self dagChildren first",
  54542. referencedClasses: [],
  54543. //>>excludeEnd("ide");
  54544. pragmas: [],
  54545. messageSends: ["first", "dagChildren"]
  54546. }, function ($methodClass){ return function (){
  54547. var self=this,$self=this;
  54548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54549. return $core.withContext(function($ctx1) {
  54550. //>>excludeEnd("ctx");
  54551. return $recv($self._dagChildren())._first();
  54552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54553. }, function($ctx1) {$ctx1.fill(self,"left",{})});
  54554. //>>excludeEnd("ctx");
  54555. }; }),
  54556. $globals.IRAssignment);
  54557. $core.addMethod(
  54558. $core.method({
  54559. selector: "right",
  54560. protocol: "accessing",
  54561. //>>excludeStart("ide", pragmas.excludeIdeData);
  54562. args: [],
  54563. source: "right\x0a\x09^ self dagChildren last",
  54564. referencedClasses: [],
  54565. //>>excludeEnd("ide");
  54566. pragmas: [],
  54567. messageSends: ["last", "dagChildren"]
  54568. }, function ($methodClass){ return function (){
  54569. var self=this,$self=this;
  54570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54571. return $core.withContext(function($ctx1) {
  54572. //>>excludeEnd("ctx");
  54573. return $recv($self._dagChildren())._last();
  54574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54575. }, function($ctx1) {$ctx1.fill(self,"right",{})});
  54576. //>>excludeEnd("ctx");
  54577. }; }),
  54578. $globals.IRAssignment);
  54579. $core.addClass("IRDynamicArray", $globals.IRInstruction, "Compiler-IR");
  54580. $core.addMethod(
  54581. $core.method({
  54582. selector: "acceptDagVisitor:",
  54583. protocol: "visiting",
  54584. //>>excludeStart("ide", pragmas.excludeIdeData);
  54585. args: ["aVisitor"],
  54586. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRDynamicArray: self",
  54587. referencedClasses: [],
  54588. //>>excludeEnd("ide");
  54589. pragmas: [],
  54590. messageSends: ["visitIRDynamicArray:"]
  54591. }, function ($methodClass){ return function (aVisitor){
  54592. var self=this,$self=this;
  54593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54594. return $core.withContext(function($ctx1) {
  54595. //>>excludeEnd("ctx");
  54596. return $recv(aVisitor)._visitIRDynamicArray_(self);
  54597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54598. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  54599. //>>excludeEnd("ctx");
  54600. }; }),
  54601. $globals.IRDynamicArray);
  54602. $core.addClass("IRDynamicDictionary", $globals.IRInstruction, "Compiler-IR");
  54603. $core.addMethod(
  54604. $core.method({
  54605. selector: "acceptDagVisitor:",
  54606. protocol: "visiting",
  54607. //>>excludeStart("ide", pragmas.excludeIdeData);
  54608. args: ["aVisitor"],
  54609. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRDynamicDictionary: self",
  54610. referencedClasses: [],
  54611. //>>excludeEnd("ide");
  54612. pragmas: [],
  54613. messageSends: ["visitIRDynamicDictionary:"]
  54614. }, function ($methodClass){ return function (aVisitor){
  54615. var self=this,$self=this;
  54616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54617. return $core.withContext(function($ctx1) {
  54618. //>>excludeEnd("ctx");
  54619. return $recv(aVisitor)._visitIRDynamicDictionary_(self);
  54620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54621. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  54622. //>>excludeEnd("ctx");
  54623. }; }),
  54624. $globals.IRDynamicDictionary);
  54625. $core.addClass("IRScopedInstruction", $globals.IRInstruction, "Compiler-IR");
  54626. $core.setSlots($globals.IRScopedInstruction, ["scope"]);
  54627. $core.addMethod(
  54628. $core.method({
  54629. selector: "scope",
  54630. protocol: "accessing",
  54631. //>>excludeStart("ide", pragmas.excludeIdeData);
  54632. args: [],
  54633. source: "scope\x0a\x09^ scope",
  54634. referencedClasses: [],
  54635. //>>excludeEnd("ide");
  54636. pragmas: [],
  54637. messageSends: []
  54638. }, function ($methodClass){ return function (){
  54639. var self=this,$self=this;
  54640. return $self.scope;
  54641. }; }),
  54642. $globals.IRScopedInstruction);
  54643. $core.addMethod(
  54644. $core.method({
  54645. selector: "scope:",
  54646. protocol: "accessing",
  54647. //>>excludeStart("ide", pragmas.excludeIdeData);
  54648. args: ["aScope"],
  54649. source: "scope: aScope\x0a\x09scope := aScope",
  54650. referencedClasses: [],
  54651. //>>excludeEnd("ide");
  54652. pragmas: [],
  54653. messageSends: []
  54654. }, function ($methodClass){ return function (aScope){
  54655. var self=this,$self=this;
  54656. $self.scope=aScope;
  54657. return self;
  54658. }; }),
  54659. $globals.IRScopedInstruction);
  54660. $core.addClass("IRClosureInstruction", $globals.IRScopedInstruction, "Compiler-IR");
  54661. $core.setSlots($globals.IRClosureInstruction, ["arguments", "requiresSmalltalkContext"]);
  54662. $core.addMethod(
  54663. $core.method({
  54664. selector: "arguments",
  54665. protocol: "accessing",
  54666. //>>excludeStart("ide", pragmas.excludeIdeData);
  54667. args: [],
  54668. source: "arguments\x0a\x09^ arguments ifNil: [ #() ]",
  54669. referencedClasses: [],
  54670. //>>excludeEnd("ide");
  54671. pragmas: [],
  54672. messageSends: ["ifNil:"]
  54673. }, function ($methodClass){ return function (){
  54674. var self=this,$self=this;
  54675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54676. return $core.withContext(function($ctx1) {
  54677. //>>excludeEnd("ctx");
  54678. var $1;
  54679. $1=$self.arguments;
  54680. if($1 == null || $1.a$nil){
  54681. return [];
  54682. } else {
  54683. return $1;
  54684. }
  54685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54686. }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
  54687. //>>excludeEnd("ctx");
  54688. }; }),
  54689. $globals.IRClosureInstruction);
  54690. $core.addMethod(
  54691. $core.method({
  54692. selector: "arguments:",
  54693. protocol: "accessing",
  54694. //>>excludeStart("ide", pragmas.excludeIdeData);
  54695. args: ["aCollection"],
  54696. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  54697. referencedClasses: [],
  54698. //>>excludeEnd("ide");
  54699. pragmas: [],
  54700. messageSends: []
  54701. }, function ($methodClass){ return function (aCollection){
  54702. var self=this,$self=this;
  54703. $self.arguments=aCollection;
  54704. return self;
  54705. }; }),
  54706. $globals.IRClosureInstruction);
  54707. $core.addMethod(
  54708. $core.method({
  54709. selector: "locals",
  54710. protocol: "accessing",
  54711. //>>excludeStart("ide", pragmas.excludeIdeData);
  54712. args: [],
  54713. source: "locals\x0a\x09^ self arguments, (self tempDeclarations collect: [ :each | each name ])",
  54714. referencedClasses: [],
  54715. //>>excludeEnd("ide");
  54716. pragmas: [],
  54717. messageSends: [",", "arguments", "collect:", "tempDeclarations", "name"]
  54718. }, function ($methodClass){ return function (){
  54719. var self=this,$self=this;
  54720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54721. return $core.withContext(function($ctx1) {
  54722. //>>excludeEnd("ctx");
  54723. return $recv($self._arguments()).__comma($recv($self._tempDeclarations())._collect_((function(each){
  54724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54725. return $core.withContext(function($ctx2) {
  54726. //>>excludeEnd("ctx");
  54727. return $recv(each)._name();
  54728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54729. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  54730. //>>excludeEnd("ctx");
  54731. })));
  54732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54733. }, function($ctx1) {$ctx1.fill(self,"locals",{})});
  54734. //>>excludeEnd("ctx");
  54735. }; }),
  54736. $globals.IRClosureInstruction);
  54737. $core.addMethod(
  54738. $core.method({
  54739. selector: "requiresSmalltalkContext",
  54740. protocol: "accessing",
  54741. //>>excludeStart("ide", pragmas.excludeIdeData);
  54742. args: [],
  54743. source: "requiresSmalltalkContext\x0a\x09^ requiresSmalltalkContext ifNil: [ false ]",
  54744. referencedClasses: [],
  54745. //>>excludeEnd("ide");
  54746. pragmas: [],
  54747. messageSends: ["ifNil:"]
  54748. }, function ($methodClass){ return function (){
  54749. var self=this,$self=this;
  54750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54751. return $core.withContext(function($ctx1) {
  54752. //>>excludeEnd("ctx");
  54753. var $1;
  54754. $1=$self.requiresSmalltalkContext;
  54755. if($1 == null || $1.a$nil){
  54756. return false;
  54757. } else {
  54758. return $1;
  54759. }
  54760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54761. }, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{})});
  54762. //>>excludeEnd("ctx");
  54763. }; }),
  54764. $globals.IRClosureInstruction);
  54765. $core.addMethod(
  54766. $core.method({
  54767. selector: "requiresSmalltalkContext:",
  54768. protocol: "accessing",
  54769. //>>excludeStart("ide", pragmas.excludeIdeData);
  54770. args: ["anObject"],
  54771. source: "requiresSmalltalkContext: anObject\x0a\x09requiresSmalltalkContext := anObject",
  54772. referencedClasses: [],
  54773. //>>excludeEnd("ide");
  54774. pragmas: [],
  54775. messageSends: []
  54776. }, function ($methodClass){ return function (anObject){
  54777. var self=this,$self=this;
  54778. $self.requiresSmalltalkContext=anObject;
  54779. return self;
  54780. }; }),
  54781. $globals.IRClosureInstruction);
  54782. $core.addMethod(
  54783. $core.method({
  54784. selector: "scope:",
  54785. protocol: "accessing",
  54786. //>>excludeStart("ide", pragmas.excludeIdeData);
  54787. args: ["aScope"],
  54788. source: "scope: aScope\x0a\x09super scope: aScope.\x0a\x09aScope instruction: self",
  54789. referencedClasses: [],
  54790. //>>excludeEnd("ide");
  54791. pragmas: [],
  54792. messageSends: ["scope:", "instruction:"]
  54793. }, function ($methodClass){ return function (aScope){
  54794. var self=this,$self=this;
  54795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54796. return $core.withContext(function($ctx1) {
  54797. //>>excludeEnd("ctx");
  54798. [(
  54799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54800. $ctx1.supercall = true,
  54801. //>>excludeEnd("ctx");
  54802. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._scope_.call($self,aScope))
  54803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54804. ,$ctx1.supercall = false
  54805. //>>excludeEnd("ctx");
  54806. ][0];
  54807. $recv(aScope)._instruction_(self);
  54808. return self;
  54809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54810. }, function($ctx1) {$ctx1.fill(self,"scope:",{aScope:aScope})});
  54811. //>>excludeEnd("ctx");
  54812. }; }),
  54813. $globals.IRClosureInstruction);
  54814. $core.addMethod(
  54815. $core.method({
  54816. selector: "tempDeclarations",
  54817. protocol: "accessing",
  54818. //>>excludeStart("ide", pragmas.excludeIdeData);
  54819. args: [],
  54820. source: "tempDeclarations\x0a\x09^ self dagChildren select: [ :each |\x0a\x09\x09each isTempDeclaration ]",
  54821. referencedClasses: [],
  54822. //>>excludeEnd("ide");
  54823. pragmas: [],
  54824. messageSends: ["select:", "dagChildren", "isTempDeclaration"]
  54825. }, function ($methodClass){ return function (){
  54826. var self=this,$self=this;
  54827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54828. return $core.withContext(function($ctx1) {
  54829. //>>excludeEnd("ctx");
  54830. return $recv($self._dagChildren())._select_((function(each){
  54831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54832. return $core.withContext(function($ctx2) {
  54833. //>>excludeEnd("ctx");
  54834. return $recv(each)._isTempDeclaration();
  54835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54836. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  54837. //>>excludeEnd("ctx");
  54838. }));
  54839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54840. }, function($ctx1) {$ctx1.fill(self,"tempDeclarations",{})});
  54841. //>>excludeEnd("ctx");
  54842. }; }),
  54843. $globals.IRClosureInstruction);
  54844. $core.addClass("IRClosure", $globals.IRClosureInstruction, "Compiler-IR");
  54845. $core.addMethod(
  54846. $core.method({
  54847. selector: "acceptDagVisitor:",
  54848. protocol: "visiting",
  54849. //>>excludeStart("ide", pragmas.excludeIdeData);
  54850. args: ["aVisitor"],
  54851. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRClosure: self",
  54852. referencedClasses: [],
  54853. //>>excludeEnd("ide");
  54854. pragmas: [],
  54855. messageSends: ["visitIRClosure:"]
  54856. }, function ($methodClass){ return function (aVisitor){
  54857. var self=this,$self=this;
  54858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54859. return $core.withContext(function($ctx1) {
  54860. //>>excludeEnd("ctx");
  54861. return $recv(aVisitor)._visitIRClosure_(self);
  54862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54863. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  54864. //>>excludeEnd("ctx");
  54865. }; }),
  54866. $globals.IRClosure);
  54867. $core.addMethod(
  54868. $core.method({
  54869. selector: "isClosure",
  54870. protocol: "testing",
  54871. //>>excludeStart("ide", pragmas.excludeIdeData);
  54872. args: [],
  54873. source: "isClosure\x0a\x09^ true",
  54874. referencedClasses: [],
  54875. //>>excludeEnd("ide");
  54876. pragmas: [],
  54877. messageSends: []
  54878. }, function ($methodClass){ return function (){
  54879. var self=this,$self=this;
  54880. return true;
  54881. }; }),
  54882. $globals.IRClosure);
  54883. $core.addMethod(
  54884. $core.method({
  54885. selector: "sequence",
  54886. protocol: "accessing",
  54887. //>>excludeStart("ide", pragmas.excludeIdeData);
  54888. args: [],
  54889. source: "sequence\x0a\x09^ self dagChildren last",
  54890. referencedClasses: [],
  54891. //>>excludeEnd("ide");
  54892. pragmas: [],
  54893. messageSends: ["last", "dagChildren"]
  54894. }, function ($methodClass){ return function (){
  54895. var self=this,$self=this;
  54896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54897. return $core.withContext(function($ctx1) {
  54898. //>>excludeEnd("ctx");
  54899. return $recv($self._dagChildren())._last();
  54900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54901. }, function($ctx1) {$ctx1.fill(self,"sequence",{})});
  54902. //>>excludeEnd("ctx");
  54903. }; }),
  54904. $globals.IRClosure);
  54905. $core.addClass("IRMethod", $globals.IRClosureInstruction, "Compiler-IR");
  54906. $core.setSlots($globals.IRMethod, ["theClass", "source", "compiledSource", "attachments", "selector", "pragmas", "classReferences", "sendIndexes", "internalVariables", "aliasFactory"]);
  54907. //>>excludeStart("ide", pragmas.excludeIdeData);
  54908. $globals.IRMethod.comment="I am a method instruction";
  54909. //>>excludeEnd("ide");
  54910. $core.addMethod(
  54911. $core.method({
  54912. selector: "acceptDagVisitor:",
  54913. protocol: "visiting",
  54914. //>>excludeStart("ide", pragmas.excludeIdeData);
  54915. args: ["aVisitor"],
  54916. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRMethod: self",
  54917. referencedClasses: [],
  54918. //>>excludeEnd("ide");
  54919. pragmas: [],
  54920. messageSends: ["visitIRMethod:"]
  54921. }, function ($methodClass){ return function (aVisitor){
  54922. var self=this,$self=this;
  54923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54924. return $core.withContext(function($ctx1) {
  54925. //>>excludeEnd("ctx");
  54926. return $recv(aVisitor)._visitIRMethod_(self);
  54927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54928. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  54929. //>>excludeEnd("ctx");
  54930. }; }),
  54931. $globals.IRMethod);
  54932. $core.addMethod(
  54933. $core.method({
  54934. selector: "aliasFactory",
  54935. protocol: "accessing",
  54936. //>>excludeStart("ide", pragmas.excludeIdeData);
  54937. args: [],
  54938. source: "aliasFactory\x0a\x09^ aliasFactory ifNil: [ aliasFactory := IRAliasFactory new ]",
  54939. referencedClasses: ["IRAliasFactory"],
  54940. //>>excludeEnd("ide");
  54941. pragmas: [],
  54942. messageSends: ["ifNil:", "new"]
  54943. }, function ($methodClass){ return function (){
  54944. var self=this,$self=this;
  54945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54946. return $core.withContext(function($ctx1) {
  54947. //>>excludeEnd("ctx");
  54948. var $1;
  54949. $1=$self.aliasFactory;
  54950. if($1 == null || $1.a$nil){
  54951. $self.aliasFactory=$recv($globals.IRAliasFactory)._new();
  54952. return $self.aliasFactory;
  54953. } else {
  54954. return $1;
  54955. }
  54956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54957. }, function($ctx1) {$ctx1.fill(self,"aliasFactory",{})});
  54958. //>>excludeEnd("ctx");
  54959. }; }),
  54960. $globals.IRMethod);
  54961. $core.addMethod(
  54962. $core.method({
  54963. selector: "attachments",
  54964. protocol: "accessing",
  54965. //>>excludeStart("ide", pragmas.excludeIdeData);
  54966. args: [],
  54967. source: "attachments\x0a\x09^ attachments ifNil: [ attachments := #{} ]",
  54968. referencedClasses: [],
  54969. //>>excludeEnd("ide");
  54970. pragmas: [],
  54971. messageSends: ["ifNil:"]
  54972. }, function ($methodClass){ return function (){
  54973. var self=this,$self=this;
  54974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54975. return $core.withContext(function($ctx1) {
  54976. //>>excludeEnd("ctx");
  54977. var $1;
  54978. $1=$self.attachments;
  54979. if($1 == null || $1.a$nil){
  54980. $self.attachments=$globals.HashedCollection._newFromPairs_([]);
  54981. return $self.attachments;
  54982. } else {
  54983. return $1;
  54984. }
  54985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54986. }, function($ctx1) {$ctx1.fill(self,"attachments",{})});
  54987. //>>excludeEnd("ctx");
  54988. }; }),
  54989. $globals.IRMethod);
  54990. $core.addMethod(
  54991. $core.method({
  54992. selector: "classReferences",
  54993. protocol: "accessing",
  54994. //>>excludeStart("ide", pragmas.excludeIdeData);
  54995. args: [],
  54996. source: "classReferences\x0a\x09^ classReferences",
  54997. referencedClasses: [],
  54998. //>>excludeEnd("ide");
  54999. pragmas: [],
  55000. messageSends: []
  55001. }, function ($methodClass){ return function (){
  55002. var self=this,$self=this;
  55003. return $self.classReferences;
  55004. }; }),
  55005. $globals.IRMethod);
  55006. $core.addMethod(
  55007. $core.method({
  55008. selector: "classReferences:",
  55009. protocol: "accessing",
  55010. //>>excludeStart("ide", pragmas.excludeIdeData);
  55011. args: ["aCollection"],
  55012. source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
  55013. referencedClasses: [],
  55014. //>>excludeEnd("ide");
  55015. pragmas: [],
  55016. messageSends: []
  55017. }, function ($methodClass){ return function (aCollection){
  55018. var self=this,$self=this;
  55019. $self.classReferences=aCollection;
  55020. return self;
  55021. }; }),
  55022. $globals.IRMethod);
  55023. $core.addMethod(
  55024. $core.method({
  55025. selector: "compiledSource",
  55026. protocol: "accessing",
  55027. //>>excludeStart("ide", pragmas.excludeIdeData);
  55028. args: [],
  55029. source: "compiledSource\x0a\x09^ compiledSource",
  55030. referencedClasses: [],
  55031. //>>excludeEnd("ide");
  55032. pragmas: [],
  55033. messageSends: []
  55034. }, function ($methodClass){ return function (){
  55035. var self=this,$self=this;
  55036. return $self.compiledSource;
  55037. }; }),
  55038. $globals.IRMethod);
  55039. $core.addMethod(
  55040. $core.method({
  55041. selector: "compiledSource:",
  55042. protocol: "accessing",
  55043. //>>excludeStart("ide", pragmas.excludeIdeData);
  55044. args: ["anObject"],
  55045. source: "compiledSource: anObject\x0a\x09compiledSource := anObject",
  55046. referencedClasses: [],
  55047. //>>excludeEnd("ide");
  55048. pragmas: [],
  55049. messageSends: []
  55050. }, function ($methodClass){ return function (anObject){
  55051. var self=this,$self=this;
  55052. $self.compiledSource=anObject;
  55053. return self;
  55054. }; }),
  55055. $globals.IRMethod);
  55056. $core.addMethod(
  55057. $core.method({
  55058. selector: "internalVariables",
  55059. protocol: "accessing",
  55060. //>>excludeStart("ide", pragmas.excludeIdeData);
  55061. args: [],
  55062. source: "internalVariables\x0a\x09^ internalVariables ifNil: [ internalVariables := Set new ]",
  55063. referencedClasses: ["Set"],
  55064. //>>excludeEnd("ide");
  55065. pragmas: [],
  55066. messageSends: ["ifNil:", "new"]
  55067. }, function ($methodClass){ return function (){
  55068. var self=this,$self=this;
  55069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55070. return $core.withContext(function($ctx1) {
  55071. //>>excludeEnd("ctx");
  55072. var $1;
  55073. $1=$self.internalVariables;
  55074. if($1 == null || $1.a$nil){
  55075. $self.internalVariables=$recv($globals.Set)._new();
  55076. return $self.internalVariables;
  55077. } else {
  55078. return $1;
  55079. }
  55080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55081. }, function($ctx1) {$ctx1.fill(self,"internalVariables",{})});
  55082. //>>excludeEnd("ctx");
  55083. }; }),
  55084. $globals.IRMethod);
  55085. $core.addMethod(
  55086. $core.method({
  55087. selector: "isMethod",
  55088. protocol: "testing",
  55089. //>>excludeStart("ide", pragmas.excludeIdeData);
  55090. args: [],
  55091. source: "isMethod\x0a\x09^ true",
  55092. referencedClasses: [],
  55093. //>>excludeEnd("ide");
  55094. pragmas: [],
  55095. messageSends: []
  55096. }, function ($methodClass){ return function (){
  55097. var self=this,$self=this;
  55098. return true;
  55099. }; }),
  55100. $globals.IRMethod);
  55101. $core.addMethod(
  55102. $core.method({
  55103. selector: "messageSends",
  55104. protocol: "accessing",
  55105. //>>excludeStart("ide", pragmas.excludeIdeData);
  55106. args: [],
  55107. source: "messageSends\x0a\x09^ self sendIndexes keys",
  55108. referencedClasses: [],
  55109. //>>excludeEnd("ide");
  55110. pragmas: [],
  55111. messageSends: ["keys", "sendIndexes"]
  55112. }, function ($methodClass){ return function (){
  55113. var self=this,$self=this;
  55114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55115. return $core.withContext(function($ctx1) {
  55116. //>>excludeEnd("ctx");
  55117. return $recv($self._sendIndexes())._keys();
  55118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55119. }, function($ctx1) {$ctx1.fill(self,"messageSends",{})});
  55120. //>>excludeEnd("ctx");
  55121. }; }),
  55122. $globals.IRMethod);
  55123. $core.addMethod(
  55124. $core.method({
  55125. selector: "method",
  55126. protocol: "accessing",
  55127. //>>excludeStart("ide", pragmas.excludeIdeData);
  55128. args: [],
  55129. source: "method\x0a\x09^ self",
  55130. referencedClasses: [],
  55131. //>>excludeEnd("ide");
  55132. pragmas: [],
  55133. messageSends: []
  55134. }, function ($methodClass){ return function (){
  55135. var self=this,$self=this;
  55136. return self;
  55137. }; }),
  55138. $globals.IRMethod);
  55139. $core.addMethod(
  55140. $core.method({
  55141. selector: "newAliasingOf:",
  55142. protocol: "accessing",
  55143. //>>excludeStart("ide", pragmas.excludeIdeData);
  55144. args: ["anIRInstruction"],
  55145. source: "newAliasingOf: anIRInstruction\x0a\x09| variable |\x0a\x0a\x09variable := IRVariable new\x0a\x09\x09variable: self aliasFactory next;\x0a\x09\x09yourself.\x0a\x0a\x09self internalVariables add: variable.\x0a\x0a\x09^ IRAssignment new\x0a\x09\x09add: variable;\x0a\x09\x09add: anIRInstruction;\x0a\x09\x09yourself",
  55146. referencedClasses: ["IRVariable", "IRAssignment"],
  55147. //>>excludeEnd("ide");
  55148. pragmas: [],
  55149. messageSends: ["variable:", "new", "next", "aliasFactory", "yourself", "add:", "internalVariables"]
  55150. }, function ($methodClass){ return function (anIRInstruction){
  55151. var self=this,$self=this;
  55152. var variable;
  55153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55154. return $core.withContext(function($ctx1) {
  55155. //>>excludeEnd("ctx");
  55156. var $1,$2;
  55157. $1=[$recv($globals.IRVariable)._new()
  55158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55159. ,$ctx1.sendIdx["new"]=1
  55160. //>>excludeEnd("ctx");
  55161. ][0];
  55162. $recv($1)._variable_($recv($self._aliasFactory())._next());
  55163. variable=[$recv($1)._yourself()
  55164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55165. ,$ctx1.sendIdx["yourself"]=1
  55166. //>>excludeEnd("ctx");
  55167. ][0];
  55168. [$recv($self._internalVariables())._add_(variable)
  55169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55170. ,$ctx1.sendIdx["add:"]=1
  55171. //>>excludeEnd("ctx");
  55172. ][0];
  55173. $2=$recv($globals.IRAssignment)._new();
  55174. [$recv($2)._add_(variable)
  55175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55176. ,$ctx1.sendIdx["add:"]=2
  55177. //>>excludeEnd("ctx");
  55178. ][0];
  55179. $recv($2)._add_(anIRInstruction);
  55180. return $recv($2)._yourself();
  55181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55182. }, function($ctx1) {$ctx1.fill(self,"newAliasingOf:",{anIRInstruction:anIRInstruction,variable:variable})});
  55183. //>>excludeEnd("ctx");
  55184. }; }),
  55185. $globals.IRMethod);
  55186. $core.addMethod(
  55187. $core.method({
  55188. selector: "pragmas",
  55189. protocol: "accessing",
  55190. //>>excludeStart("ide", pragmas.excludeIdeData);
  55191. args: [],
  55192. source: "pragmas\x0a\x09^ pragmas",
  55193. referencedClasses: [],
  55194. //>>excludeEnd("ide");
  55195. pragmas: [],
  55196. messageSends: []
  55197. }, function ($methodClass){ return function (){
  55198. var self=this,$self=this;
  55199. return $self.pragmas;
  55200. }; }),
  55201. $globals.IRMethod);
  55202. $core.addMethod(
  55203. $core.method({
  55204. selector: "pragmas:",
  55205. protocol: "accessing",
  55206. //>>excludeStart("ide", pragmas.excludeIdeData);
  55207. args: ["aCollection"],
  55208. source: "pragmas: aCollection\x0a\x09pragmas := aCollection",
  55209. referencedClasses: [],
  55210. //>>excludeEnd("ide");
  55211. pragmas: [],
  55212. messageSends: []
  55213. }, function ($methodClass){ return function (aCollection){
  55214. var self=this,$self=this;
  55215. $self.pragmas=aCollection;
  55216. return self;
  55217. }; }),
  55218. $globals.IRMethod);
  55219. $core.addMethod(
  55220. $core.method({
  55221. selector: "selector",
  55222. protocol: "accessing",
  55223. //>>excludeStart("ide", pragmas.excludeIdeData);
  55224. args: [],
  55225. source: "selector\x0a\x09^ selector",
  55226. referencedClasses: [],
  55227. //>>excludeEnd("ide");
  55228. pragmas: [],
  55229. messageSends: []
  55230. }, function ($methodClass){ return function (){
  55231. var self=this,$self=this;
  55232. return $self.selector;
  55233. }; }),
  55234. $globals.IRMethod);
  55235. $core.addMethod(
  55236. $core.method({
  55237. selector: "selector:",
  55238. protocol: "accessing",
  55239. //>>excludeStart("ide", pragmas.excludeIdeData);
  55240. args: ["aString"],
  55241. source: "selector: aString\x0a\x09selector := aString",
  55242. referencedClasses: [],
  55243. //>>excludeEnd("ide");
  55244. pragmas: [],
  55245. messageSends: []
  55246. }, function ($methodClass){ return function (aString){
  55247. var self=this,$self=this;
  55248. $self.selector=aString;
  55249. return self;
  55250. }; }),
  55251. $globals.IRMethod);
  55252. $core.addMethod(
  55253. $core.method({
  55254. selector: "sendIndexes",
  55255. protocol: "accessing",
  55256. //>>excludeStart("ide", pragmas.excludeIdeData);
  55257. args: [],
  55258. source: "sendIndexes\x0a\x09^ sendIndexes",
  55259. referencedClasses: [],
  55260. //>>excludeEnd("ide");
  55261. pragmas: [],
  55262. messageSends: []
  55263. }, function ($methodClass){ return function (){
  55264. var self=this,$self=this;
  55265. return $self.sendIndexes;
  55266. }; }),
  55267. $globals.IRMethod);
  55268. $core.addMethod(
  55269. $core.method({
  55270. selector: "sendIndexes:",
  55271. protocol: "accessing",
  55272. //>>excludeStart("ide", pragmas.excludeIdeData);
  55273. args: ["aDictionary"],
  55274. source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
  55275. referencedClasses: [],
  55276. //>>excludeEnd("ide");
  55277. pragmas: [],
  55278. messageSends: []
  55279. }, function ($methodClass){ return function (aDictionary){
  55280. var self=this,$self=this;
  55281. $self.sendIndexes=aDictionary;
  55282. return self;
  55283. }; }),
  55284. $globals.IRMethod);
  55285. $core.addMethod(
  55286. $core.method({
  55287. selector: "source",
  55288. protocol: "accessing",
  55289. //>>excludeStart("ide", pragmas.excludeIdeData);
  55290. args: [],
  55291. source: "source\x0a\x09^ source",
  55292. referencedClasses: [],
  55293. //>>excludeEnd("ide");
  55294. pragmas: [],
  55295. messageSends: []
  55296. }, function ($methodClass){ return function (){
  55297. var self=this,$self=this;
  55298. return $self.source;
  55299. }; }),
  55300. $globals.IRMethod);
  55301. $core.addMethod(
  55302. $core.method({
  55303. selector: "source:",
  55304. protocol: "accessing",
  55305. //>>excludeStart("ide", pragmas.excludeIdeData);
  55306. args: ["aString"],
  55307. source: "source: aString\x0a\x09source := aString",
  55308. referencedClasses: [],
  55309. //>>excludeEnd("ide");
  55310. pragmas: [],
  55311. messageSends: []
  55312. }, function ($methodClass){ return function (aString){
  55313. var self=this,$self=this;
  55314. $self.source=aString;
  55315. return self;
  55316. }; }),
  55317. $globals.IRMethod);
  55318. $core.addMethod(
  55319. $core.method({
  55320. selector: "theClass",
  55321. protocol: "accessing",
  55322. //>>excludeStart("ide", pragmas.excludeIdeData);
  55323. args: [],
  55324. source: "theClass\x0a\x09^ theClass",
  55325. referencedClasses: [],
  55326. //>>excludeEnd("ide");
  55327. pragmas: [],
  55328. messageSends: []
  55329. }, function ($methodClass){ return function (){
  55330. var self=this,$self=this;
  55331. return $self.theClass;
  55332. }; }),
  55333. $globals.IRMethod);
  55334. $core.addMethod(
  55335. $core.method({
  55336. selector: "theClass:",
  55337. protocol: "accessing",
  55338. //>>excludeStart("ide", pragmas.excludeIdeData);
  55339. args: ["aClass"],
  55340. source: "theClass: aClass\x0a\x09theClass := aClass",
  55341. referencedClasses: [],
  55342. //>>excludeEnd("ide");
  55343. pragmas: [],
  55344. messageSends: []
  55345. }, function ($methodClass){ return function (aClass){
  55346. var self=this,$self=this;
  55347. $self.theClass=aClass;
  55348. return self;
  55349. }; }),
  55350. $globals.IRMethod);
  55351. $core.addClass("IRReturn", $globals.IRScopedInstruction, "Compiler-IR");
  55352. //>>excludeStart("ide", pragmas.excludeIdeData);
  55353. $globals.IRReturn.comment="I am a local return instruction.";
  55354. //>>excludeEnd("ide");
  55355. $core.addMethod(
  55356. $core.method({
  55357. selector: "acceptDagVisitor:",
  55358. protocol: "visiting",
  55359. //>>excludeStart("ide", pragmas.excludeIdeData);
  55360. args: ["aVisitor"],
  55361. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRReturn: self",
  55362. referencedClasses: [],
  55363. //>>excludeEnd("ide");
  55364. pragmas: [],
  55365. messageSends: ["visitIRReturn:"]
  55366. }, function ($methodClass){ return function (aVisitor){
  55367. var self=this,$self=this;
  55368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55369. return $core.withContext(function($ctx1) {
  55370. //>>excludeEnd("ctx");
  55371. return $recv(aVisitor)._visitIRReturn_(self);
  55372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55373. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55374. //>>excludeEnd("ctx");
  55375. }; }),
  55376. $globals.IRReturn);
  55377. $core.addMethod(
  55378. $core.method({
  55379. selector: "expression",
  55380. protocol: "accessing",
  55381. //>>excludeStart("ide", pragmas.excludeIdeData);
  55382. args: [],
  55383. source: "expression\x0a\x09^ self dagChildren single",
  55384. referencedClasses: [],
  55385. //>>excludeEnd("ide");
  55386. pragmas: [],
  55387. messageSends: ["single", "dagChildren"]
  55388. }, function ($methodClass){ return function (){
  55389. var self=this,$self=this;
  55390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55391. return $core.withContext(function($ctx1) {
  55392. //>>excludeEnd("ctx");
  55393. return $recv($self._dagChildren())._single();
  55394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55395. }, function($ctx1) {$ctx1.fill(self,"expression",{})});
  55396. //>>excludeEnd("ctx");
  55397. }; }),
  55398. $globals.IRReturn);
  55399. $core.addMethod(
  55400. $core.method({
  55401. selector: "scope",
  55402. protocol: "accessing",
  55403. //>>excludeStart("ide", pragmas.excludeIdeData);
  55404. args: [],
  55405. source: "scope\x0a\x09^ scope ifNil: [ self parent scope ]",
  55406. referencedClasses: [],
  55407. //>>excludeEnd("ide");
  55408. pragmas: [],
  55409. messageSends: ["ifNil:", "scope", "parent"]
  55410. }, function ($methodClass){ return function (){
  55411. var self=this,$self=this;
  55412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55413. return $core.withContext(function($ctx1) {
  55414. //>>excludeEnd("ctx");
  55415. var $1;
  55416. $1=$self.scope;
  55417. if($1 == null || $1.a$nil){
  55418. return $recv($self._parent())._scope();
  55419. } else {
  55420. return $1;
  55421. }
  55422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55423. }, function($ctx1) {$ctx1.fill(self,"scope",{})});
  55424. //>>excludeEnd("ctx");
  55425. }; }),
  55426. $globals.IRReturn);
  55427. $core.addMethod(
  55428. $core.method({
  55429. selector: "yieldsValue",
  55430. protocol: "testing",
  55431. //>>excludeStart("ide", pragmas.excludeIdeData);
  55432. args: [],
  55433. source: "yieldsValue\x0a\x09^ false",
  55434. referencedClasses: [],
  55435. //>>excludeEnd("ide");
  55436. pragmas: [],
  55437. messageSends: []
  55438. }, function ($methodClass){ return function (){
  55439. var self=this,$self=this;
  55440. return false;
  55441. }; }),
  55442. $globals.IRReturn);
  55443. $core.addClass("IRBlockReturn", $globals.IRReturn, "Compiler-IR");
  55444. //>>excludeStart("ide", pragmas.excludeIdeData);
  55445. $globals.IRBlockReturn.comment="Smalltalk blocks return their last statement. I am a implicit block return instruction.";
  55446. //>>excludeEnd("ide");
  55447. $core.addMethod(
  55448. $core.method({
  55449. selector: "acceptDagVisitor:",
  55450. protocol: "visiting",
  55451. //>>excludeStart("ide", pragmas.excludeIdeData);
  55452. args: ["aVisitor"],
  55453. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRBlockReturn: self",
  55454. referencedClasses: [],
  55455. //>>excludeEnd("ide");
  55456. pragmas: [],
  55457. messageSends: ["visitIRBlockReturn:"]
  55458. }, function ($methodClass){ return function (aVisitor){
  55459. var self=this,$self=this;
  55460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55461. return $core.withContext(function($ctx1) {
  55462. //>>excludeEnd("ctx");
  55463. return $recv(aVisitor)._visitIRBlockReturn_(self);
  55464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55465. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55466. //>>excludeEnd("ctx");
  55467. }; }),
  55468. $globals.IRBlockReturn);
  55469. $core.addClass("IRNonLocalReturn", $globals.IRReturn, "Compiler-IR");
  55470. //>>excludeStart("ide", pragmas.excludeIdeData);
  55471. $globals.IRNonLocalReturn.comment="I am a non local return instruction.\x0aNon local returns are handled using a try/catch JavaScript statement.\x0a\x0aSee `IRNonLocalReturnHandling` class.";
  55472. //>>excludeEnd("ide");
  55473. $core.addMethod(
  55474. $core.method({
  55475. selector: "acceptDagVisitor:",
  55476. protocol: "visiting",
  55477. //>>excludeStart("ide", pragmas.excludeIdeData);
  55478. args: ["aVisitor"],
  55479. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRNonLocalReturn: self",
  55480. referencedClasses: [],
  55481. //>>excludeEnd("ide");
  55482. pragmas: [],
  55483. messageSends: ["visitIRNonLocalReturn:"]
  55484. }, function ($methodClass){ return function (aVisitor){
  55485. var self=this,$self=this;
  55486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55487. return $core.withContext(function($ctx1) {
  55488. //>>excludeEnd("ctx");
  55489. return $recv(aVisitor)._visitIRNonLocalReturn_(self);
  55490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55491. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55492. //>>excludeEnd("ctx");
  55493. }; }),
  55494. $globals.IRNonLocalReturn);
  55495. $core.addClass("IRTempDeclaration", $globals.IRScopedInstruction, "Compiler-IR");
  55496. $core.setSlots($globals.IRTempDeclaration, ["name"]);
  55497. $core.addMethod(
  55498. $core.method({
  55499. selector: "acceptDagVisitor:",
  55500. protocol: "visiting",
  55501. //>>excludeStart("ide", pragmas.excludeIdeData);
  55502. args: ["aVisitor"],
  55503. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRTempDeclaration: self",
  55504. referencedClasses: [],
  55505. //>>excludeEnd("ide");
  55506. pragmas: [],
  55507. messageSends: ["visitIRTempDeclaration:"]
  55508. }, function ($methodClass){ return function (aVisitor){
  55509. var self=this,$self=this;
  55510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55511. return $core.withContext(function($ctx1) {
  55512. //>>excludeEnd("ctx");
  55513. return $recv(aVisitor)._visitIRTempDeclaration_(self);
  55514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55515. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55516. //>>excludeEnd("ctx");
  55517. }; }),
  55518. $globals.IRTempDeclaration);
  55519. $core.addMethod(
  55520. $core.method({
  55521. selector: "isTempDeclaration",
  55522. protocol: "testing",
  55523. //>>excludeStart("ide", pragmas.excludeIdeData);
  55524. args: [],
  55525. source: "isTempDeclaration\x0a\x09^ true",
  55526. referencedClasses: [],
  55527. //>>excludeEnd("ide");
  55528. pragmas: [],
  55529. messageSends: []
  55530. }, function ($methodClass){ return function (){
  55531. var self=this,$self=this;
  55532. return true;
  55533. }; }),
  55534. $globals.IRTempDeclaration);
  55535. $core.addMethod(
  55536. $core.method({
  55537. selector: "name",
  55538. protocol: "accessing",
  55539. //>>excludeStart("ide", pragmas.excludeIdeData);
  55540. args: [],
  55541. source: "name\x0a\x09^ name",
  55542. referencedClasses: [],
  55543. //>>excludeEnd("ide");
  55544. pragmas: [],
  55545. messageSends: []
  55546. }, function ($methodClass){ return function (){
  55547. var self=this,$self=this;
  55548. return $self.name;
  55549. }; }),
  55550. $globals.IRTempDeclaration);
  55551. $core.addMethod(
  55552. $core.method({
  55553. selector: "name:",
  55554. protocol: "accessing",
  55555. //>>excludeStart("ide", pragmas.excludeIdeData);
  55556. args: ["aString"],
  55557. source: "name: aString\x0a\x09name := aString",
  55558. referencedClasses: [],
  55559. //>>excludeEnd("ide");
  55560. pragmas: [],
  55561. messageSends: []
  55562. }, function ($methodClass){ return function (aString){
  55563. var self=this,$self=this;
  55564. $self.name=aString;
  55565. return self;
  55566. }; }),
  55567. $globals.IRTempDeclaration);
  55568. $core.addClass("IRSend", $globals.IRInstruction, "Compiler-IR");
  55569. $core.setSlots($globals.IRSend, ["selector", "javaScriptSelector", "argumentSwitcher", "index"]);
  55570. //>>excludeStart("ide", pragmas.excludeIdeData);
  55571. $globals.IRSend.comment="I am a message send instruction.";
  55572. //>>excludeEnd("ide");
  55573. $core.addMethod(
  55574. $core.method({
  55575. selector: "acceptDagVisitor:",
  55576. protocol: "visiting",
  55577. //>>excludeStart("ide", pragmas.excludeIdeData);
  55578. args: ["aVisitor"],
  55579. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRSend: self",
  55580. referencedClasses: [],
  55581. //>>excludeEnd("ide");
  55582. pragmas: [],
  55583. messageSends: ["visitIRSend:"]
  55584. }, function ($methodClass){ return function (aVisitor){
  55585. var self=this,$self=this;
  55586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55587. return $core.withContext(function($ctx1) {
  55588. //>>excludeEnd("ctx");
  55589. return $recv(aVisitor)._visitIRSend_(self);
  55590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55591. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55592. //>>excludeEnd("ctx");
  55593. }; }),
  55594. $globals.IRSend);
  55595. $core.addMethod(
  55596. $core.method({
  55597. selector: "argumentSwitcher",
  55598. protocol: "accessing",
  55599. //>>excludeStart("ide", pragmas.excludeIdeData);
  55600. args: [],
  55601. source: "argumentSwitcher\x0a\x09^ argumentSwitcher",
  55602. referencedClasses: [],
  55603. //>>excludeEnd("ide");
  55604. pragmas: [],
  55605. messageSends: []
  55606. }, function ($methodClass){ return function (){
  55607. var self=this,$self=this;
  55608. return $self.argumentSwitcher;
  55609. }; }),
  55610. $globals.IRSend);
  55611. $core.addMethod(
  55612. $core.method({
  55613. selector: "argumentSwitcher:",
  55614. protocol: "accessing",
  55615. //>>excludeStart("ide", pragmas.excludeIdeData);
  55616. args: ["aJSFunction"],
  55617. source: "argumentSwitcher: aJSFunction\x0a\x09argumentSwitcher := aJSFunction",
  55618. referencedClasses: [],
  55619. //>>excludeEnd("ide");
  55620. pragmas: [],
  55621. messageSends: []
  55622. }, function ($methodClass){ return function (aJSFunction){
  55623. var self=this,$self=this;
  55624. $self.argumentSwitcher=aJSFunction;
  55625. return self;
  55626. }; }),
  55627. $globals.IRSend);
  55628. $core.addMethod(
  55629. $core.method({
  55630. selector: "arguments",
  55631. protocol: "accessing",
  55632. //>>excludeStart("ide", pragmas.excludeIdeData);
  55633. args: [],
  55634. source: "arguments\x0a\x09^ self dagChildren allButFirst",
  55635. referencedClasses: [],
  55636. //>>excludeEnd("ide");
  55637. pragmas: [],
  55638. messageSends: ["allButFirst", "dagChildren"]
  55639. }, function ($methodClass){ return function (){
  55640. var self=this,$self=this;
  55641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55642. return $core.withContext(function($ctx1) {
  55643. //>>excludeEnd("ctx");
  55644. return $recv($self._dagChildren())._allButFirst();
  55645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55646. }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
  55647. //>>excludeEnd("ctx");
  55648. }; }),
  55649. $globals.IRSend);
  55650. $core.addMethod(
  55651. $core.method({
  55652. selector: "index",
  55653. protocol: "accessing",
  55654. //>>excludeStart("ide", pragmas.excludeIdeData);
  55655. args: [],
  55656. source: "index\x0a\x09^ index",
  55657. referencedClasses: [],
  55658. //>>excludeEnd("ide");
  55659. pragmas: [],
  55660. messageSends: []
  55661. }, function ($methodClass){ return function (){
  55662. var self=this,$self=this;
  55663. return $self.index;
  55664. }; }),
  55665. $globals.IRSend);
  55666. $core.addMethod(
  55667. $core.method({
  55668. selector: "index:",
  55669. protocol: "accessing",
  55670. //>>excludeStart("ide", pragmas.excludeIdeData);
  55671. args: ["anInteger"],
  55672. source: "index: anInteger\x0a\x09index := anInteger",
  55673. referencedClasses: [],
  55674. //>>excludeEnd("ide");
  55675. pragmas: [],
  55676. messageSends: []
  55677. }, function ($methodClass){ return function (anInteger){
  55678. var self=this,$self=this;
  55679. $self.index=anInteger;
  55680. return self;
  55681. }; }),
  55682. $globals.IRSend);
  55683. $core.addMethod(
  55684. $core.method({
  55685. selector: "isSend",
  55686. protocol: "testing",
  55687. //>>excludeStart("ide", pragmas.excludeIdeData);
  55688. args: [],
  55689. source: "isSend\x0a\x09^ true",
  55690. referencedClasses: [],
  55691. //>>excludeEnd("ide");
  55692. pragmas: [],
  55693. messageSends: []
  55694. }, function ($methodClass){ return function (){
  55695. var self=this,$self=this;
  55696. return true;
  55697. }; }),
  55698. $globals.IRSend);
  55699. $core.addMethod(
  55700. $core.method({
  55701. selector: "javaScriptSelector",
  55702. protocol: "accessing",
  55703. //>>excludeStart("ide", pragmas.excludeIdeData);
  55704. args: [],
  55705. source: "javaScriptSelector\x0a\x09^ javaScriptSelector ifNil: [ javaScriptSelector := self selector asJavaScriptMethodName ]",
  55706. referencedClasses: [],
  55707. //>>excludeEnd("ide");
  55708. pragmas: [],
  55709. messageSends: ["ifNil:", "asJavaScriptMethodName", "selector"]
  55710. }, function ($methodClass){ return function (){
  55711. var self=this,$self=this;
  55712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55713. return $core.withContext(function($ctx1) {
  55714. //>>excludeEnd("ctx");
  55715. var $1;
  55716. $1=$self.javaScriptSelector;
  55717. if($1 == null || $1.a$nil){
  55718. $self.javaScriptSelector=$recv($self._selector())._asJavaScriptMethodName();
  55719. return $self.javaScriptSelector;
  55720. } else {
  55721. return $1;
  55722. }
  55723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55724. }, function($ctx1) {$ctx1.fill(self,"javaScriptSelector",{})});
  55725. //>>excludeEnd("ctx");
  55726. }; }),
  55727. $globals.IRSend);
  55728. $core.addMethod(
  55729. $core.method({
  55730. selector: "javaScriptSelector:",
  55731. protocol: "accessing",
  55732. //>>excludeStart("ide", pragmas.excludeIdeData);
  55733. args: ["aString"],
  55734. source: "javaScriptSelector: aString\x0a\x09javaScriptSelector := aString",
  55735. referencedClasses: [],
  55736. //>>excludeEnd("ide");
  55737. pragmas: [],
  55738. messageSends: []
  55739. }, function ($methodClass){ return function (aString){
  55740. var self=this,$self=this;
  55741. $self.javaScriptSelector=aString;
  55742. return self;
  55743. }; }),
  55744. $globals.IRSend);
  55745. $core.addMethod(
  55746. $core.method({
  55747. selector: "receiver",
  55748. protocol: "accessing",
  55749. //>>excludeStart("ide", pragmas.excludeIdeData);
  55750. args: [],
  55751. source: "receiver\x0a\x09^ self dagChildren first",
  55752. referencedClasses: [],
  55753. //>>excludeEnd("ide");
  55754. pragmas: [],
  55755. messageSends: ["first", "dagChildren"]
  55756. }, function ($methodClass){ return function (){
  55757. var self=this,$self=this;
  55758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55759. return $core.withContext(function($ctx1) {
  55760. //>>excludeEnd("ctx");
  55761. return $recv($self._dagChildren())._first();
  55762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55763. }, function($ctx1) {$ctx1.fill(self,"receiver",{})});
  55764. //>>excludeEnd("ctx");
  55765. }; }),
  55766. $globals.IRSend);
  55767. $core.addMethod(
  55768. $core.method({
  55769. selector: "selector",
  55770. protocol: "accessing",
  55771. //>>excludeStart("ide", pragmas.excludeIdeData);
  55772. args: [],
  55773. source: "selector\x0a\x09^ selector",
  55774. referencedClasses: [],
  55775. //>>excludeEnd("ide");
  55776. pragmas: [],
  55777. messageSends: []
  55778. }, function ($methodClass){ return function (){
  55779. var self=this,$self=this;
  55780. return $self.selector;
  55781. }; }),
  55782. $globals.IRSend);
  55783. $core.addMethod(
  55784. $core.method({
  55785. selector: "selector:",
  55786. protocol: "accessing",
  55787. //>>excludeStart("ide", pragmas.excludeIdeData);
  55788. args: ["aString"],
  55789. source: "selector: aString\x0a\x09selector := aString",
  55790. referencedClasses: [],
  55791. //>>excludeEnd("ide");
  55792. pragmas: [],
  55793. messageSends: []
  55794. }, function ($methodClass){ return function (aString){
  55795. var self=this,$self=this;
  55796. $self.selector=aString;
  55797. return self;
  55798. }; }),
  55799. $globals.IRSend);
  55800. $core.addClass("IRSequence", $globals.IRInstruction, "Compiler-IR");
  55801. $core.addMethod(
  55802. $core.method({
  55803. selector: "acceptDagVisitor:",
  55804. protocol: "visiting",
  55805. //>>excludeStart("ide", pragmas.excludeIdeData);
  55806. args: ["aVisitor"],
  55807. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRSequence: self",
  55808. referencedClasses: [],
  55809. //>>excludeEnd("ide");
  55810. pragmas: [],
  55811. messageSends: ["visitIRSequence:"]
  55812. }, function ($methodClass){ return function (aVisitor){
  55813. var self=this,$self=this;
  55814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55815. return $core.withContext(function($ctx1) {
  55816. //>>excludeEnd("ctx");
  55817. return $recv(aVisitor)._visitIRSequence_(self);
  55818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55819. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55820. //>>excludeEnd("ctx");
  55821. }; }),
  55822. $globals.IRSequence);
  55823. $core.addMethod(
  55824. $core.method({
  55825. selector: "isSequence",
  55826. protocol: "testing",
  55827. //>>excludeStart("ide", pragmas.excludeIdeData);
  55828. args: [],
  55829. source: "isSequence\x0a\x09^ true",
  55830. referencedClasses: [],
  55831. //>>excludeEnd("ide");
  55832. pragmas: [],
  55833. messageSends: []
  55834. }, function ($methodClass){ return function (){
  55835. var self=this,$self=this;
  55836. return true;
  55837. }; }),
  55838. $globals.IRSequence);
  55839. $core.addClass("IRBlockSequence", $globals.IRSequence, "Compiler-IR");
  55840. $core.addMethod(
  55841. $core.method({
  55842. selector: "acceptDagVisitor:",
  55843. protocol: "visiting",
  55844. //>>excludeStart("ide", pragmas.excludeIdeData);
  55845. args: ["aVisitor"],
  55846. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRBlockSequence: self",
  55847. referencedClasses: [],
  55848. //>>excludeEnd("ide");
  55849. pragmas: [],
  55850. messageSends: ["visitIRBlockSequence:"]
  55851. }, function ($methodClass){ return function (aVisitor){
  55852. var self=this,$self=this;
  55853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55854. return $core.withContext(function($ctx1) {
  55855. //>>excludeEnd("ctx");
  55856. return $recv(aVisitor)._visitIRBlockSequence_(self);
  55857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55858. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55859. //>>excludeEnd("ctx");
  55860. }; }),
  55861. $globals.IRBlockSequence);
  55862. $core.addClass("IRValue", $globals.IRInstruction, "Compiler-IR");
  55863. $core.setSlots($globals.IRValue, ["value"]);
  55864. //>>excludeStart("ide", pragmas.excludeIdeData);
  55865. $globals.IRValue.comment="I am the simplest possible instruction. I represent a value.";
  55866. //>>excludeEnd("ide");
  55867. $core.addMethod(
  55868. $core.method({
  55869. selector: "acceptDagVisitor:",
  55870. protocol: "visiting",
  55871. //>>excludeStart("ide", pragmas.excludeIdeData);
  55872. args: ["aVisitor"],
  55873. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRValue: self",
  55874. referencedClasses: [],
  55875. //>>excludeEnd("ide");
  55876. pragmas: [],
  55877. messageSends: ["visitIRValue:"]
  55878. }, function ($methodClass){ return function (aVisitor){
  55879. var self=this,$self=this;
  55880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55881. return $core.withContext(function($ctx1) {
  55882. //>>excludeEnd("ctx");
  55883. return $recv(aVisitor)._visitIRValue_(self);
  55884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55885. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55886. //>>excludeEnd("ctx");
  55887. }; }),
  55888. $globals.IRValue);
  55889. $core.addMethod(
  55890. $core.method({
  55891. selector: "asReceiver",
  55892. protocol: "converting",
  55893. //>>excludeStart("ide", pragmas.excludeIdeData);
  55894. args: [],
  55895. source: "asReceiver\x0a\x09^ self",
  55896. referencedClasses: [],
  55897. //>>excludeEnd("ide");
  55898. pragmas: [],
  55899. messageSends: []
  55900. }, function ($methodClass){ return function (){
  55901. var self=this,$self=this;
  55902. return self;
  55903. }; }),
  55904. $globals.IRValue);
  55905. $core.addMethod(
  55906. $core.method({
  55907. selector: "value",
  55908. protocol: "accessing",
  55909. //>>excludeStart("ide", pragmas.excludeIdeData);
  55910. args: [],
  55911. source: "value\x0a\x09^ value",
  55912. referencedClasses: [],
  55913. //>>excludeEnd("ide");
  55914. pragmas: [],
  55915. messageSends: []
  55916. }, function ($methodClass){ return function (){
  55917. var self=this,$self=this;
  55918. return $self.value;
  55919. }; }),
  55920. $globals.IRValue);
  55921. $core.addMethod(
  55922. $core.method({
  55923. selector: "value:",
  55924. protocol: "accessing",
  55925. //>>excludeStart("ide", pragmas.excludeIdeData);
  55926. args: ["aString"],
  55927. source: "value: aString\x0a\x09value := aString",
  55928. referencedClasses: [],
  55929. //>>excludeEnd("ide");
  55930. pragmas: [],
  55931. messageSends: []
  55932. }, function ($methodClass){ return function (aString){
  55933. var self=this,$self=this;
  55934. $self.value=aString;
  55935. return self;
  55936. }; }),
  55937. $globals.IRValue);
  55938. $core.addClass("IRVariable", $globals.IRInstruction, "Compiler-IR");
  55939. $core.setSlots($globals.IRVariable, ["variable"]);
  55940. //>>excludeStart("ide", pragmas.excludeIdeData);
  55941. $globals.IRVariable.comment="I am a variable instruction.";
  55942. //>>excludeEnd("ide");
  55943. $core.addMethod(
  55944. $core.method({
  55945. selector: "acceptDagVisitor:",
  55946. protocol: "visiting",
  55947. //>>excludeStart("ide", pragmas.excludeIdeData);
  55948. args: ["aVisitor"],
  55949. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRVariable: self",
  55950. referencedClasses: [],
  55951. //>>excludeEnd("ide");
  55952. pragmas: [],
  55953. messageSends: ["visitIRVariable:"]
  55954. }, function ($methodClass){ return function (aVisitor){
  55955. var self=this,$self=this;
  55956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55957. return $core.withContext(function($ctx1) {
  55958. //>>excludeEnd("ctx");
  55959. return $recv(aVisitor)._visitIRVariable_(self);
  55960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55961. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  55962. //>>excludeEnd("ctx");
  55963. }; }),
  55964. $globals.IRVariable);
  55965. $core.addMethod(
  55966. $core.method({
  55967. selector: "asReceiver",
  55968. protocol: "converting",
  55969. //>>excludeStart("ide", pragmas.excludeIdeData);
  55970. args: [],
  55971. source: "asReceiver\x0a\x09self variable asReceiver\x0a\x09\x09ifNil: [ ^ super asReceiver ]\x0a\x09\x09ifNotNil: [ :receiverVar |\x0a\x09\x09\x09self variable == receiverVar ifTrue: [ ^ self ].\x0a\x09\x09\x09^ self copy variable: receiverVar; yourself ]",
  55972. referencedClasses: [],
  55973. //>>excludeEnd("ide");
  55974. pragmas: [],
  55975. messageSends: ["ifNil:ifNotNil:", "asReceiver", "variable", "ifTrue:", "==", "variable:", "copy", "yourself"]
  55976. }, function ($methodClass){ return function (){
  55977. var self=this,$self=this;
  55978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55979. return $core.withContext(function($ctx1) {
  55980. //>>excludeEnd("ctx");
  55981. var $1,$2;
  55982. $1=[$recv([$self._variable()
  55983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55984. ,$ctx1.sendIdx["variable"]=1
  55985. //>>excludeEnd("ctx");
  55986. ][0])._asReceiver()
  55987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55988. ,$ctx1.sendIdx["asReceiver"]=1
  55989. //>>excludeEnd("ctx");
  55990. ][0];
  55991. if($1 == null || $1.a$nil){
  55992. return [(
  55993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55994. $ctx1.supercall = true,
  55995. //>>excludeEnd("ctx");
  55996. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._asReceiver.call($self))
  55997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55998. ,$ctx1.supercall = false
  55999. //>>excludeEnd("ctx");
  56000. ][0];
  56001. } else {
  56002. var receiverVar;
  56003. receiverVar=$1;
  56004. if($core.assert($recv($self._variable()).__eq_eq(receiverVar))){
  56005. return self;
  56006. }
  56007. $2=$self._copy();
  56008. $recv($2)._variable_(receiverVar);
  56009. return $recv($2)._yourself();
  56010. }
  56011. return self;
  56012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56013. }, function($ctx1) {$ctx1.fill(self,"asReceiver",{})});
  56014. //>>excludeEnd("ctx");
  56015. }; }),
  56016. $globals.IRVariable);
  56017. $core.addMethod(
  56018. $core.method({
  56019. selector: "isSuper",
  56020. protocol: "testing",
  56021. //>>excludeStart("ide", pragmas.excludeIdeData);
  56022. args: [],
  56023. source: "isSuper\x0a\x09^ self variable isSuper",
  56024. referencedClasses: [],
  56025. //>>excludeEnd("ide");
  56026. pragmas: [],
  56027. messageSends: ["isSuper", "variable"]
  56028. }, function ($methodClass){ return function (){
  56029. var self=this,$self=this;
  56030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56031. return $core.withContext(function($ctx1) {
  56032. //>>excludeEnd("ctx");
  56033. return $recv($self._variable())._isSuper();
  56034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56035. }, function($ctx1) {$ctx1.fill(self,"isSuper",{})});
  56036. //>>excludeEnd("ctx");
  56037. }; }),
  56038. $globals.IRVariable);
  56039. $core.addMethod(
  56040. $core.method({
  56041. selector: "isVariable",
  56042. protocol: "testing",
  56043. //>>excludeStart("ide", pragmas.excludeIdeData);
  56044. args: [],
  56045. source: "isVariable\x0a\x09^ true",
  56046. referencedClasses: [],
  56047. //>>excludeEnd("ide");
  56048. pragmas: [],
  56049. messageSends: []
  56050. }, function ($methodClass){ return function (){
  56051. var self=this,$self=this;
  56052. return true;
  56053. }; }),
  56054. $globals.IRVariable);
  56055. $core.addMethod(
  56056. $core.method({
  56057. selector: "variable",
  56058. protocol: "accessing",
  56059. //>>excludeStart("ide", pragmas.excludeIdeData);
  56060. args: [],
  56061. source: "variable\x0a\x09^ variable",
  56062. referencedClasses: [],
  56063. //>>excludeEnd("ide");
  56064. pragmas: [],
  56065. messageSends: []
  56066. }, function ($methodClass){ return function (){
  56067. var self=this,$self=this;
  56068. return $self.variable;
  56069. }; }),
  56070. $globals.IRVariable);
  56071. $core.addMethod(
  56072. $core.method({
  56073. selector: "variable:",
  56074. protocol: "accessing",
  56075. //>>excludeStart("ide", pragmas.excludeIdeData);
  56076. args: ["aScopeVariable"],
  56077. source: "variable: aScopeVariable\x0a\x09variable := aScopeVariable",
  56078. referencedClasses: [],
  56079. //>>excludeEnd("ide");
  56080. pragmas: [],
  56081. messageSends: []
  56082. }, function ($methodClass){ return function (aScopeVariable){
  56083. var self=this,$self=this;
  56084. $self.variable=aScopeVariable;
  56085. return self;
  56086. }; }),
  56087. $globals.IRVariable);
  56088. $core.addClass("IRVerbatim", $globals.IRInstruction, "Compiler-IR");
  56089. $core.setSlots($globals.IRVerbatim, ["source"]);
  56090. $core.addMethod(
  56091. $core.method({
  56092. selector: "acceptDagVisitor:",
  56093. protocol: "visiting",
  56094. //>>excludeStart("ide", pragmas.excludeIdeData);
  56095. args: ["aVisitor"],
  56096. source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRVerbatim: self",
  56097. referencedClasses: [],
  56098. //>>excludeEnd("ide");
  56099. pragmas: [],
  56100. messageSends: ["visitIRVerbatim:"]
  56101. }, function ($methodClass){ return function (aVisitor){
  56102. var self=this,$self=this;
  56103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56104. return $core.withContext(function($ctx1) {
  56105. //>>excludeEnd("ctx");
  56106. return $recv(aVisitor)._visitIRVerbatim_(self);
  56107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56108. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  56109. //>>excludeEnd("ctx");
  56110. }; }),
  56111. $globals.IRVerbatim);
  56112. $core.addMethod(
  56113. $core.method({
  56114. selector: "source",
  56115. protocol: "accessing",
  56116. //>>excludeStart("ide", pragmas.excludeIdeData);
  56117. args: [],
  56118. source: "source\x0a\x09^ source",
  56119. referencedClasses: [],
  56120. //>>excludeEnd("ide");
  56121. pragmas: [],
  56122. messageSends: []
  56123. }, function ($methodClass){ return function (){
  56124. var self=this,$self=this;
  56125. return $self.source;
  56126. }; }),
  56127. $globals.IRVerbatim);
  56128. $core.addMethod(
  56129. $core.method({
  56130. selector: "source:",
  56131. protocol: "accessing",
  56132. //>>excludeStart("ide", pragmas.excludeIdeData);
  56133. args: ["aString"],
  56134. source: "source: aString\x0a\x09source := aString",
  56135. referencedClasses: [],
  56136. //>>excludeEnd("ide");
  56137. pragmas: [],
  56138. messageSends: []
  56139. }, function ($methodClass){ return function (aString){
  56140. var self=this,$self=this;
  56141. $self.source=aString;
  56142. return self;
  56143. }; }),
  56144. $globals.IRVerbatim);
  56145. $core.addClass("IRPragmator", $globals.Object, "Compiler-IR");
  56146. $core.setSlots($globals.IRPragmator, ["irMethod"]);
  56147. $core.addMethod(
  56148. $core.method({
  56149. selector: "irMethod",
  56150. protocol: "accessing",
  56151. //>>excludeStart("ide", pragmas.excludeIdeData);
  56152. args: [],
  56153. source: "irMethod\x0a\x09^ irMethod",
  56154. referencedClasses: [],
  56155. //>>excludeEnd("ide");
  56156. pragmas: [],
  56157. messageSends: []
  56158. }, function ($methodClass){ return function (){
  56159. var self=this,$self=this;
  56160. return $self.irMethod;
  56161. }; }),
  56162. $globals.IRPragmator);
  56163. $core.addMethod(
  56164. $core.method({
  56165. selector: "irMethod:",
  56166. protocol: "accessing",
  56167. //>>excludeStart("ide", pragmas.excludeIdeData);
  56168. args: ["anObject"],
  56169. source: "irMethod: anObject\x0a\x09irMethod := anObject",
  56170. referencedClasses: [],
  56171. //>>excludeEnd("ide");
  56172. pragmas: [],
  56173. messageSends: []
  56174. }, function ($methodClass){ return function (anObject){
  56175. var self=this,$self=this;
  56176. $self.irMethod=anObject;
  56177. return self;
  56178. }; }),
  56179. $globals.IRPragmator);
  56180. $core.addMethod(
  56181. $core.method({
  56182. selector: "value:",
  56183. protocol: "visiting",
  56184. //>>excludeStart("ide", pragmas.excludeIdeData);
  56185. args: ["anIRMethod"],
  56186. source: "value: anIRMethod\x0a\x09self irMethod: anIRMethod.\x0a\x09self processPragmas: anIRMethod pragmas.\x0a\x09^ anIRMethod",
  56187. referencedClasses: [],
  56188. //>>excludeEnd("ide");
  56189. pragmas: [],
  56190. messageSends: ["irMethod:", "processPragmas:", "pragmas"]
  56191. }, function ($methodClass){ return function (anIRMethod){
  56192. var self=this,$self=this;
  56193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56194. return $core.withContext(function($ctx1) {
  56195. //>>excludeEnd("ctx");
  56196. $self._irMethod_(anIRMethod);
  56197. $self._processPragmas_($recv(anIRMethod)._pragmas());
  56198. return anIRMethod;
  56199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56200. }, function($ctx1) {$ctx1.fill(self,"value:",{anIRMethod:anIRMethod})});
  56201. //>>excludeEnd("ctx");
  56202. }; }),
  56203. $globals.IRPragmator);
  56204. $core.addClass("IRLatePragmator", $globals.IRPragmator, "Compiler-IR");
  56205. $core.addMethod(
  56206. $core.method({
  56207. selector: "jsOverride:",
  56208. protocol: "pragmas",
  56209. //>>excludeStart("ide", pragmas.excludeIdeData);
  56210. args: ["aString"],
  56211. source: "jsOverride: aString\x0a\x09self irMethod arguments ifNotEmpty: [\x0a\x09\x09CompilerError signal: 'Must use <jsOverride:> in unary method.' ].\x0a\x09self irMethod attachments\x0a\x09\x09at: aString\x0a\x09\x09put: (NativeFunction\x0a\x09\x09\x09constructorNamed: #Function\x0a\x09\x09\x09value: 'return this.', irMethod selector asJavaScriptMethodName, '()')",
  56212. referencedClasses: ["CompilerError", "NativeFunction"],
  56213. //>>excludeEnd("ide");
  56214. pragmas: [],
  56215. messageSends: ["ifNotEmpty:", "arguments", "irMethod", "signal:", "at:put:", "attachments", "constructorNamed:value:", ",", "asJavaScriptMethodName", "selector"]
  56216. }, function ($methodClass){ return function (aString){
  56217. var self=this,$self=this;
  56218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56219. return $core.withContext(function($ctx1) {
  56220. //>>excludeEnd("ctx");
  56221. $recv($recv([$self._irMethod()
  56222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56223. ,$ctx1.sendIdx["irMethod"]=1
  56224. //>>excludeEnd("ctx");
  56225. ][0])._arguments())._ifNotEmpty_((function(){
  56226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56227. return $core.withContext(function($ctx2) {
  56228. //>>excludeEnd("ctx");
  56229. return $recv($globals.CompilerError)._signal_("Must use <jsOverride:> in unary method.");
  56230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56231. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  56232. //>>excludeEnd("ctx");
  56233. }));
  56234. $recv($recv($self._irMethod())._attachments())._at_put_(aString,$recv($globals.NativeFunction)._constructorNamed_value_("Function",[$recv("return this.".__comma($recv($recv($self.irMethod)._selector())._asJavaScriptMethodName())).__comma("()")
  56235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56236. ,$ctx1.sendIdx[","]=1
  56237. //>>excludeEnd("ctx");
  56238. ][0]));
  56239. return self;
  56240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56241. }, function($ctx1) {$ctx1.fill(self,"jsOverride:",{aString:aString})});
  56242. //>>excludeEnd("ctx");
  56243. }; }),
  56244. $globals.IRLatePragmator);
  56245. $core.addMethod(
  56246. $core.method({
  56247. selector: "jsOverride:args:",
  56248. protocol: "pragmas",
  56249. //>>excludeStart("ide", pragmas.excludeIdeData);
  56250. args: ["aString", "aCollection"],
  56251. source: "jsOverride: aString args: aCollection\x0a\x09| myArgs |\x0a\x09myArgs := self irMethod arguments.\x0a\x09myArgs size = aCollection size ifFalse: [\x0a\x09\x09CompilerError signal: 'Should have ', self irMethod arguments size asString, ' args in <jsOverride:args:>.' ].\x0a\x09myArgs asSet = aCollection asSet ifFalse: [\x0a\x09\x09CompilerError signal: 'Argument mismatch in <jsOverride:args:>.' ].\x0a\x09self irMethod attachments\x0a\x09\x09at: aString\x0a\x09\x09put: (NativeFunction\x0a\x09\x09\x09constructorNamed: #Function\x0a\x09\x09\x09value: (',' join: aCollection)\x0a\x09\x09\x09value: 'return this.', irMethod selector asJavaScriptMethodName, '(', (',' join: myArgs), ')')",
  56252. referencedClasses: ["CompilerError", "NativeFunction"],
  56253. //>>excludeEnd("ide");
  56254. pragmas: [],
  56255. messageSends: ["arguments", "irMethod", "ifFalse:", "=", "size", "signal:", ",", "asString", "asSet", "at:put:", "attachments", "constructorNamed:value:value:", "join:", "asJavaScriptMethodName", "selector"]
  56256. }, function ($methodClass){ return function (aString,aCollection){
  56257. var self=this,$self=this;
  56258. var myArgs;
  56259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56260. return $core.withContext(function($ctx1) {
  56261. //>>excludeEnd("ctx");
  56262. myArgs=[$recv([$self._irMethod()
  56263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56264. ,$ctx1.sendIdx["irMethod"]=1
  56265. //>>excludeEnd("ctx");
  56266. ][0])._arguments()
  56267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56268. ,$ctx1.sendIdx["arguments"]=1
  56269. //>>excludeEnd("ctx");
  56270. ][0];
  56271. if(!$core.assert([$recv([$recv(myArgs)._size()
  56272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56273. ,$ctx1.sendIdx["size"]=1
  56274. //>>excludeEnd("ctx");
  56275. ][0]).__eq([$recv(aCollection)._size()
  56276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56277. ,$ctx1.sendIdx["size"]=2
  56278. //>>excludeEnd("ctx");
  56279. ][0])
  56280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56281. ,$ctx1.sendIdx["="]=1
  56282. //>>excludeEnd("ctx");
  56283. ][0])){
  56284. [$recv($globals.CompilerError)._signal_([$recv(["Should have ".__comma($recv($recv($recv([$self._irMethod()
  56285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56286. ,$ctx1.sendIdx["irMethod"]=2
  56287. //>>excludeEnd("ctx");
  56288. ][0])._arguments())._size())._asString())
  56289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56290. ,$ctx1.sendIdx[","]=2
  56291. //>>excludeEnd("ctx");
  56292. ][0]).__comma(" args in <jsOverride:args:>.")
  56293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56294. ,$ctx1.sendIdx[","]=1
  56295. //>>excludeEnd("ctx");
  56296. ][0])
  56297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56298. ,$ctx1.sendIdx["signal:"]=1
  56299. //>>excludeEnd("ctx");
  56300. ][0];
  56301. }
  56302. if(!$core.assert($recv([$recv(myArgs)._asSet()
  56303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56304. ,$ctx1.sendIdx["asSet"]=1
  56305. //>>excludeEnd("ctx");
  56306. ][0]).__eq($recv(aCollection)._asSet()))){
  56307. $recv($globals.CompilerError)._signal_("Argument mismatch in <jsOverride:args:>.");
  56308. }
  56309. $recv($recv($self._irMethod())._attachments())._at_put_(aString,$recv($globals.NativeFunction)._constructorNamed_value_value_("Function",[","._join_(aCollection)
  56310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56311. ,$ctx1.sendIdx["join:"]=1
  56312. //>>excludeEnd("ctx");
  56313. ][0],[$recv([$recv([$recv("return this.".__comma($recv($recv($self.irMethod)._selector())._asJavaScriptMethodName())).__comma("(")
  56314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56315. ,$ctx1.sendIdx[","]=5
  56316. //>>excludeEnd("ctx");
  56317. ][0]).__comma(","._join_(myArgs))
  56318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56319. ,$ctx1.sendIdx[","]=4
  56320. //>>excludeEnd("ctx");
  56321. ][0]).__comma(")")
  56322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56323. ,$ctx1.sendIdx[","]=3
  56324. //>>excludeEnd("ctx");
  56325. ][0]));
  56326. return self;
  56327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56328. }, function($ctx1) {$ctx1.fill(self,"jsOverride:args:",{aString:aString,aCollection:aCollection,myArgs:myArgs})});
  56329. //>>excludeEnd("ctx");
  56330. }; }),
  56331. $globals.IRLatePragmator);
  56332. $core.addClass("IRVisitor", $globals.ParentFakingPathDagVisitor, "Compiler-IR");
  56333. $core.addMethod(
  56334. $core.method({
  56335. selector: "visitDagNode:",
  56336. protocol: "visiting",
  56337. //>>excludeStart("ide", pragmas.excludeIdeData);
  56338. args: ["aNode"],
  56339. source: "visitDagNode: aNode\x0a\x09^ self visitDagNodeVariantSimple: aNode",
  56340. referencedClasses: [],
  56341. //>>excludeEnd("ide");
  56342. pragmas: [],
  56343. messageSends: ["visitDagNodeVariantSimple:"]
  56344. }, function ($methodClass){ return function (aNode){
  56345. var self=this,$self=this;
  56346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56347. return $core.withContext(function($ctx1) {
  56348. //>>excludeEnd("ctx");
  56349. return $self._visitDagNodeVariantSimple_(aNode);
  56350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56351. }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode})});
  56352. //>>excludeEnd("ctx");
  56353. }; }),
  56354. $globals.IRVisitor);
  56355. $core.addMethod(
  56356. $core.method({
  56357. selector: "visitIRAssignment:",
  56358. protocol: "visiting",
  56359. //>>excludeStart("ide", pragmas.excludeIdeData);
  56360. args: ["anIRAssignment"],
  56361. source: "visitIRAssignment: anIRAssignment\x0a\x09^ self visitDagNode: anIRAssignment",
  56362. referencedClasses: [],
  56363. //>>excludeEnd("ide");
  56364. pragmas: [],
  56365. messageSends: ["visitDagNode:"]
  56366. }, function ($methodClass){ return function (anIRAssignment){
  56367. var self=this,$self=this;
  56368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56369. return $core.withContext(function($ctx1) {
  56370. //>>excludeEnd("ctx");
  56371. return $self._visitDagNode_(anIRAssignment);
  56372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56373. }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment})});
  56374. //>>excludeEnd("ctx");
  56375. }; }),
  56376. $globals.IRVisitor);
  56377. $core.addMethod(
  56378. $core.method({
  56379. selector: "visitIRBlockReturn:",
  56380. protocol: "visiting",
  56381. //>>excludeStart("ide", pragmas.excludeIdeData);
  56382. args: ["anIRBlockReturn"],
  56383. source: "visitIRBlockReturn: anIRBlockReturn\x0a\x09^ self visitIRReturn: anIRBlockReturn",
  56384. referencedClasses: [],
  56385. //>>excludeEnd("ide");
  56386. pragmas: [],
  56387. messageSends: ["visitIRReturn:"]
  56388. }, function ($methodClass){ return function (anIRBlockReturn){
  56389. var self=this,$self=this;
  56390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56391. return $core.withContext(function($ctx1) {
  56392. //>>excludeEnd("ctx");
  56393. return $self._visitIRReturn_(anIRBlockReturn);
  56394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56395. }, function($ctx1) {$ctx1.fill(self,"visitIRBlockReturn:",{anIRBlockReturn:anIRBlockReturn})});
  56396. //>>excludeEnd("ctx");
  56397. }; }),
  56398. $globals.IRVisitor);
  56399. $core.addMethod(
  56400. $core.method({
  56401. selector: "visitIRBlockSequence:",
  56402. protocol: "visiting",
  56403. //>>excludeStart("ide", pragmas.excludeIdeData);
  56404. args: ["anIRBlockSequence"],
  56405. source: "visitIRBlockSequence: anIRBlockSequence\x0a\x09^ self visitIRSequence: anIRBlockSequence",
  56406. referencedClasses: [],
  56407. //>>excludeEnd("ide");
  56408. pragmas: [],
  56409. messageSends: ["visitIRSequence:"]
  56410. }, function ($methodClass){ return function (anIRBlockSequence){
  56411. var self=this,$self=this;
  56412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56413. return $core.withContext(function($ctx1) {
  56414. //>>excludeEnd("ctx");
  56415. return $self._visitIRSequence_(anIRBlockSequence);
  56416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56417. }, function($ctx1) {$ctx1.fill(self,"visitIRBlockSequence:",{anIRBlockSequence:anIRBlockSequence})});
  56418. //>>excludeEnd("ctx");
  56419. }; }),
  56420. $globals.IRVisitor);
  56421. $core.addMethod(
  56422. $core.method({
  56423. selector: "visitIRClosure:",
  56424. protocol: "visiting",
  56425. //>>excludeStart("ide", pragmas.excludeIdeData);
  56426. args: ["anIRClosure"],
  56427. source: "visitIRClosure: anIRClosure\x0a\x09^ self visitDagNode: anIRClosure",
  56428. referencedClasses: [],
  56429. //>>excludeEnd("ide");
  56430. pragmas: [],
  56431. messageSends: ["visitDagNode:"]
  56432. }, function ($methodClass){ return function (anIRClosure){
  56433. var self=this,$self=this;
  56434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56435. return $core.withContext(function($ctx1) {
  56436. //>>excludeEnd("ctx");
  56437. return $self._visitDagNode_(anIRClosure);
  56438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56439. }, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure})});
  56440. //>>excludeEnd("ctx");
  56441. }; }),
  56442. $globals.IRVisitor);
  56443. $core.addMethod(
  56444. $core.method({
  56445. selector: "visitIRDynamicArray:",
  56446. protocol: "visiting",
  56447. //>>excludeStart("ide", pragmas.excludeIdeData);
  56448. args: ["anIRDynamicArray"],
  56449. source: "visitIRDynamicArray: anIRDynamicArray\x0a\x09^ self visitDagNode: anIRDynamicArray",
  56450. referencedClasses: [],
  56451. //>>excludeEnd("ide");
  56452. pragmas: [],
  56453. messageSends: ["visitDagNode:"]
  56454. }, function ($methodClass){ return function (anIRDynamicArray){
  56455. var self=this,$self=this;
  56456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56457. return $core.withContext(function($ctx1) {
  56458. //>>excludeEnd("ctx");
  56459. return $self._visitDagNode_(anIRDynamicArray);
  56460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56461. }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray})});
  56462. //>>excludeEnd("ctx");
  56463. }; }),
  56464. $globals.IRVisitor);
  56465. $core.addMethod(
  56466. $core.method({
  56467. selector: "visitIRDynamicDictionary:",
  56468. protocol: "visiting",
  56469. //>>excludeStart("ide", pragmas.excludeIdeData);
  56470. args: ["anIRDynamicDictionary"],
  56471. source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09^ self visitDagNode: anIRDynamicDictionary",
  56472. referencedClasses: [],
  56473. //>>excludeEnd("ide");
  56474. pragmas: [],
  56475. messageSends: ["visitDagNode:"]
  56476. }, function ($methodClass){ return function (anIRDynamicDictionary){
  56477. var self=this,$self=this;
  56478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56479. return $core.withContext(function($ctx1) {
  56480. //>>excludeEnd("ctx");
  56481. return $self._visitDagNode_(anIRDynamicDictionary);
  56482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56483. }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary})});
  56484. //>>excludeEnd("ctx");
  56485. }; }),
  56486. $globals.IRVisitor);
  56487. $core.addMethod(
  56488. $core.method({
  56489. selector: "visitIRMethod:",
  56490. protocol: "visiting",
  56491. //>>excludeStart("ide", pragmas.excludeIdeData);
  56492. args: ["anIRMethod"],
  56493. source: "visitIRMethod: anIRMethod\x0a\x09^ self visitDagNode: anIRMethod",
  56494. referencedClasses: [],
  56495. //>>excludeEnd("ide");
  56496. pragmas: [],
  56497. messageSends: ["visitDagNode:"]
  56498. }, function ($methodClass){ return function (anIRMethod){
  56499. var self=this,$self=this;
  56500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56501. return $core.withContext(function($ctx1) {
  56502. //>>excludeEnd("ctx");
  56503. return $self._visitDagNode_(anIRMethod);
  56504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56505. }, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod})});
  56506. //>>excludeEnd("ctx");
  56507. }; }),
  56508. $globals.IRVisitor);
  56509. $core.addMethod(
  56510. $core.method({
  56511. selector: "visitIRNonLocalReturn:",
  56512. protocol: "visiting",
  56513. //>>excludeStart("ide", pragmas.excludeIdeData);
  56514. args: ["anIRNonLocalReturn"],
  56515. source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09^ self visitDagNode: anIRNonLocalReturn",
  56516. referencedClasses: [],
  56517. //>>excludeEnd("ide");
  56518. pragmas: [],
  56519. messageSends: ["visitDagNode:"]
  56520. }, function ($methodClass){ return function (anIRNonLocalReturn){
  56521. var self=this,$self=this;
  56522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56523. return $core.withContext(function($ctx1) {
  56524. //>>excludeEnd("ctx");
  56525. return $self._visitDagNode_(anIRNonLocalReturn);
  56526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56527. }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn})});
  56528. //>>excludeEnd("ctx");
  56529. }; }),
  56530. $globals.IRVisitor);
  56531. $core.addMethod(
  56532. $core.method({
  56533. selector: "visitIRNonLocalReturnHandling:",
  56534. protocol: "visiting",
  56535. //>>excludeStart("ide", pragmas.excludeIdeData);
  56536. args: ["anIRNonLocalReturnHandling"],
  56537. source: "visitIRNonLocalReturnHandling: anIRNonLocalReturnHandling\x0a\x09^ self visitDagNode: anIRNonLocalReturnHandling",
  56538. referencedClasses: [],
  56539. //>>excludeEnd("ide");
  56540. pragmas: [],
  56541. messageSends: ["visitDagNode:"]
  56542. }, function ($methodClass){ return function (anIRNonLocalReturnHandling){
  56543. var self=this,$self=this;
  56544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56545. return $core.withContext(function($ctx1) {
  56546. //>>excludeEnd("ctx");
  56547. return $self._visitDagNode_(anIRNonLocalReturnHandling);
  56548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56549. }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturnHandling:",{anIRNonLocalReturnHandling:anIRNonLocalReturnHandling})});
  56550. //>>excludeEnd("ctx");
  56551. }; }),
  56552. $globals.IRVisitor);
  56553. $core.addMethod(
  56554. $core.method({
  56555. selector: "visitIRReturn:",
  56556. protocol: "visiting",
  56557. //>>excludeStart("ide", pragmas.excludeIdeData);
  56558. args: ["anIRReturn"],
  56559. source: "visitIRReturn: anIRReturn\x0a\x09^ self visitDagNode: anIRReturn",
  56560. referencedClasses: [],
  56561. //>>excludeEnd("ide");
  56562. pragmas: [],
  56563. messageSends: ["visitDagNode:"]
  56564. }, function ($methodClass){ return function (anIRReturn){
  56565. var self=this,$self=this;
  56566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56567. return $core.withContext(function($ctx1) {
  56568. //>>excludeEnd("ctx");
  56569. return $self._visitDagNode_(anIRReturn);
  56570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56571. }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn})});
  56572. //>>excludeEnd("ctx");
  56573. }; }),
  56574. $globals.IRVisitor);
  56575. $core.addMethod(
  56576. $core.method({
  56577. selector: "visitIRSend:",
  56578. protocol: "visiting",
  56579. //>>excludeStart("ide", pragmas.excludeIdeData);
  56580. args: ["anIRSend"],
  56581. source: "visitIRSend: anIRSend\x0a\x09^ self visitDagNode: anIRSend",
  56582. referencedClasses: [],
  56583. //>>excludeEnd("ide");
  56584. pragmas: [],
  56585. messageSends: ["visitDagNode:"]
  56586. }, function ($methodClass){ return function (anIRSend){
  56587. var self=this,$self=this;
  56588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56589. return $core.withContext(function($ctx1) {
  56590. //>>excludeEnd("ctx");
  56591. return $self._visitDagNode_(anIRSend);
  56592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56593. }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend})});
  56594. //>>excludeEnd("ctx");
  56595. }; }),
  56596. $globals.IRVisitor);
  56597. $core.addMethod(
  56598. $core.method({
  56599. selector: "visitIRSequence:",
  56600. protocol: "visiting",
  56601. //>>excludeStart("ide", pragmas.excludeIdeData);
  56602. args: ["anIRSequence"],
  56603. source: "visitIRSequence: anIRSequence\x0a\x09^ self visitDagNode: anIRSequence",
  56604. referencedClasses: [],
  56605. //>>excludeEnd("ide");
  56606. pragmas: [],
  56607. messageSends: ["visitDagNode:"]
  56608. }, function ($methodClass){ return function (anIRSequence){
  56609. var self=this,$self=this;
  56610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56611. return $core.withContext(function($ctx1) {
  56612. //>>excludeEnd("ctx");
  56613. return $self._visitDagNode_(anIRSequence);
  56614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56615. }, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence})});
  56616. //>>excludeEnd("ctx");
  56617. }; }),
  56618. $globals.IRVisitor);
  56619. $core.addMethod(
  56620. $core.method({
  56621. selector: "visitIRTempDeclaration:",
  56622. protocol: "visiting",
  56623. //>>excludeStart("ide", pragmas.excludeIdeData);
  56624. args: ["anIRTempDeclaration"],
  56625. source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09^ self visitDagNode: anIRTempDeclaration",
  56626. referencedClasses: [],
  56627. //>>excludeEnd("ide");
  56628. pragmas: [],
  56629. messageSends: ["visitDagNode:"]
  56630. }, function ($methodClass){ return function (anIRTempDeclaration){
  56631. var self=this,$self=this;
  56632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56633. return $core.withContext(function($ctx1) {
  56634. //>>excludeEnd("ctx");
  56635. return $self._visitDagNode_(anIRTempDeclaration);
  56636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56637. }, function($ctx1) {$ctx1.fill(self,"visitIRTempDeclaration:",{anIRTempDeclaration:anIRTempDeclaration})});
  56638. //>>excludeEnd("ctx");
  56639. }; }),
  56640. $globals.IRVisitor);
  56641. $core.addMethod(
  56642. $core.method({
  56643. selector: "visitIRValue:",
  56644. protocol: "visiting",
  56645. //>>excludeStart("ide", pragmas.excludeIdeData);
  56646. args: ["anIRValue"],
  56647. source: "visitIRValue: anIRValue\x0a\x09^ self visitDagNode: anIRValue",
  56648. referencedClasses: [],
  56649. //>>excludeEnd("ide");
  56650. pragmas: [],
  56651. messageSends: ["visitDagNode:"]
  56652. }, function ($methodClass){ return function (anIRValue){
  56653. var self=this,$self=this;
  56654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56655. return $core.withContext(function($ctx1) {
  56656. //>>excludeEnd("ctx");
  56657. return $self._visitDagNode_(anIRValue);
  56658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56659. }, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue})});
  56660. //>>excludeEnd("ctx");
  56661. }; }),
  56662. $globals.IRVisitor);
  56663. $core.addMethod(
  56664. $core.method({
  56665. selector: "visitIRVariable:",
  56666. protocol: "visiting",
  56667. //>>excludeStart("ide", pragmas.excludeIdeData);
  56668. args: ["anIRVariable"],
  56669. source: "visitIRVariable: anIRVariable\x0a\x09^ self visitDagNode: anIRVariable",
  56670. referencedClasses: [],
  56671. //>>excludeEnd("ide");
  56672. pragmas: [],
  56673. messageSends: ["visitDagNode:"]
  56674. }, function ($methodClass){ return function (anIRVariable){
  56675. var self=this,$self=this;
  56676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56677. return $core.withContext(function($ctx1) {
  56678. //>>excludeEnd("ctx");
  56679. return $self._visitDagNode_(anIRVariable);
  56680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56681. }, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable})});
  56682. //>>excludeEnd("ctx");
  56683. }; }),
  56684. $globals.IRVisitor);
  56685. $core.addMethod(
  56686. $core.method({
  56687. selector: "visitIRVerbatim:",
  56688. protocol: "visiting",
  56689. //>>excludeStart("ide", pragmas.excludeIdeData);
  56690. args: ["anIRVerbatim"],
  56691. source: "visitIRVerbatim: anIRVerbatim\x0a\x09^ self visitDagNode: anIRVerbatim",
  56692. referencedClasses: [],
  56693. //>>excludeEnd("ide");
  56694. pragmas: [],
  56695. messageSends: ["visitDagNode:"]
  56696. }, function ($methodClass){ return function (anIRVerbatim){
  56697. var self=this,$self=this;
  56698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56699. return $core.withContext(function($ctx1) {
  56700. //>>excludeEnd("ctx");
  56701. return $self._visitDagNode_(anIRVerbatim);
  56702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56703. }, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim})});
  56704. //>>excludeEnd("ctx");
  56705. }; }),
  56706. $globals.IRVisitor);
  56707. $core.addClass("IRJSTranslator", $globals.IRVisitor, "Compiler-IR");
  56708. $core.setSlots($globals.IRJSTranslator, ["stream", "currentClass"]);
  56709. $core.addMethod(
  56710. $core.method({
  56711. selector: "contents",
  56712. protocol: "accessing",
  56713. //>>excludeStart("ide", pragmas.excludeIdeData);
  56714. args: [],
  56715. source: "contents\x0a\x09^ self stream contents",
  56716. referencedClasses: [],
  56717. //>>excludeEnd("ide");
  56718. pragmas: [],
  56719. messageSends: ["contents", "stream"]
  56720. }, function ($methodClass){ return function (){
  56721. var self=this,$self=this;
  56722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56723. return $core.withContext(function($ctx1) {
  56724. //>>excludeEnd("ctx");
  56725. return $recv($self._stream())._contents();
  56726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56727. }, function($ctx1) {$ctx1.fill(self,"contents",{})});
  56728. //>>excludeEnd("ctx");
  56729. }; }),
  56730. $globals.IRJSTranslator);
  56731. $core.addMethod(
  56732. $core.method({
  56733. selector: "currentClass",
  56734. protocol: "accessing",
  56735. //>>excludeStart("ide", pragmas.excludeIdeData);
  56736. args: [],
  56737. source: "currentClass\x0a\x09^ currentClass",
  56738. referencedClasses: [],
  56739. //>>excludeEnd("ide");
  56740. pragmas: [],
  56741. messageSends: []
  56742. }, function ($methodClass){ return function (){
  56743. var self=this,$self=this;
  56744. return $self.currentClass;
  56745. }; }),
  56746. $globals.IRJSTranslator);
  56747. $core.addMethod(
  56748. $core.method({
  56749. selector: "currentClass:",
  56750. protocol: "accessing",
  56751. //>>excludeStart("ide", pragmas.excludeIdeData);
  56752. args: ["aClass"],
  56753. source: "currentClass: aClass\x0a\x09currentClass := aClass",
  56754. referencedClasses: [],
  56755. //>>excludeEnd("ide");
  56756. pragmas: [],
  56757. messageSends: []
  56758. }, function ($methodClass){ return function (aClass){
  56759. var self=this,$self=this;
  56760. $self.currentClass=aClass;
  56761. return self;
  56762. }; }),
  56763. $globals.IRJSTranslator);
  56764. $core.addMethod(
  56765. $core.method({
  56766. selector: "initialize",
  56767. protocol: "initialization",
  56768. //>>excludeStart("ide", pragmas.excludeIdeData);
  56769. args: [],
  56770. source: "initialize\x0a\x09super initialize.\x0a\x09stream := JSStream new.",
  56771. referencedClasses: ["JSStream"],
  56772. //>>excludeEnd("ide");
  56773. pragmas: [],
  56774. messageSends: ["initialize", "new"]
  56775. }, function ($methodClass){ return function (){
  56776. var self=this,$self=this;
  56777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56778. return $core.withContext(function($ctx1) {
  56779. //>>excludeEnd("ctx");
  56780. [(
  56781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56782. $ctx1.supercall = true,
  56783. //>>excludeEnd("ctx");
  56784. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  56785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56786. ,$ctx1.supercall = false
  56787. //>>excludeEnd("ctx");
  56788. ][0];
  56789. $self.stream=$recv($globals.JSStream)._new();
  56790. return self;
  56791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56792. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  56793. //>>excludeEnd("ctx");
  56794. }; }),
  56795. $globals.IRJSTranslator);
  56796. $core.addMethod(
  56797. $core.method({
  56798. selector: "stream",
  56799. protocol: "accessing",
  56800. //>>excludeStart("ide", pragmas.excludeIdeData);
  56801. args: [],
  56802. source: "stream\x0a\x09^ stream",
  56803. referencedClasses: [],
  56804. //>>excludeEnd("ide");
  56805. pragmas: [],
  56806. messageSends: []
  56807. }, function ($methodClass){ return function (){
  56808. var self=this,$self=this;
  56809. return $self.stream;
  56810. }; }),
  56811. $globals.IRJSTranslator);
  56812. $core.addMethod(
  56813. $core.method({
  56814. selector: "stream:",
  56815. protocol: "accessing",
  56816. //>>excludeStart("ide", pragmas.excludeIdeData);
  56817. args: ["aStream"],
  56818. source: "stream: aStream\x0a\x09stream := aStream",
  56819. referencedClasses: [],
  56820. //>>excludeEnd("ide");
  56821. pragmas: [],
  56822. messageSends: []
  56823. }, function ($methodClass){ return function (aStream){
  56824. var self=this,$self=this;
  56825. $self.stream=aStream;
  56826. return self;
  56827. }; }),
  56828. $globals.IRJSTranslator);
  56829. $core.addMethod(
  56830. $core.method({
  56831. selector: "visitIRAssignment:",
  56832. protocol: "visiting",
  56833. //>>excludeStart("ide", pragmas.excludeIdeData);
  56834. args: ["anIRAssignment"],
  56835. source: "visitIRAssignment: anIRAssignment\x0a\x09self stream\x0a\x09\x09nextPutAssignLhs: [self visit: anIRAssignment left]\x0a\x09\x09rhs: [self visit: anIRAssignment right].",
  56836. referencedClasses: [],
  56837. //>>excludeEnd("ide");
  56838. pragmas: [],
  56839. messageSends: ["nextPutAssignLhs:rhs:", "stream", "visit:", "left", "right"]
  56840. }, function ($methodClass){ return function (anIRAssignment){
  56841. var self=this,$self=this;
  56842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56843. return $core.withContext(function($ctx1) {
  56844. //>>excludeEnd("ctx");
  56845. $recv($self._stream())._nextPutAssignLhs_rhs_((function(){
  56846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56847. return $core.withContext(function($ctx2) {
  56848. //>>excludeEnd("ctx");
  56849. return [$self._visit_($recv(anIRAssignment)._left())
  56850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56851. ,$ctx2.sendIdx["visit:"]=1
  56852. //>>excludeEnd("ctx");
  56853. ][0];
  56854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56855. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  56856. //>>excludeEnd("ctx");
  56857. }),(function(){
  56858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56859. return $core.withContext(function($ctx2) {
  56860. //>>excludeEnd("ctx");
  56861. return $self._visit_($recv(anIRAssignment)._right());
  56862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56863. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  56864. //>>excludeEnd("ctx");
  56865. }));
  56866. return self;
  56867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56868. }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment})});
  56869. //>>excludeEnd("ctx");
  56870. }; }),
  56871. $globals.IRJSTranslator);
  56872. $core.addMethod(
  56873. $core.method({
  56874. selector: "visitIRClosure:",
  56875. protocol: "visiting",
  56876. //>>excludeStart("ide", pragmas.excludeIdeData);
  56877. args: ["anIRClosure"],
  56878. source: "visitIRClosure: anIRClosure\x0a\x09self stream\x0a\x09\x09nextPutClosureWith: [\x0a\x09\x09\x09self stream nextPutVars: (anIRClosure tempDeclarations collect: [ :each |\x0a\x09\x09\x09\x09\x09each name asVariableName ]).\x0a\x09\x09\x09self stream\x0a\x09\x09\x09\x09nextPutBlockContextFor: anIRClosure\x0a\x09\x09\x09\x09during: [ super visitIRClosure: anIRClosure ] ]\x0a\x09\x09arguments: anIRClosure arguments",
  56879. referencedClasses: [],
  56880. //>>excludeEnd("ide");
  56881. pragmas: [],
  56882. messageSends: ["nextPutClosureWith:arguments:", "stream", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "nextPutBlockContextFor:during:", "visitIRClosure:", "arguments"]
  56883. }, function ($methodClass){ return function (anIRClosure){
  56884. var self=this,$self=this;
  56885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56886. return $core.withContext(function($ctx1) {
  56887. //>>excludeEnd("ctx");
  56888. $recv([$self._stream()
  56889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56890. ,$ctx1.sendIdx["stream"]=1
  56891. //>>excludeEnd("ctx");
  56892. ][0])._nextPutClosureWith_arguments_((function(){
  56893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56894. return $core.withContext(function($ctx2) {
  56895. //>>excludeEnd("ctx");
  56896. $recv([$self._stream()
  56897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56898. ,$ctx2.sendIdx["stream"]=2
  56899. //>>excludeEnd("ctx");
  56900. ][0])._nextPutVars_($recv($recv(anIRClosure)._tempDeclarations())._collect_((function(each){
  56901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56902. return $core.withContext(function($ctx3) {
  56903. //>>excludeEnd("ctx");
  56904. return $recv($recv(each)._name())._asVariableName();
  56905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56906. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  56907. //>>excludeEnd("ctx");
  56908. })));
  56909. return $recv($self._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){
  56910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56911. return $core.withContext(function($ctx3) {
  56912. //>>excludeEnd("ctx");
  56913. return [(
  56914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56915. $ctx3.supercall = true,
  56916. //>>excludeEnd("ctx");
  56917. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRClosure_.call($self,anIRClosure))
  56918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56919. ,$ctx3.supercall = false
  56920. //>>excludeEnd("ctx");
  56921. ][0];
  56922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56923. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  56924. //>>excludeEnd("ctx");
  56925. }));
  56926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56927. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  56928. //>>excludeEnd("ctx");
  56929. }),$recv(anIRClosure)._arguments());
  56930. return self;
  56931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56932. }, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure})});
  56933. //>>excludeEnd("ctx");
  56934. }; }),
  56935. $globals.IRJSTranslator);
  56936. $core.addMethod(
  56937. $core.method({
  56938. selector: "visitIRDynamicArray:",
  56939. protocol: "visiting",
  56940. //>>excludeStart("ide", pragmas.excludeIdeData);
  56941. args: ["anIRDynamicArray"],
  56942. source: "visitIRDynamicArray: anIRDynamicArray\x0a\x09self\x0a\x09\x09visitInstructionList: anIRDynamicArray dagChildren\x0a\x09\x09enclosedBetween: '[' and: ']'",
  56943. referencedClasses: [],
  56944. //>>excludeEnd("ide");
  56945. pragmas: [],
  56946. messageSends: ["visitInstructionList:enclosedBetween:and:", "dagChildren"]
  56947. }, function ($methodClass){ return function (anIRDynamicArray){
  56948. var self=this,$self=this;
  56949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56950. return $core.withContext(function($ctx1) {
  56951. //>>excludeEnd("ctx");
  56952. $self._visitInstructionList_enclosedBetween_and_($recv(anIRDynamicArray)._dagChildren(),"[","]");
  56953. return self;
  56954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56955. }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray})});
  56956. //>>excludeEnd("ctx");
  56957. }; }),
  56958. $globals.IRJSTranslator);
  56959. $core.addMethod(
  56960. $core.method({
  56961. selector: "visitIRDynamicDictionary:",
  56962. protocol: "visiting",
  56963. //>>excludeStart("ide", pragmas.excludeIdeData);
  56964. args: ["anIRDynamicDictionary"],
  56965. source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09self\x0a\x09\x09visitInstructionList: anIRDynamicDictionary dagChildren\x0a\x09\x09enclosedBetween: '$globals.HashedCollection._newFromPairs_([' and: '])'",
  56966. referencedClasses: [],
  56967. //>>excludeEnd("ide");
  56968. pragmas: [],
  56969. messageSends: ["visitInstructionList:enclosedBetween:and:", "dagChildren"]
  56970. }, function ($methodClass){ return function (anIRDynamicDictionary){
  56971. var self=this,$self=this;
  56972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56973. return $core.withContext(function($ctx1) {
  56974. //>>excludeEnd("ctx");
  56975. $self._visitInstructionList_enclosedBetween_and_($recv(anIRDynamicDictionary)._dagChildren(),"$globals.HashedCollection._newFromPairs_([","])");
  56976. return self;
  56977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56978. }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary})});
  56979. //>>excludeEnd("ctx");
  56980. }; }),
  56981. $globals.IRJSTranslator);
  56982. $core.addMethod(
  56983. $core.method({
  56984. selector: "visitIRMethod:",
  56985. protocol: "visiting",
  56986. //>>excludeStart("ide", pragmas.excludeIdeData);
  56987. args: ["anIRMethod"],
  56988. source: "visitIRMethod: anIRMethod\x0a\x0a\x09self stream\x0a\x09\x09\x09nextPutFunctionWith: [\x0a\x09\x09\x09\x09self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |\x0a\x09\x09\x09\x09\x09each name asVariableName ]).\x0a\x09\x09\x09\x09self stream nextPutContextFor: anIRMethod during: [\x0a\x09\x09\x09\x09\x09anIRMethod internalVariables ifNotEmpty: [ :internalVars |\x0a\x09\x09\x09\x09\x09\x09self stream nextPutVars: \x0a\x09\x09\x09\x09\x09\x09\x09(internalVars collect: [ :each | each variable alias ]) asSet ].\x0a\x09\x09\x09\x09anIRMethod scope hasNonLocalReturn\x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self stream nextPutNonLocalReturnHandlingWith: [\x0a\x09\x09\x09\x09\x09\x09\x09super visitIRMethod: anIRMethod ] ]\x0a\x09\x09\x09\x09\x09ifFalse: [ super visitIRMethod: anIRMethod ] ]]\x0a\x09\x09\x09arguments: anIRMethod arguments.\x0a\x09\x09\x09\x0a\x09^ anIRMethod compiledSource: self contents; yourself",
  56989. referencedClasses: [],
  56990. //>>excludeEnd("ide");
  56991. pragmas: [],
  56992. messageSends: ["nextPutFunctionWith:arguments:", "stream", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "nextPutContextFor:during:", "ifNotEmpty:", "internalVariables", "asSet", "alias", "variable", "ifTrue:ifFalse:", "hasNonLocalReturn", "scope", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "arguments", "compiledSource:", "contents", "yourself"]
  56993. }, function ($methodClass){ return function (anIRMethod){
  56994. var self=this,$self=this;
  56995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56996. return $core.withContext(function($ctx1) {
  56997. //>>excludeEnd("ctx");
  56998. $recv([$self._stream()
  56999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57000. ,$ctx1.sendIdx["stream"]=1
  57001. //>>excludeEnd("ctx");
  57002. ][0])._nextPutFunctionWith_arguments_((function(){
  57003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57004. return $core.withContext(function($ctx2) {
  57005. //>>excludeEnd("ctx");
  57006. [$recv([$self._stream()
  57007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57008. ,$ctx2.sendIdx["stream"]=2
  57009. //>>excludeEnd("ctx");
  57010. ][0])._nextPutVars_([$recv($recv(anIRMethod)._tempDeclarations())._collect_((function(each){
  57011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57012. return $core.withContext(function($ctx3) {
  57013. //>>excludeEnd("ctx");
  57014. return $recv($recv(each)._name())._asVariableName();
  57015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57016. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  57017. //>>excludeEnd("ctx");
  57018. }))
  57019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57020. ,$ctx2.sendIdx["collect:"]=1
  57021. //>>excludeEnd("ctx");
  57022. ][0])
  57023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57024. ,$ctx2.sendIdx["nextPutVars:"]=1
  57025. //>>excludeEnd("ctx");
  57026. ][0];
  57027. return $recv([$self._stream()
  57028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57029. ,$ctx2.sendIdx["stream"]=3
  57030. //>>excludeEnd("ctx");
  57031. ][0])._nextPutContextFor_during_(anIRMethod,(function(){
  57032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57033. return $core.withContext(function($ctx3) {
  57034. //>>excludeEnd("ctx");
  57035. $recv($recv(anIRMethod)._internalVariables())._ifNotEmpty_((function(internalVars){
  57036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57037. return $core.withContext(function($ctx4) {
  57038. //>>excludeEnd("ctx");
  57039. return $recv([$self._stream()
  57040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57041. ,$ctx4.sendIdx["stream"]=4
  57042. //>>excludeEnd("ctx");
  57043. ][0])._nextPutVars_($recv($recv(internalVars)._collect_((function(each){
  57044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57045. return $core.withContext(function($ctx5) {
  57046. //>>excludeEnd("ctx");
  57047. return $recv($recv(each)._variable())._alias();
  57048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57049. }, function($ctx5) {$ctx5.fillBlock({each:each},$ctx4,5)});
  57050. //>>excludeEnd("ctx");
  57051. })))._asSet());
  57052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57053. }, function($ctx4) {$ctx4.fillBlock({internalVars:internalVars},$ctx3,4)});
  57054. //>>excludeEnd("ctx");
  57055. }));
  57056. if($core.assert($recv($recv(anIRMethod)._scope())._hasNonLocalReturn())){
  57057. return $recv($self._stream())._nextPutNonLocalReturnHandlingWith_((function(){
  57058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57059. return $core.withContext(function($ctx4) {
  57060. //>>excludeEnd("ctx");
  57061. return [(
  57062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57063. $ctx4.supercall = true,
  57064. //>>excludeEnd("ctx");
  57065. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRMethod_.call($self,anIRMethod))
  57066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57067. ,$ctx4.sendIdx["visitIRMethod:"]=1,$ctx4.supercall = false
  57068. //>>excludeEnd("ctx");
  57069. ][0];
  57070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57071. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,7)});
  57072. //>>excludeEnd("ctx");
  57073. }));
  57074. } else {
  57075. return [(
  57076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57077. $ctx3.supercall = true,
  57078. //>>excludeEnd("ctx");
  57079. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRMethod_.call($self,anIRMethod))
  57080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57081. ,$ctx3.supercall = false
  57082. //>>excludeEnd("ctx");
  57083. ][0];
  57084. }
  57085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57086. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  57087. //>>excludeEnd("ctx");
  57088. }));
  57089. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57090. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  57091. //>>excludeEnd("ctx");
  57092. }),$recv(anIRMethod)._arguments());
  57093. $recv(anIRMethod)._compiledSource_($self._contents());
  57094. return $recv(anIRMethod)._yourself();
  57095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57096. }, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod})});
  57097. //>>excludeEnd("ctx");
  57098. }; }),
  57099. $globals.IRJSTranslator);
  57100. $core.addMethod(
  57101. $core.method({
  57102. selector: "visitIRNonLocalReturn:",
  57103. protocol: "visiting",
  57104. //>>excludeStart("ide", pragmas.excludeIdeData);
  57105. args: ["anIRNonLocalReturn"],
  57106. source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09self stream nextPutNonLocalReturnWith: [\x0a\x09\x09super visitIRNonLocalReturn: anIRNonLocalReturn ]",
  57107. referencedClasses: [],
  57108. //>>excludeEnd("ide");
  57109. pragmas: [],
  57110. messageSends: ["nextPutNonLocalReturnWith:", "stream", "visitIRNonLocalReturn:"]
  57111. }, function ($methodClass){ return function (anIRNonLocalReturn){
  57112. var self=this,$self=this;
  57113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57114. return $core.withContext(function($ctx1) {
  57115. //>>excludeEnd("ctx");
  57116. $recv($self._stream())._nextPutNonLocalReturnWith_((function(){
  57117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57118. return $core.withContext(function($ctx2) {
  57119. //>>excludeEnd("ctx");
  57120. return [(
  57121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57122. $ctx2.supercall = true,
  57123. //>>excludeEnd("ctx");
  57124. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRNonLocalReturn_.call($self,anIRNonLocalReturn))
  57125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57126. ,$ctx2.supercall = false
  57127. //>>excludeEnd("ctx");
  57128. ][0];
  57129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57130. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  57131. //>>excludeEnd("ctx");
  57132. }));
  57133. return self;
  57134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57135. }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn})});
  57136. //>>excludeEnd("ctx");
  57137. }; }),
  57138. $globals.IRJSTranslator);
  57139. $core.addMethod(
  57140. $core.method({
  57141. selector: "visitIRReturn:",
  57142. protocol: "visiting",
  57143. //>>excludeStart("ide", pragmas.excludeIdeData);
  57144. args: ["anIRReturn"],
  57145. source: "visitIRReturn: anIRReturn\x0a\x09self stream nextPutReturnWith: [\x0a\x09\x09super visitIRReturn: anIRReturn ]",
  57146. referencedClasses: [],
  57147. //>>excludeEnd("ide");
  57148. pragmas: [],
  57149. messageSends: ["nextPutReturnWith:", "stream", "visitIRReturn:"]
  57150. }, function ($methodClass){ return function (anIRReturn){
  57151. var self=this,$self=this;
  57152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57153. return $core.withContext(function($ctx1) {
  57154. //>>excludeEnd("ctx");
  57155. $recv($self._stream())._nextPutReturnWith_((function(){
  57156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57157. return $core.withContext(function($ctx2) {
  57158. //>>excludeEnd("ctx");
  57159. return [(
  57160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57161. $ctx2.supercall = true,
  57162. //>>excludeEnd("ctx");
  57163. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRReturn_.call($self,anIRReturn))
  57164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57165. ,$ctx2.supercall = false
  57166. //>>excludeEnd("ctx");
  57167. ][0];
  57168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57169. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  57170. //>>excludeEnd("ctx");
  57171. }));
  57172. return self;
  57173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57174. }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn})});
  57175. //>>excludeEnd("ctx");
  57176. }; }),
  57177. $globals.IRJSTranslator);
  57178. $core.addMethod(
  57179. $core.method({
  57180. selector: "visitIRSend:",
  57181. protocol: "visiting",
  57182. //>>excludeStart("ide", pragmas.excludeIdeData);
  57183. args: ["anIRSend"],
  57184. source: "visitIRSend: anIRSend\x0a\x09| prefixes suffixes workBlock |\x0a\x09prefixes := #().\x0a\x09suffixes := #().\x0a\x09workBlock := [ self visitSend: anIRSend ].\x0a\x09\x0a\x09anIRSend index < (anIRSend method sendIndexes at: anIRSend selector) size ifTrue: [\x0a\x09\x09suffixes add:\x0a\x09\x09\x09anIRSend scope alias,\x0a\x09\x09\x09'.sendIdx[',\x0a\x09\x09\x09anIRSend selector asJavaScriptSource,\x0a\x09\x09\x09']=',\x0a\x09\x09\x09anIRSend index asString ].\x0a\x09\x0a\x09anIRSend receiver isSuper ifTrue: [\x0a\x09\x09prefixes add: anIRSend scope alias, '.supercall = true'.\x0a\x09\x09suffixes add: anIRSend scope alias, '.supercall = false'.\x0a\x09\x09workBlock := [ self visitSuperSend: anIRSend ] ].\x0a\x0a\x09self stream nextPutBefore: prefixes after: suffixes with: workBlock",
  57185. referencedClasses: [],
  57186. //>>excludeEnd("ide");
  57187. pragmas: [],
  57188. messageSends: ["visitSend:", "ifTrue:", "<", "index", "size", "at:", "sendIndexes", "method", "selector", "add:", ",", "alias", "scope", "asJavaScriptSource", "asString", "isSuper", "receiver", "visitSuperSend:", "nextPutBefore:after:with:", "stream"]
  57189. }, function ($methodClass){ return function (anIRSend){
  57190. var self=this,$self=this;
  57191. var prefixes,suffixes,workBlock;
  57192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57193. return $core.withContext(function($ctx1) {
  57194. //>>excludeEnd("ctx");
  57195. prefixes=[];
  57196. suffixes=[];
  57197. workBlock=(function(){
  57198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57199. return $core.withContext(function($ctx2) {
  57200. //>>excludeEnd("ctx");
  57201. return $self._visitSend_(anIRSend);
  57202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57203. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  57204. //>>excludeEnd("ctx");
  57205. });
  57206. if($core.assert($recv([$recv(anIRSend)._index()
  57207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57208. ,$ctx1.sendIdx["index"]=1
  57209. //>>excludeEnd("ctx");
  57210. ][0]).__lt($recv($recv($recv($recv(anIRSend)._method())._sendIndexes())._at_([$recv(anIRSend)._selector()
  57211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57212. ,$ctx1.sendIdx["selector"]=1
  57213. //>>excludeEnd("ctx");
  57214. ][0]))._size()))){
  57215. [$recv(suffixes)._add_([$recv([$recv([$recv([$recv([$recv([$recv(anIRSend)._scope()
  57216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57217. ,$ctx1.sendIdx["scope"]=1
  57218. //>>excludeEnd("ctx");
  57219. ][0])._alias()
  57220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57221. ,$ctx1.sendIdx["alias"]=1
  57222. //>>excludeEnd("ctx");
  57223. ][0]).__comma(".sendIdx[")
  57224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57225. ,$ctx1.sendIdx[","]=4
  57226. //>>excludeEnd("ctx");
  57227. ][0]).__comma($recv($recv(anIRSend)._selector())._asJavaScriptSource())
  57228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57229. ,$ctx1.sendIdx[","]=3
  57230. //>>excludeEnd("ctx");
  57231. ][0]).__comma("]=")
  57232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57233. ,$ctx1.sendIdx[","]=2
  57234. //>>excludeEnd("ctx");
  57235. ][0]).__comma($recv($recv(anIRSend)._index())._asString())
  57236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57237. ,$ctx1.sendIdx[","]=1
  57238. //>>excludeEnd("ctx");
  57239. ][0])
  57240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57241. ,$ctx1.sendIdx["add:"]=1
  57242. //>>excludeEnd("ctx");
  57243. ][0];
  57244. }
  57245. if($core.assert($recv($recv(anIRSend)._receiver())._isSuper())){
  57246. [$recv(prefixes)._add_([$recv([$recv([$recv(anIRSend)._scope()
  57247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57248. ,$ctx1.sendIdx["scope"]=2
  57249. //>>excludeEnd("ctx");
  57250. ][0])._alias()
  57251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57252. ,$ctx1.sendIdx["alias"]=2
  57253. //>>excludeEnd("ctx");
  57254. ][0]).__comma(".supercall = true")
  57255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57256. ,$ctx1.sendIdx[","]=5
  57257. //>>excludeEnd("ctx");
  57258. ][0])
  57259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57260. ,$ctx1.sendIdx["add:"]=2
  57261. //>>excludeEnd("ctx");
  57262. ][0];
  57263. $recv(suffixes)._add_($recv($recv($recv(anIRSend)._scope())._alias()).__comma(".supercall = false"));
  57264. workBlock=(function(){
  57265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57266. return $core.withContext(function($ctx2) {
  57267. //>>excludeEnd("ctx");
  57268. return $self._visitSuperSend_(anIRSend);
  57269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57270. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  57271. //>>excludeEnd("ctx");
  57272. });
  57273. workBlock;
  57274. }
  57275. $recv($self._stream())._nextPutBefore_after_with_(prefixes,suffixes,workBlock);
  57276. return self;
  57277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57278. }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend,prefixes:prefixes,suffixes:suffixes,workBlock:workBlock})});
  57279. //>>excludeEnd("ctx");
  57280. }; }),
  57281. $globals.IRJSTranslator);
  57282. $core.addMethod(
  57283. $core.method({
  57284. selector: "visitIRSequence:",
  57285. protocol: "visiting",
  57286. //>>excludeStart("ide", pragmas.excludeIdeData);
  57287. args: ["anIRSequence"],
  57288. source: "visitIRSequence: anIRSequence\x0a\x09anIRSequence dagChildren do: [ :each |\x0a\x09\x09self stream nextPutStatementWith: [ self visit: each ] ]",
  57289. referencedClasses: [],
  57290. //>>excludeEnd("ide");
  57291. pragmas: [],
  57292. messageSends: ["do:", "dagChildren", "nextPutStatementWith:", "stream", "visit:"]
  57293. }, function ($methodClass){ return function (anIRSequence){
  57294. var self=this,$self=this;
  57295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57296. return $core.withContext(function($ctx1) {
  57297. //>>excludeEnd("ctx");
  57298. $recv($recv(anIRSequence)._dagChildren())._do_((function(each){
  57299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57300. return $core.withContext(function($ctx2) {
  57301. //>>excludeEnd("ctx");
  57302. return $recv($self._stream())._nextPutStatementWith_((function(){
  57303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57304. return $core.withContext(function($ctx3) {
  57305. //>>excludeEnd("ctx");
  57306. return $self._visit_(each);
  57307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57308. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  57309. //>>excludeEnd("ctx");
  57310. }));
  57311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57312. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  57313. //>>excludeEnd("ctx");
  57314. }));
  57315. return self;
  57316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57317. }, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence})});
  57318. //>>excludeEnd("ctx");
  57319. }; }),
  57320. $globals.IRJSTranslator);
  57321. $core.addMethod(
  57322. $core.method({
  57323. selector: "visitIRTempDeclaration:",
  57324. protocol: "visiting",
  57325. //>>excludeStart("ide", pragmas.excludeIdeData);
  57326. args: ["anIRTempDeclaration"],
  57327. source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09\x22self stream\x0a\x09\x09nextPutAll: 'var ', anIRTempDeclaration name asVariableName, ';';\x0a\x09\x09lf\x22",
  57328. referencedClasses: [],
  57329. //>>excludeEnd("ide");
  57330. pragmas: [],
  57331. messageSends: []
  57332. }, function ($methodClass){ return function (anIRTempDeclaration){
  57333. var self=this,$self=this;
  57334. return self;
  57335. }; }),
  57336. $globals.IRJSTranslator);
  57337. $core.addMethod(
  57338. $core.method({
  57339. selector: "visitIRValue:",
  57340. protocol: "visiting",
  57341. //>>excludeStart("ide", pragmas.excludeIdeData);
  57342. args: ["anIRValue"],
  57343. source: "visitIRValue: anIRValue\x0a\x09self stream nextPutAll: anIRValue value asJavaScriptSource",
  57344. referencedClasses: [],
  57345. //>>excludeEnd("ide");
  57346. pragmas: [],
  57347. messageSends: ["nextPutAll:", "stream", "asJavaScriptSource", "value"]
  57348. }, function ($methodClass){ return function (anIRValue){
  57349. var self=this,$self=this;
  57350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57351. return $core.withContext(function($ctx1) {
  57352. //>>excludeEnd("ctx");
  57353. $recv($self._stream())._nextPutAll_($recv($recv(anIRValue)._value())._asJavaScriptSource());
  57354. return self;
  57355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57356. }, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue})});
  57357. //>>excludeEnd("ctx");
  57358. }; }),
  57359. $globals.IRJSTranslator);
  57360. $core.addMethod(
  57361. $core.method({
  57362. selector: "visitIRVariable:",
  57363. protocol: "visiting",
  57364. //>>excludeStart("ide", pragmas.excludeIdeData);
  57365. args: ["anIRVariable"],
  57366. source: "visitIRVariable: anIRVariable\x0a\x09self stream nextPutAll: anIRVariable variable alias",
  57367. referencedClasses: [],
  57368. //>>excludeEnd("ide");
  57369. pragmas: [],
  57370. messageSends: ["nextPutAll:", "stream", "alias", "variable"]
  57371. }, function ($methodClass){ return function (anIRVariable){
  57372. var self=this,$self=this;
  57373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57374. return $core.withContext(function($ctx1) {
  57375. //>>excludeEnd("ctx");
  57376. $recv($self._stream())._nextPutAll_($recv($recv(anIRVariable)._variable())._alias());
  57377. return self;
  57378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57379. }, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable})});
  57380. //>>excludeEnd("ctx");
  57381. }; }),
  57382. $globals.IRJSTranslator);
  57383. $core.addMethod(
  57384. $core.method({
  57385. selector: "visitIRVerbatim:",
  57386. protocol: "visiting",
  57387. //>>excludeStart("ide", pragmas.excludeIdeData);
  57388. args: ["anIRVerbatim"],
  57389. source: "visitIRVerbatim: anIRVerbatim\x0a\x09self stream nextPutAll: anIRVerbatim source",
  57390. referencedClasses: [],
  57391. //>>excludeEnd("ide");
  57392. pragmas: [],
  57393. messageSends: ["nextPutAll:", "stream", "source"]
  57394. }, function ($methodClass){ return function (anIRVerbatim){
  57395. var self=this,$self=this;
  57396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57397. return $core.withContext(function($ctx1) {
  57398. //>>excludeEnd("ctx");
  57399. $recv($self._stream())._nextPutAll_($recv(anIRVerbatim)._source());
  57400. return self;
  57401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57402. }, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim})});
  57403. //>>excludeEnd("ctx");
  57404. }; }),
  57405. $globals.IRJSTranslator);
  57406. $core.addMethod(
  57407. $core.method({
  57408. selector: "visitInstructionList:enclosedBetween:and:",
  57409. protocol: "visiting",
  57410. //>>excludeStart("ide", pragmas.excludeIdeData);
  57411. args: ["anArray", "aString", "anotherString"],
  57412. source: "visitInstructionList: anArray enclosedBetween: aString and: anotherString\x0a\x09self stream nextPutAll: aString.\x0a\x09anArray\x0a\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: anotherString",
  57413. referencedClasses: [],
  57414. //>>excludeEnd("ide");
  57415. pragmas: [],
  57416. messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "visit:"]
  57417. }, function ($methodClass){ return function (anArray,aString,anotherString){
  57418. var self=this,$self=this;
  57419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57420. return $core.withContext(function($ctx1) {
  57421. //>>excludeEnd("ctx");
  57422. [$recv([$self._stream()
  57423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57424. ,$ctx1.sendIdx["stream"]=1
  57425. //>>excludeEnd("ctx");
  57426. ][0])._nextPutAll_(aString)
  57427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57428. ,$ctx1.sendIdx["nextPutAll:"]=1
  57429. //>>excludeEnd("ctx");
  57430. ][0];
  57431. $recv(anArray)._do_separatedBy_((function(each){
  57432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57433. return $core.withContext(function($ctx2) {
  57434. //>>excludeEnd("ctx");
  57435. return $self._visit_(each);
  57436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57437. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  57438. //>>excludeEnd("ctx");
  57439. }),(function(){
  57440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57441. return $core.withContext(function($ctx2) {
  57442. //>>excludeEnd("ctx");
  57443. return [$recv($self._stream())._nextPutAll_(",")
  57444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57445. ,$ctx2.sendIdx["nextPutAll:"]=2
  57446. //>>excludeEnd("ctx");
  57447. ][0];
  57448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57449. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  57450. //>>excludeEnd("ctx");
  57451. }));
  57452. $recv($self.stream)._nextPutAll_(anotherString);
  57453. return self;
  57454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57455. }, function($ctx1) {$ctx1.fill(self,"visitInstructionList:enclosedBetween:and:",{anArray:anArray,aString:aString,anotherString:anotherString})});
  57456. //>>excludeEnd("ctx");
  57457. }; }),
  57458. $globals.IRJSTranslator);
  57459. $core.addMethod(
  57460. $core.method({
  57461. selector: "visitReceiver:",
  57462. protocol: "visiting",
  57463. //>>excludeStart("ide", pragmas.excludeIdeData);
  57464. args: ["anIRInstruction"],
  57465. source: "visitReceiver: anIRInstruction\x0a\x09anIRInstruction asReceiver\x0a\x09\x09ifNotNil: [ :instr | self visit: instr ]\x0a\x09\x09ifNil: [\x0a\x09\x09\x09self stream nextPutAll: '$recv('.\x0a\x09\x09\x09self visit: anIRInstruction.\x0a\x09\x09\x09self stream nextPutAll: ')' ]",
  57466. referencedClasses: [],
  57467. //>>excludeEnd("ide");
  57468. pragmas: [],
  57469. messageSends: ["ifNotNil:ifNil:", "asReceiver", "visit:", "nextPutAll:", "stream"]
  57470. }, function ($methodClass){ return function (anIRInstruction){
  57471. var self=this,$self=this;
  57472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57473. return $core.withContext(function($ctx1) {
  57474. //>>excludeEnd("ctx");
  57475. var $1;
  57476. $1=$recv(anIRInstruction)._asReceiver();
  57477. if($1 == null || $1.a$nil){
  57478. [$recv([$self._stream()
  57479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57480. ,$ctx1.sendIdx["stream"]=1
  57481. //>>excludeEnd("ctx");
  57482. ][0])._nextPutAll_("$recv(")
  57483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57484. ,$ctx1.sendIdx["nextPutAll:"]=1
  57485. //>>excludeEnd("ctx");
  57486. ][0];
  57487. $self._visit_(anIRInstruction);
  57488. $recv($self._stream())._nextPutAll_(")");
  57489. } else {
  57490. var instr;
  57491. instr=$1;
  57492. [$self._visit_(instr)
  57493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57494. ,$ctx1.sendIdx["visit:"]=1
  57495. //>>excludeEnd("ctx");
  57496. ][0];
  57497. }
  57498. return self;
  57499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57500. }, function($ctx1) {$ctx1.fill(self,"visitReceiver:",{anIRInstruction:anIRInstruction})});
  57501. //>>excludeEnd("ctx");
  57502. }; }),
  57503. $globals.IRJSTranslator);
  57504. $core.addMethod(
  57505. $core.method({
  57506. selector: "visitSend:",
  57507. protocol: "visiting",
  57508. //>>excludeStart("ide", pragmas.excludeIdeData);
  57509. args: ["anIRSend"],
  57510. source: "visitSend: anIRSend\x0a\x09self visitReceiver: anIRSend receiver.\x0a\x09self stream nextPutAll: '.', anIRSend javaScriptSelector.\x0a\x09self\x0a\x09\x09visitInstructionList: anIRSend arguments\x0a\x09\x09enclosedBetween: '(' and: ')'",
  57511. referencedClasses: [],
  57512. //>>excludeEnd("ide");
  57513. pragmas: [],
  57514. messageSends: ["visitReceiver:", "receiver", "nextPutAll:", "stream", ",", "javaScriptSelector", "visitInstructionList:enclosedBetween:and:", "arguments"]
  57515. }, function ($methodClass){ return function (anIRSend){
  57516. var self=this,$self=this;
  57517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57518. return $core.withContext(function($ctx1) {
  57519. //>>excludeEnd("ctx");
  57520. $self._visitReceiver_($recv(anIRSend)._receiver());
  57521. $recv($self._stream())._nextPutAll_(".".__comma($recv(anIRSend)._javaScriptSelector()));
  57522. $self._visitInstructionList_enclosedBetween_and_($recv(anIRSend)._arguments(),"(",")");
  57523. return self;
  57524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57525. }, function($ctx1) {$ctx1.fill(self,"visitSend:",{anIRSend:anIRSend})});
  57526. //>>excludeEnd("ctx");
  57527. }; }),
  57528. $globals.IRJSTranslator);
  57529. $core.addMethod(
  57530. $core.method({
  57531. selector: "visitSuperSend:",
  57532. protocol: "visiting",
  57533. //>>excludeStart("ide", pragmas.excludeIdeData);
  57534. args: ["anIRSend"],
  57535. source: "visitSuperSend: anIRSend\x0a\x09self stream\x0a\x09\x09nextPutAll: anIRSend receiver variable lookupAsJavaScriptSource, '.';\x0a\x09\x09nextPutAll: anIRSend javaScriptSelector.\x0a\x09anIRSend arguments\x0a\x09\x09ifEmpty: [\x0a\x09\x09\x09self stream nextPutAll: '.call('.\x0a\x09\x09\x09self visitReceiver: anIRSend receiver.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09ifNotEmpty: [\x0a\x09\x09\x09anIRSend argumentSwitcher\x0a\x09\x09\x09\x09ifNil: [\x0a\x09\x09\x09\x09\x09self stream nextPutAll: '.call('.\x0a\x09\x09\x09\x09\x09self visitReceiver: anIRSend receiver.\x0a\x09\x09\x09\x09\x09self\x0a\x09\x09\x09\x09\x09\x09visitInstructionList: anIRSend arguments\x0a\x09\x09\x09\x09\x09\x09enclosedBetween: ',' and: ')' ]\x0a\x09\x09\x09\x09ifNotNil: [ :switcher |\x0a\x09\x09\x09\x09\x09self stream nextPutAll: '.apply('.\x0a\x09\x09\x09\x09\x09self visitReceiver: anIRSend receiver.\x0a\x09\x09\x09\x09\x09self\x0a\x09\x09\x09\x09\x09\x09visitInstructionList: anIRSend arguments\x0a\x09\x09\x09\x09\x09\x09enclosedBetween: ',(', switcher asJavaScriptSource, ')('\x0a\x09\x09\x09\x09\x09\x09and: '))' ] ]",
  57536. referencedClasses: [],
  57537. //>>excludeEnd("ide");
  57538. pragmas: [],
  57539. messageSends: ["nextPutAll:", "stream", ",", "lookupAsJavaScriptSource", "variable", "receiver", "javaScriptSelector", "ifEmpty:ifNotEmpty:", "arguments", "visitReceiver:", "ifNil:ifNotNil:", "argumentSwitcher", "visitInstructionList:enclosedBetween:and:", "asJavaScriptSource"]
  57540. }, function ($methodClass){ return function (anIRSend){
  57541. var self=this,$self=this;
  57542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57543. return $core.withContext(function($ctx1) {
  57544. //>>excludeEnd("ctx");
  57545. var $1,$2;
  57546. $1=[$self._stream()
  57547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57548. ,$ctx1.sendIdx["stream"]=1
  57549. //>>excludeEnd("ctx");
  57550. ][0];
  57551. [$recv($1)._nextPutAll_([$recv($recv($recv([$recv(anIRSend)._receiver()
  57552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57553. ,$ctx1.sendIdx["receiver"]=1
  57554. //>>excludeEnd("ctx");
  57555. ][0])._variable())._lookupAsJavaScriptSource()).__comma(".")
  57556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57557. ,$ctx1.sendIdx[","]=1
  57558. //>>excludeEnd("ctx");
  57559. ][0])
  57560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57561. ,$ctx1.sendIdx["nextPutAll:"]=1
  57562. //>>excludeEnd("ctx");
  57563. ][0];
  57564. [$recv($1)._nextPutAll_($recv(anIRSend)._javaScriptSelector())
  57565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57566. ,$ctx1.sendIdx["nextPutAll:"]=2
  57567. //>>excludeEnd("ctx");
  57568. ][0];
  57569. $recv([$recv(anIRSend)._arguments()
  57570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57571. ,$ctx1.sendIdx["arguments"]=1
  57572. //>>excludeEnd("ctx");
  57573. ][0])._ifEmpty_ifNotEmpty_((function(){
  57574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57575. return $core.withContext(function($ctx2) {
  57576. //>>excludeEnd("ctx");
  57577. [$recv([$self._stream()
  57578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57579. ,$ctx2.sendIdx["stream"]=2
  57580. //>>excludeEnd("ctx");
  57581. ][0])._nextPutAll_(".call(")
  57582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57583. ,$ctx2.sendIdx["nextPutAll:"]=3
  57584. //>>excludeEnd("ctx");
  57585. ][0];
  57586. [$self._visitReceiver_([$recv(anIRSend)._receiver()
  57587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57588. ,$ctx2.sendIdx["receiver"]=2
  57589. //>>excludeEnd("ctx");
  57590. ][0])
  57591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57592. ,$ctx2.sendIdx["visitReceiver:"]=1
  57593. //>>excludeEnd("ctx");
  57594. ][0];
  57595. return [$recv([$self._stream()
  57596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57597. ,$ctx2.sendIdx["stream"]=3
  57598. //>>excludeEnd("ctx");
  57599. ][0])._nextPutAll_(")")
  57600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57601. ,$ctx2.sendIdx["nextPutAll:"]=4
  57602. //>>excludeEnd("ctx");
  57603. ][0];
  57604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57605. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  57606. //>>excludeEnd("ctx");
  57607. }),(function(){
  57608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57609. return $core.withContext(function($ctx2) {
  57610. //>>excludeEnd("ctx");
  57611. $2=$recv(anIRSend)._argumentSwitcher();
  57612. if($2 == null || $2.a$nil){
  57613. [$recv([$self._stream()
  57614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57615. ,$ctx2.sendIdx["stream"]=4
  57616. //>>excludeEnd("ctx");
  57617. ][0])._nextPutAll_(".call(")
  57618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57619. ,$ctx2.sendIdx["nextPutAll:"]=5
  57620. //>>excludeEnd("ctx");
  57621. ][0];
  57622. [$self._visitReceiver_([$recv(anIRSend)._receiver()
  57623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57624. ,$ctx2.sendIdx["receiver"]=3
  57625. //>>excludeEnd("ctx");
  57626. ][0])
  57627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57628. ,$ctx2.sendIdx["visitReceiver:"]=2
  57629. //>>excludeEnd("ctx");
  57630. ][0];
  57631. return [$self._visitInstructionList_enclosedBetween_and_([$recv(anIRSend)._arguments()
  57632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57633. ,$ctx2.sendIdx["arguments"]=2
  57634. //>>excludeEnd("ctx");
  57635. ][0],",",")")
  57636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57637. ,$ctx2.sendIdx["visitInstructionList:enclosedBetween:and:"]=1
  57638. //>>excludeEnd("ctx");
  57639. ][0];
  57640. } else {
  57641. var switcher;
  57642. switcher=$2;
  57643. $recv($self._stream())._nextPutAll_(".apply(");
  57644. $self._visitReceiver_($recv(anIRSend)._receiver());
  57645. return $self._visitInstructionList_enclosedBetween_and_($recv(anIRSend)._arguments(),[$recv(",(".__comma($recv(switcher)._asJavaScriptSource())).__comma(")(")
  57646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57647. ,$ctx2.sendIdx[","]=2
  57648. //>>excludeEnd("ctx");
  57649. ][0],"))");
  57650. }
  57651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57652. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  57653. //>>excludeEnd("ctx");
  57654. }));
  57655. return self;
  57656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57657. }, function($ctx1) {$ctx1.fill(self,"visitSuperSend:",{anIRSend:anIRSend})});
  57658. //>>excludeEnd("ctx");
  57659. }; }),
  57660. $globals.IRJSTranslator);
  57661. $core.addClass("JSStream", $globals.Object, "Compiler-IR");
  57662. $core.setSlots($globals.JSStream, ["stream", "omitSemicolon"]);
  57663. $core.addMethod(
  57664. $core.method({
  57665. selector: "contents",
  57666. protocol: "accessing",
  57667. //>>excludeStart("ide", pragmas.excludeIdeData);
  57668. args: [],
  57669. source: "contents\x0a\x09^ stream contents",
  57670. referencedClasses: [],
  57671. //>>excludeEnd("ide");
  57672. pragmas: [],
  57673. messageSends: ["contents"]
  57674. }, function ($methodClass){ return function (){
  57675. var self=this,$self=this;
  57676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57677. return $core.withContext(function($ctx1) {
  57678. //>>excludeEnd("ctx");
  57679. return $recv($self.stream)._contents();
  57680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57681. }, function($ctx1) {$ctx1.fill(self,"contents",{})});
  57682. //>>excludeEnd("ctx");
  57683. }; }),
  57684. $globals.JSStream);
  57685. $core.addMethod(
  57686. $core.method({
  57687. selector: "initialize",
  57688. protocol: "initialization",
  57689. //>>excludeStart("ide", pragmas.excludeIdeData);
  57690. args: [],
  57691. source: "initialize\x0a\x09super initialize.\x0a\x09stream := '' writeStream.",
  57692. referencedClasses: [],
  57693. //>>excludeEnd("ide");
  57694. pragmas: [],
  57695. messageSends: ["initialize", "writeStream"]
  57696. }, function ($methodClass){ return function (){
  57697. var self=this,$self=this;
  57698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57699. return $core.withContext(function($ctx1) {
  57700. //>>excludeEnd("ctx");
  57701. [(
  57702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57703. $ctx1.supercall = true,
  57704. //>>excludeEnd("ctx");
  57705. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  57706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57707. ,$ctx1.supercall = false
  57708. //>>excludeEnd("ctx");
  57709. ][0];
  57710. $self.stream=""._writeStream();
  57711. return self;
  57712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57713. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  57714. //>>excludeEnd("ctx");
  57715. }; }),
  57716. $globals.JSStream);
  57717. $core.addMethod(
  57718. $core.method({
  57719. selector: "lf",
  57720. protocol: "streaming",
  57721. //>>excludeStart("ide", pragmas.excludeIdeData);
  57722. args: [],
  57723. source: "lf\x0a\x09stream lf",
  57724. referencedClasses: [],
  57725. //>>excludeEnd("ide");
  57726. pragmas: [],
  57727. messageSends: ["lf"]
  57728. }, function ($methodClass){ return function (){
  57729. var self=this,$self=this;
  57730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57731. return $core.withContext(function($ctx1) {
  57732. //>>excludeEnd("ctx");
  57733. $recv($self.stream)._lf();
  57734. return self;
  57735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57736. }, function($ctx1) {$ctx1.fill(self,"lf",{})});
  57737. //>>excludeEnd("ctx");
  57738. }; }),
  57739. $globals.JSStream);
  57740. $core.addMethod(
  57741. $core.method({
  57742. selector: "nextPut:",
  57743. protocol: "streaming",
  57744. //>>excludeStart("ide", pragmas.excludeIdeData);
  57745. args: ["aString"],
  57746. source: "nextPut: aString\x0a\x09stream nextPut: aString",
  57747. referencedClasses: [],
  57748. //>>excludeEnd("ide");
  57749. pragmas: [],
  57750. messageSends: ["nextPut:"]
  57751. }, function ($methodClass){ return function (aString){
  57752. var self=this,$self=this;
  57753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57754. return $core.withContext(function($ctx1) {
  57755. //>>excludeEnd("ctx");
  57756. $recv($self.stream)._nextPut_(aString);
  57757. return self;
  57758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57759. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString})});
  57760. //>>excludeEnd("ctx");
  57761. }; }),
  57762. $globals.JSStream);
  57763. $core.addMethod(
  57764. $core.method({
  57765. selector: "nextPutAll:",
  57766. protocol: "streaming",
  57767. //>>excludeStart("ide", pragmas.excludeIdeData);
  57768. args: ["aString"],
  57769. source: "nextPutAll: aString\x0a\x09stream nextPutAll: aString",
  57770. referencedClasses: [],
  57771. //>>excludeEnd("ide");
  57772. pragmas: [],
  57773. messageSends: ["nextPutAll:"]
  57774. }, function ($methodClass){ return function (aString){
  57775. var self=this,$self=this;
  57776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57777. return $core.withContext(function($ctx1) {
  57778. //>>excludeEnd("ctx");
  57779. $recv($self.stream)._nextPutAll_(aString);
  57780. return self;
  57781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57782. }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString})});
  57783. //>>excludeEnd("ctx");
  57784. }; }),
  57785. $globals.JSStream);
  57786. $core.addMethod(
  57787. $core.method({
  57788. selector: "nextPutAssignLhs:rhs:",
  57789. protocol: "streaming",
  57790. //>>excludeStart("ide", pragmas.excludeIdeData);
  57791. args: ["aBlock", "anotherBlock"],
  57792. source: "nextPutAssignLhs: aBlock rhs: anotherBlock\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '='.\x0a\x09anotherBlock value",
  57793. referencedClasses: [],
  57794. //>>excludeEnd("ide");
  57795. pragmas: [],
  57796. messageSends: ["value", "nextPutAll:"]
  57797. }, function ($methodClass){ return function (aBlock,anotherBlock){
  57798. var self=this,$self=this;
  57799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57800. return $core.withContext(function($ctx1) {
  57801. //>>excludeEnd("ctx");
  57802. [$recv(aBlock)._value()
  57803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57804. ,$ctx1.sendIdx["value"]=1
  57805. //>>excludeEnd("ctx");
  57806. ][0];
  57807. $recv($self.stream)._nextPutAll_("=");
  57808. $recv(anotherBlock)._value();
  57809. return self;
  57810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57811. }, function($ctx1) {$ctx1.fill(self,"nextPutAssignLhs:rhs:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  57812. //>>excludeEnd("ctx");
  57813. }; }),
  57814. $globals.JSStream);
  57815. $core.addMethod(
  57816. $core.method({
  57817. selector: "nextPutBefore:after:with:",
  57818. protocol: "streaming",
  57819. //>>excludeStart("ide", pragmas.excludeIdeData);
  57820. args: ["prefixCollection", "suffixCollection", "aBlock"],
  57821. source: "nextPutBefore: prefixCollection after: suffixCollection with: aBlock\x0a\x09suffixCollection isEmpty\x0a\x09\x09ifTrue: [ self nextPutBefore: prefixCollection with: aBlock ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: '['; nextPutBefore: prefixCollection with: aBlock; lf;\x0a\x09\x09\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);'; lf.\x0a\x09\x09\x09suffixCollection do: [ :each | self nextPutAll: ','; nextPutAll: each ].\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09lf;\x0a\x09\x09\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);'; lf;\x0a\x09\x09\x09\x09nextPutAll: '][0]' ]",
  57822. referencedClasses: [],
  57823. //>>excludeEnd("ide");
  57824. pragmas: [],
  57825. messageSends: ["ifTrue:ifFalse:", "isEmpty", "nextPutBefore:with:", "nextPutAll:", "lf", "do:"]
  57826. }, function ($methodClass){ return function (prefixCollection,suffixCollection,aBlock){
  57827. var self=this,$self=this;
  57828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57829. return $core.withContext(function($ctx1) {
  57830. //>>excludeEnd("ctx");
  57831. if($core.assert($recv(suffixCollection)._isEmpty())){
  57832. [$self._nextPutBefore_with_(prefixCollection,aBlock)
  57833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57834. ,$ctx1.sendIdx["nextPutBefore:with:"]=1
  57835. //>>excludeEnd("ctx");
  57836. ][0];
  57837. } else {
  57838. [$self._nextPutAll_("[")
  57839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57840. ,$ctx1.sendIdx["nextPutAll:"]=1
  57841. //>>excludeEnd("ctx");
  57842. ][0];
  57843. $self._nextPutBefore_with_(prefixCollection,aBlock);
  57844. [$self._lf()
  57845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57846. ,$ctx1.sendIdx["lf"]=1
  57847. //>>excludeEnd("ctx");
  57848. ][0];
  57849. [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
  57850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57851. ,$ctx1.sendIdx["nextPutAll:"]=2
  57852. //>>excludeEnd("ctx");
  57853. ][0];
  57854. [$self._lf()
  57855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57856. ,$ctx1.sendIdx["lf"]=2
  57857. //>>excludeEnd("ctx");
  57858. ][0];
  57859. $recv(suffixCollection)._do_((function(each){
  57860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57861. return $core.withContext(function($ctx2) {
  57862. //>>excludeEnd("ctx");
  57863. [$self._nextPutAll_(",")
  57864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57865. ,$ctx2.sendIdx["nextPutAll:"]=3
  57866. //>>excludeEnd("ctx");
  57867. ][0];
  57868. return [$self._nextPutAll_(each)
  57869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57870. ,$ctx2.sendIdx["nextPutAll:"]=4
  57871. //>>excludeEnd("ctx");
  57872. ][0];
  57873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57874. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  57875. //>>excludeEnd("ctx");
  57876. }));
  57877. [$self._lf()
  57878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57879. ,$ctx1.sendIdx["lf"]=3
  57880. //>>excludeEnd("ctx");
  57881. ][0];
  57882. [$self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);")
  57883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57884. ,$ctx1.sendIdx["nextPutAll:"]=5
  57885. //>>excludeEnd("ctx");
  57886. ][0];
  57887. $self._lf();
  57888. $self._nextPutAll_("][0]");
  57889. }
  57890. return self;
  57891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57892. }, function($ctx1) {$ctx1.fill(self,"nextPutBefore:after:with:",{prefixCollection:prefixCollection,suffixCollection:suffixCollection,aBlock:aBlock})});
  57893. //>>excludeEnd("ctx");
  57894. }; }),
  57895. $globals.JSStream);
  57896. $core.addMethod(
  57897. $core.method({
  57898. selector: "nextPutBefore:with:",
  57899. protocol: "streaming",
  57900. //>>excludeStart("ide", pragmas.excludeIdeData);
  57901. args: ["aCollection", "aBlock"],
  57902. source: "nextPutBefore: aCollection with: aBlock\x0a\x09aCollection isEmpty ifTrue: [ aBlock value ] ifFalse: [\x0a\x09\x09self nextPutAll: '('; lf; nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);'; lf.\x0a\x09\x09aCollection do: [ :each | self nextPutAll: each; nextPutAll: ',' ].\x0a\x09\x09self lf; nextPutAll: '//>>excludeEnd(\x22ctx\x22);'; lf.\x0a\x09\x09aBlock value.\x0a\x09\x09self nextPutAll: ')' ]",
  57903. referencedClasses: [],
  57904. //>>excludeEnd("ide");
  57905. pragmas: [],
  57906. messageSends: ["ifTrue:ifFalse:", "isEmpty", "value", "nextPutAll:", "lf", "do:"]
  57907. }, function ($methodClass){ return function (aCollection,aBlock){
  57908. var self=this,$self=this;
  57909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57910. return $core.withContext(function($ctx1) {
  57911. //>>excludeEnd("ctx");
  57912. if($core.assert($recv(aCollection)._isEmpty())){
  57913. [$recv(aBlock)._value()
  57914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57915. ,$ctx1.sendIdx["value"]=1
  57916. //>>excludeEnd("ctx");
  57917. ][0];
  57918. } else {
  57919. [$self._nextPutAll_("(")
  57920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57921. ,$ctx1.sendIdx["nextPutAll:"]=1
  57922. //>>excludeEnd("ctx");
  57923. ][0];
  57924. [$self._lf()
  57925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57926. ,$ctx1.sendIdx["lf"]=1
  57927. //>>excludeEnd("ctx");
  57928. ][0];
  57929. [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
  57930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57931. ,$ctx1.sendIdx["nextPutAll:"]=2
  57932. //>>excludeEnd("ctx");
  57933. ][0];
  57934. [$self._lf()
  57935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57936. ,$ctx1.sendIdx["lf"]=2
  57937. //>>excludeEnd("ctx");
  57938. ][0];
  57939. $recv(aCollection)._do_((function(each){
  57940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57941. return $core.withContext(function($ctx2) {
  57942. //>>excludeEnd("ctx");
  57943. [$self._nextPutAll_(each)
  57944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57945. ,$ctx2.sendIdx["nextPutAll:"]=3
  57946. //>>excludeEnd("ctx");
  57947. ][0];
  57948. return [$self._nextPutAll_(",")
  57949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57950. ,$ctx2.sendIdx["nextPutAll:"]=4
  57951. //>>excludeEnd("ctx");
  57952. ][0];
  57953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57954. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  57955. //>>excludeEnd("ctx");
  57956. }));
  57957. [$self._lf()
  57958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57959. ,$ctx1.sendIdx["lf"]=3
  57960. //>>excludeEnd("ctx");
  57961. ][0];
  57962. [$self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);")
  57963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57964. ,$ctx1.sendIdx["nextPutAll:"]=5
  57965. //>>excludeEnd("ctx");
  57966. ][0];
  57967. $self._lf();
  57968. $recv(aBlock)._value();
  57969. $self._nextPutAll_(")");
  57970. }
  57971. return self;
  57972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57973. }, function($ctx1) {$ctx1.fill(self,"nextPutBefore:with:",{aCollection:aCollection,aBlock:aBlock})});
  57974. //>>excludeEnd("ctx");
  57975. }; }),
  57976. $globals.JSStream);
  57977. $core.addMethod(
  57978. $core.method({
  57979. selector: "nextPutBlockContextFor:during:",
  57980. protocol: "streaming",
  57981. //>>excludeStart("ide", pragmas.excludeIdeData);
  57982. args: ["anIRClosure", "aBlock"],
  57983. source: "nextPutBlockContextFor: anIRClosure during: aBlock\x0a\x09anIRClosure requiresSmalltalkContext ifFalse: [ ^ aBlock value ].\x0a\x09self\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: 'return $core.withContext(function(', anIRClosure scope alias, ') {';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);';\x0a\x09\x09lf.\x0a\x09\x0a\x09aBlock value.\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '}, function(', anIRClosure scope alias, ') {';\x0a\x09\x09nextPutAll: anIRClosure scope alias, '.fillBlock({'.\x0a\x09\x0a\x09anIRClosure locals\x0a\x09\x09do: [ :each |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: each asVariableName;\x0a\x09\x09\x09\x09nextPutAll: ':';\x0a\x09\x09\x09\x09nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '},';\x0a\x09\x09nextPutAll: anIRClosure scope outerScope alias, ',', anIRClosure scope blockIndex asString, ')});';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);'",
  57984. referencedClasses: [],
  57985. //>>excludeEnd("ide");
  57986. pragmas: [],
  57987. messageSends: ["ifFalse:", "requiresSmalltalkContext", "value", "nextPutAll:", "lf", ",", "alias", "scope", "do:separatedBy:", "locals", "asVariableName", "outerScope", "asString", "blockIndex"]
  57988. }, function ($methodClass){ return function (anIRClosure,aBlock){
  57989. var self=this,$self=this;
  57990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57991. return $core.withContext(function($ctx1) {
  57992. //>>excludeEnd("ctx");
  57993. if(!$core.assert($recv(anIRClosure)._requiresSmalltalkContext())){
  57994. return [$recv(aBlock)._value()
  57995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57996. ,$ctx1.sendIdx["value"]=1
  57997. //>>excludeEnd("ctx");
  57998. ][0];
  57999. }
  58000. [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
  58001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58002. ,$ctx1.sendIdx["nextPutAll:"]=1
  58003. //>>excludeEnd("ctx");
  58004. ][0];
  58005. [$self._lf()
  58006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58007. ,$ctx1.sendIdx["lf"]=1
  58008. //>>excludeEnd("ctx");
  58009. ][0];
  58010. [$self._nextPutAll_([$recv(["return $core.withContext(function(".__comma([$recv([$recv(anIRClosure)._scope()
  58011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58012. ,$ctx1.sendIdx["scope"]=1
  58013. //>>excludeEnd("ctx");
  58014. ][0])._alias()
  58015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58016. ,$ctx1.sendIdx["alias"]=1
  58017. //>>excludeEnd("ctx");
  58018. ][0])
  58019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58020. ,$ctx1.sendIdx[","]=2
  58021. //>>excludeEnd("ctx");
  58022. ][0]).__comma(") {")
  58023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58024. ,$ctx1.sendIdx[","]=1
  58025. //>>excludeEnd("ctx");
  58026. ][0])
  58027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58028. ,$ctx1.sendIdx["nextPutAll:"]=2
  58029. //>>excludeEnd("ctx");
  58030. ][0];
  58031. [$self._lf()
  58032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58033. ,$ctx1.sendIdx["lf"]=2
  58034. //>>excludeEnd("ctx");
  58035. ][0];
  58036. [$self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);")
  58037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58038. ,$ctx1.sendIdx["nextPutAll:"]=3
  58039. //>>excludeEnd("ctx");
  58040. ][0];
  58041. [$self._lf()
  58042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58043. ,$ctx1.sendIdx["lf"]=3
  58044. //>>excludeEnd("ctx");
  58045. ][0];
  58046. $recv(aBlock)._value();
  58047. [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
  58048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58049. ,$ctx1.sendIdx["nextPutAll:"]=4
  58050. //>>excludeEnd("ctx");
  58051. ][0];
  58052. [$self._lf()
  58053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58054. ,$ctx1.sendIdx["lf"]=4
  58055. //>>excludeEnd("ctx");
  58056. ][0];
  58057. [$self._nextPutAll_([$recv(["}, function(".__comma([$recv([$recv(anIRClosure)._scope()
  58058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58059. ,$ctx1.sendIdx["scope"]=2
  58060. //>>excludeEnd("ctx");
  58061. ][0])._alias()
  58062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58063. ,$ctx1.sendIdx["alias"]=2
  58064. //>>excludeEnd("ctx");
  58065. ][0])
  58066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58067. ,$ctx1.sendIdx[","]=4
  58068. //>>excludeEnd("ctx");
  58069. ][0]).__comma(") {")
  58070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58071. ,$ctx1.sendIdx[","]=3
  58072. //>>excludeEnd("ctx");
  58073. ][0])
  58074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58075. ,$ctx1.sendIdx["nextPutAll:"]=5
  58076. //>>excludeEnd("ctx");
  58077. ][0];
  58078. [$self._nextPutAll_([$recv([$recv([$recv(anIRClosure)._scope()
  58079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58080. ,$ctx1.sendIdx["scope"]=3
  58081. //>>excludeEnd("ctx");
  58082. ][0])._alias()
  58083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58084. ,$ctx1.sendIdx["alias"]=3
  58085. //>>excludeEnd("ctx");
  58086. ][0]).__comma(".fillBlock({")
  58087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58088. ,$ctx1.sendIdx[","]=5
  58089. //>>excludeEnd("ctx");
  58090. ][0])
  58091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58092. ,$ctx1.sendIdx["nextPutAll:"]=6
  58093. //>>excludeEnd("ctx");
  58094. ][0];
  58095. $recv($recv(anIRClosure)._locals())._do_separatedBy_((function(each){
  58096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58097. return $core.withContext(function($ctx2) {
  58098. //>>excludeEnd("ctx");
  58099. [$self._nextPutAll_([$recv(each)._asVariableName()
  58100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58101. ,$ctx2.sendIdx["asVariableName"]=1
  58102. //>>excludeEnd("ctx");
  58103. ][0])
  58104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58105. ,$ctx2.sendIdx["nextPutAll:"]=7
  58106. //>>excludeEnd("ctx");
  58107. ][0];
  58108. [$self._nextPutAll_(":")
  58109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58110. ,$ctx2.sendIdx["nextPutAll:"]=8
  58111. //>>excludeEnd("ctx");
  58112. ][0];
  58113. return [$self._nextPutAll_($recv(each)._asVariableName())
  58114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58115. ,$ctx2.sendIdx["nextPutAll:"]=9
  58116. //>>excludeEnd("ctx");
  58117. ][0];
  58118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58119. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  58120. //>>excludeEnd("ctx");
  58121. }),(function(){
  58122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58123. return $core.withContext(function($ctx2) {
  58124. //>>excludeEnd("ctx");
  58125. return [$self._nextPutAll_(",")
  58126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58127. ,$ctx2.sendIdx["nextPutAll:"]=10
  58128. //>>excludeEnd("ctx");
  58129. ][0];
  58130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58131. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  58132. //>>excludeEnd("ctx");
  58133. }));
  58134. [$self._nextPutAll_("},")
  58135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58136. ,$ctx1.sendIdx["nextPutAll:"]=11
  58137. //>>excludeEnd("ctx");
  58138. ][0];
  58139. [$self._nextPutAll_([$recv([$recv($recv($recv($recv([$recv(anIRClosure)._scope()
  58140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58141. ,$ctx1.sendIdx["scope"]=4
  58142. //>>excludeEnd("ctx");
  58143. ][0])._outerScope())._alias()).__comma(",")).__comma($recv($recv($recv(anIRClosure)._scope())._blockIndex())._asString())
  58144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58145. ,$ctx1.sendIdx[","]=7
  58146. //>>excludeEnd("ctx");
  58147. ][0]).__comma(")});")
  58148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58149. ,$ctx1.sendIdx[","]=6
  58150. //>>excludeEnd("ctx");
  58151. ][0])
  58152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58153. ,$ctx1.sendIdx["nextPutAll:"]=12
  58154. //>>excludeEnd("ctx");
  58155. ][0];
  58156. $self._lf();
  58157. $self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
  58158. return self;
  58159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58160. }, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:",{anIRClosure:anIRClosure,aBlock:aBlock})});
  58161. //>>excludeEnd("ctx");
  58162. }; }),
  58163. $globals.JSStream);
  58164. $core.addMethod(
  58165. $core.method({
  58166. selector: "nextPutClosureWith:arguments:",
  58167. protocol: "streaming",
  58168. //>>excludeStart("ide", pragmas.excludeIdeData);
  58169. args: ["aBlock", "anArray"],
  58170. source: "nextPutClosureWith: aBlock arguments: anArray\x0a\x09stream nextPutAll: '(function('.\x0a\x09anArray\x0a\x09\x09do: [ :each | stream nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ stream nextPut: ',' ].\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09aBlock value.\x0a\x09stream lf; nextPutAll: '})'",
  58171. referencedClasses: [],
  58172. //>>excludeEnd("ide");
  58173. pragmas: [],
  58174. messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"]
  58175. }, function ($methodClass){ return function (aBlock,anArray){
  58176. var self=this,$self=this;
  58177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58178. return $core.withContext(function($ctx1) {
  58179. //>>excludeEnd("ctx");
  58180. var $1,$2;
  58181. [$recv($self.stream)._nextPutAll_("(function(")
  58182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58183. ,$ctx1.sendIdx["nextPutAll:"]=1
  58184. //>>excludeEnd("ctx");
  58185. ][0];
  58186. $recv(anArray)._do_separatedBy_((function(each){
  58187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58188. return $core.withContext(function($ctx2) {
  58189. //>>excludeEnd("ctx");
  58190. return [$recv($self.stream)._nextPutAll_($recv(each)._asVariableName())
  58191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58192. ,$ctx2.sendIdx["nextPutAll:"]=2
  58193. //>>excludeEnd("ctx");
  58194. ][0];
  58195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58196. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  58197. //>>excludeEnd("ctx");
  58198. }),(function(){
  58199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58200. return $core.withContext(function($ctx2) {
  58201. //>>excludeEnd("ctx");
  58202. return $recv($self.stream)._nextPut_(",");
  58203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58204. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  58205. //>>excludeEnd("ctx");
  58206. }));
  58207. $1=$self.stream;
  58208. [$recv($1)._nextPutAll_("){")
  58209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58210. ,$ctx1.sendIdx["nextPutAll:"]=3
  58211. //>>excludeEnd("ctx");
  58212. ][0];
  58213. [$recv($1)._lf()
  58214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58215. ,$ctx1.sendIdx["lf"]=1
  58216. //>>excludeEnd("ctx");
  58217. ][0];
  58218. $recv(aBlock)._value();
  58219. $2=$self.stream;
  58220. $recv($2)._lf();
  58221. $recv($2)._nextPutAll_("})");
  58222. return self;
  58223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58224. }, function($ctx1) {$ctx1.fill(self,"nextPutClosureWith:arguments:",{aBlock:aBlock,anArray:anArray})});
  58225. //>>excludeEnd("ctx");
  58226. }; }),
  58227. $globals.JSStream);
  58228. $core.addMethod(
  58229. $core.method({
  58230. selector: "nextPutContextFor:during:",
  58231. protocol: "streaming",
  58232. //>>excludeStart("ide", pragmas.excludeIdeData);
  58233. args: ["aMethod", "aBlock"],
  58234. source: "nextPutContextFor: aMethod during: aBlock\x0a\x09aMethod requiresSmalltalkContext ifFalse: [ ^ aBlock value ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: 'return $core.withContext(function(', aMethod scope alias, ') {';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);';\x0a\x09\x09lf.\x0a\x0a\x09aBlock value.\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '}, function(', aMethod scope alias, ') {', aMethod scope alias;\x0a\x09\x09nextPutAll: '.fill(self,', aMethod selector asJavaScriptSource, ',{'.\x0a\x0a\x09aMethod locals\x0a\x09\x09do: [ :each |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: each asVariableName;\x0a\x09\x09\x09\x09nextPutAll: ':';\x0a\x09\x09\x09\x09nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '})});';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);'",
  58235. referencedClasses: [],
  58236. //>>excludeEnd("ide");
  58237. pragmas: [],
  58238. messageSends: ["ifFalse:", "requiresSmalltalkContext", "value", "nextPutAll:", "lf", ",", "alias", "scope", "asJavaScriptSource", "selector", "do:separatedBy:", "locals", "asVariableName"]
  58239. }, function ($methodClass){ return function (aMethod,aBlock){
  58240. var self=this,$self=this;
  58241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58242. return $core.withContext(function($ctx1) {
  58243. //>>excludeEnd("ctx");
  58244. if(!$core.assert($recv(aMethod)._requiresSmalltalkContext())){
  58245. return [$recv(aBlock)._value()
  58246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58247. ,$ctx1.sendIdx["value"]=1
  58248. //>>excludeEnd("ctx");
  58249. ][0];
  58250. }
  58251. [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
  58252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58253. ,$ctx1.sendIdx["nextPutAll:"]=1
  58254. //>>excludeEnd("ctx");
  58255. ][0];
  58256. [$self._lf()
  58257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58258. ,$ctx1.sendIdx["lf"]=1
  58259. //>>excludeEnd("ctx");
  58260. ][0];
  58261. [$self._nextPutAll_([$recv(["return $core.withContext(function(".__comma([$recv([$recv(aMethod)._scope()
  58262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58263. ,$ctx1.sendIdx["scope"]=1
  58264. //>>excludeEnd("ctx");
  58265. ][0])._alias()
  58266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58267. ,$ctx1.sendIdx["alias"]=1
  58268. //>>excludeEnd("ctx");
  58269. ][0])
  58270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58271. ,$ctx1.sendIdx[","]=2
  58272. //>>excludeEnd("ctx");
  58273. ][0]).__comma(") {")
  58274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58275. ,$ctx1.sendIdx[","]=1
  58276. //>>excludeEnd("ctx");
  58277. ][0])
  58278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58279. ,$ctx1.sendIdx["nextPutAll:"]=2
  58280. //>>excludeEnd("ctx");
  58281. ][0];
  58282. [$self._lf()
  58283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58284. ,$ctx1.sendIdx["lf"]=2
  58285. //>>excludeEnd("ctx");
  58286. ][0];
  58287. [$self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);")
  58288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58289. ,$ctx1.sendIdx["nextPutAll:"]=3
  58290. //>>excludeEnd("ctx");
  58291. ][0];
  58292. [$self._lf()
  58293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58294. ,$ctx1.sendIdx["lf"]=3
  58295. //>>excludeEnd("ctx");
  58296. ][0];
  58297. $recv(aBlock)._value();
  58298. [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
  58299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58300. ,$ctx1.sendIdx["nextPutAll:"]=4
  58301. //>>excludeEnd("ctx");
  58302. ][0];
  58303. [$self._lf()
  58304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58305. ,$ctx1.sendIdx["lf"]=4
  58306. //>>excludeEnd("ctx");
  58307. ][0];
  58308. [$self._nextPutAll_([$recv([$recv(["}, function(".__comma([$recv([$recv(aMethod)._scope()
  58309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58310. ,$ctx1.sendIdx["scope"]=2
  58311. //>>excludeEnd("ctx");
  58312. ][0])._alias()
  58313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58314. ,$ctx1.sendIdx["alias"]=2
  58315. //>>excludeEnd("ctx");
  58316. ][0])
  58317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58318. ,$ctx1.sendIdx[","]=5
  58319. //>>excludeEnd("ctx");
  58320. ][0]).__comma(") {")
  58321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58322. ,$ctx1.sendIdx[","]=4
  58323. //>>excludeEnd("ctx");
  58324. ][0]).__comma($recv($recv(aMethod)._scope())._alias())
  58325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58326. ,$ctx1.sendIdx[","]=3
  58327. //>>excludeEnd("ctx");
  58328. ][0])
  58329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58330. ,$ctx1.sendIdx["nextPutAll:"]=5
  58331. //>>excludeEnd("ctx");
  58332. ][0];
  58333. [$self._nextPutAll_([$recv(".fill(self,".__comma($recv($recv(aMethod)._selector())._asJavaScriptSource())).__comma(",{")
  58334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58335. ,$ctx1.sendIdx[","]=6
  58336. //>>excludeEnd("ctx");
  58337. ][0])
  58338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58339. ,$ctx1.sendIdx["nextPutAll:"]=6
  58340. //>>excludeEnd("ctx");
  58341. ][0];
  58342. $recv($recv(aMethod)._locals())._do_separatedBy_((function(each){
  58343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58344. return $core.withContext(function($ctx2) {
  58345. //>>excludeEnd("ctx");
  58346. [$self._nextPutAll_([$recv(each)._asVariableName()
  58347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58348. ,$ctx2.sendIdx["asVariableName"]=1
  58349. //>>excludeEnd("ctx");
  58350. ][0])
  58351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58352. ,$ctx2.sendIdx["nextPutAll:"]=7
  58353. //>>excludeEnd("ctx");
  58354. ][0];
  58355. [$self._nextPutAll_(":")
  58356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58357. ,$ctx2.sendIdx["nextPutAll:"]=8
  58358. //>>excludeEnd("ctx");
  58359. ][0];
  58360. return [$self._nextPutAll_($recv(each)._asVariableName())
  58361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58362. ,$ctx2.sendIdx["nextPutAll:"]=9
  58363. //>>excludeEnd("ctx");
  58364. ][0];
  58365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58366. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  58367. //>>excludeEnd("ctx");
  58368. }),(function(){
  58369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58370. return $core.withContext(function($ctx2) {
  58371. //>>excludeEnd("ctx");
  58372. return [$self._nextPutAll_(",")
  58373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58374. ,$ctx2.sendIdx["nextPutAll:"]=10
  58375. //>>excludeEnd("ctx");
  58376. ][0];
  58377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58378. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  58379. //>>excludeEnd("ctx");
  58380. }));
  58381. [$self._nextPutAll_("})});")
  58382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58383. ,$ctx1.sendIdx["nextPutAll:"]=11
  58384. //>>excludeEnd("ctx");
  58385. ][0];
  58386. $self._lf();
  58387. $self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
  58388. return self;
  58389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58390. }, function($ctx1) {$ctx1.fill(self,"nextPutContextFor:during:",{aMethod:aMethod,aBlock:aBlock})});
  58391. //>>excludeEnd("ctx");
  58392. }; }),
  58393. $globals.JSStream);
  58394. $core.addMethod(
  58395. $core.method({
  58396. selector: "nextPutFunctionWith:arguments:",
  58397. protocol: "streaming",
  58398. //>>excludeStart("ide", pragmas.excludeIdeData);
  58399. args: ["aBlock", "anArray"],
  58400. source: "nextPutFunctionWith: aBlock arguments: anArray\x0a\x09stream nextPutAll: 'function ('.\x0a\x09anArray\x0a\x09\x09do: [ :each | stream nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ stream nextPut: ',' ].\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09stream nextPutAll: 'var self=this,$self=this;'; lf.\x0a\x09aBlock value.\x0a\x09stream lf; nextPutAll: '}'",
  58401. referencedClasses: [],
  58402. //>>excludeEnd("ide");
  58403. pragmas: [],
  58404. messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"]
  58405. }, function ($methodClass){ return function (aBlock,anArray){
  58406. var self=this,$self=this;
  58407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58408. return $core.withContext(function($ctx1) {
  58409. //>>excludeEnd("ctx");
  58410. var $1,$2,$3;
  58411. [$recv($self.stream)._nextPutAll_("function (")
  58412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58413. ,$ctx1.sendIdx["nextPutAll:"]=1
  58414. //>>excludeEnd("ctx");
  58415. ][0];
  58416. $recv(anArray)._do_separatedBy_((function(each){
  58417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58418. return $core.withContext(function($ctx2) {
  58419. //>>excludeEnd("ctx");
  58420. return [$recv($self.stream)._nextPutAll_($recv(each)._asVariableName())
  58421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58422. ,$ctx2.sendIdx["nextPutAll:"]=2
  58423. //>>excludeEnd("ctx");
  58424. ][0];
  58425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58426. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  58427. //>>excludeEnd("ctx");
  58428. }),(function(){
  58429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58430. return $core.withContext(function($ctx2) {
  58431. //>>excludeEnd("ctx");
  58432. return $recv($self.stream)._nextPut_(",");
  58433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58434. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  58435. //>>excludeEnd("ctx");
  58436. }));
  58437. $1=$self.stream;
  58438. [$recv($1)._nextPutAll_("){")
  58439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58440. ,$ctx1.sendIdx["nextPutAll:"]=3
  58441. //>>excludeEnd("ctx");
  58442. ][0];
  58443. [$recv($1)._lf()
  58444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58445. ,$ctx1.sendIdx["lf"]=1
  58446. //>>excludeEnd("ctx");
  58447. ][0];
  58448. $2=$self.stream;
  58449. [$recv($2)._nextPutAll_("var self=this,$self=this;")
  58450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58451. ,$ctx1.sendIdx["nextPutAll:"]=4
  58452. //>>excludeEnd("ctx");
  58453. ][0];
  58454. [$recv($2)._lf()
  58455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58456. ,$ctx1.sendIdx["lf"]=2
  58457. //>>excludeEnd("ctx");
  58458. ][0];
  58459. $recv(aBlock)._value();
  58460. $3=$self.stream;
  58461. $recv($3)._lf();
  58462. $recv($3)._nextPutAll_("}");
  58463. return self;
  58464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58465. }, function($ctx1) {$ctx1.fill(self,"nextPutFunctionWith:arguments:",{aBlock:aBlock,anArray:anArray})});
  58466. //>>excludeEnd("ctx");
  58467. }; }),
  58468. $globals.JSStream);
  58469. $core.addMethod(
  58470. $core.method({
  58471. selector: "nextPutIf:then:",
  58472. protocol: "streaming",
  58473. //>>excludeStart("ide", pragmas.excludeIdeData);
  58474. args: ["aBlock", "anotherBlock"],
  58475. source: "nextPutIf: aBlock then: anotherBlock\x0a\x09stream nextPutAll: 'if('.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09anotherBlock value.\x0a\x09stream nextPutAll: '}'.\x0a\x09self omitSemicolon: true",
  58476. referencedClasses: [],
  58477. //>>excludeEnd("ide");
  58478. pragmas: [],
  58479. messageSends: ["nextPutAll:", "value", "lf", "omitSemicolon:"]
  58480. }, function ($methodClass){ return function (aBlock,anotherBlock){
  58481. var self=this,$self=this;
  58482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58483. return $core.withContext(function($ctx1) {
  58484. //>>excludeEnd("ctx");
  58485. var $1;
  58486. [$recv($self.stream)._nextPutAll_("if(")
  58487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58488. ,$ctx1.sendIdx["nextPutAll:"]=1
  58489. //>>excludeEnd("ctx");
  58490. ][0];
  58491. [$recv(aBlock)._value()
  58492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58493. ,$ctx1.sendIdx["value"]=1
  58494. //>>excludeEnd("ctx");
  58495. ][0];
  58496. $1=$self.stream;
  58497. [$recv($1)._nextPutAll_("){")
  58498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58499. ,$ctx1.sendIdx["nextPutAll:"]=2
  58500. //>>excludeEnd("ctx");
  58501. ][0];
  58502. $recv($1)._lf();
  58503. $recv(anotherBlock)._value();
  58504. $recv($self.stream)._nextPutAll_("}");
  58505. $self._omitSemicolon_(true);
  58506. return self;
  58507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58508. }, function($ctx1) {$ctx1.fill(self,"nextPutIf:then:",{aBlock:aBlock,anotherBlock:anotherBlock})});
  58509. //>>excludeEnd("ctx");
  58510. }; }),
  58511. $globals.JSStream);
  58512. $core.addMethod(
  58513. $core.method({
  58514. selector: "nextPutIf:then:else:",
  58515. protocol: "streaming",
  58516. //>>excludeStart("ide", pragmas.excludeIdeData);
  58517. args: ["aBlock", "ifBlock", "elseBlock"],
  58518. source: "nextPutIf: aBlock then: ifBlock else: elseBlock\x0a\x09stream nextPutAll: 'if('.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09ifBlock value.\x0a\x09stream nextPutAll: '} else {'; lf.\x0a\x09elseBlock value.\x0a\x09stream nextPutAll: '}'.\x0a\x09self omitSemicolon: true",
  58519. referencedClasses: [],
  58520. //>>excludeEnd("ide");
  58521. pragmas: [],
  58522. messageSends: ["nextPutAll:", "value", "lf", "omitSemicolon:"]
  58523. }, function ($methodClass){ return function (aBlock,ifBlock,elseBlock){
  58524. var self=this,$self=this;
  58525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58526. return $core.withContext(function($ctx1) {
  58527. //>>excludeEnd("ctx");
  58528. var $1,$2;
  58529. [$recv($self.stream)._nextPutAll_("if(")
  58530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58531. ,$ctx1.sendIdx["nextPutAll:"]=1
  58532. //>>excludeEnd("ctx");
  58533. ][0];
  58534. [$recv(aBlock)._value()
  58535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58536. ,$ctx1.sendIdx["value"]=1
  58537. //>>excludeEnd("ctx");
  58538. ][0];
  58539. $1=$self.stream;
  58540. [$recv($1)._nextPutAll_("){")
  58541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58542. ,$ctx1.sendIdx["nextPutAll:"]=2
  58543. //>>excludeEnd("ctx");
  58544. ][0];
  58545. [$recv($1)._lf()
  58546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58547. ,$ctx1.sendIdx["lf"]=1
  58548. //>>excludeEnd("ctx");
  58549. ][0];
  58550. [$recv(ifBlock)._value()
  58551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58552. ,$ctx1.sendIdx["value"]=2
  58553. //>>excludeEnd("ctx");
  58554. ][0];
  58555. $2=$self.stream;
  58556. [$recv($2)._nextPutAll_("} else {")
  58557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58558. ,$ctx1.sendIdx["nextPutAll:"]=3
  58559. //>>excludeEnd("ctx");
  58560. ][0];
  58561. $recv($2)._lf();
  58562. $recv(elseBlock)._value();
  58563. $recv($self.stream)._nextPutAll_("}");
  58564. $self._omitSemicolon_(true);
  58565. return self;
  58566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58567. }, function($ctx1) {$ctx1.fill(self,"nextPutIf:then:else:",{aBlock:aBlock,ifBlock:ifBlock,elseBlock:elseBlock})});
  58568. //>>excludeEnd("ctx");
  58569. }; }),
  58570. $globals.JSStream);
  58571. $core.addMethod(
  58572. $core.method({
  58573. selector: "nextPutNonLocalReturnHandlingWith:",
  58574. protocol: "streaming",
  58575. //>>excludeStart("ide", pragmas.excludeIdeData);
  58576. args: ["aBlock"],
  58577. source: "nextPutNonLocalReturnHandlingWith: aBlock\x0a\x09stream\x0a\x09\x09nextPutAll: 'var $early={};'; lf;\x0a\x09\x09nextPutAll: 'try {'; lf.\x0a\x09aBlock value.\x0a\x09stream\x0a\x09\x09nextPutAll: '}'; lf;\x0a\x09\x09nextPutAll: 'catch(e) {if(e===$early)return e[0]; throw e}'; lf",
  58578. referencedClasses: [],
  58579. //>>excludeEnd("ide");
  58580. pragmas: [],
  58581. messageSends: ["nextPutAll:", "lf", "value"]
  58582. }, function ($methodClass){ return function (aBlock){
  58583. var self=this,$self=this;
  58584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58585. return $core.withContext(function($ctx1) {
  58586. //>>excludeEnd("ctx");
  58587. var $1,$2;
  58588. $1=$self.stream;
  58589. [$recv($1)._nextPutAll_("var $early={};")
  58590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58591. ,$ctx1.sendIdx["nextPutAll:"]=1
  58592. //>>excludeEnd("ctx");
  58593. ][0];
  58594. [$recv($1)._lf()
  58595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58596. ,$ctx1.sendIdx["lf"]=1
  58597. //>>excludeEnd("ctx");
  58598. ][0];
  58599. [$recv($1)._nextPutAll_("try {")
  58600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58601. ,$ctx1.sendIdx["nextPutAll:"]=2
  58602. //>>excludeEnd("ctx");
  58603. ][0];
  58604. [$recv($1)._lf()
  58605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58606. ,$ctx1.sendIdx["lf"]=2
  58607. //>>excludeEnd("ctx");
  58608. ][0];
  58609. $recv(aBlock)._value();
  58610. $2=$self.stream;
  58611. [$recv($2)._nextPutAll_("}")
  58612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58613. ,$ctx1.sendIdx["nextPutAll:"]=3
  58614. //>>excludeEnd("ctx");
  58615. ][0];
  58616. [$recv($2)._lf()
  58617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58618. ,$ctx1.sendIdx["lf"]=3
  58619. //>>excludeEnd("ctx");
  58620. ][0];
  58621. $recv($2)._nextPutAll_("catch(e) {if(e===$early)return e[0]; throw e}");
  58622. $recv($2)._lf();
  58623. return self;
  58624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58625. }, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnHandlingWith:",{aBlock:aBlock})});
  58626. //>>excludeEnd("ctx");
  58627. }; }),
  58628. $globals.JSStream);
  58629. $core.addMethod(
  58630. $core.method({
  58631. selector: "nextPutNonLocalReturnWith:",
  58632. protocol: "streaming",
  58633. //>>excludeStart("ide", pragmas.excludeIdeData);
  58634. args: ["aBlock"],
  58635. source: "nextPutNonLocalReturnWith: aBlock\x0a\x09stream nextPutAll: 'throw $early=['.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: ']'",
  58636. referencedClasses: [],
  58637. //>>excludeEnd("ide");
  58638. pragmas: [],
  58639. messageSends: ["nextPutAll:", "value"]
  58640. }, function ($methodClass){ return function (aBlock){
  58641. var self=this,$self=this;
  58642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58643. return $core.withContext(function($ctx1) {
  58644. //>>excludeEnd("ctx");
  58645. [$recv($self.stream)._nextPutAll_("throw $early=[")
  58646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58647. ,$ctx1.sendIdx["nextPutAll:"]=1
  58648. //>>excludeEnd("ctx");
  58649. ][0];
  58650. $recv(aBlock)._value();
  58651. $recv($self.stream)._nextPutAll_("]");
  58652. return self;
  58653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58654. }, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnWith:",{aBlock:aBlock})});
  58655. //>>excludeEnd("ctx");
  58656. }; }),
  58657. $globals.JSStream);
  58658. $core.addMethod(
  58659. $core.method({
  58660. selector: "nextPutReturnWith:",
  58661. protocol: "streaming",
  58662. //>>excludeStart("ide", pragmas.excludeIdeData);
  58663. args: ["aBlock"],
  58664. source: "nextPutReturnWith: aBlock\x0a\x09stream nextPutAll: 'return '.\x0a\x09aBlock value",
  58665. referencedClasses: [],
  58666. //>>excludeEnd("ide");
  58667. pragmas: [],
  58668. messageSends: ["nextPutAll:", "value"]
  58669. }, function ($methodClass){ return function (aBlock){
  58670. var self=this,$self=this;
  58671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58672. return $core.withContext(function($ctx1) {
  58673. //>>excludeEnd("ctx");
  58674. $recv($self.stream)._nextPutAll_("return ");
  58675. $recv(aBlock)._value();
  58676. return self;
  58677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58678. }, function($ctx1) {$ctx1.fill(self,"nextPutReturnWith:",{aBlock:aBlock})});
  58679. //>>excludeEnd("ctx");
  58680. }; }),
  58681. $globals.JSStream);
  58682. $core.addMethod(
  58683. $core.method({
  58684. selector: "nextPutStatementWith:",
  58685. protocol: "streaming",
  58686. //>>excludeStart("ide", pragmas.excludeIdeData);
  58687. args: ["aBlock"],
  58688. source: "nextPutStatementWith: aBlock\x0a\x09self omitSemicolon: false.\x0a\x09aBlock value.\x0a\x09self omitSemicolon ifFalse: [ stream nextPutAll: ';' ].\x0a\x09self omitSemicolon: false.\x0a\x09stream lf",
  58689. referencedClasses: [],
  58690. //>>excludeEnd("ide");
  58691. pragmas: [],
  58692. messageSends: ["omitSemicolon:", "value", "ifFalse:", "omitSemicolon", "nextPutAll:", "lf"]
  58693. }, function ($methodClass){ return function (aBlock){
  58694. var self=this,$self=this;
  58695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58696. return $core.withContext(function($ctx1) {
  58697. //>>excludeEnd("ctx");
  58698. [$self._omitSemicolon_(false)
  58699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58700. ,$ctx1.sendIdx["omitSemicolon:"]=1
  58701. //>>excludeEnd("ctx");
  58702. ][0];
  58703. $recv(aBlock)._value();
  58704. if(!$core.assert($self._omitSemicolon())){
  58705. $recv($self.stream)._nextPutAll_(";");
  58706. }
  58707. $self._omitSemicolon_(false);
  58708. $recv($self.stream)._lf();
  58709. return self;
  58710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58711. }, function($ctx1) {$ctx1.fill(self,"nextPutStatementWith:",{aBlock:aBlock})});
  58712. //>>excludeEnd("ctx");
  58713. }; }),
  58714. $globals.JSStream);
  58715. $core.addMethod(
  58716. $core.method({
  58717. selector: "nextPutVars:",
  58718. protocol: "streaming",
  58719. //>>excludeStart("ide", pragmas.excludeIdeData);
  58720. args: ["aCollection"],
  58721. source: "nextPutVars: aCollection\x0a\x09aCollection ifNotEmpty: [\x0a\x09\x09stream nextPutAll: 'var '.\x0a\x09\x09aCollection\x0a\x09\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09\x09stream nextPutAll: ';'; lf ]",
  58722. referencedClasses: [],
  58723. //>>excludeEnd("ide");
  58724. pragmas: [],
  58725. messageSends: ["ifNotEmpty:", "nextPutAll:", "do:separatedBy:", "lf"]
  58726. }, function ($methodClass){ return function (aCollection){
  58727. var self=this,$self=this;
  58728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58729. return $core.withContext(function($ctx1) {
  58730. //>>excludeEnd("ctx");
  58731. var $1;
  58732. $recv(aCollection)._ifNotEmpty_((function(){
  58733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58734. return $core.withContext(function($ctx2) {
  58735. //>>excludeEnd("ctx");
  58736. [$recv($self.stream)._nextPutAll_("var ")
  58737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58738. ,$ctx2.sendIdx["nextPutAll:"]=1
  58739. //>>excludeEnd("ctx");
  58740. ][0];
  58741. $recv(aCollection)._do_separatedBy_((function(each){
  58742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58743. return $core.withContext(function($ctx3) {
  58744. //>>excludeEnd("ctx");
  58745. return [$recv($self.stream)._nextPutAll_(each)
  58746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58747. ,$ctx3.sendIdx["nextPutAll:"]=2
  58748. //>>excludeEnd("ctx");
  58749. ][0];
  58750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58751. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  58752. //>>excludeEnd("ctx");
  58753. }),(function(){
  58754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58755. return $core.withContext(function($ctx3) {
  58756. //>>excludeEnd("ctx");
  58757. return [$recv($self.stream)._nextPutAll_(",")
  58758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58759. ,$ctx3.sendIdx["nextPutAll:"]=3
  58760. //>>excludeEnd("ctx");
  58761. ][0];
  58762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58763. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  58764. //>>excludeEnd("ctx");
  58765. }));
  58766. $1=$self.stream;
  58767. $recv($1)._nextPutAll_(";");
  58768. return $recv($1)._lf();
  58769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58770. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  58771. //>>excludeEnd("ctx");
  58772. }));
  58773. return self;
  58774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58775. }, function($ctx1) {$ctx1.fill(self,"nextPutVars:",{aCollection:aCollection})});
  58776. //>>excludeEnd("ctx");
  58777. }; }),
  58778. $globals.JSStream);
  58779. $core.addMethod(
  58780. $core.method({
  58781. selector: "omitSemicolon",
  58782. protocol: "accessing",
  58783. //>>excludeStart("ide", pragmas.excludeIdeData);
  58784. args: [],
  58785. source: "omitSemicolon\x0a\x09^ omitSemicolon",
  58786. referencedClasses: [],
  58787. //>>excludeEnd("ide");
  58788. pragmas: [],
  58789. messageSends: []
  58790. }, function ($methodClass){ return function (){
  58791. var self=this,$self=this;
  58792. return $self.omitSemicolon;
  58793. }; }),
  58794. $globals.JSStream);
  58795. $core.addMethod(
  58796. $core.method({
  58797. selector: "omitSemicolon:",
  58798. protocol: "accessing",
  58799. //>>excludeStart("ide", pragmas.excludeIdeData);
  58800. args: ["aBoolean"],
  58801. source: "omitSemicolon: aBoolean\x0a\x09omitSemicolon := aBoolean",
  58802. referencedClasses: [],
  58803. //>>excludeEnd("ide");
  58804. pragmas: [],
  58805. messageSends: []
  58806. }, function ($methodClass){ return function (aBoolean){
  58807. var self=this,$self=this;
  58808. $self.omitSemicolon=aBoolean;
  58809. return self;
  58810. }; }),
  58811. $globals.JSStream);
  58812. $core.setTraitComposition([{trait: $globals.TPragmator}], $globals.IRPragmator);
  58813. $core.addMethod(
  58814. $core.method({
  58815. selector: "requiresSmalltalkContext",
  58816. protocol: "*Compiler-IR",
  58817. //>>excludeStart("ide", pragmas.excludeIdeData);
  58818. args: [],
  58819. source: "requiresSmalltalkContext\x0a\x09\x22Answer true if the receiver requires a smalltalk context.\x0a\x09Only send nodes require a context.\x0a\x09\x0a\x09If no node requires a context, the method will be compiled without one.\x0a\x09See `IRJSTranslator` and `JSStream` for context creation\x22\x0a\x09\x0a\x09^ self dagChildren anySatisfy: [ :each | each requiresSmalltalkContext ]",
  58820. referencedClasses: [],
  58821. //>>excludeEnd("ide");
  58822. pragmas: [],
  58823. messageSends: ["anySatisfy:", "dagChildren", "requiresSmalltalkContext"]
  58824. }, function ($methodClass){ return function (){
  58825. var self=this,$self=this;
  58826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58827. return $core.withContext(function($ctx1) {
  58828. //>>excludeEnd("ctx");
  58829. return $recv($self._dagChildren())._anySatisfy_((function(each){
  58830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58831. return $core.withContext(function($ctx2) {
  58832. //>>excludeEnd("ctx");
  58833. return $recv(each)._requiresSmalltalkContext();
  58834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58835. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  58836. //>>excludeEnd("ctx");
  58837. }));
  58838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58839. }, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{})});
  58840. //>>excludeEnd("ctx");
  58841. }; }),
  58842. $globals.ASTNode);
  58843. $core.addMethod(
  58844. $core.method({
  58845. selector: "hasOpeningStatements",
  58846. protocol: "*Compiler-IR",
  58847. //>>excludeStart("ide", pragmas.excludeIdeData);
  58848. args: [],
  58849. source: "hasOpeningStatements\x0a\x09^ true",
  58850. referencedClasses: [],
  58851. //>>excludeEnd("ide");
  58852. pragmas: [],
  58853. messageSends: []
  58854. }, function ($methodClass){ return function (){
  58855. var self=this,$self=this;
  58856. return true;
  58857. }; }),
  58858. $globals.AssignmentNode);
  58859. $core.addMethod(
  58860. $core.method({
  58861. selector: "subtreeNeedsAliasing",
  58862. protocol: "*Compiler-IR",
  58863. //>>excludeStart("ide", pragmas.excludeIdeData);
  58864. args: [],
  58865. source: "subtreeNeedsAliasing\x0a\x09^ false",
  58866. referencedClasses: [],
  58867. //>>excludeEnd("ide");
  58868. pragmas: [],
  58869. messageSends: []
  58870. }, function ($methodClass){ return function (){
  58871. var self=this,$self=this;
  58872. return false;
  58873. }; }),
  58874. $globals.BlockNode);
  58875. $core.addMethod(
  58876. $core.method({
  58877. selector: "hasOpeningStatements",
  58878. protocol: "*Compiler-IR",
  58879. //>>excludeStart("ide", pragmas.excludeIdeData);
  58880. args: [],
  58881. source: "hasOpeningStatements\x0a\x09^ true",
  58882. referencedClasses: [],
  58883. //>>excludeEnd("ide");
  58884. pragmas: [],
  58885. messageSends: []
  58886. }, function ($methodClass){ return function (){
  58887. var self=this,$self=this;
  58888. return true;
  58889. }; }),
  58890. $globals.CascadeNode);
  58891. $core.addMethod(
  58892. $core.method({
  58893. selector: "hasOpeningStatements",
  58894. protocol: "*Compiler-IR",
  58895. //>>excludeStart("ide", pragmas.excludeIdeData);
  58896. args: [],
  58897. source: "hasOpeningStatements\x0a\x09^ false",
  58898. referencedClasses: [],
  58899. //>>excludeEnd("ide");
  58900. pragmas: [],
  58901. messageSends: []
  58902. }, function ($methodClass){ return function (){
  58903. var self=this,$self=this;
  58904. return false;
  58905. }; }),
  58906. $globals.ExpressionNode);
  58907. $core.addMethod(
  58908. $core.method({
  58909. selector: "subtreeNeedsAliasing",
  58910. protocol: "*Compiler-IR",
  58911. //>>excludeStart("ide", pragmas.excludeIdeData);
  58912. args: [],
  58913. source: "subtreeNeedsAliasing\x0a\x09^ self dagChildren anySatisfy: [ :each |\x0a\x09\x09each shouldBeAliased or: [\x0a\x09\x09\x09each hasOpeningStatements or: [\x0a\x09\x09\x09\x09each subtreeNeedsAliasing ] ] ]",
  58914. referencedClasses: [],
  58915. //>>excludeEnd("ide");
  58916. pragmas: [],
  58917. messageSends: ["anySatisfy:", "dagChildren", "or:", "shouldBeAliased", "hasOpeningStatements", "subtreeNeedsAliasing"]
  58918. }, function ($methodClass){ return function (){
  58919. var self=this,$self=this;
  58920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58921. return $core.withContext(function($ctx1) {
  58922. //>>excludeEnd("ctx");
  58923. return $recv($self._dagChildren())._anySatisfy_((function(each){
  58924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58925. return $core.withContext(function($ctx2) {
  58926. //>>excludeEnd("ctx");
  58927. if($core.assert($recv(each)._shouldBeAliased())){
  58928. return true;
  58929. } else {
  58930. if($core.assert($recv(each)._hasOpeningStatements())){
  58931. return true;
  58932. } else {
  58933. return $recv(each)._subtreeNeedsAliasing();
  58934. }
  58935. }
  58936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58937. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  58938. //>>excludeEnd("ctx");
  58939. }));
  58940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58941. }, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{})});
  58942. //>>excludeEnd("ctx");
  58943. }; }),
  58944. $globals.ExpressionNode);
  58945. $core.addMethod(
  58946. $core.method({
  58947. selector: "requiresSmalltalkContext",
  58948. protocol: "*Compiler-IR",
  58949. //>>excludeStart("ide", pragmas.excludeIdeData);
  58950. args: [],
  58951. source: "requiresSmalltalkContext\x0a\x09^ true",
  58952. referencedClasses: [],
  58953. //>>excludeEnd("ide");
  58954. pragmas: [],
  58955. messageSends: []
  58956. }, function ($methodClass){ return function (){
  58957. var self=this,$self=this;
  58958. return true;
  58959. }; }),
  58960. $globals.JSStatementNode);
  58961. $core.addMethod(
  58962. $core.method({
  58963. selector: "asReceiver",
  58964. protocol: "*Compiler-IR",
  58965. //>>excludeStart("ide", pragmas.excludeIdeData);
  58966. args: [],
  58967. source: "asReceiver\x0a\x09^ self class receiverNames\x0a\x09\x09at: self name\x0a\x09\x09ifPresent: [ :newName | self copy name: newName; yourself ]\x0a\x09\x09ifAbsent: [ self ]",
  58968. referencedClasses: [],
  58969. //>>excludeEnd("ide");
  58970. pragmas: [],
  58971. messageSends: ["at:ifPresent:ifAbsent:", "receiverNames", "class", "name", "name:", "copy", "yourself"]
  58972. }, function ($methodClass){ return function (){
  58973. var self=this,$self=this;
  58974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58975. return $core.withContext(function($ctx1) {
  58976. //>>excludeEnd("ctx");
  58977. var $1;
  58978. return $recv($recv($self._class())._receiverNames())._at_ifPresent_ifAbsent_($self._name(),(function(newName){
  58979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58980. return $core.withContext(function($ctx2) {
  58981. //>>excludeEnd("ctx");
  58982. $1=$self._copy();
  58983. $recv($1)._name_(newName);
  58984. return $recv($1)._yourself();
  58985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58986. }, function($ctx2) {$ctx2.fillBlock({newName:newName},$ctx1,1)});
  58987. //>>excludeEnd("ctx");
  58988. }),(function(){
  58989. return self;
  58990. }));
  58991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58992. }, function($ctx1) {$ctx1.fill(self,"asReceiver",{})});
  58993. //>>excludeEnd("ctx");
  58994. }; }),
  58995. $globals.PseudoVar);
  58996. $core.addMethod(
  58997. $core.method({
  58998. selector: "asReceiver",
  58999. protocol: "*Compiler-IR",
  59000. //>>excludeStart("ide", pragmas.excludeIdeData);
  59001. args: [],
  59002. source: "asReceiver\x0a\x09\x22Return customized copy to use as receiver,\x0a\x09or self if suffices.\x22\x0a\x09^ nil",
  59003. referencedClasses: [],
  59004. //>>excludeEnd("ide");
  59005. pragmas: [],
  59006. messageSends: []
  59007. }, function ($methodClass){ return function (){
  59008. var self=this,$self=this;
  59009. return nil;
  59010. }; }),
  59011. $globals.ScopeVar);
  59012. $core.addMethod(
  59013. $core.method({
  59014. selector: "requiresSmalltalkContext",
  59015. protocol: "*Compiler-IR",
  59016. //>>excludeStart("ide", pragmas.excludeIdeData);
  59017. args: [],
  59018. source: "requiresSmalltalkContext\x0a\x09^ true",
  59019. referencedClasses: [],
  59020. //>>excludeEnd("ide");
  59021. pragmas: [],
  59022. messageSends: []
  59023. }, function ($methodClass){ return function (){
  59024. var self=this,$self=this;
  59025. return true;
  59026. }; }),
  59027. $globals.SendNode);
  59028. });
  59029. define('amber/core/Compiler-Inlining',["amber/boot", "require", "amber/core/Compiler-AST", "amber/core/Compiler-Core", "amber/core/Compiler-IR", "amber/core/Compiler-Semantic", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  59030. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  59031. var $pkg = $core.addPackage("Compiler-Inlining");
  59032. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  59033. $core.addClass("ASTPreInliner", $globals.NodeVisitor, "Compiler-Inlining");
  59034. $core.addMethod(
  59035. $core.method({
  59036. selector: "visitSendNode:",
  59037. protocol: "visiting",
  59038. //>>excludeStart("ide", pragmas.excludeIdeData);
  59039. args: ["aNode"],
  59040. source: "visitSendNode: aNode\x0a\x0a\x09aNode superSend ifFalse: [ \x0a\x09\x09(IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [\x0a\x09\x09\x09aNode shouldBeAliased: true.\x0a\x09\x09\x09aNode receiver ifNotNil: [ :receiver |\x0a\x09\x09\x09\x09(IRSendInliner inlinedSelectorsNeedingIdempotentReceiver includes: aNode selector) ifTrue: [\x0a\x09\x09\x09\x09\x09receiver shouldBeAliased: true ] ] ] ].\x0a\x0a\x09^ super visitSendNode: aNode",
  59041. referencedClasses: ["IRSendInliner"],
  59042. //>>excludeEnd("ide");
  59043. pragmas: [],
  59044. messageSends: ["ifFalse:", "superSend", "ifTrue:", "includes:", "inlinedSelectors", "selector", "shouldBeAliased:", "ifNotNil:", "receiver", "inlinedSelectorsNeedingIdempotentReceiver", "visitSendNode:"]
  59045. }, function ($methodClass){ return function (aNode){
  59046. var self=this,$self=this;
  59047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59048. return $core.withContext(function($ctx1) {
  59049. //>>excludeEnd("ctx");
  59050. var $1;
  59051. if(!$core.assert($recv(aNode)._superSend())){
  59052. if($core.assert([$recv($recv($globals.IRSendInliner)._inlinedSelectors())._includes_([$recv(aNode)._selector()
  59053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59054. ,$ctx1.sendIdx["selector"]=1
  59055. //>>excludeEnd("ctx");
  59056. ][0])
  59057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59058. ,$ctx1.sendIdx["includes:"]=1
  59059. //>>excludeEnd("ctx");
  59060. ][0])){
  59061. [$recv(aNode)._shouldBeAliased_(true)
  59062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59063. ,$ctx1.sendIdx["shouldBeAliased:"]=1
  59064. //>>excludeEnd("ctx");
  59065. ][0];
  59066. $1=$recv(aNode)._receiver();
  59067. if($1 == null || $1.a$nil){
  59068. $1;
  59069. } else {
  59070. var receiver;
  59071. receiver=$1;
  59072. if($core.assert($recv($recv($globals.IRSendInliner)._inlinedSelectorsNeedingIdempotentReceiver())._includes_($recv(aNode)._selector()))){
  59073. $recv(receiver)._shouldBeAliased_(true);
  59074. }
  59075. }
  59076. }
  59077. }
  59078. return [(
  59079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59080. $ctx1.supercall = true,
  59081. //>>excludeEnd("ctx");
  59082. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSendNode_.call($self,aNode))
  59083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59084. ,$ctx1.supercall = false
  59085. //>>excludeEnd("ctx");
  59086. ][0];
  59087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59088. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode})});
  59089. //>>excludeEnd("ctx");
  59090. }; }),
  59091. $globals.ASTPreInliner);
  59092. $core.addClass("IRInlinedClosure", $globals.IRClosure, "Compiler-Inlining");
  59093. //>>excludeStart("ide", pragmas.excludeIdeData);
  59094. $globals.IRInlinedClosure.comment="I represent an inlined closure instruction.";
  59095. //>>excludeEnd("ide");
  59096. $core.addMethod(
  59097. $core.method({
  59098. selector: "acceptDagVisitor:",
  59099. protocol: "visiting",
  59100. //>>excludeStart("ide", pragmas.excludeIdeData);
  59101. args: ["aVisitor"],
  59102. source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedClosure: self",
  59103. referencedClasses: [],
  59104. //>>excludeEnd("ide");
  59105. pragmas: [],
  59106. messageSends: ["visitIRInlinedClosure:"]
  59107. }, function ($methodClass){ return function (aVisitor){
  59108. var self=this,$self=this;
  59109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59110. return $core.withContext(function($ctx1) {
  59111. //>>excludeEnd("ctx");
  59112. $recv(aVisitor)._visitIRInlinedClosure_(self);
  59113. return self;
  59114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59115. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  59116. //>>excludeEnd("ctx");
  59117. }; }),
  59118. $globals.IRInlinedClosure);
  59119. $core.addMethod(
  59120. $core.method({
  59121. selector: "isInlined",
  59122. protocol: "testing",
  59123. //>>excludeStart("ide", pragmas.excludeIdeData);
  59124. args: [],
  59125. source: "isInlined\x0a\x09^ true",
  59126. referencedClasses: [],
  59127. //>>excludeEnd("ide");
  59128. pragmas: [],
  59129. messageSends: []
  59130. }, function ($methodClass){ return function (){
  59131. var self=this,$self=this;
  59132. return true;
  59133. }; }),
  59134. $globals.IRInlinedClosure);
  59135. $core.addClass("IRInlinedSend", $globals.IRSend, "Compiler-Inlining");
  59136. //>>excludeStart("ide", pragmas.excludeIdeData);
  59137. $globals.IRInlinedSend.comment="I am the abstract super class of inlined message send instructions.";
  59138. //>>excludeEnd("ide");
  59139. $core.addMethod(
  59140. $core.method({
  59141. selector: "acceptDagVisitor:",
  59142. protocol: "visiting",
  59143. //>>excludeStart("ide", pragmas.excludeIdeData);
  59144. args: ["aVisitor"],
  59145. source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitInlinedSend: self",
  59146. referencedClasses: [],
  59147. //>>excludeEnd("ide");
  59148. pragmas: [],
  59149. messageSends: ["visitInlinedSend:"]
  59150. }, function ($methodClass){ return function (aVisitor){
  59151. var self=this,$self=this;
  59152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59153. return $core.withContext(function($ctx1) {
  59154. //>>excludeEnd("ctx");
  59155. $recv(aVisitor)._visitInlinedSend_(self);
  59156. return self;
  59157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59158. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  59159. //>>excludeEnd("ctx");
  59160. }; }),
  59161. $globals.IRInlinedSend);
  59162. $core.addMethod(
  59163. $core.method({
  59164. selector: "internalVariables",
  59165. protocol: "accessing",
  59166. //>>excludeStart("ide", pragmas.excludeIdeData);
  59167. args: [],
  59168. source: "internalVariables\x0a\x09\x22Answer a collection of internal variables required \x0a\x09to perform the inlining\x22\x0a\x09\x0a\x09^ #()",
  59169. referencedClasses: [],
  59170. //>>excludeEnd("ide");
  59171. pragmas: [],
  59172. messageSends: []
  59173. }, function ($methodClass){ return function (){
  59174. var self=this,$self=this;
  59175. return [];
  59176. }; }),
  59177. $globals.IRInlinedSend);
  59178. $core.addMethod(
  59179. $core.method({
  59180. selector: "isInlined",
  59181. protocol: "testing",
  59182. //>>excludeStart("ide", pragmas.excludeIdeData);
  59183. args: [],
  59184. source: "isInlined\x0a\x09^ true",
  59185. referencedClasses: [],
  59186. //>>excludeEnd("ide");
  59187. pragmas: [],
  59188. messageSends: []
  59189. }, function ($methodClass){ return function (){
  59190. var self=this,$self=this;
  59191. return true;
  59192. }; }),
  59193. $globals.IRInlinedSend);
  59194. $core.addClass("IRInlinedIfFalse", $globals.IRInlinedSend, "Compiler-Inlining");
  59195. //>>excludeStart("ide", pragmas.excludeIdeData);
  59196. $globals.IRInlinedIfFalse.comment="I represent an inlined `#ifFalse:` message send instruction.";
  59197. //>>excludeEnd("ide");
  59198. $core.addMethod(
  59199. $core.method({
  59200. selector: "acceptDagVisitor:",
  59201. protocol: "visiting",
  59202. //>>excludeStart("ide", pragmas.excludeIdeData);
  59203. args: ["aVisitor"],
  59204. source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfFalse: self",
  59205. referencedClasses: [],
  59206. //>>excludeEnd("ide");
  59207. pragmas: [],
  59208. messageSends: ["visitIRInlinedIfFalse:"]
  59209. }, function ($methodClass){ return function (aVisitor){
  59210. var self=this,$self=this;
  59211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59212. return $core.withContext(function($ctx1) {
  59213. //>>excludeEnd("ctx");
  59214. $recv(aVisitor)._visitIRInlinedIfFalse_(self);
  59215. return self;
  59216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59217. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  59218. //>>excludeEnd("ctx");
  59219. }; }),
  59220. $globals.IRInlinedIfFalse);
  59221. $core.addClass("IRInlinedIfNilIfNotNil", $globals.IRInlinedSend, "Compiler-Inlining");
  59222. //>>excludeStart("ide", pragmas.excludeIdeData);
  59223. $globals.IRInlinedIfNilIfNotNil.comment="I represent an inlined `#ifNil:ifNotNil:` message send instruction.";
  59224. //>>excludeEnd("ide");
  59225. $core.addMethod(
  59226. $core.method({
  59227. selector: "acceptDagVisitor:",
  59228. protocol: "visiting",
  59229. //>>excludeStart("ide", pragmas.excludeIdeData);
  59230. args: ["aVisitor"],
  59231. source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfNilIfNotNil: self",
  59232. referencedClasses: [],
  59233. //>>excludeEnd("ide");
  59234. pragmas: [],
  59235. messageSends: ["visitIRInlinedIfNilIfNotNil:"]
  59236. }, function ($methodClass){ return function (aVisitor){
  59237. var self=this,$self=this;
  59238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59239. return $core.withContext(function($ctx1) {
  59240. //>>excludeEnd("ctx");
  59241. $recv(aVisitor)._visitIRInlinedIfNilIfNotNil_(self);
  59242. return self;
  59243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59244. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  59245. //>>excludeEnd("ctx");
  59246. }; }),
  59247. $globals.IRInlinedIfNilIfNotNil);
  59248. $core.addClass("IRInlinedIfTrue", $globals.IRInlinedSend, "Compiler-Inlining");
  59249. //>>excludeStart("ide", pragmas.excludeIdeData);
  59250. $globals.IRInlinedIfTrue.comment="I represent an inlined `#ifTrue:` message send instruction.";
  59251. //>>excludeEnd("ide");
  59252. $core.addMethod(
  59253. $core.method({
  59254. selector: "acceptDagVisitor:",
  59255. protocol: "visiting",
  59256. //>>excludeStart("ide", pragmas.excludeIdeData);
  59257. args: ["aVisitor"],
  59258. source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrue: self",
  59259. referencedClasses: [],
  59260. //>>excludeEnd("ide");
  59261. pragmas: [],
  59262. messageSends: ["visitIRInlinedIfTrue:"]
  59263. }, function ($methodClass){ return function (aVisitor){
  59264. var self=this,$self=this;
  59265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59266. return $core.withContext(function($ctx1) {
  59267. //>>excludeEnd("ctx");
  59268. $recv(aVisitor)._visitIRInlinedIfTrue_(self);
  59269. return self;
  59270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59271. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  59272. //>>excludeEnd("ctx");
  59273. }; }),
  59274. $globals.IRInlinedIfTrue);
  59275. $core.addClass("IRInlinedIfTrueIfFalse", $globals.IRInlinedSend, "Compiler-Inlining");
  59276. //>>excludeStart("ide", pragmas.excludeIdeData);
  59277. $globals.IRInlinedIfTrueIfFalse.comment="I represent an inlined `#ifTrue:ifFalse:` message send instruction.";
  59278. //>>excludeEnd("ide");
  59279. $core.addMethod(
  59280. $core.method({
  59281. selector: "acceptDagVisitor:",
  59282. protocol: "visiting",
  59283. //>>excludeStart("ide", pragmas.excludeIdeData);
  59284. args: ["aVisitor"],
  59285. source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrueIfFalse: self",
  59286. referencedClasses: [],
  59287. //>>excludeEnd("ide");
  59288. pragmas: [],
  59289. messageSends: ["visitIRInlinedIfTrueIfFalse:"]
  59290. }, function ($methodClass){ return function (aVisitor){
  59291. var self=this,$self=this;
  59292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59293. return $core.withContext(function($ctx1) {
  59294. //>>excludeEnd("ctx");
  59295. $recv(aVisitor)._visitIRInlinedIfTrueIfFalse_(self);
  59296. return self;
  59297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59298. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  59299. //>>excludeEnd("ctx");
  59300. }; }),
  59301. $globals.IRInlinedIfTrueIfFalse);
  59302. $core.addClass("IRInlinedSequence", $globals.IRBlockSequence, "Compiler-Inlining");
  59303. //>>excludeStart("ide", pragmas.excludeIdeData);
  59304. $globals.IRInlinedSequence.comment="I represent a (block) sequence inside an inlined closure instruction (instance of `IRInlinedClosure`).";
  59305. //>>excludeEnd("ide");
  59306. $core.addMethod(
  59307. $core.method({
  59308. selector: "acceptDagVisitor:",
  59309. protocol: "visiting",
  59310. //>>excludeStart("ide", pragmas.excludeIdeData);
  59311. args: ["aVisitor"],
  59312. source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedSequence: self",
  59313. referencedClasses: [],
  59314. //>>excludeEnd("ide");
  59315. pragmas: [],
  59316. messageSends: ["visitIRInlinedSequence:"]
  59317. }, function ($methodClass){ return function (aVisitor){
  59318. var self=this,$self=this;
  59319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59320. return $core.withContext(function($ctx1) {
  59321. //>>excludeEnd("ctx");
  59322. $recv(aVisitor)._visitIRInlinedSequence_(self);
  59323. return self;
  59324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59325. }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
  59326. //>>excludeEnd("ctx");
  59327. }; }),
  59328. $globals.IRInlinedSequence);
  59329. $core.addMethod(
  59330. $core.method({
  59331. selector: "isInlined",
  59332. protocol: "testing",
  59333. //>>excludeStart("ide", pragmas.excludeIdeData);
  59334. args: [],
  59335. source: "isInlined\x0a\x09^ true",
  59336. referencedClasses: [],
  59337. //>>excludeEnd("ide");
  59338. pragmas: [],
  59339. messageSends: []
  59340. }, function ($methodClass){ return function (){
  59341. var self=this,$self=this;
  59342. return true;
  59343. }; }),
  59344. $globals.IRInlinedSequence);
  59345. $core.addClass("IRInliner", $globals.IRVisitor, "Compiler-Inlining");
  59346. //>>excludeStart("ide", pragmas.excludeIdeData);
  59347. $globals.IRInliner.comment="I visit an IR tree, inlining message sends and block closures.\x0a\x0aMessage selectors that can be inlined are answered by `IRSendInliner >> #inlinedSelectors`";
  59348. //>>excludeEnd("ide");
  59349. $core.addMethod(
  59350. $core.method({
  59351. selector: "assignmentInliner",
  59352. protocol: "factory",
  59353. //>>excludeStart("ide", pragmas.excludeIdeData);
  59354. args: [],
  59355. source: "assignmentInliner\x0a\x09^ IRAssignmentInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
  59356. referencedClasses: ["IRAssignmentInliner"],
  59357. //>>excludeEnd("ide");
  59358. pragmas: [],
  59359. messageSends: ["translator:", "new", "yourself"]
  59360. }, function ($methodClass){ return function (){
  59361. var self=this,$self=this;
  59362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59363. return $core.withContext(function($ctx1) {
  59364. //>>excludeEnd("ctx");
  59365. var $1;
  59366. $1=$recv($globals.IRAssignmentInliner)._new();
  59367. $recv($1)._translator_(self);
  59368. return $recv($1)._yourself();
  59369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59370. }, function($ctx1) {$ctx1.fill(self,"assignmentInliner",{})});
  59371. //>>excludeEnd("ctx");
  59372. }; }),
  59373. $globals.IRInliner);
  59374. $core.addMethod(
  59375. $core.method({
  59376. selector: "flattenedReturn:",
  59377. protocol: "visiting",
  59378. //>>excludeStart("ide", pragmas.excludeIdeData);
  59379. args: ["anIRNonLocalReturn"],
  59380. source: "flattenedReturn: anIRNonLocalReturn\x0a\x09| localReturn |\x0a\x09localReturn := IRReturn new\x0a\x09\x09scope: anIRNonLocalReturn scope;\x0a\x09\x09yourself.\x0a\x09anIRNonLocalReturn dagChildren do: [ :each | localReturn add: each ].\x0a\x09^ localReturn",
  59381. referencedClasses: ["IRReturn"],
  59382. //>>excludeEnd("ide");
  59383. pragmas: [],
  59384. messageSends: ["scope:", "new", "scope", "yourself", "do:", "dagChildren", "add:"]
  59385. }, function ($methodClass){ return function (anIRNonLocalReturn){
  59386. var self=this,$self=this;
  59387. var localReturn;
  59388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59389. return $core.withContext(function($ctx1) {
  59390. //>>excludeEnd("ctx");
  59391. var $1;
  59392. $1=$recv($globals.IRReturn)._new();
  59393. $recv($1)._scope_($recv(anIRNonLocalReturn)._scope());
  59394. localReturn=$recv($1)._yourself();
  59395. $recv($recv(anIRNonLocalReturn)._dagChildren())._do_((function(each){
  59396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59397. return $core.withContext(function($ctx2) {
  59398. //>>excludeEnd("ctx");
  59399. return $recv(localReturn)._add_(each);
  59400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59401. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  59402. //>>excludeEnd("ctx");
  59403. }));
  59404. return localReturn;
  59405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59406. }, function($ctx1) {$ctx1.fill(self,"flattenedReturn:",{anIRNonLocalReturn:anIRNonLocalReturn,localReturn:localReturn})});
  59407. //>>excludeEnd("ctx");
  59408. }; }),
  59409. $globals.IRInliner);
  59410. $core.addMethod(
  59411. $core.method({
  59412. selector: "nonLocalReturnInliner",
  59413. protocol: "factory",
  59414. //>>excludeStart("ide", pragmas.excludeIdeData);
  59415. args: [],
  59416. source: "nonLocalReturnInliner\x0a\x09^ IRNonLocalReturnInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
  59417. referencedClasses: ["IRNonLocalReturnInliner"],
  59418. //>>excludeEnd("ide");
  59419. pragmas: [],
  59420. messageSends: ["translator:", "new", "yourself"]
  59421. }, function ($methodClass){ return function (){
  59422. var self=this,$self=this;
  59423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59424. return $core.withContext(function($ctx1) {
  59425. //>>excludeEnd("ctx");
  59426. var $1;
  59427. $1=$recv($globals.IRNonLocalReturnInliner)._new();
  59428. $recv($1)._translator_(self);
  59429. return $recv($1)._yourself();
  59430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59431. }, function($ctx1) {$ctx1.fill(self,"nonLocalReturnInliner",{})});
  59432. //>>excludeEnd("ctx");
  59433. }; }),
  59434. $globals.IRInliner);
  59435. $core.addMethod(
  59436. $core.method({
  59437. selector: "returnInliner",
  59438. protocol: "factory",
  59439. //>>excludeStart("ide", pragmas.excludeIdeData);
  59440. args: [],
  59441. source: "returnInliner\x0a\x09^ IRReturnInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
  59442. referencedClasses: ["IRReturnInliner"],
  59443. //>>excludeEnd("ide");
  59444. pragmas: [],
  59445. messageSends: ["translator:", "new", "yourself"]
  59446. }, function ($methodClass){ return function (){
  59447. var self=this,$self=this;
  59448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59449. return $core.withContext(function($ctx1) {
  59450. //>>excludeEnd("ctx");
  59451. var $1;
  59452. $1=$recv($globals.IRReturnInliner)._new();
  59453. $recv($1)._translator_(self);
  59454. return $recv($1)._yourself();
  59455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59456. }, function($ctx1) {$ctx1.fill(self,"returnInliner",{})});
  59457. //>>excludeEnd("ctx");
  59458. }; }),
  59459. $globals.IRInliner);
  59460. $core.addMethod(
  59461. $core.method({
  59462. selector: "sendInliner",
  59463. protocol: "factory",
  59464. //>>excludeStart("ide", pragmas.excludeIdeData);
  59465. args: [],
  59466. source: "sendInliner\x0a\x09^ IRSendInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
  59467. referencedClasses: ["IRSendInliner"],
  59468. //>>excludeEnd("ide");
  59469. pragmas: [],
  59470. messageSends: ["translator:", "new", "yourself"]
  59471. }, function ($methodClass){ return function (){
  59472. var self=this,$self=this;
  59473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59474. return $core.withContext(function($ctx1) {
  59475. //>>excludeEnd("ctx");
  59476. var $1;
  59477. $1=$recv($globals.IRSendInliner)._new();
  59478. $recv($1)._translator_(self);
  59479. return $recv($1)._yourself();
  59480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59481. }, function($ctx1) {$ctx1.fill(self,"sendInliner",{})});
  59482. //>>excludeEnd("ctx");
  59483. }; }),
  59484. $globals.IRInliner);
  59485. $core.addMethod(
  59486. $core.method({
  59487. selector: "shouldInlineAssignment:",
  59488. protocol: "testing",
  59489. //>>excludeStart("ide", pragmas.excludeIdeData);
  59490. args: ["anIRAssignment"],
  59491. source: "shouldInlineAssignment: anIRAssignment\x0a\x09^ anIRAssignment isInlined not and: [\x0a\x09\x09anIRAssignment right isSend and: [\x0a\x09\x09\x09self shouldInlineSend: anIRAssignment right ]]",
  59492. referencedClasses: [],
  59493. //>>excludeEnd("ide");
  59494. pragmas: [],
  59495. messageSends: ["and:", "not", "isInlined", "isSend", "right", "shouldInlineSend:"]
  59496. }, function ($methodClass){ return function (anIRAssignment){
  59497. var self=this,$self=this;
  59498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59499. return $core.withContext(function($ctx1) {
  59500. //>>excludeEnd("ctx");
  59501. if($core.assert($recv($recv(anIRAssignment)._isInlined())._not())){
  59502. if($core.assert($recv([$recv(anIRAssignment)._right()
  59503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59504. ,$ctx1.sendIdx["right"]=1
  59505. //>>excludeEnd("ctx");
  59506. ][0])._isSend())){
  59507. return $self._shouldInlineSend_($recv(anIRAssignment)._right());
  59508. } else {
  59509. return false;
  59510. }
  59511. } else {
  59512. return false;
  59513. }
  59514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59515. }, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:",{anIRAssignment:anIRAssignment})});
  59516. //>>excludeEnd("ctx");
  59517. }; }),
  59518. $globals.IRInliner);
  59519. $core.addMethod(
  59520. $core.method({
  59521. selector: "shouldInlineReturn:",
  59522. protocol: "testing",
  59523. //>>excludeStart("ide", pragmas.excludeIdeData);
  59524. args: ["anIRReturn"],
  59525. source: "shouldInlineReturn: anIRReturn\x0a\x09^ anIRReturn isInlined not and: [\x0a\x09\x09anIRReturn expression isSend and: [\x0a\x09\x09\x09self shouldInlineSend: anIRReturn expression ]]",
  59526. referencedClasses: [],
  59527. //>>excludeEnd("ide");
  59528. pragmas: [],
  59529. messageSends: ["and:", "not", "isInlined", "isSend", "expression", "shouldInlineSend:"]
  59530. }, function ($methodClass){ return function (anIRReturn){
  59531. var self=this,$self=this;
  59532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59533. return $core.withContext(function($ctx1) {
  59534. //>>excludeEnd("ctx");
  59535. if($core.assert($recv($recv(anIRReturn)._isInlined())._not())){
  59536. if($core.assert($recv([$recv(anIRReturn)._expression()
  59537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59538. ,$ctx1.sendIdx["expression"]=1
  59539. //>>excludeEnd("ctx");
  59540. ][0])._isSend())){
  59541. return $self._shouldInlineSend_($recv(anIRReturn)._expression());
  59542. } else {
  59543. return false;
  59544. }
  59545. } else {
  59546. return false;
  59547. }
  59548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59549. }, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:",{anIRReturn:anIRReturn})});
  59550. //>>excludeEnd("ctx");
  59551. }; }),
  59552. $globals.IRInliner);
  59553. $core.addMethod(
  59554. $core.method({
  59555. selector: "shouldInlineSend:",
  59556. protocol: "testing",
  59557. //>>excludeStart("ide", pragmas.excludeIdeData);
  59558. args: ["anIRSend"],
  59559. source: "shouldInlineSend: anIRSend\x0a\x09^ anIRSend isInlined not and: [\x0a\x09\x09IRSendInliner shouldInline: anIRSend ]",
  59560. referencedClasses: ["IRSendInliner"],
  59561. //>>excludeEnd("ide");
  59562. pragmas: [],
  59563. messageSends: ["and:", "not", "isInlined", "shouldInline:"]
  59564. }, function ($methodClass){ return function (anIRSend){
  59565. var self=this,$self=this;
  59566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59567. return $core.withContext(function($ctx1) {
  59568. //>>excludeEnd("ctx");
  59569. if($core.assert($recv($recv(anIRSend)._isInlined())._not())){
  59570. return $recv($globals.IRSendInliner)._shouldInline_(anIRSend);
  59571. } else {
  59572. return false;
  59573. }
  59574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59575. }, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:",{anIRSend:anIRSend})});
  59576. //>>excludeEnd("ctx");
  59577. }; }),
  59578. $globals.IRInliner);
  59579. $core.addMethod(
  59580. $core.method({
  59581. selector: "visitIRAssignment:",
  59582. protocol: "visiting",
  59583. //>>excludeStart("ide", pragmas.excludeIdeData);
  59584. args: ["anIRAssignment"],
  59585. source: "visitIRAssignment: anIRAssignment\x0a\x09^ (self shouldInlineAssignment: anIRAssignment)\x0a\x09\x09ifTrue: [ self assignmentInliner inlineAssignment: anIRAssignment ]\x0a\x09\x09ifFalse: [ super visitIRAssignment: anIRAssignment ]",
  59586. referencedClasses: [],
  59587. //>>excludeEnd("ide");
  59588. pragmas: [],
  59589. messageSends: ["ifTrue:ifFalse:", "shouldInlineAssignment:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:"]
  59590. }, function ($methodClass){ return function (anIRAssignment){
  59591. var self=this,$self=this;
  59592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59593. return $core.withContext(function($ctx1) {
  59594. //>>excludeEnd("ctx");
  59595. if($core.assert($self._shouldInlineAssignment_(anIRAssignment))){
  59596. return $recv($self._assignmentInliner())._inlineAssignment_(anIRAssignment);
  59597. } else {
  59598. return [(
  59599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59600. $ctx1.supercall = true,
  59601. //>>excludeEnd("ctx");
  59602. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRAssignment_.call($self,anIRAssignment))
  59603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59604. ,$ctx1.supercall = false
  59605. //>>excludeEnd("ctx");
  59606. ][0];
  59607. }
  59608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59609. }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment})});
  59610. //>>excludeEnd("ctx");
  59611. }; }),
  59612. $globals.IRInliner);
  59613. $core.addMethod(
  59614. $core.method({
  59615. selector: "visitIRNonLocalReturn:",
  59616. protocol: "visiting",
  59617. //>>excludeStart("ide", pragmas.excludeIdeData);
  59618. args: ["anIRNonLocalReturn"],
  59619. source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09anIRNonLocalReturn scope canFlattenNonLocalReturns ifTrue: [\x0a\x09\x09| localReturn |\x0a\x09\x09anIRNonLocalReturn scope methodScope removeNonLocalReturn: anIRNonLocalReturn scope.\x0a\x09\x09localReturn := self flattenedReturn: anIRNonLocalReturn.\x0a\x09\x09anIRNonLocalReturn replaceWith: localReturn.\x0a\x09\x09^ self visitIRReturn: localReturn ].\x0a\x09^ (self shouldInlineReturn: anIRNonLocalReturn)\x0a\x09\x09ifTrue: [ self nonLocalReturnInliner inlineReturn: anIRNonLocalReturn ]\x0a\x09\x09ifFalse: [ super visitIRNonLocalReturn: anIRNonLocalReturn ]",
  59620. referencedClasses: [],
  59621. //>>excludeEnd("ide");
  59622. pragmas: [],
  59623. messageSends: ["ifTrue:", "canFlattenNonLocalReturns", "scope", "removeNonLocalReturn:", "methodScope", "flattenedReturn:", "replaceWith:", "visitIRReturn:", "ifTrue:ifFalse:", "shouldInlineReturn:", "inlineReturn:", "nonLocalReturnInliner", "visitIRNonLocalReturn:"]
  59624. }, function ($methodClass){ return function (anIRNonLocalReturn){
  59625. var self=this,$self=this;
  59626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59627. return $core.withContext(function($ctx1) {
  59628. //>>excludeEnd("ctx");
  59629. if($core.assert($recv([$recv(anIRNonLocalReturn)._scope()
  59630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59631. ,$ctx1.sendIdx["scope"]=1
  59632. //>>excludeEnd("ctx");
  59633. ][0])._canFlattenNonLocalReturns())){
  59634. var localReturn;
  59635. $recv($recv([$recv(anIRNonLocalReturn)._scope()
  59636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59637. ,$ctx1.sendIdx["scope"]=2
  59638. //>>excludeEnd("ctx");
  59639. ][0])._methodScope())._removeNonLocalReturn_($recv(anIRNonLocalReturn)._scope());
  59640. localReturn=$self._flattenedReturn_(anIRNonLocalReturn);
  59641. $recv(anIRNonLocalReturn)._replaceWith_(localReturn);
  59642. return $self._visitIRReturn_(localReturn);
  59643. }
  59644. if($core.assert($self._shouldInlineReturn_(anIRNonLocalReturn))){
  59645. return $recv($self._nonLocalReturnInliner())._inlineReturn_(anIRNonLocalReturn);
  59646. } else {
  59647. return [(
  59648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59649. $ctx1.supercall = true,
  59650. //>>excludeEnd("ctx");
  59651. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRNonLocalReturn_.call($self,anIRNonLocalReturn))
  59652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59653. ,$ctx1.supercall = false
  59654. //>>excludeEnd("ctx");
  59655. ][0];
  59656. }
  59657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59658. }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn})});
  59659. //>>excludeEnd("ctx");
  59660. }; }),
  59661. $globals.IRInliner);
  59662. $core.addMethod(
  59663. $core.method({
  59664. selector: "visitIRReturn:",
  59665. protocol: "visiting",
  59666. //>>excludeStart("ide", pragmas.excludeIdeData);
  59667. args: ["anIRReturn"],
  59668. source: "visitIRReturn: anIRReturn\x0a\x09^ (self shouldInlineReturn: anIRReturn)\x0a\x09\x09ifTrue: [ self returnInliner inlineReturn: anIRReturn ]\x0a\x09\x09ifFalse: [ super visitIRReturn: anIRReturn ]",
  59669. referencedClasses: [],
  59670. //>>excludeEnd("ide");
  59671. pragmas: [],
  59672. messageSends: ["ifTrue:ifFalse:", "shouldInlineReturn:", "inlineReturn:", "returnInliner", "visitIRReturn:"]
  59673. }, function ($methodClass){ return function (anIRReturn){
  59674. var self=this,$self=this;
  59675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59676. return $core.withContext(function($ctx1) {
  59677. //>>excludeEnd("ctx");
  59678. if($core.assert($self._shouldInlineReturn_(anIRReturn))){
  59679. return $recv($self._returnInliner())._inlineReturn_(anIRReturn);
  59680. } else {
  59681. return [(
  59682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59683. $ctx1.supercall = true,
  59684. //>>excludeEnd("ctx");
  59685. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRReturn_.call($self,anIRReturn))
  59686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59687. ,$ctx1.supercall = false
  59688. //>>excludeEnd("ctx");
  59689. ][0];
  59690. }
  59691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59692. }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn})});
  59693. //>>excludeEnd("ctx");
  59694. }; }),
  59695. $globals.IRInliner);
  59696. $core.addMethod(
  59697. $core.method({
  59698. selector: "visitIRSend:",
  59699. protocol: "visiting",
  59700. //>>excludeStart("ide", pragmas.excludeIdeData);
  59701. args: ["anIRSend"],
  59702. source: "visitIRSend: anIRSend\x0a\x09^ (self shouldInlineSend: anIRSend)\x0a\x09\x09ifTrue: [ self sendInliner inlineSend: anIRSend ]\x0a\x09\x09ifFalse: [ super visitIRSend: anIRSend ]",
  59703. referencedClasses: [],
  59704. //>>excludeEnd("ide");
  59705. pragmas: [],
  59706. messageSends: ["ifTrue:ifFalse:", "shouldInlineSend:", "inlineSend:", "sendInliner", "visitIRSend:"]
  59707. }, function ($methodClass){ return function (anIRSend){
  59708. var self=this,$self=this;
  59709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59710. return $core.withContext(function($ctx1) {
  59711. //>>excludeEnd("ctx");
  59712. if($core.assert($self._shouldInlineSend_(anIRSend))){
  59713. return $recv($self._sendInliner())._inlineSend_(anIRSend);
  59714. } else {
  59715. return [(
  59716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59717. $ctx1.supercall = true,
  59718. //>>excludeEnd("ctx");
  59719. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRSend_.call($self,anIRSend))
  59720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59721. ,$ctx1.supercall = false
  59722. //>>excludeEnd("ctx");
  59723. ][0];
  59724. }
  59725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59726. }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend})});
  59727. //>>excludeEnd("ctx");
  59728. }; }),
  59729. $globals.IRInliner);
  59730. $core.addClass("IRInliningJSTranslator", $globals.IRJSTranslator, "Compiler-Inlining");
  59731. //>>excludeStart("ide", pragmas.excludeIdeData);
  59732. $globals.IRInliningJSTranslator.comment="I am a specialized JavaScript translator able to write inlined IR instructions to JavaScript stream (`JSStream` instance).";
  59733. //>>excludeEnd("ide");
  59734. $core.addMethod(
  59735. $core.method({
  59736. selector: "visitIRInlinedClosure:",
  59737. protocol: "visiting",
  59738. //>>excludeStart("ide", pragmas.excludeIdeData);
  59739. args: ["anIRInlinedClosure"],
  59740. source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09self stream nextPutVars: (anIRInlinedClosure tempDeclarations collect: [ :each |\x0a\x09\x09each name asVariableName ]).\x0a\x09self visitAllChildren: anIRInlinedClosure",
  59741. referencedClasses: [],
  59742. //>>excludeEnd("ide");
  59743. pragmas: [],
  59744. messageSends: ["nextPutVars:", "stream", "collect:", "tempDeclarations", "asVariableName", "name", "visitAllChildren:"]
  59745. }, function ($methodClass){ return function (anIRInlinedClosure){
  59746. var self=this,$self=this;
  59747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59748. return $core.withContext(function($ctx1) {
  59749. //>>excludeEnd("ctx");
  59750. $recv($self._stream())._nextPutVars_($recv($recv(anIRInlinedClosure)._tempDeclarations())._collect_((function(each){
  59751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59752. return $core.withContext(function($ctx2) {
  59753. //>>excludeEnd("ctx");
  59754. return $recv($recv(each)._name())._asVariableName();
  59755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59756. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  59757. //>>excludeEnd("ctx");
  59758. })));
  59759. $self._visitAllChildren_(anIRInlinedClosure);
  59760. return self;
  59761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59762. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure})});
  59763. //>>excludeEnd("ctx");
  59764. }; }),
  59765. $globals.IRInliningJSTranslator);
  59766. $core.addMethod(
  59767. $core.method({
  59768. selector: "visitIRInlinedIfFalse:",
  59769. protocol: "visiting",
  59770. //>>excludeStart("ide", pragmas.excludeIdeData);
  59771. args: ["anIRInlinedIfFalse"],
  59772. source: "visitIRInlinedIfFalse: anIRInlinedIfFalse\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '!$core.assert('.\x0a\x09\x09self visit: anIRInlinedIfFalse dagChildren first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfFalse dagChildren last ]",
  59773. referencedClasses: [],
  59774. //>>excludeEnd("ide");
  59775. pragmas: [],
  59776. messageSends: ["nextPutIf:then:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "last"]
  59777. }, function ($methodClass){ return function (anIRInlinedIfFalse){
  59778. var self=this,$self=this;
  59779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59780. return $core.withContext(function($ctx1) {
  59781. //>>excludeEnd("ctx");
  59782. $recv([$self._stream()
  59783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59784. ,$ctx1.sendIdx["stream"]=1
  59785. //>>excludeEnd("ctx");
  59786. ][0])._nextPutIf_then_((function(){
  59787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59788. return $core.withContext(function($ctx2) {
  59789. //>>excludeEnd("ctx");
  59790. [$recv([$self._stream()
  59791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59792. ,$ctx2.sendIdx["stream"]=2
  59793. //>>excludeEnd("ctx");
  59794. ][0])._nextPutAll_("!$core.assert(")
  59795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59796. ,$ctx2.sendIdx["nextPutAll:"]=1
  59797. //>>excludeEnd("ctx");
  59798. ][0];
  59799. [$self._visit_($recv([$recv(anIRInlinedIfFalse)._dagChildren()
  59800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59801. ,$ctx2.sendIdx["dagChildren"]=1
  59802. //>>excludeEnd("ctx");
  59803. ][0])._first())
  59804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59805. ,$ctx2.sendIdx["visit:"]=1
  59806. //>>excludeEnd("ctx");
  59807. ][0];
  59808. return $recv($self._stream())._nextPutAll_(")");
  59809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59810. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59811. //>>excludeEnd("ctx");
  59812. }),(function(){
  59813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59814. return $core.withContext(function($ctx2) {
  59815. //>>excludeEnd("ctx");
  59816. return $self._visit_($recv($recv(anIRInlinedIfFalse)._dagChildren())._last());
  59817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59818. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  59819. //>>excludeEnd("ctx");
  59820. }));
  59821. return self;
  59822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59823. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:",{anIRInlinedIfFalse:anIRInlinedIfFalse})});
  59824. //>>excludeEnd("ctx");
  59825. }; }),
  59826. $globals.IRInliningJSTranslator);
  59827. $core.addMethod(
  59828. $core.method({
  59829. selector: "visitIRInlinedIfNilIfNotNil:",
  59830. protocol: "visiting",
  59831. //>>excludeStart("ide", pragmas.excludeIdeData);
  59832. args: ["anIRInlinedIfNilIfNotNil"],
  59833. source: "visitIRInlinedIfNilIfNotNil: anIRInlinedIfNilIfNotNil\x0a\x09self stream\x0a\x09\x09nextPutIf: [\x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil dagChildren first.\x0a\x09\x09\x09self stream nextPutAll: ' == null || '.\x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil dagChildren first.\x0a\x09\x09\x09self stream nextPutAll: '.a$nil' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfNilIfNotNil dagChildren second ]\x0a\x09\x09else: [ self visit: anIRInlinedIfNilIfNotNil dagChildren third ]",
  59834. referencedClasses: [],
  59835. //>>excludeEnd("ide");
  59836. pragmas: [],
  59837. messageSends: ["nextPutIf:then:else:", "stream", "visit:", "first", "dagChildren", "nextPutAll:", "second", "third"]
  59838. }, function ($methodClass){ return function (anIRInlinedIfNilIfNotNil){
  59839. var self=this,$self=this;
  59840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59841. return $core.withContext(function($ctx1) {
  59842. //>>excludeEnd("ctx");
  59843. $recv([$self._stream()
  59844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59845. ,$ctx1.sendIdx["stream"]=1
  59846. //>>excludeEnd("ctx");
  59847. ][0])._nextPutIf_then_else_((function(){
  59848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59849. return $core.withContext(function($ctx2) {
  59850. //>>excludeEnd("ctx");
  59851. [$self._visit_([$recv([$recv(anIRInlinedIfNilIfNotNil)._dagChildren()
  59852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59853. ,$ctx2.sendIdx["dagChildren"]=1
  59854. //>>excludeEnd("ctx");
  59855. ][0])._first()
  59856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59857. ,$ctx2.sendIdx["first"]=1
  59858. //>>excludeEnd("ctx");
  59859. ][0])
  59860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59861. ,$ctx2.sendIdx["visit:"]=1
  59862. //>>excludeEnd("ctx");
  59863. ][0];
  59864. [$recv([$self._stream()
  59865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59866. ,$ctx2.sendIdx["stream"]=2
  59867. //>>excludeEnd("ctx");
  59868. ][0])._nextPutAll_(" == null || ")
  59869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59870. ,$ctx2.sendIdx["nextPutAll:"]=1
  59871. //>>excludeEnd("ctx");
  59872. ][0];
  59873. [$self._visit_($recv([$recv(anIRInlinedIfNilIfNotNil)._dagChildren()
  59874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59875. ,$ctx2.sendIdx["dagChildren"]=2
  59876. //>>excludeEnd("ctx");
  59877. ][0])._first())
  59878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59879. ,$ctx2.sendIdx["visit:"]=2
  59880. //>>excludeEnd("ctx");
  59881. ][0];
  59882. return $recv($self._stream())._nextPutAll_(".a$nil");
  59883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59884. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59885. //>>excludeEnd("ctx");
  59886. }),(function(){
  59887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59888. return $core.withContext(function($ctx2) {
  59889. //>>excludeEnd("ctx");
  59890. return [$self._visit_($recv([$recv(anIRInlinedIfNilIfNotNil)._dagChildren()
  59891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59892. ,$ctx2.sendIdx["dagChildren"]=3
  59893. //>>excludeEnd("ctx");
  59894. ][0])._second())
  59895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59896. ,$ctx2.sendIdx["visit:"]=3
  59897. //>>excludeEnd("ctx");
  59898. ][0];
  59899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59900. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  59901. //>>excludeEnd("ctx");
  59902. }),(function(){
  59903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59904. return $core.withContext(function($ctx2) {
  59905. //>>excludeEnd("ctx");
  59906. return $self._visit_($recv($recv(anIRInlinedIfNilIfNotNil)._dagChildren())._third());
  59907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59908. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  59909. //>>excludeEnd("ctx");
  59910. }));
  59911. return self;
  59912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59913. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:",{anIRInlinedIfNilIfNotNil:anIRInlinedIfNilIfNotNil})});
  59914. //>>excludeEnd("ctx");
  59915. }; }),
  59916. $globals.IRInliningJSTranslator);
  59917. $core.addMethod(
  59918. $core.method({
  59919. selector: "visitIRInlinedIfTrue:",
  59920. protocol: "visiting",
  59921. //>>excludeStart("ide", pragmas.excludeIdeData);
  59922. args: ["anIRInlinedIfTrue"],
  59923. source: "visitIRInlinedIfTrue: anIRInlinedIfTrue\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '$core.assert('.\x0a\x09\x09self visit: anIRInlinedIfTrue dagChildren first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfTrue dagChildren last ]",
  59924. referencedClasses: [],
  59925. //>>excludeEnd("ide");
  59926. pragmas: [],
  59927. messageSends: ["nextPutIf:then:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "last"]
  59928. }, function ($methodClass){ return function (anIRInlinedIfTrue){
  59929. var self=this,$self=this;
  59930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59931. return $core.withContext(function($ctx1) {
  59932. //>>excludeEnd("ctx");
  59933. $recv([$self._stream()
  59934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59935. ,$ctx1.sendIdx["stream"]=1
  59936. //>>excludeEnd("ctx");
  59937. ][0])._nextPutIf_then_((function(){
  59938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59939. return $core.withContext(function($ctx2) {
  59940. //>>excludeEnd("ctx");
  59941. [$recv([$self._stream()
  59942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59943. ,$ctx2.sendIdx["stream"]=2
  59944. //>>excludeEnd("ctx");
  59945. ][0])._nextPutAll_("$core.assert(")
  59946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59947. ,$ctx2.sendIdx["nextPutAll:"]=1
  59948. //>>excludeEnd("ctx");
  59949. ][0];
  59950. [$self._visit_($recv([$recv(anIRInlinedIfTrue)._dagChildren()
  59951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59952. ,$ctx2.sendIdx["dagChildren"]=1
  59953. //>>excludeEnd("ctx");
  59954. ][0])._first())
  59955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59956. ,$ctx2.sendIdx["visit:"]=1
  59957. //>>excludeEnd("ctx");
  59958. ][0];
  59959. return $recv($self._stream())._nextPutAll_(")");
  59960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59961. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59962. //>>excludeEnd("ctx");
  59963. }),(function(){
  59964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59965. return $core.withContext(function($ctx2) {
  59966. //>>excludeEnd("ctx");
  59967. return $self._visit_($recv($recv(anIRInlinedIfTrue)._dagChildren())._last());
  59968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59969. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  59970. //>>excludeEnd("ctx");
  59971. }));
  59972. return self;
  59973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59974. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:",{anIRInlinedIfTrue:anIRInlinedIfTrue})});
  59975. //>>excludeEnd("ctx");
  59976. }; }),
  59977. $globals.IRInliningJSTranslator);
  59978. $core.addMethod(
  59979. $core.method({
  59980. selector: "visitIRInlinedIfTrueIfFalse:",
  59981. protocol: "visiting",
  59982. //>>excludeStart("ide", pragmas.excludeIdeData);
  59983. args: ["anIRInlinedIfTrueIfFalse"],
  59984. source: "visitIRInlinedIfTrueIfFalse: anIRInlinedIfTrueIfFalse\x0a\x09self stream\x0a\x09\x09nextPutIf: [\x0a\x09\x09\x09self stream nextPutAll: '$core.assert('.\x0a\x09\x09\x09self visit: anIRInlinedIfTrueIfFalse dagChildren first.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfTrueIfFalse dagChildren second ]\x0a\x09\x09else: [ self visit: anIRInlinedIfTrueIfFalse dagChildren third ]",
  59985. referencedClasses: [],
  59986. //>>excludeEnd("ide");
  59987. pragmas: [],
  59988. messageSends: ["nextPutIf:then:else:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "second", "third"]
  59989. }, function ($methodClass){ return function (anIRInlinedIfTrueIfFalse){
  59990. var self=this,$self=this;
  59991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59992. return $core.withContext(function($ctx1) {
  59993. //>>excludeEnd("ctx");
  59994. $recv([$self._stream()
  59995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59996. ,$ctx1.sendIdx["stream"]=1
  59997. //>>excludeEnd("ctx");
  59998. ][0])._nextPutIf_then_else_((function(){
  59999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60000. return $core.withContext(function($ctx2) {
  60001. //>>excludeEnd("ctx");
  60002. [$recv([$self._stream()
  60003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60004. ,$ctx2.sendIdx["stream"]=2
  60005. //>>excludeEnd("ctx");
  60006. ][0])._nextPutAll_("$core.assert(")
  60007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60008. ,$ctx2.sendIdx["nextPutAll:"]=1
  60009. //>>excludeEnd("ctx");
  60010. ][0];
  60011. [$self._visit_($recv([$recv(anIRInlinedIfTrueIfFalse)._dagChildren()
  60012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60013. ,$ctx2.sendIdx["dagChildren"]=1
  60014. //>>excludeEnd("ctx");
  60015. ][0])._first())
  60016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60017. ,$ctx2.sendIdx["visit:"]=1
  60018. //>>excludeEnd("ctx");
  60019. ][0];
  60020. return $recv($self._stream())._nextPutAll_(")");
  60021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60022. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  60023. //>>excludeEnd("ctx");
  60024. }),(function(){
  60025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60026. return $core.withContext(function($ctx2) {
  60027. //>>excludeEnd("ctx");
  60028. return [$self._visit_($recv([$recv(anIRInlinedIfTrueIfFalse)._dagChildren()
  60029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60030. ,$ctx2.sendIdx["dagChildren"]=2
  60031. //>>excludeEnd("ctx");
  60032. ][0])._second())
  60033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60034. ,$ctx2.sendIdx["visit:"]=2
  60035. //>>excludeEnd("ctx");
  60036. ][0];
  60037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60038. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  60039. //>>excludeEnd("ctx");
  60040. }),(function(){
  60041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60042. return $core.withContext(function($ctx2) {
  60043. //>>excludeEnd("ctx");
  60044. return $self._visit_($recv($recv(anIRInlinedIfTrueIfFalse)._dagChildren())._third());
  60045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60046. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  60047. //>>excludeEnd("ctx");
  60048. }));
  60049. return self;
  60050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60051. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:",{anIRInlinedIfTrueIfFalse:anIRInlinedIfTrueIfFalse})});
  60052. //>>excludeEnd("ctx");
  60053. }; }),
  60054. $globals.IRInliningJSTranslator);
  60055. $core.addClass("IRSendInliner", $globals.Object, "Compiler-Inlining");
  60056. $core.setSlots($globals.IRSendInliner, ["send", "translator"]);
  60057. //>>excludeStart("ide", pragmas.excludeIdeData);
  60058. $globals.IRSendInliner.comment="I inline some message sends and block closure arguments. I heavily rely on #perform: to dispatch inlining methods.";
  60059. //>>excludeEnd("ide");
  60060. $core.addMethod(
  60061. $core.method({
  60062. selector: "and:",
  60063. protocol: "inlining",
  60064. //>>excludeStart("ide", pragmas.excludeIdeData);
  60065. args: ["anIRInstruction"],
  60066. source: "and: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfTrueIfFalse new\x0a\x09\x09withBlock: anIRInstruction\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: (IRValue new value: false; yourself);\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)",
  60067. referencedClasses: ["IRInlinedIfTrueIfFalse", "IRClosure", "IRBlockSequence", "IRValue"],
  60068. //>>excludeEnd("ide");
  60069. pragmas: [],
  60070. messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "value:", "yourself"]
  60071. }, function ($methodClass){ return function (anIRInstruction){
  60072. var self=this,$self=this;
  60073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60074. return $core.withContext(function($ctx1) {
  60075. //>>excludeEnd("ctx");
  60076. var $1,$2,$3,$4;
  60077. $self._mustBeNiladicClosure_(anIRInstruction);
  60078. $1=[$recv($globals.IRInlinedIfTrueIfFalse)._new()
  60079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60080. ,$ctx1.sendIdx["new"]=1
  60081. //>>excludeEnd("ctx");
  60082. ][0];
  60083. $2=[$recv($globals.IRClosure)._new()
  60084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60085. ,$ctx1.sendIdx["new"]=2
  60086. //>>excludeEnd("ctx");
  60087. ][0];
  60088. $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
  60089. $3=[$recv($globals.IRBlockSequence)._new()
  60090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60091. ,$ctx1.sendIdx["new"]=3
  60092. //>>excludeEnd("ctx");
  60093. ][0];
  60094. $4=$recv($globals.IRValue)._new();
  60095. $recv($4)._value_(false);
  60096. $recv($3)._add_([$recv($4)._yourself()
  60097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60098. ,$ctx1.sendIdx["yourself"]=1
  60099. //>>excludeEnd("ctx");
  60100. ][0]);
  60101. [$recv($2)._add_([$recv($3)._yourself()
  60102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60103. ,$ctx1.sendIdx["yourself"]=2
  60104. //>>excludeEnd("ctx");
  60105. ][0])
  60106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60107. ,$ctx1.sendIdx["add:"]=1
  60108. //>>excludeEnd("ctx");
  60109. ][0];
  60110. return $self._inlinedSend_withBlock_withBlock_($1,anIRInstruction,$recv($2)._yourself());
  60111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60112. }, function($ctx1) {$ctx1.fill(self,"and:",{anIRInstruction:anIRInstruction})});
  60113. //>>excludeEnd("ctx");
  60114. }; }),
  60115. $globals.IRSendInliner);
  60116. $core.addMethod(
  60117. $core.method({
  60118. selector: "ifFalse:",
  60119. protocol: "inlining",
  60120. //>>excludeStart("ide", pragmas.excludeIdeData);
  60121. args: ["anIRInstruction"],
  60122. source: "ifFalse: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfFalse new withBlock: anIRInstruction",
  60123. referencedClasses: ["IRInlinedIfFalse"],
  60124. //>>excludeEnd("ide");
  60125. pragmas: [],
  60126. messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:", "new"]
  60127. }, function ($methodClass){ return function (anIRInstruction){
  60128. var self=this,$self=this;
  60129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60130. return $core.withContext(function($ctx1) {
  60131. //>>excludeEnd("ctx");
  60132. $self._mustBeNiladicClosure_(anIRInstruction);
  60133. return $self._inlinedSend_withBlock_($recv($globals.IRInlinedIfFalse)._new(),anIRInstruction);
  60134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60135. }, function($ctx1) {$ctx1.fill(self,"ifFalse:",{anIRInstruction:anIRInstruction})});
  60136. //>>excludeEnd("ctx");
  60137. }; }),
  60138. $globals.IRSendInliner);
  60139. $core.addMethod(
  60140. $core.method({
  60141. selector: "ifFalse:ifTrue:",
  60142. protocol: "inlining",
  60143. //>>excludeStart("ide", pragmas.excludeIdeData);
  60144. args: ["anIRInstruction", "anotherIRInstruction"],
  60145. source: "ifFalse: anIRInstruction ifTrue: anotherIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09self mustBeNiladicClosure: anotherIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfTrueIfFalse new withBlock: anotherIRInstruction withBlock: anIRInstruction",
  60146. referencedClasses: ["IRInlinedIfTrueIfFalse"],
  60147. //>>excludeEnd("ide");
  60148. pragmas: [],
  60149. messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new"]
  60150. }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
  60151. var self=this,$self=this;
  60152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60153. return $core.withContext(function($ctx1) {
  60154. //>>excludeEnd("ctx");
  60155. [$self._mustBeNiladicClosure_(anIRInstruction)
  60156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60157. ,$ctx1.sendIdx["mustBeNiladicClosure:"]=1
  60158. //>>excludeEnd("ctx");
  60159. ][0];
  60160. $self._mustBeNiladicClosure_(anotherIRInstruction);
  60161. return $self._inlinedSend_withBlock_withBlock_($recv($globals.IRInlinedIfTrueIfFalse)._new(),anotherIRInstruction,anIRInstruction);
  60162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60163. }, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
  60164. //>>excludeEnd("ctx");
  60165. }; }),
  60166. $globals.IRSendInliner);
  60167. $core.addMethod(
  60168. $core.method({
  60169. selector: "ifNil:",
  60170. protocol: "inlining",
  60171. //>>excludeStart("ide", pragmas.excludeIdeData);
  60172. args: ["anIRInstruction"],
  60173. source: "ifNil: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09withBlock: anIRInstruction\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send receiver;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)",
  60174. referencedClasses: ["IRInlinedIfNilIfNotNil", "IRClosure", "IRBlockSequence"],
  60175. //>>excludeEnd("ide");
  60176. pragmas: [],
  60177. messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "receiver", "send", "yourself"]
  60178. }, function ($methodClass){ return function (anIRInstruction){
  60179. var self=this,$self=this;
  60180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60181. return $core.withContext(function($ctx1) {
  60182. //>>excludeEnd("ctx");
  60183. var $1,$2,$3;
  60184. $self._mustBeNiladicClosure_(anIRInstruction);
  60185. $1=[$recv($globals.IRInlinedIfNilIfNotNil)._new()
  60186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60187. ,$ctx1.sendIdx["new"]=1
  60188. //>>excludeEnd("ctx");
  60189. ][0];
  60190. $2=[$recv($globals.IRClosure)._new()
  60191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60192. ,$ctx1.sendIdx["new"]=2
  60193. //>>excludeEnd("ctx");
  60194. ][0];
  60195. $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
  60196. $3=$recv($globals.IRBlockSequence)._new();
  60197. $recv($3)._add_($recv($self._send())._receiver());
  60198. [$recv($2)._add_([$recv($3)._yourself()
  60199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60200. ,$ctx1.sendIdx["yourself"]=1
  60201. //>>excludeEnd("ctx");
  60202. ][0])
  60203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60204. ,$ctx1.sendIdx["add:"]=1
  60205. //>>excludeEnd("ctx");
  60206. ][0];
  60207. return $self._inlinedSend_withBlock_withBlock_($1,anIRInstruction,$recv($2)._yourself());
  60208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60209. }, function($ctx1) {$ctx1.fill(self,"ifNil:",{anIRInstruction:anIRInstruction})});
  60210. //>>excludeEnd("ctx");
  60211. }; }),
  60212. $globals.IRSendInliner);
  60213. $core.addMethod(
  60214. $core.method({
  60215. selector: "ifNil:ifNotNil:",
  60216. protocol: "inlining",
  60217. //>>excludeStart("ide", pragmas.excludeIdeData);
  60218. args: ["anIRInstruction", "anotherIRInstruction"],
  60219. source: "ifNil: anIRInstruction ifNotNil: anotherIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09self mustBeNiladicOrUnaryClosure: anotherIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new withBlock: anIRInstruction withBlock: anotherIRInstruction",
  60220. referencedClasses: ["IRInlinedIfNilIfNotNil"],
  60221. //>>excludeEnd("ide");
  60222. pragmas: [],
  60223. messageSends: ["mustBeNiladicClosure:", "mustBeNiladicOrUnaryClosure:", "inlinedSend:withBlock:withBlock:", "new"]
  60224. }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
  60225. var self=this,$self=this;
  60226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60227. return $core.withContext(function($ctx1) {
  60228. //>>excludeEnd("ctx");
  60229. $self._mustBeNiladicClosure_(anIRInstruction);
  60230. $self._mustBeNiladicOrUnaryClosure_(anotherIRInstruction);
  60231. return $self._inlinedSend_withBlock_withBlock_($recv($globals.IRInlinedIfNilIfNotNil)._new(),anIRInstruction,anotherIRInstruction);
  60232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60233. }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
  60234. //>>excludeEnd("ctx");
  60235. }; }),
  60236. $globals.IRSendInliner);
  60237. $core.addMethod(
  60238. $core.method({
  60239. selector: "ifNotNil:",
  60240. protocol: "inlining",
  60241. //>>excludeStart("ide", pragmas.excludeIdeData);
  60242. args: ["anIRInstruction"],
  60243. source: "ifNotNil: anIRInstruction\x0a\x09self mustBeNiladicOrUnaryClosure: anIRInstruction.\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send receiver;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)\x0a\x09\x09withBlock: anIRInstruction",
  60244. referencedClasses: ["IRInlinedIfNilIfNotNil", "IRClosure", "IRBlockSequence"],
  60245. //>>excludeEnd("ide");
  60246. pragmas: [],
  60247. messageSends: ["mustBeNiladicOrUnaryClosure:", "inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "receiver", "send", "yourself"]
  60248. }, function ($methodClass){ return function (anIRInstruction){
  60249. var self=this,$self=this;
  60250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60251. return $core.withContext(function($ctx1) {
  60252. //>>excludeEnd("ctx");
  60253. var $1,$2,$3;
  60254. $self._mustBeNiladicOrUnaryClosure_(anIRInstruction);
  60255. $1=[$recv($globals.IRInlinedIfNilIfNotNil)._new()
  60256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60257. ,$ctx1.sendIdx["new"]=1
  60258. //>>excludeEnd("ctx");
  60259. ][0];
  60260. $2=[$recv($globals.IRClosure)._new()
  60261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60262. ,$ctx1.sendIdx["new"]=2
  60263. //>>excludeEnd("ctx");
  60264. ][0];
  60265. $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
  60266. $3=$recv($globals.IRBlockSequence)._new();
  60267. $recv($3)._add_($recv($self._send())._receiver());
  60268. [$recv($2)._add_([$recv($3)._yourself()
  60269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60270. ,$ctx1.sendIdx["yourself"]=1
  60271. //>>excludeEnd("ctx");
  60272. ][0])
  60273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60274. ,$ctx1.sendIdx["add:"]=1
  60275. //>>excludeEnd("ctx");
  60276. ][0];
  60277. return $self._inlinedSend_withBlock_withBlock_($1,$recv($2)._yourself(),anIRInstruction);
  60278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60279. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{anIRInstruction:anIRInstruction})});
  60280. //>>excludeEnd("ctx");
  60281. }; }),
  60282. $globals.IRSendInliner);
  60283. $core.addMethod(
  60284. $core.method({
  60285. selector: "ifNotNil:ifNil:",
  60286. protocol: "inlining",
  60287. //>>excludeStart("ide", pragmas.excludeIdeData);
  60288. args: ["anIRInstruction", "anotherIRInstruction"],
  60289. source: "ifNotNil: anIRInstruction ifNil: anotherIRInstruction\x0a\x09self mustBeNiladicOrUnaryClosure: anIRInstruction.\x0a\x09self mustBeNiladicClosure: anotherIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new withBlock: anotherIRInstruction withBlock: anIRInstruction",
  60290. referencedClasses: ["IRInlinedIfNilIfNotNil"],
  60291. //>>excludeEnd("ide");
  60292. pragmas: [],
  60293. messageSends: ["mustBeNiladicOrUnaryClosure:", "mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new"]
  60294. }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
  60295. var self=this,$self=this;
  60296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60297. return $core.withContext(function($ctx1) {
  60298. //>>excludeEnd("ctx");
  60299. $self._mustBeNiladicOrUnaryClosure_(anIRInstruction);
  60300. $self._mustBeNiladicClosure_(anotherIRInstruction);
  60301. return $self._inlinedSend_withBlock_withBlock_($recv($globals.IRInlinedIfNilIfNotNil)._new(),anotherIRInstruction,anIRInstruction);
  60302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60303. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
  60304. //>>excludeEnd("ctx");
  60305. }; }),
  60306. $globals.IRSendInliner);
  60307. $core.addMethod(
  60308. $core.method({
  60309. selector: "ifTrue:",
  60310. protocol: "inlining",
  60311. //>>excludeStart("ide", pragmas.excludeIdeData);
  60312. args: ["anIRInstruction"],
  60313. source: "ifTrue: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfTrue new withBlock: anIRInstruction",
  60314. referencedClasses: ["IRInlinedIfTrue"],
  60315. //>>excludeEnd("ide");
  60316. pragmas: [],
  60317. messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:", "new"]
  60318. }, function ($methodClass){ return function (anIRInstruction){
  60319. var self=this,$self=this;
  60320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60321. return $core.withContext(function($ctx1) {
  60322. //>>excludeEnd("ctx");
  60323. $self._mustBeNiladicClosure_(anIRInstruction);
  60324. return $self._inlinedSend_withBlock_($recv($globals.IRInlinedIfTrue)._new(),anIRInstruction);
  60325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60326. }, function($ctx1) {$ctx1.fill(self,"ifTrue:",{anIRInstruction:anIRInstruction})});
  60327. //>>excludeEnd("ctx");
  60328. }; }),
  60329. $globals.IRSendInliner);
  60330. $core.addMethod(
  60331. $core.method({
  60332. selector: "ifTrue:ifFalse:",
  60333. protocol: "inlining",
  60334. //>>excludeStart("ide", pragmas.excludeIdeData);
  60335. args: ["anIRInstruction", "anotherIRInstruction"],
  60336. source: "ifTrue: anIRInstruction ifFalse: anotherIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09self mustBeNiladicClosure: anotherIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfTrueIfFalse new withBlock: anIRInstruction withBlock: anotherIRInstruction",
  60337. referencedClasses: ["IRInlinedIfTrueIfFalse"],
  60338. //>>excludeEnd("ide");
  60339. pragmas: [],
  60340. messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new"]
  60341. }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
  60342. var self=this,$self=this;
  60343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60344. return $core.withContext(function($ctx1) {
  60345. //>>excludeEnd("ctx");
  60346. [$self._mustBeNiladicClosure_(anIRInstruction)
  60347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60348. ,$ctx1.sendIdx["mustBeNiladicClosure:"]=1
  60349. //>>excludeEnd("ctx");
  60350. ][0];
  60351. $self._mustBeNiladicClosure_(anotherIRInstruction);
  60352. return $self._inlinedSend_withBlock_withBlock_($recv($globals.IRInlinedIfTrueIfFalse)._new(),anIRInstruction,anotherIRInstruction);
  60353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60354. }, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
  60355. //>>excludeEnd("ctx");
  60356. }; }),
  60357. $globals.IRSendInliner);
  60358. $core.addMethod(
  60359. $core.method({
  60360. selector: "inlineClosure:",
  60361. protocol: "inlining",
  60362. //>>excludeStart("ide", pragmas.excludeIdeData);
  60363. args: ["anIRClosure"],
  60364. source: "inlineClosure: anIRClosure\x0a\x09| inlinedClosure sequence statements |\x0a\x0a\x09inlinedClosure := self inlinedClosure.\x0a\x09inlinedClosure \x0a\x09\x09scope: anIRClosure scope;\x0a\x09\x09parent: anIRClosure parent.\x0a\x0a\x09\x22Add the possible temp declarations\x22\x0a\x09anIRClosure tempDeclarations do: [ :each |\x0a\x09\x09\x09inlinedClosure add: each ].\x0a\x0a\x09\x22Add a block sequence\x22\x0a\x09sequence := self inlinedSequence.\x0a\x0a\x09\x22Map the closure arguments to the receiver of the message send\x22\x0a\x09anIRClosure arguments do: [ :each |\x0a\x09\x09inlinedClosure add: (IRTempDeclaration new name: each; yourself).\x0a\x09\x09sequence add: (IRAssignment new\x0a\x09\x09\x09add: (IRVariable new variable: (ArgVar new scope: inlinedClosure scope; name: each; yourself));\x0a\x09\x09\x09add: self send receiver;\x0a\x09\x09\x09yourself) ].\x0a\x09\x09\x09\x0a\x09\x22To ensure the correct order of the closure instructions: first the temps then the sequence\x22\x0a\x09inlinedClosure add: sequence.\x0a\x0a\x09\x22Get all the statements\x22\x0a\x09statements := anIRClosure sequence dagChildren.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements allButLast do: [ :each | sequence add: each ].\x0a\x0a\x09\x09\x22Inlined closures change local returns into result value itself\x22\x0a\x09\x09sequence add: statements last asInlinedBlockResult ].\x0a\x0a\x09^ inlinedClosure",
  60365. referencedClasses: ["IRTempDeclaration", "IRAssignment", "IRVariable", "ArgVar"],
  60366. //>>excludeEnd("ide");
  60367. pragmas: [],
  60368. messageSends: ["inlinedClosure", "scope:", "scope", "parent:", "parent", "do:", "tempDeclarations", "add:", "inlinedSequence", "arguments", "name:", "new", "yourself", "variable:", "receiver", "send", "dagChildren", "sequence", "ifNotEmpty:", "allButLast", "asInlinedBlockResult", "last"]
  60369. }, function ($methodClass){ return function (anIRClosure){
  60370. var self=this,$self=this;
  60371. var inlinedClosure,sequence,statements;
  60372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60373. return $core.withContext(function($ctx1) {
  60374. //>>excludeEnd("ctx");
  60375. var $1,$2,$3,$4,$5,$6,$7;
  60376. inlinedClosure=$self._inlinedClosure();
  60377. $1=inlinedClosure;
  60378. [$recv($1)._scope_([$recv(anIRClosure)._scope()
  60379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60380. ,$ctx1.sendIdx["scope"]=1
  60381. //>>excludeEnd("ctx");
  60382. ][0])
  60383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60384. ,$ctx1.sendIdx["scope:"]=1
  60385. //>>excludeEnd("ctx");
  60386. ][0];
  60387. $recv($1)._parent_($recv(anIRClosure)._parent());
  60388. [$recv($recv(anIRClosure)._tempDeclarations())._do_((function(each){
  60389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60390. return $core.withContext(function($ctx2) {
  60391. //>>excludeEnd("ctx");
  60392. return [$recv(inlinedClosure)._add_(each)
  60393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60394. ,$ctx2.sendIdx["add:"]=1
  60395. //>>excludeEnd("ctx");
  60396. ][0];
  60397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60398. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  60399. //>>excludeEnd("ctx");
  60400. }))
  60401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60402. ,$ctx1.sendIdx["do:"]=1
  60403. //>>excludeEnd("ctx");
  60404. ][0];
  60405. sequence=$self._inlinedSequence();
  60406. [$recv($recv(anIRClosure)._arguments())._do_((function(each){
  60407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60408. return $core.withContext(function($ctx2) {
  60409. //>>excludeEnd("ctx");
  60410. $2=inlinedClosure;
  60411. $3=[$recv($globals.IRTempDeclaration)._new()
  60412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60413. ,$ctx2.sendIdx["new"]=1
  60414. //>>excludeEnd("ctx");
  60415. ][0];
  60416. [$recv($3)._name_(each)
  60417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60418. ,$ctx2.sendIdx["name:"]=1
  60419. //>>excludeEnd("ctx");
  60420. ][0];
  60421. [$recv($2)._add_([$recv($3)._yourself()
  60422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60423. ,$ctx2.sendIdx["yourself"]=1
  60424. //>>excludeEnd("ctx");
  60425. ][0])
  60426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60427. ,$ctx2.sendIdx["add:"]=2
  60428. //>>excludeEnd("ctx");
  60429. ][0];
  60430. $4=sequence;
  60431. $5=[$recv($globals.IRAssignment)._new()
  60432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60433. ,$ctx2.sendIdx["new"]=2
  60434. //>>excludeEnd("ctx");
  60435. ][0];
  60436. $6=[$recv($globals.IRVariable)._new()
  60437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60438. ,$ctx2.sendIdx["new"]=3
  60439. //>>excludeEnd("ctx");
  60440. ][0];
  60441. $7=$recv($globals.ArgVar)._new();
  60442. $recv($7)._scope_($recv(inlinedClosure)._scope());
  60443. $recv($7)._name_(each);
  60444. [$recv($5)._add_($recv($6)._variable_([$recv($7)._yourself()
  60445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60446. ,$ctx2.sendIdx["yourself"]=2
  60447. //>>excludeEnd("ctx");
  60448. ][0]))
  60449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60450. ,$ctx2.sendIdx["add:"]=4
  60451. //>>excludeEnd("ctx");
  60452. ][0];
  60453. [$recv($5)._add_($recv($self._send())._receiver())
  60454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60455. ,$ctx2.sendIdx["add:"]=5
  60456. //>>excludeEnd("ctx");
  60457. ][0];
  60458. return [$recv($4)._add_($recv($5)._yourself())
  60459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60460. ,$ctx2.sendIdx["add:"]=3
  60461. //>>excludeEnd("ctx");
  60462. ][0];
  60463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60464. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  60465. //>>excludeEnd("ctx");
  60466. }))
  60467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60468. ,$ctx1.sendIdx["do:"]=2
  60469. //>>excludeEnd("ctx");
  60470. ][0];
  60471. [$recv(inlinedClosure)._add_(sequence)
  60472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60473. ,$ctx1.sendIdx["add:"]=6
  60474. //>>excludeEnd("ctx");
  60475. ][0];
  60476. statements=$recv($recv(anIRClosure)._sequence())._dagChildren();
  60477. $recv(statements)._ifNotEmpty_((function(){
  60478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60479. return $core.withContext(function($ctx2) {
  60480. //>>excludeEnd("ctx");
  60481. $recv($recv(statements)._allButLast())._do_((function(each){
  60482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60483. return $core.withContext(function($ctx3) {
  60484. //>>excludeEnd("ctx");
  60485. return [$recv(sequence)._add_(each)
  60486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60487. ,$ctx3.sendIdx["add:"]=7
  60488. //>>excludeEnd("ctx");
  60489. ][0];
  60490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60491. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,4)});
  60492. //>>excludeEnd("ctx");
  60493. }));
  60494. return $recv(sequence)._add_($recv($recv(statements)._last())._asInlinedBlockResult());
  60495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60496. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  60497. //>>excludeEnd("ctx");
  60498. }));
  60499. return inlinedClosure;
  60500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60501. }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,sequence:sequence,statements:statements})});
  60502. //>>excludeEnd("ctx");
  60503. }; }),
  60504. $globals.IRSendInliner);
  60505. $core.addMethod(
  60506. $core.method({
  60507. selector: "inlineSend:",
  60508. protocol: "inlining",
  60509. //>>excludeStart("ide", pragmas.excludeIdeData);
  60510. args: ["anIRSend"],
  60511. source: "inlineSend: anIRSend\x0a\x09self send: anIRSend.\x0a\x09^ self\x0a\x09\x09perform: self send selector\x0a\x09\x09withArguments: self send arguments",
  60512. referencedClasses: [],
  60513. //>>excludeEnd("ide");
  60514. pragmas: [],
  60515. messageSends: ["send:", "perform:withArguments:", "selector", "send", "arguments"]
  60516. }, function ($methodClass){ return function (anIRSend){
  60517. var self=this,$self=this;
  60518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60519. return $core.withContext(function($ctx1) {
  60520. //>>excludeEnd("ctx");
  60521. $self._send_(anIRSend);
  60522. return $self._perform_withArguments_($recv([$self._send()
  60523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60524. ,$ctx1.sendIdx["send"]=1
  60525. //>>excludeEnd("ctx");
  60526. ][0])._selector(),$recv($self._send())._arguments());
  60527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60528. }, function($ctx1) {$ctx1.fill(self,"inlineSend:",{anIRSend:anIRSend})});
  60529. //>>excludeEnd("ctx");
  60530. }; }),
  60531. $globals.IRSendInliner);
  60532. $core.addMethod(
  60533. $core.method({
  60534. selector: "inlineSend:andReplace:",
  60535. protocol: "private",
  60536. //>>excludeStart("ide", pragmas.excludeIdeData);
  60537. args: ["anIRSend", "anIRInstruction"],
  60538. source: "inlineSend: anIRSend andReplace: anIRInstruction\x0a\x09anIRInstruction replaceWith: anIRSend.\x0a\x09^ self inlineSend: anIRSend",
  60539. referencedClasses: [],
  60540. //>>excludeEnd("ide");
  60541. pragmas: [],
  60542. messageSends: ["replaceWith:", "inlineSend:"]
  60543. }, function ($methodClass){ return function (anIRSend,anIRInstruction){
  60544. var self=this,$self=this;
  60545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60546. return $core.withContext(function($ctx1) {
  60547. //>>excludeEnd("ctx");
  60548. $recv(anIRInstruction)._replaceWith_(anIRSend);
  60549. return $self._inlineSend_(anIRSend);
  60550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60551. }, function($ctx1) {$ctx1.fill(self,"inlineSend:andReplace:",{anIRSend:anIRSend,anIRInstruction:anIRInstruction})});
  60552. //>>excludeEnd("ctx");
  60553. }; }),
  60554. $globals.IRSendInliner);
  60555. $core.addMethod(
  60556. $core.method({
  60557. selector: "inlinedClosure",
  60558. protocol: "factory",
  60559. //>>excludeStart("ide", pragmas.excludeIdeData);
  60560. args: [],
  60561. source: "inlinedClosure\x0a\x09^ IRInlinedClosure new",
  60562. referencedClasses: ["IRInlinedClosure"],
  60563. //>>excludeEnd("ide");
  60564. pragmas: [],
  60565. messageSends: ["new"]
  60566. }, function ($methodClass){ return function (){
  60567. var self=this,$self=this;
  60568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60569. return $core.withContext(function($ctx1) {
  60570. //>>excludeEnd("ctx");
  60571. return $recv($globals.IRInlinedClosure)._new();
  60572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60573. }, function($ctx1) {$ctx1.fill(self,"inlinedClosure",{})});
  60574. //>>excludeEnd("ctx");
  60575. }; }),
  60576. $globals.IRSendInliner);
  60577. $core.addMethod(
  60578. $core.method({
  60579. selector: "inlinedClosure:wrapFinalValueIn:",
  60580. protocol: "inlining",
  60581. //>>excludeStart("ide", pragmas.excludeIdeData);
  60582. args: ["closure", "aBlock"],
  60583. source: "inlinedClosure: closure wrapFinalValueIn: aBlock\x0a\x09| sequence final |\x0a\x0a\x09sequence := closure sequence.\x0a\x09\x0a\x09sequence dagChildren ifEmpty: [ sequence add: (IRVariable new\x0a\x09\x09variable: (closure scope pseudoVars at: 'nil');\x0a\x09\x09yourself) ].\x0a\x09final := sequence dagChildren last.\x0a\x09final yieldsValue ifTrue: [ sequence replace: final with: (aBlock value: final) ].\x0a\x0a\x09^ closure",
  60584. referencedClasses: ["IRVariable"],
  60585. //>>excludeEnd("ide");
  60586. pragmas: [],
  60587. messageSends: ["sequence", "ifEmpty:", "dagChildren", "add:", "variable:", "new", "at:", "pseudoVars", "scope", "yourself", "last", "ifTrue:", "yieldsValue", "replace:with:", "value:"]
  60588. }, function ($methodClass){ return function (closure,aBlock){
  60589. var self=this,$self=this;
  60590. var sequence,final;
  60591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60592. return $core.withContext(function($ctx1) {
  60593. //>>excludeEnd("ctx");
  60594. var $1,$2;
  60595. sequence=$recv(closure)._sequence();
  60596. $recv([$recv(sequence)._dagChildren()
  60597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60598. ,$ctx1.sendIdx["dagChildren"]=1
  60599. //>>excludeEnd("ctx");
  60600. ][0])._ifEmpty_((function(){
  60601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60602. return $core.withContext(function($ctx2) {
  60603. //>>excludeEnd("ctx");
  60604. $1=sequence;
  60605. $2=$recv($globals.IRVariable)._new();
  60606. $recv($2)._variable_($recv($recv($recv(closure)._scope())._pseudoVars())._at_("nil"));
  60607. return $recv($1)._add_($recv($2)._yourself());
  60608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60609. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  60610. //>>excludeEnd("ctx");
  60611. }));
  60612. final=$recv($recv(sequence)._dagChildren())._last();
  60613. if($core.assert($recv(final)._yieldsValue())){
  60614. $recv(sequence)._replace_with_(final,$recv(aBlock)._value_(final));
  60615. }
  60616. return closure;
  60617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60618. }, function($ctx1) {$ctx1.fill(self,"inlinedClosure:wrapFinalValueIn:",{closure:closure,aBlock:aBlock,sequence:sequence,final:final})});
  60619. //>>excludeEnd("ctx");
  60620. }; }),
  60621. $globals.IRSendInliner);
  60622. $core.addMethod(
  60623. $core.method({
  60624. selector: "inlinedSend:withBlock:",
  60625. protocol: "private",
  60626. //>>excludeStart("ide", pragmas.excludeIdeData);
  60627. args: ["inlinedSend", "anIRInstruction"],
  60628. source: "inlinedSend: inlinedSend withBlock: anIRInstruction\x0a\x09| inlinedClosure |\x0a\x0a\x09inlinedClosure := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send receiver;\x0a\x09\x09add: inlinedClosure.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09inlinedSend method internalVariables \x0a\x09\x09addAll: inlinedSend internalVariables.\x0a\x0a\x09^ inlinedSend",
  60629. referencedClasses: [],
  60630. //>>excludeEnd("ide");
  60631. pragmas: [],
  60632. messageSends: ["visit:", "translator", "inlineClosure:", "add:", "receiver", "send", "replaceWith:", "addAll:", "internalVariables", "method"]
  60633. }, function ($methodClass){ return function (inlinedSend,anIRInstruction){
  60634. var self=this,$self=this;
  60635. var inlinedClosure;
  60636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60637. return $core.withContext(function($ctx1) {
  60638. //>>excludeEnd("ctx");
  60639. inlinedClosure=$recv($self._translator())._visit_($self._inlineClosure_(anIRInstruction));
  60640. [$recv(inlinedSend)._add_($recv([$self._send()
  60641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60642. ,$ctx1.sendIdx["send"]=1
  60643. //>>excludeEnd("ctx");
  60644. ][0])._receiver())
  60645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60646. ,$ctx1.sendIdx["add:"]=1
  60647. //>>excludeEnd("ctx");
  60648. ][0];
  60649. $recv(inlinedSend)._add_(inlinedClosure);
  60650. $recv($self._send())._replaceWith_(inlinedSend);
  60651. $recv([$recv($recv(inlinedSend)._method())._internalVariables()
  60652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60653. ,$ctx1.sendIdx["internalVariables"]=1
  60654. //>>excludeEnd("ctx");
  60655. ][0])._addAll_($recv(inlinedSend)._internalVariables());
  60656. return inlinedSend;
  60657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60658. }, function($ctx1) {$ctx1.fill(self,"inlinedSend:withBlock:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,inlinedClosure:inlinedClosure})});
  60659. //>>excludeEnd("ctx");
  60660. }; }),
  60661. $globals.IRSendInliner);
  60662. $core.addMethod(
  60663. $core.method({
  60664. selector: "inlinedSend:withBlock:withBlock:",
  60665. protocol: "private",
  60666. //>>excludeStart("ide", pragmas.excludeIdeData);
  60667. args: ["inlinedSend", "anIRInstruction", "anotherIRInstruction"],
  60668. source: "inlinedSend: inlinedSend withBlock: anIRInstruction withBlock: anotherIRInstruction\x0a\x09| inlinedClosure1 inlinedClosure2 |\x0a\x0a\x09inlinedClosure1 := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x09inlinedClosure2 := self translator visit: (self inlineClosure: anotherIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send receiver;\x0a\x09\x09add: inlinedClosure1;\x0a\x09\x09add: inlinedClosure2.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09inlinedSend method internalVariables \x0a\x09\x09addAll: inlinedSend internalVariables.\x0a\x09\x09\x0a\x09^ inlinedSend",
  60669. referencedClasses: [],
  60670. //>>excludeEnd("ide");
  60671. pragmas: [],
  60672. messageSends: ["visit:", "translator", "inlineClosure:", "add:", "receiver", "send", "replaceWith:", "addAll:", "internalVariables", "method"]
  60673. }, function ($methodClass){ return function (inlinedSend,anIRInstruction,anotherIRInstruction){
  60674. var self=this,$self=this;
  60675. var inlinedClosure1,inlinedClosure2;
  60676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60677. return $core.withContext(function($ctx1) {
  60678. //>>excludeEnd("ctx");
  60679. inlinedClosure1=[$recv([$self._translator()
  60680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60681. ,$ctx1.sendIdx["translator"]=1
  60682. //>>excludeEnd("ctx");
  60683. ][0])._visit_([$self._inlineClosure_(anIRInstruction)
  60684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60685. ,$ctx1.sendIdx["inlineClosure:"]=1
  60686. //>>excludeEnd("ctx");
  60687. ][0])
  60688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60689. ,$ctx1.sendIdx["visit:"]=1
  60690. //>>excludeEnd("ctx");
  60691. ][0];
  60692. inlinedClosure2=$recv($self._translator())._visit_($self._inlineClosure_(anotherIRInstruction));
  60693. [$recv(inlinedSend)._add_($recv([$self._send()
  60694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60695. ,$ctx1.sendIdx["send"]=1
  60696. //>>excludeEnd("ctx");
  60697. ][0])._receiver())
  60698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60699. ,$ctx1.sendIdx["add:"]=1
  60700. //>>excludeEnd("ctx");
  60701. ][0];
  60702. [$recv(inlinedSend)._add_(inlinedClosure1)
  60703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60704. ,$ctx1.sendIdx["add:"]=2
  60705. //>>excludeEnd("ctx");
  60706. ][0];
  60707. $recv(inlinedSend)._add_(inlinedClosure2);
  60708. $recv($self._send())._replaceWith_(inlinedSend);
  60709. $recv([$recv($recv(inlinedSend)._method())._internalVariables()
  60710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60711. ,$ctx1.sendIdx["internalVariables"]=1
  60712. //>>excludeEnd("ctx");
  60713. ][0])._addAll_($recv(inlinedSend)._internalVariables());
  60714. return inlinedSend;
  60715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60716. }, function($ctx1) {$ctx1.fill(self,"inlinedSend:withBlock:withBlock:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction,inlinedClosure1:inlinedClosure1,inlinedClosure2:inlinedClosure2})});
  60717. //>>excludeEnd("ctx");
  60718. }; }),
  60719. $globals.IRSendInliner);
  60720. $core.addMethod(
  60721. $core.method({
  60722. selector: "inlinedSequence",
  60723. protocol: "factory",
  60724. //>>excludeStart("ide", pragmas.excludeIdeData);
  60725. args: [],
  60726. source: "inlinedSequence\x0a\x09^ IRInlinedSequence new",
  60727. referencedClasses: ["IRInlinedSequence"],
  60728. //>>excludeEnd("ide");
  60729. pragmas: [],
  60730. messageSends: ["new"]
  60731. }, function ($methodClass){ return function (){
  60732. var self=this,$self=this;
  60733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60734. return $core.withContext(function($ctx1) {
  60735. //>>excludeEnd("ctx");
  60736. return $recv($globals.IRInlinedSequence)._new();
  60737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60738. }, function($ctx1) {$ctx1.fill(self,"inlinedSequence",{})});
  60739. //>>excludeEnd("ctx");
  60740. }; }),
  60741. $globals.IRSendInliner);
  60742. $core.addMethod(
  60743. $core.method({
  60744. selector: "inliningError:",
  60745. protocol: "error handling",
  60746. //>>excludeStart("ide", pragmas.excludeIdeData);
  60747. args: ["aString"],
  60748. source: "inliningError: aString\x0a\x09InliningError signal: aString",
  60749. referencedClasses: ["InliningError"],
  60750. //>>excludeEnd("ide");
  60751. pragmas: [],
  60752. messageSends: ["signal:"]
  60753. }, function ($methodClass){ return function (aString){
  60754. var self=this,$self=this;
  60755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60756. return $core.withContext(function($ctx1) {
  60757. //>>excludeEnd("ctx");
  60758. $recv($globals.InliningError)._signal_(aString);
  60759. return self;
  60760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60761. }, function($ctx1) {$ctx1.fill(self,"inliningError:",{aString:aString})});
  60762. //>>excludeEnd("ctx");
  60763. }; }),
  60764. $globals.IRSendInliner);
  60765. $core.addMethod(
  60766. $core.method({
  60767. selector: "mustBeNiladicClosure:",
  60768. protocol: "testing",
  60769. //>>excludeStart("ide", pragmas.excludeIdeData);
  60770. args: ["anIRInstruction"],
  60771. source: "mustBeNiladicClosure: anIRInstruction\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ]",
  60772. referencedClasses: [],
  60773. //>>excludeEnd("ide");
  60774. pragmas: [],
  60775. messageSends: ["ifFalse:", "isClosure", "inliningError:", "=", "size", "arguments"]
  60776. }, function ($methodClass){ return function (anIRInstruction){
  60777. var self=this,$self=this;
  60778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60779. return $core.withContext(function($ctx1) {
  60780. //>>excludeEnd("ctx");
  60781. if(!$core.assert($recv(anIRInstruction)._isClosure())){
  60782. [$self._inliningError_("Message argument should be a block")
  60783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60784. ,$ctx1.sendIdx["inliningError:"]=1
  60785. //>>excludeEnd("ctx");
  60786. ][0];
  60787. }
  60788. if(!$core.assert($recv($recv($recv(anIRInstruction)._arguments())._size()).__eq((0)))){
  60789. $self._inliningError_("Inlined block should have zero argument");
  60790. }
  60791. return self;
  60792. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60793. }, function($ctx1) {$ctx1.fill(self,"mustBeNiladicClosure:",{anIRInstruction:anIRInstruction})});
  60794. //>>excludeEnd("ctx");
  60795. }; }),
  60796. $globals.IRSendInliner);
  60797. $core.addMethod(
  60798. $core.method({
  60799. selector: "mustBeNiladicOrUnaryClosure:",
  60800. protocol: "testing",
  60801. //>>excludeStart("ide", pragmas.excludeIdeData);
  60802. args: ["anIRInstruction"],
  60803. source: "mustBeNiladicOrUnaryClosure: anIRInstruction\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anIRInstruction arguments size <= 1 ifFalse: [ self inliningError: 'Inlined block should have at most one argument' ]",
  60804. referencedClasses: [],
  60805. //>>excludeEnd("ide");
  60806. pragmas: [],
  60807. messageSends: ["ifFalse:", "isClosure", "inliningError:", "<=", "size", "arguments"]
  60808. }, function ($methodClass){ return function (anIRInstruction){
  60809. var self=this,$self=this;
  60810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60811. return $core.withContext(function($ctx1) {
  60812. //>>excludeEnd("ctx");
  60813. if(!$core.assert($recv(anIRInstruction)._isClosure())){
  60814. [$self._inliningError_("Message argument should be a block")
  60815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60816. ,$ctx1.sendIdx["inliningError:"]=1
  60817. //>>excludeEnd("ctx");
  60818. ][0];
  60819. }
  60820. if(!$core.assert($recv($recv($recv(anIRInstruction)._arguments())._size()).__lt_eq((1)))){
  60821. $self._inliningError_("Inlined block should have at most one argument");
  60822. }
  60823. return self;
  60824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60825. }, function($ctx1) {$ctx1.fill(self,"mustBeNiladicOrUnaryClosure:",{anIRInstruction:anIRInstruction})});
  60826. //>>excludeEnd("ctx");
  60827. }; }),
  60828. $globals.IRSendInliner);
  60829. $core.addMethod(
  60830. $core.method({
  60831. selector: "or:",
  60832. protocol: "inlining",
  60833. //>>excludeStart("ide", pragmas.excludeIdeData);
  60834. args: ["anIRInstruction"],
  60835. source: "or: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfTrueIfFalse new\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: (IRValue new value: true; yourself);\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)\x0a\x09\x09withBlock: anIRInstruction",
  60836. referencedClasses: ["IRInlinedIfTrueIfFalse", "IRClosure", "IRBlockSequence", "IRValue"],
  60837. //>>excludeEnd("ide");
  60838. pragmas: [],
  60839. messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "value:", "yourself"]
  60840. }, function ($methodClass){ return function (anIRInstruction){
  60841. var self=this,$self=this;
  60842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60843. return $core.withContext(function($ctx1) {
  60844. //>>excludeEnd("ctx");
  60845. var $1,$2,$3,$4;
  60846. $self._mustBeNiladicClosure_(anIRInstruction);
  60847. $1=[$recv($globals.IRInlinedIfTrueIfFalse)._new()
  60848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60849. ,$ctx1.sendIdx["new"]=1
  60850. //>>excludeEnd("ctx");
  60851. ][0];
  60852. $2=[$recv($globals.IRClosure)._new()
  60853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60854. ,$ctx1.sendIdx["new"]=2
  60855. //>>excludeEnd("ctx");
  60856. ][0];
  60857. $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
  60858. $3=[$recv($globals.IRBlockSequence)._new()
  60859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60860. ,$ctx1.sendIdx["new"]=3
  60861. //>>excludeEnd("ctx");
  60862. ][0];
  60863. $4=$recv($globals.IRValue)._new();
  60864. $recv($4)._value_(true);
  60865. $recv($3)._add_([$recv($4)._yourself()
  60866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60867. ,$ctx1.sendIdx["yourself"]=1
  60868. //>>excludeEnd("ctx");
  60869. ][0]);
  60870. [$recv($2)._add_([$recv($3)._yourself()
  60871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60872. ,$ctx1.sendIdx["yourself"]=2
  60873. //>>excludeEnd("ctx");
  60874. ][0])
  60875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60876. ,$ctx1.sendIdx["add:"]=1
  60877. //>>excludeEnd("ctx");
  60878. ][0];
  60879. return $self._inlinedSend_withBlock_withBlock_($1,$recv($2)._yourself(),anIRInstruction);
  60880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60881. }, function($ctx1) {$ctx1.fill(self,"or:",{anIRInstruction:anIRInstruction})});
  60882. //>>excludeEnd("ctx");
  60883. }; }),
  60884. $globals.IRSendInliner);
  60885. $core.addMethod(
  60886. $core.method({
  60887. selector: "send",
  60888. protocol: "accessing",
  60889. //>>excludeStart("ide", pragmas.excludeIdeData);
  60890. args: [],
  60891. source: "send\x0a\x09^ send",
  60892. referencedClasses: [],
  60893. //>>excludeEnd("ide");
  60894. pragmas: [],
  60895. messageSends: []
  60896. }, function ($methodClass){ return function (){
  60897. var self=this,$self=this;
  60898. return $self.send;
  60899. }; }),
  60900. $globals.IRSendInliner);
  60901. $core.addMethod(
  60902. $core.method({
  60903. selector: "send:",
  60904. protocol: "accessing",
  60905. //>>excludeStart("ide", pragmas.excludeIdeData);
  60906. args: ["anIRSend"],
  60907. source: "send: anIRSend\x0a\x09send := anIRSend",
  60908. referencedClasses: [],
  60909. //>>excludeEnd("ide");
  60910. pragmas: [],
  60911. messageSends: []
  60912. }, function ($methodClass){ return function (anIRSend){
  60913. var self=this,$self=this;
  60914. $self.send=anIRSend;
  60915. return self;
  60916. }; }),
  60917. $globals.IRSendInliner);
  60918. $core.addMethod(
  60919. $core.method({
  60920. selector: "translator",
  60921. protocol: "accessing",
  60922. //>>excludeStart("ide", pragmas.excludeIdeData);
  60923. args: [],
  60924. source: "translator\x0a\x09^ translator",
  60925. referencedClasses: [],
  60926. //>>excludeEnd("ide");
  60927. pragmas: [],
  60928. messageSends: []
  60929. }, function ($methodClass){ return function (){
  60930. var self=this,$self=this;
  60931. return $self.translator;
  60932. }; }),
  60933. $globals.IRSendInliner);
  60934. $core.addMethod(
  60935. $core.method({
  60936. selector: "translator:",
  60937. protocol: "accessing",
  60938. //>>excludeStart("ide", pragmas.excludeIdeData);
  60939. args: ["anASTTranslator"],
  60940. source: "translator: anASTTranslator\x0a\x09translator := anASTTranslator",
  60941. referencedClasses: [],
  60942. //>>excludeEnd("ide");
  60943. pragmas: [],
  60944. messageSends: []
  60945. }, function ($methodClass){ return function (anASTTranslator){
  60946. var self=this,$self=this;
  60947. $self.translator=anASTTranslator;
  60948. return self;
  60949. }; }),
  60950. $globals.IRSendInliner);
  60951. $core.addMethod(
  60952. $core.method({
  60953. selector: "inlinedSelectors",
  60954. protocol: "accessing",
  60955. //>>excludeStart("ide", pragmas.excludeIdeData);
  60956. args: [],
  60957. source: "inlinedSelectors\x0a\x09^ #(\x0a\x09\x09ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:\x0a\x09\x09ifNil: ifNotNil: ifNil:ifNotNil: ifNotNil:ifNil:\x0a\x09\x09and: or:\x0a\x09)",
  60958. referencedClasses: [],
  60959. //>>excludeEnd("ide");
  60960. pragmas: [],
  60961. messageSends: []
  60962. }, function ($methodClass){ return function (){
  60963. var self=this,$self=this;
  60964. return ["ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:", "ifNil:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:", "and:", "or:"];
  60965. }; }),
  60966. $globals.IRSendInliner.a$cls);
  60967. $core.addMethod(
  60968. $core.method({
  60969. selector: "inlinedSelectorsNeedingIdempotentReceiver",
  60970. protocol: "accessing",
  60971. //>>excludeStart("ide", pragmas.excludeIdeData);
  60972. args: [],
  60973. source: "inlinedSelectorsNeedingIdempotentReceiver\x0a\x09^ #(\x0a\x09\x09ifNil: ifNotNil: ifNil:ifNotNil: ifNotNil:ifNil:\x0a\x09)",
  60974. referencedClasses: [],
  60975. //>>excludeEnd("ide");
  60976. pragmas: [],
  60977. messageSends: []
  60978. }, function ($methodClass){ return function (){
  60979. var self=this,$self=this;
  60980. return ["ifNil:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"];
  60981. }; }),
  60982. $globals.IRSendInliner.a$cls);
  60983. $core.addMethod(
  60984. $core.method({
  60985. selector: "shouldInline:",
  60986. protocol: "accessing",
  60987. //>>excludeStart("ide", pragmas.excludeIdeData);
  60988. args: ["anIRSend"],
  60989. source: "shouldInline: anIRSend\x0a\x09^ (self inlinedSelectors includes: anIRSend selector) and: [\x0a\x09\x09anIRSend receiver isSuper not and: [\x0a\x09\x09\x09anIRSend arguments allSatisfy: [ :each | each isClosure ] ] ]",
  60990. referencedClasses: [],
  60991. //>>excludeEnd("ide");
  60992. pragmas: [],
  60993. messageSends: ["and:", "includes:", "inlinedSelectors", "selector", "not", "isSuper", "receiver", "allSatisfy:", "arguments", "isClosure"]
  60994. }, function ($methodClass){ return function (anIRSend){
  60995. var self=this,$self=this;
  60996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60997. return $core.withContext(function($ctx1) {
  60998. //>>excludeEnd("ctx");
  60999. if($core.assert($recv($self._inlinedSelectors())._includes_($recv(anIRSend)._selector()))){
  61000. if($core.assert($recv($recv($recv(anIRSend)._receiver())._isSuper())._not())){
  61001. return $recv($recv(anIRSend)._arguments())._allSatisfy_((function(each){
  61002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61003. return $core.withContext(function($ctx2) {
  61004. //>>excludeEnd("ctx");
  61005. return $recv(each)._isClosure();
  61006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61007. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  61008. //>>excludeEnd("ctx");
  61009. }));
  61010. } else {
  61011. return false;
  61012. }
  61013. } else {
  61014. return false;
  61015. }
  61016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61017. }, function($ctx1) {$ctx1.fill(self,"shouldInline:",{anIRSend:anIRSend})});
  61018. //>>excludeEnd("ctx");
  61019. }; }),
  61020. $globals.IRSendInliner.a$cls);
  61021. $core.addClass("IRAssignmentInliner", $globals.IRSendInliner, "Compiler-Inlining");
  61022. $core.setSlots($globals.IRAssignmentInliner, ["target"]);
  61023. //>>excludeStart("ide", pragmas.excludeIdeData);
  61024. $globals.IRAssignmentInliner.comment="I inline message sends together with assignments by moving them around into the inline closure instructions.\x0a\x0a##Example\x0a\x0a\x09foo\x0a\x09\x09| a |\x0a\x09\x09a := true ifTrue: [ 1 ]\x0a\x0aWill produce:\x0a\x0a\x09if($core.assert(true) {\x0a\x09\x09a = 1;\x0a\x09};";
  61025. //>>excludeEnd("ide");
  61026. $core.addMethod(
  61027. $core.method({
  61028. selector: "inlineAssignment:",
  61029. protocol: "inlining",
  61030. //>>excludeStart("ide", pragmas.excludeIdeData);
  61031. args: ["anIRAssignment"],
  61032. source: "inlineAssignment: anIRAssignment\x0a\x09self target: anIRAssignment left.\x0a\x09^ self inlineSend: anIRAssignment right andReplace: anIRAssignment",
  61033. referencedClasses: [],
  61034. //>>excludeEnd("ide");
  61035. pragmas: [],
  61036. messageSends: ["target:", "left", "inlineSend:andReplace:", "right"]
  61037. }, function ($methodClass){ return function (anIRAssignment){
  61038. var self=this,$self=this;
  61039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61040. return $core.withContext(function($ctx1) {
  61041. //>>excludeEnd("ctx");
  61042. $self._target_($recv(anIRAssignment)._left());
  61043. return $self._inlineSend_andReplace_($recv(anIRAssignment)._right(),anIRAssignment);
  61044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61045. }, function($ctx1) {$ctx1.fill(self,"inlineAssignment:",{anIRAssignment:anIRAssignment})});
  61046. //>>excludeEnd("ctx");
  61047. }; }),
  61048. $globals.IRAssignmentInliner);
  61049. $core.addMethod(
  61050. $core.method({
  61051. selector: "inlineClosure:",
  61052. protocol: "inlining",
  61053. //>>excludeStart("ide", pragmas.excludeIdeData);
  61054. args: ["anIRClosure"],
  61055. source: "inlineClosure: anIRClosure\x0a\x09^ self\x0a\x09\x09inlinedClosure: (super inlineClosure: anIRClosure)\x0a\x09\x09wrapFinalValueIn: [ :final |\x0a\x09\x09\x09IRAssignment new\x0a\x09\x09\x09\x09add: self target;\x0a\x09\x09\x09\x09add: final copy;\x0a\x09\x09\x09\x09yourself ]",
  61056. referencedClasses: ["IRAssignment"],
  61057. //>>excludeEnd("ide");
  61058. pragmas: [],
  61059. messageSends: ["inlinedClosure:wrapFinalValueIn:", "inlineClosure:", "add:", "new", "target", "copy", "yourself"]
  61060. }, function ($methodClass){ return function (anIRClosure){
  61061. var self=this,$self=this;
  61062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61063. return $core.withContext(function($ctx1) {
  61064. //>>excludeEnd("ctx");
  61065. var $1;
  61066. return $self._inlinedClosure_wrapFinalValueIn_([(
  61067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61068. $ctx1.supercall = true,
  61069. //>>excludeEnd("ctx");
  61070. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._inlineClosure_.call($self,anIRClosure))
  61071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61072. ,$ctx1.supercall = false
  61073. //>>excludeEnd("ctx");
  61074. ][0],(function(final){
  61075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61076. return $core.withContext(function($ctx2) {
  61077. //>>excludeEnd("ctx");
  61078. $1=$recv($globals.IRAssignment)._new();
  61079. [$recv($1)._add_($self._target())
  61080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61081. ,$ctx2.sendIdx["add:"]=1
  61082. //>>excludeEnd("ctx");
  61083. ][0];
  61084. $recv($1)._add_($recv(final)._copy());
  61085. return $recv($1)._yourself();
  61086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61087. }, function($ctx2) {$ctx2.fillBlock({final:final},$ctx1,1)});
  61088. //>>excludeEnd("ctx");
  61089. }));
  61090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61091. }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure})});
  61092. //>>excludeEnd("ctx");
  61093. }; }),
  61094. $globals.IRAssignmentInliner);
  61095. $core.addMethod(
  61096. $core.method({
  61097. selector: "target",
  61098. protocol: "accessing",
  61099. //>>excludeStart("ide", pragmas.excludeIdeData);
  61100. args: [],
  61101. source: "target\x0a\x09^ target",
  61102. referencedClasses: [],
  61103. //>>excludeEnd("ide");
  61104. pragmas: [],
  61105. messageSends: []
  61106. }, function ($methodClass){ return function (){
  61107. var self=this,$self=this;
  61108. return $self.target;
  61109. }; }),
  61110. $globals.IRAssignmentInliner);
  61111. $core.addMethod(
  61112. $core.method({
  61113. selector: "target:",
  61114. protocol: "accessing",
  61115. //>>excludeStart("ide", pragmas.excludeIdeData);
  61116. args: ["anObject"],
  61117. source: "target: anObject\x0a\x09target := anObject",
  61118. referencedClasses: [],
  61119. //>>excludeEnd("ide");
  61120. pragmas: [],
  61121. messageSends: []
  61122. }, function ($methodClass){ return function (anObject){
  61123. var self=this,$self=this;
  61124. $self.target=anObject;
  61125. return self;
  61126. }; }),
  61127. $globals.IRAssignmentInliner);
  61128. $core.addClass("IRNonLocalReturnInliner", $globals.IRSendInliner, "Compiler-Inlining");
  61129. //>>excludeStart("ide", pragmas.excludeIdeData);
  61130. $globals.IRNonLocalReturnInliner.comment="I inline message sends with inlined closure together with a return instruction.";
  61131. //>>excludeEnd("ide");
  61132. $core.addMethod(
  61133. $core.method({
  61134. selector: "inlineClosure:",
  61135. protocol: "inlining",
  61136. //>>excludeStart("ide", pragmas.excludeIdeData);
  61137. args: ["anIRClosure"],
  61138. source: "inlineClosure: anIRClosure\x0a\x09^ self\x0a\x09\x09inlinedClosure: (super inlineClosure: anIRClosure)\x0a\x09\x09wrapFinalValueIn: [ :final |\x0a\x09\x09\x09IRNonLocalReturn new\x0a\x09\x09\x09\x09add: final copy;\x0a\x09\x09\x09\x09yourself ]",
  61139. referencedClasses: ["IRNonLocalReturn"],
  61140. //>>excludeEnd("ide");
  61141. pragmas: [],
  61142. messageSends: ["inlinedClosure:wrapFinalValueIn:", "inlineClosure:", "add:", "new", "copy", "yourself"]
  61143. }, function ($methodClass){ return function (anIRClosure){
  61144. var self=this,$self=this;
  61145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61146. return $core.withContext(function($ctx1) {
  61147. //>>excludeEnd("ctx");
  61148. var $1;
  61149. return $self._inlinedClosure_wrapFinalValueIn_([(
  61150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61151. $ctx1.supercall = true,
  61152. //>>excludeEnd("ctx");
  61153. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._inlineClosure_.call($self,anIRClosure))
  61154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61155. ,$ctx1.supercall = false
  61156. //>>excludeEnd("ctx");
  61157. ][0],(function(final){
  61158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61159. return $core.withContext(function($ctx2) {
  61160. //>>excludeEnd("ctx");
  61161. $1=$recv($globals.IRNonLocalReturn)._new();
  61162. $recv($1)._add_($recv(final)._copy());
  61163. return $recv($1)._yourself();
  61164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61165. }, function($ctx2) {$ctx2.fillBlock({final:final},$ctx1,1)});
  61166. //>>excludeEnd("ctx");
  61167. }));
  61168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61169. }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure})});
  61170. //>>excludeEnd("ctx");
  61171. }; }),
  61172. $globals.IRNonLocalReturnInliner);
  61173. $core.addMethod(
  61174. $core.method({
  61175. selector: "inlineReturn:",
  61176. protocol: "inlining",
  61177. //>>excludeStart("ide", pragmas.excludeIdeData);
  61178. args: ["anIRReturn"],
  61179. source: "inlineReturn: anIRReturn\x0a\x09^ self inlineSend: anIRReturn expression andReplace: anIRReturn",
  61180. referencedClasses: [],
  61181. //>>excludeEnd("ide");
  61182. pragmas: [],
  61183. messageSends: ["inlineSend:andReplace:", "expression"]
  61184. }, function ($methodClass){ return function (anIRReturn){
  61185. var self=this,$self=this;
  61186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61187. return $core.withContext(function($ctx1) {
  61188. //>>excludeEnd("ctx");
  61189. return $self._inlineSend_andReplace_($recv(anIRReturn)._expression(),anIRReturn);
  61190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61191. }, function($ctx1) {$ctx1.fill(self,"inlineReturn:",{anIRReturn:anIRReturn})});
  61192. //>>excludeEnd("ctx");
  61193. }; }),
  61194. $globals.IRNonLocalReturnInliner);
  61195. $core.addClass("IRReturnInliner", $globals.IRSendInliner, "Compiler-Inlining");
  61196. //>>excludeStart("ide", pragmas.excludeIdeData);
  61197. $globals.IRReturnInliner.comment="I inline message sends with inlined closure together with a return instruction.";
  61198. //>>excludeEnd("ide");
  61199. $core.addMethod(
  61200. $core.method({
  61201. selector: "inlineClosure:",
  61202. protocol: "inlining",
  61203. //>>excludeStart("ide", pragmas.excludeIdeData);
  61204. args: ["anIRClosure"],
  61205. source: "inlineClosure: anIRClosure\x0a\x09^ self\x0a\x09\x09inlinedClosure: (super inlineClosure: anIRClosure)\x0a\x09\x09wrapFinalValueIn: [ :final |\x0a\x09\x09\x09IRReturn new\x0a\x09\x09\x09\x09add: final copy;\x0a\x09\x09\x09\x09yourself ]",
  61206. referencedClasses: ["IRReturn"],
  61207. //>>excludeEnd("ide");
  61208. pragmas: [],
  61209. messageSends: ["inlinedClosure:wrapFinalValueIn:", "inlineClosure:", "add:", "new", "copy", "yourself"]
  61210. }, function ($methodClass){ return function (anIRClosure){
  61211. var self=this,$self=this;
  61212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61213. return $core.withContext(function($ctx1) {
  61214. //>>excludeEnd("ctx");
  61215. var $1;
  61216. return $self._inlinedClosure_wrapFinalValueIn_([(
  61217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61218. $ctx1.supercall = true,
  61219. //>>excludeEnd("ctx");
  61220. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._inlineClosure_.call($self,anIRClosure))
  61221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61222. ,$ctx1.supercall = false
  61223. //>>excludeEnd("ctx");
  61224. ][0],(function(final){
  61225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61226. return $core.withContext(function($ctx2) {
  61227. //>>excludeEnd("ctx");
  61228. $1=$recv($globals.IRReturn)._new();
  61229. $recv($1)._add_($recv(final)._copy());
  61230. return $recv($1)._yourself();
  61231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61232. }, function($ctx2) {$ctx2.fillBlock({final:final},$ctx1,1)});
  61233. //>>excludeEnd("ctx");
  61234. }));
  61235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61236. }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure})});
  61237. //>>excludeEnd("ctx");
  61238. }; }),
  61239. $globals.IRReturnInliner);
  61240. $core.addMethod(
  61241. $core.method({
  61242. selector: "inlineReturn:",
  61243. protocol: "inlining",
  61244. //>>excludeStart("ide", pragmas.excludeIdeData);
  61245. args: ["anIRReturn"],
  61246. source: "inlineReturn: anIRReturn\x0a\x09^ self inlineSend: anIRReturn expression andReplace: anIRReturn",
  61247. referencedClasses: [],
  61248. //>>excludeEnd("ide");
  61249. pragmas: [],
  61250. messageSends: ["inlineSend:andReplace:", "expression"]
  61251. }, function ($methodClass){ return function (anIRReturn){
  61252. var self=this,$self=this;
  61253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61254. return $core.withContext(function($ctx1) {
  61255. //>>excludeEnd("ctx");
  61256. return $self._inlineSend_andReplace_($recv(anIRReturn)._expression(),anIRReturn);
  61257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61258. }, function($ctx1) {$ctx1.fill(self,"inlineReturn:",{anIRReturn:anIRReturn})});
  61259. //>>excludeEnd("ctx");
  61260. }; }),
  61261. $globals.IRReturnInliner);
  61262. $core.addClass("InliningCodeGenerator", $globals.CodeGenerator, "Compiler-Inlining");
  61263. //>>excludeStart("ide", pragmas.excludeIdeData);
  61264. $globals.InliningCodeGenerator.comment="I am a specialized code generator that uses inlining to produce more optimized JavaScript output";
  61265. //>>excludeEnd("ide");
  61266. $core.addMethod(
  61267. $core.method({
  61268. selector: "inliner",
  61269. protocol: "compiling",
  61270. //>>excludeStart("ide", pragmas.excludeIdeData);
  61271. args: [],
  61272. source: "inliner\x0a\x09^ IRInliner new",
  61273. referencedClasses: ["IRInliner"],
  61274. //>>excludeEnd("ide");
  61275. pragmas: [],
  61276. messageSends: ["new"]
  61277. }, function ($methodClass){ return function (){
  61278. var self=this,$self=this;
  61279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61280. return $core.withContext(function($ctx1) {
  61281. //>>excludeEnd("ctx");
  61282. return $recv($globals.IRInliner)._new();
  61283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61284. }, function($ctx1) {$ctx1.fill(self,"inliner",{})});
  61285. //>>excludeEnd("ctx");
  61286. }; }),
  61287. $globals.InliningCodeGenerator);
  61288. $core.addMethod(
  61289. $core.method({
  61290. selector: "irTranslatorClass",
  61291. protocol: "compiling",
  61292. //>>excludeStart("ide", pragmas.excludeIdeData);
  61293. args: [],
  61294. source: "irTranslatorClass\x0a\x09^ IRInliningJSTranslator",
  61295. referencedClasses: ["IRInliningJSTranslator"],
  61296. //>>excludeEnd("ide");
  61297. pragmas: [],
  61298. messageSends: []
  61299. }, function ($methodClass){ return function (){
  61300. var self=this,$self=this;
  61301. return $globals.IRInliningJSTranslator;
  61302. }; }),
  61303. $globals.InliningCodeGenerator);
  61304. $core.addMethod(
  61305. $core.method({
  61306. selector: "preInliner",
  61307. protocol: "compiling",
  61308. //>>excludeStart("ide", pragmas.excludeIdeData);
  61309. args: [],
  61310. source: "preInliner\x0a\x09^ ASTPreInliner new",
  61311. referencedClasses: ["ASTPreInliner"],
  61312. //>>excludeEnd("ide");
  61313. pragmas: [],
  61314. messageSends: ["new"]
  61315. }, function ($methodClass){ return function (){
  61316. var self=this,$self=this;
  61317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61318. return $core.withContext(function($ctx1) {
  61319. //>>excludeEnd("ctx");
  61320. return $recv($globals.ASTPreInliner)._new();
  61321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61322. }, function($ctx1) {$ctx1.fill(self,"preInliner",{})});
  61323. //>>excludeEnd("ctx");
  61324. }; }),
  61325. $globals.InliningCodeGenerator);
  61326. $core.addMethod(
  61327. $core.method({
  61328. selector: "transformersDictionary",
  61329. protocol: "compiling",
  61330. //>>excludeStart("ide", pragmas.excludeIdeData);
  61331. args: [],
  61332. source: "transformersDictionary\x0a\x09^ transformersDictionary ifNil: [ transformersDictionary := super transformersDictionary\x0a\x09\x09at: '3000-inlinerTagging' put: self preInliner;\x0a\x09\x09at: '6000-inliner' put: self inliner;\x0a\x09\x09at: '8000-irToJs' put: self irTranslator;\x0a\x09\x09yourself ]",
  61333. referencedClasses: [],
  61334. //>>excludeEnd("ide");
  61335. pragmas: [],
  61336. messageSends: ["ifNil:", "at:put:", "transformersDictionary", "preInliner", "inliner", "irTranslator", "yourself"]
  61337. }, function ($methodClass){ return function (){
  61338. var self=this,$self=this;
  61339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61340. return $core.withContext(function($ctx1) {
  61341. //>>excludeEnd("ctx");
  61342. var $1,$2;
  61343. $1=$self.transformersDictionary;
  61344. if($1 == null || $1.a$nil){
  61345. $2=[(
  61346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61347. $ctx1.supercall = true,
  61348. //>>excludeEnd("ctx");
  61349. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._transformersDictionary.call($self))
  61350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61351. ,$ctx1.supercall = false
  61352. //>>excludeEnd("ctx");
  61353. ][0];
  61354. [$recv($2)._at_put_("3000-inlinerTagging",$self._preInliner())
  61355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61356. ,$ctx1.sendIdx["at:put:"]=1
  61357. //>>excludeEnd("ctx");
  61358. ][0];
  61359. [$recv($2)._at_put_("6000-inliner",$self._inliner())
  61360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61361. ,$ctx1.sendIdx["at:put:"]=2
  61362. //>>excludeEnd("ctx");
  61363. ][0];
  61364. $recv($2)._at_put_("8000-irToJs",$self._irTranslator());
  61365. $self.transformersDictionary=$recv($2)._yourself();
  61366. return $self.transformersDictionary;
  61367. } else {
  61368. return $1;
  61369. }
  61370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61371. }, function($ctx1) {$ctx1.fill(self,"transformersDictionary",{})});
  61372. //>>excludeEnd("ctx");
  61373. }; }),
  61374. $globals.InliningCodeGenerator);
  61375. $core.addClass("InliningError", $globals.SemanticError, "Compiler-Inlining");
  61376. //>>excludeStart("ide", pragmas.excludeIdeData);
  61377. $globals.InliningError.comment="Instances of InliningError are signaled when using an `InliningCodeGenerator`in a `Compiler`.";
  61378. //>>excludeEnd("ide");
  61379. $core.addTrait("TIRInlinedVisitor", "Compiler-Inlining");
  61380. $core.addMethod(
  61381. $core.method({
  61382. selector: "visitIRInlinedClosure:",
  61383. protocol: "visiting",
  61384. //>>excludeStart("ide", pragmas.excludeIdeData);
  61385. args: ["anIRInlinedClosure"],
  61386. source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09^ self visitIRClosure: anIRInlinedClosure",
  61387. referencedClasses: [],
  61388. //>>excludeEnd("ide");
  61389. pragmas: [],
  61390. messageSends: ["visitIRClosure:"]
  61391. }, function ($methodClass){ return function (anIRInlinedClosure){
  61392. var self=this,$self=this;
  61393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61394. return $core.withContext(function($ctx1) {
  61395. //>>excludeEnd("ctx");
  61396. return $self._visitIRClosure_(anIRInlinedClosure);
  61397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61398. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure})});
  61399. //>>excludeEnd("ctx");
  61400. }; }),
  61401. $globals.TIRInlinedVisitor);
  61402. $core.addMethod(
  61403. $core.method({
  61404. selector: "visitIRInlinedSequence:",
  61405. protocol: "visiting",
  61406. //>>excludeStart("ide", pragmas.excludeIdeData);
  61407. args: ["anIRInlinedSequence"],
  61408. source: "visitIRInlinedSequence: anIRInlinedSequence\x0a\x09^ self visitIRSequence: anIRInlinedSequence",
  61409. referencedClasses: [],
  61410. //>>excludeEnd("ide");
  61411. pragmas: [],
  61412. messageSends: ["visitIRSequence:"]
  61413. }, function ($methodClass){ return function (anIRInlinedSequence){
  61414. var self=this,$self=this;
  61415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61416. return $core.withContext(function($ctx1) {
  61417. //>>excludeEnd("ctx");
  61418. return $self._visitIRSequence_(anIRInlinedSequence);
  61419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61420. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence})});
  61421. //>>excludeEnd("ctx");
  61422. }; }),
  61423. $globals.TIRInlinedVisitor);
  61424. $core.setTraitComposition([{trait: $globals.TIRInlinedVisitor}], $globals.IRInliner);
  61425. $core.setTraitComposition([{trait: $globals.TIRInlinedVisitor}], $globals.IRInliningJSTranslator);
  61426. $core.addMethod(
  61427. $core.method({
  61428. selector: "asInlinedBlockResult",
  61429. protocol: "*Compiler-Inlining",
  61430. //>>excludeStart("ide", pragmas.excludeIdeData);
  61431. args: [],
  61432. source: "asInlinedBlockResult\x0a\x09^ self expression",
  61433. referencedClasses: [],
  61434. //>>excludeEnd("ide");
  61435. pragmas: [],
  61436. messageSends: ["expression"]
  61437. }, function ($methodClass){ return function (){
  61438. var self=this,$self=this;
  61439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61440. return $core.withContext(function($ctx1) {
  61441. //>>excludeEnd("ctx");
  61442. return $self._expression();
  61443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61444. }, function($ctx1) {$ctx1.fill(self,"asInlinedBlockResult",{})});
  61445. //>>excludeEnd("ctx");
  61446. }; }),
  61447. $globals.IRBlockReturn);
  61448. $core.addMethod(
  61449. $core.method({
  61450. selector: "asInlinedBlockResult",
  61451. protocol: "*Compiler-Inlining",
  61452. //>>excludeStart("ide", pragmas.excludeIdeData);
  61453. args: [],
  61454. source: "asInlinedBlockResult\x0a\x09^ self",
  61455. referencedClasses: [],
  61456. //>>excludeEnd("ide");
  61457. pragmas: [],
  61458. messageSends: []
  61459. }, function ($methodClass){ return function (){
  61460. var self=this,$self=this;
  61461. return self;
  61462. }; }),
  61463. $globals.IRInstruction);
  61464. });
  61465. define('amber/core/Compiler-Interpreter',["amber/boot", "require", "amber/core/Compiler-AST", "amber/core/Compiler-Core", "amber/core/Compiler-Semantic", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Methods", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  61466. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  61467. var $pkg = $core.addPackage("Compiler-Interpreter");
  61468. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  61469. $core.addClass("AIBlockClosure", $globals.BlockClosure, "Compiler-Interpreter");
  61470. $core.setSlots($globals.AIBlockClosure, ["node", "outerContext"]);
  61471. //>>excludeStart("ide", pragmas.excludeIdeData);
  61472. $globals.AIBlockClosure.comment="I am a special `BlockClosure` subclass used by an interpreter to interpret a block node.\x0a\x0aWhile I am polymorphic with `BlockClosure`, some methods such as `#new` will raise interpretation errors. Unlike a `BlockClosure`, my instance are not JavaScript functions.\x0a\x0aEvaluating an instance will result in interpreting the `node` instance variable (instance of `BlockNode`).";
  61473. //>>excludeEnd("ide");
  61474. $core.addMethod(
  61475. $core.method({
  61476. selector: "applyTo:arguments:",
  61477. protocol: "evaluating",
  61478. //>>excludeStart("ide", pragmas.excludeIdeData);
  61479. args: ["anObject", "aCollection"],
  61480. source: "applyTo: anObject arguments: aCollection\x0a\x09self interpreterError",
  61481. referencedClasses: [],
  61482. //>>excludeEnd("ide");
  61483. pragmas: [],
  61484. messageSends: ["interpreterError"]
  61485. }, function ($methodClass){ return function (anObject,aCollection){
  61486. var self=this,$self=this;
  61487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61488. return $core.withContext(function($ctx1) {
  61489. //>>excludeEnd("ctx");
  61490. $self._interpreterError();
  61491. return self;
  61492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61493. }, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection})});
  61494. //>>excludeEnd("ctx");
  61495. }; }),
  61496. $globals.AIBlockClosure);
  61497. $core.addMethod(
  61498. $core.method({
  61499. selector: "compiledSource",
  61500. protocol: "accessing",
  61501. //>>excludeStart("ide", pragmas.excludeIdeData);
  61502. args: [],
  61503. source: "compiledSource\x0a\x09\x22Unlike blocks, the receiver doesn't represent a JS function\x22\x0a\x09\x0a\x09^ '[ AST Block closure ]'",
  61504. referencedClasses: [],
  61505. //>>excludeEnd("ide");
  61506. pragmas: [],
  61507. messageSends: []
  61508. }, function ($methodClass){ return function (){
  61509. var self=this,$self=this;
  61510. return "[ AST Block closure ]";
  61511. }; }),
  61512. $globals.AIBlockClosure);
  61513. $core.addMethod(
  61514. $core.method({
  61515. selector: "currySelf",
  61516. protocol: "converting",
  61517. //>>excludeStart("ide", pragmas.excludeIdeData);
  61518. args: [],
  61519. source: "currySelf\x0a\x09self interpreterError",
  61520. referencedClasses: [],
  61521. //>>excludeEnd("ide");
  61522. pragmas: [],
  61523. messageSends: ["interpreterError"]
  61524. }, function ($methodClass){ return function (){
  61525. var self=this,$self=this;
  61526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61527. return $core.withContext(function($ctx1) {
  61528. //>>excludeEnd("ctx");
  61529. $self._interpreterError();
  61530. return self;
  61531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61532. }, function($ctx1) {$ctx1.fill(self,"currySelf",{})});
  61533. //>>excludeEnd("ctx");
  61534. }; }),
  61535. $globals.AIBlockClosure);
  61536. $core.addMethod(
  61537. $core.method({
  61538. selector: "initializeWithContext:node:",
  61539. protocol: "initialization",
  61540. //>>excludeStart("ide", pragmas.excludeIdeData);
  61541. args: ["aContext", "aNode"],
  61542. source: "initializeWithContext: aContext node: aNode\x0a\x09node := aNode.\x0a\x09outerContext := aContext",
  61543. referencedClasses: [],
  61544. //>>excludeEnd("ide");
  61545. pragmas: [],
  61546. messageSends: []
  61547. }, function ($methodClass){ return function (aContext,aNode){
  61548. var self=this,$self=this;
  61549. $self.node=aNode;
  61550. $self.outerContext=aContext;
  61551. return self;
  61552. }; }),
  61553. $globals.AIBlockClosure);
  61554. $core.addMethod(
  61555. $core.method({
  61556. selector: "interpreterError",
  61557. protocol: "error handling",
  61558. //>>excludeStart("ide", pragmas.excludeIdeData);
  61559. args: [],
  61560. source: "interpreterError\x0a\x09ASTInterpreterError signal: 'Method cannot be interpreted by the interpreter.'",
  61561. referencedClasses: ["ASTInterpreterError"],
  61562. //>>excludeEnd("ide");
  61563. pragmas: [],
  61564. messageSends: ["signal:"]
  61565. }, function ($methodClass){ return function (){
  61566. var self=this,$self=this;
  61567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61568. return $core.withContext(function($ctx1) {
  61569. //>>excludeEnd("ctx");
  61570. $recv($globals.ASTInterpreterError)._signal_("Method cannot be interpreted by the interpreter.");
  61571. return self;
  61572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61573. }, function($ctx1) {$ctx1.fill(self,"interpreterError",{})});
  61574. //>>excludeEnd("ctx");
  61575. }; }),
  61576. $globals.AIBlockClosure);
  61577. $core.addMethod(
  61578. $core.method({
  61579. selector: "numArgs",
  61580. protocol: "accessing",
  61581. //>>excludeStart("ide", pragmas.excludeIdeData);
  61582. args: [],
  61583. source: "numArgs\x0a\x09^ node temps size",
  61584. referencedClasses: [],
  61585. //>>excludeEnd("ide");
  61586. pragmas: [],
  61587. messageSends: ["size", "temps"]
  61588. }, function ($methodClass){ return function (){
  61589. var self=this,$self=this;
  61590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61591. return $core.withContext(function($ctx1) {
  61592. //>>excludeEnd("ctx");
  61593. return $recv($recv($self.node)._temps())._size();
  61594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61595. }, function($ctx1) {$ctx1.fill(self,"numArgs",{})});
  61596. //>>excludeEnd("ctx");
  61597. }; }),
  61598. $globals.AIBlockClosure);
  61599. $core.addMethod(
  61600. $core.method({
  61601. selector: "value",
  61602. protocol: "evaluating",
  61603. //>>excludeStart("ide", pragmas.excludeIdeData);
  61604. args: [],
  61605. source: "value\x0a\x09^ self valueWithPossibleArguments: #()",
  61606. referencedClasses: [],
  61607. //>>excludeEnd("ide");
  61608. pragmas: [],
  61609. messageSends: ["valueWithPossibleArguments:"]
  61610. }, function ($methodClass){ return function (){
  61611. var self=this,$self=this;
  61612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61613. return $core.withContext(function($ctx1) {
  61614. //>>excludeEnd("ctx");
  61615. return $self._valueWithPossibleArguments_([]);
  61616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61617. }, function($ctx1) {$ctx1.fill(self,"value",{})});
  61618. //>>excludeEnd("ctx");
  61619. }; }),
  61620. $globals.AIBlockClosure);
  61621. $core.addMethod(
  61622. $core.method({
  61623. selector: "value:",
  61624. protocol: "evaluating",
  61625. //>>excludeStart("ide", pragmas.excludeIdeData);
  61626. args: ["anArgument"],
  61627. source: "value: anArgument\x0a\x09^ self valueWithPossibleArguments: {anArgument}",
  61628. referencedClasses: [],
  61629. //>>excludeEnd("ide");
  61630. pragmas: [],
  61631. messageSends: ["valueWithPossibleArguments:"]
  61632. }, function ($methodClass){ return function (anArgument){
  61633. var self=this,$self=this;
  61634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61635. return $core.withContext(function($ctx1) {
  61636. //>>excludeEnd("ctx");
  61637. return $self._valueWithPossibleArguments_([anArgument]);
  61638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61639. }, function($ctx1) {$ctx1.fill(self,"value:",{anArgument:anArgument})});
  61640. //>>excludeEnd("ctx");
  61641. }; }),
  61642. $globals.AIBlockClosure);
  61643. $core.addMethod(
  61644. $core.method({
  61645. selector: "value:value:",
  61646. protocol: "evaluating",
  61647. //>>excludeStart("ide", pragmas.excludeIdeData);
  61648. args: ["firstArgument", "secondArgument"],
  61649. source: "value: firstArgument value: secondArgument\x0a\x09^ self valueWithPossibleArguments: {firstArgument . secondArgument}",
  61650. referencedClasses: [],
  61651. //>>excludeEnd("ide");
  61652. pragmas: [],
  61653. messageSends: ["valueWithPossibleArguments:"]
  61654. }, function ($methodClass){ return function (firstArgument,secondArgument){
  61655. var self=this,$self=this;
  61656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61657. return $core.withContext(function($ctx1) {
  61658. //>>excludeEnd("ctx");
  61659. return $self._valueWithPossibleArguments_([firstArgument,secondArgument]);
  61660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61661. }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArgument:firstArgument,secondArgument:secondArgument})});
  61662. //>>excludeEnd("ctx");
  61663. }; }),
  61664. $globals.AIBlockClosure);
  61665. $core.addMethod(
  61666. $core.method({
  61667. selector: "value:value:value:",
  61668. protocol: "evaluating",
  61669. //>>excludeStart("ide", pragmas.excludeIdeData);
  61670. args: ["firstArgument", "secondArgument", "thirdArgument"],
  61671. source: "value: firstArgument value: secondArgument value: thirdArgument\x0a\x09^ self valueWithPossibleArguments: {firstArgument . secondArgument . thirdArgument}",
  61672. referencedClasses: [],
  61673. //>>excludeEnd("ide");
  61674. pragmas: [],
  61675. messageSends: ["valueWithPossibleArguments:"]
  61676. }, function ($methodClass){ return function (firstArgument,secondArgument,thirdArgument){
  61677. var self=this,$self=this;
  61678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61679. return $core.withContext(function($ctx1) {
  61680. //>>excludeEnd("ctx");
  61681. return $self._valueWithPossibleArguments_([firstArgument,secondArgument,thirdArgument]);
  61682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61683. }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArgument:firstArgument,secondArgument:secondArgument,thirdArgument:thirdArgument})});
  61684. //>>excludeEnd("ctx");
  61685. }; }),
  61686. $globals.AIBlockClosure);
  61687. $core.addMethod(
  61688. $core.method({
  61689. selector: "valueWithPossibleArguments:",
  61690. protocol: "evaluating",
  61691. //>>excludeStart("ide", pragmas.excludeIdeData);
  61692. args: ["aCollection"],
  61693. source: "valueWithPossibleArguments: aCollection\x0a\x09| context sequenceNode |\x0a\x09context := outerContext newInnerContext.\x0a\x0a\x09\x22Interpret a copy of the sequence node to avoid creating a new AIBlockClosure\x22\x0a\x09sequenceNode := node sequenceNode copy\x0a\x09\x09parent: nil;\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09\x22Define locals in the context\x22\x0a\x09sequenceNode temps do: [ :each |\x0a\x09\x09context defineLocal: each ].\x0a\x09\x09\x0a\x09\x22Populate the arguments into the context locals\x22\x09\x0a\x09node parameters withIndexDo: [ :each :index |\x0a\x09\x09context defineLocal: each.\x0a\x09\x09context localAt: each put: (aCollection at: index ifAbsent: [ nil ]) ].\x0a\x0a\x09\x22Interpret the first node of the BlockSequenceNode\x22\x0a\x09context interpreter\x0a\x09\x09node: sequenceNode;\x0a\x09\x09enterNode;\x0a\x09\x09proceed.\x0a\x09\x09\x0a\x09outerContext interpreter\x0a\x09\x09setNonLocalReturnFromContext: context.\x0a\x09\x09\x0a\x09^ context interpreter pop",
  61694. referencedClasses: [],
  61695. //>>excludeEnd("ide");
  61696. pragmas: [],
  61697. messageSends: ["newInnerContext", "parent:", "copy", "sequenceNode", "yourself", "do:", "temps", "defineLocal:", "withIndexDo:", "parameters", "localAt:put:", "at:ifAbsent:", "node:", "interpreter", "enterNode", "proceed", "setNonLocalReturnFromContext:", "pop"]
  61698. }, function ($methodClass){ return function (aCollection){
  61699. var self=this,$self=this;
  61700. var context,sequenceNode;
  61701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61702. return $core.withContext(function($ctx1) {
  61703. //>>excludeEnd("ctx");
  61704. var $1,$2;
  61705. context=$recv($self.outerContext)._newInnerContext();
  61706. $1=$recv($recv($self.node)._sequenceNode())._copy();
  61707. $recv($1)._parent_(nil);
  61708. sequenceNode=$recv($1)._yourself();
  61709. $recv($recv(sequenceNode)._temps())._do_((function(each){
  61710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61711. return $core.withContext(function($ctx2) {
  61712. //>>excludeEnd("ctx");
  61713. return [$recv(context)._defineLocal_(each)
  61714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61715. ,$ctx2.sendIdx["defineLocal:"]=1
  61716. //>>excludeEnd("ctx");
  61717. ][0];
  61718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61719. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  61720. //>>excludeEnd("ctx");
  61721. }));
  61722. $recv($recv($self.node)._parameters())._withIndexDo_((function(each,index){
  61723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61724. return $core.withContext(function($ctx2) {
  61725. //>>excludeEnd("ctx");
  61726. $recv(context)._defineLocal_(each);
  61727. return $recv(context)._localAt_put_(each,$recv(aCollection)._at_ifAbsent_(index,(function(){
  61728. return nil;
  61729. })));
  61730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61731. }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,2)});
  61732. //>>excludeEnd("ctx");
  61733. }));
  61734. $2=[$recv(context)._interpreter()
  61735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61736. ,$ctx1.sendIdx["interpreter"]=1
  61737. //>>excludeEnd("ctx");
  61738. ][0];
  61739. $recv($2)._node_(sequenceNode);
  61740. $recv($2)._enterNode();
  61741. $recv($2)._proceed();
  61742. $recv([$recv($self.outerContext)._interpreter()
  61743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61744. ,$ctx1.sendIdx["interpreter"]=2
  61745. //>>excludeEnd("ctx");
  61746. ][0])._setNonLocalReturnFromContext_(context);
  61747. return $recv($recv(context)._interpreter())._pop();
  61748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61749. }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection,context:context,sequenceNode:sequenceNode})});
  61750. //>>excludeEnd("ctx");
  61751. }; }),
  61752. $globals.AIBlockClosure);
  61753. $core.addMethod(
  61754. $core.method({
  61755. selector: "forContext:node:",
  61756. protocol: "instance creation",
  61757. //>>excludeStart("ide", pragmas.excludeIdeData);
  61758. args: ["aContext", "aNode"],
  61759. source: "forContext: aContext node: aNode\x0a\x09^ self new\x0a\x09\x09initializeWithContext: aContext node: aNode;\x0a\x09\x09yourself",
  61760. referencedClasses: [],
  61761. //>>excludeEnd("ide");
  61762. pragmas: [],
  61763. messageSends: ["initializeWithContext:node:", "new", "yourself"]
  61764. }, function ($methodClass){ return function (aContext,aNode){
  61765. var self=this,$self=this;
  61766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61767. return $core.withContext(function($ctx1) {
  61768. //>>excludeEnd("ctx");
  61769. var $1;
  61770. $1=$self._new();
  61771. $recv($1)._initializeWithContext_node_(aContext,aNode);
  61772. return $recv($1)._yourself();
  61773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61774. }, function($ctx1) {$ctx1.fill(self,"forContext:node:",{aContext:aContext,aNode:aNode})});
  61775. //>>excludeEnd("ctx");
  61776. }; }),
  61777. $globals.AIBlockClosure.a$cls);
  61778. $core.addClass("AIContext", $globals.Object, "Compiler-Interpreter");
  61779. $core.setSlots($globals.AIContext, ["outerContext", "innerContext", "pc", "locals", "selector", "index", "sendIndexes", "evaluatedSelector", "ast", "interpreter", "supercall"]);
  61780. //>>excludeStart("ide", pragmas.excludeIdeData);
  61781. $globals.AIContext.comment="I am like a `MethodContext`, used by the `ASTInterpreter`.\x0aUnlike a `MethodContext`, my instances are not read-only.\x0a\x0aWhen debugging, my instances are created by copying the current `MethodContext` (thisContext)";
  61782. //>>excludeEnd("ide");
  61783. $core.addMethod(
  61784. $core.method({
  61785. selector: "arguments",
  61786. protocol: "interpreting",
  61787. //>>excludeStart("ide", pragmas.excludeIdeData);
  61788. args: [],
  61789. source: "arguments\x0a\x09^ self ast arguments collect: [ :each |\x0a\x09\x09self localAt: each ifAbsent: [ self error: 'Argument not in context' ] ]",
  61790. referencedClasses: [],
  61791. //>>excludeEnd("ide");
  61792. pragmas: [],
  61793. messageSends: ["collect:", "arguments", "ast", "localAt:ifAbsent:", "error:"]
  61794. }, function ($methodClass){ return function (){
  61795. var self=this,$self=this;
  61796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61797. return $core.withContext(function($ctx1) {
  61798. //>>excludeEnd("ctx");
  61799. return $recv($recv($self._ast())._arguments())._collect_((function(each){
  61800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61801. return $core.withContext(function($ctx2) {
  61802. //>>excludeEnd("ctx");
  61803. return $self._localAt_ifAbsent_(each,(function(){
  61804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61805. return $core.withContext(function($ctx3) {
  61806. //>>excludeEnd("ctx");
  61807. return $self._error_("Argument not in context");
  61808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61809. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  61810. //>>excludeEnd("ctx");
  61811. }));
  61812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61813. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  61814. //>>excludeEnd("ctx");
  61815. }));
  61816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61817. }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
  61818. //>>excludeEnd("ctx");
  61819. }; }),
  61820. $globals.AIContext);
  61821. $core.addMethod(
  61822. $core.method({
  61823. selector: "ast",
  61824. protocol: "interpreting",
  61825. //>>excludeStart("ide", pragmas.excludeIdeData);
  61826. args: [],
  61827. source: "ast\x0a\x09self isBlockContext ifTrue: [ \x0a\x09\x09^ self outerContext ifNotNil: [ :context | context ast ] ].\x0a\x0a\x09ast ifNil: [ self initializeAST ].\x0a\x09^ ast",
  61828. referencedClasses: [],
  61829. //>>excludeEnd("ide");
  61830. pragmas: [],
  61831. messageSends: ["ifTrue:", "isBlockContext", "ifNotNil:", "outerContext", "ast", "ifNil:", "initializeAST"]
  61832. }, function ($methodClass){ return function (){
  61833. var self=this,$self=this;
  61834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61835. return $core.withContext(function($ctx1) {
  61836. //>>excludeEnd("ctx");
  61837. var $1,$2;
  61838. if($core.assert($self._isBlockContext())){
  61839. $1=$self._outerContext();
  61840. if($1 == null || $1.a$nil){
  61841. return $1;
  61842. } else {
  61843. var context;
  61844. context=$1;
  61845. return $recv(context)._ast();
  61846. }
  61847. }
  61848. $2=$self.ast;
  61849. if($2 == null || $2.a$nil){
  61850. $self._initializeAST();
  61851. } else {
  61852. $2;
  61853. }
  61854. return $self.ast;
  61855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61856. }, function($ctx1) {$ctx1.fill(self,"ast",{})});
  61857. //>>excludeEnd("ctx");
  61858. }; }),
  61859. $globals.AIContext);
  61860. $core.addMethod(
  61861. $core.method({
  61862. selector: "basicLocalAt:",
  61863. protocol: "private",
  61864. //>>excludeStart("ide", pragmas.excludeIdeData);
  61865. args: ["aString"],
  61866. source: "basicLocalAt: aString\x0a\x09^ self locals at: aString",
  61867. referencedClasses: [],
  61868. //>>excludeEnd("ide");
  61869. pragmas: [],
  61870. messageSends: ["at:", "locals"]
  61871. }, function ($methodClass){ return function (aString){
  61872. var self=this,$self=this;
  61873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61874. return $core.withContext(function($ctx1) {
  61875. //>>excludeEnd("ctx");
  61876. return $recv($self._locals())._at_(aString);
  61877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61878. }, function($ctx1) {$ctx1.fill(self,"basicLocalAt:",{aString:aString})});
  61879. //>>excludeEnd("ctx");
  61880. }; }),
  61881. $globals.AIContext);
  61882. $core.addMethod(
  61883. $core.method({
  61884. selector: "basicLocalAt:put:",
  61885. protocol: "private",
  61886. //>>excludeStart("ide", pragmas.excludeIdeData);
  61887. args: ["aString", "anObject"],
  61888. source: "basicLocalAt: aString put: anObject\x0a\x09self locals at: aString put: anObject",
  61889. referencedClasses: [],
  61890. //>>excludeEnd("ide");
  61891. pragmas: [],
  61892. messageSends: ["at:put:", "locals"]
  61893. }, function ($methodClass){ return function (aString,anObject){
  61894. var self=this,$self=this;
  61895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61896. return $core.withContext(function($ctx1) {
  61897. //>>excludeEnd("ctx");
  61898. $recv($self._locals())._at_put_(aString,anObject);
  61899. return self;
  61900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61901. }, function($ctx1) {$ctx1.fill(self,"basicLocalAt:put:",{aString:aString,anObject:anObject})});
  61902. //>>excludeEnd("ctx");
  61903. }; }),
  61904. $globals.AIContext);
  61905. $core.addMethod(
  61906. $core.method({
  61907. selector: "basicReceiver",
  61908. protocol: "interpreting",
  61909. //>>excludeStart("ide", pragmas.excludeIdeData);
  61910. args: [],
  61911. source: "basicReceiver\x0a\x09^ self localAt: 'self'",
  61912. referencedClasses: [],
  61913. //>>excludeEnd("ide");
  61914. pragmas: [],
  61915. messageSends: ["localAt:"]
  61916. }, function ($methodClass){ return function (){
  61917. var self=this,$self=this;
  61918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61919. return $core.withContext(function($ctx1) {
  61920. //>>excludeEnd("ctx");
  61921. return $self._localAt_("self");
  61922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61923. }, function($ctx1) {$ctx1.fill(self,"basicReceiver",{})});
  61924. //>>excludeEnd("ctx");
  61925. }; }),
  61926. $globals.AIContext);
  61927. $core.addMethod(
  61928. $core.method({
  61929. selector: "defineLocal:",
  61930. protocol: "accessing",
  61931. //>>excludeStart("ide", pragmas.excludeIdeData);
  61932. args: ["aString"],
  61933. source: "defineLocal: aString\x0a\x09self locals at: aString put: nil",
  61934. referencedClasses: [],
  61935. //>>excludeEnd("ide");
  61936. pragmas: [],
  61937. messageSends: ["at:put:", "locals"]
  61938. }, function ($methodClass){ return function (aString){
  61939. var self=this,$self=this;
  61940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61941. return $core.withContext(function($ctx1) {
  61942. //>>excludeEnd("ctx");
  61943. $recv($self._locals())._at_put_(aString,nil);
  61944. return self;
  61945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61946. }, function($ctx1) {$ctx1.fill(self,"defineLocal:",{aString:aString})});
  61947. //>>excludeEnd("ctx");
  61948. }; }),
  61949. $globals.AIContext);
  61950. $core.addMethod(
  61951. $core.method({
  61952. selector: "evaluate:on:",
  61953. protocol: "evaluating",
  61954. //>>excludeStart("ide", pragmas.excludeIdeData);
  61955. args: ["aString", "anEvaluator"],
  61956. source: "evaluate: aString on: anEvaluator\x0a\x09^ anEvaluator evaluate: aString context: self",
  61957. referencedClasses: [],
  61958. //>>excludeEnd("ide");
  61959. pragmas: [],
  61960. messageSends: ["evaluate:context:"]
  61961. }, function ($methodClass){ return function (aString,anEvaluator){
  61962. var self=this,$self=this;
  61963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61964. return $core.withContext(function($ctx1) {
  61965. //>>excludeEnd("ctx");
  61966. return $recv(anEvaluator)._evaluate_context_(aString,self);
  61967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61968. }, function($ctx1) {$ctx1.fill(self,"evaluate:on:",{aString:aString,anEvaluator:anEvaluator})});
  61969. //>>excludeEnd("ctx");
  61970. }; }),
  61971. $globals.AIContext);
  61972. $core.addMethod(
  61973. $core.method({
  61974. selector: "evaluateNode:",
  61975. protocol: "evaluating",
  61976. //>>excludeStart("ide", pragmas.excludeIdeData);
  61977. args: ["aNode"],
  61978. source: "evaluateNode: aNode\x0a\x09^ ASTInterpreter new\x0a\x09\x09context: self;\x0a\x09\x09node: aNode;\x0a\x09\x09enterNode;\x0a\x09\x09proceed;\x0a\x09\x09result",
  61979. referencedClasses: ["ASTInterpreter"],
  61980. //>>excludeEnd("ide");
  61981. pragmas: [],
  61982. messageSends: ["context:", "new", "node:", "enterNode", "proceed", "result"]
  61983. }, function ($methodClass){ return function (aNode){
  61984. var self=this,$self=this;
  61985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61986. return $core.withContext(function($ctx1) {
  61987. //>>excludeEnd("ctx");
  61988. var $1;
  61989. $1=$recv($globals.ASTInterpreter)._new();
  61990. $recv($1)._context_(self);
  61991. $recv($1)._node_(aNode);
  61992. $recv($1)._enterNode();
  61993. $recv($1)._proceed();
  61994. return $recv($1)._result();
  61995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61996. }, function($ctx1) {$ctx1.fill(self,"evaluateNode:",{aNode:aNode})});
  61997. //>>excludeEnd("ctx");
  61998. }; }),
  61999. $globals.AIContext);
  62000. $core.addMethod(
  62001. $core.method({
  62002. selector: "evaluatedSelector",
  62003. protocol: "accessing",
  62004. //>>excludeStart("ide", pragmas.excludeIdeData);
  62005. args: [],
  62006. source: "evaluatedSelector\x0a\x09^ evaluatedSelector",
  62007. referencedClasses: [],
  62008. //>>excludeEnd("ide");
  62009. pragmas: [],
  62010. messageSends: []
  62011. }, function ($methodClass){ return function (){
  62012. var self=this,$self=this;
  62013. return $self.evaluatedSelector;
  62014. }; }),
  62015. $globals.AIContext);
  62016. $core.addMethod(
  62017. $core.method({
  62018. selector: "evaluatedSelector:",
  62019. protocol: "accessing",
  62020. //>>excludeStart("ide", pragmas.excludeIdeData);
  62021. args: ["aString"],
  62022. source: "evaluatedSelector: aString\x0a\x09evaluatedSelector := aString",
  62023. referencedClasses: [],
  62024. //>>excludeEnd("ide");
  62025. pragmas: [],
  62026. messageSends: []
  62027. }, function ($methodClass){ return function (aString){
  62028. var self=this,$self=this;
  62029. $self.evaluatedSelector=aString;
  62030. return self;
  62031. }; }),
  62032. $globals.AIContext);
  62033. $core.addMethod(
  62034. $core.method({
  62035. selector: "home",
  62036. protocol: "accessing",
  62037. //>>excludeStart("ide", pragmas.excludeIdeData);
  62038. args: [],
  62039. source: "home\x0a\x09^ nil",
  62040. referencedClasses: [],
  62041. //>>excludeEnd("ide");
  62042. pragmas: [],
  62043. messageSends: []
  62044. }, function ($methodClass){ return function (){
  62045. var self=this,$self=this;
  62046. return nil;
  62047. }; }),
  62048. $globals.AIContext);
  62049. $core.addMethod(
  62050. $core.method({
  62051. selector: "index",
  62052. protocol: "accessing",
  62053. //>>excludeStart("ide", pragmas.excludeIdeData);
  62054. args: [],
  62055. source: "index\x0a\x09^ index ifNil: [ 0 ]",
  62056. referencedClasses: [],
  62057. //>>excludeEnd("ide");
  62058. pragmas: [],
  62059. messageSends: ["ifNil:"]
  62060. }, function ($methodClass){ return function (){
  62061. var self=this,$self=this;
  62062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62063. return $core.withContext(function($ctx1) {
  62064. //>>excludeEnd("ctx");
  62065. var $1;
  62066. $1=$self.index;
  62067. if($1 == null || $1.a$nil){
  62068. return (0);
  62069. } else {
  62070. return $1;
  62071. }
  62072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62073. }, function($ctx1) {$ctx1.fill(self,"index",{})});
  62074. //>>excludeEnd("ctx");
  62075. }; }),
  62076. $globals.AIContext);
  62077. $core.addMethod(
  62078. $core.method({
  62079. selector: "index:",
  62080. protocol: "accessing",
  62081. //>>excludeStart("ide", pragmas.excludeIdeData);
  62082. args: ["anInteger"],
  62083. source: "index: anInteger\x0a\x09index := anInteger",
  62084. referencedClasses: [],
  62085. //>>excludeEnd("ide");
  62086. pragmas: [],
  62087. messageSends: []
  62088. }, function ($methodClass){ return function (anInteger){
  62089. var self=this,$self=this;
  62090. $self.index=anInteger;
  62091. return self;
  62092. }; }),
  62093. $globals.AIContext);
  62094. $core.addMethod(
  62095. $core.method({
  62096. selector: "initializeAST",
  62097. protocol: "initialization",
  62098. //>>excludeStart("ide", pragmas.excludeIdeData);
  62099. args: [],
  62100. source: "initializeAST\x0a\x09ast := self method ast.\x0a\x09(SemanticAnalyzer on: self method origin)\x0a\x09\x09visit: ast",
  62101. referencedClasses: ["SemanticAnalyzer"],
  62102. //>>excludeEnd("ide");
  62103. pragmas: [],
  62104. messageSends: ["ast", "method", "visit:", "on:", "origin"]
  62105. }, function ($methodClass){ return function (){
  62106. var self=this,$self=this;
  62107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62108. return $core.withContext(function($ctx1) {
  62109. //>>excludeEnd("ctx");
  62110. $self.ast=$recv([$self._method()
  62111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62112. ,$ctx1.sendIdx["method"]=1
  62113. //>>excludeEnd("ctx");
  62114. ][0])._ast();
  62115. $recv($recv($globals.SemanticAnalyzer)._on_($recv($self._method())._origin()))._visit_($self.ast);
  62116. return self;
  62117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62118. }, function($ctx1) {$ctx1.fill(self,"initializeAST",{})});
  62119. //>>excludeEnd("ctx");
  62120. }; }),
  62121. $globals.AIContext);
  62122. $core.addMethod(
  62123. $core.method({
  62124. selector: "initializeFromMethodContext:",
  62125. protocol: "initialization",
  62126. //>>excludeStart("ide", pragmas.excludeIdeData);
  62127. args: ["aMethodContext"],
  62128. source: "initializeFromMethodContext: aMethodContext\x0a\x0a\x09self\x0a\x09\x09evaluatedSelector: aMethodContext evaluatedSelector;\x0a\x09\x09index: aMethodContext index;\x0a\x09\x09sendIndexes: aMethodContext sendIndexes;\x0a\x09\x09receiver: aMethodContext receiver;\x0a\x09\x09supercall: aMethodContext supercall;\x0a\x09\x09selector: aMethodContext selector.\x0a\x09\x09\x0a\x09aMethodContext outerContext ifNotNil: [ :outer |\x0a\x09\x09\x22If the method context is nil, the block was defined in JS, so ignore it\x22\x0a\x09\x09outer methodContext ifNotNil: [\x0a\x09\x09\x09self outerContext: (self class fromMethodContext: aMethodContext outerContext) ].\x0a\x09\x09\x09aMethodContext locals keysAndValuesDo: [ :key :value |\x0a\x09\x09\x09\x09self locals at: key put: value ] ]",
  62129. referencedClasses: [],
  62130. //>>excludeEnd("ide");
  62131. pragmas: [],
  62132. messageSends: ["evaluatedSelector:", "evaluatedSelector", "index:", "index", "sendIndexes:", "sendIndexes", "receiver:", "receiver", "supercall:", "supercall", "selector:", "selector", "ifNotNil:", "outerContext", "methodContext", "outerContext:", "fromMethodContext:", "class", "keysAndValuesDo:", "locals", "at:put:"]
  62133. }, function ($methodClass){ return function (aMethodContext){
  62134. var self=this,$self=this;
  62135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62136. return $core.withContext(function($ctx1) {
  62137. //>>excludeEnd("ctx");
  62138. var $1,$2;
  62139. $self._evaluatedSelector_($recv(aMethodContext)._evaluatedSelector());
  62140. $self._index_($recv(aMethodContext)._index());
  62141. $self._sendIndexes_($recv(aMethodContext)._sendIndexes());
  62142. $self._receiver_($recv(aMethodContext)._receiver());
  62143. $self._supercall_($recv(aMethodContext)._supercall());
  62144. $self._selector_($recv(aMethodContext)._selector());
  62145. $1=[$recv(aMethodContext)._outerContext()
  62146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62147. ,$ctx1.sendIdx["outerContext"]=1
  62148. //>>excludeEnd("ctx");
  62149. ][0];
  62150. if($1 == null || $1.a$nil){
  62151. $1;
  62152. } else {
  62153. var outer;
  62154. outer=$1;
  62155. $2=$recv(outer)._methodContext();
  62156. if($2 == null || $2.a$nil){
  62157. $2;
  62158. } else {
  62159. $self._outerContext_($recv($self._class())._fromMethodContext_($recv(aMethodContext)._outerContext()));
  62160. }
  62161. $recv([$recv(aMethodContext)._locals()
  62162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62163. ,$ctx1.sendIdx["locals"]=1
  62164. //>>excludeEnd("ctx");
  62165. ][0])._keysAndValuesDo_((function(key,value){
  62166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62167. return $core.withContext(function($ctx2) {
  62168. //>>excludeEnd("ctx");
  62169. return $recv($self._locals())._at_put_(key,value);
  62170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62171. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
  62172. //>>excludeEnd("ctx");
  62173. }));
  62174. }
  62175. return self;
  62176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62177. }, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:",{aMethodContext:aMethodContext})});
  62178. //>>excludeEnd("ctx");
  62179. }; }),
  62180. $globals.AIContext);
  62181. $core.addMethod(
  62182. $core.method({
  62183. selector: "initializeInterpreter",
  62184. protocol: "initialization",
  62185. //>>excludeStart("ide", pragmas.excludeIdeData);
  62186. args: [],
  62187. source: "initializeInterpreter\x0a\x09interpreter := ASTInterpreter new\x0a\x09\x09context: self;\x0a\x09\x09yourself.\x0a\x09\x0a\x09self innerContext ifNotNil: [\x0a\x09\x09self setupInterpreter: interpreter ]",
  62188. referencedClasses: ["ASTInterpreter"],
  62189. //>>excludeEnd("ide");
  62190. pragmas: [],
  62191. messageSends: ["context:", "new", "yourself", "ifNotNil:", "innerContext", "setupInterpreter:"]
  62192. }, function ($methodClass){ return function (){
  62193. var self=this,$self=this;
  62194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62195. return $core.withContext(function($ctx1) {
  62196. //>>excludeEnd("ctx");
  62197. var $1,$2;
  62198. $1=$recv($globals.ASTInterpreter)._new();
  62199. $recv($1)._context_(self);
  62200. $self.interpreter=$recv($1)._yourself();
  62201. $2=$self._innerContext();
  62202. if($2 == null || $2.a$nil){
  62203. $2;
  62204. } else {
  62205. $self._setupInterpreter_($self.interpreter);
  62206. }
  62207. return self;
  62208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62209. }, function($ctx1) {$ctx1.fill(self,"initializeInterpreter",{})});
  62210. //>>excludeEnd("ctx");
  62211. }; }),
  62212. $globals.AIContext);
  62213. $core.addMethod(
  62214. $core.method({
  62215. selector: "initializeLocals",
  62216. protocol: "initialization",
  62217. //>>excludeStart("ide", pragmas.excludeIdeData);
  62218. args: [],
  62219. source: "initializeLocals\x0a\x09locals := Dictionary new.\x0a\x09locals at: 'thisContext' put: self.",
  62220. referencedClasses: ["Dictionary"],
  62221. //>>excludeEnd("ide");
  62222. pragmas: [],
  62223. messageSends: ["new", "at:put:"]
  62224. }, function ($methodClass){ return function (){
  62225. var self=this,$self=this;
  62226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62227. return $core.withContext(function($ctx1) {
  62228. //>>excludeEnd("ctx");
  62229. $self.locals=$recv($globals.Dictionary)._new();
  62230. $recv($self.locals)._at_put_("thisContext",self);
  62231. return self;
  62232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62233. }, function($ctx1) {$ctx1.fill(self,"initializeLocals",{})});
  62234. //>>excludeEnd("ctx");
  62235. }; }),
  62236. $globals.AIContext);
  62237. $core.addMethod(
  62238. $core.method({
  62239. selector: "innerContext",
  62240. protocol: "accessing",
  62241. //>>excludeStart("ide", pragmas.excludeIdeData);
  62242. args: [],
  62243. source: "innerContext\x0a\x09^ innerContext",
  62244. referencedClasses: [],
  62245. //>>excludeEnd("ide");
  62246. pragmas: [],
  62247. messageSends: []
  62248. }, function ($methodClass){ return function (){
  62249. var self=this,$self=this;
  62250. return $self.innerContext;
  62251. }; }),
  62252. $globals.AIContext);
  62253. $core.addMethod(
  62254. $core.method({
  62255. selector: "innerContext:",
  62256. protocol: "accessing",
  62257. //>>excludeStart("ide", pragmas.excludeIdeData);
  62258. args: ["anAIContext"],
  62259. source: "innerContext: anAIContext\x0a\x09innerContext := anAIContext",
  62260. referencedClasses: [],
  62261. //>>excludeEnd("ide");
  62262. pragmas: [],
  62263. messageSends: []
  62264. }, function ($methodClass){ return function (anAIContext){
  62265. var self=this,$self=this;
  62266. $self.innerContext=anAIContext;
  62267. return self;
  62268. }; }),
  62269. $globals.AIContext);
  62270. $core.addMethod(
  62271. $core.method({
  62272. selector: "interpreter",
  62273. protocol: "interpreting",
  62274. //>>excludeStart("ide", pragmas.excludeIdeData);
  62275. args: [],
  62276. source: "interpreter\x0a\x09interpreter ifNil: [ self initializeInterpreter ].\x0a\x09^ interpreter",
  62277. referencedClasses: [],
  62278. //>>excludeEnd("ide");
  62279. pragmas: [],
  62280. messageSends: ["ifNil:", "initializeInterpreter"]
  62281. }, function ($methodClass){ return function (){
  62282. var self=this,$self=this;
  62283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62284. return $core.withContext(function($ctx1) {
  62285. //>>excludeEnd("ctx");
  62286. var $1;
  62287. $1=$self.interpreter;
  62288. if($1 == null || $1.a$nil){
  62289. $self._initializeInterpreter();
  62290. } else {
  62291. $1;
  62292. }
  62293. return $self.interpreter;
  62294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62295. }, function($ctx1) {$ctx1.fill(self,"interpreter",{})});
  62296. //>>excludeEnd("ctx");
  62297. }; }),
  62298. $globals.AIContext);
  62299. $core.addMethod(
  62300. $core.method({
  62301. selector: "interpreter:",
  62302. protocol: "interpreting",
  62303. //>>excludeStart("ide", pragmas.excludeIdeData);
  62304. args: ["anInterpreter"],
  62305. source: "interpreter: anInterpreter\x0a\x09interpreter := anInterpreter",
  62306. referencedClasses: [],
  62307. //>>excludeEnd("ide");
  62308. pragmas: [],
  62309. messageSends: []
  62310. }, function ($methodClass){ return function (anInterpreter){
  62311. var self=this,$self=this;
  62312. $self.interpreter=anInterpreter;
  62313. return self;
  62314. }; }),
  62315. $globals.AIContext);
  62316. $core.addMethod(
  62317. $core.method({
  62318. selector: "isTopContext",
  62319. protocol: "testing",
  62320. //>>excludeStart("ide", pragmas.excludeIdeData);
  62321. args: [],
  62322. source: "isTopContext\x0a\x09^ self innerContext isNil",
  62323. referencedClasses: [],
  62324. //>>excludeEnd("ide");
  62325. pragmas: [],
  62326. messageSends: ["isNil", "innerContext"]
  62327. }, function ($methodClass){ return function (){
  62328. var self=this,$self=this;
  62329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62330. return $core.withContext(function($ctx1) {
  62331. //>>excludeEnd("ctx");
  62332. return $recv($self._innerContext())._isNil();
  62333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62334. }, function($ctx1) {$ctx1.fill(self,"isTopContext",{})});
  62335. //>>excludeEnd("ctx");
  62336. }; }),
  62337. $globals.AIContext);
  62338. $core.addMethod(
  62339. $core.method({
  62340. selector: "localAt:",
  62341. protocol: "accessing",
  62342. //>>excludeStart("ide", pragmas.excludeIdeData);
  62343. args: ["aString"],
  62344. source: "localAt: aString\x0a\x09\x22Lookup the local value up to the method context\x22\x0a\x0a\x09| context |\x0a\x09\x0a\x09context := self lookupContextForLocal: aString.\x0a\x09^ context basicLocalAt: aString",
  62345. referencedClasses: [],
  62346. //>>excludeEnd("ide");
  62347. pragmas: [],
  62348. messageSends: ["lookupContextForLocal:", "basicLocalAt:"]
  62349. }, function ($methodClass){ return function (aString){
  62350. var self=this,$self=this;
  62351. var context;
  62352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62353. return $core.withContext(function($ctx1) {
  62354. //>>excludeEnd("ctx");
  62355. context=$self._lookupContextForLocal_(aString);
  62356. return $recv(context)._basicLocalAt_(aString);
  62357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62358. }, function($ctx1) {$ctx1.fill(self,"localAt:",{aString:aString,context:context})});
  62359. //>>excludeEnd("ctx");
  62360. }; }),
  62361. $globals.AIContext);
  62362. $core.addMethod(
  62363. $core.method({
  62364. selector: "localAt:ifAbsent:",
  62365. protocol: "accessing",
  62366. //>>excludeStart("ide", pragmas.excludeIdeData);
  62367. args: ["aString", "aBlock"],
  62368. source: "localAt: aString ifAbsent: aBlock\x0a\x09\x22Lookup the local value up to the method context\x22\x0a\x0a\x09| context |\x0a\x09\x0a\x09context := self \x09\x0a\x09\x09lookupContextForLocal: aString \x0a\x09\x09ifNone: [ ^ aBlock value ].\x0a\x09\x0a\x09^ context basicLocalAt: aString",
  62369. referencedClasses: [],
  62370. //>>excludeEnd("ide");
  62371. pragmas: [],
  62372. messageSends: ["lookupContextForLocal:ifNone:", "value", "basicLocalAt:"]
  62373. }, function ($methodClass){ return function (aString,aBlock){
  62374. var self=this,$self=this;
  62375. var context;
  62376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62377. return $core.withContext(function($ctx1) {
  62378. //>>excludeEnd("ctx");
  62379. var $early={};
  62380. try {
  62381. context=$self._lookupContextForLocal_ifNone_(aString,(function(){
  62382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62383. return $core.withContext(function($ctx2) {
  62384. //>>excludeEnd("ctx");
  62385. throw $early=[$recv(aBlock)._value()];
  62386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62387. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  62388. //>>excludeEnd("ctx");
  62389. }));
  62390. return $recv(context)._basicLocalAt_(aString);
  62391. }
  62392. catch(e) {if(e===$early)return e[0]; throw e}
  62393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62394. }, function($ctx1) {$ctx1.fill(self,"localAt:ifAbsent:",{aString:aString,aBlock:aBlock,context:context})});
  62395. //>>excludeEnd("ctx");
  62396. }; }),
  62397. $globals.AIContext);
  62398. $core.addMethod(
  62399. $core.method({
  62400. selector: "localAt:put:",
  62401. protocol: "accessing",
  62402. //>>excludeStart("ide", pragmas.excludeIdeData);
  62403. args: ["aString", "anObject"],
  62404. source: "localAt: aString put: anObject\x0a\x09| context |\x0a\x09\x0a\x09context := self lookupContextForLocal: aString.\x0a\x09context basicLocalAt: aString put: anObject",
  62405. referencedClasses: [],
  62406. //>>excludeEnd("ide");
  62407. pragmas: [],
  62408. messageSends: ["lookupContextForLocal:", "basicLocalAt:put:"]
  62409. }, function ($methodClass){ return function (aString,anObject){
  62410. var self=this,$self=this;
  62411. var context;
  62412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62413. return $core.withContext(function($ctx1) {
  62414. //>>excludeEnd("ctx");
  62415. context=$self._lookupContextForLocal_(aString);
  62416. $recv(context)._basicLocalAt_put_(aString,anObject);
  62417. return self;
  62418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62419. }, function($ctx1) {$ctx1.fill(self,"localAt:put:",{aString:aString,anObject:anObject,context:context})});
  62420. //>>excludeEnd("ctx");
  62421. }; }),
  62422. $globals.AIContext);
  62423. $core.addMethod(
  62424. $core.method({
  62425. selector: "locals",
  62426. protocol: "accessing",
  62427. //>>excludeStart("ide", pragmas.excludeIdeData);
  62428. args: [],
  62429. source: "locals\x0a\x09locals ifNil: [ self initializeLocals ].\x0a\x09\x0a\x09^ locals",
  62430. referencedClasses: [],
  62431. //>>excludeEnd("ide");
  62432. pragmas: [],
  62433. messageSends: ["ifNil:", "initializeLocals"]
  62434. }, function ($methodClass){ return function (){
  62435. var self=this,$self=this;
  62436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62437. return $core.withContext(function($ctx1) {
  62438. //>>excludeEnd("ctx");
  62439. var $1;
  62440. $1=$self.locals;
  62441. if($1 == null || $1.a$nil){
  62442. $self._initializeLocals();
  62443. } else {
  62444. $1;
  62445. }
  62446. return $self.locals;
  62447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62448. }, function($ctx1) {$ctx1.fill(self,"locals",{})});
  62449. //>>excludeEnd("ctx");
  62450. }; }),
  62451. $globals.AIContext);
  62452. $core.addMethod(
  62453. $core.method({
  62454. selector: "lookupContextForLocal:",
  62455. protocol: "private",
  62456. //>>excludeStart("ide", pragmas.excludeIdeData);
  62457. args: ["aString"],
  62458. source: "lookupContextForLocal: aString\x0a\x09\x22Lookup the context defining the local named `aString` \x0a\x09up to the method context\x22\x0a\x0a\x09^ self \x0a\x09\x09lookupContextForLocal: aString \x0a\x09\x09ifNone: [ self variableNotFound ]",
  62459. referencedClasses: [],
  62460. //>>excludeEnd("ide");
  62461. pragmas: [],
  62462. messageSends: ["lookupContextForLocal:ifNone:", "variableNotFound"]
  62463. }, function ($methodClass){ return function (aString){
  62464. var self=this,$self=this;
  62465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62466. return $core.withContext(function($ctx1) {
  62467. //>>excludeEnd("ctx");
  62468. return $self._lookupContextForLocal_ifNone_(aString,(function(){
  62469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62470. return $core.withContext(function($ctx2) {
  62471. //>>excludeEnd("ctx");
  62472. return $self._variableNotFound();
  62473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62474. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  62475. //>>excludeEnd("ctx");
  62476. }));
  62477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62478. }, function($ctx1) {$ctx1.fill(self,"lookupContextForLocal:",{aString:aString})});
  62479. //>>excludeEnd("ctx");
  62480. }; }),
  62481. $globals.AIContext);
  62482. $core.addMethod(
  62483. $core.method({
  62484. selector: "lookupContextForLocal:ifNone:",
  62485. protocol: "private",
  62486. //>>excludeStart("ide", pragmas.excludeIdeData);
  62487. args: ["aString", "aBlock"],
  62488. source: "lookupContextForLocal: aString ifNone: aBlock\x0a\x09\x22Lookup the context defining the local named `aString` \x0a\x09up to the method context\x22\x0a\x0a\x09^ self locals \x0a\x09\x09at: aString\x0a\x09\x09ifPresent: [ self ]\x0a\x09\x09ifAbsent: [ \x0a\x09\x09\x09self outerContext \x0a\x09\x09\x09\x09ifNil: aBlock\x0a\x09\x09\x09\x09ifNotNil: [ :context | \x0a\x09\x09\x09\x09\x09context lookupContextForLocal: aString ifNone: aBlock ] ]",
  62489. referencedClasses: [],
  62490. //>>excludeEnd("ide");
  62491. pragmas: [],
  62492. messageSends: ["at:ifPresent:ifAbsent:", "locals", "ifNil:ifNotNil:", "outerContext", "lookupContextForLocal:ifNone:"]
  62493. }, function ($methodClass){ return function (aString,aBlock){
  62494. var self=this,$self=this;
  62495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62496. return $core.withContext(function($ctx1) {
  62497. //>>excludeEnd("ctx");
  62498. var $1;
  62499. return $recv($self._locals())._at_ifPresent_ifAbsent_(aString,(function(){
  62500. return self;
  62501. }),(function(){
  62502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62503. return $core.withContext(function($ctx2) {
  62504. //>>excludeEnd("ctx");
  62505. $1=$self._outerContext();
  62506. return $recv($1)._ifNil_ifNotNil_(aBlock,(function(context){
  62507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62508. return $core.withContext(function($ctx3) {
  62509. //>>excludeEnd("ctx");
  62510. return $recv(context)._lookupContextForLocal_ifNone_(aString,aBlock);
  62511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62512. }, function($ctx3) {$ctx3.fillBlock({context:context},$ctx2,3)});
  62513. //>>excludeEnd("ctx");
  62514. }));
  62515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62516. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  62517. //>>excludeEnd("ctx");
  62518. }));
  62519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62520. }, function($ctx1) {$ctx1.fill(self,"lookupContextForLocal:ifNone:",{aString:aString,aBlock:aBlock})});
  62521. //>>excludeEnd("ctx");
  62522. }; }),
  62523. $globals.AIContext);
  62524. $core.addMethod(
  62525. $core.method({
  62526. selector: "newInnerContext",
  62527. protocol: "factory",
  62528. //>>excludeStart("ide", pragmas.excludeIdeData);
  62529. args: [],
  62530. source: "newInnerContext\x0a\x09^ self class new\x0a\x09\x09outerContext: self;\x0a\x09\x09yourself",
  62531. referencedClasses: [],
  62532. //>>excludeEnd("ide");
  62533. pragmas: [],
  62534. messageSends: ["outerContext:", "new", "class", "yourself"]
  62535. }, function ($methodClass){ return function (){
  62536. var self=this,$self=this;
  62537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62538. return $core.withContext(function($ctx1) {
  62539. //>>excludeEnd("ctx");
  62540. var $1;
  62541. $1=$recv($self._class())._new();
  62542. $recv($1)._outerContext_(self);
  62543. return $recv($1)._yourself();
  62544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62545. }, function($ctx1) {$ctx1.fill(self,"newInnerContext",{})});
  62546. //>>excludeEnd("ctx");
  62547. }; }),
  62548. $globals.AIContext);
  62549. $core.addMethod(
  62550. $core.method({
  62551. selector: "outerContext",
  62552. protocol: "accessing",
  62553. //>>excludeStart("ide", pragmas.excludeIdeData);
  62554. args: [],
  62555. source: "outerContext\x0a\x09^ outerContext",
  62556. referencedClasses: [],
  62557. //>>excludeEnd("ide");
  62558. pragmas: [],
  62559. messageSends: []
  62560. }, function ($methodClass){ return function (){
  62561. var self=this,$self=this;
  62562. return $self.outerContext;
  62563. }; }),
  62564. $globals.AIContext);
  62565. $core.addMethod(
  62566. $core.method({
  62567. selector: "outerContext:",
  62568. protocol: "accessing",
  62569. //>>excludeStart("ide", pragmas.excludeIdeData);
  62570. args: ["anAIContext"],
  62571. source: "outerContext: anAIContext\x0a\x09outerContext := anAIContext.\x0a\x09outerContext ifNotNil: [ :context | \x0a\x09\x09context innerContext: self ]",
  62572. referencedClasses: [],
  62573. //>>excludeEnd("ide");
  62574. pragmas: [],
  62575. messageSends: ["ifNotNil:", "innerContext:"]
  62576. }, function ($methodClass){ return function (anAIContext){
  62577. var self=this,$self=this;
  62578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62579. return $core.withContext(function($ctx1) {
  62580. //>>excludeEnd("ctx");
  62581. var $1;
  62582. $self.outerContext=anAIContext;
  62583. $1=$self.outerContext;
  62584. if($1 == null || $1.a$nil){
  62585. $1;
  62586. } else {
  62587. var context;
  62588. context=$1;
  62589. $recv(context)._innerContext_(self);
  62590. }
  62591. return self;
  62592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62593. }, function($ctx1) {$ctx1.fill(self,"outerContext:",{anAIContext:anAIContext})});
  62594. //>>excludeEnd("ctx");
  62595. }; }),
  62596. $globals.AIContext);
  62597. $core.addMethod(
  62598. $core.method({
  62599. selector: "receiver:",
  62600. protocol: "interpreting",
  62601. //>>excludeStart("ide", pragmas.excludeIdeData);
  62602. args: ["anObject"],
  62603. source: "receiver: anObject\x0a\x09self locals at: 'self' put: anObject",
  62604. referencedClasses: [],
  62605. //>>excludeEnd("ide");
  62606. pragmas: [],
  62607. messageSends: ["at:put:", "locals"]
  62608. }, function ($methodClass){ return function (anObject){
  62609. var self=this,$self=this;
  62610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62611. return $core.withContext(function($ctx1) {
  62612. //>>excludeEnd("ctx");
  62613. $recv($self._locals())._at_put_("self",anObject);
  62614. return self;
  62615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62616. }, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject})});
  62617. //>>excludeEnd("ctx");
  62618. }; }),
  62619. $globals.AIContext);
  62620. $core.addMethod(
  62621. $core.method({
  62622. selector: "selector",
  62623. protocol: "accessing",
  62624. //>>excludeStart("ide", pragmas.excludeIdeData);
  62625. args: [],
  62626. source: "selector\x0a\x09^ selector",
  62627. referencedClasses: [],
  62628. //>>excludeEnd("ide");
  62629. pragmas: [],
  62630. messageSends: []
  62631. }, function ($methodClass){ return function (){
  62632. var self=this,$self=this;
  62633. return $self.selector;
  62634. }; }),
  62635. $globals.AIContext);
  62636. $core.addMethod(
  62637. $core.method({
  62638. selector: "selector:",
  62639. protocol: "accessing",
  62640. //>>excludeStart("ide", pragmas.excludeIdeData);
  62641. args: ["aString"],
  62642. source: "selector: aString\x0a\x09selector := aString",
  62643. referencedClasses: [],
  62644. //>>excludeEnd("ide");
  62645. pragmas: [],
  62646. messageSends: []
  62647. }, function ($methodClass){ return function (aString){
  62648. var self=this,$self=this;
  62649. $self.selector=aString;
  62650. return self;
  62651. }; }),
  62652. $globals.AIContext);
  62653. $core.addMethod(
  62654. $core.method({
  62655. selector: "sendIndexAt:",
  62656. protocol: "accessing",
  62657. //>>excludeStart("ide", pragmas.excludeIdeData);
  62658. args: ["aString"],
  62659. source: "sendIndexAt: aString\x0a\x09^ self sendIndexes at: aString ifAbsent: [ 0 ]",
  62660. referencedClasses: [],
  62661. //>>excludeEnd("ide");
  62662. pragmas: [],
  62663. messageSends: ["at:ifAbsent:", "sendIndexes"]
  62664. }, function ($methodClass){ return function (aString){
  62665. var self=this,$self=this;
  62666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62667. return $core.withContext(function($ctx1) {
  62668. //>>excludeEnd("ctx");
  62669. return $recv($self._sendIndexes())._at_ifAbsent_(aString,(function(){
  62670. return (0);
  62671. }));
  62672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62673. }, function($ctx1) {$ctx1.fill(self,"sendIndexAt:",{aString:aString})});
  62674. //>>excludeEnd("ctx");
  62675. }; }),
  62676. $globals.AIContext);
  62677. $core.addMethod(
  62678. $core.method({
  62679. selector: "sendIndexes",
  62680. protocol: "accessing",
  62681. //>>excludeStart("ide", pragmas.excludeIdeData);
  62682. args: [],
  62683. source: "sendIndexes\x0a\x09^ sendIndexes ifNil: [ Dictionary new ]",
  62684. referencedClasses: ["Dictionary"],
  62685. //>>excludeEnd("ide");
  62686. pragmas: [],
  62687. messageSends: ["ifNil:", "new"]
  62688. }, function ($methodClass){ return function (){
  62689. var self=this,$self=this;
  62690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62691. return $core.withContext(function($ctx1) {
  62692. //>>excludeEnd("ctx");
  62693. var $1;
  62694. $1=$self.sendIndexes;
  62695. if($1 == null || $1.a$nil){
  62696. return $recv($globals.Dictionary)._new();
  62697. } else {
  62698. return $1;
  62699. }
  62700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62701. }, function($ctx1) {$ctx1.fill(self,"sendIndexes",{})});
  62702. //>>excludeEnd("ctx");
  62703. }; }),
  62704. $globals.AIContext);
  62705. $core.addMethod(
  62706. $core.method({
  62707. selector: "sendIndexes:",
  62708. protocol: "accessing",
  62709. //>>excludeStart("ide", pragmas.excludeIdeData);
  62710. args: ["aDictionary"],
  62711. source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
  62712. referencedClasses: [],
  62713. //>>excludeEnd("ide");
  62714. pragmas: [],
  62715. messageSends: []
  62716. }, function ($methodClass){ return function (aDictionary){
  62717. var self=this,$self=this;
  62718. $self.sendIndexes=aDictionary;
  62719. return self;
  62720. }; }),
  62721. $globals.AIContext);
  62722. $core.addMethod(
  62723. $core.method({
  62724. selector: "setupInterpreter:",
  62725. protocol: "interpreting",
  62726. //>>excludeStart("ide", pragmas.excludeIdeData);
  62727. args: ["anInterpreter"],
  62728. source: "setupInterpreter: anInterpreter\x0a\x09| currentNode |\x0a\x09\x0a\x09\x22Retrieve the current node\x22\x0a\x09currentNode := ASTPCNodeVisitor new\x0a\x09\x09\x09selector: self evaluatedSelector;\x0a\x09\x09\x09index: (self sendIndexAt: self evaluatedSelector);\x0a\x09\x09\x09visit: self ast;\x0a\x09\x09\x09currentNode.\x0a\x09\x0a\x09\x22Define locals for the context\x22\x0a\x09self ast sequenceNode ifNotNil: [ :sequence |\x0a\x09\x09sequence temps do: [ :each |\x0a\x09\x09\x09self defineLocal: each ] ].\x0a\x09\x0a\x09anInterpreter node: currentNode.\x0a\x0a\x09\x22Push the send args and receiver to the interpreter stack\x22\x09\x0a\x09self innerContext arguments reversed do: [ :each | \x0a\x09\x09anInterpreter push: each ].\x0a\x09\x09\x0a\x09anInterpreter push: (self innerContext receiver)",
  62729. referencedClasses: ["ASTPCNodeVisitor"],
  62730. //>>excludeEnd("ide");
  62731. pragmas: [],
  62732. messageSends: ["selector:", "new", "evaluatedSelector", "index:", "sendIndexAt:", "visit:", "ast", "currentNode", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "node:", "reversed", "arguments", "innerContext", "push:", "receiver"]
  62733. }, function ($methodClass){ return function (anInterpreter){
  62734. var self=this,$self=this;
  62735. var currentNode;
  62736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62737. return $core.withContext(function($ctx1) {
  62738. //>>excludeEnd("ctx");
  62739. var $1,$2;
  62740. $1=$recv($globals.ASTPCNodeVisitor)._new();
  62741. $recv($1)._selector_([$self._evaluatedSelector()
  62742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62743. ,$ctx1.sendIdx["evaluatedSelector"]=1
  62744. //>>excludeEnd("ctx");
  62745. ][0]);
  62746. $recv($1)._index_($self._sendIndexAt_($self._evaluatedSelector()));
  62747. $recv($1)._visit_([$self._ast()
  62748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62749. ,$ctx1.sendIdx["ast"]=1
  62750. //>>excludeEnd("ctx");
  62751. ][0]);
  62752. currentNode=$recv($1)._currentNode();
  62753. $2=$recv($self._ast())._sequenceNode();
  62754. if($2 == null || $2.a$nil){
  62755. $2;
  62756. } else {
  62757. var sequence;
  62758. sequence=$2;
  62759. [$recv($recv(sequence)._temps())._do_((function(each){
  62760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62761. return $core.withContext(function($ctx2) {
  62762. //>>excludeEnd("ctx");
  62763. return $self._defineLocal_(each);
  62764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62765. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  62766. //>>excludeEnd("ctx");
  62767. }))
  62768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62769. ,$ctx1.sendIdx["do:"]=1
  62770. //>>excludeEnd("ctx");
  62771. ][0];
  62772. }
  62773. $recv(anInterpreter)._node_(currentNode);
  62774. $recv($recv($recv([$self._innerContext()
  62775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62776. ,$ctx1.sendIdx["innerContext"]=1
  62777. //>>excludeEnd("ctx");
  62778. ][0])._arguments())._reversed())._do_((function(each){
  62779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62780. return $core.withContext(function($ctx2) {
  62781. //>>excludeEnd("ctx");
  62782. return [$recv(anInterpreter)._push_(each)
  62783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62784. ,$ctx2.sendIdx["push:"]=1
  62785. //>>excludeEnd("ctx");
  62786. ][0];
  62787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62788. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  62789. //>>excludeEnd("ctx");
  62790. }));
  62791. $recv(anInterpreter)._push_($recv($self._innerContext())._receiver());
  62792. return self;
  62793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62794. }, function($ctx1) {$ctx1.fill(self,"setupInterpreter:",{anInterpreter:anInterpreter,currentNode:currentNode})});
  62795. //>>excludeEnd("ctx");
  62796. }; }),
  62797. $globals.AIContext);
  62798. $core.addMethod(
  62799. $core.method({
  62800. selector: "supercall",
  62801. protocol: "interpreting",
  62802. //>>excludeStart("ide", pragmas.excludeIdeData);
  62803. args: [],
  62804. source: "supercall\x0a\x09^ supercall ifNil: [ false ]",
  62805. referencedClasses: [],
  62806. //>>excludeEnd("ide");
  62807. pragmas: [],
  62808. messageSends: ["ifNil:"]
  62809. }, function ($methodClass){ return function (){
  62810. var self=this,$self=this;
  62811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62812. return $core.withContext(function($ctx1) {
  62813. //>>excludeEnd("ctx");
  62814. var $1;
  62815. $1=$self.supercall;
  62816. if($1 == null || $1.a$nil){
  62817. return false;
  62818. } else {
  62819. return $1;
  62820. }
  62821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62822. }, function($ctx1) {$ctx1.fill(self,"supercall",{})});
  62823. //>>excludeEnd("ctx");
  62824. }; }),
  62825. $globals.AIContext);
  62826. $core.addMethod(
  62827. $core.method({
  62828. selector: "supercall:",
  62829. protocol: "interpreting",
  62830. //>>excludeStart("ide", pragmas.excludeIdeData);
  62831. args: ["aBoolean"],
  62832. source: "supercall: aBoolean\x0a\x09supercall := aBoolean",
  62833. referencedClasses: [],
  62834. //>>excludeEnd("ide");
  62835. pragmas: [],
  62836. messageSends: []
  62837. }, function ($methodClass){ return function (aBoolean){
  62838. var self=this,$self=this;
  62839. $self.supercall=aBoolean;
  62840. return self;
  62841. }; }),
  62842. $globals.AIContext);
  62843. $core.addMethod(
  62844. $core.method({
  62845. selector: "variableNotFound",
  62846. protocol: "error handling",
  62847. //>>excludeStart("ide", pragmas.excludeIdeData);
  62848. args: [],
  62849. source: "variableNotFound\x0a\x09\x22Error thrown whenever a variable lookup fails\x22\x0a\x09\x0a\x09self error: 'Variable missing'",
  62850. referencedClasses: [],
  62851. //>>excludeEnd("ide");
  62852. pragmas: [],
  62853. messageSends: ["error:"]
  62854. }, function ($methodClass){ return function (){
  62855. var self=this,$self=this;
  62856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62857. return $core.withContext(function($ctx1) {
  62858. //>>excludeEnd("ctx");
  62859. $self._error_("Variable missing");
  62860. return self;
  62861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62862. }, function($ctx1) {$ctx1.fill(self,"variableNotFound",{})});
  62863. //>>excludeEnd("ctx");
  62864. }; }),
  62865. $globals.AIContext);
  62866. $core.addMethod(
  62867. $core.method({
  62868. selector: "fromMethodContext:",
  62869. protocol: "instance creation",
  62870. //>>excludeStart("ide", pragmas.excludeIdeData);
  62871. args: ["aMethodContext"],
  62872. source: "fromMethodContext: aMethodContext\x0a\x09^ self new\x0a\x09\x09initializeFromMethodContext: aMethodContext;\x0a\x09\x09yourself",
  62873. referencedClasses: [],
  62874. //>>excludeEnd("ide");
  62875. pragmas: [],
  62876. messageSends: ["initializeFromMethodContext:", "new", "yourself"]
  62877. }, function ($methodClass){ return function (aMethodContext){
  62878. var self=this,$self=this;
  62879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62880. return $core.withContext(function($ctx1) {
  62881. //>>excludeEnd("ctx");
  62882. var $1;
  62883. $1=$self._new();
  62884. $recv($1)._initializeFromMethodContext_(aMethodContext);
  62885. return $recv($1)._yourself();
  62886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62887. }, function($ctx1) {$ctx1.fill(self,"fromMethodContext:",{aMethodContext:aMethodContext})});
  62888. //>>excludeEnd("ctx");
  62889. }; }),
  62890. $globals.AIContext.a$cls);
  62891. $core.addClass("AISemanticAnalyzer", $globals.SemanticAnalyzer, "Compiler-Interpreter");
  62892. $core.setSlots($globals.AISemanticAnalyzer, ["context"]);
  62893. //>>excludeStart("ide", pragmas.excludeIdeData);
  62894. $globals.AISemanticAnalyzer.comment="I perform the same semantic analysis than `SemanticAnalyzer`, with the difference that provided an `AIContext` context, variables are bound with the context variables.";
  62895. //>>excludeEnd("ide");
  62896. $core.addMethod(
  62897. $core.method({
  62898. selector: "context",
  62899. protocol: "accessing",
  62900. //>>excludeStart("ide", pragmas.excludeIdeData);
  62901. args: [],
  62902. source: "context\x0a\x09^ context",
  62903. referencedClasses: [],
  62904. //>>excludeEnd("ide");
  62905. pragmas: [],
  62906. messageSends: []
  62907. }, function ($methodClass){ return function (){
  62908. var self=this,$self=this;
  62909. return $self.context;
  62910. }; }),
  62911. $globals.AISemanticAnalyzer);
  62912. $core.addMethod(
  62913. $core.method({
  62914. selector: "context:",
  62915. protocol: "accessing",
  62916. //>>excludeStart("ide", pragmas.excludeIdeData);
  62917. args: ["anAIContext"],
  62918. source: "context: anAIContext\x0a\x09context := anAIContext",
  62919. referencedClasses: [],
  62920. //>>excludeEnd("ide");
  62921. pragmas: [],
  62922. messageSends: []
  62923. }, function ($methodClass){ return function (anAIContext){
  62924. var self=this,$self=this;
  62925. $self.context=anAIContext;
  62926. return self;
  62927. }; }),
  62928. $globals.AISemanticAnalyzer);
  62929. $core.addMethod(
  62930. $core.method({
  62931. selector: "visitVariableNode:",
  62932. protocol: "visiting",
  62933. //>>excludeStart("ide", pragmas.excludeIdeData);
  62934. args: ["aNode"],
  62935. source: "visitVariableNode: aNode\x0a\x09self context \x0a\x09\x09localAt: aNode identifier \x0a\x09\x09ifAbsent: [ ^ super visitVariableNode: aNode ].\x0a\x0a\x09aNode binding: ASTContextVar new",
  62936. referencedClasses: ["ASTContextVar"],
  62937. //>>excludeEnd("ide");
  62938. pragmas: [],
  62939. messageSends: ["localAt:ifAbsent:", "context", "identifier", "visitVariableNode:", "binding:", "new"]
  62940. }, function ($methodClass){ return function (aNode){
  62941. var self=this,$self=this;
  62942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62943. return $core.withContext(function($ctx1) {
  62944. //>>excludeEnd("ctx");
  62945. var $early={};
  62946. try {
  62947. $recv($self._context())._localAt_ifAbsent_($recv(aNode)._identifier(),(function(){
  62948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62949. return $core.withContext(function($ctx2) {
  62950. //>>excludeEnd("ctx");
  62951. throw $early=[[(
  62952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62953. $ctx2.supercall = true,
  62954. //>>excludeEnd("ctx");
  62955. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitVariableNode_.call($self,aNode))
  62956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62957. ,$ctx2.supercall = false
  62958. //>>excludeEnd("ctx");
  62959. ][0]];
  62960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62961. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  62962. //>>excludeEnd("ctx");
  62963. }));
  62964. $recv(aNode)._binding_($recv($globals.ASTContextVar)._new());
  62965. return self;
  62966. }
  62967. catch(e) {if(e===$early)return e[0]; throw e}
  62968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62969. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
  62970. //>>excludeEnd("ctx");
  62971. }; }),
  62972. $globals.AISemanticAnalyzer);
  62973. $core.addClass("ASTContextVar", $globals.ScopeVar, "Compiler-Interpreter");
  62974. $core.setSlots($globals.ASTContextVar, ["context"]);
  62975. //>>excludeStart("ide", pragmas.excludeIdeData);
  62976. $globals.ASTContextVar.comment="I am a variable defined in a `context`.";
  62977. //>>excludeEnd("ide");
  62978. $core.addMethod(
  62979. $core.method({
  62980. selector: "context",
  62981. protocol: "accessing",
  62982. //>>excludeStart("ide", pragmas.excludeIdeData);
  62983. args: [],
  62984. source: "context\x0a\x09^ context",
  62985. referencedClasses: [],
  62986. //>>excludeEnd("ide");
  62987. pragmas: [],
  62988. messageSends: []
  62989. }, function ($methodClass){ return function (){
  62990. var self=this,$self=this;
  62991. return $self.context;
  62992. }; }),
  62993. $globals.ASTContextVar);
  62994. $core.addMethod(
  62995. $core.method({
  62996. selector: "context:",
  62997. protocol: "accessing",
  62998. //>>excludeStart("ide", pragmas.excludeIdeData);
  62999. args: ["anObject"],
  63000. source: "context: anObject\x0a\x09context := anObject",
  63001. referencedClasses: [],
  63002. //>>excludeEnd("ide");
  63003. pragmas: [],
  63004. messageSends: []
  63005. }, function ($methodClass){ return function (anObject){
  63006. var self=this,$self=this;
  63007. $self.context=anObject;
  63008. return self;
  63009. }; }),
  63010. $globals.ASTContextVar);
  63011. $core.addClass("ASTDebugger", $globals.Object, "Compiler-Interpreter");
  63012. $core.setSlots($globals.ASTDebugger, ["interpreter", "context", "result"]);
  63013. //>>excludeStart("ide", pragmas.excludeIdeData);
  63014. $globals.ASTDebugger.comment="I am a stepping debugger interface for Amber code.\x0aI internally use an instance of `ASTInterpreter` to actually step through node and interpret them.\x0a\x0aMy instances are created from an `AIContext` with `ASTDebugger class >> context:`.\x0aThey hold an `AIContext` instance internally, recursive copy of the `MethodContext`.\x0a\x0a## API\x0a\x0aUse the methods of the `'stepping'` protocol to do stepping.";
  63015. //>>excludeEnd("ide");
  63016. $core.addMethod(
  63017. $core.method({
  63018. selector: "atEnd",
  63019. protocol: "testing",
  63020. //>>excludeStart("ide", pragmas.excludeIdeData);
  63021. args: [],
  63022. source: "atEnd\x09\x0a\x09self context ifNil: [ ^ true ].\x0a\x09\x0a\x09^ self interpreter atEnd and: [ \x0a\x09\x09self context isTopContext ]",
  63023. referencedClasses: [],
  63024. //>>excludeEnd("ide");
  63025. pragmas: [],
  63026. messageSends: ["ifNil:", "context", "and:", "atEnd", "interpreter", "isTopContext"]
  63027. }, function ($methodClass){ return function (){
  63028. var self=this,$self=this;
  63029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63030. return $core.withContext(function($ctx1) {
  63031. //>>excludeEnd("ctx");
  63032. var $1;
  63033. $1=[$self._context()
  63034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63035. ,$ctx1.sendIdx["context"]=1
  63036. //>>excludeEnd("ctx");
  63037. ][0];
  63038. if($1 == null || $1.a$nil){
  63039. return true;
  63040. } else {
  63041. $1;
  63042. }
  63043. if($core.assert($recv($self._interpreter())._atEnd())){
  63044. return $recv($self._context())._isTopContext();
  63045. } else {
  63046. return false;
  63047. }
  63048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63049. }, function($ctx1) {$ctx1.fill(self,"atEnd",{})});
  63050. //>>excludeEnd("ctx");
  63051. }; }),
  63052. $globals.ASTDebugger);
  63053. $core.addMethod(
  63054. $core.method({
  63055. selector: "context",
  63056. protocol: "accessing",
  63057. //>>excludeStart("ide", pragmas.excludeIdeData);
  63058. args: [],
  63059. source: "context\x0a\x09^ context",
  63060. referencedClasses: [],
  63061. //>>excludeEnd("ide");
  63062. pragmas: [],
  63063. messageSends: []
  63064. }, function ($methodClass){ return function (){
  63065. var self=this,$self=this;
  63066. return $self.context;
  63067. }; }),
  63068. $globals.ASTDebugger);
  63069. $core.addMethod(
  63070. $core.method({
  63071. selector: "context:",
  63072. protocol: "accessing",
  63073. //>>excludeStart("ide", pragmas.excludeIdeData);
  63074. args: ["aContext"],
  63075. source: "context: aContext\x0a\x09context := aContext",
  63076. referencedClasses: [],
  63077. //>>excludeEnd("ide");
  63078. pragmas: [],
  63079. messageSends: []
  63080. }, function ($methodClass){ return function (aContext){
  63081. var self=this,$self=this;
  63082. $self.context=aContext;
  63083. return self;
  63084. }; }),
  63085. $globals.ASTDebugger);
  63086. $core.addMethod(
  63087. $core.method({
  63088. selector: "flushInnerContexts",
  63089. protocol: "actions",
  63090. //>>excludeStart("ide", pragmas.excludeIdeData);
  63091. args: [],
  63092. source: "flushInnerContexts\x0a\x09\x22When stepping, the inner contexts are not relevent anymore,\x0a\x09and can be flushed\x22\x0a\x09\x0a\x09self context ifNotNil: [ :cxt | \x0a\x09\x09cxt innerContext: nil ]",
  63093. referencedClasses: [],
  63094. //>>excludeEnd("ide");
  63095. pragmas: [],
  63096. messageSends: ["ifNotNil:", "context", "innerContext:"]
  63097. }, function ($methodClass){ return function (){
  63098. var self=this,$self=this;
  63099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63100. return $core.withContext(function($ctx1) {
  63101. //>>excludeEnd("ctx");
  63102. var $1;
  63103. $1=$self._context();
  63104. if($1 == null || $1.a$nil){
  63105. $1;
  63106. } else {
  63107. var cxt;
  63108. cxt=$1;
  63109. $recv(cxt)._innerContext_(nil);
  63110. }
  63111. return self;
  63112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63113. }, function($ctx1) {$ctx1.fill(self,"flushInnerContexts",{})});
  63114. //>>excludeEnd("ctx");
  63115. }; }),
  63116. $globals.ASTDebugger);
  63117. $core.addMethod(
  63118. $core.method({
  63119. selector: "interpreter",
  63120. protocol: "accessing",
  63121. //>>excludeStart("ide", pragmas.excludeIdeData);
  63122. args: [],
  63123. source: "interpreter\x0a\x09^ self context ifNotNil: [ :ctx | \x0a\x09\x09ctx interpreter ]",
  63124. referencedClasses: [],
  63125. //>>excludeEnd("ide");
  63126. pragmas: [],
  63127. messageSends: ["ifNotNil:", "context", "interpreter"]
  63128. }, function ($methodClass){ return function (){
  63129. var self=this,$self=this;
  63130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63131. return $core.withContext(function($ctx1) {
  63132. //>>excludeEnd("ctx");
  63133. var $1;
  63134. $1=$self._context();
  63135. if($1 == null || $1.a$nil){
  63136. return $1;
  63137. } else {
  63138. var ctx;
  63139. ctx=$1;
  63140. return $recv(ctx)._interpreter();
  63141. }
  63142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63143. }, function($ctx1) {$ctx1.fill(self,"interpreter",{})});
  63144. //>>excludeEnd("ctx");
  63145. }; }),
  63146. $globals.ASTDebugger);
  63147. $core.addMethod(
  63148. $core.method({
  63149. selector: "node",
  63150. protocol: "accessing",
  63151. //>>excludeStart("ide", pragmas.excludeIdeData);
  63152. args: [],
  63153. source: "node\x0a\x09^ self interpreter ifNotNil: [\x0a\x09\x09self interpreter node ]",
  63154. referencedClasses: [],
  63155. //>>excludeEnd("ide");
  63156. pragmas: [],
  63157. messageSends: ["ifNotNil:", "interpreter", "node"]
  63158. }, function ($methodClass){ return function (){
  63159. var self=this,$self=this;
  63160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63161. return $core.withContext(function($ctx1) {
  63162. //>>excludeEnd("ctx");
  63163. var $1;
  63164. $1=[$self._interpreter()
  63165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63166. ,$ctx1.sendIdx["interpreter"]=1
  63167. //>>excludeEnd("ctx");
  63168. ][0];
  63169. if($1 == null || $1.a$nil){
  63170. return $1;
  63171. } else {
  63172. return $recv($self._interpreter())._node();
  63173. }
  63174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63175. }, function($ctx1) {$ctx1.fill(self,"node",{})});
  63176. //>>excludeEnd("ctx");
  63177. }; }),
  63178. $globals.ASTDebugger);
  63179. $core.addMethod(
  63180. $core.method({
  63181. selector: "onStep",
  63182. protocol: "private",
  63183. //>>excludeStart("ide", pragmas.excludeIdeData);
  63184. args: [],
  63185. source: "onStep\x0a\x09\x22After each step, check if the interpreter is at the end,\x0a\x09and if it is move to its outer context if any, skipping its \x0a\x09current node (which was just evaluated by the current \x0a\x09interpreter).\x0a\x09\x0a\x09After each step we also flush inner contexts.\x22\x0a\x09\x0a\x09result := self interpreter result.\x0a\x09\x0a\x09self interpreter atEnd ifTrue: [\x0a\x09\x09self context outerContext ifNotNil: [ :outerContext | \x0a\x09\x09\x09self context: outerContext ].\x0a\x09\x09self interpreter atEnd ifFalse: [ self interpreter skip ] ].\x0a\x09\x09\x0a\x09self flushInnerContexts",
  63186. referencedClasses: [],
  63187. //>>excludeEnd("ide");
  63188. pragmas: [],
  63189. messageSends: ["result", "interpreter", "ifTrue:", "atEnd", "ifNotNil:", "outerContext", "context", "context:", "ifFalse:", "skip", "flushInnerContexts"]
  63190. }, function ($methodClass){ return function (){
  63191. var self=this,$self=this;
  63192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63193. return $core.withContext(function($ctx1) {
  63194. //>>excludeEnd("ctx");
  63195. var $1;
  63196. $self.result=$recv([$self._interpreter()
  63197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63198. ,$ctx1.sendIdx["interpreter"]=1
  63199. //>>excludeEnd("ctx");
  63200. ][0])._result();
  63201. if($core.assert([$recv([$self._interpreter()
  63202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63203. ,$ctx1.sendIdx["interpreter"]=2
  63204. //>>excludeEnd("ctx");
  63205. ][0])._atEnd()
  63206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63207. ,$ctx1.sendIdx["atEnd"]=1
  63208. //>>excludeEnd("ctx");
  63209. ][0])){
  63210. $1=$recv($self._context())._outerContext();
  63211. if($1 == null || $1.a$nil){
  63212. $1;
  63213. } else {
  63214. var outerContext;
  63215. outerContext=$1;
  63216. $self._context_(outerContext);
  63217. }
  63218. if(!$core.assert($recv([$self._interpreter()
  63219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63220. ,$ctx1.sendIdx["interpreter"]=3
  63221. //>>excludeEnd("ctx");
  63222. ][0])._atEnd())){
  63223. $recv($self._interpreter())._skip();
  63224. }
  63225. }
  63226. $self._flushInnerContexts();
  63227. return self;
  63228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63229. }, function($ctx1) {$ctx1.fill(self,"onStep",{})});
  63230. //>>excludeEnd("ctx");
  63231. }; }),
  63232. $globals.ASTDebugger);
  63233. $core.addMethod(
  63234. $core.method({
  63235. selector: "proceed",
  63236. protocol: "stepping",
  63237. //>>excludeStart("ide", pragmas.excludeIdeData);
  63238. args: [],
  63239. source: "proceed\x0a\x09[ self atEnd ] whileFalse: [ self stepOver ]",
  63240. referencedClasses: [],
  63241. //>>excludeEnd("ide");
  63242. pragmas: [],
  63243. messageSends: ["whileFalse:", "atEnd", "stepOver"]
  63244. }, function ($methodClass){ return function (){
  63245. var self=this,$self=this;
  63246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63247. return $core.withContext(function($ctx1) {
  63248. //>>excludeEnd("ctx");
  63249. $recv((function(){
  63250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63251. return $core.withContext(function($ctx2) {
  63252. //>>excludeEnd("ctx");
  63253. return $self._atEnd();
  63254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63255. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  63256. //>>excludeEnd("ctx");
  63257. }))._whileFalse_((function(){
  63258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63259. return $core.withContext(function($ctx2) {
  63260. //>>excludeEnd("ctx");
  63261. return $self._stepOver();
  63262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63263. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  63264. //>>excludeEnd("ctx");
  63265. }));
  63266. return self;
  63267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63268. }, function($ctx1) {$ctx1.fill(self,"proceed",{})});
  63269. //>>excludeEnd("ctx");
  63270. }; }),
  63271. $globals.ASTDebugger);
  63272. $core.addMethod(
  63273. $core.method({
  63274. selector: "restart",
  63275. protocol: "stepping",
  63276. //>>excludeStart("ide", pragmas.excludeIdeData);
  63277. args: [],
  63278. source: "restart\x0a\x09self interpreter restart.\x0a\x09self flushInnerContexts",
  63279. referencedClasses: [],
  63280. //>>excludeEnd("ide");
  63281. pragmas: [],
  63282. messageSends: ["restart", "interpreter", "flushInnerContexts"]
  63283. }, function ($methodClass){ return function (){
  63284. var self=this,$self=this;
  63285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63286. return $core.withContext(function($ctx1) {
  63287. //>>excludeEnd("ctx");
  63288. $recv($self._interpreter())._restart();
  63289. $self._flushInnerContexts();
  63290. return self;
  63291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63292. }, function($ctx1) {$ctx1.fill(self,"restart",{})});
  63293. //>>excludeEnd("ctx");
  63294. }; }),
  63295. $globals.ASTDebugger);
  63296. $core.addMethod(
  63297. $core.method({
  63298. selector: "result",
  63299. protocol: "accessing",
  63300. //>>excludeStart("ide", pragmas.excludeIdeData);
  63301. args: [],
  63302. source: "result\x0a\x09^ result",
  63303. referencedClasses: [],
  63304. //>>excludeEnd("ide");
  63305. pragmas: [],
  63306. messageSends: []
  63307. }, function ($methodClass){ return function (){
  63308. var self=this,$self=this;
  63309. return $self.result;
  63310. }; }),
  63311. $globals.ASTDebugger);
  63312. $core.addMethod(
  63313. $core.method({
  63314. selector: "stepInto",
  63315. protocol: "stepping",
  63316. //>>excludeStart("ide", pragmas.excludeIdeData);
  63317. args: [],
  63318. source: "stepInto\x0a\x09self shouldBeImplemented",
  63319. referencedClasses: [],
  63320. //>>excludeEnd("ide");
  63321. pragmas: [],
  63322. messageSends: ["shouldBeImplemented"]
  63323. }, function ($methodClass){ return function (){
  63324. var self=this,$self=this;
  63325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63326. return $core.withContext(function($ctx1) {
  63327. //>>excludeEnd("ctx");
  63328. $self._shouldBeImplemented();
  63329. return self;
  63330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63331. }, function($ctx1) {$ctx1.fill(self,"stepInto",{})});
  63332. //>>excludeEnd("ctx");
  63333. }; }),
  63334. $globals.ASTDebugger);
  63335. $core.addMethod(
  63336. $core.method({
  63337. selector: "stepOver",
  63338. protocol: "stepping",
  63339. //>>excludeStart("ide", pragmas.excludeIdeData);
  63340. args: [],
  63341. source: "stepOver\x0a\x09self context isTopContext \x0a\x09\x09ifFalse: [ self interpreter skip ]\x0a\x09\x09ifTrue: [ self interpreter stepOver ].\x0a\x09self onStep",
  63342. referencedClasses: [],
  63343. //>>excludeEnd("ide");
  63344. pragmas: [],
  63345. messageSends: ["ifFalse:ifTrue:", "isTopContext", "context", "skip", "interpreter", "stepOver", "onStep"]
  63346. }, function ($methodClass){ return function (){
  63347. var self=this,$self=this;
  63348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63349. return $core.withContext(function($ctx1) {
  63350. //>>excludeEnd("ctx");
  63351. if($core.assert($recv($self._context())._isTopContext())){
  63352. $recv($self._interpreter())._stepOver();
  63353. } else {
  63354. $recv([$self._interpreter()
  63355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63356. ,$ctx1.sendIdx["interpreter"]=1
  63357. //>>excludeEnd("ctx");
  63358. ][0])._skip();
  63359. }
  63360. $self._onStep();
  63361. return self;
  63362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63363. }, function($ctx1) {$ctx1.fill(self,"stepOver",{})});
  63364. //>>excludeEnd("ctx");
  63365. }; }),
  63366. $globals.ASTDebugger);
  63367. $core.addMethod(
  63368. $core.method({
  63369. selector: "context:",
  63370. protocol: "instance creation",
  63371. //>>excludeStart("ide", pragmas.excludeIdeData);
  63372. args: ["aContext"],
  63373. source: "context: aContext\x0a\x09^ self new\x0a\x09\x09context: aContext;\x0a\x09\x09yourself",
  63374. referencedClasses: [],
  63375. //>>excludeEnd("ide");
  63376. pragmas: [],
  63377. messageSends: ["context:", "new", "yourself"]
  63378. }, function ($methodClass){ return function (aContext){
  63379. var self=this,$self=this;
  63380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63381. return $core.withContext(function($ctx1) {
  63382. //>>excludeEnd("ctx");
  63383. var $1;
  63384. $1=$self._new();
  63385. $recv($1)._context_(aContext);
  63386. return $recv($1)._yourself();
  63387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63388. }, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext})});
  63389. //>>excludeEnd("ctx");
  63390. }; }),
  63391. $globals.ASTDebugger.a$cls);
  63392. $core.addClass("ASTEnterNode", $globals.NodeVisitor, "Compiler-Interpreter");
  63393. $core.setSlots($globals.ASTEnterNode, ["interpreter"]);
  63394. $core.addMethod(
  63395. $core.method({
  63396. selector: "interpreter",
  63397. protocol: "accessing",
  63398. //>>excludeStart("ide", pragmas.excludeIdeData);
  63399. args: [],
  63400. source: "interpreter\x0a\x09^ interpreter",
  63401. referencedClasses: [],
  63402. //>>excludeEnd("ide");
  63403. pragmas: [],
  63404. messageSends: []
  63405. }, function ($methodClass){ return function (){
  63406. var self=this,$self=this;
  63407. return $self.interpreter;
  63408. }; }),
  63409. $globals.ASTEnterNode);
  63410. $core.addMethod(
  63411. $core.method({
  63412. selector: "interpreter:",
  63413. protocol: "accessing",
  63414. //>>excludeStart("ide", pragmas.excludeIdeData);
  63415. args: ["anObject"],
  63416. source: "interpreter: anObject\x0a\x09interpreter := anObject",
  63417. referencedClasses: [],
  63418. //>>excludeEnd("ide");
  63419. pragmas: [],
  63420. messageSends: []
  63421. }, function ($methodClass){ return function (anObject){
  63422. var self=this,$self=this;
  63423. $self.interpreter=anObject;
  63424. return self;
  63425. }; }),
  63426. $globals.ASTEnterNode);
  63427. $core.addMethod(
  63428. $core.method({
  63429. selector: "visitBlockNode:",
  63430. protocol: "visiting",
  63431. //>>excludeStart("ide", pragmas.excludeIdeData);
  63432. args: ["aNode"],
  63433. source: "visitBlockNode: aNode\x0a\x09\x22Answer the node as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09^ aNode",
  63434. referencedClasses: [],
  63435. //>>excludeEnd("ide");
  63436. pragmas: [],
  63437. messageSends: []
  63438. }, function ($methodClass){ return function (aNode){
  63439. var self=this,$self=this;
  63440. return aNode;
  63441. }; }),
  63442. $globals.ASTEnterNode);
  63443. $core.addMethod(
  63444. $core.method({
  63445. selector: "visitDagNode:",
  63446. protocol: "visiting",
  63447. //>>excludeStart("ide", pragmas.excludeIdeData);
  63448. args: ["aNode"],
  63449. source: "visitDagNode: aNode\x0a\x09^ aNode dagChildren\x0a\x09\x09ifEmpty: [ aNode ]\x0a\x09\x09ifNotEmpty: [ :nodes | self visit: nodes first ]",
  63450. referencedClasses: [],
  63451. //>>excludeEnd("ide");
  63452. pragmas: [],
  63453. messageSends: ["ifEmpty:ifNotEmpty:", "dagChildren", "visit:", "first"]
  63454. }, function ($methodClass){ return function (aNode){
  63455. var self=this,$self=this;
  63456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63457. return $core.withContext(function($ctx1) {
  63458. //>>excludeEnd("ctx");
  63459. return $recv($recv(aNode)._dagChildren())._ifEmpty_ifNotEmpty_((function(){
  63460. return aNode;
  63461. }),(function(nodes){
  63462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63463. return $core.withContext(function($ctx2) {
  63464. //>>excludeEnd("ctx");
  63465. return $self._visit_($recv(nodes)._first());
  63466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63467. }, function($ctx2) {$ctx2.fillBlock({nodes:nodes},$ctx1,2)});
  63468. //>>excludeEnd("ctx");
  63469. }));
  63470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63471. }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode})});
  63472. //>>excludeEnd("ctx");
  63473. }; }),
  63474. $globals.ASTEnterNode);
  63475. $core.addMethod(
  63476. $core.method({
  63477. selector: "visitSequenceNode:",
  63478. protocol: "visiting",
  63479. //>>excludeStart("ide", pragmas.excludeIdeData);
  63480. args: ["aNode"],
  63481. source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [ :each |\x0a\x09\x09self interpreter context defineLocal: each ].\x0a\x09^ super visitSequenceNode: aNode",
  63482. referencedClasses: [],
  63483. //>>excludeEnd("ide");
  63484. pragmas: [],
  63485. messageSends: ["do:", "temps", "defineLocal:", "context", "interpreter", "visitSequenceNode:"]
  63486. }, function ($methodClass){ return function (aNode){
  63487. var self=this,$self=this;
  63488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63489. return $core.withContext(function($ctx1) {
  63490. //>>excludeEnd("ctx");
  63491. $recv($recv(aNode)._temps())._do_((function(each){
  63492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63493. return $core.withContext(function($ctx2) {
  63494. //>>excludeEnd("ctx");
  63495. return $recv($recv($self._interpreter())._context())._defineLocal_(each);
  63496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63497. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  63498. //>>excludeEnd("ctx");
  63499. }));
  63500. return [(
  63501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63502. $ctx1.supercall = true,
  63503. //>>excludeEnd("ctx");
  63504. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSequenceNode_.call($self,aNode))
  63505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63506. ,$ctx1.supercall = false
  63507. //>>excludeEnd("ctx");
  63508. ][0];
  63509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63510. }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode})});
  63511. //>>excludeEnd("ctx");
  63512. }; }),
  63513. $globals.ASTEnterNode);
  63514. $core.addMethod(
  63515. $core.method({
  63516. selector: "on:",
  63517. protocol: "instance creation",
  63518. //>>excludeStart("ide", pragmas.excludeIdeData);
  63519. args: ["anInterpreter"],
  63520. source: "on: anInterpreter\x0a\x09^ self new\x0a\x09\x09interpreter: anInterpreter;\x0a\x09\x09yourself",
  63521. referencedClasses: [],
  63522. //>>excludeEnd("ide");
  63523. pragmas: [],
  63524. messageSends: ["interpreter:", "new", "yourself"]
  63525. }, function ($methodClass){ return function (anInterpreter){
  63526. var self=this,$self=this;
  63527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63528. return $core.withContext(function($ctx1) {
  63529. //>>excludeEnd("ctx");
  63530. var $1;
  63531. $1=$self._new();
  63532. $recv($1)._interpreter_(anInterpreter);
  63533. return $recv($1)._yourself();
  63534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63535. }, function($ctx1) {$ctx1.fill(self,"on:",{anInterpreter:anInterpreter})});
  63536. //>>excludeEnd("ctx");
  63537. }; }),
  63538. $globals.ASTEnterNode.a$cls);
  63539. $core.addClass("ASTInterpreter", $globals.NodeVisitor, "Compiler-Interpreter");
  63540. $core.setSlots($globals.ASTInterpreter, ["node", "context", "stack", "returnValue", "returned", "forceAtEnd"]);
  63541. //>>excludeStart("ide", pragmas.excludeIdeData);
  63542. $globals.ASTInterpreter.comment="I visit an AST, interpreting (evaluating) nodes one after the other, using a small stack machine.\x0a\x0a## API\x0a\x0aWhile my instances should be used from within an `ASTDebugger`, which provides a more high level interface,\x0ayou can use methods from the `interpreting` protocol:\x0a\x0a- `#step` evaluates the current `node` only\x0a- `#stepOver` evaluates the AST from the current `node` up to the next stepping node (most likely the next send node)\x0a- `#proceed` evaluates eagerly the AST\x0a- `#restart` select the first node of the AST\x0a- `#skip` skips the current node, moving to the next one if any";
  63543. //>>excludeEnd("ide");
  63544. $core.addMethod(
  63545. $core.method({
  63546. selector: "assign:to:",
  63547. protocol: "private",
  63548. //>>excludeStart("ide", pragmas.excludeIdeData);
  63549. args: ["aNode", "anObject"],
  63550. source: "assign: aNode to: anObject\x0a\x09aNode binding inContext: self context put: anObject",
  63551. referencedClasses: [],
  63552. //>>excludeEnd("ide");
  63553. pragmas: [],
  63554. messageSends: ["inContext:put:", "binding", "context"]
  63555. }, function ($methodClass){ return function (aNode,anObject){
  63556. var self=this,$self=this;
  63557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63558. return $core.withContext(function($ctx1) {
  63559. //>>excludeEnd("ctx");
  63560. $recv($recv(aNode)._binding())._inContext_put_($self._context(),anObject);
  63561. return self;
  63562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63563. }, function($ctx1) {$ctx1.fill(self,"assign:to:",{aNode:aNode,anObject:anObject})});
  63564. //>>excludeEnd("ctx");
  63565. }; }),
  63566. $globals.ASTInterpreter);
  63567. $core.addMethod(
  63568. $core.method({
  63569. selector: "atEnd",
  63570. protocol: "testing",
  63571. //>>excludeStart("ide", pragmas.excludeIdeData);
  63572. args: [],
  63573. source: "atEnd\x0a\x09^ forceAtEnd or: [ self hasReturned or: [ self node isNil ] ]",
  63574. referencedClasses: [],
  63575. //>>excludeEnd("ide");
  63576. pragmas: [],
  63577. messageSends: ["or:", "hasReturned", "isNil", "node"]
  63578. }, function ($methodClass){ return function (){
  63579. var self=this,$self=this;
  63580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63581. return $core.withContext(function($ctx1) {
  63582. //>>excludeEnd("ctx");
  63583. if($core.assert($self.forceAtEnd)){
  63584. return true;
  63585. } else {
  63586. if($core.assert($self._hasReturned())){
  63587. return true;
  63588. } else {
  63589. return $recv($self._node())._isNil();
  63590. }
  63591. }
  63592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63593. }, function($ctx1) {$ctx1.fill(self,"atEnd",{})});
  63594. //>>excludeEnd("ctx");
  63595. }; }),
  63596. $globals.ASTInterpreter);
  63597. $core.addMethod(
  63598. $core.method({
  63599. selector: "context",
  63600. protocol: "accessing",
  63601. //>>excludeStart("ide", pragmas.excludeIdeData);
  63602. args: [],
  63603. source: "context\x0a\x09^ context",
  63604. referencedClasses: [],
  63605. //>>excludeEnd("ide");
  63606. pragmas: [],
  63607. messageSends: []
  63608. }, function ($methodClass){ return function (){
  63609. var self=this,$self=this;
  63610. return $self.context;
  63611. }; }),
  63612. $globals.ASTInterpreter);
  63613. $core.addMethod(
  63614. $core.method({
  63615. selector: "context:",
  63616. protocol: "accessing",
  63617. //>>excludeStart("ide", pragmas.excludeIdeData);
  63618. args: ["aContext"],
  63619. source: "context: aContext\x0a\x09context := aContext",
  63620. referencedClasses: [],
  63621. //>>excludeEnd("ide");
  63622. pragmas: [],
  63623. messageSends: []
  63624. }, function ($methodClass){ return function (aContext){
  63625. var self=this,$self=this;
  63626. $self.context=aContext;
  63627. return self;
  63628. }; }),
  63629. $globals.ASTInterpreter);
  63630. $core.addMethod(
  63631. $core.method({
  63632. selector: "enterNode",
  63633. protocol: "interpreting",
  63634. //>>excludeStart("ide", pragmas.excludeIdeData);
  63635. args: [],
  63636. source: "enterNode\x0a\x09self node: ((ASTEnterNode on: self) visit: self node)",
  63637. referencedClasses: ["ASTEnterNode"],
  63638. //>>excludeEnd("ide");
  63639. pragmas: [],
  63640. messageSends: ["node:", "visit:", "on:", "node"]
  63641. }, function ($methodClass){ return function (){
  63642. var self=this,$self=this;
  63643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63644. return $core.withContext(function($ctx1) {
  63645. //>>excludeEnd("ctx");
  63646. $self._node_($recv($recv($globals.ASTEnterNode)._on_(self))._visit_($self._node()));
  63647. return self;
  63648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63649. }, function($ctx1) {$ctx1.fill(self,"enterNode",{})});
  63650. //>>excludeEnd("ctx");
  63651. }; }),
  63652. $globals.ASTInterpreter);
  63653. $core.addMethod(
  63654. $core.method({
  63655. selector: "eval:",
  63656. protocol: "private",
  63657. //>>excludeStart("ide", pragmas.excludeIdeData);
  63658. args: ["aString"],
  63659. source: "eval: aString\x0a\x09\x22Evaluate aString as JS source inside an JS function.\x0a\x09aString is not sandboxed.\x22\x0a\x09\x0a\x09| source function |\x0a\x09\x0a\x09source := String streamContents: [ :str |\x0a\x09\x09str nextPutAll: '0,(function('.\x0a\x09\x09self context locals keys\x0a\x09\x09\x09do: [ :each | str nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ str nextPutAll: ',' ].\x0a\x09\x09str\x0a\x09\x09\x09nextPutAll: '){ return (function() {';\x0a\x09\x09\x09nextPutAll: aString;\x0a\x09\x09\x09nextPutAll: '})()})' ].\x0a\x09\x09\x09\x0a\x09function := Compiler eval: source.\x0a\x09\x0a\x09^ function valueWithPossibleArguments: self context locals values",
  63660. referencedClasses: ["String", "Compiler"],
  63661. //>>excludeEnd("ide");
  63662. pragmas: [],
  63663. messageSends: ["streamContents:", "nextPutAll:", "do:separatedBy:", "keys", "locals", "context", "eval:", "valueWithPossibleArguments:", "values"]
  63664. }, function ($methodClass){ return function (aString){
  63665. var self=this,$self=this;
  63666. var source,function_;
  63667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63668. return $core.withContext(function($ctx1) {
  63669. //>>excludeEnd("ctx");
  63670. source=$recv($globals.String)._streamContents_((function(str){
  63671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63672. return $core.withContext(function($ctx2) {
  63673. //>>excludeEnd("ctx");
  63674. [$recv(str)._nextPutAll_("0,(function(")
  63675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63676. ,$ctx2.sendIdx["nextPutAll:"]=1
  63677. //>>excludeEnd("ctx");
  63678. ][0];
  63679. $recv($recv([$recv([$self._context()
  63680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63681. ,$ctx2.sendIdx["context"]=1
  63682. //>>excludeEnd("ctx");
  63683. ][0])._locals()
  63684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63685. ,$ctx2.sendIdx["locals"]=1
  63686. //>>excludeEnd("ctx");
  63687. ][0])._keys())._do_separatedBy_((function(each){
  63688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63689. return $core.withContext(function($ctx3) {
  63690. //>>excludeEnd("ctx");
  63691. return [$recv(str)._nextPutAll_(each)
  63692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63693. ,$ctx3.sendIdx["nextPutAll:"]=2
  63694. //>>excludeEnd("ctx");
  63695. ][0];
  63696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63697. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  63698. //>>excludeEnd("ctx");
  63699. }),(function(){
  63700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63701. return $core.withContext(function($ctx3) {
  63702. //>>excludeEnd("ctx");
  63703. return [$recv(str)._nextPutAll_(",")
  63704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63705. ,$ctx3.sendIdx["nextPutAll:"]=3
  63706. //>>excludeEnd("ctx");
  63707. ][0];
  63708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63709. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  63710. //>>excludeEnd("ctx");
  63711. }));
  63712. [$recv(str)._nextPutAll_("){ return (function() {")
  63713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63714. ,$ctx2.sendIdx["nextPutAll:"]=4
  63715. //>>excludeEnd("ctx");
  63716. ][0];
  63717. [$recv(str)._nextPutAll_(aString)
  63718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63719. ,$ctx2.sendIdx["nextPutAll:"]=5
  63720. //>>excludeEnd("ctx");
  63721. ][0];
  63722. return $recv(str)._nextPutAll_("})()})");
  63723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63724. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  63725. //>>excludeEnd("ctx");
  63726. }));
  63727. function_=$recv($globals.Compiler)._eval_(source);
  63728. return $recv(function_)._valueWithPossibleArguments_($recv($recv($self._context())._locals())._values());
  63729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63730. }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString,source:source,function_:function_})});
  63731. //>>excludeEnd("ctx");
  63732. }; }),
  63733. $globals.ASTInterpreter);
  63734. $core.addMethod(
  63735. $core.method({
  63736. selector: "hasReturned",
  63737. protocol: "testing",
  63738. //>>excludeStart("ide", pragmas.excludeIdeData);
  63739. args: [],
  63740. source: "hasReturned\x0a\x09^ returned ifNil: [ false ]",
  63741. referencedClasses: [],
  63742. //>>excludeEnd("ide");
  63743. pragmas: [],
  63744. messageSends: ["ifNil:"]
  63745. }, function ($methodClass){ return function (){
  63746. var self=this,$self=this;
  63747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63748. return $core.withContext(function($ctx1) {
  63749. //>>excludeEnd("ctx");
  63750. var $1;
  63751. $1=$self.returned;
  63752. if($1 == null || $1.a$nil){
  63753. return false;
  63754. } else {
  63755. return $1;
  63756. }
  63757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63758. }, function($ctx1) {$ctx1.fill(self,"hasReturned",{})});
  63759. //>>excludeEnd("ctx");
  63760. }; }),
  63761. $globals.ASTInterpreter);
  63762. $core.addMethod(
  63763. $core.method({
  63764. selector: "initialize",
  63765. protocol: "initialization",
  63766. //>>excludeStart("ide", pragmas.excludeIdeData);
  63767. args: [],
  63768. source: "initialize\x0a\x09super initialize.\x0a\x0a\x09forceAtEnd := false",
  63769. referencedClasses: [],
  63770. //>>excludeEnd("ide");
  63771. pragmas: [],
  63772. messageSends: ["initialize"]
  63773. }, function ($methodClass){ return function (){
  63774. var self=this,$self=this;
  63775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63776. return $core.withContext(function($ctx1) {
  63777. //>>excludeEnd("ctx");
  63778. [(
  63779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63780. $ctx1.supercall = true,
  63781. //>>excludeEnd("ctx");
  63782. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  63783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63784. ,$ctx1.supercall = false
  63785. //>>excludeEnd("ctx");
  63786. ][0];
  63787. $self.forceAtEnd=false;
  63788. return self;
  63789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63790. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  63791. //>>excludeEnd("ctx");
  63792. }; }),
  63793. $globals.ASTInterpreter);
  63794. $core.addMethod(
  63795. $core.method({
  63796. selector: "interpret",
  63797. protocol: "interpreting",
  63798. //>>excludeStart("ide", pragmas.excludeIdeData);
  63799. args: [],
  63800. source: "interpret\x0a\x09\x22Interpret the next node to be evaluated\x22\x0a\x09\x0a\x09self visit: self node",
  63801. referencedClasses: [],
  63802. //>>excludeEnd("ide");
  63803. pragmas: [],
  63804. messageSends: ["visit:", "node"]
  63805. }, function ($methodClass){ return function (){
  63806. var self=this,$self=this;
  63807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63808. return $core.withContext(function($ctx1) {
  63809. //>>excludeEnd("ctx");
  63810. $self._visit_($self._node());
  63811. return self;
  63812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63813. }, function($ctx1) {$ctx1.fill(self,"interpret",{})});
  63814. //>>excludeEnd("ctx");
  63815. }; }),
  63816. $globals.ASTInterpreter);
  63817. $core.addMethod(
  63818. $core.method({
  63819. selector: "messageFromSendNode:arguments:",
  63820. protocol: "private",
  63821. //>>excludeStart("ide", pragmas.excludeIdeData);
  63822. args: ["aSendNode", "anArray"],
  63823. source: "messageFromSendNode: aSendNode arguments: anArray\x0a\x09^ Message selector: aSendNode selector arguments: anArray",
  63824. referencedClasses: ["Message"],
  63825. //>>excludeEnd("ide");
  63826. pragmas: [],
  63827. messageSends: ["selector:arguments:", "selector"]
  63828. }, function ($methodClass){ return function (aSendNode,anArray){
  63829. var self=this,$self=this;
  63830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63831. return $core.withContext(function($ctx1) {
  63832. //>>excludeEnd("ctx");
  63833. return $recv($globals.Message)._selector_arguments_($recv(aSendNode)._selector(),anArray);
  63834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63835. }, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:arguments:",{aSendNode:aSendNode,anArray:anArray})});
  63836. //>>excludeEnd("ctx");
  63837. }; }),
  63838. $globals.ASTInterpreter);
  63839. $core.addMethod(
  63840. $core.method({
  63841. selector: "messageNotUnderstood:receiver:",
  63842. protocol: "private",
  63843. //>>excludeStart("ide", pragmas.excludeIdeData);
  63844. args: ["aMessage", "anObject"],
  63845. source: "messageNotUnderstood: aMessage receiver: anObject\x0a\x09MessageNotUnderstood new\x0a\x09\x09message: aMessage;\x0a\x09\x09receiver: anObject;\x0a\x09\x09signal",
  63846. referencedClasses: ["MessageNotUnderstood"],
  63847. //>>excludeEnd("ide");
  63848. pragmas: [],
  63849. messageSends: ["message:", "new", "receiver:", "signal"]
  63850. }, function ($methodClass){ return function (aMessage,anObject){
  63851. var self=this,$self=this;
  63852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63853. return $core.withContext(function($ctx1) {
  63854. //>>excludeEnd("ctx");
  63855. var $1;
  63856. $1=$recv($globals.MessageNotUnderstood)._new();
  63857. $recv($1)._message_(aMessage);
  63858. $recv($1)._receiver_(anObject);
  63859. $recv($1)._signal();
  63860. return self;
  63861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63862. }, function($ctx1) {$ctx1.fill(self,"messageNotUnderstood:receiver:",{aMessage:aMessage,anObject:anObject})});
  63863. //>>excludeEnd("ctx");
  63864. }; }),
  63865. $globals.ASTInterpreter);
  63866. $core.addMethod(
  63867. $core.method({
  63868. selector: "next",
  63869. protocol: "interpreting",
  63870. //>>excludeStart("ide", pragmas.excludeIdeData);
  63871. args: [],
  63872. source: "next\x0a\x09| nd parent |\x0a\x09nd := self node.\x0a\x09parent := nd parent.\x0a\x09(parent ifNotNil: [ parent nextSiblingNode: nd ])\x0a\x09\x09ifNil: [ self node: parent ]\x0a\x09\x09ifNotNil: [ :sibling | self node: sibling; enterNode ]",
  63873. referencedClasses: [],
  63874. //>>excludeEnd("ide");
  63875. pragmas: [],
  63876. messageSends: ["node", "parent", "ifNil:ifNotNil:", "ifNotNil:", "nextSiblingNode:", "node:", "enterNode"]
  63877. }, function ($methodClass){ return function (){
  63878. var self=this,$self=this;
  63879. var nd,parent;
  63880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63881. return $core.withContext(function($ctx1) {
  63882. //>>excludeEnd("ctx");
  63883. var $1,$2;
  63884. nd=$self._node();
  63885. parent=$recv(nd)._parent();
  63886. $1=parent;
  63887. if($1 == null || $1.a$nil){
  63888. $2=$1;
  63889. } else {
  63890. $2=$recv(parent)._nextSiblingNode_(nd);
  63891. }
  63892. if($2 == null || $2.a$nil){
  63893. [$self._node_(parent)
  63894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63895. ,$ctx1.sendIdx["node:"]=1
  63896. //>>excludeEnd("ctx");
  63897. ][0];
  63898. } else {
  63899. var sibling;
  63900. sibling=$2;
  63901. $self._node_(sibling);
  63902. $self._enterNode();
  63903. }
  63904. return self;
  63905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63906. }, function($ctx1) {$ctx1.fill(self,"next",{nd:nd,parent:parent})});
  63907. //>>excludeEnd("ctx");
  63908. }; }),
  63909. $globals.ASTInterpreter);
  63910. $core.addMethod(
  63911. $core.method({
  63912. selector: "node",
  63913. protocol: "accessing",
  63914. //>>excludeStart("ide", pragmas.excludeIdeData);
  63915. args: [],
  63916. source: "node\x0a\x09\x22Answer the next node, ie the node to be evaluated in the next step\x22\x0a\x09\x0a\x09^ node",
  63917. referencedClasses: [],
  63918. //>>excludeEnd("ide");
  63919. pragmas: [],
  63920. messageSends: []
  63921. }, function ($methodClass){ return function (){
  63922. var self=this,$self=this;
  63923. return $self.node;
  63924. }; }),
  63925. $globals.ASTInterpreter);
  63926. $core.addMethod(
  63927. $core.method({
  63928. selector: "node:",
  63929. protocol: "accessing",
  63930. //>>excludeStart("ide", pragmas.excludeIdeData);
  63931. args: ["aNode"],
  63932. source: "node: aNode\x0a\x09node := aNode",
  63933. referencedClasses: [],
  63934. //>>excludeEnd("ide");
  63935. pragmas: [],
  63936. messageSends: []
  63937. }, function ($methodClass){ return function (aNode){
  63938. var self=this,$self=this;
  63939. $self.node=aNode;
  63940. return self;
  63941. }; }),
  63942. $globals.ASTInterpreter);
  63943. $core.addMethod(
  63944. $core.method({
  63945. selector: "peek",
  63946. protocol: "stack",
  63947. //>>excludeStart("ide", pragmas.excludeIdeData);
  63948. args: [],
  63949. source: "peek\x0a\x09\x22Peek the top object of the context stack\x22\x0a\x09\x0a\x09self stack ifEmpty: [ ^ nil ].\x0a\x09\x0a\x09^ self stack last",
  63950. referencedClasses: [],
  63951. //>>excludeEnd("ide");
  63952. pragmas: [],
  63953. messageSends: ["ifEmpty:", "stack", "last"]
  63954. }, function ($methodClass){ return function (){
  63955. var self=this,$self=this;
  63956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63957. return $core.withContext(function($ctx1) {
  63958. //>>excludeEnd("ctx");
  63959. var $early={};
  63960. try {
  63961. $recv([$self._stack()
  63962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63963. ,$ctx1.sendIdx["stack"]=1
  63964. //>>excludeEnd("ctx");
  63965. ][0])._ifEmpty_((function(){
  63966. throw $early=[nil];
  63967. }));
  63968. return $recv($self._stack())._last();
  63969. }
  63970. catch(e) {if(e===$early)return e[0]; throw e}
  63971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63972. }, function($ctx1) {$ctx1.fill(self,"peek",{})});
  63973. //>>excludeEnd("ctx");
  63974. }; }),
  63975. $globals.ASTInterpreter);
  63976. $core.addMethod(
  63977. $core.method({
  63978. selector: "pop",
  63979. protocol: "stack",
  63980. //>>excludeStart("ide", pragmas.excludeIdeData);
  63981. args: [],
  63982. source: "pop\x0a\x09\x22Pop an object from the context stack\x22\x0a\x09\x0a\x09| peekedValue |\x0a\x09\x0a\x09peekedValue := self peek.\x0a\x09self stack removeLast.\x0a\x09^ peekedValue",
  63983. referencedClasses: [],
  63984. //>>excludeEnd("ide");
  63985. pragmas: [],
  63986. messageSends: ["peek", "removeLast", "stack"]
  63987. }, function ($methodClass){ return function (){
  63988. var self=this,$self=this;
  63989. var peekedValue;
  63990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63991. return $core.withContext(function($ctx1) {
  63992. //>>excludeEnd("ctx");
  63993. peekedValue=$self._peek();
  63994. $recv($self._stack())._removeLast();
  63995. return peekedValue;
  63996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63997. }, function($ctx1) {$ctx1.fill(self,"pop",{peekedValue:peekedValue})});
  63998. //>>excludeEnd("ctx");
  63999. }; }),
  64000. $globals.ASTInterpreter);
  64001. $core.addMethod(
  64002. $core.method({
  64003. selector: "proceed",
  64004. protocol: "interpreting",
  64005. //>>excludeStart("ide", pragmas.excludeIdeData);
  64006. args: [],
  64007. source: "proceed\x0a\x09\x22Eagerly evaluate the ast\x22\x0a\x09\x0a\x09[ self atEnd ] \x0a\x09\x09whileFalse: [ self step ]",
  64008. referencedClasses: [],
  64009. //>>excludeEnd("ide");
  64010. pragmas: [],
  64011. messageSends: ["whileFalse:", "atEnd", "step"]
  64012. }, function ($methodClass){ return function (){
  64013. var self=this,$self=this;
  64014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64015. return $core.withContext(function($ctx1) {
  64016. //>>excludeEnd("ctx");
  64017. $recv((function(){
  64018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64019. return $core.withContext(function($ctx2) {
  64020. //>>excludeEnd("ctx");
  64021. return $self._atEnd();
  64022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64023. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  64024. //>>excludeEnd("ctx");
  64025. }))._whileFalse_((function(){
  64026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64027. return $core.withContext(function($ctx2) {
  64028. //>>excludeEnd("ctx");
  64029. return $self._step();
  64030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64031. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  64032. //>>excludeEnd("ctx");
  64033. }));
  64034. return self;
  64035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64036. }, function($ctx1) {$ctx1.fill(self,"proceed",{})});
  64037. //>>excludeEnd("ctx");
  64038. }; }),
  64039. $globals.ASTInterpreter);
  64040. $core.addMethod(
  64041. $core.method({
  64042. selector: "push:",
  64043. protocol: "stack",
  64044. //>>excludeStart("ide", pragmas.excludeIdeData);
  64045. args: ["anObject"],
  64046. source: "push: anObject\x0a\x09\x22Push an object to the context stack\x22\x0a\x09\x0a\x09^ self stack add: anObject",
  64047. referencedClasses: [],
  64048. //>>excludeEnd("ide");
  64049. pragmas: [],
  64050. messageSends: ["add:", "stack"]
  64051. }, function ($methodClass){ return function (anObject){
  64052. var self=this,$self=this;
  64053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64054. return $core.withContext(function($ctx1) {
  64055. //>>excludeEnd("ctx");
  64056. return $recv($self._stack())._add_(anObject);
  64057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64058. }, function($ctx1) {$ctx1.fill(self,"push:",{anObject:anObject})});
  64059. //>>excludeEnd("ctx");
  64060. }; }),
  64061. $globals.ASTInterpreter);
  64062. $core.addMethod(
  64063. $core.method({
  64064. selector: "restart",
  64065. protocol: "interpreting",
  64066. //>>excludeStart("ide", pragmas.excludeIdeData);
  64067. args: [],
  64068. source: "restart\x0a\x09self node: self context ast; enterNode",
  64069. referencedClasses: [],
  64070. //>>excludeEnd("ide");
  64071. pragmas: [],
  64072. messageSends: ["node:", "ast", "context", "enterNode"]
  64073. }, function ($methodClass){ return function (){
  64074. var self=this,$self=this;
  64075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64076. return $core.withContext(function($ctx1) {
  64077. //>>excludeEnd("ctx");
  64078. $self._node_($recv($self._context())._ast());
  64079. $self._enterNode();
  64080. return self;
  64081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64082. }, function($ctx1) {$ctx1.fill(self,"restart",{})});
  64083. //>>excludeEnd("ctx");
  64084. }; }),
  64085. $globals.ASTInterpreter);
  64086. $core.addMethod(
  64087. $core.method({
  64088. selector: "result",
  64089. protocol: "accessing",
  64090. //>>excludeStart("ide", pragmas.excludeIdeData);
  64091. args: [],
  64092. source: "result\x0a\x09^ self hasReturned \x0a\x09\x09ifTrue: [ self returnValue ] \x0a\x09\x09ifFalse: [ self context receiver ]",
  64093. referencedClasses: [],
  64094. //>>excludeEnd("ide");
  64095. pragmas: [],
  64096. messageSends: ["ifTrue:ifFalse:", "hasReturned", "returnValue", "receiver", "context"]
  64097. }, function ($methodClass){ return function (){
  64098. var self=this,$self=this;
  64099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64100. return $core.withContext(function($ctx1) {
  64101. //>>excludeEnd("ctx");
  64102. if($core.assert($self._hasReturned())){
  64103. return $self._returnValue();
  64104. } else {
  64105. return $recv($self._context())._receiver();
  64106. }
  64107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64108. }, function($ctx1) {$ctx1.fill(self,"result",{})});
  64109. //>>excludeEnd("ctx");
  64110. }; }),
  64111. $globals.ASTInterpreter);
  64112. $core.addMethod(
  64113. $core.method({
  64114. selector: "returnValue",
  64115. protocol: "accessing",
  64116. //>>excludeStart("ide", pragmas.excludeIdeData);
  64117. args: [],
  64118. source: "returnValue\x0a\x09^ returnValue",
  64119. referencedClasses: [],
  64120. //>>excludeEnd("ide");
  64121. pragmas: [],
  64122. messageSends: []
  64123. }, function ($methodClass){ return function (){
  64124. var self=this,$self=this;
  64125. return $self.returnValue;
  64126. }; }),
  64127. $globals.ASTInterpreter);
  64128. $core.addMethod(
  64129. $core.method({
  64130. selector: "returnValue:",
  64131. protocol: "accessing",
  64132. //>>excludeStart("ide", pragmas.excludeIdeData);
  64133. args: ["anObject"],
  64134. source: "returnValue: anObject\x0a\x09returnValue := anObject",
  64135. referencedClasses: [],
  64136. //>>excludeEnd("ide");
  64137. pragmas: [],
  64138. messageSends: []
  64139. }, function ($methodClass){ return function (anObject){
  64140. var self=this,$self=this;
  64141. $self.returnValue=anObject;
  64142. return self;
  64143. }; }),
  64144. $globals.ASTInterpreter);
  64145. $core.addMethod(
  64146. $core.method({
  64147. selector: "sendJavaScript:superMessage:switcher:to:",
  64148. protocol: "private",
  64149. //>>excludeStart("ide", pragmas.excludeIdeData);
  64150. args: ["aString", "aMessage", "aJSFunction", "anObject"],
  64151. source: "sendJavaScript: aString superMessage: aMessage switcher: aJSFunction to: anObject\x0a\x09| methodBlock parent |\x0a\x09\x0a\x09parent := self context method methodClass superPrototype.\x0a\x09parent ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09methodBlock := (parent at: aString)\x0a\x09\x09ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ methodBlock applyTo: anObject arguments: (aJSFunction applyTo: nil arguments: aMessage arguments)",
  64152. referencedClasses: [],
  64153. //>>excludeEnd("ide");
  64154. pragmas: [],
  64155. messageSends: ["superPrototype", "methodClass", "method", "context", "ifNil:", "messageNotUnderstood:receiver:", "at:", "applyTo:arguments:", "arguments"]
  64156. }, function ($methodClass){ return function (aString,aMessage,aJSFunction,anObject){
  64157. var self=this,$self=this;
  64158. var methodBlock,parent;
  64159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64160. return $core.withContext(function($ctx1) {
  64161. //>>excludeEnd("ctx");
  64162. var $1,$2;
  64163. parent=$recv($recv($recv($self._context())._method())._methodClass())._superPrototype();
  64164. $1=parent;
  64165. if($1 == null || $1.a$nil){
  64166. return [$self._messageNotUnderstood_receiver_(aMessage,anObject)
  64167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64168. ,$ctx1.sendIdx["messageNotUnderstood:receiver:"]=1
  64169. //>>excludeEnd("ctx");
  64170. ][0];
  64171. } else {
  64172. $1;
  64173. }
  64174. $2=$recv(parent)._at_(aString);
  64175. if($2 == null || $2.a$nil){
  64176. return $self._messageNotUnderstood_receiver_(aMessage,anObject);
  64177. } else {
  64178. methodBlock=$2;
  64179. }
  64180. return [$recv(methodBlock)._applyTo_arguments_(anObject,$recv(aJSFunction)._applyTo_arguments_(nil,$recv(aMessage)._arguments()))
  64181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64182. ,$ctx1.sendIdx["applyTo:arguments:"]=1
  64183. //>>excludeEnd("ctx");
  64184. ][0];
  64185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64186. }, function($ctx1) {$ctx1.fill(self,"sendJavaScript:superMessage:switcher:to:",{aString:aString,aMessage:aMessage,aJSFunction:aJSFunction,anObject:anObject,methodBlock:methodBlock,parent:parent})});
  64187. //>>excludeEnd("ctx");
  64188. }; }),
  64189. $globals.ASTInterpreter);
  64190. $core.addMethod(
  64191. $core.method({
  64192. selector: "sendJavaScript:superMessage:to:",
  64193. protocol: "private",
  64194. //>>excludeStart("ide", pragmas.excludeIdeData);
  64195. args: ["aString", "aMessage", "anObject"],
  64196. source: "sendJavaScript: aString superMessage: aMessage to: anObject\x0a\x09| methodBlock parent |\x0a\x09\x0a\x09parent := self context method methodClass superPrototype.\x0a\x09parent ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09methodBlock := (parent at: aString)\x0a\x09\x09ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ methodBlock applyTo: anObject arguments: aMessage arguments",
  64197. referencedClasses: [],
  64198. //>>excludeEnd("ide");
  64199. pragmas: [],
  64200. messageSends: ["superPrototype", "methodClass", "method", "context", "ifNil:", "messageNotUnderstood:receiver:", "at:", "applyTo:arguments:", "arguments"]
  64201. }, function ($methodClass){ return function (aString,aMessage,anObject){
  64202. var self=this,$self=this;
  64203. var methodBlock,parent;
  64204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64205. return $core.withContext(function($ctx1) {
  64206. //>>excludeEnd("ctx");
  64207. var $1,$2;
  64208. parent=$recv($recv($recv($self._context())._method())._methodClass())._superPrototype();
  64209. $1=parent;
  64210. if($1 == null || $1.a$nil){
  64211. return [$self._messageNotUnderstood_receiver_(aMessage,anObject)
  64212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64213. ,$ctx1.sendIdx["messageNotUnderstood:receiver:"]=1
  64214. //>>excludeEnd("ctx");
  64215. ][0];
  64216. } else {
  64217. $1;
  64218. }
  64219. $2=$recv(parent)._at_(aString);
  64220. if($2 == null || $2.a$nil){
  64221. return $self._messageNotUnderstood_receiver_(aMessage,anObject);
  64222. } else {
  64223. methodBlock=$2;
  64224. }
  64225. return $recv(methodBlock)._applyTo_arguments_(anObject,$recv(aMessage)._arguments());
  64226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64227. }, function($ctx1) {$ctx1.fill(self,"sendJavaScript:superMessage:to:",{aString:aString,aMessage:aMessage,anObject:anObject,methodBlock:methodBlock,parent:parent})});
  64228. //>>excludeEnd("ctx");
  64229. }; }),
  64230. $globals.ASTInterpreter);
  64231. $core.addMethod(
  64232. $core.method({
  64233. selector: "sendSuperMessage:to:",
  64234. protocol: "private",
  64235. //>>excludeStart("ide", pragmas.excludeIdeData);
  64236. args: ["aMessage", "anObject"],
  64237. source: "sendSuperMessage: aMessage to: anObject\x0a\x09| method parent |\x0a\x09\x0a\x09parent := self context method methodClass superclass.\x0a\x09parent ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09method := (parent lookupSelector: aMessage selector)\x0a\x09\x09ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ method sendTo: anObject arguments: aMessage arguments",
  64238. referencedClasses: [],
  64239. //>>excludeEnd("ide");
  64240. pragmas: [],
  64241. messageSends: ["superclass", "methodClass", "method", "context", "ifNil:", "messageNotUnderstood:receiver:", "lookupSelector:", "selector", "sendTo:arguments:", "arguments"]
  64242. }, function ($methodClass){ return function (aMessage,anObject){
  64243. var self=this,$self=this;
  64244. var method,parent;
  64245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64246. return $core.withContext(function($ctx1) {
  64247. //>>excludeEnd("ctx");
  64248. var $1,$2;
  64249. parent=$recv($recv($recv($self._context())._method())._methodClass())._superclass();
  64250. $1=parent;
  64251. if($1 == null || $1.a$nil){
  64252. return [$self._messageNotUnderstood_receiver_(aMessage,anObject)
  64253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64254. ,$ctx1.sendIdx["messageNotUnderstood:receiver:"]=1
  64255. //>>excludeEnd("ctx");
  64256. ][0];
  64257. } else {
  64258. $1;
  64259. }
  64260. $2=$recv(parent)._lookupSelector_($recv(aMessage)._selector());
  64261. if($2 == null || $2.a$nil){
  64262. return $self._messageNotUnderstood_receiver_(aMessage,anObject);
  64263. } else {
  64264. method=$2;
  64265. }
  64266. return $recv(method)._sendTo_arguments_(anObject,$recv(aMessage)._arguments());
  64267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64268. }, function($ctx1) {$ctx1.fill(self,"sendSuperMessage:to:",{aMessage:aMessage,anObject:anObject,method:method,parent:parent})});
  64269. //>>excludeEnd("ctx");
  64270. }; }),
  64271. $globals.ASTInterpreter);
  64272. $core.addMethod(
  64273. $core.method({
  64274. selector: "setNonLocalReturnFromContext:",
  64275. protocol: "interpreting",
  64276. //>>excludeStart("ide", pragmas.excludeIdeData);
  64277. args: ["aContext"],
  64278. source: "setNonLocalReturnFromContext: aContext\x0a\x09aContext interpreter hasReturned ifTrue: [\x0a\x09\x09returned := true.\x0a\x09\x09self returnValue: aContext interpreter returnValue ]",
  64279. referencedClasses: [],
  64280. //>>excludeEnd("ide");
  64281. pragmas: [],
  64282. messageSends: ["ifTrue:", "hasReturned", "interpreter", "returnValue:", "returnValue"]
  64283. }, function ($methodClass){ return function (aContext){
  64284. var self=this,$self=this;
  64285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64286. return $core.withContext(function($ctx1) {
  64287. //>>excludeEnd("ctx");
  64288. if($core.assert($recv([$recv(aContext)._interpreter()
  64289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64290. ,$ctx1.sendIdx["interpreter"]=1
  64291. //>>excludeEnd("ctx");
  64292. ][0])._hasReturned())){
  64293. $self.returned=true;
  64294. $self._returnValue_($recv($recv(aContext)._interpreter())._returnValue());
  64295. }
  64296. return self;
  64297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64298. }, function($ctx1) {$ctx1.fill(self,"setNonLocalReturnFromContext:",{aContext:aContext})});
  64299. //>>excludeEnd("ctx");
  64300. }; }),
  64301. $globals.ASTInterpreter);
  64302. $core.addMethod(
  64303. $core.method({
  64304. selector: "skip",
  64305. protocol: "interpreting",
  64306. //>>excludeStart("ide", pragmas.excludeIdeData);
  64307. args: [],
  64308. source: "skip\x0a\x09self next",
  64309. referencedClasses: [],
  64310. //>>excludeEnd("ide");
  64311. pragmas: [],
  64312. messageSends: ["next"]
  64313. }, function ($methodClass){ return function (){
  64314. var self=this,$self=this;
  64315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64316. return $core.withContext(function($ctx1) {
  64317. //>>excludeEnd("ctx");
  64318. $self._next();
  64319. return self;
  64320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64321. }, function($ctx1) {$ctx1.fill(self,"skip",{})});
  64322. //>>excludeEnd("ctx");
  64323. }; }),
  64324. $globals.ASTInterpreter);
  64325. $core.addMethod(
  64326. $core.method({
  64327. selector: "stack",
  64328. protocol: "accessing",
  64329. //>>excludeStart("ide", pragmas.excludeIdeData);
  64330. args: [],
  64331. source: "stack\x0a\x09^ stack ifNil: [ stack := OrderedCollection new ]",
  64332. referencedClasses: ["OrderedCollection"],
  64333. //>>excludeEnd("ide");
  64334. pragmas: [],
  64335. messageSends: ["ifNil:", "new"]
  64336. }, function ($methodClass){ return function (){
  64337. var self=this,$self=this;
  64338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64339. return $core.withContext(function($ctx1) {
  64340. //>>excludeEnd("ctx");
  64341. var $1;
  64342. $1=$self.stack;
  64343. if($1 == null || $1.a$nil){
  64344. $self.stack=$recv($globals.OrderedCollection)._new();
  64345. return $self.stack;
  64346. } else {
  64347. return $1;
  64348. }
  64349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64350. }, function($ctx1) {$ctx1.fill(self,"stack",{})});
  64351. //>>excludeEnd("ctx");
  64352. }; }),
  64353. $globals.ASTInterpreter);
  64354. $core.addMethod(
  64355. $core.method({
  64356. selector: "step",
  64357. protocol: "interpreting",
  64358. //>>excludeStart("ide", pragmas.excludeIdeData);
  64359. args: [],
  64360. source: "step\x0a\x09self \x0a\x09\x09interpret; \x0a\x09\x09next",
  64361. referencedClasses: [],
  64362. //>>excludeEnd("ide");
  64363. pragmas: [],
  64364. messageSends: ["interpret", "next"]
  64365. }, function ($methodClass){ return function (){
  64366. var self=this,$self=this;
  64367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64368. return $core.withContext(function($ctx1) {
  64369. //>>excludeEnd("ctx");
  64370. $self._interpret();
  64371. $self._next();
  64372. return self;
  64373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64374. }, function($ctx1) {$ctx1.fill(self,"step",{})});
  64375. //>>excludeEnd("ctx");
  64376. }; }),
  64377. $globals.ASTInterpreter);
  64378. $core.addMethod(
  64379. $core.method({
  64380. selector: "stepOver",
  64381. protocol: "interpreting",
  64382. //>>excludeStart("ide", pragmas.excludeIdeData);
  64383. args: [],
  64384. source: "stepOver\x0a\x09self step.\x0a\x09\x0a\x09[ self node isNil or: [ self node isSteppingNode ] ] whileFalse: [ \x0a\x09\x09self step ]",
  64385. referencedClasses: [],
  64386. //>>excludeEnd("ide");
  64387. pragmas: [],
  64388. messageSends: ["step", "whileFalse:", "or:", "isNil", "node", "isSteppingNode"]
  64389. }, function ($methodClass){ return function (){
  64390. var self=this,$self=this;
  64391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64392. return $core.withContext(function($ctx1) {
  64393. //>>excludeEnd("ctx");
  64394. [$self._step()
  64395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64396. ,$ctx1.sendIdx["step"]=1
  64397. //>>excludeEnd("ctx");
  64398. ][0];
  64399. $recv((function(){
  64400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64401. return $core.withContext(function($ctx2) {
  64402. //>>excludeEnd("ctx");
  64403. if($core.assert($recv([$self._node()
  64404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64405. ,$ctx2.sendIdx["node"]=1
  64406. //>>excludeEnd("ctx");
  64407. ][0])._isNil())){
  64408. return true;
  64409. } else {
  64410. return $recv($self._node())._isSteppingNode();
  64411. }
  64412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64413. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  64414. //>>excludeEnd("ctx");
  64415. }))._whileFalse_((function(){
  64416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64417. return $core.withContext(function($ctx2) {
  64418. //>>excludeEnd("ctx");
  64419. return $self._step();
  64420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64421. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  64422. //>>excludeEnd("ctx");
  64423. }));
  64424. return self;
  64425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64426. }, function($ctx1) {$ctx1.fill(self,"stepOver",{})});
  64427. //>>excludeEnd("ctx");
  64428. }; }),
  64429. $globals.ASTInterpreter);
  64430. $core.addMethod(
  64431. $core.method({
  64432. selector: "visit:",
  64433. protocol: "visiting",
  64434. //>>excludeStart("ide", pragmas.excludeIdeData);
  64435. args: ["aNode"],
  64436. source: "visit: aNode\x0a\x09self hasReturned ifFalse: [ super visit: aNode ]",
  64437. referencedClasses: [],
  64438. //>>excludeEnd("ide");
  64439. pragmas: [],
  64440. messageSends: ["ifFalse:", "hasReturned", "visit:"]
  64441. }, function ($methodClass){ return function (aNode){
  64442. var self=this,$self=this;
  64443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64444. return $core.withContext(function($ctx1) {
  64445. //>>excludeEnd("ctx");
  64446. if(!$core.assert($self._hasReturned())){
  64447. [(
  64448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64449. $ctx1.supercall = true,
  64450. //>>excludeEnd("ctx");
  64451. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visit_.call($self,aNode))
  64452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64453. ,$ctx1.supercall = false
  64454. //>>excludeEnd("ctx");
  64455. ][0];
  64456. }
  64457. return self;
  64458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64459. }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode})});
  64460. //>>excludeEnd("ctx");
  64461. }; }),
  64462. $globals.ASTInterpreter);
  64463. $core.addMethod(
  64464. $core.method({
  64465. selector: "visitAssignmentNode:",
  64466. protocol: "visiting",
  64467. //>>excludeStart("ide", pragmas.excludeIdeData);
  64468. args: ["aNode"],
  64469. source: "visitAssignmentNode: aNode\x0a\x09| poppedValue |\x0a\x09\x0a\x09poppedValue := self pop.\x0a\x09\x0a\x09\x22Pop the left side of the assignment.\x0a\x09It already has been visited, and we don't need its value.\x22\x0a\x09self pop.\x0a\x09\x0a\x09self push: poppedValue.\x0a\x09self assign: aNode left to: poppedValue",
  64470. referencedClasses: [],
  64471. //>>excludeEnd("ide");
  64472. pragmas: [],
  64473. messageSends: ["pop", "push:", "assign:to:", "left"]
  64474. }, function ($methodClass){ return function (aNode){
  64475. var self=this,$self=this;
  64476. var poppedValue;
  64477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64478. return $core.withContext(function($ctx1) {
  64479. //>>excludeEnd("ctx");
  64480. poppedValue=[$self._pop()
  64481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64482. ,$ctx1.sendIdx["pop"]=1
  64483. //>>excludeEnd("ctx");
  64484. ][0];
  64485. $self._pop();
  64486. $self._push_(poppedValue);
  64487. $self._assign_to_($recv(aNode)._left(),poppedValue);
  64488. return self;
  64489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64490. }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,poppedValue:poppedValue})});
  64491. //>>excludeEnd("ctx");
  64492. }; }),
  64493. $globals.ASTInterpreter);
  64494. $core.addMethod(
  64495. $core.method({
  64496. selector: "visitBlockNode:",
  64497. protocol: "visiting",
  64498. //>>excludeStart("ide", pragmas.excludeIdeData);
  64499. args: ["aNode"],
  64500. source: "visitBlockNode: aNode\x0a\x09\x22Do not evaluate the block node.\x0a\x09Instead, put all instructions into a block that we push to the stack for later evaluation\x22\x0a\x09\x0a\x09| block |\x0a\x09\x0a\x09block := AIBlockClosure forContext: self context node: aNode.\x0a\x09\x0a\x09self push: block",
  64501. referencedClasses: ["AIBlockClosure"],
  64502. //>>excludeEnd("ide");
  64503. pragmas: [],
  64504. messageSends: ["forContext:node:", "context", "push:"]
  64505. }, function ($methodClass){ return function (aNode){
  64506. var self=this,$self=this;
  64507. var block;
  64508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64509. return $core.withContext(function($ctx1) {
  64510. //>>excludeEnd("ctx");
  64511. block=$recv($globals.AIBlockClosure)._forContext_node_($self._context(),aNode);
  64512. $self._push_(block);
  64513. return self;
  64514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64515. }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,block:block})});
  64516. //>>excludeEnd("ctx");
  64517. }; }),
  64518. $globals.ASTInterpreter);
  64519. $core.addMethod(
  64520. $core.method({
  64521. selector: "visitBlockSequenceNode:",
  64522. protocol: "visiting",
  64523. //>>excludeStart("ide", pragmas.excludeIdeData);
  64524. args: ["aNode"],
  64525. source: "visitBlockSequenceNode: aNode\x0a\x09\x22If the receiver is actually visiting a BlockSequenceNode,\x0a\x09it means the the context is a block context. Evaluation should \x0a\x09stop right after evaluating the block sequence and the outer\x0a\x09context's interpreter should take over. \x0a\x09Therefore we force #atEnd.\x22\x0a\x09\x0a\x09super visitBlockSequenceNode: aNode.\x0a\x09forceAtEnd := true",
  64526. referencedClasses: [],
  64527. //>>excludeEnd("ide");
  64528. pragmas: [],
  64529. messageSends: ["visitBlockSequenceNode:"]
  64530. }, function ($methodClass){ return function (aNode){
  64531. var self=this,$self=this;
  64532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64533. return $core.withContext(function($ctx1) {
  64534. //>>excludeEnd("ctx");
  64535. [(
  64536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64537. $ctx1.supercall = true,
  64538. //>>excludeEnd("ctx");
  64539. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitBlockSequenceNode_.call($self,aNode))
  64540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64541. ,$ctx1.supercall = false
  64542. //>>excludeEnd("ctx");
  64543. ][0];
  64544. $self.forceAtEnd=true;
  64545. return self;
  64546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64547. }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode})});
  64548. //>>excludeEnd("ctx");
  64549. }; }),
  64550. $globals.ASTInterpreter);
  64551. $core.addMethod(
  64552. $core.method({
  64553. selector: "visitDagNode:",
  64554. protocol: "visiting",
  64555. //>>excludeStart("ide", pragmas.excludeIdeData);
  64556. args: ["aNode"],
  64557. source: "visitDagNode: aNode\x0a\x09\x22Do nothing by default. Especially, do not visit children recursively.\x22",
  64558. referencedClasses: [],
  64559. //>>excludeEnd("ide");
  64560. pragmas: [],
  64561. messageSends: []
  64562. }, function ($methodClass){ return function (aNode){
  64563. var self=this,$self=this;
  64564. return self;
  64565. }; }),
  64566. $globals.ASTInterpreter);
  64567. $core.addMethod(
  64568. $core.method({
  64569. selector: "visitDynamicArrayNode:",
  64570. protocol: "visiting",
  64571. //>>excludeStart("ide", pragmas.excludeIdeData);
  64572. args: ["aNode"],
  64573. source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09\x0a\x09array := #().\x0a\x09aNode dagChildren do: [ :each |\x0a\x09\x09array addFirst: self pop ].\x0a\x09\x0a\x09self push: array",
  64574. referencedClasses: [],
  64575. //>>excludeEnd("ide");
  64576. pragmas: [],
  64577. messageSends: ["do:", "dagChildren", "addFirst:", "pop", "push:"]
  64578. }, function ($methodClass){ return function (aNode){
  64579. var self=this,$self=this;
  64580. var array;
  64581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64582. return $core.withContext(function($ctx1) {
  64583. //>>excludeEnd("ctx");
  64584. array=[];
  64585. $recv($recv(aNode)._dagChildren())._do_((function(each){
  64586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64587. return $core.withContext(function($ctx2) {
  64588. //>>excludeEnd("ctx");
  64589. return $recv(array)._addFirst_($self._pop());
  64590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64591. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  64592. //>>excludeEnd("ctx");
  64593. }));
  64594. $self._push_(array);
  64595. return self;
  64596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64597. }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array})});
  64598. //>>excludeEnd("ctx");
  64599. }; }),
  64600. $globals.ASTInterpreter);
  64601. $core.addMethod(
  64602. $core.method({
  64603. selector: "visitDynamicDictionaryNode:",
  64604. protocol: "visiting",
  64605. //>>excludeStart("ide", pragmas.excludeIdeData);
  64606. args: ["aNode"],
  64607. source: "visitDynamicDictionaryNode: aNode\x0a\x09| keyValueList |\x0a\x09\x0a\x09keyValueList := OrderedCollection new.\x0a\x09\x0a\x09aNode dagChildren do: [ :each | \x0a\x09\x09keyValueList add: self pop ].\x0a\x09\x0a\x09self push: (HashedCollection newFromPairs: keyValueList reversed)",
  64608. referencedClasses: ["OrderedCollection", "HashedCollection"],
  64609. //>>excludeEnd("ide");
  64610. pragmas: [],
  64611. messageSends: ["new", "do:", "dagChildren", "add:", "pop", "push:", "newFromPairs:", "reversed"]
  64612. }, function ($methodClass){ return function (aNode){
  64613. var self=this,$self=this;
  64614. var keyValueList;
  64615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64616. return $core.withContext(function($ctx1) {
  64617. //>>excludeEnd("ctx");
  64618. keyValueList=$recv($globals.OrderedCollection)._new();
  64619. $recv($recv(aNode)._dagChildren())._do_((function(each){
  64620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64621. return $core.withContext(function($ctx2) {
  64622. //>>excludeEnd("ctx");
  64623. return $recv(keyValueList)._add_($self._pop());
  64624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64625. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  64626. //>>excludeEnd("ctx");
  64627. }));
  64628. $self._push_($recv($globals.HashedCollection)._newFromPairs_($recv(keyValueList)._reversed()));
  64629. return self;
  64630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64631. }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,keyValueList:keyValueList})});
  64632. //>>excludeEnd("ctx");
  64633. }; }),
  64634. $globals.ASTInterpreter);
  64635. $core.addMethod(
  64636. $core.method({
  64637. selector: "visitJSStatementNode:",
  64638. protocol: "visiting",
  64639. //>>excludeStart("ide", pragmas.excludeIdeData);
  64640. args: ["aNode"],
  64641. source: "visitJSStatementNode: aNode\x0a\x09returned := true.\x0a\x09self returnValue: (self eval: aNode source)",
  64642. referencedClasses: [],
  64643. //>>excludeEnd("ide");
  64644. pragmas: [],
  64645. messageSends: ["returnValue:", "eval:", "source"]
  64646. }, function ($methodClass){ return function (aNode){
  64647. var self=this,$self=this;
  64648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64649. return $core.withContext(function($ctx1) {
  64650. //>>excludeEnd("ctx");
  64651. $self.returned=true;
  64652. $self._returnValue_($self._eval_($recv(aNode)._source()));
  64653. return self;
  64654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64655. }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode})});
  64656. //>>excludeEnd("ctx");
  64657. }; }),
  64658. $globals.ASTInterpreter);
  64659. $core.addMethod(
  64660. $core.method({
  64661. selector: "visitReturnNode:",
  64662. protocol: "visiting",
  64663. //>>excludeStart("ide", pragmas.excludeIdeData);
  64664. args: ["aNode"],
  64665. source: "visitReturnNode: aNode\x0a\x09returned := true.\x0a\x09self returnValue: self pop",
  64666. referencedClasses: [],
  64667. //>>excludeEnd("ide");
  64668. pragmas: [],
  64669. messageSends: ["returnValue:", "pop"]
  64670. }, function ($methodClass){ return function (aNode){
  64671. var self=this,$self=this;
  64672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64673. return $core.withContext(function($ctx1) {
  64674. //>>excludeEnd("ctx");
  64675. $self.returned=true;
  64676. $self._returnValue_($self._pop());
  64677. return self;
  64678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64679. }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode})});
  64680. //>>excludeEnd("ctx");
  64681. }; }),
  64682. $globals.ASTInterpreter);
  64683. $core.addMethod(
  64684. $core.method({
  64685. selector: "visitSendNode:",
  64686. protocol: "visiting",
  64687. //>>excludeStart("ide", pragmas.excludeIdeData);
  64688. args: ["aNode"],
  64689. source: "visitSendNode: aNode\x0a\x09| receiver args message result |\x0a\x09\x0a\x09args := aNode arguments collect: [ :each | self pop ].\x0a\x09receiver := self peek.\x0a\x09\x0a\x09message := self\x0a\x09\x09messageFromSendNode: aNode\x0a\x09\x09arguments: args reversed.\x0a\x09\x0a\x09result := aNode superSend\x0a\x09\x09ifFalse: [ message sendTo: receiver ]\x0a\x09\x09ifTrue: [ aNode receiver binding isJavaScriptSuper\x0a\x09\x09\x09ifFalse: [ self sendSuperMessage: message to: receiver ]\x0a\x09\x09\x09ifTrue: [ aNode argumentSwitcher\x0a\x09\x09\x09\x09ifNil: [ self sendJavaScript: aNode javaScriptSelector superMessage: message to: receiver ]\x0a\x09\x09\x09\x09ifNotNil: [ :switcher | self sendJavaScript: aNode javaScriptSelector superMessage: message switcher: switcher to: receiver ] ] ].\x0a\x09\x0a\x09\x22For cascade sends, push the reciever if the send is not the last one\x22\x0a\x09aNode isSideEffect ifFalse: [ self pop; push: result ]",
  64690. referencedClasses: [],
  64691. //>>excludeEnd("ide");
  64692. pragmas: [],
  64693. messageSends: ["collect:", "arguments", "pop", "peek", "messageFromSendNode:arguments:", "reversed", "ifFalse:ifTrue:", "superSend", "sendTo:", "isJavaScriptSuper", "binding", "receiver", "sendSuperMessage:to:", "ifNil:ifNotNil:", "argumentSwitcher", "sendJavaScript:superMessage:to:", "javaScriptSelector", "sendJavaScript:superMessage:switcher:to:", "ifFalse:", "isSideEffect", "push:"]
  64694. }, function ($methodClass){ return function (aNode){
  64695. var self=this,$self=this;
  64696. var receiver,args,message,result;
  64697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64698. return $core.withContext(function($ctx1) {
  64699. //>>excludeEnd("ctx");
  64700. var $1;
  64701. args=$recv($recv(aNode)._arguments())._collect_((function(each){
  64702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64703. return $core.withContext(function($ctx2) {
  64704. //>>excludeEnd("ctx");
  64705. return [$self._pop()
  64706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64707. ,$ctx2.sendIdx["pop"]=1
  64708. //>>excludeEnd("ctx");
  64709. ][0];
  64710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64711. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  64712. //>>excludeEnd("ctx");
  64713. }));
  64714. receiver=$self._peek();
  64715. message=$self._messageFromSendNode_arguments_(aNode,$recv(args)._reversed());
  64716. if($core.assert($recv(aNode)._superSend())){
  64717. if($core.assert($recv($recv($recv(aNode)._receiver())._binding())._isJavaScriptSuper())){
  64718. $1=$recv(aNode)._argumentSwitcher();
  64719. if($1 == null || $1.a$nil){
  64720. result=$self._sendJavaScript_superMessage_to_([$recv(aNode)._javaScriptSelector()
  64721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64722. ,$ctx1.sendIdx["javaScriptSelector"]=1
  64723. //>>excludeEnd("ctx");
  64724. ][0],message,receiver);
  64725. } else {
  64726. var switcher;
  64727. switcher=$1;
  64728. result=$self._sendJavaScript_superMessage_switcher_to_($recv(aNode)._javaScriptSelector(),message,switcher,receiver);
  64729. }
  64730. } else {
  64731. result=$self._sendSuperMessage_to_(message,receiver);
  64732. }
  64733. } else {
  64734. result=$recv(message)._sendTo_(receiver);
  64735. }
  64736. if(!$core.assert($recv(aNode)._isSideEffect())){
  64737. $self._pop();
  64738. $self._push_(result);
  64739. }
  64740. return self;
  64741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64742. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,receiver:receiver,args:args,message:message,result:result})});
  64743. //>>excludeEnd("ctx");
  64744. }; }),
  64745. $globals.ASTInterpreter);
  64746. $core.addMethod(
  64747. $core.method({
  64748. selector: "visitValueNode:",
  64749. protocol: "visiting",
  64750. //>>excludeStart("ide", pragmas.excludeIdeData);
  64751. args: ["aNode"],
  64752. source: "visitValueNode: aNode\x0a\x09self push: aNode value",
  64753. referencedClasses: [],
  64754. //>>excludeEnd("ide");
  64755. pragmas: [],
  64756. messageSends: ["push:", "value"]
  64757. }, function ($methodClass){ return function (aNode){
  64758. var self=this,$self=this;
  64759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64760. return $core.withContext(function($ctx1) {
  64761. //>>excludeEnd("ctx");
  64762. $self._push_($recv(aNode)._value());
  64763. return self;
  64764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64765. }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode})});
  64766. //>>excludeEnd("ctx");
  64767. }; }),
  64768. $globals.ASTInterpreter);
  64769. $core.addMethod(
  64770. $core.method({
  64771. selector: "visitVariableNode:",
  64772. protocol: "visiting",
  64773. //>>excludeStart("ide", pragmas.excludeIdeData);
  64774. args: ["aNode"],
  64775. source: "visitVariableNode: aNode\x0a\x09self push: (aNode binding inContext: self context)",
  64776. referencedClasses: [],
  64777. //>>excludeEnd("ide");
  64778. pragmas: [],
  64779. messageSends: ["push:", "inContext:", "binding", "context"]
  64780. }, function ($methodClass){ return function (aNode){
  64781. var self=this,$self=this;
  64782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64783. return $core.withContext(function($ctx1) {
  64784. //>>excludeEnd("ctx");
  64785. $self._push_($recv($recv(aNode)._binding())._inContext_($self._context()));
  64786. return self;
  64787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64788. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
  64789. //>>excludeEnd("ctx");
  64790. }; }),
  64791. $globals.ASTInterpreter);
  64792. $core.addClass("ASTInterpreterError", $globals.Error, "Compiler-Interpreter");
  64793. //>>excludeStart("ide", pragmas.excludeIdeData);
  64794. $globals.ASTInterpreterError.comment="I get signaled when an AST interpreter is unable to interpret a node.";
  64795. //>>excludeEnd("ide");
  64796. $core.addClass("ASTPCNodeVisitor", $globals.NodeVisitor, "Compiler-Interpreter");
  64797. $core.setSlots($globals.ASTPCNodeVisitor, ["index", "trackedIndex", "selector", "currentNode"]);
  64798. //>>excludeStart("ide", pragmas.excludeIdeData);
  64799. $globals.ASTPCNodeVisitor.comment="I visit an AST until I get to the current node for the `context` and answer it.\x0a\x0a## API\x0a\x0aMy instances must be filled with a context object using `#context:`.\x0a\x0aAfter visiting the AST the current node is answered by `#currentNode`";
  64800. //>>excludeEnd("ide");
  64801. $core.addMethod(
  64802. $core.method({
  64803. selector: "currentNode",
  64804. protocol: "accessing",
  64805. //>>excludeStart("ide", pragmas.excludeIdeData);
  64806. args: [],
  64807. source: "currentNode\x0a\x09^ currentNode",
  64808. referencedClasses: [],
  64809. //>>excludeEnd("ide");
  64810. pragmas: [],
  64811. messageSends: []
  64812. }, function ($methodClass){ return function (){
  64813. var self=this,$self=this;
  64814. return $self.currentNode;
  64815. }; }),
  64816. $globals.ASTPCNodeVisitor);
  64817. $core.addMethod(
  64818. $core.method({
  64819. selector: "increaseTrackedIndex",
  64820. protocol: "accessing",
  64821. //>>excludeStart("ide", pragmas.excludeIdeData);
  64822. args: [],
  64823. source: "increaseTrackedIndex\x0a\x09trackedIndex := self trackedIndex + 1",
  64824. referencedClasses: [],
  64825. //>>excludeEnd("ide");
  64826. pragmas: [],
  64827. messageSends: ["+", "trackedIndex"]
  64828. }, function ($methodClass){ return function (){
  64829. var self=this,$self=this;
  64830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64831. return $core.withContext(function($ctx1) {
  64832. //>>excludeEnd("ctx");
  64833. $self.trackedIndex=$recv($self._trackedIndex()).__plus((1));
  64834. return self;
  64835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64836. }, function($ctx1) {$ctx1.fill(self,"increaseTrackedIndex",{})});
  64837. //>>excludeEnd("ctx");
  64838. }; }),
  64839. $globals.ASTPCNodeVisitor);
  64840. $core.addMethod(
  64841. $core.method({
  64842. selector: "index",
  64843. protocol: "accessing",
  64844. //>>excludeStart("ide", pragmas.excludeIdeData);
  64845. args: [],
  64846. source: "index\x0a\x09^ index",
  64847. referencedClasses: [],
  64848. //>>excludeEnd("ide");
  64849. pragmas: [],
  64850. messageSends: []
  64851. }, function ($methodClass){ return function (){
  64852. var self=this,$self=this;
  64853. return $self.index;
  64854. }; }),
  64855. $globals.ASTPCNodeVisitor);
  64856. $core.addMethod(
  64857. $core.method({
  64858. selector: "index:",
  64859. protocol: "accessing",
  64860. //>>excludeStart("ide", pragmas.excludeIdeData);
  64861. args: ["aNumber"],
  64862. source: "index: aNumber\x0a\x09index := aNumber",
  64863. referencedClasses: [],
  64864. //>>excludeEnd("ide");
  64865. pragmas: [],
  64866. messageSends: []
  64867. }, function ($methodClass){ return function (aNumber){
  64868. var self=this,$self=this;
  64869. $self.index=aNumber;
  64870. return self;
  64871. }; }),
  64872. $globals.ASTPCNodeVisitor);
  64873. $core.addMethod(
  64874. $core.method({
  64875. selector: "selector",
  64876. protocol: "accessing",
  64877. //>>excludeStart("ide", pragmas.excludeIdeData);
  64878. args: [],
  64879. source: "selector\x0a\x09^ selector",
  64880. referencedClasses: [],
  64881. //>>excludeEnd("ide");
  64882. pragmas: [],
  64883. messageSends: []
  64884. }, function ($methodClass){ return function (){
  64885. var self=this,$self=this;
  64886. return $self.selector;
  64887. }; }),
  64888. $globals.ASTPCNodeVisitor);
  64889. $core.addMethod(
  64890. $core.method({
  64891. selector: "selector:",
  64892. protocol: "accessing",
  64893. //>>excludeStart("ide", pragmas.excludeIdeData);
  64894. args: ["aString"],
  64895. source: "selector: aString\x0a\x09selector := aString",
  64896. referencedClasses: [],
  64897. //>>excludeEnd("ide");
  64898. pragmas: [],
  64899. messageSends: []
  64900. }, function ($methodClass){ return function (aString){
  64901. var self=this,$self=this;
  64902. $self.selector=aString;
  64903. return self;
  64904. }; }),
  64905. $globals.ASTPCNodeVisitor);
  64906. $core.addMethod(
  64907. $core.method({
  64908. selector: "trackedIndex",
  64909. protocol: "accessing",
  64910. //>>excludeStart("ide", pragmas.excludeIdeData);
  64911. args: [],
  64912. source: "trackedIndex\x0a\x09^ trackedIndex ifNil: [ trackedIndex := 0 ]",
  64913. referencedClasses: [],
  64914. //>>excludeEnd("ide");
  64915. pragmas: [],
  64916. messageSends: ["ifNil:"]
  64917. }, function ($methodClass){ return function (){
  64918. var self=this,$self=this;
  64919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64920. return $core.withContext(function($ctx1) {
  64921. //>>excludeEnd("ctx");
  64922. var $1;
  64923. $1=$self.trackedIndex;
  64924. if($1 == null || $1.a$nil){
  64925. $self.trackedIndex=(0);
  64926. return $self.trackedIndex;
  64927. } else {
  64928. return $1;
  64929. }
  64930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64931. }, function($ctx1) {$ctx1.fill(self,"trackedIndex",{})});
  64932. //>>excludeEnd("ctx");
  64933. }; }),
  64934. $globals.ASTPCNodeVisitor);
  64935. $core.addMethod(
  64936. $core.method({
  64937. selector: "visitJSStatementNode:",
  64938. protocol: "visiting",
  64939. //>>excludeStart("ide", pragmas.excludeIdeData);
  64940. args: ["aNode"],
  64941. source: "visitJSStatementNode: aNode\x0a\x09\x22If a JSStatementNode is encountered, it always is the current node.\x0a\x09Stop visiting the AST there\x22\x0a\x09\x0a\x09currentNode := aNode",
  64942. referencedClasses: [],
  64943. //>>excludeEnd("ide");
  64944. pragmas: [],
  64945. messageSends: []
  64946. }, function ($methodClass){ return function (aNode){
  64947. var self=this,$self=this;
  64948. $self.currentNode=aNode;
  64949. return self;
  64950. }; }),
  64951. $globals.ASTPCNodeVisitor);
  64952. $core.addMethod(
  64953. $core.method({
  64954. selector: "visitSendNode:",
  64955. protocol: "visiting",
  64956. //>>excludeStart("ide", pragmas.excludeIdeData);
  64957. args: ["aNode"],
  64958. source: "visitSendNode: aNode\x0a\x09super visitSendNode: aNode.\x0a\x09\x0a\x09self selector = aNode selector ifTrue: [\x0a\x09\x09self trackedIndex = self index ifTrue: [ currentNode := aNode ].\x0a\x09\x09self increaseTrackedIndex ]",
  64959. referencedClasses: [],
  64960. //>>excludeEnd("ide");
  64961. pragmas: [],
  64962. messageSends: ["visitSendNode:", "ifTrue:", "=", "selector", "trackedIndex", "index", "increaseTrackedIndex"]
  64963. }, function ($methodClass){ return function (aNode){
  64964. var self=this,$self=this;
  64965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64966. return $core.withContext(function($ctx1) {
  64967. //>>excludeEnd("ctx");
  64968. [(
  64969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64970. $ctx1.supercall = true,
  64971. //>>excludeEnd("ctx");
  64972. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSendNode_.call($self,aNode))
  64973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64974. ,$ctx1.supercall = false
  64975. //>>excludeEnd("ctx");
  64976. ][0];
  64977. if($core.assert([$recv([$self._selector()
  64978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64979. ,$ctx1.sendIdx["selector"]=1
  64980. //>>excludeEnd("ctx");
  64981. ][0]).__eq($recv(aNode)._selector())
  64982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64983. ,$ctx1.sendIdx["="]=1
  64984. //>>excludeEnd("ctx");
  64985. ][0])){
  64986. if($core.assert($recv($self._trackedIndex()).__eq($self._index()))){
  64987. $self.currentNode=aNode;
  64988. $self.currentNode;
  64989. }
  64990. $self._increaseTrackedIndex();
  64991. }
  64992. return self;
  64993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64994. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode})});
  64995. //>>excludeEnd("ctx");
  64996. }; }),
  64997. $globals.ASTPCNodeVisitor);
  64998. $core.setTraitComposition([{trait: $globals.TMethodContext}], $globals.AIContext);
  64999. $core.addMethod(
  65000. $core.method({
  65001. selector: "isSteppingNode",
  65002. protocol: "*Compiler-Interpreter",
  65003. //>>excludeStart("ide", pragmas.excludeIdeData);
  65004. args: [],
  65005. source: "isSteppingNode\x0a\x09^ false",
  65006. referencedClasses: [],
  65007. //>>excludeEnd("ide");
  65008. pragmas: [],
  65009. messageSends: []
  65010. }, function ($methodClass){ return function (){
  65011. var self=this,$self=this;
  65012. return false;
  65013. }; }),
  65014. $globals.ASTNode);
  65015. $core.addMethod(
  65016. $core.method({
  65017. selector: "nextSiblingNode:",
  65018. protocol: "*Compiler-Interpreter",
  65019. //>>excludeStart("ide", pragmas.excludeIdeData);
  65020. args: ["aNode"],
  65021. source: "nextSiblingNode: aNode\x0a\x09\x22Answer the next node after aNode or nil\x22\x0a\x09\x0a\x09^ self dagChildren \x0a\x09\x09at: (self dagChildren indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ nil ]",
  65022. referencedClasses: [],
  65023. //>>excludeEnd("ide");
  65024. pragmas: [],
  65025. messageSends: ["at:ifAbsent:", "dagChildren", "+", "indexOf:"]
  65026. }, function ($methodClass){ return function (aNode){
  65027. var self=this,$self=this;
  65028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65029. return $core.withContext(function($ctx1) {
  65030. //>>excludeEnd("ctx");
  65031. return $recv([$self._dagChildren()
  65032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65033. ,$ctx1.sendIdx["dagChildren"]=1
  65034. //>>excludeEnd("ctx");
  65035. ][0])._at_ifAbsent_($recv($recv($self._dagChildren())._indexOf_(aNode)).__plus((1)),(function(){
  65036. return nil;
  65037. }));
  65038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65039. }, function($ctx1) {$ctx1.fill(self,"nextSiblingNode:",{aNode:aNode})});
  65040. //>>excludeEnd("ctx");
  65041. }; }),
  65042. $globals.ASTNode);
  65043. $core.addMethod(
  65044. $core.method({
  65045. selector: "inContext:",
  65046. protocol: "*Compiler-Interpreter",
  65047. //>>excludeStart("ide", pragmas.excludeIdeData);
  65048. args: ["aContext"],
  65049. source: "inContext: aContext\x0a\x09self error: 'Alias variable is internal, it should never appear in normal variable context.'",
  65050. referencedClasses: [],
  65051. //>>excludeEnd("ide");
  65052. pragmas: [],
  65053. messageSends: ["error:"]
  65054. }, function ($methodClass){ return function (aContext){
  65055. var self=this,$self=this;
  65056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65057. return $core.withContext(function($ctx1) {
  65058. //>>excludeEnd("ctx");
  65059. $self._error_("Alias variable is internal, it should never appear in normal variable context.");
  65060. return self;
  65061. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65062. }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
  65063. //>>excludeEnd("ctx");
  65064. }; }),
  65065. $globals.AliasVar);
  65066. $core.addMethod(
  65067. $core.method({
  65068. selector: "isSteppingNode",
  65069. protocol: "*Compiler-Interpreter",
  65070. //>>excludeStart("ide", pragmas.excludeIdeData);
  65071. args: [],
  65072. source: "isSteppingNode\x0a\x09^ true",
  65073. referencedClasses: [],
  65074. //>>excludeEnd("ide");
  65075. pragmas: [],
  65076. messageSends: []
  65077. }, function ($methodClass){ return function (){
  65078. var self=this,$self=this;
  65079. return true;
  65080. }; }),
  65081. $globals.AssignmentNode);
  65082. $core.addMethod(
  65083. $core.method({
  65084. selector: "isSteppingNode",
  65085. protocol: "*Compiler-Interpreter",
  65086. //>>excludeStart("ide", pragmas.excludeIdeData);
  65087. args: [],
  65088. source: "isSteppingNode\x0a\x09^ true",
  65089. referencedClasses: [],
  65090. //>>excludeEnd("ide");
  65091. pragmas: [],
  65092. messageSends: []
  65093. }, function ($methodClass){ return function (){
  65094. var self=this,$self=this;
  65095. return true;
  65096. }; }),
  65097. $globals.BlockNode);
  65098. $core.addMethod(
  65099. $core.method({
  65100. selector: "nextSiblingNode:",
  65101. protocol: "*Compiler-Interpreter",
  65102. //>>excludeStart("ide", pragmas.excludeIdeData);
  65103. args: ["aNode"],
  65104. source: "nextSiblingNode: aNode\x0a\x09\x22Answer nil as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09\x22In fact, this should not have been called, ever. IMO. -- herby\x22\x0a\x09\x0a\x09^ nil",
  65105. referencedClasses: [],
  65106. //>>excludeEnd("ide");
  65107. pragmas: [],
  65108. messageSends: []
  65109. }, function ($methodClass){ return function (aNode){
  65110. var self=this,$self=this;
  65111. return nil;
  65112. }; }),
  65113. $globals.BlockNode);
  65114. $core.addMethod(
  65115. $core.method({
  65116. selector: "inContext:",
  65117. protocol: "*Compiler-Interpreter",
  65118. //>>excludeStart("ide", pragmas.excludeIdeData);
  65119. args: ["aContext"],
  65120. source: "inContext: aContext\x0a\x09^ Smalltalk globals \x0a\x09\x09at: self name \x0a\x09\x09ifAbsent: [ Platform globals at: self name ]",
  65121. referencedClasses: ["Smalltalk", "Platform"],
  65122. //>>excludeEnd("ide");
  65123. pragmas: [],
  65124. messageSends: ["at:ifAbsent:", "globals", "name", "at:"]
  65125. }, function ($methodClass){ return function (aContext){
  65126. var self=this,$self=this;
  65127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65128. return $core.withContext(function($ctx1) {
  65129. //>>excludeEnd("ctx");
  65130. return $recv([$recv($globals.Smalltalk)._globals()
  65131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65132. ,$ctx1.sendIdx["globals"]=1
  65133. //>>excludeEnd("ctx");
  65134. ][0])._at_ifAbsent_([$self._name()
  65135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65136. ,$ctx1.sendIdx["name"]=1
  65137. //>>excludeEnd("ctx");
  65138. ][0],(function(){
  65139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65140. return $core.withContext(function($ctx2) {
  65141. //>>excludeEnd("ctx");
  65142. return $recv($recv($globals.Platform)._globals())._at_($self._name());
  65143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65144. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65145. //>>excludeEnd("ctx");
  65146. }));
  65147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65148. }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
  65149. //>>excludeEnd("ctx");
  65150. }; }),
  65151. $globals.ClassRefVar);
  65152. $core.addMethod(
  65153. $core.method({
  65154. selector: "isSteppingNode",
  65155. protocol: "*Compiler-Interpreter",
  65156. //>>excludeStart("ide", pragmas.excludeIdeData);
  65157. args: [],
  65158. source: "isSteppingNode\x0a\x09^ true",
  65159. referencedClasses: [],
  65160. //>>excludeEnd("ide");
  65161. pragmas: [],
  65162. messageSends: []
  65163. }, function ($methodClass){ return function (){
  65164. var self=this,$self=this;
  65165. return true;
  65166. }; }),
  65167. $globals.DynamicArrayNode);
  65168. $core.addMethod(
  65169. $core.method({
  65170. selector: "isSteppingNode",
  65171. protocol: "*Compiler-Interpreter",
  65172. //>>excludeStart("ide", pragmas.excludeIdeData);
  65173. args: [],
  65174. source: "isSteppingNode\x0a\x09^ true",
  65175. referencedClasses: [],
  65176. //>>excludeEnd("ide");
  65177. pragmas: [],
  65178. messageSends: []
  65179. }, function ($methodClass){ return function (){
  65180. var self=this,$self=this;
  65181. return true;
  65182. }; }),
  65183. $globals.DynamicDictionaryNode);
  65184. $core.addMethod(
  65185. $core.method({
  65186. selector: "evaluate:context:",
  65187. protocol: "*Compiler-Interpreter",
  65188. //>>excludeStart("ide", pragmas.excludeIdeData);
  65189. args: ["aString", "aContext"],
  65190. source: "evaluate: aString context: aContext\x0a\x09\x22Similar to #evaluate:for:, with the following differences:\x0a\x09- instead of compiling and running `aString`, `aString` is interpreted using an `ASTInterpreter`\x0a\x09- instead of evaluating against a receiver, evaluate in the context of `aContext`\x22\x0a\x0a\x09| compiler ast |\x0a\x09\x0a\x09compiler := Compiler new.\x0a\x09[ ast := compiler parseExpression: aString ] \x0a\x09\x09on: Error \x0a\x09\x09do: [ :ex | ^ Terminal alert: ex messageText ].\x0a\x09\x09\x0a\x09(AISemanticAnalyzer on: aContext receiver class)\x0a\x09\x09context: aContext;\x0a\x09\x09visit: ast.\x0a\x0a\x09^ aContext evaluateNode: ast",
  65191. referencedClasses: ["Compiler", "Error", "Terminal", "AISemanticAnalyzer"],
  65192. //>>excludeEnd("ide");
  65193. pragmas: [],
  65194. messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "context:", "on:", "class", "receiver", "visit:", "evaluateNode:"]
  65195. }, function ($methodClass){ return function (aString,aContext){
  65196. var self=this,$self=this;
  65197. var compiler,ast;
  65198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65199. return $core.withContext(function($ctx1) {
  65200. //>>excludeEnd("ctx");
  65201. var $1;
  65202. var $early={};
  65203. try {
  65204. compiler=$recv($globals.Compiler)._new();
  65205. $recv((function(){
  65206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65207. return $core.withContext(function($ctx2) {
  65208. //>>excludeEnd("ctx");
  65209. ast=$recv(compiler)._parseExpression_(aString);
  65210. return ast;
  65211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65212. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65213. //>>excludeEnd("ctx");
  65214. }))._on_do_($globals.Error,(function(ex){
  65215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65216. return $core.withContext(function($ctx2) {
  65217. //>>excludeEnd("ctx");
  65218. throw $early=[$recv($globals.Terminal)._alert_($recv(ex)._messageText())];
  65219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65220. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
  65221. //>>excludeEnd("ctx");
  65222. }));
  65223. $1=$recv($globals.AISemanticAnalyzer)._on_($recv($recv(aContext)._receiver())._class());
  65224. $recv($1)._context_(aContext);
  65225. $recv($1)._visit_(ast);
  65226. return $recv(aContext)._evaluateNode_(ast);
  65227. }
  65228. catch(e) {if(e===$early)return e[0]; throw e}
  65229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65230. }, function($ctx1) {$ctx1.fill(self,"evaluate:context:",{aString:aString,aContext:aContext,compiler:compiler,ast:ast})});
  65231. //>>excludeEnd("ctx");
  65232. }; }),
  65233. $globals.Evaluator);
  65234. $core.addMethod(
  65235. $core.method({
  65236. selector: "inContext:",
  65237. protocol: "*Compiler-Interpreter",
  65238. //>>excludeStart("ide", pragmas.excludeIdeData);
  65239. args: ["aContext"],
  65240. source: "inContext: aContext\x0a\x09^ Platform globals at: self name ifAbsent: [ self error: 'Unknown variable' ]",
  65241. referencedClasses: ["Platform"],
  65242. //>>excludeEnd("ide");
  65243. pragmas: [],
  65244. messageSends: ["at:ifAbsent:", "globals", "name", "error:"]
  65245. }, function ($methodClass){ return function (aContext){
  65246. var self=this,$self=this;
  65247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65248. return $core.withContext(function($ctx1) {
  65249. //>>excludeEnd("ctx");
  65250. return $recv($recv($globals.Platform)._globals())._at_ifAbsent_($self._name(),(function(){
  65251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65252. return $core.withContext(function($ctx2) {
  65253. //>>excludeEnd("ctx");
  65254. return $self._error_("Unknown variable");
  65255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65256. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65257. //>>excludeEnd("ctx");
  65258. }));
  65259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65260. }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
  65261. //>>excludeEnd("ctx");
  65262. }; }),
  65263. $globals.ExternallyKnownVar);
  65264. $core.addMethod(
  65265. $core.method({
  65266. selector: "isSteppingNode",
  65267. protocol: "*Compiler-Interpreter",
  65268. //>>excludeStart("ide", pragmas.excludeIdeData);
  65269. args: [],
  65270. source: "isSteppingNode\x0a\x09^ true",
  65271. referencedClasses: [],
  65272. //>>excludeEnd("ide");
  65273. pragmas: [],
  65274. messageSends: []
  65275. }, function ($methodClass){ return function (){
  65276. var self=this,$self=this;
  65277. return true;
  65278. }; }),
  65279. $globals.JSStatementNode);
  65280. $core.addMethod(
  65281. $core.method({
  65282. selector: "isJavaScriptSuper",
  65283. protocol: "*Compiler-Interpreter",
  65284. //>>excludeStart("ide", pragmas.excludeIdeData);
  65285. args: [],
  65286. source: "isJavaScriptSuper\x0a\x09^ true",
  65287. referencedClasses: [],
  65288. //>>excludeEnd("ide");
  65289. pragmas: [],
  65290. messageSends: []
  65291. }, function ($methodClass){ return function (){
  65292. var self=this,$self=this;
  65293. return true;
  65294. }; }),
  65295. $globals.JavaScriptSuperVar);
  65296. $core.addMethod(
  65297. $core.method({
  65298. selector: "inContext:",
  65299. protocol: "*Compiler-Interpreter",
  65300. //>>excludeStart("ide", pragmas.excludeIdeData);
  65301. args: ["aContext"],
  65302. source: "inContext: aContext\x0a\x09^ #{'nil'->nil. 'true'->true. 'false'->false}\x0a\x09\x09at: self name\x0a\x09\x09ifAbsent: [ super inContext: aContext ]",
  65303. referencedClasses: [],
  65304. //>>excludeEnd("ide");
  65305. pragmas: [],
  65306. messageSends: ["at:ifAbsent:", "name", "inContext:"]
  65307. }, function ($methodClass){ return function (aContext){
  65308. var self=this,$self=this;
  65309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65310. return $core.withContext(function($ctx1) {
  65311. //>>excludeEnd("ctx");
  65312. return $recv($globals.HashedCollection._newFromPairs_(["nil",nil,"true",true,"false",false]))._at_ifAbsent_($self._name(),(function(){
  65313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65314. return $core.withContext(function($ctx2) {
  65315. //>>excludeEnd("ctx");
  65316. return [(
  65317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65318. $ctx2.supercall = true,
  65319. //>>excludeEnd("ctx");
  65320. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._inContext_.call($self,aContext))
  65321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65322. ,$ctx2.supercall = false
  65323. //>>excludeEnd("ctx");
  65324. ][0];
  65325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65326. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65327. //>>excludeEnd("ctx");
  65328. }));
  65329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65330. }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
  65331. //>>excludeEnd("ctx");
  65332. }; }),
  65333. $globals.PseudoVar);
  65334. $core.addMethod(
  65335. $core.method({
  65336. selector: "inContext:",
  65337. protocol: "*Compiler-Interpreter",
  65338. //>>excludeStart("ide", pragmas.excludeIdeData);
  65339. args: ["aContext"],
  65340. source: "inContext: aContext\x0a\x09^ aContext localAt: self name",
  65341. referencedClasses: [],
  65342. //>>excludeEnd("ide");
  65343. pragmas: [],
  65344. messageSends: ["localAt:", "name"]
  65345. }, function ($methodClass){ return function (aContext){
  65346. var self=this,$self=this;
  65347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65348. return $core.withContext(function($ctx1) {
  65349. //>>excludeEnd("ctx");
  65350. return $recv(aContext)._localAt_($self._name());
  65351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65352. }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
  65353. //>>excludeEnd("ctx");
  65354. }; }),
  65355. $globals.ScopeVar);
  65356. $core.addMethod(
  65357. $core.method({
  65358. selector: "inContext:put:",
  65359. protocol: "*Compiler-Interpreter",
  65360. //>>excludeStart("ide", pragmas.excludeIdeData);
  65361. args: ["aContext", "anObject"],
  65362. source: "inContext: aContext put: anObject\x0a\x09self error: 'Non-assignable variables should not be changed.'",
  65363. referencedClasses: [],
  65364. //>>excludeEnd("ide");
  65365. pragmas: [],
  65366. messageSends: ["error:"]
  65367. }, function ($methodClass){ return function (aContext,anObject){
  65368. var self=this,$self=this;
  65369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65370. return $core.withContext(function($ctx1) {
  65371. //>>excludeEnd("ctx");
  65372. $self._error_("Non-assignable variables should not be changed.");
  65373. return self;
  65374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65375. }, function($ctx1) {$ctx1.fill(self,"inContext:put:",{aContext:aContext,anObject:anObject})});
  65376. //>>excludeEnd("ctx");
  65377. }; }),
  65378. $globals.ScopeVar);
  65379. $core.addMethod(
  65380. $core.method({
  65381. selector: "isSteppingNode",
  65382. protocol: "*Compiler-Interpreter",
  65383. //>>excludeStart("ide", pragmas.excludeIdeData);
  65384. args: [],
  65385. source: "isSteppingNode\x0a\x09^ true",
  65386. referencedClasses: [],
  65387. //>>excludeEnd("ide");
  65388. pragmas: [],
  65389. messageSends: []
  65390. }, function ($methodClass){ return function (){
  65391. var self=this,$self=this;
  65392. return true;
  65393. }; }),
  65394. $globals.SendNode);
  65395. $core.addMethod(
  65396. $core.method({
  65397. selector: "inContext:",
  65398. protocol: "*Compiler-Interpreter",
  65399. //>>excludeStart("ide", pragmas.excludeIdeData);
  65400. args: ["aContext"],
  65401. source: "inContext: aContext\x0a\x09^ aContext receiver instVarNamed: self name",
  65402. referencedClasses: [],
  65403. //>>excludeEnd("ide");
  65404. pragmas: [],
  65405. messageSends: ["instVarNamed:", "receiver", "name"]
  65406. }, function ($methodClass){ return function (aContext){
  65407. var self=this,$self=this;
  65408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65409. return $core.withContext(function($ctx1) {
  65410. //>>excludeEnd("ctx");
  65411. return $recv($recv(aContext)._receiver())._instVarNamed_($self._name());
  65412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65413. }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
  65414. //>>excludeEnd("ctx");
  65415. }; }),
  65416. $globals.SlotVar);
  65417. $core.addMethod(
  65418. $core.method({
  65419. selector: "inContext:put:",
  65420. protocol: "*Compiler-Interpreter",
  65421. //>>excludeStart("ide", pragmas.excludeIdeData);
  65422. args: ["aContext", "anObject"],
  65423. source: "inContext: aContext put: anObject\x0a\x09aContext receiver instVarNamed: self name put: anObject",
  65424. referencedClasses: [],
  65425. //>>excludeEnd("ide");
  65426. pragmas: [],
  65427. messageSends: ["instVarNamed:put:", "receiver", "name"]
  65428. }, function ($methodClass){ return function (aContext,anObject){
  65429. var self=this,$self=this;
  65430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65431. return $core.withContext(function($ctx1) {
  65432. //>>excludeEnd("ctx");
  65433. $recv($recv(aContext)._receiver())._instVarNamed_put_($self._name(),anObject);
  65434. return self;
  65435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65436. }, function($ctx1) {$ctx1.fill(self,"inContext:put:",{aContext:aContext,anObject:anObject})});
  65437. //>>excludeEnd("ctx");
  65438. }; }),
  65439. $globals.SlotVar);
  65440. $core.addMethod(
  65441. $core.method({
  65442. selector: "inContext:",
  65443. protocol: "*Compiler-Interpreter",
  65444. //>>excludeStart("ide", pragmas.excludeIdeData);
  65445. args: ["aContext"],
  65446. source: "inContext: aContext\x0a\x09^ aContext localAt: 'self'",
  65447. referencedClasses: [],
  65448. //>>excludeEnd("ide");
  65449. pragmas: [],
  65450. messageSends: ["localAt:"]
  65451. }, function ($methodClass){ return function (aContext){
  65452. var self=this,$self=this;
  65453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65454. return $core.withContext(function($ctx1) {
  65455. //>>excludeEnd("ctx");
  65456. return $recv(aContext)._localAt_("self");
  65457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65458. }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
  65459. //>>excludeEnd("ctx");
  65460. }; }),
  65461. $globals.SuperVar);
  65462. $core.addMethod(
  65463. $core.method({
  65464. selector: "isJavaScriptSuper",
  65465. protocol: "*Compiler-Interpreter",
  65466. //>>excludeStart("ide", pragmas.excludeIdeData);
  65467. args: [],
  65468. source: "isJavaScriptSuper\x0a\x09^ false",
  65469. referencedClasses: [],
  65470. //>>excludeEnd("ide");
  65471. pragmas: [],
  65472. messageSends: []
  65473. }, function ($methodClass){ return function (){
  65474. var self=this,$self=this;
  65475. return false;
  65476. }; }),
  65477. $globals.SuperVar);
  65478. $core.addMethod(
  65479. $core.method({
  65480. selector: "inContext:put:",
  65481. protocol: "*Compiler-Interpreter",
  65482. //>>excludeStart("ide", pragmas.excludeIdeData);
  65483. args: ["aContext", "anObject"],
  65484. source: "inContext: aContext put: anObject\x0a\x09aContext localAt: self name put: anObject",
  65485. referencedClasses: [],
  65486. //>>excludeEnd("ide");
  65487. pragmas: [],
  65488. messageSends: ["localAt:put:", "name"]
  65489. }, function ($methodClass){ return function (aContext,anObject){
  65490. var self=this,$self=this;
  65491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65492. return $core.withContext(function($ctx1) {
  65493. //>>excludeEnd("ctx");
  65494. $recv(aContext)._localAt_put_($self._name(),anObject);
  65495. return self;
  65496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65497. }, function($ctx1) {$ctx1.fill(self,"inContext:put:",{aContext:aContext,anObject:anObject})});
  65498. //>>excludeEnd("ctx");
  65499. }; }),
  65500. $globals.TempVar);
  65501. });
  65502. define('amber/lang',[
  65503. './deploy',
  65504. './boot', // pre-fetch, dep of ./helpers
  65505. './helpers', // pre-fetch, dep of ./deploy
  65506. './parser',
  65507. // --- packages for the Amber reflection begin here ---
  65508. 'amber/core/Platform-ImportExport',
  65509. 'amber/core/Compiler-Core',
  65510. 'amber/core/Compiler-AST',
  65511. 'amber/core/Compiler-Semantic',
  65512. 'amber/core/Compiler-IR',
  65513. 'amber/core/Compiler-Inlining',
  65514. 'amber/core/Compiler-Interpreter'
  65515. // --- packages for the Amber reflection end here ---
  65516. ], function (amber) {
  65517. return amber;
  65518. });
  65519. define('amber/core/Platform-DOM',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  65520. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  65521. var $pkg = $core.addPackage("Platform-DOM");
  65522. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  65523. $core.addClass("PlatformDom", $globals.Object, "Platform-DOM");
  65524. $core.addMethod(
  65525. $core.method({
  65526. selector: "isDomNode:",
  65527. protocol: "testing",
  65528. //>>excludeStart("ide", pragmas.excludeIdeData);
  65529. args: ["anObject"],
  65530. source: "isDomNode: anObject\x0a<inlineJS: '\x0a\x09return anObject.nodeType > 0 &&\x0a\x09\x09Object.prototype.toString.call(anObject) !== \x22[object Object]\x22\x0a'>",
  65531. referencedClasses: [],
  65532. //>>excludeEnd("ide");
  65533. pragmas: [["inlineJS:", ["\x0a\x09return anObject.nodeType > 0 &&\x0a\x09\x09Object.prototype.toString.call(anObject) !== \x22[object Object]\x22"]]],
  65534. messageSends: []
  65535. }, function ($methodClass){ return function (anObject){
  65536. var self=this,$self=this;
  65537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65538. return $core.withContext(function($ctx1) {
  65539. //>>excludeEnd("ctx");
  65540. return anObject.nodeType > 0 &&
  65541. Object.prototype.toString.call(anObject) !== "[object Object]";
  65542. return self;
  65543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65544. }, function($ctx1) {$ctx1.fill(self,"isDomNode:",{anObject:anObject})});
  65545. //>>excludeEnd("ctx");
  65546. }; }),
  65547. $globals.PlatformDom.a$cls);
  65548. $core.addMethod(
  65549. $core.method({
  65550. selector: "isFeasible",
  65551. protocol: "testing",
  65552. //>>excludeStart("ide", pragmas.excludeIdeData);
  65553. args: [],
  65554. source: "isFeasible\x0a<inlineJS: '\x0a if (typeof document === \x22undefined\x22) return false;\x0a try {\x0a var d = document.createElement(\x22div\x22),\x0a\x09 f = document.createDocumentFragment(),\x0a\x09 t = document.createTextNode(\x22Hello, Amber!\x22);\x0a\x09f.appendChild(t);\x0a\x09d.insertBefore(f, null);\x0a\x09return d.innerHTML === \x22Hello, Amber!\x22;\x0a } catch (e) {\x0a return false;\x0a }\x0a'>",
  65555. referencedClasses: [],
  65556. //>>excludeEnd("ide");
  65557. pragmas: [["inlineJS:", ["\x0a if (typeof document === \x22undefined\x22) return false;\x0a try {\x0a var d = document.createElement(\x22div\x22),\x0a\x09 f = document.createDocumentFragment(),\x0a\x09 t = document.createTextNode(\x22Hello, Amber!\x22);\x0a\x09f.appendChild(t);\x0a\x09d.insertBefore(f, null);\x0a\x09return d.innerHTML === \x22Hello, Amber!\x22;\x0a } catch (e) {\x0a return false;\x0a }"]]],
  65558. messageSends: []
  65559. }, function ($methodClass){ return function (){
  65560. var self=this,$self=this;
  65561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65562. return $core.withContext(function($ctx1) {
  65563. //>>excludeEnd("ctx");
  65564. if (typeof document === "undefined") return false;
  65565. try {
  65566. var d = document.createElement("div"),
  65567. f = document.createDocumentFragment(),
  65568. t = document.createTextNode("Hello, Amber!");
  65569. f.appendChild(t);
  65570. d.insertBefore(f, null);
  65571. return d.innerHTML === "Hello, Amber!";
  65572. } catch (e) {
  65573. return false;
  65574. };
  65575. return self;
  65576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65577. }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
  65578. //>>excludeEnd("ctx");
  65579. }; }),
  65580. $globals.PlatformDom.a$cls);
  65581. $core.addMethod(
  65582. $core.method({
  65583. selector: "newCustomEvent:detail:",
  65584. protocol: "creation",
  65585. //>>excludeStart("ide", pragmas.excludeIdeData);
  65586. args: ["aString", "anObject"],
  65587. source: "newCustomEvent: aString detail: anObject\x0a<inlineJS: 'return new CustomEvent(aString, {detail: anObject})'>",
  65588. referencedClasses: [],
  65589. //>>excludeEnd("ide");
  65590. pragmas: [["inlineJS:", ["return new CustomEvent(aString, {detail: anObject})"]]],
  65591. messageSends: []
  65592. }, function ($methodClass){ return function (aString,anObject){
  65593. var self=this,$self=this;
  65594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65595. return $core.withContext(function($ctx1) {
  65596. //>>excludeEnd("ctx");
  65597. return new CustomEvent(aString, {detail: anObject});
  65598. return self;
  65599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65600. }, function($ctx1) {$ctx1.fill(self,"newCustomEvent:detail:",{aString:aString,anObject:anObject})});
  65601. //>>excludeEnd("ctx");
  65602. }; }),
  65603. $globals.PlatformDom.a$cls);
  65604. $core.addMethod(
  65605. $core.method({
  65606. selector: "toArray:",
  65607. protocol: "converting",
  65608. //>>excludeStart("ide", pragmas.excludeIdeData);
  65609. args: ["aDomList"],
  65610. source: "toArray: aDomList\x0a<inlineJS: 'return Array.prototype.slice.call(aDomList)'>",
  65611. referencedClasses: [],
  65612. //>>excludeEnd("ide");
  65613. pragmas: [["inlineJS:", ["return Array.prototype.slice.call(aDomList)"]]],
  65614. messageSends: []
  65615. }, function ($methodClass){ return function (aDomList){
  65616. var self=this,$self=this;
  65617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65618. return $core.withContext(function($ctx1) {
  65619. //>>excludeEnd("ctx");
  65620. return Array.prototype.slice.call(aDomList);
  65621. return self;
  65622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65623. }, function($ctx1) {$ctx1.fill(self,"toArray:",{aDomList:aDomList})});
  65624. //>>excludeEnd("ctx");
  65625. }; }),
  65626. $globals.PlatformDom.a$cls);
  65627. $core.addMethod(
  65628. $core.method({
  65629. selector: "asDomNode",
  65630. protocol: "*Platform-DOM",
  65631. //>>excludeStart("ide", pragmas.excludeIdeData);
  65632. args: [],
  65633. source: "asDomNode\x0a\x09| fragment |\x0a\x09fragment := document createDocumentFragment.\x0a\x09self do: [ :each | fragment appendChild: each asDomNode ].\x0a\x09^ fragment",
  65634. referencedClasses: [],
  65635. //>>excludeEnd("ide");
  65636. pragmas: [],
  65637. messageSends: ["createDocumentFragment", "do:", "appendChild:", "asDomNode"]
  65638. }, function ($methodClass){ return function (){
  65639. var self=this,$self=this;
  65640. var fragment;
  65641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65642. return $core.withContext(function($ctx1) {
  65643. //>>excludeEnd("ctx");
  65644. fragment=$recv(document)._createDocumentFragment();
  65645. $self._do_((function(each){
  65646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65647. return $core.withContext(function($ctx2) {
  65648. //>>excludeEnd("ctx");
  65649. return $recv(fragment)._appendChild_($recv(each)._asDomNode());
  65650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65651. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  65652. //>>excludeEnd("ctx");
  65653. }));
  65654. return fragment;
  65655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65656. }, function($ctx1) {$ctx1.fill(self,"asDomNode",{fragment:fragment})});
  65657. //>>excludeEnd("ctx");
  65658. }; }),
  65659. $globals.Collection);
  65660. $core.addMethod(
  65661. $core.method({
  65662. selector: "asDomNode",
  65663. protocol: "*Platform-DOM",
  65664. //>>excludeStart("ide", pragmas.excludeIdeData);
  65665. args: [],
  65666. source: "asDomNode\x0a\x09(PlatformDom isDomNode: jsObject)\x0a\x09\x09ifTrue: [ ^ jsObject ]\x0a\x09\x09ifFalse: [ ^ super asDomNode ]",
  65667. referencedClasses: ["PlatformDom"],
  65668. //>>excludeEnd("ide");
  65669. pragmas: [],
  65670. messageSends: ["ifTrue:ifFalse:", "isDomNode:", "asDomNode"]
  65671. }, function ($methodClass){ return function (){
  65672. var self=this,$self=this;
  65673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65674. return $core.withContext(function($ctx1) {
  65675. //>>excludeEnd("ctx");
  65676. if($core.assert($recv($globals.PlatformDom)._isDomNode_($self.jsObject))){
  65677. return $self.jsObject;
  65678. } else {
  65679. return [(
  65680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65681. $ctx1.supercall = true,
  65682. //>>excludeEnd("ctx");
  65683. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._asDomNode.call($self))
  65684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65685. ,$ctx1.supercall = false
  65686. //>>excludeEnd("ctx");
  65687. ][0];
  65688. }
  65689. return self;
  65690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65691. }, function($ctx1) {$ctx1.fill(self,"asDomNode",{})});
  65692. //>>excludeEnd("ctx");
  65693. }; }),
  65694. $globals.JSObjectProxy);
  65695. $core.addMethod(
  65696. $core.method({
  65697. selector: "asDomNode",
  65698. protocol: "*Platform-DOM",
  65699. //>>excludeStart("ide", pragmas.excludeIdeData);
  65700. args: [],
  65701. source: "asDomNode\x0a\x09^ document createTextNode: self asString",
  65702. referencedClasses: [],
  65703. //>>excludeEnd("ide");
  65704. pragmas: [],
  65705. messageSends: ["createTextNode:", "asString"]
  65706. }, function ($methodClass){ return function (){
  65707. var self=this,$self=this;
  65708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65709. return $core.withContext(function($ctx1) {
  65710. //>>excludeEnd("ctx");
  65711. return $recv(document)._createTextNode_($self._asString());
  65712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65713. }, function($ctx1) {$ctx1.fill(self,"asDomNode",{})});
  65714. //>>excludeEnd("ctx");
  65715. }; }),
  65716. $globals.String);
  65717. $core.addMethod(
  65718. $core.method({
  65719. selector: "htmlTextContent",
  65720. protocol: "*Platform-DOM",
  65721. //>>excludeStart("ide", pragmas.excludeIdeData);
  65722. args: [],
  65723. source: "htmlTextContent\x0a<inlineJS: 'var d=document.createElement(\x22div\x22);d.innerHTML=self;return d.textContent||d.innerText;'>",
  65724. referencedClasses: [],
  65725. //>>excludeEnd("ide");
  65726. pragmas: [["inlineJS:", ["var d=document.createElement(\x22div\x22);d.innerHTML=self;return d.textContent||d.innerText;"]]],
  65727. messageSends: []
  65728. }, function ($methodClass){ return function (){
  65729. var self=this,$self=this;
  65730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65731. return $core.withContext(function($ctx1) {
  65732. //>>excludeEnd("ctx");
  65733. var d=document.createElement("div");d.innerHTML=self;return d.textContent||d.innerText;;
  65734. return self;
  65735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65736. }, function($ctx1) {$ctx1.fill(self,"htmlTextContent",{})});
  65737. //>>excludeEnd("ctx");
  65738. }; }),
  65739. $globals.String);
  65740. });
  65741. define('amber/core/SUnit',["amber/boot", "require", "amber/core/Kernel-Classes", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  65742. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  65743. var $pkg = $core.addPackage("SUnit");
  65744. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  65745. $core.addClass("ResultAnnouncement", $globals.Object, "SUnit");
  65746. $core.setSlots($globals.ResultAnnouncement, ["result"]);
  65747. //>>excludeStart("ide", pragmas.excludeIdeData);
  65748. $globals.ResultAnnouncement.comment="I get signaled when a `TestCase` has been run.\x0a\x0aMy instances hold the result (instance of `TestResult`) of the test run.";
  65749. //>>excludeEnd("ide");
  65750. $core.addMethod(
  65751. $core.method({
  65752. selector: "result",
  65753. protocol: "accessing",
  65754. //>>excludeStart("ide", pragmas.excludeIdeData);
  65755. args: [],
  65756. source: "result\x0a\x09^ result",
  65757. referencedClasses: [],
  65758. //>>excludeEnd("ide");
  65759. pragmas: [],
  65760. messageSends: []
  65761. }, function ($methodClass){ return function (){
  65762. var self=this,$self=this;
  65763. return $self.result;
  65764. }; }),
  65765. $globals.ResultAnnouncement);
  65766. $core.addMethod(
  65767. $core.method({
  65768. selector: "result:",
  65769. protocol: "accessing",
  65770. //>>excludeStart("ide", pragmas.excludeIdeData);
  65771. args: ["aTestResult"],
  65772. source: "result: aTestResult\x0a\x09result := aTestResult",
  65773. referencedClasses: [],
  65774. //>>excludeEnd("ide");
  65775. pragmas: [],
  65776. messageSends: []
  65777. }, function ($methodClass){ return function (aTestResult){
  65778. var self=this,$self=this;
  65779. $self.result=aTestResult;
  65780. return self;
  65781. }; }),
  65782. $globals.ResultAnnouncement);
  65783. $core.addClass("Teachable", $globals.Object, "SUnit");
  65784. $core.setSlots($globals.Teachable, ["learnings"]);
  65785. //>>excludeStart("ide", pragmas.excludeIdeData);
  65786. $globals.Teachable.comment="An object you can teach how to behave. Have a look at the \x0aclass side for an example.\x0a\x0aFor more infos have a look at: http://lists.squeakfoundation.org/pipermail/squeak-dev/2002-April/038170.html";
  65787. //>>excludeEnd("ide");
  65788. $core.addMethod(
  65789. $core.method({
  65790. selector: "acceptSend:",
  65791. protocol: "teaching",
  65792. //>>excludeStart("ide", pragmas.excludeIdeData);
  65793. args: ["aSymbol"],
  65794. source: "acceptSend: aSymbol\x0a\x0a\x09self whenSend: aSymbol return: self",
  65795. referencedClasses: [],
  65796. //>>excludeEnd("ide");
  65797. pragmas: [],
  65798. messageSends: ["whenSend:return:"]
  65799. }, function ($methodClass){ return function (aSymbol){
  65800. var self=this,$self=this;
  65801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65802. return $core.withContext(function($ctx1) {
  65803. //>>excludeEnd("ctx");
  65804. $self._whenSend_return_(aSymbol,self);
  65805. return self;
  65806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65807. }, function($ctx1) {$ctx1.fill(self,"acceptSend:",{aSymbol:aSymbol})});
  65808. //>>excludeEnd("ctx");
  65809. }; }),
  65810. $globals.Teachable);
  65811. $core.addMethod(
  65812. $core.method({
  65813. selector: "doesNotUnderstand:",
  65814. protocol: "private",
  65815. //>>excludeStart("ide", pragmas.excludeIdeData);
  65816. args: ["aMessage"],
  65817. source: "doesNotUnderstand: aMessage\x0a\x0a\x09| learning |\x0a\x09learning := self learnings \x0a\x09\x09at: aMessage selector \x0a\x09\x09ifAbsent:[ ^super doesNotUnderstand: aMessage ].\x0a\x09^ learning class == Association\x0a\x09\x09ifTrue: [learning value]\x0a\x09\x09ifFalse: [learning valueWithPossibleArguments: aMessage arguments]",
  65818. referencedClasses: ["Association"],
  65819. //>>excludeEnd("ide");
  65820. pragmas: [],
  65821. messageSends: ["at:ifAbsent:", "learnings", "selector", "doesNotUnderstand:", "ifTrue:ifFalse:", "==", "class", "value", "valueWithPossibleArguments:", "arguments"]
  65822. }, function ($methodClass){ return function (aMessage){
  65823. var self=this,$self=this;
  65824. var learning;
  65825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65826. return $core.withContext(function($ctx1) {
  65827. //>>excludeEnd("ctx");
  65828. var $early={};
  65829. try {
  65830. learning=$recv($self._learnings())._at_ifAbsent_($recv(aMessage)._selector(),(function(){
  65831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65832. return $core.withContext(function($ctx2) {
  65833. //>>excludeEnd("ctx");
  65834. throw $early=[[(
  65835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65836. $ctx2.supercall = true,
  65837. //>>excludeEnd("ctx");
  65838. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._doesNotUnderstand_.call($self,aMessage))
  65839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65840. ,$ctx2.supercall = false
  65841. //>>excludeEnd("ctx");
  65842. ][0]];
  65843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65844. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65845. //>>excludeEnd("ctx");
  65846. }));
  65847. if($core.assert($recv($recv(learning)._class()).__eq_eq($globals.Association))){
  65848. return $recv(learning)._value();
  65849. } else {
  65850. return $recv(learning)._valueWithPossibleArguments_($recv(aMessage)._arguments());
  65851. }
  65852. }
  65853. catch(e) {if(e===$early)return e[0]; throw e}
  65854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65855. }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage,learning:learning})});
  65856. //>>excludeEnd("ctx");
  65857. }; }),
  65858. $globals.Teachable);
  65859. $core.addMethod(
  65860. $core.method({
  65861. selector: "learnings",
  65862. protocol: "private",
  65863. //>>excludeStart("ide", pragmas.excludeIdeData);
  65864. args: [],
  65865. source: "learnings\x0a\x0a\x09learnings isNil ifTrue: [learnings := Dictionary new].\x0a\x09^learnings",
  65866. referencedClasses: ["Dictionary"],
  65867. //>>excludeEnd("ide");
  65868. pragmas: [],
  65869. messageSends: ["ifTrue:", "isNil", "new"]
  65870. }, function ($methodClass){ return function (){
  65871. var self=this,$self=this;
  65872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65873. return $core.withContext(function($ctx1) {
  65874. //>>excludeEnd("ctx");
  65875. if($core.assert($recv($self.learnings)._isNil())){
  65876. $self.learnings=$recv($globals.Dictionary)._new();
  65877. $self.learnings;
  65878. }
  65879. return $self.learnings;
  65880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65881. }, function($ctx1) {$ctx1.fill(self,"learnings",{})});
  65882. //>>excludeEnd("ctx");
  65883. }; }),
  65884. $globals.Teachable);
  65885. $core.addMethod(
  65886. $core.method({
  65887. selector: "whenSend:evaluate:",
  65888. protocol: "teaching",
  65889. //>>excludeStart("ide", pragmas.excludeIdeData);
  65890. args: ["aSymbol", "aBlock"],
  65891. source: "whenSend: aSymbol evaluate: aBlock\x0a\x0a\x09self learnings at: aSymbol put: aBlock",
  65892. referencedClasses: [],
  65893. //>>excludeEnd("ide");
  65894. pragmas: [],
  65895. messageSends: ["at:put:", "learnings"]
  65896. }, function ($methodClass){ return function (aSymbol,aBlock){
  65897. var self=this,$self=this;
  65898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65899. return $core.withContext(function($ctx1) {
  65900. //>>excludeEnd("ctx");
  65901. $recv($self._learnings())._at_put_(aSymbol,aBlock);
  65902. return self;
  65903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65904. }, function($ctx1) {$ctx1.fill(self,"whenSend:evaluate:",{aSymbol:aSymbol,aBlock:aBlock})});
  65905. //>>excludeEnd("ctx");
  65906. }; }),
  65907. $globals.Teachable);
  65908. $core.addMethod(
  65909. $core.method({
  65910. selector: "whenSend:return:",
  65911. protocol: "teaching",
  65912. //>>excludeStart("ide", pragmas.excludeIdeData);
  65913. args: ["aSymbol", "anObject"],
  65914. source: "whenSend: aSymbol return: anObject\x0a\x0a\x09self learnings at: aSymbol put: (#return -> anObject)",
  65915. referencedClasses: [],
  65916. //>>excludeEnd("ide");
  65917. pragmas: [],
  65918. messageSends: ["at:put:", "learnings", "->"]
  65919. }, function ($methodClass){ return function (aSymbol,anObject){
  65920. var self=this,$self=this;
  65921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65922. return $core.withContext(function($ctx1) {
  65923. //>>excludeEnd("ctx");
  65924. $recv($self._learnings())._at_put_(aSymbol,"return".__minus_gt(anObject));
  65925. return self;
  65926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65927. }, function($ctx1) {$ctx1.fill(self,"whenSend:return:",{aSymbol:aSymbol,anObject:anObject})});
  65928. //>>excludeEnd("ctx");
  65929. }; }),
  65930. $globals.Teachable);
  65931. $core.addMethod(
  65932. $core.method({
  65933. selector: "example",
  65934. protocol: "examples",
  65935. //>>excludeStart("ide", pragmas.excludeIdeData);
  65936. args: [],
  65937. source: "example\x0a\x09| teachable |\x0a\x09teachable := self new.\x0a\x09teachable \x0a\x09\x09whenSend: #help return: 'ok';\x0a\x09\x09whenSend: #doit evaluate: [1 inspect];\x0a\x09\x09acceptSend: #noDebugger;\x0a\x09\x09whenSend: #negate: evaluate: [:num | num negated].\x0a\x09teachable help.\x0a\x09teachable doit.\x0a\x09teachable noDebugger.\x0a\x09teachable negate: 120",
  65938. referencedClasses: [],
  65939. //>>excludeEnd("ide");
  65940. pragmas: [],
  65941. messageSends: ["new", "whenSend:return:", "whenSend:evaluate:", "inspect", "acceptSend:", "negated", "help", "doit", "noDebugger", "negate:"]
  65942. }, function ($methodClass){ return function (){
  65943. var self=this,$self=this;
  65944. var teachable;
  65945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65946. return $core.withContext(function($ctx1) {
  65947. //>>excludeEnd("ctx");
  65948. var $1;
  65949. teachable=$self._new();
  65950. $1=teachable;
  65951. $recv($1)._whenSend_return_("help","ok");
  65952. [$recv($1)._whenSend_evaluate_("doit",(function(){
  65953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65954. return $core.withContext(function($ctx2) {
  65955. //>>excludeEnd("ctx");
  65956. return (1)._inspect();
  65957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65958. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65959. //>>excludeEnd("ctx");
  65960. }))
  65961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65962. ,$ctx1.sendIdx["whenSend:evaluate:"]=1
  65963. //>>excludeEnd("ctx");
  65964. ][0];
  65965. $recv($1)._acceptSend_("noDebugger");
  65966. $recv($1)._whenSend_evaluate_("negate:",(function(num){
  65967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65968. return $core.withContext(function($ctx2) {
  65969. //>>excludeEnd("ctx");
  65970. return $recv(num)._negated();
  65971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65972. }, function($ctx2) {$ctx2.fillBlock({num:num},$ctx1,2)});
  65973. //>>excludeEnd("ctx");
  65974. }));
  65975. $recv(teachable)._help();
  65976. $recv(teachable)._doit();
  65977. $recv(teachable)._noDebugger();
  65978. $recv(teachable)._negate_((120));
  65979. return self;
  65980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65981. }, function($ctx1) {$ctx1.fill(self,"example",{teachable:teachable})});
  65982. //>>excludeEnd("ctx");
  65983. }; }),
  65984. $globals.Teachable.a$cls);
  65985. $core.addClass("TestCase", $globals.Object, "SUnit");
  65986. $core.setSlots($globals.TestCase, ["testSelector", "asyncTimeout", "context"]);
  65987. //>>excludeStart("ide", pragmas.excludeIdeData);
  65988. $globals.TestCase.comment="I am an implementation of the command pattern to run a test.\x0a\x0a## API\x0a\x0aMy instances are created with the class method `#selector:`,\x0apassing the symbol that names the method to be executed when the test case runs.\x0a\x0aWhen you discover a new fixture, subclass `TestCase` and create a `#test...` method for the first test.\x0aAs that method develops and more `#test...` methods are added, you will find yourself refactoring temps\x0ainto instance variables for the objects in the fixture and overriding `#setUp` to initialize these variables.\x0aAs required, override `#tearDown` to nil references, release objects and deallocate.";
  65989. //>>excludeEnd("ide");
  65990. $core.addMethod(
  65991. $core.method({
  65992. selector: "assert:",
  65993. protocol: "testing",
  65994. //>>excludeStart("ide", pragmas.excludeIdeData);
  65995. args: ["aBoolean"],
  65996. source: "assert: aBoolean\x0a\x09self assert: aBoolean description: 'Assertion failed'",
  65997. referencedClasses: [],
  65998. //>>excludeEnd("ide");
  65999. pragmas: [],
  66000. messageSends: ["assert:description:"]
  66001. }, function ($methodClass){ return function (aBoolean){
  66002. var self=this,$self=this;
  66003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66004. return $core.withContext(function($ctx1) {
  66005. //>>excludeEnd("ctx");
  66006. $self._assert_description_(aBoolean,"Assertion failed");
  66007. return self;
  66008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66009. }, function($ctx1) {$ctx1.fill(self,"assert:",{aBoolean:aBoolean})});
  66010. //>>excludeEnd("ctx");
  66011. }; }),
  66012. $globals.TestCase);
  66013. $core.addMethod(
  66014. $core.method({
  66015. selector: "assert:description:",
  66016. protocol: "testing",
  66017. //>>excludeStart("ide", pragmas.excludeIdeData);
  66018. args: ["aBoolean", "aString"],
  66019. source: "assert: aBoolean description: aString\x0a\x09aBoolean ifFalse: [ self signalFailure: aString ]",
  66020. referencedClasses: [],
  66021. //>>excludeEnd("ide");
  66022. pragmas: [],
  66023. messageSends: ["ifFalse:", "signalFailure:"]
  66024. }, function ($methodClass){ return function (aBoolean,aString){
  66025. var self=this,$self=this;
  66026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66027. return $core.withContext(function($ctx1) {
  66028. //>>excludeEnd("ctx");
  66029. if(!$core.assert(aBoolean)){
  66030. $self._signalFailure_(aString);
  66031. }
  66032. return self;
  66033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66034. }, function($ctx1) {$ctx1.fill(self,"assert:description:",{aBoolean:aBoolean,aString:aString})});
  66035. //>>excludeEnd("ctx");
  66036. }; }),
  66037. $globals.TestCase);
  66038. $core.addMethod(
  66039. $core.method({
  66040. selector: "assert:equals:",
  66041. protocol: "testing",
  66042. //>>excludeStart("ide", pragmas.excludeIdeData);
  66043. args: ["actual", "expected"],
  66044. source: "assert: actual equals: expected\x0a\x09^ self assert: (actual = expected) description: 'Expected: ', expected printString, ' but was: ', actual printString",
  66045. referencedClasses: [],
  66046. //>>excludeEnd("ide");
  66047. pragmas: [],
  66048. messageSends: ["assert:description:", "=", ",", "printString"]
  66049. }, function ($methodClass){ return function (actual,expected){
  66050. var self=this,$self=this;
  66051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66052. return $core.withContext(function($ctx1) {
  66053. //>>excludeEnd("ctx");
  66054. return $self._assert_description_($recv(actual).__eq(expected),[$recv([$recv("Expected: ".__comma([$recv(expected)._printString()
  66055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66056. ,$ctx1.sendIdx["printString"]=1
  66057. //>>excludeEnd("ctx");
  66058. ][0])).__comma(" but was: ")
  66059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66060. ,$ctx1.sendIdx[","]=2
  66061. //>>excludeEnd("ctx");
  66062. ][0]).__comma($recv(actual)._printString())
  66063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66064. ,$ctx1.sendIdx[","]=1
  66065. //>>excludeEnd("ctx");
  66066. ][0]);
  66067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66068. }, function($ctx1) {$ctx1.fill(self,"assert:equals:",{actual:actual,expected:expected})});
  66069. //>>excludeEnd("ctx");
  66070. }; }),
  66071. $globals.TestCase);
  66072. $core.addMethod(
  66073. $core.method({
  66074. selector: "async:",
  66075. protocol: "async",
  66076. //>>excludeStart("ide", pragmas.excludeIdeData);
  66077. args: ["aBlock"],
  66078. source: "async: aBlock\x0a\x09| c |\x0a\x09self errorIfNotAsync: '#async'.\x0a\x09c := context.\x0a\x09^ [ self isAsync ifTrue: [ c execute: aBlock ] ]",
  66079. referencedClasses: [],
  66080. //>>excludeEnd("ide");
  66081. pragmas: [],
  66082. messageSends: ["errorIfNotAsync:", "ifTrue:", "isAsync", "execute:"]
  66083. }, function ($methodClass){ return function (aBlock){
  66084. var self=this,$self=this;
  66085. var c;
  66086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66087. return $core.withContext(function($ctx1) {
  66088. //>>excludeEnd("ctx");
  66089. $self._errorIfNotAsync_("#async");
  66090. c=$self.context;
  66091. return (function(){
  66092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66093. return $core.withContext(function($ctx2) {
  66094. //>>excludeEnd("ctx");
  66095. if($core.assert($self._isAsync())){
  66096. return $recv(c)._execute_(aBlock);
  66097. }
  66098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66099. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66100. //>>excludeEnd("ctx");
  66101. });
  66102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66103. }, function($ctx1) {$ctx1.fill(self,"async:",{aBlock:aBlock,c:c})});
  66104. //>>excludeEnd("ctx");
  66105. }; }),
  66106. $globals.TestCase);
  66107. $core.addMethod(
  66108. $core.method({
  66109. selector: "context:",
  66110. protocol: "accessing",
  66111. //>>excludeStart("ide", pragmas.excludeIdeData);
  66112. args: ["aRunningTestContext"],
  66113. source: "context: aRunningTestContext\x0a\x09context := aRunningTestContext",
  66114. referencedClasses: [],
  66115. //>>excludeEnd("ide");
  66116. pragmas: [],
  66117. messageSends: []
  66118. }, function ($methodClass){ return function (aRunningTestContext){
  66119. var self=this,$self=this;
  66120. $self.context=aRunningTestContext;
  66121. return self;
  66122. }; }),
  66123. $globals.TestCase);
  66124. $core.addMethod(
  66125. $core.method({
  66126. selector: "debugCase",
  66127. protocol: "running",
  66128. //>>excludeStart("ide", pragmas.excludeIdeData);
  66129. args: [],
  66130. source: "debugCase\x0a\x09self deprecatedAPI: 'Use #runCase instead.'.\x0a\x09^ self runCase",
  66131. referencedClasses: [],
  66132. //>>excludeEnd("ide");
  66133. pragmas: [],
  66134. messageSends: ["deprecatedAPI:", "runCase"]
  66135. }, function ($methodClass){ return function (){
  66136. var self=this,$self=this;
  66137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66138. return $core.withContext(function($ctx1) {
  66139. //>>excludeEnd("ctx");
  66140. $self._deprecatedAPI_("Use #runCase instead.");
  66141. return $self._runCase();
  66142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66143. }, function($ctx1) {$ctx1.fill(self,"debugCase",{})});
  66144. //>>excludeEnd("ctx");
  66145. }; }),
  66146. $globals.TestCase);
  66147. $core.addMethod(
  66148. $core.method({
  66149. selector: "deny:",
  66150. protocol: "testing",
  66151. //>>excludeStart("ide", pragmas.excludeIdeData);
  66152. args: ["aBoolean"],
  66153. source: "deny: aBoolean\x0a\x09self assert: aBoolean not",
  66154. referencedClasses: [],
  66155. //>>excludeEnd("ide");
  66156. pragmas: [],
  66157. messageSends: ["assert:", "not"]
  66158. }, function ($methodClass){ return function (aBoolean){
  66159. var self=this,$self=this;
  66160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66161. return $core.withContext(function($ctx1) {
  66162. //>>excludeEnd("ctx");
  66163. $self._assert_($recv(aBoolean)._not());
  66164. return self;
  66165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66166. }, function($ctx1) {$ctx1.fill(self,"deny:",{aBoolean:aBoolean})});
  66167. //>>excludeEnd("ctx");
  66168. }; }),
  66169. $globals.TestCase);
  66170. $core.addMethod(
  66171. $core.method({
  66172. selector: "errorIfNotAsync:",
  66173. protocol: "error handling",
  66174. //>>excludeStart("ide", pragmas.excludeIdeData);
  66175. args: ["aString"],
  66176. source: "errorIfNotAsync: aString\x0a\x09self isAsync ifFalse: [\x0a\x09\x09self error: aString, ' used without prior #timeout:' ]",
  66177. referencedClasses: [],
  66178. //>>excludeEnd("ide");
  66179. pragmas: [],
  66180. messageSends: ["ifFalse:", "isAsync", "error:", ","]
  66181. }, function ($methodClass){ return function (aString){
  66182. var self=this,$self=this;
  66183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66184. return $core.withContext(function($ctx1) {
  66185. //>>excludeEnd("ctx");
  66186. if(!$core.assert($self._isAsync())){
  66187. $self._error_($recv(aString).__comma(" used without prior #timeout:"));
  66188. }
  66189. return self;
  66190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66191. }, function($ctx1) {$ctx1.fill(self,"errorIfNotAsync:",{aString:aString})});
  66192. //>>excludeEnd("ctx");
  66193. }; }),
  66194. $globals.TestCase);
  66195. $core.addMethod(
  66196. $core.method({
  66197. selector: "finished",
  66198. protocol: "async",
  66199. //>>excludeStart("ide", pragmas.excludeIdeData);
  66200. args: [],
  66201. source: "finished\x0a\x09self errorIfNotAsync: '#finished'.\x0a\x09asyncTimeout ifNotNil: [ asyncTimeout clearTimeout ].\x0a\x09asyncTimeout := nil",
  66202. referencedClasses: [],
  66203. //>>excludeEnd("ide");
  66204. pragmas: [],
  66205. messageSends: ["errorIfNotAsync:", "ifNotNil:", "clearTimeout"]
  66206. }, function ($methodClass){ return function (){
  66207. var self=this,$self=this;
  66208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66209. return $core.withContext(function($ctx1) {
  66210. //>>excludeEnd("ctx");
  66211. var $1;
  66212. $self._errorIfNotAsync_("#finished");
  66213. $1=$self.asyncTimeout;
  66214. if($1 == null || $1.a$nil){
  66215. $1;
  66216. } else {
  66217. $recv($self.asyncTimeout)._clearTimeout();
  66218. }
  66219. $self.asyncTimeout=nil;
  66220. return self;
  66221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66222. }, function($ctx1) {$ctx1.fill(self,"finished",{})});
  66223. //>>excludeEnd("ctx");
  66224. }; }),
  66225. $globals.TestCase);
  66226. $core.addMethod(
  66227. $core.method({
  66228. selector: "isAsync",
  66229. protocol: "testing",
  66230. //>>excludeStart("ide", pragmas.excludeIdeData);
  66231. args: [],
  66232. source: "isAsync\x0a\x09^ asyncTimeout notNil",
  66233. referencedClasses: [],
  66234. //>>excludeEnd("ide");
  66235. pragmas: [],
  66236. messageSends: ["notNil"]
  66237. }, function ($methodClass){ return function (){
  66238. var self=this,$self=this;
  66239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66240. return $core.withContext(function($ctx1) {
  66241. //>>excludeEnd("ctx");
  66242. return $recv($self.asyncTimeout)._notNil();
  66243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66244. }, function($ctx1) {$ctx1.fill(self,"isAsync",{})});
  66245. //>>excludeEnd("ctx");
  66246. }; }),
  66247. $globals.TestCase);
  66248. $core.addMethod(
  66249. $core.method({
  66250. selector: "performTest",
  66251. protocol: "running",
  66252. //>>excludeStart("ide", pragmas.excludeIdeData);
  66253. args: [],
  66254. source: "performTest\x0a\x09asyncTimeout := nil.\x0a\x09^ self perform: self selector",
  66255. referencedClasses: [],
  66256. //>>excludeEnd("ide");
  66257. pragmas: [],
  66258. messageSends: ["perform:", "selector"]
  66259. }, function ($methodClass){ return function (){
  66260. var self=this,$self=this;
  66261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66262. return $core.withContext(function($ctx1) {
  66263. //>>excludeEnd("ctx");
  66264. $self.asyncTimeout=nil;
  66265. return $self._perform_($self._selector());
  66266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66267. }, function($ctx1) {$ctx1.fill(self,"performTest",{})});
  66268. //>>excludeEnd("ctx");
  66269. }; }),
  66270. $globals.TestCase);
  66271. $core.addMethod(
  66272. $core.method({
  66273. selector: "runCase",
  66274. protocol: "running",
  66275. //>>excludeStart("ide", pragmas.excludeIdeData);
  66276. args: [],
  66277. source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(TestContext testCase: self) start",
  66278. referencedClasses: ["TestContext"],
  66279. //>>excludeEnd("ide");
  66280. pragmas: [],
  66281. messageSends: ["start", "testCase:"]
  66282. }, function ($methodClass){ return function (){
  66283. var self=this,$self=this;
  66284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66285. return $core.withContext(function($ctx1) {
  66286. //>>excludeEnd("ctx");
  66287. $recv($recv($globals.TestContext)._testCase_(self))._start();
  66288. return self;
  66289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66290. }, function($ctx1) {$ctx1.fill(self,"runCase",{})});
  66291. //>>excludeEnd("ctx");
  66292. }; }),
  66293. $globals.TestCase);
  66294. $core.addMethod(
  66295. $core.method({
  66296. selector: "selector",
  66297. protocol: "accessing",
  66298. //>>excludeStart("ide", pragmas.excludeIdeData);
  66299. args: [],
  66300. source: "selector\x0a\x09^ testSelector",
  66301. referencedClasses: [],
  66302. //>>excludeEnd("ide");
  66303. pragmas: [],
  66304. messageSends: []
  66305. }, function ($methodClass){ return function (){
  66306. var self=this,$self=this;
  66307. return $self.testSelector;
  66308. }; }),
  66309. $globals.TestCase);
  66310. $core.addMethod(
  66311. $core.method({
  66312. selector: "setTestSelector:",
  66313. protocol: "accessing",
  66314. //>>excludeStart("ide", pragmas.excludeIdeData);
  66315. args: ["aSelector"],
  66316. source: "setTestSelector: aSelector\x0a\x09testSelector := aSelector",
  66317. referencedClasses: [],
  66318. //>>excludeEnd("ide");
  66319. pragmas: [],
  66320. messageSends: []
  66321. }, function ($methodClass){ return function (aSelector){
  66322. var self=this,$self=this;
  66323. $self.testSelector=aSelector;
  66324. return self;
  66325. }; }),
  66326. $globals.TestCase);
  66327. $core.addMethod(
  66328. $core.method({
  66329. selector: "setUp",
  66330. protocol: "running",
  66331. //>>excludeStart("ide", pragmas.excludeIdeData);
  66332. args: [],
  66333. source: "setUp",
  66334. referencedClasses: [],
  66335. //>>excludeEnd("ide");
  66336. pragmas: [],
  66337. messageSends: []
  66338. }, function ($methodClass){ return function (){
  66339. var self=this,$self=this;
  66340. return self;
  66341. }; }),
  66342. $globals.TestCase);
  66343. $core.addMethod(
  66344. $core.method({
  66345. selector: "should:",
  66346. protocol: "testing",
  66347. //>>excludeStart("ide", pragmas.excludeIdeData);
  66348. args: ["aBlock"],
  66349. source: "should: aBlock\x0a\x09self assert: aBlock value",
  66350. referencedClasses: [],
  66351. //>>excludeEnd("ide");
  66352. pragmas: [],
  66353. messageSends: ["assert:", "value"]
  66354. }, function ($methodClass){ return function (aBlock){
  66355. var self=this,$self=this;
  66356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66357. return $core.withContext(function($ctx1) {
  66358. //>>excludeEnd("ctx");
  66359. $self._assert_($recv(aBlock)._value());
  66360. return self;
  66361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66362. }, function($ctx1) {$ctx1.fill(self,"should:",{aBlock:aBlock})});
  66363. //>>excludeEnd("ctx");
  66364. }; }),
  66365. $globals.TestCase);
  66366. $core.addMethod(
  66367. $core.method({
  66368. selector: "should:raise:",
  66369. protocol: "testing",
  66370. //>>excludeStart("ide", pragmas.excludeIdeData);
  66371. args: ["aBlock", "anExceptionClass"],
  66372. source: "should: aBlock raise: anExceptionClass\x0a\x09self assert: ([ aBlock value. false ]\x0a\x09\x09on: anExceptionClass\x0a\x09\x09do: [ :ex | true ])",
  66373. referencedClasses: [],
  66374. //>>excludeEnd("ide");
  66375. pragmas: [],
  66376. messageSends: ["assert:", "on:do:", "value"]
  66377. }, function ($methodClass){ return function (aBlock,anExceptionClass){
  66378. var self=this,$self=this;
  66379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66380. return $core.withContext(function($ctx1) {
  66381. //>>excludeEnd("ctx");
  66382. $self._assert_($recv((function(){
  66383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66384. return $core.withContext(function($ctx2) {
  66385. //>>excludeEnd("ctx");
  66386. $recv(aBlock)._value();
  66387. return false;
  66388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66389. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66390. //>>excludeEnd("ctx");
  66391. }))._on_do_(anExceptionClass,(function(ex){
  66392. return true;
  66393. })));
  66394. return self;
  66395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66396. }, function($ctx1) {$ctx1.fill(self,"should:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass})});
  66397. //>>excludeEnd("ctx");
  66398. }; }),
  66399. $globals.TestCase);
  66400. $core.addMethod(
  66401. $core.method({
  66402. selector: "shouldnt:raise:",
  66403. protocol: "testing",
  66404. //>>excludeStart("ide", pragmas.excludeIdeData);
  66405. args: ["aBlock", "anExceptionClass"],
  66406. source: "shouldnt: aBlock raise: anExceptionClass\x0a\x09self assert: ([ aBlock value. true ]\x0a\x09\x09on: anExceptionClass\x0a\x09\x09do: [ :ex | false ])",
  66407. referencedClasses: [],
  66408. //>>excludeEnd("ide");
  66409. pragmas: [],
  66410. messageSends: ["assert:", "on:do:", "value"]
  66411. }, function ($methodClass){ return function (aBlock,anExceptionClass){
  66412. var self=this,$self=this;
  66413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66414. return $core.withContext(function($ctx1) {
  66415. //>>excludeEnd("ctx");
  66416. $self._assert_($recv((function(){
  66417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66418. return $core.withContext(function($ctx2) {
  66419. //>>excludeEnd("ctx");
  66420. $recv(aBlock)._value();
  66421. return true;
  66422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66423. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66424. //>>excludeEnd("ctx");
  66425. }))._on_do_(anExceptionClass,(function(ex){
  66426. return false;
  66427. })));
  66428. return self;
  66429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66430. }, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass})});
  66431. //>>excludeEnd("ctx");
  66432. }; }),
  66433. $globals.TestCase);
  66434. $core.addMethod(
  66435. $core.method({
  66436. selector: "signalFailure:",
  66437. protocol: "private",
  66438. //>>excludeStart("ide", pragmas.excludeIdeData);
  66439. args: ["aString"],
  66440. source: "signalFailure: aString\x0a\x09TestFailure new\x0a\x09\x09messageText: aString;\x0a\x09\x09signal",
  66441. referencedClasses: ["TestFailure"],
  66442. //>>excludeEnd("ide");
  66443. pragmas: [],
  66444. messageSends: ["messageText:", "new", "signal"]
  66445. }, function ($methodClass){ return function (aString){
  66446. var self=this,$self=this;
  66447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66448. return $core.withContext(function($ctx1) {
  66449. //>>excludeEnd("ctx");
  66450. var $1;
  66451. $1=$recv($globals.TestFailure)._new();
  66452. $recv($1)._messageText_(aString);
  66453. $recv($1)._signal();
  66454. return self;
  66455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66456. }, function($ctx1) {$ctx1.fill(self,"signalFailure:",{aString:aString})});
  66457. //>>excludeEnd("ctx");
  66458. }; }),
  66459. $globals.TestCase);
  66460. $core.addMethod(
  66461. $core.method({
  66462. selector: "tearDown",
  66463. protocol: "running",
  66464. //>>excludeStart("ide", pragmas.excludeIdeData);
  66465. args: [],
  66466. source: "tearDown",
  66467. referencedClasses: [],
  66468. //>>excludeEnd("ide");
  66469. pragmas: [],
  66470. messageSends: []
  66471. }, function ($methodClass){ return function (){
  66472. var self=this,$self=this;
  66473. return self;
  66474. }; }),
  66475. $globals.TestCase);
  66476. $core.addMethod(
  66477. $core.method({
  66478. selector: "timeout:",
  66479. protocol: "async",
  66480. //>>excludeStart("ide", pragmas.excludeIdeData);
  66481. args: ["aNumber"],
  66482. source: "timeout: aNumber\x0a\x09\x22Set a grace time timeout in milliseconds to run the test asynchronously\x22\x0a\x09\x0a\x09asyncTimeout ifNotNil: [ asyncTimeout clearTimeout ].\x0a\x09\x0a\x09\x22to allow #async: message send without throwing an error\x22\x0a\x09asyncTimeout := 0.\x0a\x09\x0a\x09asyncTimeout := (self async: [\x0a\x09\x09self assert: false description: 'SUnit grace time exhausted' ])\x0a\x09\x09\x09valueWithTimeout: aNumber",
  66483. referencedClasses: [],
  66484. //>>excludeEnd("ide");
  66485. pragmas: [],
  66486. messageSends: ["ifNotNil:", "clearTimeout", "valueWithTimeout:", "async:", "assert:description:"]
  66487. }, function ($methodClass){ return function (aNumber){
  66488. var self=this,$self=this;
  66489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66490. return $core.withContext(function($ctx1) {
  66491. //>>excludeEnd("ctx");
  66492. var $1;
  66493. $1=$self.asyncTimeout;
  66494. if($1 == null || $1.a$nil){
  66495. $1;
  66496. } else {
  66497. $recv($self.asyncTimeout)._clearTimeout();
  66498. }
  66499. $self.asyncTimeout=(0);
  66500. $self.asyncTimeout=$recv($self._async_((function(){
  66501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66502. return $core.withContext(function($ctx2) {
  66503. //>>excludeEnd("ctx");
  66504. return $self._assert_description_(false,"SUnit grace time exhausted");
  66505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66506. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  66507. //>>excludeEnd("ctx");
  66508. })))._valueWithTimeout_(aNumber);
  66509. return self;
  66510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66511. }, function($ctx1) {$ctx1.fill(self,"timeout:",{aNumber:aNumber})});
  66512. //>>excludeEnd("ctx");
  66513. }; }),
  66514. $globals.TestCase);
  66515. $core.addMethod(
  66516. $core.method({
  66517. selector: "allTestSelectors",
  66518. protocol: "accessing",
  66519. //>>excludeStart("ide", pragmas.excludeIdeData);
  66520. args: [],
  66521. source: "allTestSelectors\x0a\x09| selectors |\x0a\x09selectors := self testSelectors.\x0a\x09self shouldInheritSelectors ifTrue: [\x0a\x09\x09selectors addAll: self superclass allTestSelectors ].\x0a\x09^ selectors asSet",
  66522. referencedClasses: [],
  66523. //>>excludeEnd("ide");
  66524. pragmas: [],
  66525. messageSends: ["testSelectors", "ifTrue:", "shouldInheritSelectors", "addAll:", "allTestSelectors", "superclass", "asSet"]
  66526. }, function ($methodClass){ return function (){
  66527. var self=this,$self=this;
  66528. var selectors;
  66529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66530. return $core.withContext(function($ctx1) {
  66531. //>>excludeEnd("ctx");
  66532. selectors=$self._testSelectors();
  66533. if($core.assert($self._shouldInheritSelectors())){
  66534. $recv(selectors)._addAll_($recv($self._superclass())._allTestSelectors());
  66535. }
  66536. return $recv(selectors)._asSet();
  66537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66538. }, function($ctx1) {$ctx1.fill(self,"allTestSelectors",{selectors:selectors})});
  66539. //>>excludeEnd("ctx");
  66540. }; }),
  66541. $globals.TestCase.a$cls);
  66542. $core.addMethod(
  66543. $core.method({
  66544. selector: "buildSuite",
  66545. protocol: "accessing",
  66546. //>>excludeStart("ide", pragmas.excludeIdeData);
  66547. args: [],
  66548. source: "buildSuite\x0a\x09^ self allTestSelectors collect: [ :each | self selector: each ]",
  66549. referencedClasses: [],
  66550. //>>excludeEnd("ide");
  66551. pragmas: [],
  66552. messageSends: ["collect:", "allTestSelectors", "selector:"]
  66553. }, function ($methodClass){ return function (){
  66554. var self=this,$self=this;
  66555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66556. return $core.withContext(function($ctx1) {
  66557. //>>excludeEnd("ctx");
  66558. return $recv($self._allTestSelectors())._collect_((function(each){
  66559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66560. return $core.withContext(function($ctx2) {
  66561. //>>excludeEnd("ctx");
  66562. return $self._selector_(each);
  66563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66564. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  66565. //>>excludeEnd("ctx");
  66566. }));
  66567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66568. }, function($ctx1) {$ctx1.fill(self,"buildSuite",{})});
  66569. //>>excludeEnd("ctx");
  66570. }; }),
  66571. $globals.TestCase.a$cls);
  66572. $core.addMethod(
  66573. $core.method({
  66574. selector: "classTag",
  66575. protocol: "accessing",
  66576. //>>excludeStart("ide", pragmas.excludeIdeData);
  66577. args: [],
  66578. 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^ 'test'",
  66579. referencedClasses: [],
  66580. //>>excludeEnd("ide");
  66581. pragmas: [],
  66582. messageSends: []
  66583. }, function ($methodClass){ return function (){
  66584. var self=this,$self=this;
  66585. return "test";
  66586. }; }),
  66587. $globals.TestCase.a$cls);
  66588. $core.addMethod(
  66589. $core.method({
  66590. selector: "isAbstract",
  66591. protocol: "testing",
  66592. //>>excludeStart("ide", pragmas.excludeIdeData);
  66593. args: [],
  66594. source: "isAbstract\x0a\x09^ self name = TestCase name",
  66595. referencedClasses: ["TestCase"],
  66596. //>>excludeEnd("ide");
  66597. pragmas: [],
  66598. messageSends: ["=", "name"]
  66599. }, function ($methodClass){ return function (){
  66600. var self=this,$self=this;
  66601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66602. return $core.withContext(function($ctx1) {
  66603. //>>excludeEnd("ctx");
  66604. return $recv([$self._name()
  66605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66606. ,$ctx1.sendIdx["name"]=1
  66607. //>>excludeEnd("ctx");
  66608. ][0]).__eq($recv($globals.TestCase)._name());
  66609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66610. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
  66611. //>>excludeEnd("ctx");
  66612. }; }),
  66613. $globals.TestCase.a$cls);
  66614. $core.addMethod(
  66615. $core.method({
  66616. selector: "isTestClass",
  66617. protocol: "testing",
  66618. //>>excludeStart("ide", pragmas.excludeIdeData);
  66619. args: [],
  66620. source: "isTestClass\x0a\x09^ self isAbstract not",
  66621. referencedClasses: [],
  66622. //>>excludeEnd("ide");
  66623. pragmas: [],
  66624. messageSends: ["not", "isAbstract"]
  66625. }, function ($methodClass){ return function (){
  66626. var self=this,$self=this;
  66627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66628. return $core.withContext(function($ctx1) {
  66629. //>>excludeEnd("ctx");
  66630. return $recv($self._isAbstract())._not();
  66631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66632. }, function($ctx1) {$ctx1.fill(self,"isTestClass",{})});
  66633. //>>excludeEnd("ctx");
  66634. }; }),
  66635. $globals.TestCase.a$cls);
  66636. $core.addMethod(
  66637. $core.method({
  66638. selector: "lookupHierarchyRoot",
  66639. protocol: "accessing",
  66640. //>>excludeStart("ide", pragmas.excludeIdeData);
  66641. args: [],
  66642. source: "lookupHierarchyRoot\x0a\x09^ TestCase",
  66643. referencedClasses: ["TestCase"],
  66644. //>>excludeEnd("ide");
  66645. pragmas: [],
  66646. messageSends: []
  66647. }, function ($methodClass){ return function (){
  66648. var self=this,$self=this;
  66649. return $globals.TestCase;
  66650. }; }),
  66651. $globals.TestCase.a$cls);
  66652. $core.addMethod(
  66653. $core.method({
  66654. selector: "selector:",
  66655. protocol: "accessing",
  66656. //>>excludeStart("ide", pragmas.excludeIdeData);
  66657. args: ["aSelector"],
  66658. source: "selector: aSelector\x0a\x09^ self new\x0a\x09\x09setTestSelector: aSelector;\x0a\x09\x09yourself",
  66659. referencedClasses: [],
  66660. //>>excludeEnd("ide");
  66661. pragmas: [],
  66662. messageSends: ["setTestSelector:", "new", "yourself"]
  66663. }, function ($methodClass){ return function (aSelector){
  66664. var self=this,$self=this;
  66665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66666. return $core.withContext(function($ctx1) {
  66667. //>>excludeEnd("ctx");
  66668. var $1;
  66669. $1=$self._new();
  66670. $recv($1)._setTestSelector_(aSelector);
  66671. return $recv($1)._yourself();
  66672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66673. }, function($ctx1) {$ctx1.fill(self,"selector:",{aSelector:aSelector})});
  66674. //>>excludeEnd("ctx");
  66675. }; }),
  66676. $globals.TestCase.a$cls);
  66677. $core.addMethod(
  66678. $core.method({
  66679. selector: "shouldInheritSelectors",
  66680. protocol: "testing",
  66681. //>>excludeStart("ide", pragmas.excludeIdeData);
  66682. args: [],
  66683. source: "shouldInheritSelectors\x0a\x09^ self ~= self lookupHierarchyRoot",
  66684. referencedClasses: [],
  66685. //>>excludeEnd("ide");
  66686. pragmas: [],
  66687. messageSends: ["~=", "lookupHierarchyRoot"]
  66688. }, function ($methodClass){ return function (){
  66689. var self=this,$self=this;
  66690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66691. return $core.withContext(function($ctx1) {
  66692. //>>excludeEnd("ctx");
  66693. return $self.__tild_eq($self._lookupHierarchyRoot());
  66694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66695. }, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{})});
  66696. //>>excludeEnd("ctx");
  66697. }; }),
  66698. $globals.TestCase.a$cls);
  66699. $core.addMethod(
  66700. $core.method({
  66701. selector: "testSelectors",
  66702. protocol: "accessing",
  66703. //>>excludeStart("ide", pragmas.excludeIdeData);
  66704. args: [],
  66705. source: "testSelectors\x0a\x09^ self methodDictionary keys select: [ :each | each match: '^test' ]",
  66706. referencedClasses: [],
  66707. //>>excludeEnd("ide");
  66708. pragmas: [],
  66709. messageSends: ["select:", "keys", "methodDictionary", "match:"]
  66710. }, function ($methodClass){ return function (){
  66711. var self=this,$self=this;
  66712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66713. return $core.withContext(function($ctx1) {
  66714. //>>excludeEnd("ctx");
  66715. return $recv($recv($self._methodDictionary())._keys())._select_((function(each){
  66716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66717. return $core.withContext(function($ctx2) {
  66718. //>>excludeEnd("ctx");
  66719. return $recv(each)._match_("^test");
  66720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66721. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  66722. //>>excludeEnd("ctx");
  66723. }));
  66724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66725. }, function($ctx1) {$ctx1.fill(self,"testSelectors",{})});
  66726. //>>excludeEnd("ctx");
  66727. }; }),
  66728. $globals.TestCase.a$cls);
  66729. $core.addClass("TestContext", $globals.Object, "SUnit");
  66730. $core.setSlots($globals.TestContext, ["testCase"]);
  66731. //>>excludeStart("ide", pragmas.excludeIdeData);
  66732. $globals.TestContext.comment="I govern running a particular test case.\x0a\x0aMy main added value is `#execute:` method which runs a block as a part of test case (restores context, nilling it afterwards, cleaning/calling `#tearDown` as appropriate for sync/async scenario).";
  66733. //>>excludeEnd("ide");
  66734. $core.addMethod(
  66735. $core.method({
  66736. selector: "execute:",
  66737. protocol: "running",
  66738. //>>excludeStart("ide", pragmas.excludeIdeData);
  66739. args: ["aBlock"],
  66740. source: "execute: aBlock\x0a\x09| failed result |\x0a\x09\x0a\x09testCase context: self.\x0a\x09[\x0a\x09\x09failed := true.\x0a\x09\x09result := aBlock value.\x0a\x09\x09testCase isAsync ifFalse: [\x0a\x09\x09\x09testCase assert: result isThenable not description: testCase asString, ' returned promise without sending #timeout:' ].\x0a\x09\x09failed := false\x0a\x09]\x0a\x09\x09ensure: [\x0a\x09\x09\x09\x22testCase context: nil.\x22\x0a\x09\x09\x09\x0a\x09\x09\x09(failed and: [ testCase isAsync ]) ifTrue: [ testCase finished ].\x0a\x09\x09\x09testCase isAsync\x0a\x09\x09\x09\x09ifFalse: [ testCase tearDown ]\x0a\x09\x09\x09\x09ifTrue: [ result isThenable ifTrue: [\x0a\x09\x09\x09\x09\x09result\x0a\x09\x09\x09\x09\x09\x09then: [ testCase isAsync ifTrue: [ self execute: [ testCase finished ] ] ]\x0a\x09\x09\x09\x09\x09\x09catch: [ :error | testCase isAsync ifTrue: [ self execute: [ error signal ] ] ] ] ] ]",
  66741. referencedClasses: [],
  66742. //>>excludeEnd("ide");
  66743. pragmas: [],
  66744. messageSends: ["context:", "ensure:", "value", "ifFalse:", "isAsync", "assert:description:", "not", "isThenable", ",", "asString", "ifTrue:", "and:", "finished", "ifFalse:ifTrue:", "tearDown", "then:catch:", "execute:", "signal"]
  66745. }, function ($methodClass){ return function (aBlock){
  66746. var self=this,$self=this;
  66747. var failed,result;
  66748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66749. return $core.withContext(function($ctx1) {
  66750. //>>excludeEnd("ctx");
  66751. var $1;
  66752. $recv($self.testCase)._context_(self);
  66753. $recv((function(){
  66754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66755. return $core.withContext(function($ctx2) {
  66756. //>>excludeEnd("ctx");
  66757. failed=true;
  66758. result=$recv(aBlock)._value();
  66759. if(!$core.assert([$recv($self.testCase)._isAsync()
  66760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66761. ,$ctx2.sendIdx["isAsync"]=1
  66762. //>>excludeEnd("ctx");
  66763. ][0])){
  66764. $recv($self.testCase)._assert_description_($recv([$recv(result)._isThenable()
  66765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66766. ,$ctx2.sendIdx["isThenable"]=1
  66767. //>>excludeEnd("ctx");
  66768. ][0])._not(),$recv($recv($self.testCase)._asString()).__comma(" returned promise without sending #timeout:"));
  66769. }
  66770. failed=false;
  66771. return failed;
  66772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66773. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66774. //>>excludeEnd("ctx");
  66775. }))._ensure_((function(){
  66776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66777. return $core.withContext(function($ctx2) {
  66778. //>>excludeEnd("ctx");
  66779. if($core.assert(failed)){
  66780. $1=[$recv($self.testCase)._isAsync()
  66781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66782. ,$ctx2.sendIdx["isAsync"]=2
  66783. //>>excludeEnd("ctx");
  66784. ][0];
  66785. } else {
  66786. $1=false;
  66787. }
  66788. if($core.assert($1)){
  66789. [$recv($self.testCase)._finished()
  66790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66791. ,$ctx2.sendIdx["finished"]=1
  66792. //>>excludeEnd("ctx");
  66793. ][0];
  66794. }
  66795. if($core.assert([$recv($self.testCase)._isAsync()
  66796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66797. ,$ctx2.sendIdx["isAsync"]=3
  66798. //>>excludeEnd("ctx");
  66799. ][0])){
  66800. if($core.assert($recv(result)._isThenable())){
  66801. return $recv(result)._then_catch_((function(){
  66802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66803. return $core.withContext(function($ctx3) {
  66804. //>>excludeEnd("ctx");
  66805. if($core.assert([$recv($self.testCase)._isAsync()
  66806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66807. ,$ctx3.sendIdx["isAsync"]=4
  66808. //>>excludeEnd("ctx");
  66809. ][0])){
  66810. return [$self._execute_((function(){
  66811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66812. return $core.withContext(function($ctx4) {
  66813. //>>excludeEnd("ctx");
  66814. return $recv($self.testCase)._finished();
  66815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66816. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,11)});
  66817. //>>excludeEnd("ctx");
  66818. }))
  66819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66820. ,$ctx3.sendIdx["execute:"]=1
  66821. //>>excludeEnd("ctx");
  66822. ][0];
  66823. }
  66824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66825. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,9)});
  66826. //>>excludeEnd("ctx");
  66827. }),(function(error){
  66828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66829. return $core.withContext(function($ctx3) {
  66830. //>>excludeEnd("ctx");
  66831. if($core.assert($recv($self.testCase)._isAsync())){
  66832. return $self._execute_((function(){
  66833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66834. return $core.withContext(function($ctx4) {
  66835. //>>excludeEnd("ctx");
  66836. return $recv(error)._signal();
  66837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66838. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,14)});
  66839. //>>excludeEnd("ctx");
  66840. }));
  66841. }
  66842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66843. }, function($ctx3) {$ctx3.fillBlock({error:error},$ctx2,12)});
  66844. //>>excludeEnd("ctx");
  66845. }));
  66846. }
  66847. } else {
  66848. return $recv($self.testCase)._tearDown();
  66849. }
  66850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66851. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  66852. //>>excludeEnd("ctx");
  66853. }));
  66854. return self;
  66855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66856. }, function($ctx1) {$ctx1.fill(self,"execute:",{aBlock:aBlock,failed:failed,result:result})});
  66857. //>>excludeEnd("ctx");
  66858. }; }),
  66859. $globals.TestContext);
  66860. $core.addMethod(
  66861. $core.method({
  66862. selector: "start",
  66863. protocol: "running",
  66864. //>>excludeStart("ide", pragmas.excludeIdeData);
  66865. args: [],
  66866. source: "start\x0a\x09self execute: [\x0a\x09\x09testCase setUp.\x0a\x09\x09testCase performTest ]",
  66867. referencedClasses: [],
  66868. //>>excludeEnd("ide");
  66869. pragmas: [],
  66870. messageSends: ["execute:", "setUp", "performTest"]
  66871. }, function ($methodClass){ return function (){
  66872. var self=this,$self=this;
  66873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66874. return $core.withContext(function($ctx1) {
  66875. //>>excludeEnd("ctx");
  66876. $self._execute_((function(){
  66877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66878. return $core.withContext(function($ctx2) {
  66879. //>>excludeEnd("ctx");
  66880. $recv($self.testCase)._setUp();
  66881. return $recv($self.testCase)._performTest();
  66882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66883. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66884. //>>excludeEnd("ctx");
  66885. }));
  66886. return self;
  66887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66888. }, function($ctx1) {$ctx1.fill(self,"start",{})});
  66889. //>>excludeEnd("ctx");
  66890. }; }),
  66891. $globals.TestContext);
  66892. $core.addMethod(
  66893. $core.method({
  66894. selector: "testCase:",
  66895. protocol: "accessing",
  66896. //>>excludeStart("ide", pragmas.excludeIdeData);
  66897. args: ["aTestCase"],
  66898. source: "testCase: aTestCase\x0a\x09testCase := aTestCase",
  66899. referencedClasses: [],
  66900. //>>excludeEnd("ide");
  66901. pragmas: [],
  66902. messageSends: []
  66903. }, function ($methodClass){ return function (aTestCase){
  66904. var self=this,$self=this;
  66905. $self.testCase=aTestCase;
  66906. return self;
  66907. }; }),
  66908. $globals.TestContext);
  66909. $core.addMethod(
  66910. $core.method({
  66911. selector: "testCase:",
  66912. protocol: "instance creation",
  66913. //>>excludeStart("ide", pragmas.excludeIdeData);
  66914. args: ["aTestCase"],
  66915. source: "testCase: aTestCase\x0a\x09^ self new\x0a\x09\x09testCase: aTestCase;\x0a\x09\x09yourself",
  66916. referencedClasses: [],
  66917. //>>excludeEnd("ide");
  66918. pragmas: [],
  66919. messageSends: ["testCase:", "new", "yourself"]
  66920. }, function ($methodClass){ return function (aTestCase){
  66921. var self=this,$self=this;
  66922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66923. return $core.withContext(function($ctx1) {
  66924. //>>excludeEnd("ctx");
  66925. var $1;
  66926. $1=$self._new();
  66927. $recv($1)._testCase_(aTestCase);
  66928. return $recv($1)._yourself();
  66929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66930. }, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase})});
  66931. //>>excludeEnd("ctx");
  66932. }; }),
  66933. $globals.TestContext.a$cls);
  66934. $core.addClass("ReportingTestContext", $globals.TestContext, "SUnit");
  66935. $core.setSlots($globals.ReportingTestContext, ["finished", "result"]);
  66936. //>>excludeStart("ide", pragmas.excludeIdeData);
  66937. $globals.ReportingTestContext.comment="I add `TestResult` reporting to `TestContext`.\x0a\x0aErrors are caught and save into a `TestResult`,\x0aWhen test case is finished (which can be later for async tests), a callback block is executed; this is used by a `TestSuiteRunner`.";
  66938. //>>excludeEnd("ide");
  66939. $core.addMethod(
  66940. $core.method({
  66941. selector: "execute:",
  66942. protocol: "running",
  66943. //>>excludeStart("ide", pragmas.excludeIdeData);
  66944. args: ["aBlock"],
  66945. source: "execute: aBlock\x0a\x09[\x0a\x09\x09self withErrorReporting: [ super execute: aBlock ]\x0a\x09]\x0a\x09\x09ensure: [\x0a\x09\x09\x09testCase isAsync ifFalse: [\x0a\x09\x09\x09\x09result increaseRuns. finished value ] ]",
  66946. referencedClasses: [],
  66947. //>>excludeEnd("ide");
  66948. pragmas: [],
  66949. messageSends: ["ensure:", "withErrorReporting:", "execute:", "ifFalse:", "isAsync", "increaseRuns", "value"]
  66950. }, function ($methodClass){ return function (aBlock){
  66951. var self=this,$self=this;
  66952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66953. return $core.withContext(function($ctx1) {
  66954. //>>excludeEnd("ctx");
  66955. $recv((function(){
  66956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66957. return $core.withContext(function($ctx2) {
  66958. //>>excludeEnd("ctx");
  66959. return $self._withErrorReporting_((function(){
  66960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66961. return $core.withContext(function($ctx3) {
  66962. //>>excludeEnd("ctx");
  66963. return [(
  66964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66965. $ctx3.supercall = true,
  66966. //>>excludeEnd("ctx");
  66967. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._execute_.call($self,aBlock))
  66968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66969. ,$ctx3.supercall = false
  66970. //>>excludeEnd("ctx");
  66971. ][0];
  66972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66973. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  66974. //>>excludeEnd("ctx");
  66975. }));
  66976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66977. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66978. //>>excludeEnd("ctx");
  66979. }))._ensure_((function(){
  66980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66981. return $core.withContext(function($ctx2) {
  66982. //>>excludeEnd("ctx");
  66983. if(!$core.assert($recv($self.testCase)._isAsync())){
  66984. $recv($self.result)._increaseRuns();
  66985. return $recv($self.finished)._value();
  66986. }
  66987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66988. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  66989. //>>excludeEnd("ctx");
  66990. }));
  66991. return self;
  66992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66993. }, function($ctx1) {$ctx1.fill(self,"execute:",{aBlock:aBlock})});
  66994. //>>excludeEnd("ctx");
  66995. }; }),
  66996. $globals.ReportingTestContext);
  66997. $core.addMethod(
  66998. $core.method({
  66999. selector: "finished:",
  67000. protocol: "accessing",
  67001. //>>excludeStart("ide", pragmas.excludeIdeData);
  67002. args: ["aBlock"],
  67003. source: "finished: aBlock\x0a\x09finished := aBlock",
  67004. referencedClasses: [],
  67005. //>>excludeEnd("ide");
  67006. pragmas: [],
  67007. messageSends: []
  67008. }, function ($methodClass){ return function (aBlock){
  67009. var self=this,$self=this;
  67010. $self.finished=aBlock;
  67011. return self;
  67012. }; }),
  67013. $globals.ReportingTestContext);
  67014. $core.addMethod(
  67015. $core.method({
  67016. selector: "result:",
  67017. protocol: "accessing",
  67018. //>>excludeStart("ide", pragmas.excludeIdeData);
  67019. args: ["aTestResult"],
  67020. source: "result: aTestResult\x0a\x09result := aTestResult",
  67021. referencedClasses: [],
  67022. //>>excludeEnd("ide");
  67023. pragmas: [],
  67024. messageSends: []
  67025. }, function ($methodClass){ return function (aTestResult){
  67026. var self=this,$self=this;
  67027. $self.result=aTestResult;
  67028. return self;
  67029. }; }),
  67030. $globals.ReportingTestContext);
  67031. $core.addMethod(
  67032. $core.method({
  67033. selector: "withErrorReporting:",
  67034. protocol: "private",
  67035. //>>excludeStart("ide", pragmas.excludeIdeData);
  67036. args: ["aBlock"],
  67037. source: "withErrorReporting: aBlock\x0a\x09[ aBlock\x0a\x09\x09on: TestFailure\x0a\x09\x09do: [ :ex | result addFailure: testCase ]\x0a\x09]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :ex | result addError: testCase ]",
  67038. referencedClasses: ["TestFailure", "Error"],
  67039. //>>excludeEnd("ide");
  67040. pragmas: [],
  67041. messageSends: ["on:do:", "addFailure:", "addError:"]
  67042. }, function ($methodClass){ return function (aBlock){
  67043. var self=this,$self=this;
  67044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67045. return $core.withContext(function($ctx1) {
  67046. //>>excludeEnd("ctx");
  67047. [$recv((function(){
  67048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67049. return $core.withContext(function($ctx2) {
  67050. //>>excludeEnd("ctx");
  67051. return $recv(aBlock)._on_do_($globals.TestFailure,(function(ex){
  67052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67053. return $core.withContext(function($ctx3) {
  67054. //>>excludeEnd("ctx");
  67055. return $recv($self.result)._addFailure_($self.testCase);
  67056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67057. }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,2)});
  67058. //>>excludeEnd("ctx");
  67059. }));
  67060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67061. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  67062. //>>excludeEnd("ctx");
  67063. }))._on_do_($globals.Error,(function(ex){
  67064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67065. return $core.withContext(function($ctx2) {
  67066. //>>excludeEnd("ctx");
  67067. return $recv($self.result)._addError_($self.testCase);
  67068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67069. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,3)});
  67070. //>>excludeEnd("ctx");
  67071. }))
  67072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67073. ,$ctx1.sendIdx["on:do:"]=1
  67074. //>>excludeEnd("ctx");
  67075. ][0];
  67076. return self;
  67077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67078. }, function($ctx1) {$ctx1.fill(self,"withErrorReporting:",{aBlock:aBlock})});
  67079. //>>excludeEnd("ctx");
  67080. }; }),
  67081. $globals.ReportingTestContext);
  67082. $core.addMethod(
  67083. $core.method({
  67084. selector: "testCase:result:finished:",
  67085. protocol: "instance creation",
  67086. //>>excludeStart("ide", pragmas.excludeIdeData);
  67087. args: ["aTestCase", "aTestResult", "aBlock"],
  67088. source: "testCase: aTestCase result: aTestResult finished: aBlock\x0a\x09^ (super testCase: aTestCase)\x0a\x09\x09result: aTestResult;\x0a\x09\x09finished: aBlock;\x0a\x09\x09yourself",
  67089. referencedClasses: [],
  67090. //>>excludeEnd("ide");
  67091. pragmas: [],
  67092. messageSends: ["result:", "testCase:", "finished:", "yourself"]
  67093. }, function ($methodClass){ return function (aTestCase,aTestResult,aBlock){
  67094. var self=this,$self=this;
  67095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67096. return $core.withContext(function($ctx1) {
  67097. //>>excludeEnd("ctx");
  67098. var $1;
  67099. $1=[(
  67100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67101. $ctx1.supercall = true,
  67102. //>>excludeEnd("ctx");
  67103. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._testCase_.call($self,aTestCase))
  67104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67105. ,$ctx1.supercall = false
  67106. //>>excludeEnd("ctx");
  67107. ][0];
  67108. $recv($1)._result_(aTestResult);
  67109. $recv($1)._finished_(aBlock);
  67110. return $recv($1)._yourself();
  67111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67112. }, function($ctx1) {$ctx1.fill(self,"testCase:result:finished:",{aTestCase:aTestCase,aTestResult:aTestResult,aBlock:aBlock})});
  67113. //>>excludeEnd("ctx");
  67114. }; }),
  67115. $globals.ReportingTestContext.a$cls);
  67116. $core.addClass("TestFailure", $globals.Error, "SUnit");
  67117. //>>excludeStart("ide", pragmas.excludeIdeData);
  67118. $globals.TestFailure.comment="I am raised when the boolean parameter of an #`assert:` or `#deny:` call is the opposite of what the assertion claims.\x0a\x0aThe test framework distinguishes between failures and errors.\x0aA failure is an event whose possibiity is explicitly anticipated and checked for in an assertion,\x0awhereas an error is an unanticipated problem like a division by 0 or an index out of bounds.";
  67119. //>>excludeEnd("ide");
  67120. $core.addClass("TestResult", $globals.Object, "SUnit");
  67121. $core.setSlots($globals.TestResult, ["timestamp", "runs", "errors", "failures", "total"]);
  67122. //>>excludeStart("ide", pragmas.excludeIdeData);
  67123. $globals.TestResult.comment="I implement the collecting parameter pattern for running a bunch of tests.\x0a\x0aMy instances hold tests that have run, sorted into the result categories of passed, failures and errors.\x0a\x0a`TestResult` is an interesting object to subclass or substitute. `#runCase:` is the external protocol you need to reproduce";
  67124. //>>excludeEnd("ide");
  67125. $core.addMethod(
  67126. $core.method({
  67127. selector: "addError:",
  67128. protocol: "accessing",
  67129. //>>excludeStart("ide", pragmas.excludeIdeData);
  67130. args: ["anError"],
  67131. source: "addError: anError\x0a\x09self errors add: anError",
  67132. referencedClasses: [],
  67133. //>>excludeEnd("ide");
  67134. pragmas: [],
  67135. messageSends: ["add:", "errors"]
  67136. }, function ($methodClass){ return function (anError){
  67137. var self=this,$self=this;
  67138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67139. return $core.withContext(function($ctx1) {
  67140. //>>excludeEnd("ctx");
  67141. $recv($self._errors())._add_(anError);
  67142. return self;
  67143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67144. }, function($ctx1) {$ctx1.fill(self,"addError:",{anError:anError})});
  67145. //>>excludeEnd("ctx");
  67146. }; }),
  67147. $globals.TestResult);
  67148. $core.addMethod(
  67149. $core.method({
  67150. selector: "addFailure:",
  67151. protocol: "accessing",
  67152. //>>excludeStart("ide", pragmas.excludeIdeData);
  67153. args: ["aFailure"],
  67154. source: "addFailure: aFailure\x0a\x09self failures add: aFailure",
  67155. referencedClasses: [],
  67156. //>>excludeEnd("ide");
  67157. pragmas: [],
  67158. messageSends: ["add:", "failures"]
  67159. }, function ($methodClass){ return function (aFailure){
  67160. var self=this,$self=this;
  67161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67162. return $core.withContext(function($ctx1) {
  67163. //>>excludeEnd("ctx");
  67164. $recv($self._failures())._add_(aFailure);
  67165. return self;
  67166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67167. }, function($ctx1) {$ctx1.fill(self,"addFailure:",{aFailure:aFailure})});
  67168. //>>excludeEnd("ctx");
  67169. }; }),
  67170. $globals.TestResult);
  67171. $core.addMethod(
  67172. $core.method({
  67173. selector: "errors",
  67174. protocol: "accessing",
  67175. //>>excludeStart("ide", pragmas.excludeIdeData);
  67176. args: [],
  67177. source: "errors\x0a\x09^ errors",
  67178. referencedClasses: [],
  67179. //>>excludeEnd("ide");
  67180. pragmas: [],
  67181. messageSends: []
  67182. }, function ($methodClass){ return function (){
  67183. var self=this,$self=this;
  67184. return $self.errors;
  67185. }; }),
  67186. $globals.TestResult);
  67187. $core.addMethod(
  67188. $core.method({
  67189. selector: "failures",
  67190. protocol: "accessing",
  67191. //>>excludeStart("ide", pragmas.excludeIdeData);
  67192. args: [],
  67193. source: "failures\x0a\x09^ failures",
  67194. referencedClasses: [],
  67195. //>>excludeEnd("ide");
  67196. pragmas: [],
  67197. messageSends: []
  67198. }, function ($methodClass){ return function (){
  67199. var self=this,$self=this;
  67200. return $self.failures;
  67201. }; }),
  67202. $globals.TestResult);
  67203. $core.addMethod(
  67204. $core.method({
  67205. selector: "increaseRuns",
  67206. protocol: "accessing",
  67207. //>>excludeStart("ide", pragmas.excludeIdeData);
  67208. args: [],
  67209. source: "increaseRuns\x0a\x09runs := runs + 1",
  67210. referencedClasses: [],
  67211. //>>excludeEnd("ide");
  67212. pragmas: [],
  67213. messageSends: ["+"]
  67214. }, function ($methodClass){ return function (){
  67215. var self=this,$self=this;
  67216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67217. return $core.withContext(function($ctx1) {
  67218. //>>excludeEnd("ctx");
  67219. $self.runs=$recv($self.runs).__plus((1));
  67220. return self;
  67221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67222. }, function($ctx1) {$ctx1.fill(self,"increaseRuns",{})});
  67223. //>>excludeEnd("ctx");
  67224. }; }),
  67225. $globals.TestResult);
  67226. $core.addMethod(
  67227. $core.method({
  67228. selector: "initialize",
  67229. protocol: "initialization",
  67230. //>>excludeStart("ide", pragmas.excludeIdeData);
  67231. args: [],
  67232. source: "initialize\x0a\x09super initialize.\x0a\x09timestamp := Date now.\x0a\x09runs := 0.\x0a\x09errors := Array new.\x0a\x09failures := Array new.\x0a\x09total := 0",
  67233. referencedClasses: ["Date", "Array"],
  67234. //>>excludeEnd("ide");
  67235. pragmas: [],
  67236. messageSends: ["initialize", "now", "new"]
  67237. }, function ($methodClass){ return function (){
  67238. var self=this,$self=this;
  67239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67240. return $core.withContext(function($ctx1) {
  67241. //>>excludeEnd("ctx");
  67242. [(
  67243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67244. $ctx1.supercall = true,
  67245. //>>excludeEnd("ctx");
  67246. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  67247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67248. ,$ctx1.supercall = false
  67249. //>>excludeEnd("ctx");
  67250. ][0];
  67251. $self.timestamp=$recv($globals.Date)._now();
  67252. $self.runs=(0);
  67253. $self.errors=[$recv($globals.Array)._new()
  67254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67255. ,$ctx1.sendIdx["new"]=1
  67256. //>>excludeEnd("ctx");
  67257. ][0];
  67258. $self.failures=$recv($globals.Array)._new();
  67259. $self.total=(0);
  67260. return self;
  67261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67262. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  67263. //>>excludeEnd("ctx");
  67264. }; }),
  67265. $globals.TestResult);
  67266. $core.addMethod(
  67267. $core.method({
  67268. selector: "nextRunDo:",
  67269. protocol: "running",
  67270. //>>excludeStart("ide", pragmas.excludeIdeData);
  67271. args: ["aBlock"],
  67272. source: "nextRunDo: aBlock\x0a\x09\x22Runs aBlock with index of next run or does nothing if no more runs\x22\x0a\x09^ self runs == self total\x0a\x09\x09ifFalse: [ aBlock value: self runs + 1 ]",
  67273. referencedClasses: [],
  67274. //>>excludeEnd("ide");
  67275. pragmas: [],
  67276. messageSends: ["ifFalse:", "==", "runs", "total", "value:", "+"]
  67277. }, function ($methodClass){ return function (aBlock){
  67278. var self=this,$self=this;
  67279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67280. return $core.withContext(function($ctx1) {
  67281. //>>excludeEnd("ctx");
  67282. if(!$core.assert($recv([$self._runs()
  67283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67284. ,$ctx1.sendIdx["runs"]=1
  67285. //>>excludeEnd("ctx");
  67286. ][0]).__eq_eq($self._total()))){
  67287. return $recv(aBlock)._value_($recv($self._runs()).__plus((1)));
  67288. }
  67289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67290. }, function($ctx1) {$ctx1.fill(self,"nextRunDo:",{aBlock:aBlock})});
  67291. //>>excludeEnd("ctx");
  67292. }; }),
  67293. $globals.TestResult);
  67294. $core.addMethod(
  67295. $core.method({
  67296. selector: "runCase:",
  67297. protocol: "running",
  67298. //>>excludeStart("ide", pragmas.excludeIdeData);
  67299. args: ["aTestCase"],
  67300. source: "runCase: aTestCase\x0a\x09[ [ self increaseRuns.\x0a\x09\x09aTestCase runCase ]\x0a\x09on: TestFailure do: [ :ex | self addFailure: aTestCase ]]\x0a\x09on: Error do: [ :ex | self addError: aTestCase ]",
  67301. referencedClasses: ["TestFailure", "Error"],
  67302. //>>excludeEnd("ide");
  67303. pragmas: [],
  67304. messageSends: ["on:do:", "increaseRuns", "runCase", "addFailure:", "addError:"]
  67305. }, function ($methodClass){ return function (aTestCase){
  67306. var self=this,$self=this;
  67307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67308. return $core.withContext(function($ctx1) {
  67309. //>>excludeEnd("ctx");
  67310. [$recv((function(){
  67311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67312. return $core.withContext(function($ctx2) {
  67313. //>>excludeEnd("ctx");
  67314. return $recv((function(){
  67315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67316. return $core.withContext(function($ctx3) {
  67317. //>>excludeEnd("ctx");
  67318. $self._increaseRuns();
  67319. return $recv(aTestCase)._runCase();
  67320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67321. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  67322. //>>excludeEnd("ctx");
  67323. }))._on_do_($globals.TestFailure,(function(ex){
  67324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67325. return $core.withContext(function($ctx3) {
  67326. //>>excludeEnd("ctx");
  67327. return $self._addFailure_(aTestCase);
  67328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67329. }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)});
  67330. //>>excludeEnd("ctx");
  67331. }));
  67332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67333. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  67334. //>>excludeEnd("ctx");
  67335. }))._on_do_($globals.Error,(function(ex){
  67336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67337. return $core.withContext(function($ctx2) {
  67338. //>>excludeEnd("ctx");
  67339. return $self._addError_(aTestCase);
  67340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67341. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,4)});
  67342. //>>excludeEnd("ctx");
  67343. }))
  67344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67345. ,$ctx1.sendIdx["on:do:"]=1
  67346. //>>excludeEnd("ctx");
  67347. ][0];
  67348. return self;
  67349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67350. }, function($ctx1) {$ctx1.fill(self,"runCase:",{aTestCase:aTestCase})});
  67351. //>>excludeEnd("ctx");
  67352. }; }),
  67353. $globals.TestResult);
  67354. $core.addMethod(
  67355. $core.method({
  67356. selector: "runs",
  67357. protocol: "accessing",
  67358. //>>excludeStart("ide", pragmas.excludeIdeData);
  67359. args: [],
  67360. source: "runs\x0a\x09^ runs",
  67361. referencedClasses: [],
  67362. //>>excludeEnd("ide");
  67363. pragmas: [],
  67364. messageSends: []
  67365. }, function ($methodClass){ return function (){
  67366. var self=this,$self=this;
  67367. return $self.runs;
  67368. }; }),
  67369. $globals.TestResult);
  67370. $core.addMethod(
  67371. $core.method({
  67372. selector: "status",
  67373. protocol: "accessing",
  67374. //>>excludeStart("ide", pragmas.excludeIdeData);
  67375. args: [],
  67376. source: "status\x0a\x09^ self errors ifNotEmpty: [ 'error' ] ifEmpty: [\x0a\x09\x09self failures ifNotEmpty: [ 'failure' ] ifEmpty: [\x0a\x09\x09\x09'success' ]]",
  67377. referencedClasses: [],
  67378. //>>excludeEnd("ide");
  67379. pragmas: [],
  67380. messageSends: ["ifNotEmpty:ifEmpty:", "errors", "failures"]
  67381. }, function ($methodClass){ return function (){
  67382. var self=this,$self=this;
  67383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67384. return $core.withContext(function($ctx1) {
  67385. //>>excludeEnd("ctx");
  67386. return [$recv($self._errors())._ifNotEmpty_ifEmpty_((function(){
  67387. return "error";
  67388. }),(function(){
  67389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67390. return $core.withContext(function($ctx2) {
  67391. //>>excludeEnd("ctx");
  67392. return $recv($self._failures())._ifNotEmpty_ifEmpty_((function(){
  67393. return "failure";
  67394. }),(function(){
  67395. return "success";
  67396. }));
  67397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67398. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  67399. //>>excludeEnd("ctx");
  67400. }))
  67401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67402. ,$ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=1
  67403. //>>excludeEnd("ctx");
  67404. ][0];
  67405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67406. }, function($ctx1) {$ctx1.fill(self,"status",{})});
  67407. //>>excludeEnd("ctx");
  67408. }; }),
  67409. $globals.TestResult);
  67410. $core.addMethod(
  67411. $core.method({
  67412. selector: "timestamp",
  67413. protocol: "accessing",
  67414. //>>excludeStart("ide", pragmas.excludeIdeData);
  67415. args: [],
  67416. source: "timestamp\x0a\x09^ timestamp",
  67417. referencedClasses: [],
  67418. //>>excludeEnd("ide");
  67419. pragmas: [],
  67420. messageSends: []
  67421. }, function ($methodClass){ return function (){
  67422. var self=this,$self=this;
  67423. return $self.timestamp;
  67424. }; }),
  67425. $globals.TestResult);
  67426. $core.addMethod(
  67427. $core.method({
  67428. selector: "total",
  67429. protocol: "accessing",
  67430. //>>excludeStart("ide", pragmas.excludeIdeData);
  67431. args: [],
  67432. source: "total\x0a\x09^ total",
  67433. referencedClasses: [],
  67434. //>>excludeEnd("ide");
  67435. pragmas: [],
  67436. messageSends: []
  67437. }, function ($methodClass){ return function (){
  67438. var self=this,$self=this;
  67439. return $self.total;
  67440. }; }),
  67441. $globals.TestResult);
  67442. $core.addMethod(
  67443. $core.method({
  67444. selector: "total:",
  67445. protocol: "accessing",
  67446. //>>excludeStart("ide", pragmas.excludeIdeData);
  67447. args: ["aNumber"],
  67448. source: "total: aNumber\x0a\x09total := aNumber",
  67449. referencedClasses: [],
  67450. //>>excludeEnd("ide");
  67451. pragmas: [],
  67452. messageSends: []
  67453. }, function ($methodClass){ return function (aNumber){
  67454. var self=this,$self=this;
  67455. $self.total=aNumber;
  67456. return self;
  67457. }; }),
  67458. $globals.TestResult);
  67459. $core.addClass("TestSuiteRunner", $globals.Object, "SUnit");
  67460. $core.setSlots($globals.TestSuiteRunner, ["suite", "result", "announcer", "runNextTest"]);
  67461. //>>excludeStart("ide", pragmas.excludeIdeData);
  67462. $globals.TestSuiteRunner.comment="I am responsible for running a collection (`suite`) of tests.\x0a\x0a## API\x0a\x0aInstances should be created using the class-side `#on:` method, taking a collection of tests to run as parameter.\x0aTo run the test suite, use `#run`.";
  67463. //>>excludeEnd("ide");
  67464. $core.addMethod(
  67465. $core.method({
  67466. selector: "announcer",
  67467. protocol: "accessing",
  67468. //>>excludeStart("ide", pragmas.excludeIdeData);
  67469. args: [],
  67470. source: "announcer\x0a\x09^ announcer",
  67471. referencedClasses: [],
  67472. //>>excludeEnd("ide");
  67473. pragmas: [],
  67474. messageSends: []
  67475. }, function ($methodClass){ return function (){
  67476. var self=this,$self=this;
  67477. return $self.announcer;
  67478. }; }),
  67479. $globals.TestSuiteRunner);
  67480. $core.addMethod(
  67481. $core.method({
  67482. selector: "contextOf:",
  67483. protocol: "private",
  67484. //>>excludeStart("ide", pragmas.excludeIdeData);
  67485. args: ["anInteger"],
  67486. source: "contextOf: anInteger\x0a\x09^ ReportingTestContext testCase: (suite at: anInteger) result: result finished: [ self resume ]",
  67487. referencedClasses: ["ReportingTestContext"],
  67488. //>>excludeEnd("ide");
  67489. pragmas: [],
  67490. messageSends: ["testCase:result:finished:", "at:", "resume"]
  67491. }, function ($methodClass){ return function (anInteger){
  67492. var self=this,$self=this;
  67493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67494. return $core.withContext(function($ctx1) {
  67495. //>>excludeEnd("ctx");
  67496. return $recv($globals.ReportingTestContext)._testCase_result_finished_($recv($self.suite)._at_(anInteger),$self.result,(function(){
  67497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67498. return $core.withContext(function($ctx2) {
  67499. //>>excludeEnd("ctx");
  67500. return $self._resume();
  67501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67502. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  67503. //>>excludeEnd("ctx");
  67504. }));
  67505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67506. }, function($ctx1) {$ctx1.fill(self,"contextOf:",{anInteger:anInteger})});
  67507. //>>excludeEnd("ctx");
  67508. }; }),
  67509. $globals.TestSuiteRunner);
  67510. $core.addMethod(
  67511. $core.method({
  67512. selector: "initialize",
  67513. protocol: "initialization",
  67514. //>>excludeStart("ide", pragmas.excludeIdeData);
  67515. args: [],
  67516. source: "initialize\x0a\x09super initialize.\x0a\x09announcer := Announcer new.\x0a\x09result := TestResult new.\x0a\x09runNextTest := [ | runs | runs := result runs. runs < result total ifTrue: [ (self contextOf: runs + 1) start ] ].",
  67517. referencedClasses: ["Announcer", "TestResult"],
  67518. //>>excludeEnd("ide");
  67519. pragmas: [],
  67520. messageSends: ["initialize", "new", "runs", "ifTrue:", "<", "total", "start", "contextOf:", "+"]
  67521. }, function ($methodClass){ return function (){
  67522. var self=this,$self=this;
  67523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67524. return $core.withContext(function($ctx1) {
  67525. //>>excludeEnd("ctx");
  67526. [(
  67527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67528. $ctx1.supercall = true,
  67529. //>>excludeEnd("ctx");
  67530. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  67531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67532. ,$ctx1.supercall = false
  67533. //>>excludeEnd("ctx");
  67534. ][0];
  67535. $self.announcer=[$recv($globals.Announcer)._new()
  67536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67537. ,$ctx1.sendIdx["new"]=1
  67538. //>>excludeEnd("ctx");
  67539. ][0];
  67540. $self.result=$recv($globals.TestResult)._new();
  67541. $self.runNextTest=(function(){
  67542. var runs;
  67543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67544. return $core.withContext(function($ctx2) {
  67545. //>>excludeEnd("ctx");
  67546. runs=$recv($self.result)._runs();
  67547. if($core.assert($recv(runs).__lt($recv($self.result)._total()))){
  67548. return $recv($self._contextOf_($recv(runs).__plus((1))))._start();
  67549. }
  67550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67551. }, function($ctx2) {$ctx2.fillBlock({runs:runs},$ctx1,1)});
  67552. //>>excludeEnd("ctx");
  67553. });
  67554. return self;
  67555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67556. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  67557. //>>excludeEnd("ctx");
  67558. }; }),
  67559. $globals.TestSuiteRunner);
  67560. $core.addMethod(
  67561. $core.method({
  67562. selector: "result",
  67563. protocol: "accessing",
  67564. //>>excludeStart("ide", pragmas.excludeIdeData);
  67565. args: [],
  67566. source: "result\x0a\x09^ result",
  67567. referencedClasses: [],
  67568. //>>excludeEnd("ide");
  67569. pragmas: [],
  67570. messageSends: []
  67571. }, function ($methodClass){ return function (){
  67572. var self=this,$self=this;
  67573. return $self.result;
  67574. }; }),
  67575. $globals.TestSuiteRunner);
  67576. $core.addMethod(
  67577. $core.method({
  67578. selector: "resume",
  67579. protocol: "actions",
  67580. //>>excludeStart("ide", pragmas.excludeIdeData);
  67581. args: [],
  67582. source: "resume\x0a\x09runNextTest fork.\x0a\x09announcer announce: (ResultAnnouncement new result: result)",
  67583. referencedClasses: ["ResultAnnouncement"],
  67584. //>>excludeEnd("ide");
  67585. pragmas: [],
  67586. messageSends: ["fork", "announce:", "result:", "new"]
  67587. }, function ($methodClass){ return function (){
  67588. var self=this,$self=this;
  67589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67590. return $core.withContext(function($ctx1) {
  67591. //>>excludeEnd("ctx");
  67592. $recv($self.runNextTest)._fork();
  67593. $recv($self.announcer)._announce_($recv($recv($globals.ResultAnnouncement)._new())._result_($self.result));
  67594. return self;
  67595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67596. }, function($ctx1) {$ctx1.fill(self,"resume",{})});
  67597. //>>excludeEnd("ctx");
  67598. }; }),
  67599. $globals.TestSuiteRunner);
  67600. $core.addMethod(
  67601. $core.method({
  67602. selector: "run",
  67603. protocol: "actions",
  67604. //>>excludeStart("ide", pragmas.excludeIdeData);
  67605. args: [],
  67606. source: "run\x0a\x09result total: suite size.\x0a\x09self resume",
  67607. referencedClasses: [],
  67608. //>>excludeEnd("ide");
  67609. pragmas: [],
  67610. messageSends: ["total:", "size", "resume"]
  67611. }, function ($methodClass){ return function (){
  67612. var self=this,$self=this;
  67613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67614. return $core.withContext(function($ctx1) {
  67615. //>>excludeEnd("ctx");
  67616. $recv($self.result)._total_($recv($self.suite)._size());
  67617. $self._resume();
  67618. return self;
  67619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67620. }, function($ctx1) {$ctx1.fill(self,"run",{})});
  67621. //>>excludeEnd("ctx");
  67622. }; }),
  67623. $globals.TestSuiteRunner);
  67624. $core.addMethod(
  67625. $core.method({
  67626. selector: "suite:",
  67627. protocol: "accessing",
  67628. //>>excludeStart("ide", pragmas.excludeIdeData);
  67629. args: ["aCollection"],
  67630. source: "suite: aCollection\x0a\x09suite := aCollection",
  67631. referencedClasses: [],
  67632. //>>excludeEnd("ide");
  67633. pragmas: [],
  67634. messageSends: []
  67635. }, function ($methodClass){ return function (aCollection){
  67636. var self=this,$self=this;
  67637. $self.suite=aCollection;
  67638. return self;
  67639. }; }),
  67640. $globals.TestSuiteRunner);
  67641. $core.addMethod(
  67642. $core.method({
  67643. selector: "new",
  67644. protocol: "instance creation",
  67645. //>>excludeStart("ide", pragmas.excludeIdeData);
  67646. args: [],
  67647. source: "new\x0a\x09self shouldNotImplement",
  67648. referencedClasses: [],
  67649. //>>excludeEnd("ide");
  67650. pragmas: [],
  67651. messageSends: ["shouldNotImplement"]
  67652. }, function ($methodClass){ return function (){
  67653. var self=this,$self=this;
  67654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67655. return $core.withContext(function($ctx1) {
  67656. //>>excludeEnd("ctx");
  67657. $self._shouldNotImplement();
  67658. return self;
  67659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67660. }, function($ctx1) {$ctx1.fill(self,"new",{})});
  67661. //>>excludeEnd("ctx");
  67662. }; }),
  67663. $globals.TestSuiteRunner.a$cls);
  67664. $core.addMethod(
  67665. $core.method({
  67666. selector: "on:",
  67667. protocol: "instance creation",
  67668. //>>excludeStart("ide", pragmas.excludeIdeData);
  67669. args: ["aCollection"],
  67670. source: "on: aCollection\x0a\x09^ super new suite: aCollection",
  67671. referencedClasses: [],
  67672. //>>excludeEnd("ide");
  67673. pragmas: [],
  67674. messageSends: ["suite:", "new"]
  67675. }, function ($methodClass){ return function (aCollection){
  67676. var self=this,$self=this;
  67677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67678. return $core.withContext(function($ctx1) {
  67679. //>>excludeEnd("ctx");
  67680. return $recv([(
  67681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67682. $ctx1.supercall = true,
  67683. //>>excludeEnd("ctx");
  67684. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
  67685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67686. ,$ctx1.supercall = false
  67687. //>>excludeEnd("ctx");
  67688. ][0])._suite_(aCollection);
  67689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67690. }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection})});
  67691. //>>excludeEnd("ctx");
  67692. }; }),
  67693. $globals.TestSuiteRunner.a$cls);
  67694. $core.addMethod(
  67695. $core.method({
  67696. selector: "isTestPackage",
  67697. protocol: "*SUnit",
  67698. //>>excludeStart("ide", pragmas.excludeIdeData);
  67699. args: [],
  67700. source: "isTestPackage\x0a\x09^ self classes anySatisfy: [ :each | each isTestClass ]",
  67701. referencedClasses: [],
  67702. //>>excludeEnd("ide");
  67703. pragmas: [],
  67704. messageSends: ["anySatisfy:", "classes", "isTestClass"]
  67705. }, function ($methodClass){ return function (){
  67706. var self=this,$self=this;
  67707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67708. return $core.withContext(function($ctx1) {
  67709. //>>excludeEnd("ctx");
  67710. return $recv($self._classes())._anySatisfy_((function(each){
  67711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67712. return $core.withContext(function($ctx2) {
  67713. //>>excludeEnd("ctx");
  67714. return $recv(each)._isTestClass();
  67715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67716. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  67717. //>>excludeEnd("ctx");
  67718. }));
  67719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67720. }, function($ctx1) {$ctx1.fill(self,"isTestPackage",{})});
  67721. //>>excludeEnd("ctx");
  67722. }; }),
  67723. $globals.Package);
  67724. $core.addMethod(
  67725. $core.method({
  67726. selector: "isTestClass",
  67727. protocol: "*SUnit",
  67728. //>>excludeStart("ide", pragmas.excludeIdeData);
  67729. args: [],
  67730. source: "isTestClass\x0a\x09^ false",
  67731. referencedClasses: [],
  67732. //>>excludeEnd("ide");
  67733. pragmas: [],
  67734. messageSends: []
  67735. }, function ($methodClass){ return function (){
  67736. var self=this,$self=this;
  67737. return false;
  67738. }; }),
  67739. $globals.TBehaviorDefaults);
  67740. });
  67741. define('amber/core/Kernel-Tests',["amber/boot", "require", "amber/core/Kernel-Objects", "amber/core/SUnit"], function($boot,requirejs){"use strict";
  67742. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  67743. var $pkg = $core.addPackage("Kernel-Tests");
  67744. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  67745. $core.addClass("AnnouncementSubscriptionTest", $globals.TestCase, "Kernel-Tests");
  67746. $core.addMethod(
  67747. $core.method({
  67748. selector: "testAddExtensionMethod",
  67749. protocol: "tests",
  67750. //>>excludeStart("ide", pragmas.excludeIdeData);
  67751. args: [],
  67752. source: "testAddExtensionMethod\x0a\x09| method dirty |\x0a\x09dirty := self class package isDirty.\x0a\x09self class package beClean.\x0a\x09method := self class compile: 'doNothing' protocol: '**not-a-package'.\x0a\x09self deny: self class package isDirty.\x0a\x09\x0a\x09self class removeCompiledMethod: method.\x0a\x09dirty ifTrue: [ self class package beDirty ]",
  67753. referencedClasses: [],
  67754. //>>excludeEnd("ide");
  67755. pragmas: [],
  67756. messageSends: ["isDirty", "package", "class", "beClean", "compile:protocol:", "deny:", "removeCompiledMethod:", "ifTrue:", "beDirty"]
  67757. }, function ($methodClass){ return function (){
  67758. var self=this,$self=this;
  67759. var method,dirty;
  67760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67761. return $core.withContext(function($ctx1) {
  67762. //>>excludeEnd("ctx");
  67763. dirty=[$recv([$recv([$self._class()
  67764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67765. ,$ctx1.sendIdx["class"]=1
  67766. //>>excludeEnd("ctx");
  67767. ][0])._package()
  67768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67769. ,$ctx1.sendIdx["package"]=1
  67770. //>>excludeEnd("ctx");
  67771. ][0])._isDirty()
  67772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67773. ,$ctx1.sendIdx["isDirty"]=1
  67774. //>>excludeEnd("ctx");
  67775. ][0];
  67776. $recv([$recv([$self._class()
  67777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67778. ,$ctx1.sendIdx["class"]=2
  67779. //>>excludeEnd("ctx");
  67780. ][0])._package()
  67781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67782. ,$ctx1.sendIdx["package"]=2
  67783. //>>excludeEnd("ctx");
  67784. ][0])._beClean();
  67785. method=$recv([$self._class()
  67786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67787. ,$ctx1.sendIdx["class"]=3
  67788. //>>excludeEnd("ctx");
  67789. ][0])._compile_protocol_("doNothing","**not-a-package");
  67790. $self._deny_($recv([$recv([$self._class()
  67791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67792. ,$ctx1.sendIdx["class"]=4
  67793. //>>excludeEnd("ctx");
  67794. ][0])._package()
  67795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67796. ,$ctx1.sendIdx["package"]=3
  67797. //>>excludeEnd("ctx");
  67798. ][0])._isDirty());
  67799. $recv([$self._class()
  67800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67801. ,$ctx1.sendIdx["class"]=5
  67802. //>>excludeEnd("ctx");
  67803. ][0])._removeCompiledMethod_(method);
  67804. if($core.assert(dirty)){
  67805. $recv($recv($self._class())._package())._beDirty();
  67806. }
  67807. return self;
  67808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67809. }, function($ctx1) {$ctx1.fill(self,"testAddExtensionMethod",{method:method,dirty:dirty})});
  67810. //>>excludeEnd("ctx");
  67811. }; }),
  67812. $globals.AnnouncementSubscriptionTest);
  67813. $core.addMethod(
  67814. $core.method({
  67815. selector: "testHandlesAnnouncement",
  67816. protocol: "tests",
  67817. //>>excludeStart("ide", pragmas.excludeIdeData);
  67818. args: [],
  67819. source: "testHandlesAnnouncement\x0a\x09| subscription announcementClass1 announcementClass2 classBuilder |\x0a\x09\x0a\x09classBuilder := ClassBuilder new.\x0a\x09announcementClass1 := classBuilder addSubclassOf: SystemAnnouncement named: 'TestAnnouncement1' slots: #() package: 'Kernel-Tests'.\x0a\x09\x0a\x09subscription := AnnouncementSubscription new announcementClass: SystemAnnouncement.\x0a\x09\x22Test whether the same class triggers the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: SystemAnnouncement new) equals: true.\x0a\x09\x22Test whether a subclass triggers the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: announcementClass1 new) equals: true.\x0a\x09\x22Test whether an unrelated class does not trigger the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: Object new) equals: false.\x0a\x09\x0a\x09classBuilder basicRemoveClass: announcementClass1.",
  67820. referencedClasses: ["ClassBuilder", "SystemAnnouncement", "AnnouncementSubscription", "Object"],
  67821. //>>excludeEnd("ide");
  67822. pragmas: [],
  67823. messageSends: ["new", "addSubclassOf:named:slots:package:", "announcementClass:", "assert:equals:", "handlesAnnouncement:", "basicRemoveClass:"]
  67824. }, function ($methodClass){ return function (){
  67825. var self=this,$self=this;
  67826. var subscription,announcementClass1,announcementClass2,classBuilder;
  67827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67828. return $core.withContext(function($ctx1) {
  67829. //>>excludeEnd("ctx");
  67830. classBuilder=[$recv($globals.ClassBuilder)._new()
  67831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67832. ,$ctx1.sendIdx["new"]=1
  67833. //>>excludeEnd("ctx");
  67834. ][0];
  67835. announcementClass1=$recv(classBuilder)._addSubclassOf_named_slots_package_($globals.SystemAnnouncement,"TestAnnouncement1",[],"Kernel-Tests");
  67836. subscription=$recv([$recv($globals.AnnouncementSubscription)._new()
  67837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67838. ,$ctx1.sendIdx["new"]=2
  67839. //>>excludeEnd("ctx");
  67840. ][0])._announcementClass_($globals.SystemAnnouncement);
  67841. [$self._assert_equals_([$recv(subscription)._handlesAnnouncement_([$recv($globals.SystemAnnouncement)._new()
  67842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67843. ,$ctx1.sendIdx["new"]=3
  67844. //>>excludeEnd("ctx");
  67845. ][0])
  67846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67847. ,$ctx1.sendIdx["handlesAnnouncement:"]=1
  67848. //>>excludeEnd("ctx");
  67849. ][0],true)
  67850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67851. ,$ctx1.sendIdx["assert:equals:"]=1
  67852. //>>excludeEnd("ctx");
  67853. ][0];
  67854. [$self._assert_equals_([$recv(subscription)._handlesAnnouncement_([$recv(announcementClass1)._new()
  67855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67856. ,$ctx1.sendIdx["new"]=4
  67857. //>>excludeEnd("ctx");
  67858. ][0])
  67859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67860. ,$ctx1.sendIdx["handlesAnnouncement:"]=2
  67861. //>>excludeEnd("ctx");
  67862. ][0],true)
  67863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67864. ,$ctx1.sendIdx["assert:equals:"]=2
  67865. //>>excludeEnd("ctx");
  67866. ][0];
  67867. $self._assert_equals_($recv(subscription)._handlesAnnouncement_($recv($globals.Object)._new()),false);
  67868. $recv(classBuilder)._basicRemoveClass_(announcementClass1);
  67869. return self;
  67870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67871. }, function($ctx1) {$ctx1.fill(self,"testHandlesAnnouncement",{subscription:subscription,announcementClass1:announcementClass1,announcementClass2:announcementClass2,classBuilder:classBuilder})});
  67872. //>>excludeEnd("ctx");
  67873. }; }),
  67874. $globals.AnnouncementSubscriptionTest);
  67875. $core.addClass("AnnouncerTest", $globals.TestCase, "Kernel-Tests");
  67876. $core.addMethod(
  67877. $core.method({
  67878. selector: "testOnDo",
  67879. protocol: "tests",
  67880. //>>excludeStart("ide", pragmas.excludeIdeData);
  67881. args: [],
  67882. source: "testOnDo\x0a\x09| counter announcer |\x0a\x09\x0a\x09counter := 0.\x0a\x09announcer := Announcer new.\x0a\x09announcer on: SystemAnnouncement do: [ counter := counter + 1 ].\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 1.\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 2.",
  67883. referencedClasses: ["Announcer", "SystemAnnouncement"],
  67884. //>>excludeEnd("ide");
  67885. pragmas: [],
  67886. messageSends: ["new", "on:do:", "+", "announce:", "assert:equals:"]
  67887. }, function ($methodClass){ return function (){
  67888. var self=this,$self=this;
  67889. var counter,announcer;
  67890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67891. return $core.withContext(function($ctx1) {
  67892. //>>excludeEnd("ctx");
  67893. counter=(0);
  67894. announcer=[$recv($globals.Announcer)._new()
  67895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67896. ,$ctx1.sendIdx["new"]=1
  67897. //>>excludeEnd("ctx");
  67898. ][0];
  67899. $recv(announcer)._on_do_($globals.SystemAnnouncement,(function(){
  67900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67901. return $core.withContext(function($ctx2) {
  67902. //>>excludeEnd("ctx");
  67903. counter=$recv(counter).__plus((1));
  67904. return counter;
  67905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67906. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  67907. //>>excludeEnd("ctx");
  67908. }));
  67909. [$recv(announcer)._announce_([$recv($globals.SystemAnnouncement)._new()
  67910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67911. ,$ctx1.sendIdx["new"]=2
  67912. //>>excludeEnd("ctx");
  67913. ][0])
  67914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67915. ,$ctx1.sendIdx["announce:"]=1
  67916. //>>excludeEnd("ctx");
  67917. ][0];
  67918. [$self._assert_equals_(counter,(1))
  67919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67920. ,$ctx1.sendIdx["assert:equals:"]=1
  67921. //>>excludeEnd("ctx");
  67922. ][0];
  67923. $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new());
  67924. $self._assert_equals_(counter,(2));
  67925. return self;
  67926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67927. }, function($ctx1) {$ctx1.fill(self,"testOnDo",{counter:counter,announcer:announcer})});
  67928. //>>excludeEnd("ctx");
  67929. }; }),
  67930. $globals.AnnouncerTest);
  67931. $core.addMethod(
  67932. $core.method({
  67933. selector: "testOnDoFor",
  67934. protocol: "tests",
  67935. //>>excludeStart("ide", pragmas.excludeIdeData);
  67936. args: [],
  67937. source: "testOnDoFor\x0a\x09| counter announcer |\x0a\x09\x0a\x09counter := 0.\x0a\x09announcer := Announcer new.\x0a\x09announcer on: SystemAnnouncement do: [ counter := counter + 1 ] for: self.\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 1.\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 2.\x0a\x09\x0a\x09announcer unsubscribe: self.\x0a\x09\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 2.",
  67938. referencedClasses: ["Announcer", "SystemAnnouncement"],
  67939. //>>excludeEnd("ide");
  67940. pragmas: [],
  67941. messageSends: ["new", "on:do:for:", "+", "announce:", "assert:equals:", "unsubscribe:"]
  67942. }, function ($methodClass){ return function (){
  67943. var self=this,$self=this;
  67944. var counter,announcer;
  67945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67946. return $core.withContext(function($ctx1) {
  67947. //>>excludeEnd("ctx");
  67948. counter=(0);
  67949. announcer=[$recv($globals.Announcer)._new()
  67950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67951. ,$ctx1.sendIdx["new"]=1
  67952. //>>excludeEnd("ctx");
  67953. ][0];
  67954. $recv(announcer)._on_do_for_($globals.SystemAnnouncement,(function(){
  67955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67956. return $core.withContext(function($ctx2) {
  67957. //>>excludeEnd("ctx");
  67958. counter=$recv(counter).__plus((1));
  67959. return counter;
  67960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67961. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  67962. //>>excludeEnd("ctx");
  67963. }),self);
  67964. [$recv(announcer)._announce_([$recv($globals.SystemAnnouncement)._new()
  67965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67966. ,$ctx1.sendIdx["new"]=2
  67967. //>>excludeEnd("ctx");
  67968. ][0])
  67969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67970. ,$ctx1.sendIdx["announce:"]=1
  67971. //>>excludeEnd("ctx");
  67972. ][0];
  67973. [$self._assert_equals_(counter,(1))
  67974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67975. ,$ctx1.sendIdx["assert:equals:"]=1
  67976. //>>excludeEnd("ctx");
  67977. ][0];
  67978. [$recv(announcer)._announce_([$recv($globals.SystemAnnouncement)._new()
  67979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67980. ,$ctx1.sendIdx["new"]=3
  67981. //>>excludeEnd("ctx");
  67982. ][0])
  67983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67984. ,$ctx1.sendIdx["announce:"]=2
  67985. //>>excludeEnd("ctx");
  67986. ][0];
  67987. [$self._assert_equals_(counter,(2))
  67988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67989. ,$ctx1.sendIdx["assert:equals:"]=2
  67990. //>>excludeEnd("ctx");
  67991. ][0];
  67992. $recv(announcer)._unsubscribe_(self);
  67993. $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new());
  67994. $self._assert_equals_(counter,(2));
  67995. return self;
  67996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67997. }, function($ctx1) {$ctx1.fill(self,"testOnDoFor",{counter:counter,announcer:announcer})});
  67998. //>>excludeEnd("ctx");
  67999. }; }),
  68000. $globals.AnnouncerTest);
  68001. $core.addMethod(
  68002. $core.method({
  68003. selector: "testOnDoOnce",
  68004. protocol: "tests",
  68005. //>>excludeStart("ide", pragmas.excludeIdeData);
  68006. args: [],
  68007. source: "testOnDoOnce\x0a\x09| counter announcer |\x0a\x09\x0a\x09counter := 0.\x0a\x09announcer := Announcer new.\x0a\x09announcer on: SystemAnnouncement doOnce: [ counter := counter + 1 ].\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 1.\x0a\x0a\x09announcer announce: (SystemAnnouncement new).\x0a\x09self assert: counter equals: 1.",
  68008. referencedClasses: ["Announcer", "SystemAnnouncement"],
  68009. //>>excludeEnd("ide");
  68010. pragmas: [],
  68011. messageSends: ["new", "on:doOnce:", "+", "announce:", "assert:equals:"]
  68012. }, function ($methodClass){ return function (){
  68013. var self=this,$self=this;
  68014. var counter,announcer;
  68015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68016. return $core.withContext(function($ctx1) {
  68017. //>>excludeEnd("ctx");
  68018. counter=(0);
  68019. announcer=[$recv($globals.Announcer)._new()
  68020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68021. ,$ctx1.sendIdx["new"]=1
  68022. //>>excludeEnd("ctx");
  68023. ][0];
  68024. $recv(announcer)._on_doOnce_($globals.SystemAnnouncement,(function(){
  68025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68026. return $core.withContext(function($ctx2) {
  68027. //>>excludeEnd("ctx");
  68028. counter=$recv(counter).__plus((1));
  68029. return counter;
  68030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68031. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68032. //>>excludeEnd("ctx");
  68033. }));
  68034. [$recv(announcer)._announce_([$recv($globals.SystemAnnouncement)._new()
  68035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68036. ,$ctx1.sendIdx["new"]=2
  68037. //>>excludeEnd("ctx");
  68038. ][0])
  68039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68040. ,$ctx1.sendIdx["announce:"]=1
  68041. //>>excludeEnd("ctx");
  68042. ][0];
  68043. [$self._assert_equals_(counter,(1))
  68044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68045. ,$ctx1.sendIdx["assert:equals:"]=1
  68046. //>>excludeEnd("ctx");
  68047. ][0];
  68048. $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new());
  68049. $self._assert_equals_(counter,(1));
  68050. return self;
  68051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68052. }, function($ctx1) {$ctx1.fill(self,"testOnDoOnce",{counter:counter,announcer:announcer})});
  68053. //>>excludeEnd("ctx");
  68054. }; }),
  68055. $globals.AnnouncerTest);
  68056. $core.addClass("BlockClosureTest", $globals.TestCase, "Kernel-Tests");
  68057. $core.addMethod(
  68058. $core.method({
  68059. selector: "localReturnOnDoCatch",
  68060. protocol: "fixture",
  68061. //>>excludeStart("ide", pragmas.excludeIdeData);
  68062. args: [],
  68063. source: "localReturnOnDoCatch\x0a [ ^ 2 ] on: Error do: [].\x0a ^ 3",
  68064. referencedClasses: ["Error"],
  68065. //>>excludeEnd("ide");
  68066. pragmas: [],
  68067. messageSends: ["on:do:"]
  68068. }, function ($methodClass){ return function (){
  68069. var self=this,$self=this;
  68070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68071. return $core.withContext(function($ctx1) {
  68072. //>>excludeEnd("ctx");
  68073. var $early={};
  68074. try {
  68075. $recv((function(){
  68076. throw $early=[(2)];
  68077. }))._on_do_($globals.Error,(function(){
  68078. }));
  68079. return (3);
  68080. }
  68081. catch(e) {if(e===$early)return e[0]; throw e}
  68082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68083. }, function($ctx1) {$ctx1.fill(self,"localReturnOnDoCatch",{})});
  68084. //>>excludeEnd("ctx");
  68085. }; }),
  68086. $globals.BlockClosureTest);
  68087. $core.addMethod(
  68088. $core.method({
  68089. selector: "localReturnOnDoMiss",
  68090. protocol: "fixture",
  68091. //>>excludeStart("ide", pragmas.excludeIdeData);
  68092. args: [],
  68093. source: "localReturnOnDoMiss\x0a [ ^ 2 ] on: Class do: [].\x0a ^ 3",
  68094. referencedClasses: ["Class"],
  68095. //>>excludeEnd("ide");
  68096. pragmas: [],
  68097. messageSends: ["on:do:"]
  68098. }, function ($methodClass){ return function (){
  68099. var self=this,$self=this;
  68100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68101. return $core.withContext(function($ctx1) {
  68102. //>>excludeEnd("ctx");
  68103. var $early={};
  68104. try {
  68105. $recv((function(){
  68106. throw $early=[(2)];
  68107. }))._on_do_($globals.Class,(function(){
  68108. }));
  68109. return (3);
  68110. }
  68111. catch(e) {if(e===$early)return e[0]; throw e}
  68112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68113. }, function($ctx1) {$ctx1.fill(self,"localReturnOnDoMiss",{})});
  68114. //>>excludeEnd("ctx");
  68115. }; }),
  68116. $globals.BlockClosureTest);
  68117. $core.addMethod(
  68118. $core.method({
  68119. selector: "testCanClearInterval",
  68120. protocol: "tests",
  68121. //>>excludeStart("ide", pragmas.excludeIdeData);
  68122. args: [],
  68123. source: "testCanClearInterval\x0a\x09self shouldnt: [ ([ Error new signal ] valueWithInterval: 0) clearInterval ] raise: Error",
  68124. referencedClasses: ["Error"],
  68125. //>>excludeEnd("ide");
  68126. pragmas: [],
  68127. messageSends: ["shouldnt:raise:", "clearInterval", "valueWithInterval:", "signal", "new"]
  68128. }, function ($methodClass){ return function (){
  68129. var self=this,$self=this;
  68130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68131. return $core.withContext(function($ctx1) {
  68132. //>>excludeEnd("ctx");
  68133. $self._shouldnt_raise_((function(){
  68134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68135. return $core.withContext(function($ctx2) {
  68136. //>>excludeEnd("ctx");
  68137. return $recv($recv((function(){
  68138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68139. return $core.withContext(function($ctx3) {
  68140. //>>excludeEnd("ctx");
  68141. return $recv($recv($globals.Error)._new())._signal();
  68142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68143. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  68144. //>>excludeEnd("ctx");
  68145. }))._valueWithInterval_((0)))._clearInterval();
  68146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68147. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68148. //>>excludeEnd("ctx");
  68149. }),$globals.Error);
  68150. return self;
  68151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68152. }, function($ctx1) {$ctx1.fill(self,"testCanClearInterval",{})});
  68153. //>>excludeEnd("ctx");
  68154. }; }),
  68155. $globals.BlockClosureTest);
  68156. $core.addMethod(
  68157. $core.method({
  68158. selector: "testCanClearTimeout",
  68159. protocol: "tests",
  68160. //>>excludeStart("ide", pragmas.excludeIdeData);
  68161. args: [],
  68162. source: "testCanClearTimeout\x0a\x09self shouldnt: [ ([ Error new signal ] valueWithTimeout: 0) clearTimeout ] raise: Error",
  68163. referencedClasses: ["Error"],
  68164. //>>excludeEnd("ide");
  68165. pragmas: [],
  68166. messageSends: ["shouldnt:raise:", "clearTimeout", "valueWithTimeout:", "signal", "new"]
  68167. }, function ($methodClass){ return function (){
  68168. var self=this,$self=this;
  68169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68170. return $core.withContext(function($ctx1) {
  68171. //>>excludeEnd("ctx");
  68172. $self._shouldnt_raise_((function(){
  68173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68174. return $core.withContext(function($ctx2) {
  68175. //>>excludeEnd("ctx");
  68176. return $recv($recv((function(){
  68177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68178. return $core.withContext(function($ctx3) {
  68179. //>>excludeEnd("ctx");
  68180. return $recv($recv($globals.Error)._new())._signal();
  68181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68182. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  68183. //>>excludeEnd("ctx");
  68184. }))._valueWithTimeout_((0)))._clearTimeout();
  68185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68186. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68187. //>>excludeEnd("ctx");
  68188. }),$globals.Error);
  68189. return self;
  68190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68191. }, function($ctx1) {$ctx1.fill(self,"testCanClearTimeout",{})});
  68192. //>>excludeEnd("ctx");
  68193. }; }),
  68194. $globals.BlockClosureTest);
  68195. $core.addMethod(
  68196. $core.method({
  68197. selector: "testCompiledSource",
  68198. protocol: "tests",
  68199. //>>excludeStart("ide", pragmas.excludeIdeData);
  68200. args: [],
  68201. source: "testCompiledSource\x0a\x09self assert: ([ 1+1 ] compiledSource includesSubString: 'function')",
  68202. referencedClasses: [],
  68203. //>>excludeEnd("ide");
  68204. pragmas: [],
  68205. messageSends: ["assert:", "includesSubString:", "compiledSource", "+"]
  68206. }, function ($methodClass){ return function (){
  68207. var self=this,$self=this;
  68208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68209. return $core.withContext(function($ctx1) {
  68210. //>>excludeEnd("ctx");
  68211. $self._assert_($recv($recv((function(){
  68212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68213. return $core.withContext(function($ctx2) {
  68214. //>>excludeEnd("ctx");
  68215. return (1).__plus((1));
  68216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68217. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68218. //>>excludeEnd("ctx");
  68219. }))._compiledSource())._includesSubString_("function"));
  68220. return self;
  68221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68222. }, function($ctx1) {$ctx1.fill(self,"testCompiledSource",{})});
  68223. //>>excludeEnd("ctx");
  68224. }; }),
  68225. $globals.BlockClosureTest);
  68226. $core.addMethod(
  68227. $core.method({
  68228. selector: "testCurrySelf",
  68229. protocol: "tests",
  68230. //>>excludeStart("ide", pragmas.excludeIdeData);
  68231. args: [],
  68232. source: "testCurrySelf\x0a\x09| curriedMethod array |\x0a\x09curriedMethod := [ :selfarg :x | selfarg at: x ] currySelf asCompiledMethod: 'foo:'.\x0a\x09curriedMethod protocol: '**test helper'.\x0a\x09array := #(3 1 4).\x0a\x09Array addCompiledMethod: curriedMethod.\x0a\x09[ self assert: (array foo: 2) equals: 1 ]\x0a\x09ensure: [ Array removeCompiledMethod: curriedMethod ]",
  68233. referencedClasses: ["Array"],
  68234. //>>excludeEnd("ide");
  68235. pragmas: [],
  68236. messageSends: ["asCompiledMethod:", "currySelf", "at:", "protocol:", "addCompiledMethod:", "ensure:", "assert:equals:", "foo:", "removeCompiledMethod:"]
  68237. }, function ($methodClass){ return function (){
  68238. var self=this,$self=this;
  68239. var curriedMethod,array;
  68240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68241. return $core.withContext(function($ctx1) {
  68242. //>>excludeEnd("ctx");
  68243. curriedMethod=$recv($recv((function(selfarg,x){
  68244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68245. return $core.withContext(function($ctx2) {
  68246. //>>excludeEnd("ctx");
  68247. return $recv(selfarg)._at_(x);
  68248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68249. }, function($ctx2) {$ctx2.fillBlock({selfarg:selfarg,x:x},$ctx1,1)});
  68250. //>>excludeEnd("ctx");
  68251. }))._currySelf())._asCompiledMethod_("foo:");
  68252. $recv(curriedMethod)._protocol_("**test helper");
  68253. array=[(3), (1), (4)];
  68254. $recv($globals.Array)._addCompiledMethod_(curriedMethod);
  68255. $recv((function(){
  68256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68257. return $core.withContext(function($ctx2) {
  68258. //>>excludeEnd("ctx");
  68259. return $self._assert_equals_($recv(array)._foo_((2)),(1));
  68260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68261. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  68262. //>>excludeEnd("ctx");
  68263. }))._ensure_((function(){
  68264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68265. return $core.withContext(function($ctx2) {
  68266. //>>excludeEnd("ctx");
  68267. return $recv($globals.Array)._removeCompiledMethod_(curriedMethod);
  68268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68269. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  68270. //>>excludeEnd("ctx");
  68271. }));
  68272. return self;
  68273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68274. }, function($ctx1) {$ctx1.fill(self,"testCurrySelf",{curriedMethod:curriedMethod,array:array})});
  68275. //>>excludeEnd("ctx");
  68276. }; }),
  68277. $globals.BlockClosureTest);
  68278. $core.addMethod(
  68279. $core.method({
  68280. selector: "testEnsure",
  68281. protocol: "tests",
  68282. //>>excludeStart("ide", pragmas.excludeIdeData);
  68283. args: [],
  68284. source: "testEnsure\x0a\x09self assert: ([ 3 ] ensure: [ 4 ]) equals: 3",
  68285. referencedClasses: [],
  68286. //>>excludeEnd("ide");
  68287. pragmas: [],
  68288. messageSends: ["assert:equals:", "ensure:"]
  68289. }, function ($methodClass){ return function (){
  68290. var self=this,$self=this;
  68291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68292. return $core.withContext(function($ctx1) {
  68293. //>>excludeEnd("ctx");
  68294. $self._assert_equals_($recv((function(){
  68295. return (3);
  68296. }))._ensure_((function(){
  68297. return (4);
  68298. })),(3));
  68299. return self;
  68300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68301. }, function($ctx1) {$ctx1.fill(self,"testEnsure",{})});
  68302. //>>excludeEnd("ctx");
  68303. }; }),
  68304. $globals.BlockClosureTest);
  68305. $core.addMethod(
  68306. $core.method({
  68307. selector: "testEnsureRaises",
  68308. protocol: "tests",
  68309. //>>excludeStart("ide", pragmas.excludeIdeData);
  68310. args: [],
  68311. source: "testEnsureRaises\x0a\x09self should: [ [Error new signal ] ensure: [ true ]] raise: Error",
  68312. referencedClasses: ["Error"],
  68313. //>>excludeEnd("ide");
  68314. pragmas: [],
  68315. messageSends: ["should:raise:", "ensure:", "signal", "new"]
  68316. }, function ($methodClass){ return function (){
  68317. var self=this,$self=this;
  68318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68319. return $core.withContext(function($ctx1) {
  68320. //>>excludeEnd("ctx");
  68321. $self._should_raise_((function(){
  68322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68323. return $core.withContext(function($ctx2) {
  68324. //>>excludeEnd("ctx");
  68325. return $recv((function(){
  68326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68327. return $core.withContext(function($ctx3) {
  68328. //>>excludeEnd("ctx");
  68329. return $recv($recv($globals.Error)._new())._signal();
  68330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68331. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  68332. //>>excludeEnd("ctx");
  68333. }))._ensure_((function(){
  68334. return true;
  68335. }));
  68336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68337. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68338. //>>excludeEnd("ctx");
  68339. }),$globals.Error);
  68340. return self;
  68341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68342. }, function($ctx1) {$ctx1.fill(self,"testEnsureRaises",{})});
  68343. //>>excludeEnd("ctx");
  68344. }; }),
  68345. $globals.BlockClosureTest);
  68346. $core.addMethod(
  68347. $core.method({
  68348. selector: "testExceptionSemantics",
  68349. protocol: "tests",
  68350. //>>excludeStart("ide", pragmas.excludeIdeData);
  68351. args: [],
  68352. source: "testExceptionSemantics\x0a\x09\x22See https://lolg.it/amber/amber/issues/314\x22\x0a\x09self timeout: 100.\x0a\x09\x0a\x09(self async: [\x0a\x09\x09[\x0a\x09\x09\x09self assert: true.\x0a\x09\x09\x09Error signal.\x0a\x09\x09\x09\x22The following should *not* be run\x22\x0a\x09\x09\x09self deny: true.\x0a\x09\x09\x09self finished.\x0a\x09\x09] on: Error do: [ :ex | self finished ]\x0a\x09]) valueWithTimeout: 0",
  68353. referencedClasses: ["Error"],
  68354. //>>excludeEnd("ide");
  68355. pragmas: [],
  68356. messageSends: ["timeout:", "valueWithTimeout:", "async:", "on:do:", "assert:", "signal", "deny:", "finished"]
  68357. }, function ($methodClass){ return function (){
  68358. var self=this,$self=this;
  68359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68360. return $core.withContext(function($ctx1) {
  68361. //>>excludeEnd("ctx");
  68362. $self._timeout_((100));
  68363. $recv($self._async_((function(){
  68364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68365. return $core.withContext(function($ctx2) {
  68366. //>>excludeEnd("ctx");
  68367. return $recv((function(){
  68368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68369. return $core.withContext(function($ctx3) {
  68370. //>>excludeEnd("ctx");
  68371. $self._assert_(true);
  68372. $recv($globals.Error)._signal();
  68373. $self._deny_(true);
  68374. return [$self._finished()
  68375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68376. ,$ctx3.sendIdx["finished"]=1
  68377. //>>excludeEnd("ctx");
  68378. ][0];
  68379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68380. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  68381. //>>excludeEnd("ctx");
  68382. }))._on_do_($globals.Error,(function(ex){
  68383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68384. return $core.withContext(function($ctx3) {
  68385. //>>excludeEnd("ctx");
  68386. return $self._finished();
  68387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68388. }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)});
  68389. //>>excludeEnd("ctx");
  68390. }));
  68391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68392. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68393. //>>excludeEnd("ctx");
  68394. })))._valueWithTimeout_((0));
  68395. return self;
  68396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68397. }, function($ctx1) {$ctx1.fill(self,"testExceptionSemantics",{})});
  68398. //>>excludeEnd("ctx");
  68399. }; }),
  68400. $globals.BlockClosureTest);
  68401. $core.addMethod(
  68402. $core.method({
  68403. selector: "testLocalReturnOnDoCatch",
  68404. protocol: "tests",
  68405. //>>excludeStart("ide", pragmas.excludeIdeData);
  68406. args: [],
  68407. source: "testLocalReturnOnDoCatch\x0a\x09self assert: self localReturnOnDoCatch equals: 2",
  68408. referencedClasses: [],
  68409. //>>excludeEnd("ide");
  68410. pragmas: [],
  68411. messageSends: ["assert:equals:", "localReturnOnDoCatch"]
  68412. }, function ($methodClass){ return function (){
  68413. var self=this,$self=this;
  68414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68415. return $core.withContext(function($ctx1) {
  68416. //>>excludeEnd("ctx");
  68417. $self._assert_equals_($self._localReturnOnDoCatch(),(2));
  68418. return self;
  68419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68420. }, function($ctx1) {$ctx1.fill(self,"testLocalReturnOnDoCatch",{})});
  68421. //>>excludeEnd("ctx");
  68422. }; }),
  68423. $globals.BlockClosureTest);
  68424. $core.addMethod(
  68425. $core.method({
  68426. selector: "testLocalReturnOnDoMiss",
  68427. protocol: "tests",
  68428. //>>excludeStart("ide", pragmas.excludeIdeData);
  68429. args: [],
  68430. source: "testLocalReturnOnDoMiss\x0a\x09self assert: self localReturnOnDoMiss equals: 2",
  68431. referencedClasses: [],
  68432. //>>excludeEnd("ide");
  68433. pragmas: [],
  68434. messageSends: ["assert:equals:", "localReturnOnDoMiss"]
  68435. }, function ($methodClass){ return function (){
  68436. var self=this,$self=this;
  68437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68438. return $core.withContext(function($ctx1) {
  68439. //>>excludeEnd("ctx");
  68440. $self._assert_equals_($self._localReturnOnDoMiss(),(2));
  68441. return self;
  68442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68443. }, function($ctx1) {$ctx1.fill(self,"testLocalReturnOnDoMiss",{})});
  68444. //>>excludeEnd("ctx");
  68445. }; }),
  68446. $globals.BlockClosureTest);
  68447. $core.addMethod(
  68448. $core.method({
  68449. selector: "testNewWithValues",
  68450. protocol: "tests",
  68451. //>>excludeStart("ide", pragmas.excludeIdeData);
  68452. args: [],
  68453. source: "testNewWithValues\x0a<inlineJS: '\x0a\x09function TestConstructor(arg1, arg2, arg3) {}\x0a\x09TestConstructor.prototype.name = \x22theTestPrototype\x22;\x0a\x0a\x09var wrappedConstructor = $recv(TestConstructor);\x0a\x09var result = wrappedConstructor._newWithValues_([1, 2, 3]);\x0a\x09$self._assert_(result instanceof TestConstructor);\x0a\x09$self._assert_equals_(result.name, \x22theTestPrototype\x22);\x0a\x0a\x09/* newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made. */\x0a\x09$self._should_raise_(function () {wrappedConstructor._newWithValues_(\x22single argument\x22);}, $globals.Error);\x0a'>",
  68454. referencedClasses: [],
  68455. //>>excludeEnd("ide");
  68456. pragmas: [["inlineJS:", ["\x0a\x09function TestConstructor(arg1, arg2, arg3) {}\x0a\x09TestConstructor.prototype.name = \x22theTestPrototype\x22;\x0a\x0a\x09var wrappedConstructor = $recv(TestConstructor);\x0a\x09var result = wrappedConstructor._newWithValues_([1, 2, 3]);\x0a\x09$self._assert_(result instanceof TestConstructor);\x0a\x09$self._assert_equals_(result.name, \x22theTestPrototype\x22);\x0a\x0a\x09/* newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made. */\x0a\x09$self._should_raise_(function () {wrappedConstructor._newWithValues_(\x22single argument\x22);}, $globals.Error);"]]],
  68457. messageSends: []
  68458. }, function ($methodClass){ return function (){
  68459. var self=this,$self=this;
  68460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68461. return $core.withContext(function($ctx1) {
  68462. //>>excludeEnd("ctx");
  68463. function TestConstructor(arg1, arg2, arg3) {}
  68464. TestConstructor.prototype.name = "theTestPrototype";
  68465. var wrappedConstructor = $recv(TestConstructor);
  68466. var result = wrappedConstructor._newWithValues_([1, 2, 3]);
  68467. $self._assert_(result instanceof TestConstructor);
  68468. $self._assert_equals_(result.name, "theTestPrototype");
  68469. /* newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made. */
  68470. $self._should_raise_(function () {wrappedConstructor._newWithValues_("single argument");}, $globals.Error);;
  68471. return self;
  68472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68473. }, function($ctx1) {$ctx1.fill(self,"testNewWithValues",{})});
  68474. //>>excludeEnd("ctx");
  68475. }; }),
  68476. $globals.BlockClosureTest);
  68477. $core.addMethod(
  68478. $core.method({
  68479. selector: "testNumArgs",
  68480. protocol: "tests",
  68481. //>>excludeStart("ide", pragmas.excludeIdeData);
  68482. args: [],
  68483. source: "testNumArgs\x0a\x09self assert: [] numArgs equals: 0.\x0a\x09self assert: [ :a :b | ] numArgs equals: 2",
  68484. referencedClasses: [],
  68485. //>>excludeEnd("ide");
  68486. pragmas: [],
  68487. messageSends: ["assert:equals:", "numArgs"]
  68488. }, function ($methodClass){ return function (){
  68489. var self=this,$self=this;
  68490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68491. return $core.withContext(function($ctx1) {
  68492. //>>excludeEnd("ctx");
  68493. [$self._assert_equals_([$recv((function(){
  68494. }))._numArgs()
  68495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68496. ,$ctx1.sendIdx["numArgs"]=1
  68497. //>>excludeEnd("ctx");
  68498. ][0],(0))
  68499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68500. ,$ctx1.sendIdx["assert:equals:"]=1
  68501. //>>excludeEnd("ctx");
  68502. ][0];
  68503. $self._assert_equals_($recv((function(a,b){
  68504. }))._numArgs(),(2));
  68505. return self;
  68506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68507. }, function($ctx1) {$ctx1.fill(self,"testNumArgs",{})});
  68508. //>>excludeEnd("ctx");
  68509. }; }),
  68510. $globals.BlockClosureTest);
  68511. $core.addMethod(
  68512. $core.method({
  68513. selector: "testOnDo",
  68514. protocol: "tests",
  68515. //>>excludeStart("ide", pragmas.excludeIdeData);
  68516. args: [],
  68517. source: "testOnDo\x0a\x09self assert: ([ Error new signal ] on: Error do: [ :ex | true ])",
  68518. referencedClasses: ["Error"],
  68519. //>>excludeEnd("ide");
  68520. pragmas: [],
  68521. messageSends: ["assert:", "on:do:", "signal", "new"]
  68522. }, function ($methodClass){ return function (){
  68523. var self=this,$self=this;
  68524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68525. return $core.withContext(function($ctx1) {
  68526. //>>excludeEnd("ctx");
  68527. $self._assert_($recv((function(){
  68528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68529. return $core.withContext(function($ctx2) {
  68530. //>>excludeEnd("ctx");
  68531. return $recv($recv($globals.Error)._new())._signal();
  68532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68533. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68534. //>>excludeEnd("ctx");
  68535. }))._on_do_($globals.Error,(function(ex){
  68536. return true;
  68537. })));
  68538. return self;
  68539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68540. }, function($ctx1) {$ctx1.fill(self,"testOnDo",{})});
  68541. //>>excludeEnd("ctx");
  68542. }; }),
  68543. $globals.BlockClosureTest);
  68544. $core.addMethod(
  68545. $core.method({
  68546. selector: "testValue",
  68547. protocol: "tests",
  68548. //>>excludeStart("ide", pragmas.excludeIdeData);
  68549. args: [],
  68550. source: "testValue\x0a\x09self assert: ([ 1+1 ] value) equals: 2.\x0a\x09self assert: ([ :x | x +1 ] value: 2) equals: 3.\x0a\x09self assert: ([ :x :y | x*y ] value: 2 value: 4) equals: 8.\x0a\x0a\x09\x22Arguments are optional in Amber. This isn't ANSI compliant.\x22\x0a\x0a\x09self assert: ([ :a :b :c | 1 ] value) equals: 1",
  68551. referencedClasses: [],
  68552. //>>excludeEnd("ide");
  68553. pragmas: [],
  68554. messageSends: ["assert:equals:", "value", "+", "value:", "value:value:", "*"]
  68555. }, function ($methodClass){ return function (){
  68556. var self=this,$self=this;
  68557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68558. return $core.withContext(function($ctx1) {
  68559. //>>excludeEnd("ctx");
  68560. [$self._assert_equals_([$recv((function(){
  68561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68562. return $core.withContext(function($ctx2) {
  68563. //>>excludeEnd("ctx");
  68564. return [(1).__plus((1))
  68565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68566. ,$ctx2.sendIdx["+"]=1
  68567. //>>excludeEnd("ctx");
  68568. ][0];
  68569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68570. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68571. //>>excludeEnd("ctx");
  68572. }))._value()
  68573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68574. ,$ctx1.sendIdx["value"]=1
  68575. //>>excludeEnd("ctx");
  68576. ][0],(2))
  68577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68578. ,$ctx1.sendIdx["assert:equals:"]=1
  68579. //>>excludeEnd("ctx");
  68580. ][0];
  68581. [$self._assert_equals_($recv((function(x){
  68582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68583. return $core.withContext(function($ctx2) {
  68584. //>>excludeEnd("ctx");
  68585. return $recv(x).__plus((1));
  68586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68587. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
  68588. //>>excludeEnd("ctx");
  68589. }))._value_((2)),(3))
  68590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68591. ,$ctx1.sendIdx["assert:equals:"]=2
  68592. //>>excludeEnd("ctx");
  68593. ][0];
  68594. [$self._assert_equals_($recv((function(x,y){
  68595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68596. return $core.withContext(function($ctx2) {
  68597. //>>excludeEnd("ctx");
  68598. return $recv(x).__star(y);
  68599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68600. }, function($ctx2) {$ctx2.fillBlock({x:x,y:y},$ctx1,3)});
  68601. //>>excludeEnd("ctx");
  68602. }))._value_value_((2),(4)),(8))
  68603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68604. ,$ctx1.sendIdx["assert:equals:"]=3
  68605. //>>excludeEnd("ctx");
  68606. ][0];
  68607. $self._assert_equals_($recv((function(a,b,c){
  68608. return (1);
  68609. }))._value(),(1));
  68610. return self;
  68611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68612. }, function($ctx1) {$ctx1.fill(self,"testValue",{})});
  68613. //>>excludeEnd("ctx");
  68614. }; }),
  68615. $globals.BlockClosureTest);
  68616. $core.addMethod(
  68617. $core.method({
  68618. selector: "testValueWithPossibleArguments",
  68619. protocol: "tests",
  68620. //>>excludeStart("ide", pragmas.excludeIdeData);
  68621. args: [],
  68622. source: "testValueWithPossibleArguments\x0a\x09self assert: ([ 1 ] valueWithPossibleArguments: #(3 4)) equals: 1.\x0a\x09self assert: ([ :a | a + 4 ] valueWithPossibleArguments: #(3 4)) equals: 7.\x0a\x09self assert: ([ :a :b | a + b ] valueWithPossibleArguments: #(3 4 5)) equals: 7.",
  68623. referencedClasses: [],
  68624. //>>excludeEnd("ide");
  68625. pragmas: [],
  68626. messageSends: ["assert:equals:", "valueWithPossibleArguments:", "+"]
  68627. }, function ($methodClass){ return function (){
  68628. var self=this,$self=this;
  68629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68630. return $core.withContext(function($ctx1) {
  68631. //>>excludeEnd("ctx");
  68632. [$self._assert_equals_([$recv((function(){
  68633. return (1);
  68634. }))._valueWithPossibleArguments_([(3), (4)])
  68635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68636. ,$ctx1.sendIdx["valueWithPossibleArguments:"]=1
  68637. //>>excludeEnd("ctx");
  68638. ][0],(1))
  68639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68640. ,$ctx1.sendIdx["assert:equals:"]=1
  68641. //>>excludeEnd("ctx");
  68642. ][0];
  68643. [$self._assert_equals_([$recv((function(a){
  68644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68645. return $core.withContext(function($ctx2) {
  68646. //>>excludeEnd("ctx");
  68647. return [$recv(a).__plus((4))
  68648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68649. ,$ctx2.sendIdx["+"]=1
  68650. //>>excludeEnd("ctx");
  68651. ][0];
  68652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68653. }, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)});
  68654. //>>excludeEnd("ctx");
  68655. }))._valueWithPossibleArguments_([(3), (4)])
  68656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68657. ,$ctx1.sendIdx["valueWithPossibleArguments:"]=2
  68658. //>>excludeEnd("ctx");
  68659. ][0],(7))
  68660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68661. ,$ctx1.sendIdx["assert:equals:"]=2
  68662. //>>excludeEnd("ctx");
  68663. ][0];
  68664. $self._assert_equals_($recv((function(a,b){
  68665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68666. return $core.withContext(function($ctx2) {
  68667. //>>excludeEnd("ctx");
  68668. return $recv(a).__plus(b);
  68669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68670. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)});
  68671. //>>excludeEnd("ctx");
  68672. }))._valueWithPossibleArguments_([(3), (4), (5)]),(7));
  68673. return self;
  68674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68675. }, function($ctx1) {$ctx1.fill(self,"testValueWithPossibleArguments",{})});
  68676. //>>excludeEnd("ctx");
  68677. }; }),
  68678. $globals.BlockClosureTest);
  68679. $core.addMethod(
  68680. $core.method({
  68681. selector: "testWhileFalse",
  68682. protocol: "tests",
  68683. //>>excludeStart("ide", pragmas.excludeIdeData);
  68684. args: [],
  68685. source: "testWhileFalse\x0a\x09| i |\x0a\x09i := 0.\x0a\x09[ i > 5 ] whileFalse: [ i := i + 1 ].\x0a\x09self assert: i equals: 6.\x0a\x0a\x09i := 0.\x0a\x09[ i := i + 1. i > 5 ] whileFalse.\x0a\x09self assert: i equals: 6",
  68686. referencedClasses: [],
  68687. //>>excludeEnd("ide");
  68688. pragmas: [],
  68689. messageSends: ["whileFalse:", ">", "+", "assert:equals:", "whileFalse"]
  68690. }, function ($methodClass){ return function (){
  68691. var self=this,$self=this;
  68692. var i;
  68693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68694. return $core.withContext(function($ctx1) {
  68695. //>>excludeEnd("ctx");
  68696. i=(0);
  68697. $recv((function(){
  68698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68699. return $core.withContext(function($ctx2) {
  68700. //>>excludeEnd("ctx");
  68701. return [$recv(i).__gt((5))
  68702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68703. ,$ctx2.sendIdx[">"]=1
  68704. //>>excludeEnd("ctx");
  68705. ][0];
  68706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68707. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68708. //>>excludeEnd("ctx");
  68709. }))._whileFalse_((function(){
  68710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68711. return $core.withContext(function($ctx2) {
  68712. //>>excludeEnd("ctx");
  68713. i=[$recv(i).__plus((1))
  68714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68715. ,$ctx2.sendIdx["+"]=1
  68716. //>>excludeEnd("ctx");
  68717. ][0];
  68718. return i;
  68719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68720. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  68721. //>>excludeEnd("ctx");
  68722. }));
  68723. [$self._assert_equals_(i,(6))
  68724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68725. ,$ctx1.sendIdx["assert:equals:"]=1
  68726. //>>excludeEnd("ctx");
  68727. ][0];
  68728. i=(0);
  68729. $recv((function(){
  68730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68731. return $core.withContext(function($ctx2) {
  68732. //>>excludeEnd("ctx");
  68733. i=$recv(i).__plus((1));
  68734. return $recv(i).__gt((5));
  68735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68736. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  68737. //>>excludeEnd("ctx");
  68738. }))._whileFalse();
  68739. $self._assert_equals_(i,(6));
  68740. return self;
  68741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68742. }, function($ctx1) {$ctx1.fill(self,"testWhileFalse",{i:i})});
  68743. //>>excludeEnd("ctx");
  68744. }; }),
  68745. $globals.BlockClosureTest);
  68746. $core.addMethod(
  68747. $core.method({
  68748. selector: "testWhileTrue",
  68749. protocol: "tests",
  68750. //>>excludeStart("ide", pragmas.excludeIdeData);
  68751. args: [],
  68752. source: "testWhileTrue\x0a\x09| i |\x0a\x09i := 0.\x0a\x09[ i < 5 ] whileTrue: [ i := i + 1 ].\x0a\x09self assert: i equals: 5.\x0a\x0a\x09i := 0.\x0a\x09[ i := i + 1. i < 5 ] whileTrue.\x0a\x09self assert: i equals: 5",
  68753. referencedClasses: [],
  68754. //>>excludeEnd("ide");
  68755. pragmas: [],
  68756. messageSends: ["whileTrue:", "<", "+", "assert:equals:", "whileTrue"]
  68757. }, function ($methodClass){ return function (){
  68758. var self=this,$self=this;
  68759. var i;
  68760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68761. return $core.withContext(function($ctx1) {
  68762. //>>excludeEnd("ctx");
  68763. i=(0);
  68764. $recv((function(){
  68765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68766. return $core.withContext(function($ctx2) {
  68767. //>>excludeEnd("ctx");
  68768. return [$recv(i).__lt((5))
  68769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68770. ,$ctx2.sendIdx["<"]=1
  68771. //>>excludeEnd("ctx");
  68772. ][0];
  68773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68774. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68775. //>>excludeEnd("ctx");
  68776. }))._whileTrue_((function(){
  68777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68778. return $core.withContext(function($ctx2) {
  68779. //>>excludeEnd("ctx");
  68780. i=[$recv(i).__plus((1))
  68781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68782. ,$ctx2.sendIdx["+"]=1
  68783. //>>excludeEnd("ctx");
  68784. ][0];
  68785. return i;
  68786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68787. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  68788. //>>excludeEnd("ctx");
  68789. }));
  68790. [$self._assert_equals_(i,(5))
  68791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68792. ,$ctx1.sendIdx["assert:equals:"]=1
  68793. //>>excludeEnd("ctx");
  68794. ][0];
  68795. i=(0);
  68796. $recv((function(){
  68797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68798. return $core.withContext(function($ctx2) {
  68799. //>>excludeEnd("ctx");
  68800. i=$recv(i).__plus((1));
  68801. return $recv(i).__lt((5));
  68802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68803. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  68804. //>>excludeEnd("ctx");
  68805. }))._whileTrue();
  68806. $self._assert_equals_(i,(5));
  68807. return self;
  68808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68809. }, function($ctx1) {$ctx1.fill(self,"testWhileTrue",{i:i})});
  68810. //>>excludeEnd("ctx");
  68811. }; }),
  68812. $globals.BlockClosureTest);
  68813. $core.addClass("BooleanTest", $globals.TestCase, "Kernel-Tests");
  68814. $core.addMethod(
  68815. $core.method({
  68816. selector: "testEquality",
  68817. protocol: "tests",
  68818. //>>excludeStart("ide", pragmas.excludeIdeData);
  68819. args: [],
  68820. source: "testEquality\x0a\x09\x22We're on top of JS...just be sure to check the basics!\x22\x0a\x0a\x09self deny: 0 = false.\x0a\x09self deny: false = 0.\x0a\x09self deny: '' = false.\x0a\x09self deny: false = ''.\x0a\x0a\x09self assert: (true = true).\x0a\x09self deny: false = true.\x0a\x09self deny: true = false.\x0a\x09self assert: (false = false).\x0a\x0a\x09\x22JS may do some type coercing after sending a message\x22\x0a\x09self assert: (true yourself = true).\x0a\x09self assert: (true yourself = true yourself)",
  68821. referencedClasses: [],
  68822. //>>excludeEnd("ide");
  68823. pragmas: [],
  68824. messageSends: ["deny:", "=", "assert:", "yourself"]
  68825. }, function ($methodClass){ return function (){
  68826. var self=this,$self=this;
  68827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68828. return $core.withContext(function($ctx1) {
  68829. //>>excludeEnd("ctx");
  68830. [$self._deny_([(0).__eq(false)
  68831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68832. ,$ctx1.sendIdx["="]=1
  68833. //>>excludeEnd("ctx");
  68834. ][0])
  68835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68836. ,$ctx1.sendIdx["deny:"]=1
  68837. //>>excludeEnd("ctx");
  68838. ][0];
  68839. [$self._deny_([false.__eq((0))
  68840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68841. ,$ctx1.sendIdx["="]=2
  68842. //>>excludeEnd("ctx");
  68843. ][0])
  68844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68845. ,$ctx1.sendIdx["deny:"]=2
  68846. //>>excludeEnd("ctx");
  68847. ][0];
  68848. [$self._deny_(["".__eq(false)
  68849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68850. ,$ctx1.sendIdx["="]=3
  68851. //>>excludeEnd("ctx");
  68852. ][0])
  68853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68854. ,$ctx1.sendIdx["deny:"]=3
  68855. //>>excludeEnd("ctx");
  68856. ][0];
  68857. [$self._deny_([false.__eq("")
  68858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68859. ,$ctx1.sendIdx["="]=4
  68860. //>>excludeEnd("ctx");
  68861. ][0])
  68862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68863. ,$ctx1.sendIdx["deny:"]=4
  68864. //>>excludeEnd("ctx");
  68865. ][0];
  68866. [$self._assert_([true.__eq(true)
  68867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68868. ,$ctx1.sendIdx["="]=5
  68869. //>>excludeEnd("ctx");
  68870. ][0])
  68871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68872. ,$ctx1.sendIdx["assert:"]=1
  68873. //>>excludeEnd("ctx");
  68874. ][0];
  68875. [$self._deny_([false.__eq(true)
  68876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68877. ,$ctx1.sendIdx["="]=6
  68878. //>>excludeEnd("ctx");
  68879. ][0])
  68880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68881. ,$ctx1.sendIdx["deny:"]=5
  68882. //>>excludeEnd("ctx");
  68883. ][0];
  68884. $self._deny_([true.__eq(false)
  68885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68886. ,$ctx1.sendIdx["="]=7
  68887. //>>excludeEnd("ctx");
  68888. ][0]);
  68889. [$self._assert_([false.__eq(false)
  68890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68891. ,$ctx1.sendIdx["="]=8
  68892. //>>excludeEnd("ctx");
  68893. ][0])
  68894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68895. ,$ctx1.sendIdx["assert:"]=2
  68896. //>>excludeEnd("ctx");
  68897. ][0];
  68898. [$self._assert_([$recv([true._yourself()
  68899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68900. ,$ctx1.sendIdx["yourself"]=1
  68901. //>>excludeEnd("ctx");
  68902. ][0]).__eq(true)
  68903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68904. ,$ctx1.sendIdx["="]=9
  68905. //>>excludeEnd("ctx");
  68906. ][0])
  68907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68908. ,$ctx1.sendIdx["assert:"]=3
  68909. //>>excludeEnd("ctx");
  68910. ][0];
  68911. $self._assert_($recv([true._yourself()
  68912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68913. ,$ctx1.sendIdx["yourself"]=2
  68914. //>>excludeEnd("ctx");
  68915. ][0]).__eq(true._yourself()));
  68916. return self;
  68917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68918. }, function($ctx1) {$ctx1.fill(self,"testEquality",{})});
  68919. //>>excludeEnd("ctx");
  68920. }; }),
  68921. $globals.BooleanTest);
  68922. $core.addMethod(
  68923. $core.method({
  68924. selector: "testIdentity",
  68925. protocol: "tests",
  68926. //>>excludeStart("ide", pragmas.excludeIdeData);
  68927. args: [],
  68928. source: "testIdentity\x0a\x09\x22We're on top of JS...just be sure to check the basics!\x22\x0a\x0a\x09self deny: 0 == false.\x0a\x09self deny: false == 0.\x0a\x09self deny: '' == false.\x0a\x09self deny: false == ''.\x0a\x0a\x09self assert: true == true.\x0a\x09self deny: false == true.\x0a\x09self deny: true == false.\x0a\x09self assert: false == false.\x0a\x0a\x09\x22JS may do some type coercing after sending a message\x22\x0a\x09self assert: true yourself == true.\x0a\x09self assert: true yourself == true yourself",
  68929. referencedClasses: [],
  68930. //>>excludeEnd("ide");
  68931. pragmas: [],
  68932. messageSends: ["deny:", "==", "assert:", "yourself"]
  68933. }, function ($methodClass){ return function (){
  68934. var self=this,$self=this;
  68935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68936. return $core.withContext(function($ctx1) {
  68937. //>>excludeEnd("ctx");
  68938. [$self._deny_([(0).__eq_eq(false)
  68939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68940. ,$ctx1.sendIdx["=="]=1
  68941. //>>excludeEnd("ctx");
  68942. ][0])
  68943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68944. ,$ctx1.sendIdx["deny:"]=1
  68945. //>>excludeEnd("ctx");
  68946. ][0];
  68947. [$self._deny_([false.__eq_eq((0))
  68948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68949. ,$ctx1.sendIdx["=="]=2
  68950. //>>excludeEnd("ctx");
  68951. ][0])
  68952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68953. ,$ctx1.sendIdx["deny:"]=2
  68954. //>>excludeEnd("ctx");
  68955. ][0];
  68956. [$self._deny_(["".__eq_eq(false)
  68957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68958. ,$ctx1.sendIdx["=="]=3
  68959. //>>excludeEnd("ctx");
  68960. ][0])
  68961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68962. ,$ctx1.sendIdx["deny:"]=3
  68963. //>>excludeEnd("ctx");
  68964. ][0];
  68965. [$self._deny_([false.__eq_eq("")
  68966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68967. ,$ctx1.sendIdx["=="]=4
  68968. //>>excludeEnd("ctx");
  68969. ][0])
  68970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68971. ,$ctx1.sendIdx["deny:"]=4
  68972. //>>excludeEnd("ctx");
  68973. ][0];
  68974. [$self._assert_([true.__eq_eq(true)
  68975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68976. ,$ctx1.sendIdx["=="]=5
  68977. //>>excludeEnd("ctx");
  68978. ][0])
  68979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68980. ,$ctx1.sendIdx["assert:"]=1
  68981. //>>excludeEnd("ctx");
  68982. ][0];
  68983. [$self._deny_([false.__eq_eq(true)
  68984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68985. ,$ctx1.sendIdx["=="]=6
  68986. //>>excludeEnd("ctx");
  68987. ][0])
  68988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68989. ,$ctx1.sendIdx["deny:"]=5
  68990. //>>excludeEnd("ctx");
  68991. ][0];
  68992. $self._deny_([true.__eq_eq(false)
  68993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68994. ,$ctx1.sendIdx["=="]=7
  68995. //>>excludeEnd("ctx");
  68996. ][0]);
  68997. [$self._assert_([false.__eq_eq(false)
  68998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68999. ,$ctx1.sendIdx["=="]=8
  69000. //>>excludeEnd("ctx");
  69001. ][0])
  69002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69003. ,$ctx1.sendIdx["assert:"]=2
  69004. //>>excludeEnd("ctx");
  69005. ][0];
  69006. [$self._assert_([$recv([true._yourself()
  69007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69008. ,$ctx1.sendIdx["yourself"]=1
  69009. //>>excludeEnd("ctx");
  69010. ][0]).__eq_eq(true)
  69011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69012. ,$ctx1.sendIdx["=="]=9
  69013. //>>excludeEnd("ctx");
  69014. ][0])
  69015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69016. ,$ctx1.sendIdx["assert:"]=3
  69017. //>>excludeEnd("ctx");
  69018. ][0];
  69019. $self._assert_($recv([true._yourself()
  69020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69021. ,$ctx1.sendIdx["yourself"]=2
  69022. //>>excludeEnd("ctx");
  69023. ][0]).__eq_eq(true._yourself()));
  69024. return self;
  69025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69026. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{})});
  69027. //>>excludeEnd("ctx");
  69028. }; }),
  69029. $globals.BooleanTest);
  69030. $core.addMethod(
  69031. $core.method({
  69032. selector: "testIfTrueIfFalse",
  69033. protocol: "tests",
  69034. //>>excludeStart("ide", pragmas.excludeIdeData);
  69035. args: [],
  69036. source: "testIfTrueIfFalse\x0a\x0a\x09self assert: (true ifTrue: [ 'alternative block' ]) equals: 'alternative block'.\x0a\x09self assert: (true ifFalse: [ 'alternative block' ]) equals: nil.\x0a\x0a\x09self assert: (false ifTrue: [ 'alternative block' ]) equals: nil.\x0a\x09self assert: (false ifFalse: [ 'alternative block' ]) equals: 'alternative block'.\x0a\x0a\x09self assert: (false ifTrue: [ 'alternative block' ] ifFalse: [ 'alternative block2' ]) equals: 'alternative block2'.\x0a\x09self assert: (false ifFalse: [ 'alternative block' ] ifTrue: [ 'alternative block2' ]) equals: 'alternative block'.\x0a\x0a\x09self assert: (true ifTrue: [ 'alternative block' ] ifFalse: [ 'alternative block2' ]) equals: 'alternative block'.\x0a\x09self assert: (true ifFalse: [ 'alternative block' ] ifTrue: [ 'alternative block2' ]) equals: 'alternative block2'.",
  69037. referencedClasses: [],
  69038. //>>excludeEnd("ide");
  69039. pragmas: [],
  69040. messageSends: ["assert:equals:", "ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:"]
  69041. }, function ($methodClass){ return function (){
  69042. var self=this,$self=this;
  69043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69044. return $core.withContext(function($ctx1) {
  69045. //>>excludeEnd("ctx");
  69046. var $1,$2,$3,$4,$5,$6,$7,$8;
  69047. if($core.assert(true)){
  69048. $1="alternative block";
  69049. }
  69050. [$self._assert_equals_($1,"alternative block")
  69051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69052. ,$ctx1.sendIdx["assert:equals:"]=1
  69053. //>>excludeEnd("ctx");
  69054. ][0];
  69055. if(!$core.assert(true)){
  69056. $2="alternative block";
  69057. }
  69058. [$self._assert_equals_($2,nil)
  69059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69060. ,$ctx1.sendIdx["assert:equals:"]=2
  69061. //>>excludeEnd("ctx");
  69062. ][0];
  69063. if($core.assert(false)){
  69064. $3="alternative block";
  69065. }
  69066. [$self._assert_equals_($3,nil)
  69067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69068. ,$ctx1.sendIdx["assert:equals:"]=3
  69069. //>>excludeEnd("ctx");
  69070. ][0];
  69071. if(!$core.assert(false)){
  69072. $4="alternative block";
  69073. }
  69074. [$self._assert_equals_($4,"alternative block")
  69075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69076. ,$ctx1.sendIdx["assert:equals:"]=4
  69077. //>>excludeEnd("ctx");
  69078. ][0];
  69079. if($core.assert(false)){
  69080. $5="alternative block";
  69081. } else {
  69082. $5="alternative block2";
  69083. }
  69084. [$self._assert_equals_($5,"alternative block2")
  69085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69086. ,$ctx1.sendIdx["assert:equals:"]=5
  69087. //>>excludeEnd("ctx");
  69088. ][0];
  69089. if($core.assert(false)){
  69090. $6="alternative block2";
  69091. } else {
  69092. $6="alternative block";
  69093. }
  69094. [$self._assert_equals_($6,"alternative block")
  69095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69096. ,$ctx1.sendIdx["assert:equals:"]=6
  69097. //>>excludeEnd("ctx");
  69098. ][0];
  69099. if($core.assert(true)){
  69100. $7="alternative block";
  69101. } else {
  69102. $7="alternative block2";
  69103. }
  69104. [$self._assert_equals_($7,"alternative block")
  69105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69106. ,$ctx1.sendIdx["assert:equals:"]=7
  69107. //>>excludeEnd("ctx");
  69108. ][0];
  69109. if($core.assert(true)){
  69110. $8="alternative block2";
  69111. } else {
  69112. $8="alternative block";
  69113. }
  69114. $self._assert_equals_($8,"alternative block2");
  69115. return self;
  69116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69117. }, function($ctx1) {$ctx1.fill(self,"testIfTrueIfFalse",{})});
  69118. //>>excludeEnd("ctx");
  69119. }; }),
  69120. $globals.BooleanTest);
  69121. $core.addMethod(
  69122. $core.method({
  69123. selector: "testIfTrueIfFalseWithBoxing",
  69124. protocol: "tests",
  69125. //>>excludeStart("ide", pragmas.excludeIdeData);
  69126. args: [],
  69127. source: "testIfTrueIfFalseWithBoxing\x0a\x0a\x09self assert: (true yourself ifTrue: [ 'alternative block' ]) equals: 'alternative block'.\x0a\x09self assert: (true yourself ifFalse: [ 'alternative block' ]) equals: nil.\x0a\x0a\x09self assert: (false yourself ifTrue: [ 'alternative block' ]) equals: nil.\x0a\x09self assert: (false yourself ifFalse: [ 'alternative block' ]) equals: 'alternative block'.\x0a\x0a\x09self assert: (false yourself ifTrue: [ 'alternative block' ] ifFalse: [ 'alternative block2' ]) equals: 'alternative block2'.\x0a\x09self assert: (false yourself ifFalse: [ 'alternative block' ] ifTrue: [ 'alternative block2' ]) equals: 'alternative block'.\x0a\x0a\x09self assert: (true yourself ifTrue: [ 'alternative block' ] ifFalse: [ 'alternative block2' ]) equals: 'alternative block'.\x0a\x09self assert: (true yourself ifFalse: [ 'alternative block' ] ifTrue: [ 'alternative block2' ]) equals: 'alternative block2'.",
  69128. referencedClasses: [],
  69129. //>>excludeEnd("ide");
  69130. pragmas: [],
  69131. messageSends: ["assert:equals:", "ifTrue:", "yourself", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:"]
  69132. }, function ($methodClass){ return function (){
  69133. var self=this,$self=this;
  69134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69135. return $core.withContext(function($ctx1) {
  69136. //>>excludeEnd("ctx");
  69137. var $1,$2,$3,$4,$5,$6,$7,$8;
  69138. if($core.assert([true._yourself()
  69139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69140. ,$ctx1.sendIdx["yourself"]=1
  69141. //>>excludeEnd("ctx");
  69142. ][0])){
  69143. $1="alternative block";
  69144. }
  69145. [$self._assert_equals_($1,"alternative block")
  69146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69147. ,$ctx1.sendIdx["assert:equals:"]=1
  69148. //>>excludeEnd("ctx");
  69149. ][0];
  69150. if(!$core.assert([true._yourself()
  69151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69152. ,$ctx1.sendIdx["yourself"]=2
  69153. //>>excludeEnd("ctx");
  69154. ][0])){
  69155. $2="alternative block";
  69156. }
  69157. [$self._assert_equals_($2,nil)
  69158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69159. ,$ctx1.sendIdx["assert:equals:"]=2
  69160. //>>excludeEnd("ctx");
  69161. ][0];
  69162. if($core.assert([false._yourself()
  69163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69164. ,$ctx1.sendIdx["yourself"]=3
  69165. //>>excludeEnd("ctx");
  69166. ][0])){
  69167. $3="alternative block";
  69168. }
  69169. [$self._assert_equals_($3,nil)
  69170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69171. ,$ctx1.sendIdx["assert:equals:"]=3
  69172. //>>excludeEnd("ctx");
  69173. ][0];
  69174. if(!$core.assert([false._yourself()
  69175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69176. ,$ctx1.sendIdx["yourself"]=4
  69177. //>>excludeEnd("ctx");
  69178. ][0])){
  69179. $4="alternative block";
  69180. }
  69181. [$self._assert_equals_($4,"alternative block")
  69182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69183. ,$ctx1.sendIdx["assert:equals:"]=4
  69184. //>>excludeEnd("ctx");
  69185. ][0];
  69186. if($core.assert([false._yourself()
  69187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69188. ,$ctx1.sendIdx["yourself"]=5
  69189. //>>excludeEnd("ctx");
  69190. ][0])){
  69191. $5="alternative block";
  69192. } else {
  69193. $5="alternative block2";
  69194. }
  69195. [$self._assert_equals_($5,"alternative block2")
  69196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69197. ,$ctx1.sendIdx["assert:equals:"]=5
  69198. //>>excludeEnd("ctx");
  69199. ][0];
  69200. if($core.assert([false._yourself()
  69201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69202. ,$ctx1.sendIdx["yourself"]=6
  69203. //>>excludeEnd("ctx");
  69204. ][0])){
  69205. $6="alternative block2";
  69206. } else {
  69207. $6="alternative block";
  69208. }
  69209. [$self._assert_equals_($6,"alternative block")
  69210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69211. ,$ctx1.sendIdx["assert:equals:"]=6
  69212. //>>excludeEnd("ctx");
  69213. ][0];
  69214. if($core.assert([true._yourself()
  69215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69216. ,$ctx1.sendIdx["yourself"]=7
  69217. //>>excludeEnd("ctx");
  69218. ][0])){
  69219. $7="alternative block";
  69220. } else {
  69221. $7="alternative block2";
  69222. }
  69223. [$self._assert_equals_($7,"alternative block")
  69224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69225. ,$ctx1.sendIdx["assert:equals:"]=7
  69226. //>>excludeEnd("ctx");
  69227. ][0];
  69228. if($core.assert(true._yourself())){
  69229. $8="alternative block2";
  69230. } else {
  69231. $8="alternative block";
  69232. }
  69233. $self._assert_equals_($8,"alternative block2");
  69234. return self;
  69235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69236. }, function($ctx1) {$ctx1.fill(self,"testIfTrueIfFalseWithBoxing",{})});
  69237. //>>excludeEnd("ctx");
  69238. }; }),
  69239. $globals.BooleanTest);
  69240. $core.addMethod(
  69241. $core.method({
  69242. selector: "testLogic",
  69243. protocol: "tests",
  69244. //>>excludeStart("ide", pragmas.excludeIdeData);
  69245. args: [],
  69246. source: "testLogic\x0a\x09\x22Trivial logic table\x22\x0a\x09self assert: (true & true);\x0a\x09\x09deny: (true & false);\x0a\x09\x09deny: (false & true);\x0a\x09\x09deny: (false & false).\x0a\x09self assert: (true | true);\x0a\x09\x09assert: (true | false);\x0a\x09\x09assert: (false | true);\x0a\x09\x09deny: (false | false).\x0a\x09\x22Checking that expressions work fine too\x22\x0a\x09self assert: (true & (1 > 0));\x0a\x09\x09deny: ((1 > 0) & false);\x0a\x09\x09deny: ((1 > 0) & (1 > 2)).\x0a\x09self assert: (false | (1 > 0));\x0a\x09\x09assert: ((1 > 0) | false);\x0a\x09\x09assert: ((1 > 0) | (1 > 2))",
  69247. referencedClasses: [],
  69248. //>>excludeEnd("ide");
  69249. pragmas: [],
  69250. messageSends: ["assert:", "&", "deny:", "|", ">"]
  69251. }, function ($methodClass){ return function (){
  69252. var self=this,$self=this;
  69253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69254. return $core.withContext(function($ctx1) {
  69255. //>>excludeEnd("ctx");
  69256. [$self._assert_([true.__and(true)
  69257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69258. ,$ctx1.sendIdx["&"]=1
  69259. //>>excludeEnd("ctx");
  69260. ][0])
  69261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69262. ,$ctx1.sendIdx["assert:"]=1
  69263. //>>excludeEnd("ctx");
  69264. ][0];
  69265. [$self._deny_([true.__and(false)
  69266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69267. ,$ctx1.sendIdx["&"]=2
  69268. //>>excludeEnd("ctx");
  69269. ][0])
  69270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69271. ,$ctx1.sendIdx["deny:"]=1
  69272. //>>excludeEnd("ctx");
  69273. ][0];
  69274. [$self._deny_([false.__and(true)
  69275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69276. ,$ctx1.sendIdx["&"]=3
  69277. //>>excludeEnd("ctx");
  69278. ][0])
  69279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69280. ,$ctx1.sendIdx["deny:"]=2
  69281. //>>excludeEnd("ctx");
  69282. ][0];
  69283. [$self._deny_([false.__and(false)
  69284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69285. ,$ctx1.sendIdx["&"]=4
  69286. //>>excludeEnd("ctx");
  69287. ][0])
  69288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69289. ,$ctx1.sendIdx["deny:"]=3
  69290. //>>excludeEnd("ctx");
  69291. ][0];
  69292. [$self._assert_([true.__or(true)
  69293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69294. ,$ctx1.sendIdx["|"]=1
  69295. //>>excludeEnd("ctx");
  69296. ][0])
  69297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69298. ,$ctx1.sendIdx["assert:"]=2
  69299. //>>excludeEnd("ctx");
  69300. ][0];
  69301. [$self._assert_([true.__or(false)
  69302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69303. ,$ctx1.sendIdx["|"]=2
  69304. //>>excludeEnd("ctx");
  69305. ][0])
  69306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69307. ,$ctx1.sendIdx["assert:"]=3
  69308. //>>excludeEnd("ctx");
  69309. ][0];
  69310. [$self._assert_([false.__or(true)
  69311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69312. ,$ctx1.sendIdx["|"]=3
  69313. //>>excludeEnd("ctx");
  69314. ][0])
  69315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69316. ,$ctx1.sendIdx["assert:"]=4
  69317. //>>excludeEnd("ctx");
  69318. ][0];
  69319. [$self._deny_([false.__or(false)
  69320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69321. ,$ctx1.sendIdx["|"]=4
  69322. //>>excludeEnd("ctx");
  69323. ][0])
  69324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69325. ,$ctx1.sendIdx["deny:"]=4
  69326. //>>excludeEnd("ctx");
  69327. ][0];
  69328. [$self._assert_([true.__and([(1).__gt((0))
  69329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69330. ,$ctx1.sendIdx[">"]=1
  69331. //>>excludeEnd("ctx");
  69332. ][0])
  69333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69334. ,$ctx1.sendIdx["&"]=5
  69335. //>>excludeEnd("ctx");
  69336. ][0])
  69337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69338. ,$ctx1.sendIdx["assert:"]=5
  69339. //>>excludeEnd("ctx");
  69340. ][0];
  69341. [$self._deny_([$recv([(1).__gt((0))
  69342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69343. ,$ctx1.sendIdx[">"]=2
  69344. //>>excludeEnd("ctx");
  69345. ][0]).__and(false)
  69346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69347. ,$ctx1.sendIdx["&"]=6
  69348. //>>excludeEnd("ctx");
  69349. ][0])
  69350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69351. ,$ctx1.sendIdx["deny:"]=5
  69352. //>>excludeEnd("ctx");
  69353. ][0];
  69354. $self._deny_($recv([(1).__gt((0))
  69355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69356. ,$ctx1.sendIdx[">"]=3
  69357. //>>excludeEnd("ctx");
  69358. ][0]).__and([(1).__gt((2))
  69359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69360. ,$ctx1.sendIdx[">"]=4
  69361. //>>excludeEnd("ctx");
  69362. ][0]));
  69363. [$self._assert_([false.__or([(1).__gt((0))
  69364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69365. ,$ctx1.sendIdx[">"]=5
  69366. //>>excludeEnd("ctx");
  69367. ][0])
  69368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69369. ,$ctx1.sendIdx["|"]=5
  69370. //>>excludeEnd("ctx");
  69371. ][0])
  69372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69373. ,$ctx1.sendIdx["assert:"]=6
  69374. //>>excludeEnd("ctx");
  69375. ][0];
  69376. [$self._assert_([$recv([(1).__gt((0))
  69377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69378. ,$ctx1.sendIdx[">"]=6
  69379. //>>excludeEnd("ctx");
  69380. ][0]).__or(false)
  69381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69382. ,$ctx1.sendIdx["|"]=6
  69383. //>>excludeEnd("ctx");
  69384. ][0])
  69385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69386. ,$ctx1.sendIdx["assert:"]=7
  69387. //>>excludeEnd("ctx");
  69388. ][0];
  69389. $self._assert_($recv([(1).__gt((0))
  69390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69391. ,$ctx1.sendIdx[">"]=7
  69392. //>>excludeEnd("ctx");
  69393. ][0]).__or((1).__gt((2))));
  69394. return self;
  69395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69396. }, function($ctx1) {$ctx1.fill(self,"testLogic",{})});
  69397. //>>excludeEnd("ctx");
  69398. }; }),
  69399. $globals.BooleanTest);
  69400. $core.addMethod(
  69401. $core.method({
  69402. selector: "testLogicKeywords",
  69403. protocol: "tests",
  69404. //>>excludeStart("ide", pragmas.excludeIdeData);
  69405. args: [],
  69406. source: "testLogicKeywords\x0a\x09\x22Trivial logic table\x22\x0a\x09self\x0a\x09\x09assert: (true and: [ true ]);\x0a\x09\x09deny: (true and: [ false ]);\x0a\x09\x09deny: (false and: [ true ]);\x0a\x09\x09deny: (false and: [ false ]).\x0a\x09self\x0a\x09\x09assert: (true or: [ true ]);\x0a\x09\x09assert: (true or: [ false ]);\x0a\x09\x09assert: (false or: [ true ]);\x0a\x09\x09deny: (false or: [ false ]).\x0a\x09\x09\x0a\x09\x22Checking that expressions work fine too\x22\x0a\x09self\x0a\x09\x09assert: (true and: [ 1 > 0 ]);\x0a\x09\x09deny: ((1 > 0) and: [ false ]);\x0a\x09\x09deny: ((1 > 0) and: [ 1 > 2 ]).\x0a\x09self\x0a\x09\x09assert: (false or: [ 1 > 0 ]);\x0a\x09\x09assert: ((1 > 0) or: [ false ]);\x0a\x09\x09assert: ((1 > 0) or: [ 1 > 2 ])",
  69407. referencedClasses: [],
  69408. //>>excludeEnd("ide");
  69409. pragmas: [],
  69410. messageSends: ["assert:", "and:", "deny:", "or:", ">"]
  69411. }, function ($methodClass){ return function (){
  69412. var self=this,$self=this;
  69413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69414. return $core.withContext(function($ctx1) {
  69415. //>>excludeEnd("ctx");
  69416. var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14;
  69417. if($core.assert(true)){
  69418. $1=true;
  69419. } else {
  69420. $1=false;
  69421. }
  69422. [$self._assert_($1)
  69423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69424. ,$ctx1.sendIdx["assert:"]=1
  69425. //>>excludeEnd("ctx");
  69426. ][0];
  69427. if($core.assert(true)){
  69428. $2=false;
  69429. } else {
  69430. $2=false;
  69431. }
  69432. [$self._deny_($2)
  69433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69434. ,$ctx1.sendIdx["deny:"]=1
  69435. //>>excludeEnd("ctx");
  69436. ][0];
  69437. if($core.assert(false)){
  69438. $3=true;
  69439. } else {
  69440. $3=false;
  69441. }
  69442. [$self._deny_($3)
  69443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69444. ,$ctx1.sendIdx["deny:"]=2
  69445. //>>excludeEnd("ctx");
  69446. ][0];
  69447. if($core.assert(false)){
  69448. $4=false;
  69449. } else {
  69450. $4=false;
  69451. }
  69452. [$self._deny_($4)
  69453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69454. ,$ctx1.sendIdx["deny:"]=3
  69455. //>>excludeEnd("ctx");
  69456. ][0];
  69457. if($core.assert(true)){
  69458. $5=true;
  69459. } else {
  69460. $5=true;
  69461. }
  69462. [$self._assert_($5)
  69463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69464. ,$ctx1.sendIdx["assert:"]=2
  69465. //>>excludeEnd("ctx");
  69466. ][0];
  69467. if($core.assert(true)){
  69468. $6=true;
  69469. } else {
  69470. $6=false;
  69471. }
  69472. [$self._assert_($6)
  69473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69474. ,$ctx1.sendIdx["assert:"]=3
  69475. //>>excludeEnd("ctx");
  69476. ][0];
  69477. if($core.assert(false)){
  69478. $7=true;
  69479. } else {
  69480. $7=true;
  69481. }
  69482. [$self._assert_($7)
  69483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69484. ,$ctx1.sendIdx["assert:"]=4
  69485. //>>excludeEnd("ctx");
  69486. ][0];
  69487. if($core.assert(false)){
  69488. $8=true;
  69489. } else {
  69490. $8=false;
  69491. }
  69492. [$self._deny_($8)
  69493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69494. ,$ctx1.sendIdx["deny:"]=4
  69495. //>>excludeEnd("ctx");
  69496. ][0];
  69497. if($core.assert(true)){
  69498. $9=[(1).__gt((0))
  69499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69500. ,$ctx1.sendIdx[">"]=1
  69501. //>>excludeEnd("ctx");
  69502. ][0];
  69503. } else {
  69504. $9=false;
  69505. }
  69506. [$self._assert_($9)
  69507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69508. ,$ctx1.sendIdx["assert:"]=5
  69509. //>>excludeEnd("ctx");
  69510. ][0];
  69511. if($core.assert([(1).__gt((0))
  69512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69513. ,$ctx1.sendIdx[">"]=2
  69514. //>>excludeEnd("ctx");
  69515. ][0])){
  69516. $10=false;
  69517. } else {
  69518. $10=false;
  69519. }
  69520. [$self._deny_($10)
  69521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69522. ,$ctx1.sendIdx["deny:"]=5
  69523. //>>excludeEnd("ctx");
  69524. ][0];
  69525. if($core.assert([(1).__gt((0))
  69526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69527. ,$ctx1.sendIdx[">"]=3
  69528. //>>excludeEnd("ctx");
  69529. ][0])){
  69530. $11=[(1).__gt((2))
  69531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69532. ,$ctx1.sendIdx[">"]=4
  69533. //>>excludeEnd("ctx");
  69534. ][0];
  69535. } else {
  69536. $11=false;
  69537. }
  69538. $self._deny_($11);
  69539. if($core.assert(false)){
  69540. $12=true;
  69541. } else {
  69542. $12=[(1).__gt((0))
  69543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69544. ,$ctx1.sendIdx[">"]=5
  69545. //>>excludeEnd("ctx");
  69546. ][0];
  69547. }
  69548. [$self._assert_($12)
  69549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69550. ,$ctx1.sendIdx["assert:"]=6
  69551. //>>excludeEnd("ctx");
  69552. ][0];
  69553. if($core.assert([(1).__gt((0))
  69554. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69555. ,$ctx1.sendIdx[">"]=6
  69556. //>>excludeEnd("ctx");
  69557. ][0])){
  69558. $13=true;
  69559. } else {
  69560. $13=false;
  69561. }
  69562. [$self._assert_($13)
  69563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69564. ,$ctx1.sendIdx["assert:"]=7
  69565. //>>excludeEnd("ctx");
  69566. ][0];
  69567. if($core.assert([(1).__gt((0))
  69568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69569. ,$ctx1.sendIdx[">"]=7
  69570. //>>excludeEnd("ctx");
  69571. ][0])){
  69572. $14=true;
  69573. } else {
  69574. $14=(1).__gt((2));
  69575. }
  69576. $self._assert_($14);
  69577. return self;
  69578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69579. }, function($ctx1) {$ctx1.fill(self,"testLogicKeywords",{})});
  69580. //>>excludeEnd("ctx");
  69581. }; }),
  69582. $globals.BooleanTest);
  69583. $core.addMethod(
  69584. $core.method({
  69585. selector: "testNonBooleanError",
  69586. protocol: "tests",
  69587. //>>excludeStart("ide", pragmas.excludeIdeData);
  69588. args: [],
  69589. source: "testNonBooleanError\x0a\x09self should: [ '' ifTrue: [] ifFalse: [] ] raise: NonBooleanReceiver",
  69590. referencedClasses: ["NonBooleanReceiver"],
  69591. //>>excludeEnd("ide");
  69592. pragmas: [],
  69593. messageSends: ["should:raise:", "ifTrue:ifFalse:"]
  69594. }, function ($methodClass){ return function (){
  69595. var self=this,$self=this;
  69596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69597. return $core.withContext(function($ctx1) {
  69598. //>>excludeEnd("ctx");
  69599. $self._should_raise_((function(){
  69600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69601. return $core.withContext(function($ctx2) {
  69602. //>>excludeEnd("ctx");
  69603. if($core.assert("")){
  69604. return nil;
  69605. } else {
  69606. return nil;
  69607. }
  69608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69609. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  69610. //>>excludeEnd("ctx");
  69611. }),$globals.NonBooleanReceiver);
  69612. return self;
  69613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69614. }, function($ctx1) {$ctx1.fill(self,"testNonBooleanError",{})});
  69615. //>>excludeEnd("ctx");
  69616. }; }),
  69617. $globals.BooleanTest);
  69618. $core.addClass("ClassBuilderTest", $globals.TestCase, "Kernel-Tests");
  69619. $core.setSlots($globals.ClassBuilderTest, ["builder", "theClass"]);
  69620. $core.addMethod(
  69621. $core.method({
  69622. selector: "setUp",
  69623. protocol: "running",
  69624. //>>excludeStart("ide", pragmas.excludeIdeData);
  69625. args: [],
  69626. source: "setUp\x0a\x09builder := ClassBuilder new",
  69627. referencedClasses: ["ClassBuilder"],
  69628. //>>excludeEnd("ide");
  69629. pragmas: [],
  69630. messageSends: ["new"]
  69631. }, function ($methodClass){ return function (){
  69632. var self=this,$self=this;
  69633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69634. return $core.withContext(function($ctx1) {
  69635. //>>excludeEnd("ctx");
  69636. $self.builder=$recv($globals.ClassBuilder)._new();
  69637. return self;
  69638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69639. }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
  69640. //>>excludeEnd("ctx");
  69641. }; }),
  69642. $globals.ClassBuilderTest);
  69643. $core.addMethod(
  69644. $core.method({
  69645. selector: "tearDown",
  69646. protocol: "running",
  69647. //>>excludeStart("ide", pragmas.excludeIdeData);
  69648. args: [],
  69649. source: "tearDown\x0a\x09self tearDownTheClass.\x0a\x09theClass ifNotNil: [\x0a\x09\x09self deny: (theClass package classes includes: theClass).\x0a\x09\x09self assert: (Smalltalk globals at: theClass name) equals: nil ]",
  69650. referencedClasses: ["Smalltalk"],
  69651. //>>excludeEnd("ide");
  69652. pragmas: [],
  69653. messageSends: ["tearDownTheClass", "ifNotNil:", "deny:", "includes:", "classes", "package", "assert:equals:", "at:", "globals", "name"]
  69654. }, function ($methodClass){ return function (){
  69655. var self=this,$self=this;
  69656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69657. return $core.withContext(function($ctx1) {
  69658. //>>excludeEnd("ctx");
  69659. var $1;
  69660. $self._tearDownTheClass();
  69661. $1=$self.theClass;
  69662. if($1 == null || $1.a$nil){
  69663. $1;
  69664. } else {
  69665. $self._deny_($recv($recv($recv($self.theClass)._package())._classes())._includes_($self.theClass));
  69666. $self._assert_equals_($recv($recv($globals.Smalltalk)._globals())._at_($recv($self.theClass)._name()),nil);
  69667. }
  69668. return self;
  69669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69670. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  69671. //>>excludeEnd("ctx");
  69672. }; }),
  69673. $globals.ClassBuilderTest);
  69674. $core.addMethod(
  69675. $core.method({
  69676. selector: "testAddTrait",
  69677. protocol: "tests",
  69678. //>>excludeStart("ide", pragmas.excludeIdeData);
  69679. args: [],
  69680. source: "testAddTrait\x0a\x09theClass := builder addTraitNamed: 'ObjectMock2' package: 'Kernel-Tests'.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: (theClass package classes occurrencesOf: theClass) equals: 1.\x0a\x09self assert: theClass package equals: ObjectMock package",
  69681. referencedClasses: ["ObjectMock"],
  69682. //>>excludeEnd("ide");
  69683. pragmas: [],
  69684. messageSends: ["addTraitNamed:package:", "assert:equals:", "name", "occurrencesOf:", "classes", "package"]
  69685. }, function ($methodClass){ return function (){
  69686. var self=this,$self=this;
  69687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69688. return $core.withContext(function($ctx1) {
  69689. //>>excludeEnd("ctx");
  69690. $self.theClass=$recv($self.builder)._addTraitNamed_package_("ObjectMock2","Kernel-Tests");
  69691. [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
  69692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69693. ,$ctx1.sendIdx["assert:equals:"]=1
  69694. //>>excludeEnd("ctx");
  69695. ][0];
  69696. [$self._assert_equals_($recv($recv([$recv($self.theClass)._package()
  69697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69698. ,$ctx1.sendIdx["package"]=1
  69699. //>>excludeEnd("ctx");
  69700. ][0])._classes())._occurrencesOf_($self.theClass),(1))
  69701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69702. ,$ctx1.sendIdx["assert:equals:"]=2
  69703. //>>excludeEnd("ctx");
  69704. ][0];
  69705. $self._assert_equals_([$recv($self.theClass)._package()
  69706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69707. ,$ctx1.sendIdx["package"]=2
  69708. //>>excludeEnd("ctx");
  69709. ][0],$recv($globals.ObjectMock)._package());
  69710. return self;
  69711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69712. }, function($ctx1) {$ctx1.fill(self,"testAddTrait",{})});
  69713. //>>excludeEnd("ctx");
  69714. }; }),
  69715. $globals.ClassBuilderTest);
  69716. $core.addMethod(
  69717. $core.method({
  69718. selector: "testClassCopy",
  69719. protocol: "tests",
  69720. //>>excludeStart("ide", pragmas.excludeIdeData);
  69721. args: [],
  69722. source: "testClassCopy\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass isClassCopyOf: ObjectMock",
  69723. referencedClasses: ["ObjectMock"],
  69724. //>>excludeEnd("ide");
  69725. pragmas: [],
  69726. messageSends: ["copyClass:named:", "assert:equals:", "name", "assert:isClassCopyOf:"]
  69727. }, function ($methodClass){ return function (){
  69728. var self=this,$self=this;
  69729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69730. return $core.withContext(function($ctx1) {
  69731. //>>excludeEnd("ctx");
  69732. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  69733. $self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2");
  69734. $self._assert_isClassCopyOf_($self.theClass,$globals.ObjectMock);
  69735. return self;
  69736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69737. }, function($ctx1) {$ctx1.fill(self,"testClassCopy",{})});
  69738. //>>excludeEnd("ctx");
  69739. }; }),
  69740. $globals.ClassBuilderTest);
  69741. $core.addMethod(
  69742. $core.method({
  69743. selector: "testClassMigration",
  69744. protocol: "tests",
  69745. //>>excludeStart("ide", pragmas.excludeIdeData);
  69746. args: [],
  69747. source: "testClassMigration\x0a\x09| instance oldClass |\x0a\x09\x0a\x09oldClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09instance := (Smalltalk globals at: 'ObjectMock2') new.\x0a\x09\x0a\x09\x22Change the superclass of ObjectMock2\x22\x0a\x09theClass := ObjectMock subclass: #ObjectMock2\x0a\x09\x09instanceVariableNames: ''\x0a\x09\x09package: 'Kernel-Tests'.\x0a\x09\x0a\x09self deny: oldClass == ObjectMock2.\x0a\x09\x0a\x09self assert: ObjectMock2 superclass == ObjectMock.\x0a\x09self assert: ObjectMock2 slots isEmpty.\x0a\x09self assert: ObjectMock2 selectors equals: oldClass selectors.\x0a\x09self assert: ObjectMock2 comment equals: oldClass comment.\x0a\x09self assert: ObjectMock2 package name equals: 'Kernel-Tests'.\x0a\x09self assert: (ObjectMock2 package classes includes: ObjectMock2).\x0a\x09\x0a\x09self deny: instance class == ObjectMock2.\x0a\x09\x0a\x09self assert: (Smalltalk globals at: instance class name) isNil",
  69748. referencedClasses: ["ObjectMock", "Smalltalk", "ObjectMock2"],
  69749. //>>excludeEnd("ide");
  69750. pragmas: [],
  69751. messageSends: ["copyClass:named:", "new", "at:", "globals", "subclass:instanceVariableNames:package:", "deny:", "==", "assert:", "superclass", "isEmpty", "slots", "assert:equals:", "selectors", "comment", "name", "package", "includes:", "classes", "class", "isNil"]
  69752. }, function ($methodClass){ return function (){
  69753. var self=this,$self=this;
  69754. var instance,oldClass;
  69755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69756. return $core.withContext(function($ctx1) {
  69757. //>>excludeEnd("ctx");
  69758. oldClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  69759. instance=$recv([$recv([$recv($globals.Smalltalk)._globals()
  69760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69761. ,$ctx1.sendIdx["globals"]=1
  69762. //>>excludeEnd("ctx");
  69763. ][0])._at_("ObjectMock2")
  69764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69765. ,$ctx1.sendIdx["at:"]=1
  69766. //>>excludeEnd("ctx");
  69767. ][0])._new();
  69768. $self.theClass=$recv($globals.ObjectMock)._subclass_instanceVariableNames_package_("ObjectMock2","","Kernel-Tests");
  69769. [$self._deny_([$recv(oldClass).__eq_eq($globals.ObjectMock2)
  69770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69771. ,$ctx1.sendIdx["=="]=1
  69772. //>>excludeEnd("ctx");
  69773. ][0])
  69774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69775. ,$ctx1.sendIdx["deny:"]=1
  69776. //>>excludeEnd("ctx");
  69777. ][0];
  69778. [$self._assert_([$recv($recv($globals.ObjectMock2)._superclass()).__eq_eq($globals.ObjectMock)
  69779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69780. ,$ctx1.sendIdx["=="]=2
  69781. //>>excludeEnd("ctx");
  69782. ][0])
  69783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69784. ,$ctx1.sendIdx["assert:"]=1
  69785. //>>excludeEnd("ctx");
  69786. ][0];
  69787. [$self._assert_($recv($recv($globals.ObjectMock2)._slots())._isEmpty())
  69788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69789. ,$ctx1.sendIdx["assert:"]=2
  69790. //>>excludeEnd("ctx");
  69791. ][0];
  69792. [$self._assert_equals_([$recv($globals.ObjectMock2)._selectors()
  69793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69794. ,$ctx1.sendIdx["selectors"]=1
  69795. //>>excludeEnd("ctx");
  69796. ][0],$recv(oldClass)._selectors())
  69797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69798. ,$ctx1.sendIdx["assert:equals:"]=1
  69799. //>>excludeEnd("ctx");
  69800. ][0];
  69801. [$self._assert_equals_([$recv($globals.ObjectMock2)._comment()
  69802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69803. ,$ctx1.sendIdx["comment"]=1
  69804. //>>excludeEnd("ctx");
  69805. ][0],$recv(oldClass)._comment())
  69806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69807. ,$ctx1.sendIdx["assert:equals:"]=2
  69808. //>>excludeEnd("ctx");
  69809. ][0];
  69810. $self._assert_equals_([$recv([$recv($globals.ObjectMock2)._package()
  69811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69812. ,$ctx1.sendIdx["package"]=1
  69813. //>>excludeEnd("ctx");
  69814. ][0])._name()
  69815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69816. ,$ctx1.sendIdx["name"]=1
  69817. //>>excludeEnd("ctx");
  69818. ][0],"Kernel-Tests");
  69819. [$self._assert_($recv($recv($recv($globals.ObjectMock2)._package())._classes())._includes_($globals.ObjectMock2))
  69820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69821. ,$ctx1.sendIdx["assert:"]=3
  69822. //>>excludeEnd("ctx");
  69823. ][0];
  69824. $self._deny_($recv([$recv(instance)._class()
  69825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69826. ,$ctx1.sendIdx["class"]=1
  69827. //>>excludeEnd("ctx");
  69828. ][0]).__eq_eq($globals.ObjectMock2));
  69829. $self._assert_($recv($recv($recv($globals.Smalltalk)._globals())._at_($recv($recv(instance)._class())._name()))._isNil());
  69830. return self;
  69831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69832. }, function($ctx1) {$ctx1.fill(self,"testClassMigration",{instance:instance,oldClass:oldClass})});
  69833. //>>excludeEnd("ctx");
  69834. }; }),
  69835. $globals.ClassBuilderTest);
  69836. $core.addMethod(
  69837. $core.method({
  69838. selector: "testClassMigrationWithClassSlots",
  69839. protocol: "tests",
  69840. //>>excludeStart("ide", pragmas.excludeIdeData);
  69841. args: [],
  69842. source: "testClassMigrationWithClassSlots\x0a\x09\x0a\x09builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09ObjectMock2 class slots: #(foo bar).\x0a\x09\x0a\x09\x22Change the superclass of ObjectMock2\x22\x0a\x09theClass := ObjectMock subclass: #ObjectMock2\x0a\x09\x09instanceVariableNames: ''\x0a\x09\x09package: 'Kernel-Tests'.\x0a\x09\x0a\x09self assert: ObjectMock2 class slots equals: #('foo' 'bar')",
  69843. referencedClasses: ["ObjectMock", "ObjectMock2"],
  69844. //>>excludeEnd("ide");
  69845. pragmas: [],
  69846. messageSends: ["copyClass:named:", "slots:", "class", "subclass:instanceVariableNames:package:", "assert:equals:", "slots"]
  69847. }, function ($methodClass){ return function (){
  69848. var self=this,$self=this;
  69849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69850. return $core.withContext(function($ctx1) {
  69851. //>>excludeEnd("ctx");
  69852. $recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  69853. $recv([$recv($globals.ObjectMock2)._class()
  69854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69855. ,$ctx1.sendIdx["class"]=1
  69856. //>>excludeEnd("ctx");
  69857. ][0])._slots_(["foo", "bar"]);
  69858. $self.theClass=$recv($globals.ObjectMock)._subclass_instanceVariableNames_package_("ObjectMock2","","Kernel-Tests");
  69859. $self._assert_equals_($recv($recv($globals.ObjectMock2)._class())._slots(),["foo", "bar"]);
  69860. return self;
  69861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69862. }, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithClassSlots",{})});
  69863. //>>excludeEnd("ctx");
  69864. }; }),
  69865. $globals.ClassBuilderTest);
  69866. $core.addMethod(
  69867. $core.method({
  69868. selector: "testClassMigrationWithSubclasses",
  69869. protocol: "tests",
  69870. //>>excludeStart("ide", pragmas.excludeIdeData);
  69871. args: [],
  69872. source: "testClassMigrationWithSubclasses\x0a\x09\x0a\x09builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09ObjectMock2 subclass: 'ObjectMock3' instanceVariableNames: '' package: 'Kernel-Tests'.\x0a\x09ObjectMock3 subclass: 'ObjectMock4' instanceVariableNames: '' package: 'Kernel-Tests'.\x0a\x09\x0a\x09\x22Change the superclass of ObjectMock2\x22\x0a\x09theClass := ObjectMock subclass: #ObjectMock2\x0a\x09\x09instanceVariableNames: ''\x0a\x09\x09package: 'Kernel-Tests'.\x0a\x09\x0a\x09self assert: ObjectMock subclasses equals: {ObjectMock2}.\x0a\x09self assert: ObjectMock2 subclasses equals: {ObjectMock3}.\x0a\x09self assert: ObjectMock3 subclasses equals: {ObjectMock4}",
  69873. referencedClasses: ["ObjectMock", "ObjectMock2", "ObjectMock3", "ObjectMock4"],
  69874. //>>excludeEnd("ide");
  69875. pragmas: [],
  69876. messageSends: ["copyClass:named:", "subclass:instanceVariableNames:package:", "assert:equals:", "subclasses"]
  69877. }, function ($methodClass){ return function (){
  69878. var self=this,$self=this;
  69879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69880. return $core.withContext(function($ctx1) {
  69881. //>>excludeEnd("ctx");
  69882. $recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  69883. [$recv($globals.ObjectMock2)._subclass_instanceVariableNames_package_("ObjectMock3","","Kernel-Tests")
  69884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69885. ,$ctx1.sendIdx["subclass:instanceVariableNames:package:"]=1
  69886. //>>excludeEnd("ctx");
  69887. ][0];
  69888. [$recv($globals.ObjectMock3)._subclass_instanceVariableNames_package_("ObjectMock4","","Kernel-Tests")
  69889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69890. ,$ctx1.sendIdx["subclass:instanceVariableNames:package:"]=2
  69891. //>>excludeEnd("ctx");
  69892. ][0];
  69893. $self.theClass=$recv($globals.ObjectMock)._subclass_instanceVariableNames_package_("ObjectMock2","","Kernel-Tests");
  69894. [$self._assert_equals_([$recv($globals.ObjectMock)._subclasses()
  69895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69896. ,$ctx1.sendIdx["subclasses"]=1
  69897. //>>excludeEnd("ctx");
  69898. ][0],[$globals.ObjectMock2])
  69899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69900. ,$ctx1.sendIdx["assert:equals:"]=1
  69901. //>>excludeEnd("ctx");
  69902. ][0];
  69903. [$self._assert_equals_([$recv($globals.ObjectMock2)._subclasses()
  69904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69905. ,$ctx1.sendIdx["subclasses"]=2
  69906. //>>excludeEnd("ctx");
  69907. ][0],[$globals.ObjectMock3])
  69908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69909. ,$ctx1.sendIdx["assert:equals:"]=2
  69910. //>>excludeEnd("ctx");
  69911. ][0];
  69912. $self._assert_equals_($recv($globals.ObjectMock3)._subclasses(),[$globals.ObjectMock4]);
  69913. return self;
  69914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69915. }, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithSubclasses",{})});
  69916. //>>excludeEnd("ctx");
  69917. }; }),
  69918. $globals.ClassBuilderTest);
  69919. $core.addMethod(
  69920. $core.method({
  69921. selector: "testSubclass",
  69922. protocol: "tests",
  69923. //>>excludeStart("ide", pragmas.excludeIdeData);
  69924. args: [],
  69925. source: "testSubclass\x0a\x09theClass := builder addSubclassOf: ObjectMock named: 'ObjectMock2' slots: #(foo bar) package: 'Kernel-Tests'.\x0a\x09self assert: theClass superclass equals: ObjectMock.\x0a\x09self assert: theClass slots equals: #(foo bar).\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: (theClass package classes occurrencesOf: theClass) equals: 1.\x0a\x09self assert: theClass package equals: ObjectMock package.\x0a\x09self assert: theClass methodDictionary keys size equals: 0",
  69926. referencedClasses: ["ObjectMock"],
  69927. //>>excludeEnd("ide");
  69928. pragmas: [],
  69929. messageSends: ["addSubclassOf:named:slots:package:", "assert:equals:", "superclass", "slots", "name", "occurrencesOf:", "classes", "package", "size", "keys", "methodDictionary"]
  69930. }, function ($methodClass){ return function (){
  69931. var self=this,$self=this;
  69932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69933. return $core.withContext(function($ctx1) {
  69934. //>>excludeEnd("ctx");
  69935. $self.theClass=$recv($self.builder)._addSubclassOf_named_slots_package_($globals.ObjectMock,"ObjectMock2",["foo", "bar"],"Kernel-Tests");
  69936. [$self._assert_equals_($recv($self.theClass)._superclass(),$globals.ObjectMock)
  69937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69938. ,$ctx1.sendIdx["assert:equals:"]=1
  69939. //>>excludeEnd("ctx");
  69940. ][0];
  69941. [$self._assert_equals_($recv($self.theClass)._slots(),["foo", "bar"])
  69942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69943. ,$ctx1.sendIdx["assert:equals:"]=2
  69944. //>>excludeEnd("ctx");
  69945. ][0];
  69946. [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
  69947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69948. ,$ctx1.sendIdx["assert:equals:"]=3
  69949. //>>excludeEnd("ctx");
  69950. ][0];
  69951. [$self._assert_equals_($recv($recv([$recv($self.theClass)._package()
  69952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69953. ,$ctx1.sendIdx["package"]=1
  69954. //>>excludeEnd("ctx");
  69955. ][0])._classes())._occurrencesOf_($self.theClass),(1))
  69956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69957. ,$ctx1.sendIdx["assert:equals:"]=4
  69958. //>>excludeEnd("ctx");
  69959. ][0];
  69960. [$self._assert_equals_([$recv($self.theClass)._package()
  69961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69962. ,$ctx1.sendIdx["package"]=2
  69963. //>>excludeEnd("ctx");
  69964. ][0],$recv($globals.ObjectMock)._package())
  69965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69966. ,$ctx1.sendIdx["assert:equals:"]=5
  69967. //>>excludeEnd("ctx");
  69968. ][0];
  69969. $self._assert_equals_($recv($recv($recv($self.theClass)._methodDictionary())._keys())._size(),(0));
  69970. return self;
  69971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69972. }, function($ctx1) {$ctx1.fill(self,"testSubclass",{})});
  69973. //>>excludeEnd("ctx");
  69974. }; }),
  69975. $globals.ClassBuilderTest);
  69976. $core.addMethod(
  69977. $core.method({
  69978. selector: "theClass",
  69979. protocol: "accessing",
  69980. //>>excludeStart("ide", pragmas.excludeIdeData);
  69981. args: [],
  69982. source: "theClass\x0a\x09^ theClass",
  69983. referencedClasses: [],
  69984. //>>excludeEnd("ide");
  69985. pragmas: [],
  69986. messageSends: []
  69987. }, function ($methodClass){ return function (){
  69988. var self=this,$self=this;
  69989. return $self.theClass;
  69990. }; }),
  69991. $globals.ClassBuilderTest);
  69992. $core.addClass("ClassTest", $globals.TestCase, "Kernel-Tests");
  69993. $core.setSlots($globals.ClassTest, ["builder", "theClass"]);
  69994. $core.addMethod(
  69995. $core.method({
  69996. selector: "augmentMethodInstantiationOf:withAttachments:",
  69997. protocol: "running",
  69998. //>>excludeStart("ide", pragmas.excludeIdeData);
  69999. args: ["aMethod", "aHashedCollection"],
  70000. source: "augmentMethodInstantiationOf: aMethod withAttachments: aHashedCollection\x0a\x09| plain |\x0a\x09plain := aMethod instantiateFn.\x0a\x09aMethod instantiateFn: [ :arg |\x0a\x09\x09(plain value: arg)\x0a\x09\x09\x09basicAt: 'a$atx' put: aHashedCollection;\x0a\x09\x09\x09yourself ]",
  70001. referencedClasses: [],
  70002. //>>excludeEnd("ide");
  70003. pragmas: [],
  70004. messageSends: ["instantiateFn", "instantiateFn:", "basicAt:put:", "value:", "yourself"]
  70005. }, function ($methodClass){ return function (aMethod,aHashedCollection){
  70006. var self=this,$self=this;
  70007. var plain;
  70008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70009. return $core.withContext(function($ctx1) {
  70010. //>>excludeEnd("ctx");
  70011. var $1;
  70012. plain=$recv(aMethod)._instantiateFn();
  70013. $recv(aMethod)._instantiateFn_((function(arg){
  70014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70015. return $core.withContext(function($ctx2) {
  70016. //>>excludeEnd("ctx");
  70017. $1=$recv(plain)._value_(arg);
  70018. $recv($1)._basicAt_put_("a$atx",aHashedCollection);
  70019. return $recv($1)._yourself();
  70020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70021. }, function($ctx2) {$ctx2.fillBlock({arg:arg},$ctx1,1)});
  70022. //>>excludeEnd("ctx");
  70023. }));
  70024. return self;
  70025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70026. }, function($ctx1) {$ctx1.fill(self,"augmentMethodInstantiationOf:withAttachments:",{aMethod:aMethod,aHashedCollection:aHashedCollection,plain:plain})});
  70027. //>>excludeEnd("ctx");
  70028. }; }),
  70029. $globals.ClassTest);
  70030. $core.addMethod(
  70031. $core.method({
  70032. selector: "jsConstructor",
  70033. protocol: "running",
  70034. //>>excludeStart("ide", pragmas.excludeIdeData);
  70035. args: [],
  70036. source: "jsConstructor\x0a\x09<inlineJS: '\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09return Foo;\x0a\x09'>",
  70037. referencedClasses: [],
  70038. //>>excludeEnd("ide");
  70039. pragmas: [["inlineJS:", ["\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09return Foo;\x0a\x09"]]],
  70040. messageSends: []
  70041. }, function ($methodClass){ return function (){
  70042. var self=this,$self=this;
  70043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70044. return $core.withContext(function($ctx1) {
  70045. //>>excludeEnd("ctx");
  70046. function Foo(){}
  70047. Foo.prototype.valueOf = function () {return 4;};
  70048. return Foo;
  70049. ;
  70050. return self;
  70051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70052. }, function($ctx1) {$ctx1.fill(self,"jsConstructor",{})});
  70053. //>>excludeEnd("ctx");
  70054. }; }),
  70055. $globals.ClassTest);
  70056. $core.addMethod(
  70057. $core.method({
  70058. selector: "jsConstructorWithAction",
  70059. protocol: "running",
  70060. //>>excludeStart("ide", pragmas.excludeIdeData);
  70061. args: [],
  70062. source: "jsConstructorWithAction\x0a\x09<inlineJS: '\x0a\x09\x09function Foo(aFoo){this.foo = aFoo;}\x0a\x09\x09return Foo;\x0a\x09'>",
  70063. referencedClasses: [],
  70064. //>>excludeEnd("ide");
  70065. pragmas: [["inlineJS:", ["\x0a\x09\x09function Foo(aFoo){this.foo = aFoo;}\x0a\x09\x09return Foo;\x0a\x09"]]],
  70066. messageSends: []
  70067. }, function ($methodClass){ return function (){
  70068. var self=this,$self=this;
  70069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70070. return $core.withContext(function($ctx1) {
  70071. //>>excludeEnd("ctx");
  70072. function Foo(aFoo){this.foo = aFoo;}
  70073. return Foo;
  70074. ;
  70075. return self;
  70076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70077. }, function($ctx1) {$ctx1.fill(self,"jsConstructorWithAction",{})});
  70078. //>>excludeEnd("ctx");
  70079. }; }),
  70080. $globals.ClassTest);
  70081. $core.addMethod(
  70082. $core.method({
  70083. selector: "setUp",
  70084. protocol: "running",
  70085. //>>excludeStart("ide", pragmas.excludeIdeData);
  70086. args: [],
  70087. source: "setUp\x0a\x09builder := ClassBuilder new",
  70088. referencedClasses: ["ClassBuilder"],
  70089. //>>excludeEnd("ide");
  70090. pragmas: [],
  70091. messageSends: ["new"]
  70092. }, function ($methodClass){ return function (){
  70093. var self=this,$self=this;
  70094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70095. return $core.withContext(function($ctx1) {
  70096. //>>excludeEnd("ctx");
  70097. $self.builder=$recv($globals.ClassBuilder)._new();
  70098. return self;
  70099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70100. }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
  70101. //>>excludeEnd("ctx");
  70102. }; }),
  70103. $globals.ClassTest);
  70104. $core.addMethod(
  70105. $core.method({
  70106. selector: "testAllSubclasses",
  70107. protocol: "tests",
  70108. //>>excludeStart("ide", pragmas.excludeIdeData);
  70109. args: [],
  70110. source: "testAllSubclasses\x0a\x09| subclasses index |\x0a\x0a\x09subclasses := Object subclasses.\x0a\x09index := 1.\x0a\x09[ index > subclasses size ]\x0a\x09\x09whileFalse: [ subclasses addAll: (subclasses at: index) subclasses.\x0a\x09\x09\x09index := index + 1 ].\x0a\x0a\x09self assert: Object allSubclasses equals: subclasses",
  70111. referencedClasses: ["Object"],
  70112. //>>excludeEnd("ide");
  70113. pragmas: [],
  70114. messageSends: ["subclasses", "whileFalse:", ">", "size", "addAll:", "at:", "+", "assert:equals:", "allSubclasses"]
  70115. }, function ($methodClass){ return function (){
  70116. var self=this,$self=this;
  70117. var subclasses,index;
  70118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70119. return $core.withContext(function($ctx1) {
  70120. //>>excludeEnd("ctx");
  70121. subclasses=[$recv($globals.Object)._subclasses()
  70122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70123. ,$ctx1.sendIdx["subclasses"]=1
  70124. //>>excludeEnd("ctx");
  70125. ][0];
  70126. index=(1);
  70127. $recv((function(){
  70128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70129. return $core.withContext(function($ctx2) {
  70130. //>>excludeEnd("ctx");
  70131. return $recv(index).__gt($recv(subclasses)._size());
  70132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70133. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  70134. //>>excludeEnd("ctx");
  70135. }))._whileFalse_((function(){
  70136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70137. return $core.withContext(function($ctx2) {
  70138. //>>excludeEnd("ctx");
  70139. $recv(subclasses)._addAll_($recv($recv(subclasses)._at_(index))._subclasses());
  70140. index=$recv(index).__plus((1));
  70141. return index;
  70142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70143. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  70144. //>>excludeEnd("ctx");
  70145. }));
  70146. $self._assert_equals_($recv($globals.Object)._allSubclasses(),subclasses);
  70147. return self;
  70148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70149. }, function($ctx1) {$ctx1.fill(self,"testAllSubclasses",{subclasses:subclasses,index:index})});
  70150. //>>excludeEnd("ctx");
  70151. }; }),
  70152. $globals.ClassTest);
  70153. $core.addMethod(
  70154. $core.method({
  70155. selector: "testAlternateConstructorViaSelector",
  70156. protocol: "tests",
  70157. //>>excludeStart("ide", pragmas.excludeIdeData);
  70158. args: [],
  70159. source: "testAlternateConstructorViaSelector\x0a\x09| instance block |\x0a\x09block := ObjectMock alternateConstructorViaSelector: #foo:.\x0a\x0a\x09instance := block newValue: 4.\x0a\x09self assert: instance class == ObjectMock.\x0a\x09self assert: instance foo equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
  70160. referencedClasses: ["ObjectMock", "Error"],
  70161. //>>excludeEnd("ide");
  70162. pragmas: [],
  70163. messageSends: ["alternateConstructorViaSelector:", "newValue:", "assert:", "==", "class", "assert:equals:", "foo", "shouldnt:raise:", "foo:"]
  70164. }, function ($methodClass){ return function (){
  70165. var self=this,$self=this;
  70166. var instance,block;
  70167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70168. return $core.withContext(function($ctx1) {
  70169. //>>excludeEnd("ctx");
  70170. block=$recv($globals.ObjectMock)._alternateConstructorViaSelector_("foo:");
  70171. instance=$recv(block)._newValue_((4));
  70172. $self._assert_($recv($recv(instance)._class()).__eq_eq($globals.ObjectMock));
  70173. [$self._assert_equals_([$recv(instance)._foo()
  70174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70175. ,$ctx1.sendIdx["foo"]=1
  70176. //>>excludeEnd("ctx");
  70177. ][0],(4))
  70178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70179. ,$ctx1.sendIdx["assert:equals:"]=1
  70180. //>>excludeEnd("ctx");
  70181. ][0];
  70182. $self._shouldnt_raise_((function(){
  70183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70184. return $core.withContext(function($ctx2) {
  70185. //>>excludeEnd("ctx");
  70186. return $recv(instance)._foo_((9));
  70187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70188. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  70189. //>>excludeEnd("ctx");
  70190. }),$globals.Error);
  70191. $self._assert_equals_($recv(instance)._foo(),(9));
  70192. return self;
  70193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70194. }, function($ctx1) {$ctx1.fill(self,"testAlternateConstructorViaSelector",{instance:instance,block:block})});
  70195. //>>excludeEnd("ctx");
  70196. }; }),
  70197. $globals.ClassTest);
  70198. $core.addMethod(
  70199. $core.method({
  70200. selector: "testApplySuperConstructor",
  70201. protocol: "tests",
  70202. //>>excludeStart("ide", pragmas.excludeIdeData);
  70203. args: [],
  70204. source: "testApplySuperConstructor\x0a\x09| instance constructor |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09constructor := self jsConstructorWithAction.\x0a\x09theClass beJavaScriptSubclassOf: constructor.\x0a\x09Compiler new\x0a\x09\x09install: 'bar: anObject\x0a\x09\x09\x09ObjectMock2\x0a\x09\x09\x09\x09applySuperConstructorOn: self\x0a\x09\x09\x09\x09withArguments: {anObject}'\x0a\x09\x09forClass: theClass\x0a\x09\x09protocol: 'tests'.\x0a\x09\x22testing specific to late-coupled detached root class\x22\x0a\x09instance := (theClass alternateConstructorViaSelector: #bar:) newValue: 7.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance isJavaScriptInstanceOf: constructor.\x0a\x09self assert: instance foo equals: 7",
  70205. referencedClasses: ["ObjectMock", "Compiler"],
  70206. //>>excludeEnd("ide");
  70207. pragmas: [],
  70208. messageSends: ["copyClass:named:", "jsConstructorWithAction", "beJavaScriptSubclassOf:", "install:forClass:protocol:", "new", "newValue:", "alternateConstructorViaSelector:", "assert:", "==", "class", "assert:isJavaScriptInstanceOf:", "assert:equals:", "foo"]
  70209. }, function ($methodClass){ return function (){
  70210. var self=this,$self=this;
  70211. var instance,constructor;
  70212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70213. return $core.withContext(function($ctx1) {
  70214. //>>excludeEnd("ctx");
  70215. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  70216. constructor=$self._jsConstructorWithAction();
  70217. $recv($self.theClass)._beJavaScriptSubclassOf_(constructor);
  70218. $recv($recv($globals.Compiler)._new())._install_forClass_protocol_("bar: anObject\x0a\x09\x09\x09ObjectMock2\x0a\x09\x09\x09\x09applySuperConstructorOn: self\x0a\x09\x09\x09\x09withArguments: {anObject}",$self.theClass,"tests");
  70219. instance=$recv($recv($self.theClass)._alternateConstructorViaSelector_("bar:"))._newValue_((7));
  70220. $self._assert_($recv($recv(instance)._class()).__eq_eq($self.theClass));
  70221. $self._assert_isJavaScriptInstanceOf_(instance,constructor);
  70222. $self._assert_equals_($recv(instance)._foo(),(7));
  70223. return self;
  70224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70225. }, function($ctx1) {$ctx1.fill(self,"testApplySuperConstructor",{instance:instance,constructor:constructor})});
  70226. //>>excludeEnd("ctx");
  70227. }; }),
  70228. $globals.ClassTest);
  70229. $core.addMethod(
  70230. $core.method({
  70231. selector: "testBeJavaScriptSubclassOf",
  70232. protocol: "tests",
  70233. //>>excludeStart("ide", pragmas.excludeIdeData);
  70234. args: [],
  70235. source: "testBeJavaScriptSubclassOf\x0a\x09| instance constructor |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09constructor := self jsConstructor.\x0a\x09theClass beJavaScriptSubclassOf: constructor.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass isClassCopyOf: ObjectMock.\x0a\x09\x22testing specific to late-coupled detached root class\x22\x0a\x09instance := theClass new.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance isJavaScriptInstanceOf: constructor.\x0a\x09self assert: instance value equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
  70236. referencedClasses: ["ObjectMock", "Error"],
  70237. //>>excludeEnd("ide");
  70238. pragmas: [],
  70239. messageSends: ["copyClass:named:", "jsConstructor", "beJavaScriptSubclassOf:", "assert:equals:", "name", "assert:isClassCopyOf:", "new", "assert:", "==", "class", "assert:isJavaScriptInstanceOf:", "value", "shouldnt:raise:", "foo:", "foo"]
  70240. }, function ($methodClass){ return function (){
  70241. var self=this,$self=this;
  70242. var instance,constructor;
  70243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70244. return $core.withContext(function($ctx1) {
  70245. //>>excludeEnd("ctx");
  70246. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  70247. constructor=$self._jsConstructor();
  70248. $recv($self.theClass)._beJavaScriptSubclassOf_(constructor);
  70249. [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
  70250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70251. ,$ctx1.sendIdx["assert:equals:"]=1
  70252. //>>excludeEnd("ctx");
  70253. ][0];
  70254. $self._assert_isClassCopyOf_($self.theClass,$globals.ObjectMock);
  70255. instance=$recv($self.theClass)._new();
  70256. $self._assert_($recv($recv(instance)._class()).__eq_eq($self.theClass));
  70257. $self._assert_isJavaScriptInstanceOf_(instance,constructor);
  70258. [$self._assert_equals_($recv(instance)._value(),(4))
  70259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70260. ,$ctx1.sendIdx["assert:equals:"]=2
  70261. //>>excludeEnd("ctx");
  70262. ][0];
  70263. $self._shouldnt_raise_((function(){
  70264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70265. return $core.withContext(function($ctx2) {
  70266. //>>excludeEnd("ctx");
  70267. return $recv(instance)._foo_((9));
  70268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70269. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  70270. //>>excludeEnd("ctx");
  70271. }),$globals.Error);
  70272. $self._assert_equals_($recv(instance)._foo(),(9));
  70273. return self;
  70274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70275. }, function($ctx1) {$ctx1.fill(self,"testBeJavaScriptSubclassOf",{instance:instance,constructor:constructor})});
  70276. //>>excludeEnd("ctx");
  70277. }; }),
  70278. $globals.ClassTest);
  70279. $core.addMethod(
  70280. $core.method({
  70281. selector: "testMetaclassSubclasses",
  70282. protocol: "tests",
  70283. //>>excludeStart("ide", pragmas.excludeIdeData);
  70284. args: [],
  70285. source: "testMetaclassSubclasses\x0a\x09| subclasses |\x0a\x0a\x09subclasses := (Object class instanceClass subclasses \x0a\x09\x09select: [ :each | each isMetaclass not ])\x0a\x09\x09collect: [ :each | each theMetaClass ].\x0a\x0a\x09self assert: Object class subclasses equals: subclasses",
  70286. referencedClasses: ["Object"],
  70287. //>>excludeEnd("ide");
  70288. pragmas: [],
  70289. messageSends: ["collect:", "select:", "subclasses", "instanceClass", "class", "not", "isMetaclass", "theMetaClass", "assert:equals:"]
  70290. }, function ($methodClass){ return function (){
  70291. var self=this,$self=this;
  70292. var subclasses;
  70293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70294. return $core.withContext(function($ctx1) {
  70295. //>>excludeEnd("ctx");
  70296. subclasses=$recv($recv([$recv($recv([$recv($globals.Object)._class()
  70297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70298. ,$ctx1.sendIdx["class"]=1
  70299. //>>excludeEnd("ctx");
  70300. ][0])._instanceClass())._subclasses()
  70301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70302. ,$ctx1.sendIdx["subclasses"]=1
  70303. //>>excludeEnd("ctx");
  70304. ][0])._select_((function(each){
  70305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70306. return $core.withContext(function($ctx2) {
  70307. //>>excludeEnd("ctx");
  70308. return $recv($recv(each)._isMetaclass())._not();
  70309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70310. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  70311. //>>excludeEnd("ctx");
  70312. })))._collect_((function(each){
  70313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70314. return $core.withContext(function($ctx2) {
  70315. //>>excludeEnd("ctx");
  70316. return $recv(each)._theMetaClass();
  70317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70318. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  70319. //>>excludeEnd("ctx");
  70320. }));
  70321. $self._assert_equals_($recv($recv($globals.Object)._class())._subclasses(),subclasses);
  70322. return self;
  70323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70324. }, function($ctx1) {$ctx1.fill(self,"testMetaclassSubclasses",{subclasses:subclasses})});
  70325. //>>excludeEnd("ctx");
  70326. }; }),
  70327. $globals.ClassTest);
  70328. $core.addMethod(
  70329. $core.method({
  70330. selector: "testMethodAttachmentsAreAdded",
  70331. protocol: "tests",
  70332. //>>excludeStart("ide", pragmas.excludeIdeData);
  70333. args: [],
  70334. source: "testMethodAttachmentsAreAdded\x0a\x09| instance theMethod anObject |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09anObject := #{#foo -> 'oof'}.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 42. #b -> anObject}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09self assert: (ObjectMock2 new basicAt: #a) equals: 42.\x0a\x09self assert: (ObjectMock2 new basicAt: #b) equals: anObject",
  70335. referencedClasses: ["ObjectMock", "Compiler", "ObjectMock2"],
  70336. //>>excludeEnd("ide");
  70337. pragmas: [],
  70338. messageSends: ["copyClass:named:", "compile:forClass:protocol:", "new", "augmentMethodInstantiationOf:withAttachments:", "addCompiledMethod:", "assert:equals:", "basicAt:"]
  70339. }, function ($methodClass){ return function (){
  70340. var self=this,$self=this;
  70341. var instance,theMethod,anObject;
  70342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70343. return $core.withContext(function($ctx1) {
  70344. //>>excludeEnd("ctx");
  70345. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  70346. anObject=$globals.HashedCollection._newFromPairs_(["foo","oof"]);
  70347. theMethod=$recv([$recv($globals.Compiler)._new()
  70348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70349. ,$ctx1.sendIdx["new"]=1
  70350. //>>excludeEnd("ctx");
  70351. ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test");
  70352. $self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(42),"b",anObject]));
  70353. $recv($globals.ObjectMock2)._addCompiledMethod_(theMethod);
  70354. [$self._assert_equals_([$recv([$recv($globals.ObjectMock2)._new()
  70355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70356. ,$ctx1.sendIdx["new"]=2
  70357. //>>excludeEnd("ctx");
  70358. ][0])._basicAt_("a")
  70359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70360. ,$ctx1.sendIdx["basicAt:"]=1
  70361. //>>excludeEnd("ctx");
  70362. ][0],(42))
  70363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70364. ,$ctx1.sendIdx["assert:equals:"]=1
  70365. //>>excludeEnd("ctx");
  70366. ][0];
  70367. $self._assert_equals_($recv($recv($globals.ObjectMock2)._new())._basicAt_("b"),anObject);
  70368. return self;
  70369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70370. }, function($ctx1) {$ctx1.fill(self,"testMethodAttachmentsAreAdded",{instance:instance,theMethod:theMethod,anObject:anObject})});
  70371. //>>excludeEnd("ctx");
  70372. }; }),
  70373. $globals.ClassTest);
  70374. $core.addMethod(
  70375. $core.method({
  70376. selector: "testMethodAttachmentsAreRemoved",
  70377. protocol: "tests",
  70378. //>>excludeStart("ide", pragmas.excludeIdeData);
  70379. args: [],
  70380. source: "testMethodAttachmentsAreRemoved\x0a\x09| instance theMethod anObject |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09anObject := #{#foo -> 'oof'}.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 42. #b -> anObject}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09self assert: (ObjectMock2 new basicAt: #a) equals: nil.\x0a\x09self assert: (ObjectMock2 new basicAt: #b) equals: nil",
  70381. referencedClasses: ["ObjectMock", "Compiler", "ObjectMock2"],
  70382. //>>excludeEnd("ide");
  70383. pragmas: [],
  70384. messageSends: ["copyClass:named:", "compile:forClass:protocol:", "new", "augmentMethodInstantiationOf:withAttachments:", "addCompiledMethod:", "assert:equals:", "basicAt:"]
  70385. }, function ($methodClass){ return function (){
  70386. var self=this,$self=this;
  70387. var instance,theMethod,anObject;
  70388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70389. return $core.withContext(function($ctx1) {
  70390. //>>excludeEnd("ctx");
  70391. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  70392. anObject=$globals.HashedCollection._newFromPairs_(["foo","oof"]);
  70393. theMethod=[$recv([$recv($globals.Compiler)._new()
  70394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70395. ,$ctx1.sendIdx["new"]=1
  70396. //>>excludeEnd("ctx");
  70397. ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test")
  70398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70399. ,$ctx1.sendIdx["compile:forClass:protocol:"]=1
  70400. //>>excludeEnd("ctx");
  70401. ][0];
  70402. $self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(42),"b",anObject]));
  70403. [$recv($globals.ObjectMock2)._addCompiledMethod_(theMethod)
  70404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70405. ,$ctx1.sendIdx["addCompiledMethod:"]=1
  70406. //>>excludeEnd("ctx");
  70407. ][0];
  70408. theMethod=$recv([$recv($globals.Compiler)._new()
  70409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70410. ,$ctx1.sendIdx["new"]=2
  70411. //>>excludeEnd("ctx");
  70412. ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test");
  70413. $recv($globals.ObjectMock2)._addCompiledMethod_(theMethod);
  70414. [$self._assert_equals_([$recv([$recv($globals.ObjectMock2)._new()
  70415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70416. ,$ctx1.sendIdx["new"]=3
  70417. //>>excludeEnd("ctx");
  70418. ][0])._basicAt_("a")
  70419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70420. ,$ctx1.sendIdx["basicAt:"]=1
  70421. //>>excludeEnd("ctx");
  70422. ][0],nil)
  70423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70424. ,$ctx1.sendIdx["assert:equals:"]=1
  70425. //>>excludeEnd("ctx");
  70426. ][0];
  70427. $self._assert_equals_($recv($recv($globals.ObjectMock2)._new())._basicAt_("b"),nil);
  70428. return self;
  70429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70430. }, function($ctx1) {$ctx1.fill(self,"testMethodAttachmentsAreRemoved",{instance:instance,theMethod:theMethod,anObject:anObject})});
  70431. //>>excludeEnd("ctx");
  70432. }; }),
  70433. $globals.ClassTest);
  70434. $core.addMethod(
  70435. $core.method({
  70436. selector: "testMethodAttachmentsAreRemoved2",
  70437. protocol: "tests",
  70438. //>>excludeStart("ide", pragmas.excludeIdeData);
  70439. args: [],
  70440. source: "testMethodAttachmentsAreRemoved2\x0a\x09| instance theMethod anObject |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09anObject := #{#foo -> 'oof'}.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 42. #b -> anObject}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09ObjectMock2 new bar.\x0a\x09ObjectMock2 removeCompiledMethod: theMethod.\x0a\x09self assert: (ObjectMock2 new basicAt: #a) equals: nil.\x0a\x09self assert: (ObjectMock2 new basicAt: #b) equals: nil",
  70441. referencedClasses: ["ObjectMock", "Compiler", "ObjectMock2"],
  70442. //>>excludeEnd("ide");
  70443. pragmas: [],
  70444. messageSends: ["copyClass:named:", "compile:forClass:protocol:", "new", "augmentMethodInstantiationOf:withAttachments:", "addCompiledMethod:", "bar", "removeCompiledMethod:", "assert:equals:", "basicAt:"]
  70445. }, function ($methodClass){ return function (){
  70446. var self=this,$self=this;
  70447. var instance,theMethod,anObject;
  70448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70449. return $core.withContext(function($ctx1) {
  70450. //>>excludeEnd("ctx");
  70451. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  70452. anObject=$globals.HashedCollection._newFromPairs_(["foo","oof"]);
  70453. theMethod=$recv([$recv($globals.Compiler)._new()
  70454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70455. ,$ctx1.sendIdx["new"]=1
  70456. //>>excludeEnd("ctx");
  70457. ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test");
  70458. $self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(42),"b",anObject]));
  70459. $recv($globals.ObjectMock2)._addCompiledMethod_(theMethod);
  70460. $recv([$recv($globals.ObjectMock2)._new()
  70461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70462. ,$ctx1.sendIdx["new"]=2
  70463. //>>excludeEnd("ctx");
  70464. ][0])._bar();
  70465. $recv($globals.ObjectMock2)._removeCompiledMethod_(theMethod);
  70466. [$self._assert_equals_([$recv([$recv($globals.ObjectMock2)._new()
  70467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70468. ,$ctx1.sendIdx["new"]=3
  70469. //>>excludeEnd("ctx");
  70470. ][0])._basicAt_("a")
  70471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70472. ,$ctx1.sendIdx["basicAt:"]=1
  70473. //>>excludeEnd("ctx");
  70474. ][0],nil)
  70475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70476. ,$ctx1.sendIdx["assert:equals:"]=1
  70477. //>>excludeEnd("ctx");
  70478. ][0];
  70479. $self._assert_equals_($recv($recv($globals.ObjectMock2)._new())._basicAt_("b"),nil);
  70480. return self;
  70481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70482. }, function($ctx1) {$ctx1.fill(self,"testMethodAttachmentsAreRemoved2",{instance:instance,theMethod:theMethod,anObject:anObject})});
  70483. //>>excludeEnd("ctx");
  70484. }; }),
  70485. $globals.ClassTest);
  70486. $core.addMethod(
  70487. $core.method({
  70488. selector: "testMethodAttachmentsAreReplaced",
  70489. protocol: "tests",
  70490. //>>excludeStart("ide", pragmas.excludeIdeData);
  70491. args: [],
  70492. source: "testMethodAttachmentsAreReplaced\x0a\x09| instance theMethod anObject |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09anObject := #{#foo -> 'oof'}.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 42. #b -> anObject}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 6. #c -> [^9]}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09self assert: (ObjectMock2 new basicAt: #a) equals: 6.\x0a\x09self assert: (ObjectMock2 new basicAt: #b) equals: nil.\x0a\x09self assert: (ObjectMock2 new basicPerform: #c) equals: 9",
  70493. referencedClasses: ["ObjectMock", "Compiler", "ObjectMock2"],
  70494. //>>excludeEnd("ide");
  70495. pragmas: [],
  70496. messageSends: ["copyClass:named:", "compile:forClass:protocol:", "new", "augmentMethodInstantiationOf:withAttachments:", "addCompiledMethod:", "assert:equals:", "basicAt:", "basicPerform:"]
  70497. }, function ($methodClass){ return function (){
  70498. var self=this,$self=this;
  70499. var instance,theMethod,anObject;
  70500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70501. return $core.withContext(function($ctx1) {
  70502. //>>excludeEnd("ctx");
  70503. var $early={};
  70504. try {
  70505. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  70506. anObject=$globals.HashedCollection._newFromPairs_(["foo","oof"]);
  70507. theMethod=[$recv([$recv($globals.Compiler)._new()
  70508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70509. ,$ctx1.sendIdx["new"]=1
  70510. //>>excludeEnd("ctx");
  70511. ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test")
  70512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70513. ,$ctx1.sendIdx["compile:forClass:protocol:"]=1
  70514. //>>excludeEnd("ctx");
  70515. ][0];
  70516. [$self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(42),"b",anObject]))
  70517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70518. ,$ctx1.sendIdx["augmentMethodInstantiationOf:withAttachments:"]=1
  70519. //>>excludeEnd("ctx");
  70520. ][0];
  70521. [$recv($globals.ObjectMock2)._addCompiledMethod_(theMethod)
  70522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70523. ,$ctx1.sendIdx["addCompiledMethod:"]=1
  70524. //>>excludeEnd("ctx");
  70525. ][0];
  70526. theMethod=$recv([$recv($globals.Compiler)._new()
  70527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70528. ,$ctx1.sendIdx["new"]=2
  70529. //>>excludeEnd("ctx");
  70530. ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test");
  70531. $self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(6),"c",(function(){
  70532. throw $early=[(9)];
  70533. })]));
  70534. $recv($globals.ObjectMock2)._addCompiledMethod_(theMethod);
  70535. [$self._assert_equals_([$recv([$recv($globals.ObjectMock2)._new()
  70536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70537. ,$ctx1.sendIdx["new"]=3
  70538. //>>excludeEnd("ctx");
  70539. ][0])._basicAt_("a")
  70540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70541. ,$ctx1.sendIdx["basicAt:"]=1
  70542. //>>excludeEnd("ctx");
  70543. ][0],(6))
  70544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70545. ,$ctx1.sendIdx["assert:equals:"]=1
  70546. //>>excludeEnd("ctx");
  70547. ][0];
  70548. [$self._assert_equals_($recv([$recv($globals.ObjectMock2)._new()
  70549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70550. ,$ctx1.sendIdx["new"]=4
  70551. //>>excludeEnd("ctx");
  70552. ][0])._basicAt_("b"),nil)
  70553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70554. ,$ctx1.sendIdx["assert:equals:"]=2
  70555. //>>excludeEnd("ctx");
  70556. ][0];
  70557. $self._assert_equals_($recv($recv($globals.ObjectMock2)._new())._basicPerform_("c"),(9));
  70558. return self;
  70559. }
  70560. catch(e) {if(e===$early)return e[0]; throw e}
  70561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70562. }, function($ctx1) {$ctx1.fill(self,"testMethodAttachmentsAreReplaced",{instance:instance,theMethod:theMethod,anObject:anObject})});
  70563. //>>excludeEnd("ctx");
  70564. }; }),
  70565. $globals.ClassTest);
  70566. $core.addMethod(
  70567. $core.method({
  70568. selector: "testRespondsTo",
  70569. protocol: "tests",
  70570. //>>excludeStart("ide", pragmas.excludeIdeData);
  70571. args: [],
  70572. source: "testRespondsTo\x0a\x09self assert: (Object new respondsTo: #class).\x0a\x09self deny: (Object new respondsTo: #foo).\x0a\x09self assert: (Object respondsTo: #new)",
  70573. referencedClasses: ["Object"],
  70574. //>>excludeEnd("ide");
  70575. pragmas: [],
  70576. messageSends: ["assert:", "respondsTo:", "new", "deny:"]
  70577. }, function ($methodClass){ return function (){
  70578. var self=this,$self=this;
  70579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70580. return $core.withContext(function($ctx1) {
  70581. //>>excludeEnd("ctx");
  70582. [$self._assert_([$recv([$recv($globals.Object)._new()
  70583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70584. ,$ctx1.sendIdx["new"]=1
  70585. //>>excludeEnd("ctx");
  70586. ][0])._respondsTo_("class")
  70587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70588. ,$ctx1.sendIdx["respondsTo:"]=1
  70589. //>>excludeEnd("ctx");
  70590. ][0])
  70591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70592. ,$ctx1.sendIdx["assert:"]=1
  70593. //>>excludeEnd("ctx");
  70594. ][0];
  70595. $self._deny_([$recv($recv($globals.Object)._new())._respondsTo_("foo")
  70596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70597. ,$ctx1.sendIdx["respondsTo:"]=2
  70598. //>>excludeEnd("ctx");
  70599. ][0]);
  70600. $self._assert_($recv($globals.Object)._respondsTo_("new"));
  70601. return self;
  70602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70603. }, function($ctx1) {$ctx1.fill(self,"testRespondsTo",{})});
  70604. //>>excludeEnd("ctx");
  70605. }; }),
  70606. $globals.ClassTest);
  70607. $core.addMethod(
  70608. $core.method({
  70609. selector: "testSetJavaScriptConstructor",
  70610. protocol: "tests",
  70611. //>>excludeStart("ide", pragmas.excludeIdeData);
  70612. args: [],
  70613. source: "testSetJavaScriptConstructor\x0a\x09| instance |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09theClass javaScriptConstructor: self jsConstructor.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass isClassCopyOf: ObjectMock.\x0a\x09\x22testing specific to late-coupled detached root class\x22\x0a\x09instance := theClass new.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance value equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
  70614. referencedClasses: ["ObjectMock", "Error"],
  70615. //>>excludeEnd("ide");
  70616. pragmas: [],
  70617. messageSends: ["copyClass:named:", "javaScriptConstructor:", "jsConstructor", "assert:equals:", "name", "assert:isClassCopyOf:", "new", "assert:", "==", "class", "value", "shouldnt:raise:", "foo:", "foo"]
  70618. }, function ($methodClass){ return function (){
  70619. var self=this,$self=this;
  70620. var instance;
  70621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70622. return $core.withContext(function($ctx1) {
  70623. //>>excludeEnd("ctx");
  70624. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  70625. $recv($self.theClass)._javaScriptConstructor_($self._jsConstructor());
  70626. [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
  70627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70628. ,$ctx1.sendIdx["assert:equals:"]=1
  70629. //>>excludeEnd("ctx");
  70630. ][0];
  70631. $self._assert_isClassCopyOf_($self.theClass,$globals.ObjectMock);
  70632. instance=$recv($self.theClass)._new();
  70633. $self._assert_($recv($recv(instance)._class()).__eq_eq($self.theClass));
  70634. [$self._assert_equals_($recv(instance)._value(),(4))
  70635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70636. ,$ctx1.sendIdx["assert:equals:"]=2
  70637. //>>excludeEnd("ctx");
  70638. ][0];
  70639. $self._shouldnt_raise_((function(){
  70640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70641. return $core.withContext(function($ctx2) {
  70642. //>>excludeEnd("ctx");
  70643. return $recv(instance)._foo_((9));
  70644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70645. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  70646. //>>excludeEnd("ctx");
  70647. }),$globals.Error);
  70648. $self._assert_equals_($recv(instance)._foo(),(9));
  70649. return self;
  70650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70651. }, function($ctx1) {$ctx1.fill(self,"testSetJavaScriptConstructor",{instance:instance})});
  70652. //>>excludeEnd("ctx");
  70653. }; }),
  70654. $globals.ClassTest);
  70655. $core.addMethod(
  70656. $core.method({
  70657. selector: "testTrickySetJavaScriptConstructor",
  70658. protocol: "tests",
  70659. //>>excludeStart("ide", pragmas.excludeIdeData);
  70660. args: [],
  70661. source: "testTrickySetJavaScriptConstructor\x0a\x09| instance |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09theClass javaScriptConstructor: self trickyJsConstructor.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass isClassCopyOf: ObjectMock.\x0a\x09\x22testing specific to late-coupled detached root class\x22\x0a\x09instance := theClass new.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance value equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
  70662. referencedClasses: ["ObjectMock", "Error"],
  70663. //>>excludeEnd("ide");
  70664. pragmas: [],
  70665. messageSends: ["copyClass:named:", "javaScriptConstructor:", "trickyJsConstructor", "assert:equals:", "name", "assert:isClassCopyOf:", "new", "assert:", "==", "class", "value", "shouldnt:raise:", "foo:", "foo"]
  70666. }, function ($methodClass){ return function (){
  70667. var self=this,$self=this;
  70668. var instance;
  70669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70670. return $core.withContext(function($ctx1) {
  70671. //>>excludeEnd("ctx");
  70672. $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
  70673. $recv($self.theClass)._javaScriptConstructor_($self._trickyJsConstructor());
  70674. [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
  70675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70676. ,$ctx1.sendIdx["assert:equals:"]=1
  70677. //>>excludeEnd("ctx");
  70678. ][0];
  70679. $self._assert_isClassCopyOf_($self.theClass,$globals.ObjectMock);
  70680. instance=$recv($self.theClass)._new();
  70681. $self._assert_($recv($recv(instance)._class()).__eq_eq($self.theClass));
  70682. [$self._assert_equals_($recv(instance)._value(),(4))
  70683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70684. ,$ctx1.sendIdx["assert:equals:"]=2
  70685. //>>excludeEnd("ctx");
  70686. ][0];
  70687. $self._shouldnt_raise_((function(){
  70688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70689. return $core.withContext(function($ctx2) {
  70690. //>>excludeEnd("ctx");
  70691. return $recv(instance)._foo_((9));
  70692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70693. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  70694. //>>excludeEnd("ctx");
  70695. }),$globals.Error);
  70696. $self._assert_equals_($recv(instance)._foo(),(9));
  70697. return self;
  70698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70699. }, function($ctx1) {$ctx1.fill(self,"testTrickySetJavaScriptConstructor",{instance:instance})});
  70700. //>>excludeEnd("ctx");
  70701. }; }),
  70702. $globals.ClassTest);
  70703. $core.addMethod(
  70704. $core.method({
  70705. selector: "theClass",
  70706. protocol: "accessing",
  70707. //>>excludeStart("ide", pragmas.excludeIdeData);
  70708. args: [],
  70709. source: "theClass\x0a\x09^ theClass",
  70710. referencedClasses: [],
  70711. //>>excludeEnd("ide");
  70712. pragmas: [],
  70713. messageSends: []
  70714. }, function ($methodClass){ return function (){
  70715. var self=this,$self=this;
  70716. return $self.theClass;
  70717. }; }),
  70718. $globals.ClassTest);
  70719. $core.addMethod(
  70720. $core.method({
  70721. selector: "trickyJsConstructor",
  70722. protocol: "running",
  70723. //>>excludeStart("ide", pragmas.excludeIdeData);
  70724. args: [],
  70725. source: "trickyJsConstructor\x0a\x09<inlineJS: '\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09Foo.prototype._foo = function () {return \x22bar\x22;};\x0a\x09\x09return Foo;\x0a\x09'>",
  70726. referencedClasses: [],
  70727. //>>excludeEnd("ide");
  70728. pragmas: [["inlineJS:", ["\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09Foo.prototype._foo = function () {return \x22bar\x22;};\x0a\x09\x09return Foo;\x0a\x09"]]],
  70729. messageSends: []
  70730. }, function ($methodClass){ return function (){
  70731. var self=this,$self=this;
  70732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70733. return $core.withContext(function($ctx1) {
  70734. //>>excludeEnd("ctx");
  70735. function Foo(){}
  70736. Foo.prototype.valueOf = function () {return 4;};
  70737. Foo.prototype._foo = function () {return "bar";};
  70738. return Foo;
  70739. ;
  70740. return self;
  70741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70742. }, function($ctx1) {$ctx1.fill(self,"trickyJsConstructor",{})});
  70743. //>>excludeEnd("ctx");
  70744. }; }),
  70745. $globals.ClassTest);
  70746. $core.addClass("CollectionTest", $globals.TestCase, "Kernel-Tests");
  70747. $core.setSlots($globals.CollectionTest, ["sampleBlock"]);
  70748. $core.addMethod(
  70749. $core.method({
  70750. selector: "assertSameContents:as:",
  70751. protocol: "convenience",
  70752. //>>excludeStart("ide", pragmas.excludeIdeData);
  70753. args: ["aCollection", "anotherCollection"],
  70754. source: "assertSameContents: aCollection as: anotherCollection\x0a\x09self assert: (aCollection size = anotherCollection size).\x0a\x09aCollection do: [ :each |\x0a\x09\x09self assert: ((aCollection occurrencesOf: each) = (anotherCollection occurrencesOf: each)) ]",
  70755. referencedClasses: [],
  70756. //>>excludeEnd("ide");
  70757. pragmas: [],
  70758. messageSends: ["assert:", "=", "size", "do:", "occurrencesOf:"]
  70759. }, function ($methodClass){ return function (aCollection,anotherCollection){
  70760. var self=this,$self=this;
  70761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70762. return $core.withContext(function($ctx1) {
  70763. //>>excludeEnd("ctx");
  70764. [$self._assert_([$recv([$recv(aCollection)._size()
  70765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70766. ,$ctx1.sendIdx["size"]=1
  70767. //>>excludeEnd("ctx");
  70768. ][0]).__eq($recv(anotherCollection)._size())
  70769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70770. ,$ctx1.sendIdx["="]=1
  70771. //>>excludeEnd("ctx");
  70772. ][0])
  70773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70774. ,$ctx1.sendIdx["assert:"]=1
  70775. //>>excludeEnd("ctx");
  70776. ][0];
  70777. $recv(aCollection)._do_((function(each){
  70778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70779. return $core.withContext(function($ctx2) {
  70780. //>>excludeEnd("ctx");
  70781. return $self._assert_($recv([$recv(aCollection)._occurrencesOf_(each)
  70782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70783. ,$ctx2.sendIdx["occurrencesOf:"]=1
  70784. //>>excludeEnd("ctx");
  70785. ][0]).__eq($recv(anotherCollection)._occurrencesOf_(each)));
  70786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70787. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  70788. //>>excludeEnd("ctx");
  70789. }));
  70790. return self;
  70791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70792. }, function($ctx1) {$ctx1.fill(self,"assertSameContents:as:",{aCollection:aCollection,anotherCollection:anotherCollection})});
  70793. //>>excludeEnd("ctx");
  70794. }; }),
  70795. $globals.CollectionTest);
  70796. $core.addMethod(
  70797. $core.method({
  70798. selector: "collection",
  70799. protocol: "fixture",
  70800. //>>excludeStart("ide", pragmas.excludeIdeData);
  70801. args: [],
  70802. source: "collection\x0a\x09\x22Answers pre-filled collection of type tested.\x22\x0a\x0a\x09self subclassResponsibility",
  70803. referencedClasses: [],
  70804. //>>excludeEnd("ide");
  70805. pragmas: [],
  70806. messageSends: ["subclassResponsibility"]
  70807. }, function ($methodClass){ return function (){
  70808. var self=this,$self=this;
  70809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70810. return $core.withContext(function($ctx1) {
  70811. //>>excludeEnd("ctx");
  70812. $self._subclassResponsibility();
  70813. return self;
  70814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70815. }, function($ctx1) {$ctx1.fill(self,"collection",{})});
  70816. //>>excludeEnd("ctx");
  70817. }; }),
  70818. $globals.CollectionTest);
  70819. $core.addMethod(
  70820. $core.method({
  70821. selector: "collectionClass",
  70822. protocol: "fixture",
  70823. //>>excludeStart("ide", pragmas.excludeIdeData);
  70824. args: [],
  70825. source: "collectionClass\x0a\x09\x22Answers class of collection type tested\x22\x0a\x0a\x09^ self class collectionClass",
  70826. referencedClasses: [],
  70827. //>>excludeEnd("ide");
  70828. pragmas: [],
  70829. messageSends: ["collectionClass", "class"]
  70830. }, function ($methodClass){ return function (){
  70831. var self=this,$self=this;
  70832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70833. return $core.withContext(function($ctx1) {
  70834. //>>excludeEnd("ctx");
  70835. return $recv($self._class())._collectionClass();
  70836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70837. }, function($ctx1) {$ctx1.fill(self,"collectionClass",{})});
  70838. //>>excludeEnd("ctx");
  70839. }; }),
  70840. $globals.CollectionTest);
  70841. $core.addMethod(
  70842. $core.method({
  70843. selector: "collectionOfPrintStrings",
  70844. protocol: "fixture",
  70845. //>>excludeStart("ide", pragmas.excludeIdeData);
  70846. args: [],
  70847. source: "collectionOfPrintStrings\x0a\x09\x22Answers self collection but with values\x0a\x09changed to their printStrings\x22\x0a\x0a\x09self subclassResponsibility",
  70848. referencedClasses: [],
  70849. //>>excludeEnd("ide");
  70850. pragmas: [],
  70851. messageSends: ["subclassResponsibility"]
  70852. }, function ($methodClass){ return function (){
  70853. var self=this,$self=this;
  70854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70855. return $core.withContext(function($ctx1) {
  70856. //>>excludeEnd("ctx");
  70857. $self._subclassResponsibility();
  70858. return self;
  70859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70860. }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{})});
  70861. //>>excludeEnd("ctx");
  70862. }; }),
  70863. $globals.CollectionTest);
  70864. $core.addMethod(
  70865. $core.method({
  70866. selector: "collectionSize",
  70867. protocol: "fixture",
  70868. //>>excludeStart("ide", pragmas.excludeIdeData);
  70869. args: [],
  70870. source: "collectionSize\x0a\x09\x22Answers size of self collection.\x22\x0a\x0a\x09self subclassResponsibility",
  70871. referencedClasses: [],
  70872. //>>excludeEnd("ide");
  70873. pragmas: [],
  70874. messageSends: ["subclassResponsibility"]
  70875. }, function ($methodClass){ return function (){
  70876. var self=this,$self=this;
  70877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70878. return $core.withContext(function($ctx1) {
  70879. //>>excludeEnd("ctx");
  70880. $self._subclassResponsibility();
  70881. return self;
  70882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70883. }, function($ctx1) {$ctx1.fill(self,"collectionSize",{})});
  70884. //>>excludeEnd("ctx");
  70885. }; }),
  70886. $globals.CollectionTest);
  70887. $core.addMethod(
  70888. $core.method({
  70889. selector: "collectionWithDuplicates",
  70890. protocol: "fixture",
  70891. //>>excludeStart("ide", pragmas.excludeIdeData);
  70892. args: [],
  70893. source: "collectionWithDuplicates\x0a\x09\x22Answers pre-filled collection of type tested,\x0a\x09with exactly six distinct elements,\x0a\x09some of them appearing multiple times, if possible.\x22\x0a\x0a\x09self subclassResponsibility",
  70894. referencedClasses: [],
  70895. //>>excludeEnd("ide");
  70896. pragmas: [],
  70897. messageSends: ["subclassResponsibility"]
  70898. }, function ($methodClass){ return function (){
  70899. var self=this,$self=this;
  70900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70901. return $core.withContext(function($ctx1) {
  70902. //>>excludeEnd("ctx");
  70903. $self._subclassResponsibility();
  70904. return self;
  70905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70906. }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{})});
  70907. //>>excludeEnd("ctx");
  70908. }; }),
  70909. $globals.CollectionTest);
  70910. $core.addMethod(
  70911. $core.method({
  70912. selector: "collectionWithNewValue",
  70913. protocol: "fixture",
  70914. //>>excludeStart("ide", pragmas.excludeIdeData);
  70915. args: [],
  70916. source: "collectionWithNewValue\x0a\x09\x22Answers a collection which shows how\x0a\x09self collection would look after adding\x0a\x09self sampleNewValue\x22\x0a\x09\x0a\x09self subclassResponsibility",
  70917. referencedClasses: [],
  70918. //>>excludeEnd("ide");
  70919. pragmas: [],
  70920. messageSends: ["subclassResponsibility"]
  70921. }, function ($methodClass){ return function (){
  70922. var self=this,$self=this;
  70923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70924. return $core.withContext(function($ctx1) {
  70925. //>>excludeEnd("ctx");
  70926. $self._subclassResponsibility();
  70927. return self;
  70928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70929. }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{})});
  70930. //>>excludeEnd("ctx");
  70931. }; }),
  70932. $globals.CollectionTest);
  70933. $core.addMethod(
  70934. $core.method({
  70935. selector: "initialize",
  70936. protocol: "initialization",
  70937. //>>excludeStart("ide", pragmas.excludeIdeData);
  70938. args: [],
  70939. source: "initialize\x0a\x09super initialize.\x0a\x0a\x09sampleBlock := []",
  70940. referencedClasses: [],
  70941. //>>excludeEnd("ide");
  70942. pragmas: [],
  70943. messageSends: ["initialize"]
  70944. }, function ($methodClass){ return function (){
  70945. var self=this,$self=this;
  70946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70947. return $core.withContext(function($ctx1) {
  70948. //>>excludeEnd("ctx");
  70949. [(
  70950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70951. $ctx1.supercall = true,
  70952. //>>excludeEnd("ctx");
  70953. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  70954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70955. ,$ctx1.supercall = false
  70956. //>>excludeEnd("ctx");
  70957. ][0];
  70958. $self.sampleBlock=(function(){
  70959. });
  70960. return self;
  70961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70962. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  70963. //>>excludeEnd("ctx");
  70964. }; }),
  70965. $globals.CollectionTest);
  70966. $core.addMethod(
  70967. $core.method({
  70968. selector: "sampleNewValue",
  70969. protocol: "fixture",
  70970. //>>excludeStart("ide", pragmas.excludeIdeData);
  70971. args: [],
  70972. source: "sampleNewValue\x0a\x09\x22Answers a value that is not yet there\x0a\x09and can be put into a tested collection\x22\x0a\x09\x0a\x09^ 'N'",
  70973. referencedClasses: [],
  70974. //>>excludeEnd("ide");
  70975. pragmas: [],
  70976. messageSends: []
  70977. }, function ($methodClass){ return function (){
  70978. var self=this,$self=this;
  70979. return "N";
  70980. }; }),
  70981. $globals.CollectionTest);
  70982. $core.addMethod(
  70983. $core.method({
  70984. selector: "sampleNewValueAsCollection",
  70985. protocol: "fixture",
  70986. //>>excludeStart("ide", pragmas.excludeIdeData);
  70987. args: [],
  70988. source: "sampleNewValueAsCollection\x0a\x09\x22Answers self sampleNewValue\x0a\x09wrapped in single element collection\x0a\x09of tested type\x22\x0a\x09\x0a\x09^ self collectionClass with: self sampleNewValue",
  70989. referencedClasses: [],
  70990. //>>excludeEnd("ide");
  70991. pragmas: [],
  70992. messageSends: ["with:", "collectionClass", "sampleNewValue"]
  70993. }, function ($methodClass){ return function (){
  70994. var self=this,$self=this;
  70995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70996. return $core.withContext(function($ctx1) {
  70997. //>>excludeEnd("ctx");
  70998. return $recv($self._collectionClass())._with_($self._sampleNewValue());
  70999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71000. }, function($ctx1) {$ctx1.fill(self,"sampleNewValueAsCollection",{})});
  71001. //>>excludeEnd("ctx");
  71002. }; }),
  71003. $globals.CollectionTest);
  71004. $core.addMethod(
  71005. $core.method({
  71006. selector: "testAddAll",
  71007. protocol: "tests",
  71008. //>>excludeStart("ide", pragmas.excludeIdeData);
  71009. args: [],
  71010. source: "testAddAll\x0a\x09self assert: (self collection addAll: self collectionClass new; yourself) equals: self collection.\x0a\x09self assert: (self collectionClass new addAll: self collection; yourself) equals: self collection.\x0a\x09self assert: (self collectionClass new addAll: self collectionClass new; yourself) equals: self collectionClass new.\x0a\x09self assert: (self collection addAll: self sampleNewValueAsCollection; yourself) equals: self collectionWithNewValue.\x0a\x09self assertSameContents: (self sampleNewValueAsCollection addAll: self collection; yourself) as: self collectionWithNewValue",
  71011. referencedClasses: [],
  71012. //>>excludeEnd("ide");
  71013. pragmas: [],
  71014. messageSends: ["assert:equals:", "addAll:", "collection", "new", "collectionClass", "yourself", "sampleNewValueAsCollection", "collectionWithNewValue", "assertSameContents:as:"]
  71015. }, function ($methodClass){ return function (){
  71016. var self=this,$self=this;
  71017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71018. return $core.withContext(function($ctx1) {
  71019. //>>excludeEnd("ctx");
  71020. var $1,$2,$3,$4,$5;
  71021. $1=[$self._collection()
  71022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71023. ,$ctx1.sendIdx["collection"]=1
  71024. //>>excludeEnd("ctx");
  71025. ][0];
  71026. [$recv($1)._addAll_([$recv([$self._collectionClass()
  71027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71028. ,$ctx1.sendIdx["collectionClass"]=1
  71029. //>>excludeEnd("ctx");
  71030. ][0])._new()
  71031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71032. ,$ctx1.sendIdx["new"]=1
  71033. //>>excludeEnd("ctx");
  71034. ][0])
  71035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71036. ,$ctx1.sendIdx["addAll:"]=1
  71037. //>>excludeEnd("ctx");
  71038. ][0];
  71039. [$self._assert_equals_([$recv($1)._yourself()
  71040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71041. ,$ctx1.sendIdx["yourself"]=1
  71042. //>>excludeEnd("ctx");
  71043. ][0],[$self._collection()
  71044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71045. ,$ctx1.sendIdx["collection"]=2
  71046. //>>excludeEnd("ctx");
  71047. ][0])
  71048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71049. ,$ctx1.sendIdx["assert:equals:"]=1
  71050. //>>excludeEnd("ctx");
  71051. ][0];
  71052. $2=[$recv([$self._collectionClass()
  71053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71054. ,$ctx1.sendIdx["collectionClass"]=2
  71055. //>>excludeEnd("ctx");
  71056. ][0])._new()
  71057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71058. ,$ctx1.sendIdx["new"]=2
  71059. //>>excludeEnd("ctx");
  71060. ][0];
  71061. [$recv($2)._addAll_([$self._collection()
  71062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71063. ,$ctx1.sendIdx["collection"]=3
  71064. //>>excludeEnd("ctx");
  71065. ][0])
  71066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71067. ,$ctx1.sendIdx["addAll:"]=2
  71068. //>>excludeEnd("ctx");
  71069. ][0];
  71070. [$self._assert_equals_([$recv($2)._yourself()
  71071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71072. ,$ctx1.sendIdx["yourself"]=2
  71073. //>>excludeEnd("ctx");
  71074. ][0],[$self._collection()
  71075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71076. ,$ctx1.sendIdx["collection"]=4
  71077. //>>excludeEnd("ctx");
  71078. ][0])
  71079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71080. ,$ctx1.sendIdx["assert:equals:"]=2
  71081. //>>excludeEnd("ctx");
  71082. ][0];
  71083. $3=[$recv([$self._collectionClass()
  71084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71085. ,$ctx1.sendIdx["collectionClass"]=3
  71086. //>>excludeEnd("ctx");
  71087. ][0])._new()
  71088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71089. ,$ctx1.sendIdx["new"]=3
  71090. //>>excludeEnd("ctx");
  71091. ][0];
  71092. [$recv($3)._addAll_([$recv([$self._collectionClass()
  71093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71094. ,$ctx1.sendIdx["collectionClass"]=4
  71095. //>>excludeEnd("ctx");
  71096. ][0])._new()
  71097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71098. ,$ctx1.sendIdx["new"]=4
  71099. //>>excludeEnd("ctx");
  71100. ][0])
  71101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71102. ,$ctx1.sendIdx["addAll:"]=3
  71103. //>>excludeEnd("ctx");
  71104. ][0];
  71105. [$self._assert_equals_([$recv($3)._yourself()
  71106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71107. ,$ctx1.sendIdx["yourself"]=3
  71108. //>>excludeEnd("ctx");
  71109. ][0],$recv($self._collectionClass())._new())
  71110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71111. ,$ctx1.sendIdx["assert:equals:"]=3
  71112. //>>excludeEnd("ctx");
  71113. ][0];
  71114. $4=[$self._collection()
  71115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71116. ,$ctx1.sendIdx["collection"]=5
  71117. //>>excludeEnd("ctx");
  71118. ][0];
  71119. [$recv($4)._addAll_([$self._sampleNewValueAsCollection()
  71120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71121. ,$ctx1.sendIdx["sampleNewValueAsCollection"]=1
  71122. //>>excludeEnd("ctx");
  71123. ][0])
  71124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71125. ,$ctx1.sendIdx["addAll:"]=4
  71126. //>>excludeEnd("ctx");
  71127. ][0];
  71128. $self._assert_equals_([$recv($4)._yourself()
  71129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71130. ,$ctx1.sendIdx["yourself"]=4
  71131. //>>excludeEnd("ctx");
  71132. ][0],[$self._collectionWithNewValue()
  71133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71134. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  71135. //>>excludeEnd("ctx");
  71136. ][0]);
  71137. $5=$self._sampleNewValueAsCollection();
  71138. $recv($5)._addAll_($self._collection());
  71139. $self._assertSameContents_as_($recv($5)._yourself(),$self._collectionWithNewValue());
  71140. return self;
  71141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71142. }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
  71143. //>>excludeEnd("ctx");
  71144. }; }),
  71145. $globals.CollectionTest);
  71146. $core.addMethod(
  71147. $core.method({
  71148. selector: "testAllSatisfy",
  71149. protocol: "tests",
  71150. //>>excludeStart("ide", pragmas.excludeIdeData);
  71151. args: [],
  71152. source: "testAllSatisfy\x0a\x09| collection anyOne |\x0a\x09collection := self collection.\x0a\x09anyOne := collection anyOne.\x0a\x09self assert: (collection allSatisfy: [ :each | collection includes: each ]).\x0a\x09self deny: (collection allSatisfy: [ :each | each ~= anyOne ])",
  71153. referencedClasses: [],
  71154. //>>excludeEnd("ide");
  71155. pragmas: [],
  71156. messageSends: ["collection", "anyOne", "assert:", "allSatisfy:", "includes:", "deny:", "~="]
  71157. }, function ($methodClass){ return function (){
  71158. var self=this,$self=this;
  71159. var collection,anyOne;
  71160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71161. return $core.withContext(function($ctx1) {
  71162. //>>excludeEnd("ctx");
  71163. collection=$self._collection();
  71164. anyOne=$recv(collection)._anyOne();
  71165. $self._assert_([$recv(collection)._allSatisfy_((function(each){
  71166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71167. return $core.withContext(function($ctx2) {
  71168. //>>excludeEnd("ctx");
  71169. return $recv(collection)._includes_(each);
  71170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71171. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  71172. //>>excludeEnd("ctx");
  71173. }))
  71174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71175. ,$ctx1.sendIdx["allSatisfy:"]=1
  71176. //>>excludeEnd("ctx");
  71177. ][0]);
  71178. $self._deny_($recv(collection)._allSatisfy_((function(each){
  71179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71180. return $core.withContext(function($ctx2) {
  71181. //>>excludeEnd("ctx");
  71182. return $recv(each).__tild_eq(anyOne);
  71183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71184. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  71185. //>>excludeEnd("ctx");
  71186. })));
  71187. return self;
  71188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71189. }, function($ctx1) {$ctx1.fill(self,"testAllSatisfy",{collection:collection,anyOne:anyOne})});
  71190. //>>excludeEnd("ctx");
  71191. }; }),
  71192. $globals.CollectionTest);
  71193. $core.addMethod(
  71194. $core.method({
  71195. selector: "testAnyOne",
  71196. protocol: "tests",
  71197. //>>excludeStart("ide", pragmas.excludeIdeData);
  71198. args: [],
  71199. source: "testAnyOne\x0a\x09self should: [ self collectionClass new anyOne ] raise: Error.\x0a\x09self assert: (self collection includes: self collection anyOne)",
  71200. referencedClasses: ["Error"],
  71201. //>>excludeEnd("ide");
  71202. pragmas: [],
  71203. messageSends: ["should:raise:", "anyOne", "new", "collectionClass", "assert:", "includes:", "collection"]
  71204. }, function ($methodClass){ return function (){
  71205. var self=this,$self=this;
  71206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71207. return $core.withContext(function($ctx1) {
  71208. //>>excludeEnd("ctx");
  71209. $self._should_raise_((function(){
  71210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71211. return $core.withContext(function($ctx2) {
  71212. //>>excludeEnd("ctx");
  71213. return [$recv($recv($self._collectionClass())._new())._anyOne()
  71214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71215. ,$ctx2.sendIdx["anyOne"]=1
  71216. //>>excludeEnd("ctx");
  71217. ][0];
  71218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71219. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  71220. //>>excludeEnd("ctx");
  71221. }),$globals.Error);
  71222. $self._assert_($recv([$self._collection()
  71223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71224. ,$ctx1.sendIdx["collection"]=1
  71225. //>>excludeEnd("ctx");
  71226. ][0])._includes_($recv($self._collection())._anyOne()));
  71227. return self;
  71228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71229. }, function($ctx1) {$ctx1.fill(self,"testAnyOne",{})});
  71230. //>>excludeEnd("ctx");
  71231. }; }),
  71232. $globals.CollectionTest);
  71233. $core.addMethod(
  71234. $core.method({
  71235. selector: "testAnySatisfy",
  71236. protocol: "tests",
  71237. //>>excludeStart("ide", pragmas.excludeIdeData);
  71238. args: [],
  71239. source: "testAnySatisfy\x0a\x09| anyOne |\x0a\x09anyOne := self collection anyOne.\x0a\x09self assert: (self collection anySatisfy: [ :each | each = anyOne ]).\x0a\x09self deny: (self collection anySatisfy: [ :each | each = Object new ])",
  71240. referencedClasses: ["Object"],
  71241. //>>excludeEnd("ide");
  71242. pragmas: [],
  71243. messageSends: ["anyOne", "collection", "assert:", "anySatisfy:", "=", "deny:", "new"]
  71244. }, function ($methodClass){ return function (){
  71245. var self=this,$self=this;
  71246. var anyOne;
  71247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71248. return $core.withContext(function($ctx1) {
  71249. //>>excludeEnd("ctx");
  71250. anyOne=$recv([$self._collection()
  71251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71252. ,$ctx1.sendIdx["collection"]=1
  71253. //>>excludeEnd("ctx");
  71254. ][0])._anyOne();
  71255. $self._assert_([$recv([$self._collection()
  71256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71257. ,$ctx1.sendIdx["collection"]=2
  71258. //>>excludeEnd("ctx");
  71259. ][0])._anySatisfy_((function(each){
  71260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71261. return $core.withContext(function($ctx2) {
  71262. //>>excludeEnd("ctx");
  71263. return [$recv(each).__eq(anyOne)
  71264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71265. ,$ctx2.sendIdx["="]=1
  71266. //>>excludeEnd("ctx");
  71267. ][0];
  71268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71269. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  71270. //>>excludeEnd("ctx");
  71271. }))
  71272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71273. ,$ctx1.sendIdx["anySatisfy:"]=1
  71274. //>>excludeEnd("ctx");
  71275. ][0]);
  71276. $self._deny_($recv($self._collection())._anySatisfy_((function(each){
  71277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71278. return $core.withContext(function($ctx2) {
  71279. //>>excludeEnd("ctx");
  71280. return $recv(each).__eq($recv($globals.Object)._new());
  71281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71282. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  71283. //>>excludeEnd("ctx");
  71284. })));
  71285. return self;
  71286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71287. }, function($ctx1) {$ctx1.fill(self,"testAnySatisfy",{anyOne:anyOne})});
  71288. //>>excludeEnd("ctx");
  71289. }; }),
  71290. $globals.CollectionTest);
  71291. $core.addMethod(
  71292. $core.method({
  71293. selector: "testAsArray",
  71294. protocol: "tests",
  71295. //>>excludeStart("ide", pragmas.excludeIdeData);
  71296. args: [],
  71297. source: "testAsArray\x0a\x09self\x0a\x09\x09assertSameContents: self collection\x0a\x09\x09as: self collection asArray",
  71298. referencedClasses: [],
  71299. //>>excludeEnd("ide");
  71300. pragmas: [],
  71301. messageSends: ["assertSameContents:as:", "collection", "asArray"]
  71302. }, function ($methodClass){ return function (){
  71303. var self=this,$self=this;
  71304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71305. return $core.withContext(function($ctx1) {
  71306. //>>excludeEnd("ctx");
  71307. $self._assertSameContents_as_([$self._collection()
  71308. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71309. ,$ctx1.sendIdx["collection"]=1
  71310. //>>excludeEnd("ctx");
  71311. ][0],$recv($self._collection())._asArray());
  71312. return self;
  71313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71314. }, function($ctx1) {$ctx1.fill(self,"testAsArray",{})});
  71315. //>>excludeEnd("ctx");
  71316. }; }),
  71317. $globals.CollectionTest);
  71318. $core.addMethod(
  71319. $core.method({
  71320. selector: "testAsOrderedCollection",
  71321. protocol: "tests",
  71322. //>>excludeStart("ide", pragmas.excludeIdeData);
  71323. args: [],
  71324. source: "testAsOrderedCollection\x0a\x09self\x0a\x09\x09assertSameContents: self collection\x0a\x09\x09as: self collection asOrderedCollection",
  71325. referencedClasses: [],
  71326. //>>excludeEnd("ide");
  71327. pragmas: [],
  71328. messageSends: ["assertSameContents:as:", "collection", "asOrderedCollection"]
  71329. }, function ($methodClass){ return function (){
  71330. var self=this,$self=this;
  71331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71332. return $core.withContext(function($ctx1) {
  71333. //>>excludeEnd("ctx");
  71334. $self._assertSameContents_as_([$self._collection()
  71335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71336. ,$ctx1.sendIdx["collection"]=1
  71337. //>>excludeEnd("ctx");
  71338. ][0],$recv($self._collection())._asOrderedCollection());
  71339. return self;
  71340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71341. }, function($ctx1) {$ctx1.fill(self,"testAsOrderedCollection",{})});
  71342. //>>excludeEnd("ctx");
  71343. }; }),
  71344. $globals.CollectionTest);
  71345. $core.addMethod(
  71346. $core.method({
  71347. selector: "testAsSet",
  71348. protocol: "tests",
  71349. //>>excludeStart("ide", pragmas.excludeIdeData);
  71350. args: [],
  71351. source: "testAsSet\x0a\x09| c set |\x0a\x09c := self collectionWithDuplicates.\x0a\x09set := c asSet.\x0a\x09self assert: set size equals: 6.\x0a\x09c do: [ :each |\x0a\x09\x09self assert: (set includes: each) ]",
  71352. referencedClasses: [],
  71353. //>>excludeEnd("ide");
  71354. pragmas: [],
  71355. messageSends: ["collectionWithDuplicates", "asSet", "assert:equals:", "size", "do:", "assert:", "includes:"]
  71356. }, function ($methodClass){ return function (){
  71357. var self=this,$self=this;
  71358. var c,set;
  71359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71360. return $core.withContext(function($ctx1) {
  71361. //>>excludeEnd("ctx");
  71362. c=$self._collectionWithDuplicates();
  71363. set=$recv(c)._asSet();
  71364. $self._assert_equals_($recv(set)._size(),(6));
  71365. $recv(c)._do_((function(each){
  71366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71367. return $core.withContext(function($ctx2) {
  71368. //>>excludeEnd("ctx");
  71369. return $self._assert_($recv(set)._includes_(each));
  71370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71371. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  71372. //>>excludeEnd("ctx");
  71373. }));
  71374. return self;
  71375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71376. }, function($ctx1) {$ctx1.fill(self,"testAsSet",{c:c,set:set})});
  71377. //>>excludeEnd("ctx");
  71378. }; }),
  71379. $globals.CollectionTest);
  71380. $core.addMethod(
  71381. $core.method({
  71382. selector: "testCollect",
  71383. protocol: "tests",
  71384. //>>excludeStart("ide", pragmas.excludeIdeData);
  71385. args: [],
  71386. source: "testCollect\x0a\x09self assert: (self collection collect: [ :each | each ]) equals: self collection.\x0a\x09self assert: (self collectionWithNewValue collect: [ :each | each ]) equals: self collectionWithNewValue.\x0a\x09self assert: (self collectionClass new collect: [ :each | each printString ]) equals: self collectionClass new.\x0a\x09self assert: ((self collection collect: [ self sampleNewValue ]) detect: [ true ]) equals: self sampleNewValue.\x0a\x09self assert: (self collection collect: [ :each | each printString ]) equals: self collectionOfPrintStrings",
  71387. referencedClasses: [],
  71388. //>>excludeEnd("ide");
  71389. pragmas: [],
  71390. messageSends: ["assert:equals:", "collect:", "collection", "collectionWithNewValue", "new", "collectionClass", "printString", "detect:", "sampleNewValue", "collectionOfPrintStrings"]
  71391. }, function ($methodClass){ return function (){
  71392. var self=this,$self=this;
  71393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71394. return $core.withContext(function($ctx1) {
  71395. //>>excludeEnd("ctx");
  71396. [$self._assert_equals_([$recv([$self._collection()
  71397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71398. ,$ctx1.sendIdx["collection"]=1
  71399. //>>excludeEnd("ctx");
  71400. ][0])._collect_((function(each){
  71401. return each;
  71402. }))
  71403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71404. ,$ctx1.sendIdx["collect:"]=1
  71405. //>>excludeEnd("ctx");
  71406. ][0],[$self._collection()
  71407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71408. ,$ctx1.sendIdx["collection"]=2
  71409. //>>excludeEnd("ctx");
  71410. ][0])
  71411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71412. ,$ctx1.sendIdx["assert:equals:"]=1
  71413. //>>excludeEnd("ctx");
  71414. ][0];
  71415. [$self._assert_equals_([$recv([$self._collectionWithNewValue()
  71416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71417. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  71418. //>>excludeEnd("ctx");
  71419. ][0])._collect_((function(each){
  71420. return each;
  71421. }))
  71422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71423. ,$ctx1.sendIdx["collect:"]=2
  71424. //>>excludeEnd("ctx");
  71425. ][0],$self._collectionWithNewValue())
  71426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71427. ,$ctx1.sendIdx["assert:equals:"]=2
  71428. //>>excludeEnd("ctx");
  71429. ][0];
  71430. [$self._assert_equals_([$recv([$recv([$self._collectionClass()
  71431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71432. ,$ctx1.sendIdx["collectionClass"]=1
  71433. //>>excludeEnd("ctx");
  71434. ][0])._new()
  71435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71436. ,$ctx1.sendIdx["new"]=1
  71437. //>>excludeEnd("ctx");
  71438. ][0])._collect_((function(each){
  71439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71440. return $core.withContext(function($ctx2) {
  71441. //>>excludeEnd("ctx");
  71442. return [$recv(each)._printString()
  71443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71444. ,$ctx2.sendIdx["printString"]=1
  71445. //>>excludeEnd("ctx");
  71446. ][0];
  71447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71448. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  71449. //>>excludeEnd("ctx");
  71450. }))
  71451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71452. ,$ctx1.sendIdx["collect:"]=3
  71453. //>>excludeEnd("ctx");
  71454. ][0],$recv($self._collectionClass())._new())
  71455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71456. ,$ctx1.sendIdx["assert:equals:"]=3
  71457. //>>excludeEnd("ctx");
  71458. ][0];
  71459. [$self._assert_equals_($recv([$recv([$self._collection()
  71460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71461. ,$ctx1.sendIdx["collection"]=3
  71462. //>>excludeEnd("ctx");
  71463. ][0])._collect_((function(){
  71464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71465. return $core.withContext(function($ctx2) {
  71466. //>>excludeEnd("ctx");
  71467. return [$self._sampleNewValue()
  71468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71469. ,$ctx2.sendIdx["sampleNewValue"]=1
  71470. //>>excludeEnd("ctx");
  71471. ][0];
  71472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71473. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  71474. //>>excludeEnd("ctx");
  71475. }))
  71476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71477. ,$ctx1.sendIdx["collect:"]=4
  71478. //>>excludeEnd("ctx");
  71479. ][0])._detect_((function(){
  71480. return true;
  71481. })),$self._sampleNewValue())
  71482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71483. ,$ctx1.sendIdx["assert:equals:"]=4
  71484. //>>excludeEnd("ctx");
  71485. ][0];
  71486. $self._assert_equals_($recv($self._collection())._collect_((function(each){
  71487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71488. return $core.withContext(function($ctx2) {
  71489. //>>excludeEnd("ctx");
  71490. return $recv(each)._printString();
  71491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71492. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
  71493. //>>excludeEnd("ctx");
  71494. })),$self._collectionOfPrintStrings());
  71495. return self;
  71496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71497. }, function($ctx1) {$ctx1.fill(self,"testCollect",{})});
  71498. //>>excludeEnd("ctx");
  71499. }; }),
  71500. $globals.CollectionTest);
  71501. $core.addMethod(
  71502. $core.method({
  71503. selector: "testComma",
  71504. protocol: "tests",
  71505. //>>excludeStart("ide", pragmas.excludeIdeData);
  71506. args: [],
  71507. source: "testComma\x0a\x09self assert: self collection, self collectionClass new equals: self collection.\x0a\x09self assert: self collectionClass new, self collection equals: self collection.\x0a\x09self assert: self collectionClass new, self collectionClass new equals: self collectionClass new.\x0a\x09self assert: self collection, self sampleNewValueAsCollection equals: self collectionWithNewValue",
  71508. referencedClasses: [],
  71509. //>>excludeEnd("ide");
  71510. pragmas: [],
  71511. messageSends: ["assert:equals:", ",", "collection", "new", "collectionClass", "sampleNewValueAsCollection", "collectionWithNewValue"]
  71512. }, function ($methodClass){ return function (){
  71513. var self=this,$self=this;
  71514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71515. return $core.withContext(function($ctx1) {
  71516. //>>excludeEnd("ctx");
  71517. [$self._assert_equals_([$recv([$self._collection()
  71518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71519. ,$ctx1.sendIdx["collection"]=1
  71520. //>>excludeEnd("ctx");
  71521. ][0]).__comma([$recv([$self._collectionClass()
  71522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71523. ,$ctx1.sendIdx["collectionClass"]=1
  71524. //>>excludeEnd("ctx");
  71525. ][0])._new()
  71526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71527. ,$ctx1.sendIdx["new"]=1
  71528. //>>excludeEnd("ctx");
  71529. ][0])
  71530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71531. ,$ctx1.sendIdx[","]=1
  71532. //>>excludeEnd("ctx");
  71533. ][0],[$self._collection()
  71534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71535. ,$ctx1.sendIdx["collection"]=2
  71536. //>>excludeEnd("ctx");
  71537. ][0])
  71538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71539. ,$ctx1.sendIdx["assert:equals:"]=1
  71540. //>>excludeEnd("ctx");
  71541. ][0];
  71542. [$self._assert_equals_([$recv([$recv([$self._collectionClass()
  71543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71544. ,$ctx1.sendIdx["collectionClass"]=2
  71545. //>>excludeEnd("ctx");
  71546. ][0])._new()
  71547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71548. ,$ctx1.sendIdx["new"]=2
  71549. //>>excludeEnd("ctx");
  71550. ][0]).__comma([$self._collection()
  71551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71552. ,$ctx1.sendIdx["collection"]=3
  71553. //>>excludeEnd("ctx");
  71554. ][0])
  71555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71556. ,$ctx1.sendIdx[","]=2
  71557. //>>excludeEnd("ctx");
  71558. ][0],[$self._collection()
  71559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71560. ,$ctx1.sendIdx["collection"]=4
  71561. //>>excludeEnd("ctx");
  71562. ][0])
  71563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71564. ,$ctx1.sendIdx["assert:equals:"]=2
  71565. //>>excludeEnd("ctx");
  71566. ][0];
  71567. [$self._assert_equals_([$recv([$recv([$self._collectionClass()
  71568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71569. ,$ctx1.sendIdx["collectionClass"]=3
  71570. //>>excludeEnd("ctx");
  71571. ][0])._new()
  71572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71573. ,$ctx1.sendIdx["new"]=3
  71574. //>>excludeEnd("ctx");
  71575. ][0]).__comma([$recv([$self._collectionClass()
  71576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71577. ,$ctx1.sendIdx["collectionClass"]=4
  71578. //>>excludeEnd("ctx");
  71579. ][0])._new()
  71580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71581. ,$ctx1.sendIdx["new"]=4
  71582. //>>excludeEnd("ctx");
  71583. ][0])
  71584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71585. ,$ctx1.sendIdx[","]=3
  71586. //>>excludeEnd("ctx");
  71587. ][0],$recv($self._collectionClass())._new())
  71588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71589. ,$ctx1.sendIdx["assert:equals:"]=3
  71590. //>>excludeEnd("ctx");
  71591. ][0];
  71592. $self._assert_equals_($recv($self._collection()).__comma($self._sampleNewValueAsCollection()),$self._collectionWithNewValue());
  71593. return self;
  71594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71595. }, function($ctx1) {$ctx1.fill(self,"testComma",{})});
  71596. //>>excludeEnd("ctx");
  71597. }; }),
  71598. $globals.CollectionTest);
  71599. $core.addMethod(
  71600. $core.method({
  71601. selector: "testCopy",
  71602. protocol: "tests",
  71603. //>>excludeStart("ide", pragmas.excludeIdeData);
  71604. args: [],
  71605. source: "testCopy\x0a\x09self assert: self collectionClass new copy equals: self collectionClass new.\x0a\x09self assert: self collection copy equals: self collection.\x0a\x09self assert: self collectionWithNewValue copy equals: self collectionWithNewValue.\x0a\x09\x0a\x09self deny: self collectionClass new copy = self collection.\x0a\x09self deny: self collection copy = self collectionClass new.\x0a\x09self deny: self collection copy = self collectionWithNewValue",
  71606. referencedClasses: [],
  71607. //>>excludeEnd("ide");
  71608. pragmas: [],
  71609. messageSends: ["assert:equals:", "copy", "new", "collectionClass", "collection", "collectionWithNewValue", "deny:", "="]
  71610. }, function ($methodClass){ return function (){
  71611. var self=this,$self=this;
  71612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71613. return $core.withContext(function($ctx1) {
  71614. //>>excludeEnd("ctx");
  71615. [$self._assert_equals_([$recv([$recv([$self._collectionClass()
  71616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71617. ,$ctx1.sendIdx["collectionClass"]=1
  71618. //>>excludeEnd("ctx");
  71619. ][0])._new()
  71620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71621. ,$ctx1.sendIdx["new"]=1
  71622. //>>excludeEnd("ctx");
  71623. ][0])._copy()
  71624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71625. ,$ctx1.sendIdx["copy"]=1
  71626. //>>excludeEnd("ctx");
  71627. ][0],[$recv([$self._collectionClass()
  71628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71629. ,$ctx1.sendIdx["collectionClass"]=2
  71630. //>>excludeEnd("ctx");
  71631. ][0])._new()
  71632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71633. ,$ctx1.sendIdx["new"]=2
  71634. //>>excludeEnd("ctx");
  71635. ][0])
  71636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71637. ,$ctx1.sendIdx["assert:equals:"]=1
  71638. //>>excludeEnd("ctx");
  71639. ][0];
  71640. [$self._assert_equals_([$recv([$self._collection()
  71641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71642. ,$ctx1.sendIdx["collection"]=1
  71643. //>>excludeEnd("ctx");
  71644. ][0])._copy()
  71645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71646. ,$ctx1.sendIdx["copy"]=2
  71647. //>>excludeEnd("ctx");
  71648. ][0],[$self._collection()
  71649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71650. ,$ctx1.sendIdx["collection"]=2
  71651. //>>excludeEnd("ctx");
  71652. ][0])
  71653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71654. ,$ctx1.sendIdx["assert:equals:"]=2
  71655. //>>excludeEnd("ctx");
  71656. ][0];
  71657. $self._assert_equals_([$recv([$self._collectionWithNewValue()
  71658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71659. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  71660. //>>excludeEnd("ctx");
  71661. ][0])._copy()
  71662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71663. ,$ctx1.sendIdx["copy"]=3
  71664. //>>excludeEnd("ctx");
  71665. ][0],[$self._collectionWithNewValue()
  71666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71667. ,$ctx1.sendIdx["collectionWithNewValue"]=2
  71668. //>>excludeEnd("ctx");
  71669. ][0]);
  71670. [$self._deny_([$recv([$recv([$recv([$self._collectionClass()
  71671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71672. ,$ctx1.sendIdx["collectionClass"]=3
  71673. //>>excludeEnd("ctx");
  71674. ][0])._new()
  71675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71676. ,$ctx1.sendIdx["new"]=3
  71677. //>>excludeEnd("ctx");
  71678. ][0])._copy()
  71679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71680. ,$ctx1.sendIdx["copy"]=4
  71681. //>>excludeEnd("ctx");
  71682. ][0]).__eq([$self._collection()
  71683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71684. ,$ctx1.sendIdx["collection"]=3
  71685. //>>excludeEnd("ctx");
  71686. ][0])
  71687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71688. ,$ctx1.sendIdx["="]=1
  71689. //>>excludeEnd("ctx");
  71690. ][0])
  71691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71692. ,$ctx1.sendIdx["deny:"]=1
  71693. //>>excludeEnd("ctx");
  71694. ][0];
  71695. [$self._deny_([$recv([$recv([$self._collection()
  71696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71697. ,$ctx1.sendIdx["collection"]=4
  71698. //>>excludeEnd("ctx");
  71699. ][0])._copy()
  71700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71701. ,$ctx1.sendIdx["copy"]=5
  71702. //>>excludeEnd("ctx");
  71703. ][0]).__eq($recv($self._collectionClass())._new())
  71704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71705. ,$ctx1.sendIdx["="]=2
  71706. //>>excludeEnd("ctx");
  71707. ][0])
  71708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71709. ,$ctx1.sendIdx["deny:"]=2
  71710. //>>excludeEnd("ctx");
  71711. ][0];
  71712. $self._deny_($recv($recv($self._collection())._copy()).__eq($self._collectionWithNewValue()));
  71713. return self;
  71714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71715. }, function($ctx1) {$ctx1.fill(self,"testCopy",{})});
  71716. //>>excludeEnd("ctx");
  71717. }; }),
  71718. $globals.CollectionTest);
  71719. $core.addMethod(
  71720. $core.method({
  71721. selector: "testCopyEmpty",
  71722. protocol: "tests",
  71723. //>>excludeStart("ide", pragmas.excludeIdeData);
  71724. args: [],
  71725. source: "testCopyEmpty\x0a\x09self assert: self collectionClass new copyEmpty equals: self collectionClass new.\x0a\x09self assert: self collection copyEmpty equals: self collectionClass new.\x0a\x09self assert: self collectionWithNewValue copyEmpty equals: self collectionClass new",
  71726. referencedClasses: [],
  71727. //>>excludeEnd("ide");
  71728. pragmas: [],
  71729. messageSends: ["assert:equals:", "copyEmpty", "new", "collectionClass", "collection", "collectionWithNewValue"]
  71730. }, function ($methodClass){ return function (){
  71731. var self=this,$self=this;
  71732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71733. return $core.withContext(function($ctx1) {
  71734. //>>excludeEnd("ctx");
  71735. [$self._assert_equals_([$recv([$recv([$self._collectionClass()
  71736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71737. ,$ctx1.sendIdx["collectionClass"]=1
  71738. //>>excludeEnd("ctx");
  71739. ][0])._new()
  71740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71741. ,$ctx1.sendIdx["new"]=1
  71742. //>>excludeEnd("ctx");
  71743. ][0])._copyEmpty()
  71744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71745. ,$ctx1.sendIdx["copyEmpty"]=1
  71746. //>>excludeEnd("ctx");
  71747. ][0],[$recv([$self._collectionClass()
  71748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71749. ,$ctx1.sendIdx["collectionClass"]=2
  71750. //>>excludeEnd("ctx");
  71751. ][0])._new()
  71752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71753. ,$ctx1.sendIdx["new"]=2
  71754. //>>excludeEnd("ctx");
  71755. ][0])
  71756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71757. ,$ctx1.sendIdx["assert:equals:"]=1
  71758. //>>excludeEnd("ctx");
  71759. ][0];
  71760. [$self._assert_equals_([$recv($self._collection())._copyEmpty()
  71761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71762. ,$ctx1.sendIdx["copyEmpty"]=2
  71763. //>>excludeEnd("ctx");
  71764. ][0],[$recv([$self._collectionClass()
  71765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71766. ,$ctx1.sendIdx["collectionClass"]=3
  71767. //>>excludeEnd("ctx");
  71768. ][0])._new()
  71769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71770. ,$ctx1.sendIdx["new"]=3
  71771. //>>excludeEnd("ctx");
  71772. ][0])
  71773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71774. ,$ctx1.sendIdx["assert:equals:"]=2
  71775. //>>excludeEnd("ctx");
  71776. ][0];
  71777. $self._assert_equals_($recv($self._collectionWithNewValue())._copyEmpty(),$recv($self._collectionClass())._new());
  71778. return self;
  71779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71780. }, function($ctx1) {$ctx1.fill(self,"testCopyEmpty",{})});
  71781. //>>excludeEnd("ctx");
  71782. }; }),
  71783. $globals.CollectionTest);
  71784. $core.addMethod(
  71785. $core.method({
  71786. selector: "testCopySeparates",
  71787. protocol: "tests",
  71788. //>>excludeStart("ide", pragmas.excludeIdeData);
  71789. args: [],
  71790. source: "testCopySeparates\x0a\x09| original copy |\x0a\x09original := self collection.\x0a\x09copy := original copy.\x0a\x09copy addAll: self sampleNewValueAsCollection.\x0a\x09self assert: original = self collection",
  71791. referencedClasses: [],
  71792. //>>excludeEnd("ide");
  71793. pragmas: [],
  71794. messageSends: ["collection", "copy", "addAll:", "sampleNewValueAsCollection", "assert:", "="]
  71795. }, function ($methodClass){ return function (){
  71796. var self=this,$self=this;
  71797. var original,copy;
  71798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71799. return $core.withContext(function($ctx1) {
  71800. //>>excludeEnd("ctx");
  71801. original=[$self._collection()
  71802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71803. ,$ctx1.sendIdx["collection"]=1
  71804. //>>excludeEnd("ctx");
  71805. ][0];
  71806. copy=$recv(original)._copy();
  71807. $recv(copy)._addAll_($self._sampleNewValueAsCollection());
  71808. $self._assert_($recv(original).__eq($self._collection()));
  71809. return self;
  71810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71811. }, function($ctx1) {$ctx1.fill(self,"testCopySeparates",{original:original,copy:copy})});
  71812. //>>excludeEnd("ctx");
  71813. }; }),
  71814. $globals.CollectionTest);
  71815. $core.addMethod(
  71816. $core.method({
  71817. selector: "testDetect",
  71818. protocol: "tests",
  71819. //>>excludeStart("ide", pragmas.excludeIdeData);
  71820. args: [],
  71821. source: "testDetect\x0a\x09self\x0a\x09\x09shouldnt: [ self collection detect: [ true ] ]\x0a\x09\x09raise: Error.\x0a\x09self\x0a\x09\x09should: [ self collection detect: [ false ] ]\x0a\x09\x09raise: Error.\x0a\x09self assert: (self sampleNewValueAsCollection detect: [ true ]) equals: self sampleNewValue.\x0a\x09self assert: (self collectionWithNewValue detect: [ :each | each = self sampleNewValue ]) equals: self sampleNewValue.\x0a\x09self\x0a\x09\x09should: [ self collection detect: [ :each | each = self sampleNewValue ] ]\x0a\x09\x09raise: Error",
  71822. referencedClasses: ["Error"],
  71823. //>>excludeEnd("ide");
  71824. pragmas: [],
  71825. messageSends: ["shouldnt:raise:", "detect:", "collection", "should:raise:", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue", "collectionWithNewValue", "="]
  71826. }, function ($methodClass){ return function (){
  71827. var self=this,$self=this;
  71828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71829. return $core.withContext(function($ctx1) {
  71830. //>>excludeEnd("ctx");
  71831. $self._shouldnt_raise_((function(){
  71832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71833. return $core.withContext(function($ctx2) {
  71834. //>>excludeEnd("ctx");
  71835. return [$recv([$self._collection()
  71836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71837. ,$ctx2.sendIdx["collection"]=1
  71838. //>>excludeEnd("ctx");
  71839. ][0])._detect_((function(){
  71840. return true;
  71841. }))
  71842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71843. ,$ctx2.sendIdx["detect:"]=1
  71844. //>>excludeEnd("ctx");
  71845. ][0];
  71846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71847. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  71848. //>>excludeEnd("ctx");
  71849. }),$globals.Error);
  71850. [$self._should_raise_((function(){
  71851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71852. return $core.withContext(function($ctx2) {
  71853. //>>excludeEnd("ctx");
  71854. return [$recv([$self._collection()
  71855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71856. ,$ctx2.sendIdx["collection"]=2
  71857. //>>excludeEnd("ctx");
  71858. ][0])._detect_((function(){
  71859. return false;
  71860. }))
  71861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71862. ,$ctx2.sendIdx["detect:"]=2
  71863. //>>excludeEnd("ctx");
  71864. ][0];
  71865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71866. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  71867. //>>excludeEnd("ctx");
  71868. }),$globals.Error)
  71869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71870. ,$ctx1.sendIdx["should:raise:"]=1
  71871. //>>excludeEnd("ctx");
  71872. ][0];
  71873. [$self._assert_equals_([$recv($self._sampleNewValueAsCollection())._detect_((function(){
  71874. return true;
  71875. }))
  71876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71877. ,$ctx1.sendIdx["detect:"]=3
  71878. //>>excludeEnd("ctx");
  71879. ][0],[$self._sampleNewValue()
  71880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71881. ,$ctx1.sendIdx["sampleNewValue"]=1
  71882. //>>excludeEnd("ctx");
  71883. ][0])
  71884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71885. ,$ctx1.sendIdx["assert:equals:"]=1
  71886. //>>excludeEnd("ctx");
  71887. ][0];
  71888. $self._assert_equals_([$recv($self._collectionWithNewValue())._detect_((function(each){
  71889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71890. return $core.withContext(function($ctx2) {
  71891. //>>excludeEnd("ctx");
  71892. return [$recv(each).__eq([$self._sampleNewValue()
  71893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71894. ,$ctx2.sendIdx["sampleNewValue"]=2
  71895. //>>excludeEnd("ctx");
  71896. ][0])
  71897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71898. ,$ctx2.sendIdx["="]=1
  71899. //>>excludeEnd("ctx");
  71900. ][0];
  71901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71902. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
  71903. //>>excludeEnd("ctx");
  71904. }))
  71905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71906. ,$ctx1.sendIdx["detect:"]=4
  71907. //>>excludeEnd("ctx");
  71908. ][0],[$self._sampleNewValue()
  71909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71910. ,$ctx1.sendIdx["sampleNewValue"]=3
  71911. //>>excludeEnd("ctx");
  71912. ][0]);
  71913. $self._should_raise_((function(){
  71914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71915. return $core.withContext(function($ctx2) {
  71916. //>>excludeEnd("ctx");
  71917. return $recv($self._collection())._detect_((function(each){
  71918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71919. return $core.withContext(function($ctx3) {
  71920. //>>excludeEnd("ctx");
  71921. return $recv(each).__eq($self._sampleNewValue());
  71922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71923. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,8)});
  71924. //>>excludeEnd("ctx");
  71925. }));
  71926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71927. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  71928. //>>excludeEnd("ctx");
  71929. }),$globals.Error);
  71930. return self;
  71931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71932. }, function($ctx1) {$ctx1.fill(self,"testDetect",{})});
  71933. //>>excludeEnd("ctx");
  71934. }; }),
  71935. $globals.CollectionTest);
  71936. $core.addMethod(
  71937. $core.method({
  71938. selector: "testDetectIfNone",
  71939. protocol: "tests",
  71940. //>>excludeStart("ide", pragmas.excludeIdeData);
  71941. args: [],
  71942. source: "testDetectIfNone\x0a\x09| sentinel |\x0a\x09sentinel := Object new.\x0a\x09self assert: (self collection detect: [ true ] ifNone: [ sentinel ]) ~= sentinel.\x0a\x09self assert: (self collection detect: [ false ] ifNone: [ sentinel ]) equals: sentinel.\x0a\x09self assert: (self sampleNewValueAsCollection detect: [ true ] ifNone: [ sentinel ]) equals: self sampleNewValue.\x0a\x09self assert: (self collectionWithNewValue detect: [ :each | each = self sampleNewValue ] ifNone: [ sentinel ]) equals: self sampleNewValue.\x0a\x09self assert: (self collection detect: [ :each | each = self sampleNewValue ] ifNone: [ sentinel ]) equals: sentinel",
  71943. referencedClasses: ["Object"],
  71944. //>>excludeEnd("ide");
  71945. pragmas: [],
  71946. messageSends: ["new", "assert:", "~=", "detect:ifNone:", "collection", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue", "collectionWithNewValue", "="]
  71947. }, function ($methodClass){ return function (){
  71948. var self=this,$self=this;
  71949. var sentinel;
  71950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71951. return $core.withContext(function($ctx1) {
  71952. //>>excludeEnd("ctx");
  71953. sentinel=$recv($globals.Object)._new();
  71954. $self._assert_($recv([$recv([$self._collection()
  71955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71956. ,$ctx1.sendIdx["collection"]=1
  71957. //>>excludeEnd("ctx");
  71958. ][0])._detect_ifNone_((function(){
  71959. return true;
  71960. }),(function(){
  71961. return sentinel;
  71962. }))
  71963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71964. ,$ctx1.sendIdx["detect:ifNone:"]=1
  71965. //>>excludeEnd("ctx");
  71966. ][0]).__tild_eq(sentinel));
  71967. [$self._assert_equals_([$recv([$self._collection()
  71968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71969. ,$ctx1.sendIdx["collection"]=2
  71970. //>>excludeEnd("ctx");
  71971. ][0])._detect_ifNone_((function(){
  71972. return false;
  71973. }),(function(){
  71974. return sentinel;
  71975. }))
  71976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71977. ,$ctx1.sendIdx["detect:ifNone:"]=2
  71978. //>>excludeEnd("ctx");
  71979. ][0],sentinel)
  71980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71981. ,$ctx1.sendIdx["assert:equals:"]=1
  71982. //>>excludeEnd("ctx");
  71983. ][0];
  71984. [$self._assert_equals_([$recv($self._sampleNewValueAsCollection())._detect_ifNone_((function(){
  71985. return true;
  71986. }),(function(){
  71987. return sentinel;
  71988. }))
  71989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71990. ,$ctx1.sendIdx["detect:ifNone:"]=3
  71991. //>>excludeEnd("ctx");
  71992. ][0],[$self._sampleNewValue()
  71993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71994. ,$ctx1.sendIdx["sampleNewValue"]=1
  71995. //>>excludeEnd("ctx");
  71996. ][0])
  71997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71998. ,$ctx1.sendIdx["assert:equals:"]=2
  71999. //>>excludeEnd("ctx");
  72000. ][0];
  72001. [$self._assert_equals_([$recv($self._collectionWithNewValue())._detect_ifNone_((function(each){
  72002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72003. return $core.withContext(function($ctx2) {
  72004. //>>excludeEnd("ctx");
  72005. return [$recv(each).__eq([$self._sampleNewValue()
  72006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72007. ,$ctx2.sendIdx["sampleNewValue"]=2
  72008. //>>excludeEnd("ctx");
  72009. ][0])
  72010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72011. ,$ctx2.sendIdx["="]=1
  72012. //>>excludeEnd("ctx");
  72013. ][0];
  72014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72015. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,7)});
  72016. //>>excludeEnd("ctx");
  72017. }),(function(){
  72018. return sentinel;
  72019. }))
  72020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72021. ,$ctx1.sendIdx["detect:ifNone:"]=4
  72022. //>>excludeEnd("ctx");
  72023. ][0],[$self._sampleNewValue()
  72024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72025. ,$ctx1.sendIdx["sampleNewValue"]=3
  72026. //>>excludeEnd("ctx");
  72027. ][0])
  72028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72029. ,$ctx1.sendIdx["assert:equals:"]=3
  72030. //>>excludeEnd("ctx");
  72031. ][0];
  72032. $self._assert_equals_($recv($self._collection())._detect_ifNone_((function(each){
  72033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72034. return $core.withContext(function($ctx2) {
  72035. //>>excludeEnd("ctx");
  72036. return $recv(each).__eq($self._sampleNewValue());
  72037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72038. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,9)});
  72039. //>>excludeEnd("ctx");
  72040. }),(function(){
  72041. return sentinel;
  72042. })),sentinel);
  72043. return self;
  72044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72045. }, function($ctx1) {$ctx1.fill(self,"testDetectIfNone",{sentinel:sentinel})});
  72046. //>>excludeEnd("ctx");
  72047. }; }),
  72048. $globals.CollectionTest);
  72049. $core.addMethod(
  72050. $core.method({
  72051. selector: "testDo",
  72052. protocol: "tests",
  72053. //>>excludeStart("ide", pragmas.excludeIdeData);
  72054. args: [],
  72055. source: "testDo\x0a\x09| newCollection |\x0a\x09newCollection := OrderedCollection new.\x0a\x09self collection do: [ :each |\x0a\x09\x09newCollection add: each ].\x0a\x09self\x0a\x09\x09assertSameContents: self collection\x0a\x09\x09as: newCollection.\x0a\x09newCollection := OrderedCollection new.\x0a\x09self collectionWithDuplicates do: [ :each |\x0a\x09\x09newCollection add: each ].\x0a\x09self\x0a\x09\x09assertSameContents: self collectionWithDuplicates\x0a\x09\x09as: newCollection",
  72056. referencedClasses: ["OrderedCollection"],
  72057. //>>excludeEnd("ide");
  72058. pragmas: [],
  72059. messageSends: ["new", "do:", "collection", "add:", "assertSameContents:as:", "collectionWithDuplicates"]
  72060. }, function ($methodClass){ return function (){
  72061. var self=this,$self=this;
  72062. var newCollection;
  72063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72064. return $core.withContext(function($ctx1) {
  72065. //>>excludeEnd("ctx");
  72066. newCollection=[$recv($globals.OrderedCollection)._new()
  72067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72068. ,$ctx1.sendIdx["new"]=1
  72069. //>>excludeEnd("ctx");
  72070. ][0];
  72071. [$recv([$self._collection()
  72072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72073. ,$ctx1.sendIdx["collection"]=1
  72074. //>>excludeEnd("ctx");
  72075. ][0])._do_((function(each){
  72076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72077. return $core.withContext(function($ctx2) {
  72078. //>>excludeEnd("ctx");
  72079. return [$recv(newCollection)._add_(each)
  72080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72081. ,$ctx2.sendIdx["add:"]=1
  72082. //>>excludeEnd("ctx");
  72083. ][0];
  72084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72085. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  72086. //>>excludeEnd("ctx");
  72087. }))
  72088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72089. ,$ctx1.sendIdx["do:"]=1
  72090. //>>excludeEnd("ctx");
  72091. ][0];
  72092. [$self._assertSameContents_as_($self._collection(),newCollection)
  72093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72094. ,$ctx1.sendIdx["assertSameContents:as:"]=1
  72095. //>>excludeEnd("ctx");
  72096. ][0];
  72097. newCollection=$recv($globals.OrderedCollection)._new();
  72098. $recv([$self._collectionWithDuplicates()
  72099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72100. ,$ctx1.sendIdx["collectionWithDuplicates"]=1
  72101. //>>excludeEnd("ctx");
  72102. ][0])._do_((function(each){
  72103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72104. return $core.withContext(function($ctx2) {
  72105. //>>excludeEnd("ctx");
  72106. return $recv(newCollection)._add_(each);
  72107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72108. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  72109. //>>excludeEnd("ctx");
  72110. }));
  72111. $self._assertSameContents_as_($self._collectionWithDuplicates(),newCollection);
  72112. return self;
  72113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72114. }, function($ctx1) {$ctx1.fill(self,"testDo",{newCollection:newCollection})});
  72115. //>>excludeEnd("ctx");
  72116. }; }),
  72117. $globals.CollectionTest);
  72118. $core.addMethod(
  72119. $core.method({
  72120. selector: "testEquality",
  72121. protocol: "tests",
  72122. //>>excludeStart("ide", pragmas.excludeIdeData);
  72123. args: [],
  72124. source: "testEquality\x0a\x09self assert: self collectionClass new equals: self collectionClass new.\x0a\x09self assert: self collection equals: self collection.\x0a\x09self assert: self collectionWithNewValue equals: self collectionWithNewValue.\x0a\x09\x0a\x09self deny: self collectionClass new = self collection.\x0a\x09self deny: self collection = self collectionClass new.\x0a\x09self deny: self collection = self collectionWithNewValue",
  72125. referencedClasses: [],
  72126. //>>excludeEnd("ide");
  72127. pragmas: [],
  72128. messageSends: ["assert:equals:", "new", "collectionClass", "collection", "collectionWithNewValue", "deny:", "="]
  72129. }, function ($methodClass){ return function (){
  72130. var self=this,$self=this;
  72131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72132. return $core.withContext(function($ctx1) {
  72133. //>>excludeEnd("ctx");
  72134. [$self._assert_equals_([$recv([$self._collectionClass()
  72135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72136. ,$ctx1.sendIdx["collectionClass"]=1
  72137. //>>excludeEnd("ctx");
  72138. ][0])._new()
  72139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72140. ,$ctx1.sendIdx["new"]=1
  72141. //>>excludeEnd("ctx");
  72142. ][0],[$recv([$self._collectionClass()
  72143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72144. ,$ctx1.sendIdx["collectionClass"]=2
  72145. //>>excludeEnd("ctx");
  72146. ][0])._new()
  72147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72148. ,$ctx1.sendIdx["new"]=2
  72149. //>>excludeEnd("ctx");
  72150. ][0])
  72151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72152. ,$ctx1.sendIdx["assert:equals:"]=1
  72153. //>>excludeEnd("ctx");
  72154. ][0];
  72155. [$self._assert_equals_([$self._collection()
  72156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72157. ,$ctx1.sendIdx["collection"]=1
  72158. //>>excludeEnd("ctx");
  72159. ][0],[$self._collection()
  72160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72161. ,$ctx1.sendIdx["collection"]=2
  72162. //>>excludeEnd("ctx");
  72163. ][0])
  72164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72165. ,$ctx1.sendIdx["assert:equals:"]=2
  72166. //>>excludeEnd("ctx");
  72167. ][0];
  72168. $self._assert_equals_([$self._collectionWithNewValue()
  72169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72170. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  72171. //>>excludeEnd("ctx");
  72172. ][0],[$self._collectionWithNewValue()
  72173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72174. ,$ctx1.sendIdx["collectionWithNewValue"]=2
  72175. //>>excludeEnd("ctx");
  72176. ][0]);
  72177. [$self._deny_([$recv([$recv([$self._collectionClass()
  72178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72179. ,$ctx1.sendIdx["collectionClass"]=3
  72180. //>>excludeEnd("ctx");
  72181. ][0])._new()
  72182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72183. ,$ctx1.sendIdx["new"]=3
  72184. //>>excludeEnd("ctx");
  72185. ][0]).__eq([$self._collection()
  72186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72187. ,$ctx1.sendIdx["collection"]=3
  72188. //>>excludeEnd("ctx");
  72189. ][0])
  72190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72191. ,$ctx1.sendIdx["="]=1
  72192. //>>excludeEnd("ctx");
  72193. ][0])
  72194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72195. ,$ctx1.sendIdx["deny:"]=1
  72196. //>>excludeEnd("ctx");
  72197. ][0];
  72198. [$self._deny_([$recv([$self._collection()
  72199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72200. ,$ctx1.sendIdx["collection"]=4
  72201. //>>excludeEnd("ctx");
  72202. ][0]).__eq($recv($self._collectionClass())._new())
  72203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72204. ,$ctx1.sendIdx["="]=2
  72205. //>>excludeEnd("ctx");
  72206. ][0])
  72207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72208. ,$ctx1.sendIdx["deny:"]=2
  72209. //>>excludeEnd("ctx");
  72210. ][0];
  72211. $self._deny_($recv($self._collection()).__eq($self._collectionWithNewValue()));
  72212. return self;
  72213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72214. }, function($ctx1) {$ctx1.fill(self,"testEquality",{})});
  72215. //>>excludeEnd("ctx");
  72216. }; }),
  72217. $globals.CollectionTest);
  72218. $core.addMethod(
  72219. $core.method({
  72220. selector: "testIfEmptyFamily",
  72221. protocol: "tests",
  72222. //>>excludeStart("ide", pragmas.excludeIdeData);
  72223. args: [],
  72224. source: "testIfEmptyFamily\x0a\x09self assert: (self collectionClass new ifEmpty: [ 42 ]) equals: 42.\x0a\x09self assert: (self collection ifEmpty: [ 42 ]) equals: self collection.\x0a\x0a\x09self assert: (self collectionClass new ifNotEmpty: [ 42 ]) equals: self collectionClass new.\x0a\x09self assert: (self collection ifNotEmpty: [ 42 ]) equals: 42.\x0a\x09self assert: (self collection ifNotEmpty: [ :col | col ]) equals: self collection.\x0a\x09\x0a\x09self assert: (self collectionClass new ifEmpty: [ 42 ] ifNotEmpty: [ 999 ]) equals: 42.\x0a\x09self assert: (self collection ifEmpty: [ 42 ] ifNotEmpty: [ 999 ]) equals: 999.\x0a\x09self assert: (self collection ifEmpty: [ 42 ] ifNotEmpty: [ :col | col ]) equals: self collection.\x0a\x0a\x09self assert: (self collectionClass new ifNotEmpty: [ 42 ] ifEmpty: [ 999 ]) equals: 999.\x0a\x09self assert: (self collection ifNotEmpty: [ 42 ] ifEmpty: [ 999 ]) equals: 42.\x0a\x09self assert: (self collection ifNotEmpty: [ :col | col ] ifEmpty: [ 999 ]) equals: self collection.",
  72225. referencedClasses: [],
  72226. //>>excludeEnd("ide");
  72227. pragmas: [],
  72228. messageSends: ["assert:equals:", "ifEmpty:", "new", "collectionClass", "collection", "ifNotEmpty:", "ifEmpty:ifNotEmpty:", "ifNotEmpty:ifEmpty:"]
  72229. }, function ($methodClass){ return function (){
  72230. var self=this,$self=this;
  72231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72232. return $core.withContext(function($ctx1) {
  72233. //>>excludeEnd("ctx");
  72234. [$self._assert_equals_([$recv([$recv([$self._collectionClass()
  72235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72236. ,$ctx1.sendIdx["collectionClass"]=1
  72237. //>>excludeEnd("ctx");
  72238. ][0])._new()
  72239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72240. ,$ctx1.sendIdx["new"]=1
  72241. //>>excludeEnd("ctx");
  72242. ][0])._ifEmpty_((function(){
  72243. return (42);
  72244. }))
  72245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72246. ,$ctx1.sendIdx["ifEmpty:"]=1
  72247. //>>excludeEnd("ctx");
  72248. ][0],(42))
  72249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72250. ,$ctx1.sendIdx["assert:equals:"]=1
  72251. //>>excludeEnd("ctx");
  72252. ][0];
  72253. [$self._assert_equals_($recv([$self._collection()
  72254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72255. ,$ctx1.sendIdx["collection"]=1
  72256. //>>excludeEnd("ctx");
  72257. ][0])._ifEmpty_((function(){
  72258. return (42);
  72259. })),[$self._collection()
  72260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72261. ,$ctx1.sendIdx["collection"]=2
  72262. //>>excludeEnd("ctx");
  72263. ][0])
  72264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72265. ,$ctx1.sendIdx["assert:equals:"]=2
  72266. //>>excludeEnd("ctx");
  72267. ][0];
  72268. [$self._assert_equals_([$recv([$recv([$self._collectionClass()
  72269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72270. ,$ctx1.sendIdx["collectionClass"]=2
  72271. //>>excludeEnd("ctx");
  72272. ][0])._new()
  72273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72274. ,$ctx1.sendIdx["new"]=2
  72275. //>>excludeEnd("ctx");
  72276. ][0])._ifNotEmpty_((function(){
  72277. return (42);
  72278. }))
  72279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72280. ,$ctx1.sendIdx["ifNotEmpty:"]=1
  72281. //>>excludeEnd("ctx");
  72282. ][0],[$recv([$self._collectionClass()
  72283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72284. ,$ctx1.sendIdx["collectionClass"]=3
  72285. //>>excludeEnd("ctx");
  72286. ][0])._new()
  72287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72288. ,$ctx1.sendIdx["new"]=3
  72289. //>>excludeEnd("ctx");
  72290. ][0])
  72291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72292. ,$ctx1.sendIdx["assert:equals:"]=3
  72293. //>>excludeEnd("ctx");
  72294. ][0];
  72295. [$self._assert_equals_([$recv([$self._collection()
  72296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72297. ,$ctx1.sendIdx["collection"]=3
  72298. //>>excludeEnd("ctx");
  72299. ][0])._ifNotEmpty_((function(){
  72300. return (42);
  72301. }))
  72302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72303. ,$ctx1.sendIdx["ifNotEmpty:"]=2
  72304. //>>excludeEnd("ctx");
  72305. ][0],(42))
  72306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72307. ,$ctx1.sendIdx["assert:equals:"]=4
  72308. //>>excludeEnd("ctx");
  72309. ][0];
  72310. [$self._assert_equals_($recv([$self._collection()
  72311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72312. ,$ctx1.sendIdx["collection"]=4
  72313. //>>excludeEnd("ctx");
  72314. ][0])._ifNotEmpty_((function(col){
  72315. return col;
  72316. })),[$self._collection()
  72317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72318. ,$ctx1.sendIdx["collection"]=5
  72319. //>>excludeEnd("ctx");
  72320. ][0])
  72321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72322. ,$ctx1.sendIdx["assert:equals:"]=5
  72323. //>>excludeEnd("ctx");
  72324. ][0];
  72325. [$self._assert_equals_([$recv([$recv([$self._collectionClass()
  72326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72327. ,$ctx1.sendIdx["collectionClass"]=4
  72328. //>>excludeEnd("ctx");
  72329. ][0])._new()
  72330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72331. ,$ctx1.sendIdx["new"]=4
  72332. //>>excludeEnd("ctx");
  72333. ][0])._ifEmpty_ifNotEmpty_((function(){
  72334. return (42);
  72335. }),(function(){
  72336. return (999);
  72337. }))
  72338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72339. ,$ctx1.sendIdx["ifEmpty:ifNotEmpty:"]=1
  72340. //>>excludeEnd("ctx");
  72341. ][0],(42))
  72342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72343. ,$ctx1.sendIdx["assert:equals:"]=6
  72344. //>>excludeEnd("ctx");
  72345. ][0];
  72346. [$self._assert_equals_([$recv([$self._collection()
  72347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72348. ,$ctx1.sendIdx["collection"]=6
  72349. //>>excludeEnd("ctx");
  72350. ][0])._ifEmpty_ifNotEmpty_((function(){
  72351. return (42);
  72352. }),(function(){
  72353. return (999);
  72354. }))
  72355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72356. ,$ctx1.sendIdx["ifEmpty:ifNotEmpty:"]=2
  72357. //>>excludeEnd("ctx");
  72358. ][0],(999))
  72359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72360. ,$ctx1.sendIdx["assert:equals:"]=7
  72361. //>>excludeEnd("ctx");
  72362. ][0];
  72363. [$self._assert_equals_($recv([$self._collection()
  72364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72365. ,$ctx1.sendIdx["collection"]=7
  72366. //>>excludeEnd("ctx");
  72367. ][0])._ifEmpty_ifNotEmpty_((function(){
  72368. return (42);
  72369. }),(function(col){
  72370. return col;
  72371. })),[$self._collection()
  72372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72373. ,$ctx1.sendIdx["collection"]=8
  72374. //>>excludeEnd("ctx");
  72375. ][0])
  72376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72377. ,$ctx1.sendIdx["assert:equals:"]=8
  72378. //>>excludeEnd("ctx");
  72379. ][0];
  72380. [$self._assert_equals_([$recv($recv($self._collectionClass())._new())._ifNotEmpty_ifEmpty_((function(){
  72381. return (42);
  72382. }),(function(){
  72383. return (999);
  72384. }))
  72385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72386. ,$ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=1
  72387. //>>excludeEnd("ctx");
  72388. ][0],(999))
  72389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72390. ,$ctx1.sendIdx["assert:equals:"]=9
  72391. //>>excludeEnd("ctx");
  72392. ][0];
  72393. [$self._assert_equals_([$recv([$self._collection()
  72394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72395. ,$ctx1.sendIdx["collection"]=9
  72396. //>>excludeEnd("ctx");
  72397. ][0])._ifNotEmpty_ifEmpty_((function(){
  72398. return (42);
  72399. }),(function(){
  72400. return (999);
  72401. }))
  72402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72403. ,$ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=2
  72404. //>>excludeEnd("ctx");
  72405. ][0],(42))
  72406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72407. ,$ctx1.sendIdx["assert:equals:"]=10
  72408. //>>excludeEnd("ctx");
  72409. ][0];
  72410. $self._assert_equals_($recv([$self._collection()
  72411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72412. ,$ctx1.sendIdx["collection"]=10
  72413. //>>excludeEnd("ctx");
  72414. ][0])._ifNotEmpty_ifEmpty_((function(col){
  72415. return col;
  72416. }),(function(){
  72417. return (999);
  72418. })),$self._collection());
  72419. return self;
  72420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72421. }, function($ctx1) {$ctx1.fill(self,"testIfEmptyFamily",{})});
  72422. //>>excludeEnd("ctx");
  72423. }; }),
  72424. $globals.CollectionTest);
  72425. $core.addMethod(
  72426. $core.method({
  72427. selector: "testIsEmpty",
  72428. protocol: "tests",
  72429. //>>excludeStart("ide", pragmas.excludeIdeData);
  72430. args: [],
  72431. source: "testIsEmpty\x0a\x09self assert: self collectionClass new isEmpty.\x0a\x09self deny: self collection isEmpty",
  72432. referencedClasses: [],
  72433. //>>excludeEnd("ide");
  72434. pragmas: [],
  72435. messageSends: ["assert:", "isEmpty", "new", "collectionClass", "deny:", "collection"]
  72436. }, function ($methodClass){ return function (){
  72437. var self=this,$self=this;
  72438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72439. return $core.withContext(function($ctx1) {
  72440. //>>excludeEnd("ctx");
  72441. $self._assert_([$recv($recv($self._collectionClass())._new())._isEmpty()
  72442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72443. ,$ctx1.sendIdx["isEmpty"]=1
  72444. //>>excludeEnd("ctx");
  72445. ][0]);
  72446. $self._deny_($recv($self._collection())._isEmpty());
  72447. return self;
  72448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72449. }, function($ctx1) {$ctx1.fill(self,"testIsEmpty",{})});
  72450. //>>excludeEnd("ctx");
  72451. }; }),
  72452. $globals.CollectionTest);
  72453. $core.addMethod(
  72454. $core.method({
  72455. selector: "testNoneSatisfy",
  72456. protocol: "tests",
  72457. //>>excludeStart("ide", pragmas.excludeIdeData);
  72458. args: [],
  72459. source: "testNoneSatisfy\x0a\x09| anyOne |\x0a\x09anyOne := self collection anyOne.\x0a\x09self deny: (self collection noneSatisfy: [ :each | each = anyOne ]).\x0a\x09self assert: (self collection noneSatisfy: [ :each | each = Object new ])",
  72460. referencedClasses: ["Object"],
  72461. //>>excludeEnd("ide");
  72462. pragmas: [],
  72463. messageSends: ["anyOne", "collection", "deny:", "noneSatisfy:", "=", "assert:", "new"]
  72464. }, function ($methodClass){ return function (){
  72465. var self=this,$self=this;
  72466. var anyOne;
  72467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72468. return $core.withContext(function($ctx1) {
  72469. //>>excludeEnd("ctx");
  72470. anyOne=$recv([$self._collection()
  72471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72472. ,$ctx1.sendIdx["collection"]=1
  72473. //>>excludeEnd("ctx");
  72474. ][0])._anyOne();
  72475. $self._deny_([$recv([$self._collection()
  72476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72477. ,$ctx1.sendIdx["collection"]=2
  72478. //>>excludeEnd("ctx");
  72479. ][0])._noneSatisfy_((function(each){
  72480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72481. return $core.withContext(function($ctx2) {
  72482. //>>excludeEnd("ctx");
  72483. return [$recv(each).__eq(anyOne)
  72484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72485. ,$ctx2.sendIdx["="]=1
  72486. //>>excludeEnd("ctx");
  72487. ][0];
  72488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72489. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  72490. //>>excludeEnd("ctx");
  72491. }))
  72492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72493. ,$ctx1.sendIdx["noneSatisfy:"]=1
  72494. //>>excludeEnd("ctx");
  72495. ][0]);
  72496. $self._assert_($recv($self._collection())._noneSatisfy_((function(each){
  72497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72498. return $core.withContext(function($ctx2) {
  72499. //>>excludeEnd("ctx");
  72500. return $recv(each).__eq($recv($globals.Object)._new());
  72501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72502. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  72503. //>>excludeEnd("ctx");
  72504. })));
  72505. return self;
  72506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72507. }, function($ctx1) {$ctx1.fill(self,"testNoneSatisfy",{anyOne:anyOne})});
  72508. //>>excludeEnd("ctx");
  72509. }; }),
  72510. $globals.CollectionTest);
  72511. $core.addMethod(
  72512. $core.method({
  72513. selector: "testRegression1224",
  72514. protocol: "tests",
  72515. //>>excludeStart("ide", pragmas.excludeIdeData);
  72516. args: [],
  72517. source: "testRegression1224\x0a\x09self assert: (self collectionClass new\x0a\x09\x09remove: self sampleNewValue ifAbsent: [];\x0a\x09\x09yourself) size equals: 0",
  72518. referencedClasses: [],
  72519. //>>excludeEnd("ide");
  72520. pragmas: [],
  72521. messageSends: ["assert:equals:", "size", "remove:ifAbsent:", "new", "collectionClass", "sampleNewValue", "yourself"]
  72522. }, function ($methodClass){ return function (){
  72523. var self=this,$self=this;
  72524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72525. return $core.withContext(function($ctx1) {
  72526. //>>excludeEnd("ctx");
  72527. var $1;
  72528. $1=$recv($self._collectionClass())._new();
  72529. $recv($1)._remove_ifAbsent_($self._sampleNewValue(),(function(){
  72530. }));
  72531. $self._assert_equals_($recv($recv($1)._yourself())._size(),(0));
  72532. return self;
  72533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72534. }, function($ctx1) {$ctx1.fill(self,"testRegression1224",{})});
  72535. //>>excludeEnd("ctx");
  72536. }; }),
  72537. $globals.CollectionTest);
  72538. $core.addMethod(
  72539. $core.method({
  72540. selector: "testRemoveAll",
  72541. protocol: "tests",
  72542. //>>excludeStart("ide", pragmas.excludeIdeData);
  72543. args: [],
  72544. source: "testRemoveAll\x0a\x09self assert: (self collection removeAll; yourself) equals: self collectionClass new",
  72545. referencedClasses: [],
  72546. //>>excludeEnd("ide");
  72547. pragmas: [],
  72548. messageSends: ["assert:equals:", "removeAll", "collection", "yourself", "new", "collectionClass"]
  72549. }, function ($methodClass){ return function (){
  72550. var self=this,$self=this;
  72551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72552. return $core.withContext(function($ctx1) {
  72553. //>>excludeEnd("ctx");
  72554. var $1;
  72555. $1=$self._collection();
  72556. $recv($1)._removeAll();
  72557. $self._assert_equals_($recv($1)._yourself(),$recv($self._collectionClass())._new());
  72558. return self;
  72559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72560. }, function($ctx1) {$ctx1.fill(self,"testRemoveAll",{})});
  72561. //>>excludeEnd("ctx");
  72562. }; }),
  72563. $globals.CollectionTest);
  72564. $core.addMethod(
  72565. $core.method({
  72566. selector: "testSelect",
  72567. protocol: "tests",
  72568. //>>excludeStart("ide", pragmas.excludeIdeData);
  72569. args: [],
  72570. source: "testSelect\x0a\x09self assert: (self collection select: [ false ]) equals: self collectionClass new.\x0a\x09self assert: (self collection select: [ true ]) equals: self collection.\x0a\x09self assert: (self collectionWithNewValue select: [ :each | each = self sampleNewValue ]) equals: self sampleNewValueAsCollection.\x0a\x09self assert: (self collectionWithNewValue select: [ :each | each ~= self sampleNewValue ]) equals: self collection.\x0a\x09self assert: (self collection select: [ :each | each = self sampleNewValue ]) equals: self collectionClass new.\x0a\x09self assert: (self collectionWithNewValue select: [ :each | each ~= self sampleNewValue ]) equals: self collection",
  72571. referencedClasses: [],
  72572. //>>excludeEnd("ide");
  72573. pragmas: [],
  72574. messageSends: ["assert:equals:", "select:", "collection", "new", "collectionClass", "collectionWithNewValue", "=", "sampleNewValue", "sampleNewValueAsCollection", "~="]
  72575. }, function ($methodClass){ return function (){
  72576. var self=this,$self=this;
  72577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72578. return $core.withContext(function($ctx1) {
  72579. //>>excludeEnd("ctx");
  72580. [$self._assert_equals_([$recv([$self._collection()
  72581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72582. ,$ctx1.sendIdx["collection"]=1
  72583. //>>excludeEnd("ctx");
  72584. ][0])._select_((function(){
  72585. return false;
  72586. }))
  72587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72588. ,$ctx1.sendIdx["select:"]=1
  72589. //>>excludeEnd("ctx");
  72590. ][0],[$recv([$self._collectionClass()
  72591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72592. ,$ctx1.sendIdx["collectionClass"]=1
  72593. //>>excludeEnd("ctx");
  72594. ][0])._new()
  72595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72596. ,$ctx1.sendIdx["new"]=1
  72597. //>>excludeEnd("ctx");
  72598. ][0])
  72599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72600. ,$ctx1.sendIdx["assert:equals:"]=1
  72601. //>>excludeEnd("ctx");
  72602. ][0];
  72603. [$self._assert_equals_([$recv([$self._collection()
  72604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72605. ,$ctx1.sendIdx["collection"]=2
  72606. //>>excludeEnd("ctx");
  72607. ][0])._select_((function(){
  72608. return true;
  72609. }))
  72610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72611. ,$ctx1.sendIdx["select:"]=2
  72612. //>>excludeEnd("ctx");
  72613. ][0],[$self._collection()
  72614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72615. ,$ctx1.sendIdx["collection"]=3
  72616. //>>excludeEnd("ctx");
  72617. ][0])
  72618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72619. ,$ctx1.sendIdx["assert:equals:"]=2
  72620. //>>excludeEnd("ctx");
  72621. ][0];
  72622. [$self._assert_equals_([$recv([$self._collectionWithNewValue()
  72623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72624. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  72625. //>>excludeEnd("ctx");
  72626. ][0])._select_((function(each){
  72627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72628. return $core.withContext(function($ctx2) {
  72629. //>>excludeEnd("ctx");
  72630. return [$recv(each).__eq([$self._sampleNewValue()
  72631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72632. ,$ctx2.sendIdx["sampleNewValue"]=1
  72633. //>>excludeEnd("ctx");
  72634. ][0])
  72635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72636. ,$ctx2.sendIdx["="]=1
  72637. //>>excludeEnd("ctx");
  72638. ][0];
  72639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72640. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  72641. //>>excludeEnd("ctx");
  72642. }))
  72643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72644. ,$ctx1.sendIdx["select:"]=3
  72645. //>>excludeEnd("ctx");
  72646. ][0],$self._sampleNewValueAsCollection())
  72647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72648. ,$ctx1.sendIdx["assert:equals:"]=3
  72649. //>>excludeEnd("ctx");
  72650. ][0];
  72651. [$self._assert_equals_([$recv([$self._collectionWithNewValue()
  72652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72653. ,$ctx1.sendIdx["collectionWithNewValue"]=2
  72654. //>>excludeEnd("ctx");
  72655. ][0])._select_((function(each){
  72656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72657. return $core.withContext(function($ctx2) {
  72658. //>>excludeEnd("ctx");
  72659. return [$recv(each).__tild_eq([$self._sampleNewValue()
  72660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72661. ,$ctx2.sendIdx["sampleNewValue"]=2
  72662. //>>excludeEnd("ctx");
  72663. ][0])
  72664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72665. ,$ctx2.sendIdx["~="]=1
  72666. //>>excludeEnd("ctx");
  72667. ][0];
  72668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72669. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  72670. //>>excludeEnd("ctx");
  72671. }))
  72672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72673. ,$ctx1.sendIdx["select:"]=4
  72674. //>>excludeEnd("ctx");
  72675. ][0],[$self._collection()
  72676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72677. ,$ctx1.sendIdx["collection"]=4
  72678. //>>excludeEnd("ctx");
  72679. ][0])
  72680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72681. ,$ctx1.sendIdx["assert:equals:"]=4
  72682. //>>excludeEnd("ctx");
  72683. ][0];
  72684. [$self._assert_equals_([$recv([$self._collection()
  72685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72686. ,$ctx1.sendIdx["collection"]=5
  72687. //>>excludeEnd("ctx");
  72688. ][0])._select_((function(each){
  72689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72690. return $core.withContext(function($ctx2) {
  72691. //>>excludeEnd("ctx");
  72692. return $recv(each).__eq([$self._sampleNewValue()
  72693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72694. ,$ctx2.sendIdx["sampleNewValue"]=3
  72695. //>>excludeEnd("ctx");
  72696. ][0]);
  72697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72698. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)});
  72699. //>>excludeEnd("ctx");
  72700. }))
  72701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72702. ,$ctx1.sendIdx["select:"]=5
  72703. //>>excludeEnd("ctx");
  72704. ][0],$recv($self._collectionClass())._new())
  72705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72706. ,$ctx1.sendIdx["assert:equals:"]=5
  72707. //>>excludeEnd("ctx");
  72708. ][0];
  72709. $self._assert_equals_($recv($self._collectionWithNewValue())._select_((function(each){
  72710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72711. return $core.withContext(function($ctx2) {
  72712. //>>excludeEnd("ctx");
  72713. return $recv(each).__tild_eq($self._sampleNewValue());
  72714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72715. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
  72716. //>>excludeEnd("ctx");
  72717. })),$self._collection());
  72718. return self;
  72719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72720. }, function($ctx1) {$ctx1.fill(self,"testSelect",{})});
  72721. //>>excludeEnd("ctx");
  72722. }; }),
  72723. $globals.CollectionTest);
  72724. $core.addMethod(
  72725. $core.method({
  72726. selector: "testSelectThenCollect",
  72727. protocol: "tests",
  72728. //>>excludeStart("ide", pragmas.excludeIdeData);
  72729. args: [],
  72730. source: "testSelectThenCollect\x0a\x09self assert: (self collection select: [ false ] thenCollect: #isString) equals: self collectionClass new.\x0a\x09self assert: (self collection select: [ true ] thenCollect: [:x|x]) equals: self collection.\x0a\x09self assert: (self collection select: [ :each | each = self sampleNewValue ] thenCollect: [:x|x]) equals: self collectionClass new.\x0a\x09self assert: (self collectionWithNewValue select: [ :each | each ~= self sampleNewValue ] thenCollect: #printString) equals: self collectionOfPrintStrings",
  72731. referencedClasses: [],
  72732. //>>excludeEnd("ide");
  72733. pragmas: [],
  72734. messageSends: ["assert:equals:", "select:thenCollect:", "collection", "new", "collectionClass", "=", "sampleNewValue", "collectionWithNewValue", "~=", "collectionOfPrintStrings"]
  72735. }, function ($methodClass){ return function (){
  72736. var self=this,$self=this;
  72737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72738. return $core.withContext(function($ctx1) {
  72739. //>>excludeEnd("ctx");
  72740. [$self._assert_equals_([$recv([$self._collection()
  72741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72742. ,$ctx1.sendIdx["collection"]=1
  72743. //>>excludeEnd("ctx");
  72744. ][0])._select_thenCollect_((function(){
  72745. return false;
  72746. }),"isString")
  72747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72748. ,$ctx1.sendIdx["select:thenCollect:"]=1
  72749. //>>excludeEnd("ctx");
  72750. ][0],[$recv([$self._collectionClass()
  72751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72752. ,$ctx1.sendIdx["collectionClass"]=1
  72753. //>>excludeEnd("ctx");
  72754. ][0])._new()
  72755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72756. ,$ctx1.sendIdx["new"]=1
  72757. //>>excludeEnd("ctx");
  72758. ][0])
  72759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72760. ,$ctx1.sendIdx["assert:equals:"]=1
  72761. //>>excludeEnd("ctx");
  72762. ][0];
  72763. [$self._assert_equals_([$recv([$self._collection()
  72764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72765. ,$ctx1.sendIdx["collection"]=2
  72766. //>>excludeEnd("ctx");
  72767. ][0])._select_thenCollect_((function(){
  72768. return true;
  72769. }),(function(x){
  72770. return x;
  72771. }))
  72772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72773. ,$ctx1.sendIdx["select:thenCollect:"]=2
  72774. //>>excludeEnd("ctx");
  72775. ][0],[$self._collection()
  72776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72777. ,$ctx1.sendIdx["collection"]=3
  72778. //>>excludeEnd("ctx");
  72779. ][0])
  72780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72781. ,$ctx1.sendIdx["assert:equals:"]=2
  72782. //>>excludeEnd("ctx");
  72783. ][0];
  72784. [$self._assert_equals_([$recv($self._collection())._select_thenCollect_((function(each){
  72785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72786. return $core.withContext(function($ctx2) {
  72787. //>>excludeEnd("ctx");
  72788. return $recv(each).__eq([$self._sampleNewValue()
  72789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72790. ,$ctx2.sendIdx["sampleNewValue"]=1
  72791. //>>excludeEnd("ctx");
  72792. ][0]);
  72793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72794. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  72795. //>>excludeEnd("ctx");
  72796. }),(function(x){
  72797. return x;
  72798. }))
  72799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72800. ,$ctx1.sendIdx["select:thenCollect:"]=3
  72801. //>>excludeEnd("ctx");
  72802. ][0],$recv($self._collectionClass())._new())
  72803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72804. ,$ctx1.sendIdx["assert:equals:"]=3
  72805. //>>excludeEnd("ctx");
  72806. ][0];
  72807. $self._assert_equals_($recv($self._collectionWithNewValue())._select_thenCollect_((function(each){
  72808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72809. return $core.withContext(function($ctx2) {
  72810. //>>excludeEnd("ctx");
  72811. return $recv(each).__tild_eq($self._sampleNewValue());
  72812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72813. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
  72814. //>>excludeEnd("ctx");
  72815. }),"printString"),$self._collectionOfPrintStrings());
  72816. return self;
  72817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72818. }, function($ctx1) {$ctx1.fill(self,"testSelectThenCollect",{})});
  72819. //>>excludeEnd("ctx");
  72820. }; }),
  72821. $globals.CollectionTest);
  72822. $core.addMethod(
  72823. $core.method({
  72824. selector: "testSingle",
  72825. protocol: "tests",
  72826. //>>excludeStart("ide", pragmas.excludeIdeData);
  72827. args: [],
  72828. source: "testSingle\x0a\x09self should: [ self collectionClass new single ] raise: Error.\x0a\x09self should: [ self collection single ] raise: Error.\x0a\x09self assert: self sampleNewValueAsCollection single equals: self sampleNewValue",
  72829. referencedClasses: ["Error"],
  72830. //>>excludeEnd("ide");
  72831. pragmas: [],
  72832. messageSends: ["should:raise:", "single", "new", "collectionClass", "collection", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue"]
  72833. }, function ($methodClass){ return function (){
  72834. var self=this,$self=this;
  72835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72836. return $core.withContext(function($ctx1) {
  72837. //>>excludeEnd("ctx");
  72838. [$self._should_raise_((function(){
  72839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72840. return $core.withContext(function($ctx2) {
  72841. //>>excludeEnd("ctx");
  72842. return [$recv($recv($self._collectionClass())._new())._single()
  72843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72844. ,$ctx2.sendIdx["single"]=1
  72845. //>>excludeEnd("ctx");
  72846. ][0];
  72847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72848. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  72849. //>>excludeEnd("ctx");
  72850. }),$globals.Error)
  72851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72852. ,$ctx1.sendIdx["should:raise:"]=1
  72853. //>>excludeEnd("ctx");
  72854. ][0];
  72855. $self._should_raise_((function(){
  72856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72857. return $core.withContext(function($ctx2) {
  72858. //>>excludeEnd("ctx");
  72859. return [$recv($self._collection())._single()
  72860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72861. ,$ctx2.sendIdx["single"]=2
  72862. //>>excludeEnd("ctx");
  72863. ][0];
  72864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72865. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  72866. //>>excludeEnd("ctx");
  72867. }),$globals.Error);
  72868. $self._assert_equals_($recv($self._sampleNewValueAsCollection())._single(),$self._sampleNewValue());
  72869. return self;
  72870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72871. }, function($ctx1) {$ctx1.fill(self,"testSingle",{})});
  72872. //>>excludeEnd("ctx");
  72873. }; }),
  72874. $globals.CollectionTest);
  72875. $core.addMethod(
  72876. $core.method({
  72877. selector: "testSize",
  72878. protocol: "tests",
  72879. //>>excludeStart("ide", pragmas.excludeIdeData);
  72880. args: [],
  72881. source: "testSize\x0a\x09self assert: self collectionClass new size equals: 0.\x0a\x09self assert: self sampleNewValueAsCollection size equals: 1.\x0a\x09self assert: self collection size equals: self collectionSize",
  72882. referencedClasses: [],
  72883. //>>excludeEnd("ide");
  72884. pragmas: [],
  72885. messageSends: ["assert:equals:", "size", "new", "collectionClass", "sampleNewValueAsCollection", "collection", "collectionSize"]
  72886. }, function ($methodClass){ return function (){
  72887. var self=this,$self=this;
  72888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72889. return $core.withContext(function($ctx1) {
  72890. //>>excludeEnd("ctx");
  72891. [$self._assert_equals_([$recv($recv($self._collectionClass())._new())._size()
  72892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72893. ,$ctx1.sendIdx["size"]=1
  72894. //>>excludeEnd("ctx");
  72895. ][0],(0))
  72896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72897. ,$ctx1.sendIdx["assert:equals:"]=1
  72898. //>>excludeEnd("ctx");
  72899. ][0];
  72900. [$self._assert_equals_([$recv($self._sampleNewValueAsCollection())._size()
  72901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72902. ,$ctx1.sendIdx["size"]=2
  72903. //>>excludeEnd("ctx");
  72904. ][0],(1))
  72905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72906. ,$ctx1.sendIdx["assert:equals:"]=2
  72907. //>>excludeEnd("ctx");
  72908. ][0];
  72909. $self._assert_equals_($recv($self._collection())._size(),$self._collectionSize());
  72910. return self;
  72911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72912. }, function($ctx1) {$ctx1.fill(self,"testSize",{})});
  72913. //>>excludeEnd("ctx");
  72914. }; }),
  72915. $globals.CollectionTest);
  72916. $core.addMethod(
  72917. $core.method({
  72918. selector: "collectionClass",
  72919. protocol: "fixture",
  72920. //>>excludeStart("ide", pragmas.excludeIdeData);
  72921. args: [],
  72922. source: "collectionClass\x0a\x09\x22Answers class of collection type tested,\x0a\x09or nil if test is abstract\x22\x0a\x0a\x09^ nil",
  72923. referencedClasses: [],
  72924. //>>excludeEnd("ide");
  72925. pragmas: [],
  72926. messageSends: []
  72927. }, function ($methodClass){ return function (){
  72928. var self=this,$self=this;
  72929. return nil;
  72930. }; }),
  72931. $globals.CollectionTest.a$cls);
  72932. $core.addMethod(
  72933. $core.method({
  72934. selector: "isAbstract",
  72935. protocol: "testing",
  72936. //>>excludeStart("ide", pragmas.excludeIdeData);
  72937. args: [],
  72938. source: "isAbstract\x0a\x09^ self collectionClass isNil",
  72939. referencedClasses: [],
  72940. //>>excludeEnd("ide");
  72941. pragmas: [],
  72942. messageSends: ["isNil", "collectionClass"]
  72943. }, function ($methodClass){ return function (){
  72944. var self=this,$self=this;
  72945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72946. return $core.withContext(function($ctx1) {
  72947. //>>excludeEnd("ctx");
  72948. return $recv($self._collectionClass())._isNil();
  72949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72950. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
  72951. //>>excludeEnd("ctx");
  72952. }; }),
  72953. $globals.CollectionTest.a$cls);
  72954. $core.addClass("AssociativeCollectionTest", $globals.CollectionTest, "Kernel-Tests");
  72955. $core.addMethod(
  72956. $core.method({
  72957. selector: "collectionKeys",
  72958. protocol: "fixture",
  72959. //>>excludeStart("ide", pragmas.excludeIdeData);
  72960. args: [],
  72961. source: "collectionKeys\x0a\x09self subclassResponsibility",
  72962. referencedClasses: [],
  72963. //>>excludeEnd("ide");
  72964. pragmas: [],
  72965. messageSends: ["subclassResponsibility"]
  72966. }, function ($methodClass){ return function (){
  72967. var self=this,$self=this;
  72968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72969. return $core.withContext(function($ctx1) {
  72970. //>>excludeEnd("ctx");
  72971. $self._subclassResponsibility();
  72972. return self;
  72973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72974. }, function($ctx1) {$ctx1.fill(self,"collectionKeys",{})});
  72975. //>>excludeEnd("ctx");
  72976. }; }),
  72977. $globals.AssociativeCollectionTest);
  72978. $core.addMethod(
  72979. $core.method({
  72980. selector: "collectionValues",
  72981. protocol: "fixture",
  72982. //>>excludeStart("ide", pragmas.excludeIdeData);
  72983. args: [],
  72984. source: "collectionValues\x0a\x09self subclassResponsibility",
  72985. referencedClasses: [],
  72986. //>>excludeEnd("ide");
  72987. pragmas: [],
  72988. messageSends: ["subclassResponsibility"]
  72989. }, function ($methodClass){ return function (){
  72990. var self=this,$self=this;
  72991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72992. return $core.withContext(function($ctx1) {
  72993. //>>excludeEnd("ctx");
  72994. $self._subclassResponsibility();
  72995. return self;
  72996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72997. }, function($ctx1) {$ctx1.fill(self,"collectionValues",{})});
  72998. //>>excludeEnd("ctx");
  72999. }; }),
  73000. $globals.AssociativeCollectionTest);
  73001. $core.addMethod(
  73002. $core.method({
  73003. selector: "nonIndexesDo:",
  73004. protocol: "fixture",
  73005. //>>excludeStart("ide", pragmas.excludeIdeData);
  73006. args: ["aBlock"],
  73007. source: "nonIndexesDo: aBlock\x0a\x09aBlock value: 5.\x0a\x09aBlock value: [].\x0a\x09aBlock value: Object new.\x0a\x09aBlock value: 'z'",
  73008. referencedClasses: ["Object"],
  73009. //>>excludeEnd("ide");
  73010. pragmas: [],
  73011. messageSends: ["value:", "new"]
  73012. }, function ($methodClass){ return function (aBlock){
  73013. var self=this,$self=this;
  73014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73015. return $core.withContext(function($ctx1) {
  73016. //>>excludeEnd("ctx");
  73017. [$recv(aBlock)._value_((5))
  73018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73019. ,$ctx1.sendIdx["value:"]=1
  73020. //>>excludeEnd("ctx");
  73021. ][0];
  73022. [$recv(aBlock)._value_((function(){
  73023. }))
  73024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73025. ,$ctx1.sendIdx["value:"]=2
  73026. //>>excludeEnd("ctx");
  73027. ][0];
  73028. [$recv(aBlock)._value_($recv($globals.Object)._new())
  73029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73030. ,$ctx1.sendIdx["value:"]=3
  73031. //>>excludeEnd("ctx");
  73032. ][0];
  73033. $recv(aBlock)._value_("z");
  73034. return self;
  73035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73036. }, function($ctx1) {$ctx1.fill(self,"nonIndexesDo:",{aBlock:aBlock})});
  73037. //>>excludeEnd("ctx");
  73038. }; }),
  73039. $globals.AssociativeCollectionTest);
  73040. $core.addMethod(
  73041. $core.method({
  73042. selector: "sampleNewIndex",
  73043. protocol: "fixture",
  73044. //>>excludeStart("ide", pragmas.excludeIdeData);
  73045. args: [],
  73046. source: "sampleNewIndex\x0a\x09^ 'new'",
  73047. referencedClasses: [],
  73048. //>>excludeEnd("ide");
  73049. pragmas: [],
  73050. messageSends: []
  73051. }, function ($methodClass){ return function (){
  73052. var self=this,$self=this;
  73053. return "new";
  73054. }; }),
  73055. $globals.AssociativeCollectionTest);
  73056. $core.addMethod(
  73057. $core.method({
  73058. selector: "samplesDo:",
  73059. protocol: "fixture",
  73060. //>>excludeStart("ide", pragmas.excludeIdeData);
  73061. args: ["aBlock"],
  73062. source: "samplesDo: aBlock\x0a\x09aBlock value: 'a' value: 2",
  73063. referencedClasses: [],
  73064. //>>excludeEnd("ide");
  73065. pragmas: [],
  73066. messageSends: ["value:value:"]
  73067. }, function ($methodClass){ return function (aBlock){
  73068. var self=this,$self=this;
  73069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73070. return $core.withContext(function($ctx1) {
  73071. //>>excludeEnd("ctx");
  73072. $recv(aBlock)._value_value_("a",(2));
  73073. return self;
  73074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73075. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
  73076. //>>excludeEnd("ctx");
  73077. }; }),
  73078. $globals.AssociativeCollectionTest);
  73079. $core.addMethod(
  73080. $core.method({
  73081. selector: "testAddAll",
  73082. protocol: "tests",
  73083. //>>excludeStart("ide", pragmas.excludeIdeData);
  73084. args: [],
  73085. source: "testAddAll\x0a\x09super testAddAll.\x0a\x09self assert: (self collection addAll: self collection; yourself) equals: self collection.\x0a\x09self assert: (self collection addAll: self collectionWithNewValue; yourself) equals: self collectionWithNewValue.\x0a\x09self assert: (self collectionWithNewValue addAll: self collection; yourself) equals: self collectionWithNewValue",
  73086. referencedClasses: [],
  73087. //>>excludeEnd("ide");
  73088. pragmas: [],
  73089. messageSends: ["testAddAll", "assert:equals:", "addAll:", "collection", "yourself", "collectionWithNewValue"]
  73090. }, function ($methodClass){ return function (){
  73091. var self=this,$self=this;
  73092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73093. return $core.withContext(function($ctx1) {
  73094. //>>excludeEnd("ctx");
  73095. var $1,$2,$3;
  73096. [(
  73097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73098. $ctx1.supercall = true,
  73099. //>>excludeEnd("ctx");
  73100. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._testAddAll.call($self))
  73101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73102. ,$ctx1.supercall = false
  73103. //>>excludeEnd("ctx");
  73104. ][0];
  73105. $1=[$self._collection()
  73106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73107. ,$ctx1.sendIdx["collection"]=1
  73108. //>>excludeEnd("ctx");
  73109. ][0];
  73110. [$recv($1)._addAll_([$self._collection()
  73111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73112. ,$ctx1.sendIdx["collection"]=2
  73113. //>>excludeEnd("ctx");
  73114. ][0])
  73115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73116. ,$ctx1.sendIdx["addAll:"]=1
  73117. //>>excludeEnd("ctx");
  73118. ][0];
  73119. [$self._assert_equals_([$recv($1)._yourself()
  73120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73121. ,$ctx1.sendIdx["yourself"]=1
  73122. //>>excludeEnd("ctx");
  73123. ][0],[$self._collection()
  73124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73125. ,$ctx1.sendIdx["collection"]=3
  73126. //>>excludeEnd("ctx");
  73127. ][0])
  73128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73129. ,$ctx1.sendIdx["assert:equals:"]=1
  73130. //>>excludeEnd("ctx");
  73131. ][0];
  73132. $2=[$self._collection()
  73133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73134. ,$ctx1.sendIdx["collection"]=4
  73135. //>>excludeEnd("ctx");
  73136. ][0];
  73137. [$recv($2)._addAll_([$self._collectionWithNewValue()
  73138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73139. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  73140. //>>excludeEnd("ctx");
  73141. ][0])
  73142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73143. ,$ctx1.sendIdx["addAll:"]=2
  73144. //>>excludeEnd("ctx");
  73145. ][0];
  73146. [$self._assert_equals_([$recv($2)._yourself()
  73147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73148. ,$ctx1.sendIdx["yourself"]=2
  73149. //>>excludeEnd("ctx");
  73150. ][0],[$self._collectionWithNewValue()
  73151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73152. ,$ctx1.sendIdx["collectionWithNewValue"]=2
  73153. //>>excludeEnd("ctx");
  73154. ][0])
  73155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73156. ,$ctx1.sendIdx["assert:equals:"]=2
  73157. //>>excludeEnd("ctx");
  73158. ][0];
  73159. $3=[$self._collectionWithNewValue()
  73160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73161. ,$ctx1.sendIdx["collectionWithNewValue"]=3
  73162. //>>excludeEnd("ctx");
  73163. ][0];
  73164. $recv($3)._addAll_($self._collection());
  73165. $self._assert_equals_($recv($3)._yourself(),$self._collectionWithNewValue());
  73166. return self;
  73167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73168. }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
  73169. //>>excludeEnd("ctx");
  73170. }; }),
  73171. $globals.AssociativeCollectionTest);
  73172. $core.addMethod(
  73173. $core.method({
  73174. selector: "testAsDictionary",
  73175. protocol: "tests",
  73176. //>>excludeStart("ide", pragmas.excludeIdeData);
  73177. args: [],
  73178. source: "testAsDictionary\x0aself assert: ( self collectionClass new asDictionary isMemberOf: Dictionary ).",
  73179. referencedClasses: ["Dictionary"],
  73180. //>>excludeEnd("ide");
  73181. pragmas: [],
  73182. messageSends: ["assert:", "isMemberOf:", "asDictionary", "new", "collectionClass"]
  73183. }, function ($methodClass){ return function (){
  73184. var self=this,$self=this;
  73185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73186. return $core.withContext(function($ctx1) {
  73187. //>>excludeEnd("ctx");
  73188. $self._assert_($recv($recv($recv($self._collectionClass())._new())._asDictionary())._isMemberOf_($globals.Dictionary));
  73189. return self;
  73190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73191. }, function($ctx1) {$ctx1.fill(self,"testAsDictionary",{})});
  73192. //>>excludeEnd("ctx");
  73193. }; }),
  73194. $globals.AssociativeCollectionTest);
  73195. $core.addMethod(
  73196. $core.method({
  73197. selector: "testAsHashedCollection",
  73198. protocol: "tests",
  73199. //>>excludeStart("ide", pragmas.excludeIdeData);
  73200. args: [],
  73201. source: "testAsHashedCollection\x0aself assert: ( self collectionClass new asHashedCollection isMemberOf: HashedCollection ).",
  73202. referencedClasses: ["HashedCollection"],
  73203. //>>excludeEnd("ide");
  73204. pragmas: [],
  73205. messageSends: ["assert:", "isMemberOf:", "asHashedCollection", "new", "collectionClass"]
  73206. }, function ($methodClass){ return function (){
  73207. var self=this,$self=this;
  73208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73209. return $core.withContext(function($ctx1) {
  73210. //>>excludeEnd("ctx");
  73211. $self._assert_($recv($recv($recv($self._collectionClass())._new())._asHashedCollection())._isMemberOf_($globals.HashedCollection));
  73212. return self;
  73213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73214. }, function($ctx1) {$ctx1.fill(self,"testAsHashedCollection",{})});
  73215. //>>excludeEnd("ctx");
  73216. }; }),
  73217. $globals.AssociativeCollectionTest);
  73218. $core.addMethod(
  73219. $core.method({
  73220. selector: "testFrom",
  73221. protocol: "tests",
  73222. //>>excludeStart("ide", pragmas.excludeIdeData);
  73223. args: [],
  73224. source: "testFrom\x0a\x22Accept a collection of associations.\x22\x0a| associations |\x0aassociations := { 'a' -> 1. 'b' -> 2 }.\x0aself assertSameContents: ( self class collectionClass from: associations ) as: #{ 'a' -> 1. 'b' -> 2 }.",
  73225. referencedClasses: [],
  73226. //>>excludeEnd("ide");
  73227. pragmas: [],
  73228. messageSends: ["->", "assertSameContents:as:", "from:", "collectionClass", "class"]
  73229. }, function ($methodClass){ return function (){
  73230. var self=this,$self=this;
  73231. var associations;
  73232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73233. return $core.withContext(function($ctx1) {
  73234. //>>excludeEnd("ctx");
  73235. associations=[["a".__minus_gt((1))
  73236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73237. ,$ctx1.sendIdx["->"]=1
  73238. //>>excludeEnd("ctx");
  73239. ][0],"b".__minus_gt((2))];
  73240. $self._assertSameContents_as_($recv($recv($self._class())._collectionClass())._from_(associations),$globals.HashedCollection._newFromPairs_(["a",(1),"b",(2)]));
  73241. return self;
  73242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73243. }, function($ctx1) {$ctx1.fill(self,"testFrom",{associations:associations})});
  73244. //>>excludeEnd("ctx");
  73245. }; }),
  73246. $globals.AssociativeCollectionTest);
  73247. $core.addMethod(
  73248. $core.method({
  73249. selector: "testKeys",
  73250. protocol: "tests",
  73251. //>>excludeStart("ide", pragmas.excludeIdeData);
  73252. args: [],
  73253. source: "testKeys\x0a\x09self assert:self collectionClass new keys isEmpty.\x0a\x09self assertSameContents:self collection keys as: self collectionKeys.\x0a\x09self assertSameContents:self collectionWithNewValue keys as: self collectionKeys, { self sampleNewIndex }",
  73254. referencedClasses: [],
  73255. //>>excludeEnd("ide");
  73256. pragmas: [],
  73257. messageSends: ["assert:", "isEmpty", "keys", "new", "collectionClass", "assertSameContents:as:", "collection", "collectionKeys", "collectionWithNewValue", ",", "sampleNewIndex"]
  73258. }, function ($methodClass){ return function (){
  73259. var self=this,$self=this;
  73260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73261. return $core.withContext(function($ctx1) {
  73262. //>>excludeEnd("ctx");
  73263. $self._assert_($recv([$recv($recv($self._collectionClass())._new())._keys()
  73264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73265. ,$ctx1.sendIdx["keys"]=1
  73266. //>>excludeEnd("ctx");
  73267. ][0])._isEmpty());
  73268. [$self._assertSameContents_as_([$recv($self._collection())._keys()
  73269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73270. ,$ctx1.sendIdx["keys"]=2
  73271. //>>excludeEnd("ctx");
  73272. ][0],[$self._collectionKeys()
  73273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73274. ,$ctx1.sendIdx["collectionKeys"]=1
  73275. //>>excludeEnd("ctx");
  73276. ][0])
  73277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73278. ,$ctx1.sendIdx["assertSameContents:as:"]=1
  73279. //>>excludeEnd("ctx");
  73280. ][0];
  73281. $self._assertSameContents_as_($recv($self._collectionWithNewValue())._keys(),$recv($self._collectionKeys()).__comma([$self._sampleNewIndex()]));
  73282. return self;
  73283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73284. }, function($ctx1) {$ctx1.fill(self,"testKeys",{})});
  73285. //>>excludeEnd("ctx");
  73286. }; }),
  73287. $globals.AssociativeCollectionTest);
  73288. $core.addMethod(
  73289. $core.method({
  73290. selector: "testNewFromPairs",
  73291. protocol: "tests",
  73292. //>>excludeStart("ide", pragmas.excludeIdeData);
  73293. args: [],
  73294. source: "testNewFromPairs\x0a\x22Accept an array in which all odd indexes are keys and evens are values.\x22\x0a| flattenedAssociations |\x0aflattenedAssociations := { 'a'. 1. 'b'. 2 }.\x0aself assertSameContents: ( self class collectionClass newFromPairs: flattenedAssociations ) as: #{ 'a' -> 1. 'b' -> 2 }.",
  73295. referencedClasses: [],
  73296. //>>excludeEnd("ide");
  73297. pragmas: [],
  73298. messageSends: ["assertSameContents:as:", "newFromPairs:", "collectionClass", "class"]
  73299. }, function ($methodClass){ return function (){
  73300. var self=this,$self=this;
  73301. var flattenedAssociations;
  73302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73303. return $core.withContext(function($ctx1) {
  73304. //>>excludeEnd("ctx");
  73305. flattenedAssociations=["a",(1),"b",(2)];
  73306. $self._assertSameContents_as_($recv($recv($self._class())._collectionClass())._newFromPairs_(flattenedAssociations),$globals.HashedCollection._newFromPairs_(["a",(1),"b",(2)]));
  73307. return self;
  73308. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73309. }, function($ctx1) {$ctx1.fill(self,"testNewFromPairs",{flattenedAssociations:flattenedAssociations})});
  73310. //>>excludeEnd("ctx");
  73311. }; }),
  73312. $globals.AssociativeCollectionTest);
  73313. $core.addMethod(
  73314. $core.method({
  73315. selector: "testPrintString",
  73316. protocol: "tests",
  73317. //>>excludeStart("ide", pragmas.excludeIdeData);
  73318. args: [],
  73319. source: "testPrintString\x0a\x09self\x0a\x09\x09assert: (self collectionClass new\x0a\x09\x09\x09\x09\x09\x09\x09at:'firstname' put: 'James';\x0a\x09\x09\x09\x09\x09\x09\x09at:'lastname' put: 'Bond';\x0a\x09\x09\x09\x09\x09\x09\x09printString)\x0a\x09\x09equals: 'a ', self collectionClass name, ' (''firstname'' -> ''James'' , ''lastname'' -> ''Bond'')'",
  73320. referencedClasses: [],
  73321. //>>excludeEnd("ide");
  73322. pragmas: [],
  73323. messageSends: ["assert:equals:", "at:put:", "new", "collectionClass", "printString", ",", "name"]
  73324. }, function ($methodClass){ return function (){
  73325. var self=this,$self=this;
  73326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73327. return $core.withContext(function($ctx1) {
  73328. //>>excludeEnd("ctx");
  73329. var $1;
  73330. $1=$recv([$self._collectionClass()
  73331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73332. ,$ctx1.sendIdx["collectionClass"]=1
  73333. //>>excludeEnd("ctx");
  73334. ][0])._new();
  73335. [$recv($1)._at_put_("firstname","James")
  73336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73337. ,$ctx1.sendIdx["at:put:"]=1
  73338. //>>excludeEnd("ctx");
  73339. ][0];
  73340. $recv($1)._at_put_("lastname","Bond");
  73341. $self._assert_equals_($recv($1)._printString(),[$recv("a ".__comma($recv($self._collectionClass())._name())).__comma(" ('firstname' -> 'James' , 'lastname' -> 'Bond')")
  73342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73343. ,$ctx1.sendIdx[","]=1
  73344. //>>excludeEnd("ctx");
  73345. ][0]);
  73346. return self;
  73347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73348. }, function($ctx1) {$ctx1.fill(self,"testPrintString",{})});
  73349. //>>excludeEnd("ctx");
  73350. }; }),
  73351. $globals.AssociativeCollectionTest);
  73352. $core.addMethod(
  73353. $core.method({
  73354. selector: "testRemoveKey",
  73355. protocol: "tests",
  73356. //>>excludeStart("ide", pragmas.excludeIdeData);
  73357. args: [],
  73358. source: "testRemoveKey\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09| collection |\x0a\x09\x09collection := self collection.\x0a\x09\x09self should: [ collection removeKey: each ] raise: Error.\x0a\x09\x09self assert: collection equals: self collection ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09| collection |\x0a\x09\x09collection := self collection.\x0a\x09\x09self assert: (collection removeKey: index) equals: value.\x0a\x09\x09self deny: collection = self collection ].\x0a\x09self\x0a\x09\x09assert: (self collectionWithNewValue removeKey: self sampleNewIndex; yourself)\x0a\x09\x09equals: self collection",
  73359. referencedClasses: ["Error"],
  73360. //>>excludeEnd("ide");
  73361. pragmas: [],
  73362. messageSends: ["nonIndexesDo:", "collection", "should:raise:", "removeKey:", "assert:equals:", "samplesDo:", "deny:", "=", "collectionWithNewValue", "sampleNewIndex", "yourself"]
  73363. }, function ($methodClass){ return function (){
  73364. var self=this,$self=this;
  73365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73366. return $core.withContext(function($ctx1) {
  73367. //>>excludeEnd("ctx");
  73368. var $1;
  73369. $self._nonIndexesDo_((function(each){
  73370. var collection;
  73371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73372. return $core.withContext(function($ctx2) {
  73373. //>>excludeEnd("ctx");
  73374. collection=[$self._collection()
  73375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73376. ,$ctx2.sendIdx["collection"]=1
  73377. //>>excludeEnd("ctx");
  73378. ][0];
  73379. $self._should_raise_((function(){
  73380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73381. return $core.withContext(function($ctx3) {
  73382. //>>excludeEnd("ctx");
  73383. return [$recv(collection)._removeKey_(each)
  73384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73385. ,$ctx3.sendIdx["removeKey:"]=1
  73386. //>>excludeEnd("ctx");
  73387. ][0];
  73388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73389. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  73390. //>>excludeEnd("ctx");
  73391. }),$globals.Error);
  73392. return [$self._assert_equals_(collection,[$self._collection()
  73393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73394. ,$ctx2.sendIdx["collection"]=2
  73395. //>>excludeEnd("ctx");
  73396. ][0])
  73397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73398. ,$ctx2.sendIdx["assert:equals:"]=1
  73399. //>>excludeEnd("ctx");
  73400. ][0];
  73401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73402. }, function($ctx2) {$ctx2.fillBlock({each:each,collection:collection},$ctx1,1)});
  73403. //>>excludeEnd("ctx");
  73404. }));
  73405. $self._samplesDo_((function(index,value){
  73406. var collection;
  73407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73408. return $core.withContext(function($ctx2) {
  73409. //>>excludeEnd("ctx");
  73410. collection=[$self._collection()
  73411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73412. ,$ctx2.sendIdx["collection"]=3
  73413. //>>excludeEnd("ctx");
  73414. ][0];
  73415. [$self._assert_equals_([$recv(collection)._removeKey_(index)
  73416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73417. ,$ctx2.sendIdx["removeKey:"]=2
  73418. //>>excludeEnd("ctx");
  73419. ][0],value)
  73420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73421. ,$ctx2.sendIdx["assert:equals:"]=2
  73422. //>>excludeEnd("ctx");
  73423. ][0];
  73424. return $self._deny_($recv(collection).__eq([$self._collection()
  73425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73426. ,$ctx2.sendIdx["collection"]=4
  73427. //>>excludeEnd("ctx");
  73428. ][0]));
  73429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73430. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,3)});
  73431. //>>excludeEnd("ctx");
  73432. }));
  73433. $1=$self._collectionWithNewValue();
  73434. $recv($1)._removeKey_($self._sampleNewIndex());
  73435. $self._assert_equals_($recv($1)._yourself(),$self._collection());
  73436. return self;
  73437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73438. }, function($ctx1) {$ctx1.fill(self,"testRemoveKey",{})});
  73439. //>>excludeEnd("ctx");
  73440. }; }),
  73441. $globals.AssociativeCollectionTest);
  73442. $core.addMethod(
  73443. $core.method({
  73444. selector: "testRemoveKeyIfAbsent",
  73445. protocol: "tests",
  73446. //>>excludeStart("ide", pragmas.excludeIdeData);
  73447. args: [],
  73448. source: "testRemoveKeyIfAbsent\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09| collection |\x0a\x09\x09collection := self collection.\x0a\x09\x09self assert: (collection removeKey: each ifAbsent: [ self sampleNewValue ]) equals: self sampleNewValue.\x0a\x09\x09self assert: collection equals: self collection ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09| collection |\x0a\x09\x09collection := self collection.\x0a\x09\x09self assert: (collection removeKey: index ifAbsent: [ self sampleNewValue ]) equals: value.\x0a\x09\x09self deny: collection = self collection ].\x0a\x09self\x0a\x09\x09assert: (self collectionWithNewValue removeKey: self sampleNewIndex ifAbsent: [ self assert: false ]; yourself)\x0a\x09\x09equals: self collection",
  73449. referencedClasses: [],
  73450. //>>excludeEnd("ide");
  73451. pragmas: [],
  73452. messageSends: ["nonIndexesDo:", "collection", "assert:equals:", "removeKey:ifAbsent:", "sampleNewValue", "samplesDo:", "deny:", "=", "collectionWithNewValue", "sampleNewIndex", "assert:", "yourself"]
  73453. }, function ($methodClass){ return function (){
  73454. var self=this,$self=this;
  73455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73456. return $core.withContext(function($ctx1) {
  73457. //>>excludeEnd("ctx");
  73458. var $1;
  73459. $self._nonIndexesDo_((function(each){
  73460. var collection;
  73461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73462. return $core.withContext(function($ctx2) {
  73463. //>>excludeEnd("ctx");
  73464. collection=[$self._collection()
  73465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73466. ,$ctx2.sendIdx["collection"]=1
  73467. //>>excludeEnd("ctx");
  73468. ][0];
  73469. [$self._assert_equals_([$recv(collection)._removeKey_ifAbsent_(each,(function(){
  73470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73471. return $core.withContext(function($ctx3) {
  73472. //>>excludeEnd("ctx");
  73473. return [$self._sampleNewValue()
  73474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73475. ,$ctx3.sendIdx["sampleNewValue"]=1
  73476. //>>excludeEnd("ctx");
  73477. ][0];
  73478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73479. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  73480. //>>excludeEnd("ctx");
  73481. }))
  73482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73483. ,$ctx2.sendIdx["removeKey:ifAbsent:"]=1
  73484. //>>excludeEnd("ctx");
  73485. ][0],[$self._sampleNewValue()
  73486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73487. ,$ctx2.sendIdx["sampleNewValue"]=2
  73488. //>>excludeEnd("ctx");
  73489. ][0])
  73490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73491. ,$ctx2.sendIdx["assert:equals:"]=1
  73492. //>>excludeEnd("ctx");
  73493. ][0];
  73494. return [$self._assert_equals_(collection,[$self._collection()
  73495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73496. ,$ctx2.sendIdx["collection"]=2
  73497. //>>excludeEnd("ctx");
  73498. ][0])
  73499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73500. ,$ctx2.sendIdx["assert:equals:"]=2
  73501. //>>excludeEnd("ctx");
  73502. ][0];
  73503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73504. }, function($ctx2) {$ctx2.fillBlock({each:each,collection:collection},$ctx1,1)});
  73505. //>>excludeEnd("ctx");
  73506. }));
  73507. $self._samplesDo_((function(index,value){
  73508. var collection;
  73509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73510. return $core.withContext(function($ctx2) {
  73511. //>>excludeEnd("ctx");
  73512. collection=[$self._collection()
  73513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73514. ,$ctx2.sendIdx["collection"]=3
  73515. //>>excludeEnd("ctx");
  73516. ][0];
  73517. [$self._assert_equals_([$recv(collection)._removeKey_ifAbsent_(index,(function(){
  73518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73519. return $core.withContext(function($ctx3) {
  73520. //>>excludeEnd("ctx");
  73521. return $self._sampleNewValue();
  73522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73523. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  73524. //>>excludeEnd("ctx");
  73525. }))
  73526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73527. ,$ctx2.sendIdx["removeKey:ifAbsent:"]=2
  73528. //>>excludeEnd("ctx");
  73529. ][0],value)
  73530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73531. ,$ctx2.sendIdx["assert:equals:"]=3
  73532. //>>excludeEnd("ctx");
  73533. ][0];
  73534. return $self._deny_($recv(collection).__eq([$self._collection()
  73535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73536. ,$ctx2.sendIdx["collection"]=4
  73537. //>>excludeEnd("ctx");
  73538. ][0]));
  73539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73540. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,3)});
  73541. //>>excludeEnd("ctx");
  73542. }));
  73543. $1=$self._collectionWithNewValue();
  73544. $recv($1)._removeKey_ifAbsent_($self._sampleNewIndex(),(function(){
  73545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73546. return $core.withContext(function($ctx2) {
  73547. //>>excludeEnd("ctx");
  73548. return $self._assert_(false);
  73549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73550. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  73551. //>>excludeEnd("ctx");
  73552. }));
  73553. $self._assert_equals_($recv($1)._yourself(),$self._collection());
  73554. return self;
  73555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73556. }, function($ctx1) {$ctx1.fill(self,"testRemoveKeyIfAbsent",{})});
  73557. //>>excludeEnd("ctx");
  73558. }; }),
  73559. $globals.AssociativeCollectionTest);
  73560. $core.addMethod(
  73561. $core.method({
  73562. selector: "testUnorderedComma",
  73563. protocol: "tests",
  73564. //>>excludeStart("ide", pragmas.excludeIdeData);
  73565. args: [],
  73566. source: "testUnorderedComma\x0a\x09self assert: self collection, self collection equals: self collection.\x0a\x09self assert: self sampleNewValueAsCollection, self collection equals: self collectionWithNewValue.\x0a\x09self assert: self collection, self collectionWithNewValue equals: self collectionWithNewValue.\x0a\x09self assert: self collectionWithNewValue, self collection equals: self collectionWithNewValue",
  73567. referencedClasses: [],
  73568. //>>excludeEnd("ide");
  73569. pragmas: [],
  73570. messageSends: ["assert:equals:", ",", "collection", "sampleNewValueAsCollection", "collectionWithNewValue"]
  73571. }, function ($methodClass){ return function (){
  73572. var self=this,$self=this;
  73573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73574. return $core.withContext(function($ctx1) {
  73575. //>>excludeEnd("ctx");
  73576. [$self._assert_equals_([$recv([$self._collection()
  73577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73578. ,$ctx1.sendIdx["collection"]=1
  73579. //>>excludeEnd("ctx");
  73580. ][0]).__comma([$self._collection()
  73581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73582. ,$ctx1.sendIdx["collection"]=2
  73583. //>>excludeEnd("ctx");
  73584. ][0])
  73585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73586. ,$ctx1.sendIdx[","]=1
  73587. //>>excludeEnd("ctx");
  73588. ][0],[$self._collection()
  73589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73590. ,$ctx1.sendIdx["collection"]=3
  73591. //>>excludeEnd("ctx");
  73592. ][0])
  73593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73594. ,$ctx1.sendIdx["assert:equals:"]=1
  73595. //>>excludeEnd("ctx");
  73596. ][0];
  73597. [$self._assert_equals_([$recv($self._sampleNewValueAsCollection()).__comma([$self._collection()
  73598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73599. ,$ctx1.sendIdx["collection"]=4
  73600. //>>excludeEnd("ctx");
  73601. ][0])
  73602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73603. ,$ctx1.sendIdx[","]=2
  73604. //>>excludeEnd("ctx");
  73605. ][0],[$self._collectionWithNewValue()
  73606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73607. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  73608. //>>excludeEnd("ctx");
  73609. ][0])
  73610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73611. ,$ctx1.sendIdx["assert:equals:"]=2
  73612. //>>excludeEnd("ctx");
  73613. ][0];
  73614. [$self._assert_equals_([$recv([$self._collection()
  73615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73616. ,$ctx1.sendIdx["collection"]=5
  73617. //>>excludeEnd("ctx");
  73618. ][0]).__comma([$self._collectionWithNewValue()
  73619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73620. ,$ctx1.sendIdx["collectionWithNewValue"]=2
  73621. //>>excludeEnd("ctx");
  73622. ][0])
  73623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73624. ,$ctx1.sendIdx[","]=3
  73625. //>>excludeEnd("ctx");
  73626. ][0],[$self._collectionWithNewValue()
  73627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73628. ,$ctx1.sendIdx["collectionWithNewValue"]=3
  73629. //>>excludeEnd("ctx");
  73630. ][0])
  73631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73632. ,$ctx1.sendIdx["assert:equals:"]=3
  73633. //>>excludeEnd("ctx");
  73634. ][0];
  73635. $self._assert_equals_($recv([$self._collectionWithNewValue()
  73636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73637. ,$ctx1.sendIdx["collectionWithNewValue"]=4
  73638. //>>excludeEnd("ctx");
  73639. ][0]).__comma($self._collection()),$self._collectionWithNewValue());
  73640. return self;
  73641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73642. }, function($ctx1) {$ctx1.fill(self,"testUnorderedComma",{})});
  73643. //>>excludeEnd("ctx");
  73644. }; }),
  73645. $globals.AssociativeCollectionTest);
  73646. $core.addMethod(
  73647. $core.method({
  73648. selector: "testValues",
  73649. protocol: "tests",
  73650. //>>excludeStart("ide", pragmas.excludeIdeData);
  73651. args: [],
  73652. source: "testValues\x0a\x09self assert:self collectionClass new values isEmpty.\x0a\x09self assertSameContents:self collection values as: self collectionValues.\x0a\x09self assertSameContents:self collectionWithNewValue values as: self collectionValues, { self sampleNewValue }",
  73653. referencedClasses: [],
  73654. //>>excludeEnd("ide");
  73655. pragmas: [],
  73656. messageSends: ["assert:", "isEmpty", "values", "new", "collectionClass", "assertSameContents:as:", "collection", "collectionValues", "collectionWithNewValue", ",", "sampleNewValue"]
  73657. }, function ($methodClass){ return function (){
  73658. var self=this,$self=this;
  73659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73660. return $core.withContext(function($ctx1) {
  73661. //>>excludeEnd("ctx");
  73662. $self._assert_($recv([$recv($recv($self._collectionClass())._new())._values()
  73663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73664. ,$ctx1.sendIdx["values"]=1
  73665. //>>excludeEnd("ctx");
  73666. ][0])._isEmpty());
  73667. [$self._assertSameContents_as_([$recv($self._collection())._values()
  73668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73669. ,$ctx1.sendIdx["values"]=2
  73670. //>>excludeEnd("ctx");
  73671. ][0],[$self._collectionValues()
  73672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73673. ,$ctx1.sendIdx["collectionValues"]=1
  73674. //>>excludeEnd("ctx");
  73675. ][0])
  73676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73677. ,$ctx1.sendIdx["assertSameContents:as:"]=1
  73678. //>>excludeEnd("ctx");
  73679. ][0];
  73680. $self._assertSameContents_as_($recv($self._collectionWithNewValue())._values(),$recv($self._collectionValues()).__comma([$self._sampleNewValue()]));
  73681. return self;
  73682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73683. }, function($ctx1) {$ctx1.fill(self,"testValues",{})});
  73684. //>>excludeEnd("ctx");
  73685. }; }),
  73686. $globals.AssociativeCollectionTest);
  73687. $core.addClass("DictionaryTest", $globals.AssociativeCollectionTest, "Kernel-Tests");
  73688. $core.addMethod(
  73689. $core.method({
  73690. selector: "collection",
  73691. protocol: "fixture",
  73692. //>>excludeStart("ide", pragmas.excludeIdeData);
  73693. args: [],
  73694. source: "collection\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: 1;\x0a\x09\x09at: 'a' put: 2;\x0a\x09\x09at: true put: 3;\x0a\x09\x09at: 1@3 put: -4;\x0a\x09\x09at: sampleBlock put: 9;\x0a\x09\x09yourself",
  73695. referencedClasses: ["Dictionary"],
  73696. //>>excludeEnd("ide");
  73697. pragmas: [],
  73698. messageSends: ["at:put:", "new", "@", "yourself"]
  73699. }, function ($methodClass){ return function (){
  73700. var self=this,$self=this;
  73701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73702. return $core.withContext(function($ctx1) {
  73703. //>>excludeEnd("ctx");
  73704. var $1;
  73705. $1=$recv($globals.Dictionary)._new();
  73706. [$recv($1)._at_put_((1),(1))
  73707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73708. ,$ctx1.sendIdx["at:put:"]=1
  73709. //>>excludeEnd("ctx");
  73710. ][0];
  73711. [$recv($1)._at_put_("a",(2))
  73712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73713. ,$ctx1.sendIdx["at:put:"]=2
  73714. //>>excludeEnd("ctx");
  73715. ][0];
  73716. [$recv($1)._at_put_(true,(3))
  73717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73718. ,$ctx1.sendIdx["at:put:"]=3
  73719. //>>excludeEnd("ctx");
  73720. ][0];
  73721. [$recv($1)._at_put_((1).__at((3)),(-4))
  73722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73723. ,$ctx1.sendIdx["at:put:"]=4
  73724. //>>excludeEnd("ctx");
  73725. ][0];
  73726. $recv($1)._at_put_($self.sampleBlock,(9));
  73727. return $recv($1)._yourself();
  73728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73729. }, function($ctx1) {$ctx1.fill(self,"collection",{})});
  73730. //>>excludeEnd("ctx");
  73731. }; }),
  73732. $globals.DictionaryTest);
  73733. $core.addMethod(
  73734. $core.method({
  73735. selector: "collectionKeys",
  73736. protocol: "fixture",
  73737. //>>excludeStart("ide", pragmas.excludeIdeData);
  73738. args: [],
  73739. source: "collectionKeys\x0a\x09^ {1. 'a'. true. 1@3. sampleBlock}",
  73740. referencedClasses: [],
  73741. //>>excludeEnd("ide");
  73742. pragmas: [],
  73743. messageSends: ["@"]
  73744. }, function ($methodClass){ return function (){
  73745. var self=this,$self=this;
  73746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73747. return $core.withContext(function($ctx1) {
  73748. //>>excludeEnd("ctx");
  73749. return [(1),"a",true,(1).__at((3)),$self.sampleBlock];
  73750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73751. }, function($ctx1) {$ctx1.fill(self,"collectionKeys",{})});
  73752. //>>excludeEnd("ctx");
  73753. }; }),
  73754. $globals.DictionaryTest);
  73755. $core.addMethod(
  73756. $core.method({
  73757. selector: "collectionOfPrintStrings",
  73758. protocol: "fixture",
  73759. //>>excludeStart("ide", pragmas.excludeIdeData);
  73760. args: [],
  73761. source: "collectionOfPrintStrings\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: '1';\x0a\x09\x09at: 'a' put: '2';\x0a\x09\x09at: true put: '3';\x0a\x09\x09at: 1@3 put: '-4';\x0a\x09\x09at: sampleBlock put: '9';\x0a\x09\x09yourself",
  73762. referencedClasses: ["Dictionary"],
  73763. //>>excludeEnd("ide");
  73764. pragmas: [],
  73765. messageSends: ["at:put:", "new", "@", "yourself"]
  73766. }, function ($methodClass){ return function (){
  73767. var self=this,$self=this;
  73768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73769. return $core.withContext(function($ctx1) {
  73770. //>>excludeEnd("ctx");
  73771. var $1;
  73772. $1=$recv($globals.Dictionary)._new();
  73773. [$recv($1)._at_put_((1),"1")
  73774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73775. ,$ctx1.sendIdx["at:put:"]=1
  73776. //>>excludeEnd("ctx");
  73777. ][0];
  73778. [$recv($1)._at_put_("a","2")
  73779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73780. ,$ctx1.sendIdx["at:put:"]=2
  73781. //>>excludeEnd("ctx");
  73782. ][0];
  73783. [$recv($1)._at_put_(true,"3")
  73784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73785. ,$ctx1.sendIdx["at:put:"]=3
  73786. //>>excludeEnd("ctx");
  73787. ][0];
  73788. [$recv($1)._at_put_((1).__at((3)),"-4")
  73789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73790. ,$ctx1.sendIdx["at:put:"]=4
  73791. //>>excludeEnd("ctx");
  73792. ][0];
  73793. $recv($1)._at_put_($self.sampleBlock,"9");
  73794. return $recv($1)._yourself();
  73795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73796. }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{})});
  73797. //>>excludeEnd("ctx");
  73798. }; }),
  73799. $globals.DictionaryTest);
  73800. $core.addMethod(
  73801. $core.method({
  73802. selector: "collectionSize",
  73803. protocol: "fixture",
  73804. //>>excludeStart("ide", pragmas.excludeIdeData);
  73805. args: [],
  73806. source: "collectionSize\x0a\x09^ 5",
  73807. referencedClasses: [],
  73808. //>>excludeEnd("ide");
  73809. pragmas: [],
  73810. messageSends: []
  73811. }, function ($methodClass){ return function (){
  73812. var self=this,$self=this;
  73813. return (5);
  73814. }; }),
  73815. $globals.DictionaryTest);
  73816. $core.addMethod(
  73817. $core.method({
  73818. selector: "collectionValues",
  73819. protocol: "fixture",
  73820. //>>excludeStart("ide", pragmas.excludeIdeData);
  73821. args: [],
  73822. source: "collectionValues\x0a\x09^ {1. 2. 3. -4. 9}",
  73823. referencedClasses: [],
  73824. //>>excludeEnd("ide");
  73825. pragmas: [],
  73826. messageSends: []
  73827. }, function ($methodClass){ return function (){
  73828. var self=this,$self=this;
  73829. return [(1),(2),(3),(-4),(9)];
  73830. }; }),
  73831. $globals.DictionaryTest);
  73832. $core.addMethod(
  73833. $core.method({
  73834. selector: "collectionWithDuplicates",
  73835. protocol: "fixture",
  73836. //>>excludeStart("ide", pragmas.excludeIdeData);
  73837. args: [],
  73838. source: "collectionWithDuplicates\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: 1;\x0a\x09\x09at: 'a' put: 2;\x0a\x09\x09at: true put: 3;\x0a\x09\x09at: 4 put: -4;\x0a\x09\x09at: sampleBlock put: 9;\x0a\x09\x09at: 'b' put: 1;\x0a\x09\x09at: 3 put: 3;\x0a\x09\x09at: false put: 12;\x0a\x09\x09yourself",
  73839. referencedClasses: ["Dictionary"],
  73840. //>>excludeEnd("ide");
  73841. pragmas: [],
  73842. messageSends: ["at:put:", "new", "yourself"]
  73843. }, function ($methodClass){ return function (){
  73844. var self=this,$self=this;
  73845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73846. return $core.withContext(function($ctx1) {
  73847. //>>excludeEnd("ctx");
  73848. var $1;
  73849. $1=$recv($globals.Dictionary)._new();
  73850. [$recv($1)._at_put_((1),(1))
  73851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73852. ,$ctx1.sendIdx["at:put:"]=1
  73853. //>>excludeEnd("ctx");
  73854. ][0];
  73855. [$recv($1)._at_put_("a",(2))
  73856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73857. ,$ctx1.sendIdx["at:put:"]=2
  73858. //>>excludeEnd("ctx");
  73859. ][0];
  73860. [$recv($1)._at_put_(true,(3))
  73861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73862. ,$ctx1.sendIdx["at:put:"]=3
  73863. //>>excludeEnd("ctx");
  73864. ][0];
  73865. [$recv($1)._at_put_((4),(-4))
  73866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73867. ,$ctx1.sendIdx["at:put:"]=4
  73868. //>>excludeEnd("ctx");
  73869. ][0];
  73870. [$recv($1)._at_put_($self.sampleBlock,(9))
  73871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73872. ,$ctx1.sendIdx["at:put:"]=5
  73873. //>>excludeEnd("ctx");
  73874. ][0];
  73875. [$recv($1)._at_put_("b",(1))
  73876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73877. ,$ctx1.sendIdx["at:put:"]=6
  73878. //>>excludeEnd("ctx");
  73879. ][0];
  73880. [$recv($1)._at_put_((3),(3))
  73881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73882. ,$ctx1.sendIdx["at:put:"]=7
  73883. //>>excludeEnd("ctx");
  73884. ][0];
  73885. $recv($1)._at_put_(false,(12));
  73886. return $recv($1)._yourself();
  73887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73888. }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{})});
  73889. //>>excludeEnd("ctx");
  73890. }; }),
  73891. $globals.DictionaryTest);
  73892. $core.addMethod(
  73893. $core.method({
  73894. selector: "collectionWithNewValue",
  73895. protocol: "fixture",
  73896. //>>excludeStart("ide", pragmas.excludeIdeData);
  73897. args: [],
  73898. source: "collectionWithNewValue\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: 1;\x0a\x09\x09at: 'a' put: 2;\x0a\x09\x09at: true put: 3;\x0a\x09\x09at: 1@3 put: -4;\x0a\x09\x09at: sampleBlock put: 9;\x0a\x09\x09at: 'new' put: 'N';\x0a\x09\x09yourself",
  73899. referencedClasses: ["Dictionary"],
  73900. //>>excludeEnd("ide");
  73901. pragmas: [],
  73902. messageSends: ["at:put:", "new", "@", "yourself"]
  73903. }, function ($methodClass){ return function (){
  73904. var self=this,$self=this;
  73905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73906. return $core.withContext(function($ctx1) {
  73907. //>>excludeEnd("ctx");
  73908. var $1;
  73909. $1=$recv($globals.Dictionary)._new();
  73910. [$recv($1)._at_put_((1),(1))
  73911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73912. ,$ctx1.sendIdx["at:put:"]=1
  73913. //>>excludeEnd("ctx");
  73914. ][0];
  73915. [$recv($1)._at_put_("a",(2))
  73916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73917. ,$ctx1.sendIdx["at:put:"]=2
  73918. //>>excludeEnd("ctx");
  73919. ][0];
  73920. [$recv($1)._at_put_(true,(3))
  73921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73922. ,$ctx1.sendIdx["at:put:"]=3
  73923. //>>excludeEnd("ctx");
  73924. ][0];
  73925. [$recv($1)._at_put_((1).__at((3)),(-4))
  73926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73927. ,$ctx1.sendIdx["at:put:"]=4
  73928. //>>excludeEnd("ctx");
  73929. ][0];
  73930. [$recv($1)._at_put_($self.sampleBlock,(9))
  73931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73932. ,$ctx1.sendIdx["at:put:"]=5
  73933. //>>excludeEnd("ctx");
  73934. ][0];
  73935. $recv($1)._at_put_("new","N");
  73936. return $recv($1)._yourself();
  73937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73938. }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{})});
  73939. //>>excludeEnd("ctx");
  73940. }; }),
  73941. $globals.DictionaryTest);
  73942. $core.addMethod(
  73943. $core.method({
  73944. selector: "sampleNewValueAsCollection",
  73945. protocol: "fixture",
  73946. //>>excludeStart("ide", pragmas.excludeIdeData);
  73947. args: [],
  73948. source: "sampleNewValueAsCollection\x0a\x09^ Dictionary new\x0a\x09\x09at: 'new' put: 'N';\x0a\x09\x09yourself",
  73949. referencedClasses: ["Dictionary"],
  73950. //>>excludeEnd("ide");
  73951. pragmas: [],
  73952. messageSends: ["at:put:", "new", "yourself"]
  73953. }, function ($methodClass){ return function (){
  73954. var self=this,$self=this;
  73955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73956. return $core.withContext(function($ctx1) {
  73957. //>>excludeEnd("ctx");
  73958. var $1;
  73959. $1=$recv($globals.Dictionary)._new();
  73960. $recv($1)._at_put_("new","N");
  73961. return $recv($1)._yourself();
  73962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73963. }, function($ctx1) {$ctx1.fill(self,"sampleNewValueAsCollection",{})});
  73964. //>>excludeEnd("ctx");
  73965. }; }),
  73966. $globals.DictionaryTest);
  73967. $core.addMethod(
  73968. $core.method({
  73969. selector: "samplesDo:",
  73970. protocol: "fixture",
  73971. //>>excludeStart("ide", pragmas.excludeIdeData);
  73972. args: ["aBlock"],
  73973. source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: true value: 3.\x0a\x09aBlock value: 1@3 value: -4.\x0a\x09aBlock value: sampleBlock value: 9",
  73974. referencedClasses: [],
  73975. //>>excludeEnd("ide");
  73976. pragmas: [],
  73977. messageSends: ["samplesDo:", "value:value:", "@"]
  73978. }, function ($methodClass){ return function (aBlock){
  73979. var self=this,$self=this;
  73980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73981. return $core.withContext(function($ctx1) {
  73982. //>>excludeEnd("ctx");
  73983. [(
  73984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73985. $ctx1.supercall = true,
  73986. //>>excludeEnd("ctx");
  73987. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._samplesDo_.call($self,aBlock))
  73988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73989. ,$ctx1.supercall = false
  73990. //>>excludeEnd("ctx");
  73991. ][0];
  73992. [$recv(aBlock)._value_value_(true,(3))
  73993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73994. ,$ctx1.sendIdx["value:value:"]=1
  73995. //>>excludeEnd("ctx");
  73996. ][0];
  73997. [$recv(aBlock)._value_value_((1).__at((3)),(-4))
  73998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73999. ,$ctx1.sendIdx["value:value:"]=2
  74000. //>>excludeEnd("ctx");
  74001. ][0];
  74002. $recv(aBlock)._value_value_($self.sampleBlock,(9));
  74003. return self;
  74004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74005. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
  74006. //>>excludeEnd("ctx");
  74007. }; }),
  74008. $globals.DictionaryTest);
  74009. $core.addMethod(
  74010. $core.method({
  74011. selector: "testAccessing",
  74012. protocol: "tests",
  74013. //>>excludeStart("ide", pragmas.excludeIdeData);
  74014. args: [],
  74015. source: "testAccessing\x0a\x09| d |\x0a\x0a\x09d := Dictionary new.\x0a\x0a\x09d at: 'hello' put: 'world'.\x0a\x09self assert: (d at: 'hello') equals: 'world'.\x0a\x09self assert: (d at: 'hello' ifAbsent: [ nil ]) equals: 'world'.\x0a\x09self deny: (d at: 'foo' ifAbsent: [ nil ]) = 'world'.\x0a\x0a\x09self assert: (d includesKey: 'hello').\x0a\x09self deny: (d includesKey: 'foo').\x0a\x0a\x09d at: 1 put: 2.\x0a\x09self assert: (d at: 1) equals: 2.\x0a\x0a\x09d at: 1@3 put: 3.\x0a\x09self assert: (d at: 1@3) equals: 3.\x0a\x0a\x09self assert: (d includesKey: 1@3).\x0a\x09self deny: (d includesKey: 3@1)",
  74016. referencedClasses: ["Dictionary"],
  74017. //>>excludeEnd("ide");
  74018. pragmas: [],
  74019. messageSends: ["new", "at:put:", "assert:equals:", "at:", "at:ifAbsent:", "deny:", "=", "assert:", "includesKey:", "@"]
  74020. }, function ($methodClass){ return function (){
  74021. var self=this,$self=this;
  74022. var d;
  74023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74024. return $core.withContext(function($ctx1) {
  74025. //>>excludeEnd("ctx");
  74026. d=$recv($globals.Dictionary)._new();
  74027. [$recv(d)._at_put_("hello","world")
  74028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74029. ,$ctx1.sendIdx["at:put:"]=1
  74030. //>>excludeEnd("ctx");
  74031. ][0];
  74032. [$self._assert_equals_([$recv(d)._at_("hello")
  74033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74034. ,$ctx1.sendIdx["at:"]=1
  74035. //>>excludeEnd("ctx");
  74036. ][0],"world")
  74037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74038. ,$ctx1.sendIdx["assert:equals:"]=1
  74039. //>>excludeEnd("ctx");
  74040. ][0];
  74041. [$self._assert_equals_([$recv(d)._at_ifAbsent_("hello",(function(){
  74042. return nil;
  74043. }))
  74044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74045. ,$ctx1.sendIdx["at:ifAbsent:"]=1
  74046. //>>excludeEnd("ctx");
  74047. ][0],"world")
  74048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74049. ,$ctx1.sendIdx["assert:equals:"]=2
  74050. //>>excludeEnd("ctx");
  74051. ][0];
  74052. [$self._deny_($recv($recv(d)._at_ifAbsent_("foo",(function(){
  74053. return nil;
  74054. }))).__eq("world"))
  74055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74056. ,$ctx1.sendIdx["deny:"]=1
  74057. //>>excludeEnd("ctx");
  74058. ][0];
  74059. [$self._assert_([$recv(d)._includesKey_("hello")
  74060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74061. ,$ctx1.sendIdx["includesKey:"]=1
  74062. //>>excludeEnd("ctx");
  74063. ][0])
  74064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74065. ,$ctx1.sendIdx["assert:"]=1
  74066. //>>excludeEnd("ctx");
  74067. ][0];
  74068. [$self._deny_([$recv(d)._includesKey_("foo")
  74069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74070. ,$ctx1.sendIdx["includesKey:"]=2
  74071. //>>excludeEnd("ctx");
  74072. ][0])
  74073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74074. ,$ctx1.sendIdx["deny:"]=2
  74075. //>>excludeEnd("ctx");
  74076. ][0];
  74077. [$recv(d)._at_put_((1),(2))
  74078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74079. ,$ctx1.sendIdx["at:put:"]=2
  74080. //>>excludeEnd("ctx");
  74081. ][0];
  74082. [$self._assert_equals_([$recv(d)._at_((1))
  74083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74084. ,$ctx1.sendIdx["at:"]=2
  74085. //>>excludeEnd("ctx");
  74086. ][0],(2))
  74087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74088. ,$ctx1.sendIdx["assert:equals:"]=3
  74089. //>>excludeEnd("ctx");
  74090. ][0];
  74091. $recv(d)._at_put_([(1).__at((3))
  74092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74093. ,$ctx1.sendIdx["@"]=1
  74094. //>>excludeEnd("ctx");
  74095. ][0],(3));
  74096. $self._assert_equals_($recv(d)._at_([(1).__at((3))
  74097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74098. ,$ctx1.sendIdx["@"]=2
  74099. //>>excludeEnd("ctx");
  74100. ][0]),(3));
  74101. $self._assert_([$recv(d)._includesKey_([(1).__at((3))
  74102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74103. ,$ctx1.sendIdx["@"]=3
  74104. //>>excludeEnd("ctx");
  74105. ][0])
  74106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74107. ,$ctx1.sendIdx["includesKey:"]=3
  74108. //>>excludeEnd("ctx");
  74109. ][0]);
  74110. $self._deny_($recv(d)._includesKey_((3).__at((1))));
  74111. return self;
  74112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74113. }, function($ctx1) {$ctx1.fill(self,"testAccessing",{d:d})});
  74114. //>>excludeEnd("ctx");
  74115. }; }),
  74116. $globals.DictionaryTest);
  74117. $core.addMethod(
  74118. $core.method({
  74119. selector: "testDynamicDictionaries",
  74120. protocol: "tests",
  74121. //>>excludeStart("ide", pragmas.excludeIdeData);
  74122. args: [],
  74123. source: "testDynamicDictionaries\x0a\x09self assert: #{'hello' -> 1} asDictionary equals: (Dictionary with: 'hello' -> 1)",
  74124. referencedClasses: ["Dictionary"],
  74125. //>>excludeEnd("ide");
  74126. pragmas: [],
  74127. messageSends: ["assert:equals:", "asDictionary", "with:", "->"]
  74128. }, function ($methodClass){ return function (){
  74129. var self=this,$self=this;
  74130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74131. return $core.withContext(function($ctx1) {
  74132. //>>excludeEnd("ctx");
  74133. $self._assert_equals_($recv($globals.HashedCollection._newFromPairs_(["hello",(1)]))._asDictionary(),$recv($globals.Dictionary)._with_("hello".__minus_gt((1))));
  74134. return self;
  74135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74136. }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaries",{})});
  74137. //>>excludeEnd("ctx");
  74138. }; }),
  74139. $globals.DictionaryTest);
  74140. $core.addMethod(
  74141. $core.method({
  74142. selector: "collectionClass",
  74143. protocol: "fixture",
  74144. //>>excludeStart("ide", pragmas.excludeIdeData);
  74145. args: [],
  74146. source: "collectionClass\x0a\x09^ Dictionary",
  74147. referencedClasses: ["Dictionary"],
  74148. //>>excludeEnd("ide");
  74149. pragmas: [],
  74150. messageSends: []
  74151. }, function ($methodClass){ return function (){
  74152. var self=this,$self=this;
  74153. return $globals.Dictionary;
  74154. }; }),
  74155. $globals.DictionaryTest.a$cls);
  74156. $core.addClass("HashedCollectionTest", $globals.AssociativeCollectionTest, "Kernel-Tests");
  74157. $core.addMethod(
  74158. $core.method({
  74159. selector: "collection",
  74160. protocol: "fixture",
  74161. //>>excludeStart("ide", pragmas.excludeIdeData);
  74162. args: [],
  74163. source: "collection\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4 }",
  74164. referencedClasses: [],
  74165. //>>excludeEnd("ide");
  74166. pragmas: [],
  74167. messageSends: []
  74168. }, function ($methodClass){ return function (){
  74169. var self=this,$self=this;
  74170. return $globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4)]);
  74171. }; }),
  74172. $globals.HashedCollectionTest);
  74173. $core.addMethod(
  74174. $core.method({
  74175. selector: "collectionKeys",
  74176. protocol: "fixture",
  74177. //>>excludeStart("ide", pragmas.excludeIdeData);
  74178. args: [],
  74179. source: "collectionKeys\x0a\x09^ { 'b'. 'a'. 'c'. 'd' }",
  74180. referencedClasses: [],
  74181. //>>excludeEnd("ide");
  74182. pragmas: [],
  74183. messageSends: []
  74184. }, function ($methodClass){ return function (){
  74185. var self=this,$self=this;
  74186. return ["b","a","c","d"];
  74187. }; }),
  74188. $globals.HashedCollectionTest);
  74189. $core.addMethod(
  74190. $core.method({
  74191. selector: "collectionOfPrintStrings",
  74192. protocol: "fixture",
  74193. //>>excludeStart("ide", pragmas.excludeIdeData);
  74194. args: [],
  74195. source: "collectionOfPrintStrings\x0a\x09^ #{ 'b' -> '1'. 'a' -> '2'. 'c' -> '3'. 'd' -> '-4' }",
  74196. referencedClasses: [],
  74197. //>>excludeEnd("ide");
  74198. pragmas: [],
  74199. messageSends: []
  74200. }, function ($methodClass){ return function (){
  74201. var self=this,$self=this;
  74202. return $globals.HashedCollection._newFromPairs_(["b","1","a","2","c","3","d","-4"]);
  74203. }; }),
  74204. $globals.HashedCollectionTest);
  74205. $core.addMethod(
  74206. $core.method({
  74207. selector: "collectionSize",
  74208. protocol: "fixture",
  74209. //>>excludeStart("ide", pragmas.excludeIdeData);
  74210. args: [],
  74211. source: "collectionSize\x0a\x09^ 4",
  74212. referencedClasses: [],
  74213. //>>excludeEnd("ide");
  74214. pragmas: [],
  74215. messageSends: []
  74216. }, function ($methodClass){ return function (){
  74217. var self=this,$self=this;
  74218. return (4);
  74219. }; }),
  74220. $globals.HashedCollectionTest);
  74221. $core.addMethod(
  74222. $core.method({
  74223. selector: "collectionValues",
  74224. protocol: "fixture",
  74225. //>>excludeStart("ide", pragmas.excludeIdeData);
  74226. args: [],
  74227. source: "collectionValues\x0a\x09^ { 1. 2. 3. -4 }",
  74228. referencedClasses: [],
  74229. //>>excludeEnd("ide");
  74230. pragmas: [],
  74231. messageSends: []
  74232. }, function ($methodClass){ return function (){
  74233. var self=this,$self=this;
  74234. return [(1),(2),(3),(-4)];
  74235. }; }),
  74236. $globals.HashedCollectionTest);
  74237. $core.addMethod(
  74238. $core.method({
  74239. selector: "collectionWithDuplicates",
  74240. protocol: "fixture",
  74241. //>>excludeStart("ide", pragmas.excludeIdeData);
  74242. args: [],
  74243. source: "collectionWithDuplicates\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4. 'e' -> 1. 'f' -> 2. 'g' -> 10. 'h' -> 0 }",
  74244. referencedClasses: [],
  74245. //>>excludeEnd("ide");
  74246. pragmas: [],
  74247. messageSends: []
  74248. }, function ($methodClass){ return function (){
  74249. var self=this,$self=this;
  74250. return $globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4),"e",(1),"f",(2),"g",(10),"h",(0)]);
  74251. }; }),
  74252. $globals.HashedCollectionTest);
  74253. $core.addMethod(
  74254. $core.method({
  74255. selector: "collectionWithNewValue",
  74256. protocol: "fixture",
  74257. //>>excludeStart("ide", pragmas.excludeIdeData);
  74258. args: [],
  74259. source: "collectionWithNewValue\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4. 'new' -> 'N' }",
  74260. referencedClasses: [],
  74261. //>>excludeEnd("ide");
  74262. pragmas: [],
  74263. messageSends: []
  74264. }, function ($methodClass){ return function (){
  74265. var self=this,$self=this;
  74266. return $globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4),"new","N"]);
  74267. }; }),
  74268. $globals.HashedCollectionTest);
  74269. $core.addMethod(
  74270. $core.method({
  74271. selector: "sampleNewValueAsCollection",
  74272. protocol: "fixture",
  74273. //>>excludeStart("ide", pragmas.excludeIdeData);
  74274. args: [],
  74275. source: "sampleNewValueAsCollection\x0a\x09^ #{ 'new' -> 'N' }",
  74276. referencedClasses: [],
  74277. //>>excludeEnd("ide");
  74278. pragmas: [],
  74279. messageSends: []
  74280. }, function ($methodClass){ return function (){
  74281. var self=this,$self=this;
  74282. return $globals.HashedCollection._newFromPairs_(["new","N"]);
  74283. }; }),
  74284. $globals.HashedCollectionTest);
  74285. $core.addMethod(
  74286. $core.method({
  74287. selector: "testDynamicDictionaries",
  74288. protocol: "tests",
  74289. //>>excludeStart("ide", pragmas.excludeIdeData);
  74290. args: [],
  74291. source: "testDynamicDictionaries\x0a\x09self assert: #{'hello' -> 1} asHashedCollection equals: (HashedCollection with: 'hello' -> 1)",
  74292. referencedClasses: ["HashedCollection"],
  74293. //>>excludeEnd("ide");
  74294. pragmas: [],
  74295. messageSends: ["assert:equals:", "asHashedCollection", "with:", "->"]
  74296. }, function ($methodClass){ return function (){
  74297. var self=this,$self=this;
  74298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74299. return $core.withContext(function($ctx1) {
  74300. //>>excludeEnd("ctx");
  74301. $self._assert_equals_($recv($globals.HashedCollection._newFromPairs_(["hello",(1)]))._asHashedCollection(),$recv($globals.HashedCollection)._with_("hello".__minus_gt((1))));
  74302. return self;
  74303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74304. }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaries",{})});
  74305. //>>excludeEnd("ctx");
  74306. }; }),
  74307. $globals.HashedCollectionTest);
  74308. $core.addMethod(
  74309. $core.method({
  74310. selector: "collectionClass",
  74311. protocol: "fixture",
  74312. //>>excludeStart("ide", pragmas.excludeIdeData);
  74313. args: [],
  74314. source: "collectionClass\x0a\x09^ HashedCollection",
  74315. referencedClasses: ["HashedCollection"],
  74316. //>>excludeEnd("ide");
  74317. pragmas: [],
  74318. messageSends: []
  74319. }, function ($methodClass){ return function (){
  74320. var self=this,$self=this;
  74321. return $globals.HashedCollection;
  74322. }; }),
  74323. $globals.HashedCollectionTest.a$cls);
  74324. $core.addClass("SequenceableCollectionTest", $globals.CollectionTest, "Kernel-Tests");
  74325. $core.addMethod(
  74326. $core.method({
  74327. selector: "collectionFirst",
  74328. protocol: "fixture",
  74329. //>>excludeStart("ide", pragmas.excludeIdeData);
  74330. args: [],
  74331. source: "collectionFirst\x0a\x09self subclassResponsibility",
  74332. referencedClasses: [],
  74333. //>>excludeEnd("ide");
  74334. pragmas: [],
  74335. messageSends: ["subclassResponsibility"]
  74336. }, function ($methodClass){ return function (){
  74337. var self=this,$self=this;
  74338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74339. return $core.withContext(function($ctx1) {
  74340. //>>excludeEnd("ctx");
  74341. $self._subclassResponsibility();
  74342. return self;
  74343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74344. }, function($ctx1) {$ctx1.fill(self,"collectionFirst",{})});
  74345. //>>excludeEnd("ctx");
  74346. }; }),
  74347. $globals.SequenceableCollectionTest);
  74348. $core.addMethod(
  74349. $core.method({
  74350. selector: "collectionFirstTwo",
  74351. protocol: "fixture",
  74352. //>>excludeStart("ide", pragmas.excludeIdeData);
  74353. args: [],
  74354. source: "collectionFirstTwo\x0a\x09self subclassResponsibility",
  74355. referencedClasses: [],
  74356. //>>excludeEnd("ide");
  74357. pragmas: [],
  74358. messageSends: ["subclassResponsibility"]
  74359. }, function ($methodClass){ return function (){
  74360. var self=this,$self=this;
  74361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74362. return $core.withContext(function($ctx1) {
  74363. //>>excludeEnd("ctx");
  74364. $self._subclassResponsibility();
  74365. return self;
  74366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74367. }, function($ctx1) {$ctx1.fill(self,"collectionFirstTwo",{})});
  74368. //>>excludeEnd("ctx");
  74369. }; }),
  74370. $globals.SequenceableCollectionTest);
  74371. $core.addMethod(
  74372. $core.method({
  74373. selector: "collectionLast",
  74374. protocol: "fixture",
  74375. //>>excludeStart("ide", pragmas.excludeIdeData);
  74376. args: [],
  74377. source: "collectionLast\x0a\x09self subclassResponsibility",
  74378. referencedClasses: [],
  74379. //>>excludeEnd("ide");
  74380. pragmas: [],
  74381. messageSends: ["subclassResponsibility"]
  74382. }, function ($methodClass){ return function (){
  74383. var self=this,$self=this;
  74384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74385. return $core.withContext(function($ctx1) {
  74386. //>>excludeEnd("ctx");
  74387. $self._subclassResponsibility();
  74388. return self;
  74389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74390. }, function($ctx1) {$ctx1.fill(self,"collectionLast",{})});
  74391. //>>excludeEnd("ctx");
  74392. }; }),
  74393. $globals.SequenceableCollectionTest);
  74394. $core.addMethod(
  74395. $core.method({
  74396. selector: "collectionLastTwo",
  74397. protocol: "fixture",
  74398. //>>excludeStart("ide", pragmas.excludeIdeData);
  74399. args: [],
  74400. source: "collectionLastTwo\x0a\x09self subclassResponsibility",
  74401. referencedClasses: [],
  74402. //>>excludeEnd("ide");
  74403. pragmas: [],
  74404. messageSends: ["subclassResponsibility"]
  74405. }, function ($methodClass){ return function (){
  74406. var self=this,$self=this;
  74407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74408. return $core.withContext(function($ctx1) {
  74409. //>>excludeEnd("ctx");
  74410. $self._subclassResponsibility();
  74411. return self;
  74412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74413. }, function($ctx1) {$ctx1.fill(self,"collectionLastTwo",{})});
  74414. //>>excludeEnd("ctx");
  74415. }; }),
  74416. $globals.SequenceableCollectionTest);
  74417. $core.addMethod(
  74418. $core.method({
  74419. selector: "nonIndexesDo:",
  74420. protocol: "fixture",
  74421. //>>excludeStart("ide", pragmas.excludeIdeData);
  74422. args: ["aBlock"],
  74423. source: "nonIndexesDo: aBlock\x0a\x09aBlock value: 0.\x0a\x09aBlock value: self collectionSize + 1.\x0a\x09aBlock value: 'z'",
  74424. referencedClasses: [],
  74425. //>>excludeEnd("ide");
  74426. pragmas: [],
  74427. messageSends: ["value:", "+", "collectionSize"]
  74428. }, function ($methodClass){ return function (aBlock){
  74429. var self=this,$self=this;
  74430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74431. return $core.withContext(function($ctx1) {
  74432. //>>excludeEnd("ctx");
  74433. [$recv(aBlock)._value_((0))
  74434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74435. ,$ctx1.sendIdx["value:"]=1
  74436. //>>excludeEnd("ctx");
  74437. ][0];
  74438. [$recv(aBlock)._value_($recv($self._collectionSize()).__plus((1)))
  74439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74440. ,$ctx1.sendIdx["value:"]=2
  74441. //>>excludeEnd("ctx");
  74442. ][0];
  74443. $recv(aBlock)._value_("z");
  74444. return self;
  74445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74446. }, function($ctx1) {$ctx1.fill(self,"nonIndexesDo:",{aBlock:aBlock})});
  74447. //>>excludeEnd("ctx");
  74448. }; }),
  74449. $globals.SequenceableCollectionTest);
  74450. $core.addMethod(
  74451. $core.method({
  74452. selector: "samplesDo:",
  74453. protocol: "fixture",
  74454. //>>excludeStart("ide", pragmas.excludeIdeData);
  74455. args: ["aBlock"],
  74456. source: "samplesDo: aBlock\x0a\x09aBlock value: 1 value: self collectionFirst.\x0a\x09aBlock value: self collectionSize value: self collectionLast",
  74457. referencedClasses: [],
  74458. //>>excludeEnd("ide");
  74459. pragmas: [],
  74460. messageSends: ["value:value:", "collectionFirst", "collectionSize", "collectionLast"]
  74461. }, function ($methodClass){ return function (aBlock){
  74462. var self=this,$self=this;
  74463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74464. return $core.withContext(function($ctx1) {
  74465. //>>excludeEnd("ctx");
  74466. [$recv(aBlock)._value_value_((1),$self._collectionFirst())
  74467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74468. ,$ctx1.sendIdx["value:value:"]=1
  74469. //>>excludeEnd("ctx");
  74470. ][0];
  74471. $recv(aBlock)._value_value_($self._collectionSize(),$self._collectionLast());
  74472. return self;
  74473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74474. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
  74475. //>>excludeEnd("ctx");
  74476. }; }),
  74477. $globals.SequenceableCollectionTest);
  74478. $core.addMethod(
  74479. $core.method({
  74480. selector: "testBeginsWith",
  74481. protocol: "tests",
  74482. //>>excludeStart("ide", pragmas.excludeIdeData);
  74483. args: [],
  74484. source: "testBeginsWith\x0a\x09self assert: (self collection beginsWith: self collectionClass new).\x0a\x09self assert: (self collection beginsWith: self collection).\x0a\x09self assert: (self collection beginsWith: self collectionFirstTwo).\x0a\x09self deny: (self collection beginsWith: self collectionLastTwo)",
  74485. referencedClasses: [],
  74486. //>>excludeEnd("ide");
  74487. pragmas: [],
  74488. messageSends: ["assert:", "beginsWith:", "collection", "new", "collectionClass", "collectionFirstTwo", "deny:", "collectionLastTwo"]
  74489. }, function ($methodClass){ return function (){
  74490. var self=this,$self=this;
  74491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74492. return $core.withContext(function($ctx1) {
  74493. //>>excludeEnd("ctx");
  74494. [$self._assert_([$recv([$self._collection()
  74495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74496. ,$ctx1.sendIdx["collection"]=1
  74497. //>>excludeEnd("ctx");
  74498. ][0])._beginsWith_($recv($self._collectionClass())._new())
  74499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74500. ,$ctx1.sendIdx["beginsWith:"]=1
  74501. //>>excludeEnd("ctx");
  74502. ][0])
  74503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74504. ,$ctx1.sendIdx["assert:"]=1
  74505. //>>excludeEnd("ctx");
  74506. ][0];
  74507. [$self._assert_([$recv([$self._collection()
  74508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74509. ,$ctx1.sendIdx["collection"]=2
  74510. //>>excludeEnd("ctx");
  74511. ][0])._beginsWith_([$self._collection()
  74512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74513. ,$ctx1.sendIdx["collection"]=3
  74514. //>>excludeEnd("ctx");
  74515. ][0])
  74516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74517. ,$ctx1.sendIdx["beginsWith:"]=2
  74518. //>>excludeEnd("ctx");
  74519. ][0])
  74520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74521. ,$ctx1.sendIdx["assert:"]=2
  74522. //>>excludeEnd("ctx");
  74523. ][0];
  74524. $self._assert_([$recv([$self._collection()
  74525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74526. ,$ctx1.sendIdx["collection"]=4
  74527. //>>excludeEnd("ctx");
  74528. ][0])._beginsWith_($self._collectionFirstTwo())
  74529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74530. ,$ctx1.sendIdx["beginsWith:"]=3
  74531. //>>excludeEnd("ctx");
  74532. ][0]);
  74533. $self._deny_($recv($self._collection())._beginsWith_($self._collectionLastTwo()));
  74534. return self;
  74535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74536. }, function($ctx1) {$ctx1.fill(self,"testBeginsWith",{})});
  74537. //>>excludeEnd("ctx");
  74538. }; }),
  74539. $globals.SequenceableCollectionTest);
  74540. $core.addMethod(
  74541. $core.method({
  74542. selector: "testEndsWith",
  74543. protocol: "tests",
  74544. //>>excludeStart("ide", pragmas.excludeIdeData);
  74545. args: [],
  74546. source: "testEndsWith\x0a\x09self assert: (self collection endsWith: self collectionClass new).\x0a\x09self assert: (self collection endsWith: self collection).\x0a\x09self assert: (self collection endsWith: self collectionLastTwo).\x0a\x09self deny: (self collection endsWith: self collectionFirstTwo)",
  74547. referencedClasses: [],
  74548. //>>excludeEnd("ide");
  74549. pragmas: [],
  74550. messageSends: ["assert:", "endsWith:", "collection", "new", "collectionClass", "collectionLastTwo", "deny:", "collectionFirstTwo"]
  74551. }, function ($methodClass){ return function (){
  74552. var self=this,$self=this;
  74553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74554. return $core.withContext(function($ctx1) {
  74555. //>>excludeEnd("ctx");
  74556. [$self._assert_([$recv([$self._collection()
  74557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74558. ,$ctx1.sendIdx["collection"]=1
  74559. //>>excludeEnd("ctx");
  74560. ][0])._endsWith_($recv($self._collectionClass())._new())
  74561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74562. ,$ctx1.sendIdx["endsWith:"]=1
  74563. //>>excludeEnd("ctx");
  74564. ][0])
  74565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74566. ,$ctx1.sendIdx["assert:"]=1
  74567. //>>excludeEnd("ctx");
  74568. ][0];
  74569. [$self._assert_([$recv([$self._collection()
  74570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74571. ,$ctx1.sendIdx["collection"]=2
  74572. //>>excludeEnd("ctx");
  74573. ][0])._endsWith_([$self._collection()
  74574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74575. ,$ctx1.sendIdx["collection"]=3
  74576. //>>excludeEnd("ctx");
  74577. ][0])
  74578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74579. ,$ctx1.sendIdx["endsWith:"]=2
  74580. //>>excludeEnd("ctx");
  74581. ][0])
  74582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74583. ,$ctx1.sendIdx["assert:"]=2
  74584. //>>excludeEnd("ctx");
  74585. ][0];
  74586. $self._assert_([$recv([$self._collection()
  74587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74588. ,$ctx1.sendIdx["collection"]=4
  74589. //>>excludeEnd("ctx");
  74590. ][0])._endsWith_($self._collectionLastTwo())
  74591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74592. ,$ctx1.sendIdx["endsWith:"]=3
  74593. //>>excludeEnd("ctx");
  74594. ][0]);
  74595. $self._deny_($recv($self._collection())._endsWith_($self._collectionFirstTwo()));
  74596. return self;
  74597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74598. }, function($ctx1) {$ctx1.fill(self,"testEndsWith",{})});
  74599. //>>excludeEnd("ctx");
  74600. }; }),
  74601. $globals.SequenceableCollectionTest);
  74602. $core.addMethod(
  74603. $core.method({
  74604. selector: "testFirst",
  74605. protocol: "tests",
  74606. //>>excludeStart("ide", pragmas.excludeIdeData);
  74607. args: [],
  74608. source: "testFirst\x0a\x09self assert: self collection first equals: self collectionFirst",
  74609. referencedClasses: [],
  74610. //>>excludeEnd("ide");
  74611. pragmas: [],
  74612. messageSends: ["assert:equals:", "first", "collection", "collectionFirst"]
  74613. }, function ($methodClass){ return function (){
  74614. var self=this,$self=this;
  74615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74616. return $core.withContext(function($ctx1) {
  74617. //>>excludeEnd("ctx");
  74618. $self._assert_equals_($recv($self._collection())._first(),$self._collectionFirst());
  74619. return self;
  74620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74621. }, function($ctx1) {$ctx1.fill(self,"testFirst",{})});
  74622. //>>excludeEnd("ctx");
  74623. }; }),
  74624. $globals.SequenceableCollectionTest);
  74625. $core.addMethod(
  74626. $core.method({
  74627. selector: "testFirstN",
  74628. protocol: "tests",
  74629. //>>excludeStart("ide", pragmas.excludeIdeData);
  74630. args: [],
  74631. source: "testFirstN\x0a\x09self \x0a\x09\x09assert: (self collection first: 2)\x0a\x09\x09equals: self collectionFirstTwo.\x0a\x09\x09\x0a\x09self\x0a\x09\x09assert: (self collection first: 0)\x0a\x09\x09equals: self collectionClass new.\x0a\x09\x09\x0a\x09self\x0a\x09\x09assert: (self collection first: self collectionSize)\x0a\x09\x09equals: self collection.\x0a\x09\x09\x0a\x09self should: [ self collection first: 33 ] raise: Error",
  74632. referencedClasses: ["Error"],
  74633. //>>excludeEnd("ide");
  74634. pragmas: [],
  74635. messageSends: ["assert:equals:", "first:", "collection", "collectionFirstTwo", "new", "collectionClass", "collectionSize", "should:raise:"]
  74636. }, function ($methodClass){ return function (){
  74637. var self=this,$self=this;
  74638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74639. return $core.withContext(function($ctx1) {
  74640. //>>excludeEnd("ctx");
  74641. [$self._assert_equals_([$recv([$self._collection()
  74642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74643. ,$ctx1.sendIdx["collection"]=1
  74644. //>>excludeEnd("ctx");
  74645. ][0])._first_((2))
  74646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74647. ,$ctx1.sendIdx["first:"]=1
  74648. //>>excludeEnd("ctx");
  74649. ][0],$self._collectionFirstTwo())
  74650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74651. ,$ctx1.sendIdx["assert:equals:"]=1
  74652. //>>excludeEnd("ctx");
  74653. ][0];
  74654. [$self._assert_equals_([$recv([$self._collection()
  74655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74656. ,$ctx1.sendIdx["collection"]=2
  74657. //>>excludeEnd("ctx");
  74658. ][0])._first_((0))
  74659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74660. ,$ctx1.sendIdx["first:"]=2
  74661. //>>excludeEnd("ctx");
  74662. ][0],$recv($self._collectionClass())._new())
  74663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74664. ,$ctx1.sendIdx["assert:equals:"]=2
  74665. //>>excludeEnd("ctx");
  74666. ][0];
  74667. $self._assert_equals_([$recv([$self._collection()
  74668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74669. ,$ctx1.sendIdx["collection"]=3
  74670. //>>excludeEnd("ctx");
  74671. ][0])._first_($self._collectionSize())
  74672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74673. ,$ctx1.sendIdx["first:"]=3
  74674. //>>excludeEnd("ctx");
  74675. ][0],[$self._collection()
  74676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74677. ,$ctx1.sendIdx["collection"]=4
  74678. //>>excludeEnd("ctx");
  74679. ][0]);
  74680. $self._should_raise_((function(){
  74681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74682. return $core.withContext(function($ctx2) {
  74683. //>>excludeEnd("ctx");
  74684. return $recv($self._collection())._first_((33));
  74685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74686. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  74687. //>>excludeEnd("ctx");
  74688. }),$globals.Error);
  74689. return self;
  74690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74691. }, function($ctx1) {$ctx1.fill(self,"testFirstN",{})});
  74692. //>>excludeEnd("ctx");
  74693. }; }),
  74694. $globals.SequenceableCollectionTest);
  74695. $core.addMethod(
  74696. $core.method({
  74697. selector: "testFourth",
  74698. protocol: "tests",
  74699. //>>excludeStart("ide", pragmas.excludeIdeData);
  74700. args: [],
  74701. source: "testFourth\x0a\x09self assert: (self collection fourth) equals: (self collection at: 4)",
  74702. referencedClasses: [],
  74703. //>>excludeEnd("ide");
  74704. pragmas: [],
  74705. messageSends: ["assert:equals:", "fourth", "collection", "at:"]
  74706. }, function ($methodClass){ return function (){
  74707. var self=this,$self=this;
  74708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74709. return $core.withContext(function($ctx1) {
  74710. //>>excludeEnd("ctx");
  74711. $self._assert_equals_($recv([$self._collection()
  74712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74713. ,$ctx1.sendIdx["collection"]=1
  74714. //>>excludeEnd("ctx");
  74715. ][0])._fourth(),$recv($self._collection())._at_((4)));
  74716. return self;
  74717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74718. }, function($ctx1) {$ctx1.fill(self,"testFourth",{})});
  74719. //>>excludeEnd("ctx");
  74720. }; }),
  74721. $globals.SequenceableCollectionTest);
  74722. $core.addMethod(
  74723. $core.method({
  74724. selector: "testIndexOfStartingAt",
  74725. protocol: "tests",
  74726. //>>excludeStart("ide", pragmas.excludeIdeData);
  74727. args: [],
  74728. source: "testIndexOfStartingAt\x0a\x09| jsNull |\x0a\x09jsNull := JSON parse: 'null'.\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection indexOf: value startingAt: 1) equals: index.\x0a\x09\x09self assert: (self collection indexOf: value startingAt: index) equals: index.\x0a\x09\x09self assert: (self collection indexOf: value startingAt: index+1) equals: 0 ]",
  74729. referencedClasses: ["JSON"],
  74730. //>>excludeEnd("ide");
  74731. pragmas: [],
  74732. messageSends: ["parse:", "samplesDo:", "assert:equals:", "indexOf:startingAt:", "collection", "+"]
  74733. }, function ($methodClass){ return function (){
  74734. var self=this,$self=this;
  74735. var jsNull;
  74736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74737. return $core.withContext(function($ctx1) {
  74738. //>>excludeEnd("ctx");
  74739. jsNull=$recv($globals.JSON)._parse_("null");
  74740. $self._samplesDo_((function(index,value){
  74741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74742. return $core.withContext(function($ctx2) {
  74743. //>>excludeEnd("ctx");
  74744. [$self._assert_equals_([$recv([$self._collection()
  74745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74746. ,$ctx2.sendIdx["collection"]=1
  74747. //>>excludeEnd("ctx");
  74748. ][0])._indexOf_startingAt_(value,(1))
  74749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74750. ,$ctx2.sendIdx["indexOf:startingAt:"]=1
  74751. //>>excludeEnd("ctx");
  74752. ][0],index)
  74753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74754. ,$ctx2.sendIdx["assert:equals:"]=1
  74755. //>>excludeEnd("ctx");
  74756. ][0];
  74757. [$self._assert_equals_([$recv([$self._collection()
  74758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74759. ,$ctx2.sendIdx["collection"]=2
  74760. //>>excludeEnd("ctx");
  74761. ][0])._indexOf_startingAt_(value,index)
  74762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74763. ,$ctx2.sendIdx["indexOf:startingAt:"]=2
  74764. //>>excludeEnd("ctx");
  74765. ][0],index)
  74766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74767. ,$ctx2.sendIdx["assert:equals:"]=2
  74768. //>>excludeEnd("ctx");
  74769. ][0];
  74770. return $self._assert_equals_($recv($self._collection())._indexOf_startingAt_(value,$recv(index).__plus((1))),(0));
  74771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74772. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
  74773. //>>excludeEnd("ctx");
  74774. }));
  74775. return self;
  74776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74777. }, function($ctx1) {$ctx1.fill(self,"testIndexOfStartingAt",{jsNull:jsNull})});
  74778. //>>excludeEnd("ctx");
  74779. }; }),
  74780. $globals.SequenceableCollectionTest);
  74781. $core.addMethod(
  74782. $core.method({
  74783. selector: "testIndexOfStartingAtWithNull",
  74784. protocol: "tests",
  74785. //>>excludeStart("ide", pragmas.excludeIdeData);
  74786. args: [],
  74787. source: "testIndexOfStartingAtWithNull\x0a\x09| jsNull |\x0a\x09jsNull := JSON parse: 'null'.\x0a\x09self samplesDo: [ :index :value | | collection |\x0a\x09\x09collection := self collection.\x0a\x09\x09collection at: index put: jsNull.\x0a\x09\x09self assert: (collection indexOf: jsNull startingAt: 1) equals: index.\x0a\x09\x09self assert: (collection indexOf: jsNull startingAt: index) equals: index.\x0a\x09\x09self assert: (collection indexOf: jsNull startingAt: index+1) equals: 0 ]",
  74788. referencedClasses: ["JSON"],
  74789. //>>excludeEnd("ide");
  74790. pragmas: [],
  74791. messageSends: ["parse:", "samplesDo:", "collection", "at:put:", "assert:equals:", "indexOf:startingAt:", "+"]
  74792. }, function ($methodClass){ return function (){
  74793. var self=this,$self=this;
  74794. var jsNull;
  74795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74796. return $core.withContext(function($ctx1) {
  74797. //>>excludeEnd("ctx");
  74798. jsNull=$recv($globals.JSON)._parse_("null");
  74799. $self._samplesDo_((function(index,value){
  74800. var collection;
  74801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74802. return $core.withContext(function($ctx2) {
  74803. //>>excludeEnd("ctx");
  74804. collection=$self._collection();
  74805. $recv(collection)._at_put_(index,jsNull);
  74806. [$self._assert_equals_([$recv(collection)._indexOf_startingAt_(jsNull,(1))
  74807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74808. ,$ctx2.sendIdx["indexOf:startingAt:"]=1
  74809. //>>excludeEnd("ctx");
  74810. ][0],index)
  74811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74812. ,$ctx2.sendIdx["assert:equals:"]=1
  74813. //>>excludeEnd("ctx");
  74814. ][0];
  74815. [$self._assert_equals_([$recv(collection)._indexOf_startingAt_(jsNull,index)
  74816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74817. ,$ctx2.sendIdx["indexOf:startingAt:"]=2
  74818. //>>excludeEnd("ctx");
  74819. ][0],index)
  74820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74821. ,$ctx2.sendIdx["assert:equals:"]=2
  74822. //>>excludeEnd("ctx");
  74823. ][0];
  74824. return $self._assert_equals_($recv(collection)._indexOf_startingAt_(jsNull,$recv(index).__plus((1))),(0));
  74825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74826. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,1)});
  74827. //>>excludeEnd("ctx");
  74828. }));
  74829. return self;
  74830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74831. }, function($ctx1) {$ctx1.fill(self,"testIndexOfStartingAtWithNull",{jsNull:jsNull})});
  74832. //>>excludeEnd("ctx");
  74833. }; }),
  74834. $globals.SequenceableCollectionTest);
  74835. $core.addMethod(
  74836. $core.method({
  74837. selector: "testLast",
  74838. protocol: "tests",
  74839. //>>excludeStart("ide", pragmas.excludeIdeData);
  74840. args: [],
  74841. source: "testLast\x0a\x09self assert: self collection last equals: self collectionLast",
  74842. referencedClasses: [],
  74843. //>>excludeEnd("ide");
  74844. pragmas: [],
  74845. messageSends: ["assert:equals:", "last", "collection", "collectionLast"]
  74846. }, function ($methodClass){ return function (){
  74847. var self=this,$self=this;
  74848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74849. return $core.withContext(function($ctx1) {
  74850. //>>excludeEnd("ctx");
  74851. $self._assert_equals_($recv($self._collection())._last(),$self._collectionLast());
  74852. return self;
  74853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74854. }, function($ctx1) {$ctx1.fill(self,"testLast",{})});
  74855. //>>excludeEnd("ctx");
  74856. }; }),
  74857. $globals.SequenceableCollectionTest);
  74858. $core.addMethod(
  74859. $core.method({
  74860. selector: "testLastN",
  74861. protocol: "tests",
  74862. //>>excludeStart("ide", pragmas.excludeIdeData);
  74863. args: [],
  74864. source: "testLastN\x0a\x09self \x0a\x09\x09assert: (self collection last: 2) \x0a\x09\x09equals: self collectionLastTwo.\x0a\x09\x09\x0a\x09self\x0a\x09\x09assert: (self collection last: 0)\x0a\x09\x09equals: self collectionClass new.\x0a\x0a\x09self\x0a\x09\x09assert: (self collection last: self collectionSize)\x0a\x09\x09equals: self collection.\x0a\x0a\x09self should: [ self collection last: 33 ] raise: Error",
  74865. referencedClasses: ["Error"],
  74866. //>>excludeEnd("ide");
  74867. pragmas: [],
  74868. messageSends: ["assert:equals:", "last:", "collection", "collectionLastTwo", "new", "collectionClass", "collectionSize", "should:raise:"]
  74869. }, function ($methodClass){ return function (){
  74870. var self=this,$self=this;
  74871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74872. return $core.withContext(function($ctx1) {
  74873. //>>excludeEnd("ctx");
  74874. [$self._assert_equals_([$recv([$self._collection()
  74875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74876. ,$ctx1.sendIdx["collection"]=1
  74877. //>>excludeEnd("ctx");
  74878. ][0])._last_((2))
  74879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74880. ,$ctx1.sendIdx["last:"]=1
  74881. //>>excludeEnd("ctx");
  74882. ][0],$self._collectionLastTwo())
  74883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74884. ,$ctx1.sendIdx["assert:equals:"]=1
  74885. //>>excludeEnd("ctx");
  74886. ][0];
  74887. [$self._assert_equals_([$recv([$self._collection()
  74888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74889. ,$ctx1.sendIdx["collection"]=2
  74890. //>>excludeEnd("ctx");
  74891. ][0])._last_((0))
  74892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74893. ,$ctx1.sendIdx["last:"]=2
  74894. //>>excludeEnd("ctx");
  74895. ][0],$recv($self._collectionClass())._new())
  74896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74897. ,$ctx1.sendIdx["assert:equals:"]=2
  74898. //>>excludeEnd("ctx");
  74899. ][0];
  74900. $self._assert_equals_([$recv([$self._collection()
  74901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74902. ,$ctx1.sendIdx["collection"]=3
  74903. //>>excludeEnd("ctx");
  74904. ][0])._last_($self._collectionSize())
  74905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74906. ,$ctx1.sendIdx["last:"]=3
  74907. //>>excludeEnd("ctx");
  74908. ][0],[$self._collection()
  74909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74910. ,$ctx1.sendIdx["collection"]=4
  74911. //>>excludeEnd("ctx");
  74912. ][0]);
  74913. $self._should_raise_((function(){
  74914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74915. return $core.withContext(function($ctx2) {
  74916. //>>excludeEnd("ctx");
  74917. return $recv($self._collection())._last_((33));
  74918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74919. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  74920. //>>excludeEnd("ctx");
  74921. }),$globals.Error);
  74922. return self;
  74923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74924. }, function($ctx1) {$ctx1.fill(self,"testLastN",{})});
  74925. //>>excludeEnd("ctx");
  74926. }; }),
  74927. $globals.SequenceableCollectionTest);
  74928. $core.addMethod(
  74929. $core.method({
  74930. selector: "testOrderedComma",
  74931. protocol: "tests",
  74932. //>>excludeStart("ide", pragmas.excludeIdeData);
  74933. args: [],
  74934. source: "testOrderedComma\x0a\x09self assertSameContents: self sampleNewValueAsCollection, self collection as: self collectionWithNewValue",
  74935. referencedClasses: [],
  74936. //>>excludeEnd("ide");
  74937. pragmas: [],
  74938. messageSends: ["assertSameContents:as:", ",", "sampleNewValueAsCollection", "collection", "collectionWithNewValue"]
  74939. }, function ($methodClass){ return function (){
  74940. var self=this,$self=this;
  74941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74942. return $core.withContext(function($ctx1) {
  74943. //>>excludeEnd("ctx");
  74944. $self._assertSameContents_as_($recv($self._sampleNewValueAsCollection()).__comma($self._collection()),$self._collectionWithNewValue());
  74945. return self;
  74946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74947. }, function($ctx1) {$ctx1.fill(self,"testOrderedComma",{})});
  74948. //>>excludeEnd("ctx");
  74949. }; }),
  74950. $globals.SequenceableCollectionTest);
  74951. $core.addMethod(
  74952. $core.method({
  74953. selector: "testSecond",
  74954. protocol: "tests",
  74955. //>>excludeStart("ide", pragmas.excludeIdeData);
  74956. args: [],
  74957. source: "testSecond\x0a\x09self assert: (self collection second) equals: (self collection at: 2)",
  74958. referencedClasses: [],
  74959. //>>excludeEnd("ide");
  74960. pragmas: [],
  74961. messageSends: ["assert:equals:", "second", "collection", "at:"]
  74962. }, function ($methodClass){ return function (){
  74963. var self=this,$self=this;
  74964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74965. return $core.withContext(function($ctx1) {
  74966. //>>excludeEnd("ctx");
  74967. $self._assert_equals_($recv([$self._collection()
  74968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74969. ,$ctx1.sendIdx["collection"]=1
  74970. //>>excludeEnd("ctx");
  74971. ][0])._second(),$recv($self._collection())._at_((2)));
  74972. return self;
  74973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74974. }, function($ctx1) {$ctx1.fill(self,"testSecond",{})});
  74975. //>>excludeEnd("ctx");
  74976. }; }),
  74977. $globals.SequenceableCollectionTest);
  74978. $core.addMethod(
  74979. $core.method({
  74980. selector: "testThird",
  74981. protocol: "tests",
  74982. //>>excludeStart("ide", pragmas.excludeIdeData);
  74983. args: [],
  74984. source: "testThird\x0a\x09self assert: (self collection third) equals: (self collection at: 3)",
  74985. referencedClasses: [],
  74986. //>>excludeEnd("ide");
  74987. pragmas: [],
  74988. messageSends: ["assert:equals:", "third", "collection", "at:"]
  74989. }, function ($methodClass){ return function (){
  74990. var self=this,$self=this;
  74991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74992. return $core.withContext(function($ctx1) {
  74993. //>>excludeEnd("ctx");
  74994. $self._assert_equals_($recv([$self._collection()
  74995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74996. ,$ctx1.sendIdx["collection"]=1
  74997. //>>excludeEnd("ctx");
  74998. ][0])._third(),$recv($self._collection())._at_((3)));
  74999. return self;
  75000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75001. }, function($ctx1) {$ctx1.fill(self,"testThird",{})});
  75002. //>>excludeEnd("ctx");
  75003. }; }),
  75004. $globals.SequenceableCollectionTest);
  75005. $core.addClass("ArrayTest", $globals.SequenceableCollectionTest, "Kernel-Tests");
  75006. $core.addMethod(
  75007. $core.method({
  75008. selector: "collection",
  75009. protocol: "fixture",
  75010. //>>excludeStart("ide", pragmas.excludeIdeData);
  75011. args: [],
  75012. source: "collection\x0a\x09^ #(1 2 3 -4)",
  75013. referencedClasses: [],
  75014. //>>excludeEnd("ide");
  75015. pragmas: [],
  75016. messageSends: []
  75017. }, function ($methodClass){ return function (){
  75018. var self=this,$self=this;
  75019. return [(1), (2), (3), (-4)];
  75020. }; }),
  75021. $globals.ArrayTest);
  75022. $core.addMethod(
  75023. $core.method({
  75024. selector: "collectionFirst",
  75025. protocol: "fixture",
  75026. //>>excludeStart("ide", pragmas.excludeIdeData);
  75027. args: [],
  75028. source: "collectionFirst\x0a\x09^ 1",
  75029. referencedClasses: [],
  75030. //>>excludeEnd("ide");
  75031. pragmas: [],
  75032. messageSends: []
  75033. }, function ($methodClass){ return function (){
  75034. var self=this,$self=this;
  75035. return (1);
  75036. }; }),
  75037. $globals.ArrayTest);
  75038. $core.addMethod(
  75039. $core.method({
  75040. selector: "collectionFirstTwo",
  75041. protocol: "fixture",
  75042. //>>excludeStart("ide", pragmas.excludeIdeData);
  75043. args: [],
  75044. source: "collectionFirstTwo\x0a\x09^ #(1 2)",
  75045. referencedClasses: [],
  75046. //>>excludeEnd("ide");
  75047. pragmas: [],
  75048. messageSends: []
  75049. }, function ($methodClass){ return function (){
  75050. var self=this,$self=this;
  75051. return [(1), (2)];
  75052. }; }),
  75053. $globals.ArrayTest);
  75054. $core.addMethod(
  75055. $core.method({
  75056. selector: "collectionLast",
  75057. protocol: "fixture",
  75058. //>>excludeStart("ide", pragmas.excludeIdeData);
  75059. args: [],
  75060. source: "collectionLast\x0a\x09^ -4",
  75061. referencedClasses: [],
  75062. //>>excludeEnd("ide");
  75063. pragmas: [],
  75064. messageSends: []
  75065. }, function ($methodClass){ return function (){
  75066. var self=this,$self=this;
  75067. return (-4);
  75068. }; }),
  75069. $globals.ArrayTest);
  75070. $core.addMethod(
  75071. $core.method({
  75072. selector: "collectionLastTwo",
  75073. protocol: "fixture",
  75074. //>>excludeStart("ide", pragmas.excludeIdeData);
  75075. args: [],
  75076. source: "collectionLastTwo\x0a\x09^ #(3 -4)",
  75077. referencedClasses: [],
  75078. //>>excludeEnd("ide");
  75079. pragmas: [],
  75080. messageSends: []
  75081. }, function ($methodClass){ return function (){
  75082. var self=this,$self=this;
  75083. return [(3), (-4)];
  75084. }; }),
  75085. $globals.ArrayTest);
  75086. $core.addMethod(
  75087. $core.method({
  75088. selector: "collectionOfPrintStrings",
  75089. protocol: "fixture",
  75090. //>>excludeStart("ide", pragmas.excludeIdeData);
  75091. args: [],
  75092. source: "collectionOfPrintStrings\x0a\x09^ #('1' '2' '3' '-4')",
  75093. referencedClasses: [],
  75094. //>>excludeEnd("ide");
  75095. pragmas: [],
  75096. messageSends: []
  75097. }, function ($methodClass){ return function (){
  75098. var self=this,$self=this;
  75099. return ["1", "2", "3", "-4"];
  75100. }; }),
  75101. $globals.ArrayTest);
  75102. $core.addMethod(
  75103. $core.method({
  75104. selector: "collectionSize",
  75105. protocol: "fixture",
  75106. //>>excludeStart("ide", pragmas.excludeIdeData);
  75107. args: [],
  75108. source: "collectionSize\x0a\x09^ 4",
  75109. referencedClasses: [],
  75110. //>>excludeEnd("ide");
  75111. pragmas: [],
  75112. messageSends: []
  75113. }, function ($methodClass){ return function (){
  75114. var self=this,$self=this;
  75115. return (4);
  75116. }; }),
  75117. $globals.ArrayTest);
  75118. $core.addMethod(
  75119. $core.method({
  75120. selector: "collectionWithDuplicates",
  75121. protocol: "fixture",
  75122. //>>excludeStart("ide", pragmas.excludeIdeData);
  75123. args: [],
  75124. source: "collectionWithDuplicates\x0a\x09^ #('a' 'b' 'c' 1 2 1 'a' ())",
  75125. referencedClasses: [],
  75126. //>>excludeEnd("ide");
  75127. pragmas: [],
  75128. messageSends: []
  75129. }, function ($methodClass){ return function (){
  75130. var self=this,$self=this;
  75131. return ["a", "b", "c", (1), (2), (1), "a", []];
  75132. }; }),
  75133. $globals.ArrayTest);
  75134. $core.addMethod(
  75135. $core.method({
  75136. selector: "collectionWithNewValue",
  75137. protocol: "fixture",
  75138. //>>excludeStart("ide", pragmas.excludeIdeData);
  75139. args: [],
  75140. source: "collectionWithNewValue\x0a\x09^ #(1 2 3 -4 'N')",
  75141. referencedClasses: [],
  75142. //>>excludeEnd("ide");
  75143. pragmas: [],
  75144. messageSends: []
  75145. }, function ($methodClass){ return function (){
  75146. var self=this,$self=this;
  75147. return [(1), (2), (3), (-4), "N"];
  75148. }; }),
  75149. $globals.ArrayTest);
  75150. $core.addMethod(
  75151. $core.method({
  75152. selector: "sampleNewIndex",
  75153. protocol: "fixture",
  75154. //>>excludeStart("ide", pragmas.excludeIdeData);
  75155. args: [],
  75156. source: "sampleNewIndex\x0a\x09^ 5",
  75157. referencedClasses: [],
  75158. //>>excludeEnd("ide");
  75159. pragmas: [],
  75160. messageSends: []
  75161. }, function ($methodClass){ return function (){
  75162. var self=this,$self=this;
  75163. return (5);
  75164. }; }),
  75165. $globals.ArrayTest);
  75166. $core.addMethod(
  75167. $core.method({
  75168. selector: "samplesDo:",
  75169. protocol: "fixture",
  75170. //>>excludeStart("ide", pragmas.excludeIdeData);
  75171. args: ["aBlock"],
  75172. source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: 3 value: 3.",
  75173. referencedClasses: [],
  75174. //>>excludeEnd("ide");
  75175. pragmas: [],
  75176. messageSends: ["samplesDo:", "value:value:"]
  75177. }, function ($methodClass){ return function (aBlock){
  75178. var self=this,$self=this;
  75179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75180. return $core.withContext(function($ctx1) {
  75181. //>>excludeEnd("ctx");
  75182. [(
  75183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75184. $ctx1.supercall = true,
  75185. //>>excludeEnd("ctx");
  75186. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._samplesDo_.call($self,aBlock))
  75187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75188. ,$ctx1.supercall = false
  75189. //>>excludeEnd("ctx");
  75190. ][0];
  75191. $recv(aBlock)._value_value_((3),(3));
  75192. return self;
  75193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75194. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
  75195. //>>excludeEnd("ctx");
  75196. }; }),
  75197. $globals.ArrayTest);
  75198. $core.addMethod(
  75199. $core.method({
  75200. selector: "testAdd",
  75201. protocol: "tests",
  75202. //>>excludeStart("ide", pragmas.excludeIdeData);
  75203. args: [],
  75204. source: "testAdd \x0a\x09| array | \x0a\x09array := self collection. \x0a\x09array add: 6.\x0a\x09\x0a\x09self assert: array last equals: 6",
  75205. referencedClasses: [],
  75206. //>>excludeEnd("ide");
  75207. pragmas: [],
  75208. messageSends: ["collection", "add:", "assert:equals:", "last"]
  75209. }, function ($methodClass){ return function (){
  75210. var self=this,$self=this;
  75211. var array;
  75212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75213. return $core.withContext(function($ctx1) {
  75214. //>>excludeEnd("ctx");
  75215. array=$self._collection();
  75216. $recv(array)._add_((6));
  75217. $self._assert_equals_($recv(array)._last(),(6));
  75218. return self;
  75219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75220. }, function($ctx1) {$ctx1.fill(self,"testAdd",{array:array})});
  75221. //>>excludeEnd("ctx");
  75222. }; }),
  75223. $globals.ArrayTest);
  75224. $core.addMethod(
  75225. $core.method({
  75226. selector: "testAddFirst",
  75227. protocol: "tests",
  75228. //>>excludeStart("ide", pragmas.excludeIdeData);
  75229. args: [],
  75230. source: "testAddFirst\x0a\x09self assert: (self collection addFirst: 0; yourself) first equals: 0",
  75231. referencedClasses: [],
  75232. //>>excludeEnd("ide");
  75233. pragmas: [],
  75234. messageSends: ["assert:equals:", "first", "addFirst:", "collection", "yourself"]
  75235. }, function ($methodClass){ return function (){
  75236. var self=this,$self=this;
  75237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75238. return $core.withContext(function($ctx1) {
  75239. //>>excludeEnd("ctx");
  75240. var $1;
  75241. $1=$self._collection();
  75242. $recv($1)._addFirst_((0));
  75243. $self._assert_equals_($recv($recv($1)._yourself())._first(),(0));
  75244. return self;
  75245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75246. }, function($ctx1) {$ctx1.fill(self,"testAddFirst",{})});
  75247. //>>excludeEnd("ctx");
  75248. }; }),
  75249. $globals.ArrayTest);
  75250. $core.addMethod(
  75251. $core.method({
  75252. selector: "testPrintString",
  75253. protocol: "tests",
  75254. //>>excludeStart("ide", pragmas.excludeIdeData);
  75255. args: [],
  75256. source: "testPrintString\x0a\x09| array |\x0a\x09array := Array new.\x0a\x09self assert: array printString equals: 'an Array ()'.\x0a\x09array add: 1; add: 3.\x0a\x09self assert: array printString equals: 'an Array (1 3)'.\x0a\x09array add: 'foo'.\x0a\x09self assert: array printString equals: 'an Array (1 3 ''foo'')'.\x0a\x09array remove: 1; remove: 3.\x0a\x09self assert: array printString equals: 'an Array (''foo'')'.\x0a\x09array addLast: 3.\x0a\x09self assert: array printString equals: 'an Array (''foo'' 3)'.\x0a\x09array addLast: 3.\x0a\x09self assert: array printString equals: 'an Array (''foo'' 3 3)'.",
  75257. referencedClasses: ["Array"],
  75258. //>>excludeEnd("ide");
  75259. pragmas: [],
  75260. messageSends: ["new", "assert:equals:", "printString", "add:", "remove:", "addLast:"]
  75261. }, function ($methodClass){ return function (){
  75262. var self=this,$self=this;
  75263. var array;
  75264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75265. return $core.withContext(function($ctx1) {
  75266. //>>excludeEnd("ctx");
  75267. var $1,$2;
  75268. array=$recv($globals.Array)._new();
  75269. [$self._assert_equals_([$recv(array)._printString()
  75270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75271. ,$ctx1.sendIdx["printString"]=1
  75272. //>>excludeEnd("ctx");
  75273. ][0],"an Array ()")
  75274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75275. ,$ctx1.sendIdx["assert:equals:"]=1
  75276. //>>excludeEnd("ctx");
  75277. ][0];
  75278. $1=array;
  75279. [$recv($1)._add_((1))
  75280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75281. ,$ctx1.sendIdx["add:"]=1
  75282. //>>excludeEnd("ctx");
  75283. ][0];
  75284. [$recv($1)._add_((3))
  75285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75286. ,$ctx1.sendIdx["add:"]=2
  75287. //>>excludeEnd("ctx");
  75288. ][0];
  75289. [$self._assert_equals_([$recv(array)._printString()
  75290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75291. ,$ctx1.sendIdx["printString"]=2
  75292. //>>excludeEnd("ctx");
  75293. ][0],"an Array (1 3)")
  75294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75295. ,$ctx1.sendIdx["assert:equals:"]=2
  75296. //>>excludeEnd("ctx");
  75297. ][0];
  75298. $recv(array)._add_("foo");
  75299. [$self._assert_equals_([$recv(array)._printString()
  75300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75301. ,$ctx1.sendIdx["printString"]=3
  75302. //>>excludeEnd("ctx");
  75303. ][0],"an Array (1 3 'foo')")
  75304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75305. ,$ctx1.sendIdx["assert:equals:"]=3
  75306. //>>excludeEnd("ctx");
  75307. ][0];
  75308. $2=array;
  75309. [$recv($2)._remove_((1))
  75310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75311. ,$ctx1.sendIdx["remove:"]=1
  75312. //>>excludeEnd("ctx");
  75313. ][0];
  75314. $recv($2)._remove_((3));
  75315. [$self._assert_equals_([$recv(array)._printString()
  75316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75317. ,$ctx1.sendIdx["printString"]=4
  75318. //>>excludeEnd("ctx");
  75319. ][0],"an Array ('foo')")
  75320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75321. ,$ctx1.sendIdx["assert:equals:"]=4
  75322. //>>excludeEnd("ctx");
  75323. ][0];
  75324. [$recv(array)._addLast_((3))
  75325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75326. ,$ctx1.sendIdx["addLast:"]=1
  75327. //>>excludeEnd("ctx");
  75328. ][0];
  75329. [$self._assert_equals_([$recv(array)._printString()
  75330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75331. ,$ctx1.sendIdx["printString"]=5
  75332. //>>excludeEnd("ctx");
  75333. ][0],"an Array ('foo' 3)")
  75334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75335. ,$ctx1.sendIdx["assert:equals:"]=5
  75336. //>>excludeEnd("ctx");
  75337. ][0];
  75338. $recv(array)._addLast_((3));
  75339. $self._assert_equals_($recv(array)._printString(),"an Array ('foo' 3 3)");
  75340. return self;
  75341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75342. }, function($ctx1) {$ctx1.fill(self,"testPrintString",{array:array})});
  75343. //>>excludeEnd("ctx");
  75344. }; }),
  75345. $globals.ArrayTest);
  75346. $core.addMethod(
  75347. $core.method({
  75348. selector: "testRemove",
  75349. protocol: "tests",
  75350. //>>excludeStart("ide", pragmas.excludeIdeData);
  75351. args: [],
  75352. source: "testRemove \x0a\x09| array |\x0a\x09array := #(1 2 3 4 5). \x0a\x09array remove: 3.\x0a\x0a\x09self assert: array equals: #(1 2 4 5).\x0a\x09self should: [ array remove: 3 ] raise: Error",
  75353. referencedClasses: ["Error"],
  75354. //>>excludeEnd("ide");
  75355. pragmas: [],
  75356. messageSends: ["remove:", "assert:equals:", "should:raise:"]
  75357. }, function ($methodClass){ return function (){
  75358. var self=this,$self=this;
  75359. var array;
  75360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75361. return $core.withContext(function($ctx1) {
  75362. //>>excludeEnd("ctx");
  75363. array=[(1), (2), (3), (4), (5)];
  75364. [$recv(array)._remove_((3))
  75365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75366. ,$ctx1.sendIdx["remove:"]=1
  75367. //>>excludeEnd("ctx");
  75368. ][0];
  75369. $self._assert_equals_(array,[(1), (2), (4), (5)]);
  75370. $self._should_raise_((function(){
  75371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75372. return $core.withContext(function($ctx2) {
  75373. //>>excludeEnd("ctx");
  75374. return $recv(array)._remove_((3));
  75375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75376. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75377. //>>excludeEnd("ctx");
  75378. }),$globals.Error);
  75379. return self;
  75380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75381. }, function($ctx1) {$ctx1.fill(self,"testRemove",{array:array})});
  75382. //>>excludeEnd("ctx");
  75383. }; }),
  75384. $globals.ArrayTest);
  75385. $core.addMethod(
  75386. $core.method({
  75387. selector: "testRemoveFromTo",
  75388. protocol: "tests",
  75389. //>>excludeStart("ide", pragmas.excludeIdeData);
  75390. args: [],
  75391. source: "testRemoveFromTo\x0a\x09\x0a\x09self assert: (#(1 2 3 4) removeFrom: 1 to: 3) equals: #(4).\x0a\x09self assert: (#(1 2 3 4) removeFrom: 2 to: 3) equals: #(1 4).\x0a\x09self assert: (#(1 2 3 4) removeFrom: 2 to: 4) equals: #(1)",
  75392. referencedClasses: [],
  75393. //>>excludeEnd("ide");
  75394. pragmas: [],
  75395. messageSends: ["assert:equals:", "removeFrom:to:"]
  75396. }, function ($methodClass){ return function (){
  75397. var self=this,$self=this;
  75398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75399. return $core.withContext(function($ctx1) {
  75400. //>>excludeEnd("ctx");
  75401. [$self._assert_equals_([[(1), (2), (3), (4)]._removeFrom_to_((1),(3))
  75402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75403. ,$ctx1.sendIdx["removeFrom:to:"]=1
  75404. //>>excludeEnd("ctx");
  75405. ][0],[(4)])
  75406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75407. ,$ctx1.sendIdx["assert:equals:"]=1
  75408. //>>excludeEnd("ctx");
  75409. ][0];
  75410. [$self._assert_equals_([[(1), (2), (3), (4)]._removeFrom_to_((2),(3))
  75411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75412. ,$ctx1.sendIdx["removeFrom:to:"]=2
  75413. //>>excludeEnd("ctx");
  75414. ][0],[(1), (4)])
  75415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75416. ,$ctx1.sendIdx["assert:equals:"]=2
  75417. //>>excludeEnd("ctx");
  75418. ][0];
  75419. $self._assert_equals_([(1), (2), (3), (4)]._removeFrom_to_((2),(4)),[(1)]);
  75420. return self;
  75421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75422. }, function($ctx1) {$ctx1.fill(self,"testRemoveFromTo",{})});
  75423. //>>excludeEnd("ctx");
  75424. }; }),
  75425. $globals.ArrayTest);
  75426. $core.addMethod(
  75427. $core.method({
  75428. selector: "testRemoveIndex",
  75429. protocol: "tests",
  75430. //>>excludeStart("ide", pragmas.excludeIdeData);
  75431. args: [],
  75432. source: "testRemoveIndex\x0a\x09\x0a\x09self assert: (#(1 2 3 4) removeIndex: 2) equals: #(1 3 4).\x0a\x09self assert: (#(1 2 3 4) removeIndex: 1) equals: #(2 3 4).\x0a\x09self assert: (#('hello') removeIndex: 1) equals: #()",
  75433. referencedClasses: [],
  75434. //>>excludeEnd("ide");
  75435. pragmas: [],
  75436. messageSends: ["assert:equals:", "removeIndex:"]
  75437. }, function ($methodClass){ return function (){
  75438. var self=this,$self=this;
  75439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75440. return $core.withContext(function($ctx1) {
  75441. //>>excludeEnd("ctx");
  75442. [$self._assert_equals_([[(1), (2), (3), (4)]._removeIndex_((2))
  75443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75444. ,$ctx1.sendIdx["removeIndex:"]=1
  75445. //>>excludeEnd("ctx");
  75446. ][0],[(1), (3), (4)])
  75447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75448. ,$ctx1.sendIdx["assert:equals:"]=1
  75449. //>>excludeEnd("ctx");
  75450. ][0];
  75451. [$self._assert_equals_([[(1), (2), (3), (4)]._removeIndex_((1))
  75452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75453. ,$ctx1.sendIdx["removeIndex:"]=2
  75454. //>>excludeEnd("ctx");
  75455. ][0],[(2), (3), (4)])
  75456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75457. ,$ctx1.sendIdx["assert:equals:"]=2
  75458. //>>excludeEnd("ctx");
  75459. ][0];
  75460. $self._assert_equals_(["hello"]._removeIndex_((1)),[]);
  75461. return self;
  75462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75463. }, function($ctx1) {$ctx1.fill(self,"testRemoveIndex",{})});
  75464. //>>excludeEnd("ctx");
  75465. }; }),
  75466. $globals.ArrayTest);
  75467. $core.addMethod(
  75468. $core.method({
  75469. selector: "testRemoveLast",
  75470. protocol: "tests",
  75471. //>>excludeStart("ide", pragmas.excludeIdeData);
  75472. args: [],
  75473. source: "testRemoveLast \x0a\x09| array |\x0a\x09array := #(1 2). \x0a\x09array removeLast.\x0a\x09\x0a\x09self assert: array last equals: 1",
  75474. referencedClasses: [],
  75475. //>>excludeEnd("ide");
  75476. pragmas: [],
  75477. messageSends: ["removeLast", "assert:equals:", "last"]
  75478. }, function ($methodClass){ return function (){
  75479. var self=this,$self=this;
  75480. var array;
  75481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75482. return $core.withContext(function($ctx1) {
  75483. //>>excludeEnd("ctx");
  75484. array=[(1), (2)];
  75485. $recv(array)._removeLast();
  75486. $self._assert_equals_($recv(array)._last(),(1));
  75487. return self;
  75488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75489. }, function($ctx1) {$ctx1.fill(self,"testRemoveLast",{array:array})});
  75490. //>>excludeEnd("ctx");
  75491. }; }),
  75492. $globals.ArrayTest);
  75493. $core.addMethod(
  75494. $core.method({
  75495. selector: "testReversed",
  75496. protocol: "tests",
  75497. //>>excludeStart("ide", pragmas.excludeIdeData);
  75498. args: [],
  75499. source: "testReversed\x0a\x09|array|\x0a\x09array := #(5 4 3 2 1). \x0a\x09self assert: (array reversed) equals: #(1 2 3 4 5)",
  75500. referencedClasses: [],
  75501. //>>excludeEnd("ide");
  75502. pragmas: [],
  75503. messageSends: ["assert:equals:", "reversed"]
  75504. }, function ($methodClass){ return function (){
  75505. var self=this,$self=this;
  75506. var array;
  75507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75508. return $core.withContext(function($ctx1) {
  75509. //>>excludeEnd("ctx");
  75510. array=[(5), (4), (3), (2), (1)];
  75511. $self._assert_equals_($recv(array)._reversed(),[(1), (2), (3), (4), (5)]);
  75512. return self;
  75513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75514. }, function($ctx1) {$ctx1.fill(self,"testReversed",{array:array})});
  75515. //>>excludeEnd("ctx");
  75516. }; }),
  75517. $globals.ArrayTest);
  75518. $core.addMethod(
  75519. $core.method({
  75520. selector: "testSort",
  75521. protocol: "tests",
  75522. //>>excludeStart("ide", pragmas.excludeIdeData);
  75523. args: [],
  75524. source: "testSort\x0a\x09| array |\x0a\x09array := #(10 1 5). \x0a\x09array sort.\x0a\x09self assert: array equals: #(1 5 10)",
  75525. referencedClasses: [],
  75526. //>>excludeEnd("ide");
  75527. pragmas: [],
  75528. messageSends: ["sort", "assert:equals:"]
  75529. }, function ($methodClass){ return function (){
  75530. var self=this,$self=this;
  75531. var array;
  75532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75533. return $core.withContext(function($ctx1) {
  75534. //>>excludeEnd("ctx");
  75535. array=[(10), (1), (5)];
  75536. $recv(array)._sort();
  75537. $self._assert_equals_(array,[(1), (5), (10)]);
  75538. return self;
  75539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75540. }, function($ctx1) {$ctx1.fill(self,"testSort",{array:array})});
  75541. //>>excludeEnd("ctx");
  75542. }; }),
  75543. $globals.ArrayTest);
  75544. $core.addMethod(
  75545. $core.method({
  75546. selector: "collectionClass",
  75547. protocol: "fixture",
  75548. //>>excludeStart("ide", pragmas.excludeIdeData);
  75549. args: [],
  75550. source: "collectionClass\x0a\x09^ Array",
  75551. referencedClasses: ["Array"],
  75552. //>>excludeEnd("ide");
  75553. pragmas: [],
  75554. messageSends: []
  75555. }, function ($methodClass){ return function (){
  75556. var self=this,$self=this;
  75557. return $globals.Array;
  75558. }; }),
  75559. $globals.ArrayTest.a$cls);
  75560. $core.addClass("StringTest", $globals.SequenceableCollectionTest, "Kernel-Tests");
  75561. $core.addMethod(
  75562. $core.method({
  75563. selector: "collection",
  75564. protocol: "fixture",
  75565. //>>excludeStart("ide", pragmas.excludeIdeData);
  75566. args: [],
  75567. source: "collection\x0a\x09^ 'helLo'",
  75568. referencedClasses: [],
  75569. //>>excludeEnd("ide");
  75570. pragmas: [],
  75571. messageSends: []
  75572. }, function ($methodClass){ return function (){
  75573. var self=this,$self=this;
  75574. return "helLo";
  75575. }; }),
  75576. $globals.StringTest);
  75577. $core.addMethod(
  75578. $core.method({
  75579. selector: "collectionFirst",
  75580. protocol: "fixture",
  75581. //>>excludeStart("ide", pragmas.excludeIdeData);
  75582. args: [],
  75583. source: "collectionFirst\x0a\x09^ 'h'",
  75584. referencedClasses: [],
  75585. //>>excludeEnd("ide");
  75586. pragmas: [],
  75587. messageSends: []
  75588. }, function ($methodClass){ return function (){
  75589. var self=this,$self=this;
  75590. return "h";
  75591. }; }),
  75592. $globals.StringTest);
  75593. $core.addMethod(
  75594. $core.method({
  75595. selector: "collectionFirstTwo",
  75596. protocol: "fixture",
  75597. //>>excludeStart("ide", pragmas.excludeIdeData);
  75598. args: [],
  75599. source: "collectionFirstTwo\x0a\x09^ 'he'",
  75600. referencedClasses: [],
  75601. //>>excludeEnd("ide");
  75602. pragmas: [],
  75603. messageSends: []
  75604. }, function ($methodClass){ return function (){
  75605. var self=this,$self=this;
  75606. return "he";
  75607. }; }),
  75608. $globals.StringTest);
  75609. $core.addMethod(
  75610. $core.method({
  75611. selector: "collectionLast",
  75612. protocol: "fixture",
  75613. //>>excludeStart("ide", pragmas.excludeIdeData);
  75614. args: [],
  75615. source: "collectionLast\x0a\x09^ 'o'",
  75616. referencedClasses: [],
  75617. //>>excludeEnd("ide");
  75618. pragmas: [],
  75619. messageSends: []
  75620. }, function ($methodClass){ return function (){
  75621. var self=this,$self=this;
  75622. return "o";
  75623. }; }),
  75624. $globals.StringTest);
  75625. $core.addMethod(
  75626. $core.method({
  75627. selector: "collectionLastTwo",
  75628. protocol: "fixture",
  75629. //>>excludeStart("ide", pragmas.excludeIdeData);
  75630. args: [],
  75631. source: "collectionLastTwo\x0a\x09^ 'Lo'",
  75632. referencedClasses: [],
  75633. //>>excludeEnd("ide");
  75634. pragmas: [],
  75635. messageSends: []
  75636. }, function ($methodClass){ return function (){
  75637. var self=this,$self=this;
  75638. return "Lo";
  75639. }; }),
  75640. $globals.StringTest);
  75641. $core.addMethod(
  75642. $core.method({
  75643. selector: "collectionOfPrintStrings",
  75644. protocol: "fixture",
  75645. //>>excludeStart("ide", pragmas.excludeIdeData);
  75646. args: [],
  75647. source: "collectionOfPrintStrings\x0a\x09^ '''h''''e''''l''''L''''o'''",
  75648. referencedClasses: [],
  75649. //>>excludeEnd("ide");
  75650. pragmas: [],
  75651. messageSends: []
  75652. }, function ($methodClass){ return function (){
  75653. var self=this,$self=this;
  75654. return "'h''e''l''L''o'";
  75655. }; }),
  75656. $globals.StringTest);
  75657. $core.addMethod(
  75658. $core.method({
  75659. selector: "collectionSize",
  75660. protocol: "fixture",
  75661. //>>excludeStart("ide", pragmas.excludeIdeData);
  75662. args: [],
  75663. source: "collectionSize\x0a\x09^ 5",
  75664. referencedClasses: [],
  75665. //>>excludeEnd("ide");
  75666. pragmas: [],
  75667. messageSends: []
  75668. }, function ($methodClass){ return function (){
  75669. var self=this,$self=this;
  75670. return (5);
  75671. }; }),
  75672. $globals.StringTest);
  75673. $core.addMethod(
  75674. $core.method({
  75675. selector: "collectionWithDuplicates",
  75676. protocol: "fixture",
  75677. //>>excludeStart("ide", pragmas.excludeIdeData);
  75678. args: [],
  75679. source: "collectionWithDuplicates\x0a\x09^ 'abbaerten'",
  75680. referencedClasses: [],
  75681. //>>excludeEnd("ide");
  75682. pragmas: [],
  75683. messageSends: []
  75684. }, function ($methodClass){ return function (){
  75685. var self=this,$self=this;
  75686. return "abbaerten";
  75687. }; }),
  75688. $globals.StringTest);
  75689. $core.addMethod(
  75690. $core.method({
  75691. selector: "collectionWithNewValue",
  75692. protocol: "fixture",
  75693. //>>excludeStart("ide", pragmas.excludeIdeData);
  75694. args: [],
  75695. source: "collectionWithNewValue\x0a\x09^ 'helLoN'",
  75696. referencedClasses: [],
  75697. //>>excludeEnd("ide");
  75698. pragmas: [],
  75699. messageSends: []
  75700. }, function ($methodClass){ return function (){
  75701. var self=this,$self=this;
  75702. return "helLoN";
  75703. }; }),
  75704. $globals.StringTest);
  75705. $core.addMethod(
  75706. $core.method({
  75707. selector: "sampleNewValueAsCollection",
  75708. protocol: "fixture",
  75709. //>>excludeStart("ide", pragmas.excludeIdeData);
  75710. args: [],
  75711. source: "sampleNewValueAsCollection\x0a\x09^ 'N'",
  75712. referencedClasses: [],
  75713. //>>excludeEnd("ide");
  75714. pragmas: [],
  75715. messageSends: []
  75716. }, function ($methodClass){ return function (){
  75717. var self=this,$self=this;
  75718. return "N";
  75719. }; }),
  75720. $globals.StringTest);
  75721. $core.addMethod(
  75722. $core.method({
  75723. selector: "samplesDo:",
  75724. protocol: "fixture",
  75725. //>>excludeStart("ide", pragmas.excludeIdeData);
  75726. args: ["aBlock"],
  75727. source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: 3 value: 'l'",
  75728. referencedClasses: [],
  75729. //>>excludeEnd("ide");
  75730. pragmas: [],
  75731. messageSends: ["samplesDo:", "value:value:"]
  75732. }, function ($methodClass){ return function (aBlock){
  75733. var self=this,$self=this;
  75734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75735. return $core.withContext(function($ctx1) {
  75736. //>>excludeEnd("ctx");
  75737. [(
  75738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75739. $ctx1.supercall = true,
  75740. //>>excludeEnd("ctx");
  75741. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._samplesDo_.call($self,aBlock))
  75742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75743. ,$ctx1.supercall = false
  75744. //>>excludeEnd("ctx");
  75745. ][0];
  75746. $recv(aBlock)._value_value_((3),"l");
  75747. return self;
  75748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75749. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
  75750. //>>excludeEnd("ctx");
  75751. }; }),
  75752. $globals.StringTest);
  75753. $core.addMethod(
  75754. $core.method({
  75755. selector: "testAddAll",
  75756. protocol: "tests",
  75757. //>>excludeStart("ide", pragmas.excludeIdeData);
  75758. args: [],
  75759. source: "testAddAll\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ self collection addAll: self collection ] raise: Error",
  75760. referencedClasses: ["Error"],
  75761. //>>excludeEnd("ide");
  75762. pragmas: [],
  75763. messageSends: ["should:raise:", "addAll:", "collection"]
  75764. }, function ($methodClass){ return function (){
  75765. var self=this,$self=this;
  75766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75767. return $core.withContext(function($ctx1) {
  75768. //>>excludeEnd("ctx");
  75769. $self._should_raise_((function(){
  75770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75771. return $core.withContext(function($ctx2) {
  75772. //>>excludeEnd("ctx");
  75773. return $recv([$self._collection()
  75774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75775. ,$ctx2.sendIdx["collection"]=1
  75776. //>>excludeEnd("ctx");
  75777. ][0])._addAll_($self._collection());
  75778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75779. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75780. //>>excludeEnd("ctx");
  75781. }),$globals.Error);
  75782. return self;
  75783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75784. }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
  75785. //>>excludeEnd("ctx");
  75786. }; }),
  75787. $globals.StringTest);
  75788. $core.addMethod(
  75789. $core.method({
  75790. selector: "testAddRemove",
  75791. protocol: "tests",
  75792. //>>excludeStart("ide", pragmas.excludeIdeData);
  75793. args: [],
  75794. source: "testAddRemove\x0a\x09self should: [ 'hello' add: 'a' ] raise: Error.\x0a\x09self should: [ 'hello' remove: 'h' ] raise: Error",
  75795. referencedClasses: ["Error"],
  75796. //>>excludeEnd("ide");
  75797. pragmas: [],
  75798. messageSends: ["should:raise:", "add:", "remove:"]
  75799. }, function ($methodClass){ return function (){
  75800. var self=this,$self=this;
  75801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75802. return $core.withContext(function($ctx1) {
  75803. //>>excludeEnd("ctx");
  75804. [$self._should_raise_((function(){
  75805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75806. return $core.withContext(function($ctx2) {
  75807. //>>excludeEnd("ctx");
  75808. return "hello"._add_("a");
  75809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75810. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75811. //>>excludeEnd("ctx");
  75812. }),$globals.Error)
  75813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75814. ,$ctx1.sendIdx["should:raise:"]=1
  75815. //>>excludeEnd("ctx");
  75816. ][0];
  75817. $self._should_raise_((function(){
  75818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75819. return $core.withContext(function($ctx2) {
  75820. //>>excludeEnd("ctx");
  75821. return "hello"._remove_("h");
  75822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75823. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  75824. //>>excludeEnd("ctx");
  75825. }),$globals.Error);
  75826. return self;
  75827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75828. }, function($ctx1) {$ctx1.fill(self,"testAddRemove",{})});
  75829. //>>excludeEnd("ctx");
  75830. }; }),
  75831. $globals.StringTest);
  75832. $core.addMethod(
  75833. $core.method({
  75834. selector: "testAsArray",
  75835. protocol: "tests",
  75836. //>>excludeStart("ide", pragmas.excludeIdeData);
  75837. args: [],
  75838. source: "testAsArray\x0a\x09self assert: 'hello' asArray equals: #('h' 'e' 'l' 'l' 'o').",
  75839. referencedClasses: [],
  75840. //>>excludeEnd("ide");
  75841. pragmas: [],
  75842. messageSends: ["assert:equals:", "asArray"]
  75843. }, function ($methodClass){ return function (){
  75844. var self=this,$self=this;
  75845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75846. return $core.withContext(function($ctx1) {
  75847. //>>excludeEnd("ctx");
  75848. $self._assert_equals_("hello"._asArray(),["h", "e", "l", "l", "o"]);
  75849. return self;
  75850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75851. }, function($ctx1) {$ctx1.fill(self,"testAsArray",{})});
  75852. //>>excludeEnd("ctx");
  75853. }; }),
  75854. $globals.StringTest);
  75855. $core.addMethod(
  75856. $core.method({
  75857. selector: "testAsLowerCase",
  75858. protocol: "tests",
  75859. //>>excludeStart("ide", pragmas.excludeIdeData);
  75860. args: [],
  75861. source: "testAsLowerCase\x0a\x09self assert: 'JACKIE' asLowercase equals: 'jackie'.",
  75862. referencedClasses: [],
  75863. //>>excludeEnd("ide");
  75864. pragmas: [],
  75865. messageSends: ["assert:equals:", "asLowercase"]
  75866. }, function ($methodClass){ return function (){
  75867. var self=this,$self=this;
  75868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75869. return $core.withContext(function($ctx1) {
  75870. //>>excludeEnd("ctx");
  75871. $self._assert_equals_("JACKIE"._asLowercase(),"jackie");
  75872. return self;
  75873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75874. }, function($ctx1) {$ctx1.fill(self,"testAsLowerCase",{})});
  75875. //>>excludeEnd("ctx");
  75876. }; }),
  75877. $globals.StringTest);
  75878. $core.addMethod(
  75879. $core.method({
  75880. selector: "testAsNumber",
  75881. protocol: "tests",
  75882. //>>excludeStart("ide", pragmas.excludeIdeData);
  75883. args: [],
  75884. source: "testAsNumber\x0a\x09self assert: '3' asNumber equals: 3.\x0a\x09self assert: '-3' asNumber equals: -3.\x0a\x09self assert: '-1.5' asNumber equals: -1.5.",
  75885. referencedClasses: [],
  75886. //>>excludeEnd("ide");
  75887. pragmas: [],
  75888. messageSends: ["assert:equals:", "asNumber"]
  75889. }, function ($methodClass){ return function (){
  75890. var self=this,$self=this;
  75891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75892. return $core.withContext(function($ctx1) {
  75893. //>>excludeEnd("ctx");
  75894. [$self._assert_equals_(["3"._asNumber()
  75895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75896. ,$ctx1.sendIdx["asNumber"]=1
  75897. //>>excludeEnd("ctx");
  75898. ][0],(3))
  75899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75900. ,$ctx1.sendIdx["assert:equals:"]=1
  75901. //>>excludeEnd("ctx");
  75902. ][0];
  75903. [$self._assert_equals_(["-3"._asNumber()
  75904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75905. ,$ctx1.sendIdx["asNumber"]=2
  75906. //>>excludeEnd("ctx");
  75907. ][0],(-3))
  75908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75909. ,$ctx1.sendIdx["assert:equals:"]=2
  75910. //>>excludeEnd("ctx");
  75911. ][0];
  75912. $self._assert_equals_("-1.5"._asNumber(),(-1.5));
  75913. return self;
  75914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75915. }, function($ctx1) {$ctx1.fill(self,"testAsNumber",{})});
  75916. //>>excludeEnd("ctx");
  75917. }; }),
  75918. $globals.StringTest);
  75919. $core.addMethod(
  75920. $core.method({
  75921. selector: "testAsUpperCase",
  75922. protocol: "tests",
  75923. //>>excludeStart("ide", pragmas.excludeIdeData);
  75924. args: [],
  75925. source: "testAsUpperCase\x0a\x09self assert: 'jackie' asUppercase equals: 'JACKIE'.",
  75926. referencedClasses: [],
  75927. //>>excludeEnd("ide");
  75928. pragmas: [],
  75929. messageSends: ["assert:equals:", "asUppercase"]
  75930. }, function ($methodClass){ return function (){
  75931. var self=this,$self=this;
  75932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75933. return $core.withContext(function($ctx1) {
  75934. //>>excludeEnd("ctx");
  75935. $self._assert_equals_("jackie"._asUppercase(),"JACKIE");
  75936. return self;
  75937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75938. }, function($ctx1) {$ctx1.fill(self,"testAsUpperCase",{})});
  75939. //>>excludeEnd("ctx");
  75940. }; }),
  75941. $globals.StringTest);
  75942. $core.addMethod(
  75943. $core.method({
  75944. selector: "testAsciiValue",
  75945. protocol: "tests",
  75946. //>>excludeStart("ide", pragmas.excludeIdeData);
  75947. args: [],
  75948. source: "testAsciiValue\x0a | characterA characterU |\x0a characterA := 'A'.\x0a characterU := 'U'.\x0a self assert: (characterA asciiValue) equals:65.\x0a self assert: (characterU asciiValue) equals:85",
  75949. referencedClasses: [],
  75950. //>>excludeEnd("ide");
  75951. pragmas: [],
  75952. messageSends: ["assert:equals:", "asciiValue"]
  75953. }, function ($methodClass){ return function (){
  75954. var self=this,$self=this;
  75955. var characterA,characterU;
  75956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75957. return $core.withContext(function($ctx1) {
  75958. //>>excludeEnd("ctx");
  75959. characterA="A";
  75960. characterU="U";
  75961. [$self._assert_equals_([$recv(characterA)._asciiValue()
  75962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75963. ,$ctx1.sendIdx["asciiValue"]=1
  75964. //>>excludeEnd("ctx");
  75965. ][0],(65))
  75966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75967. ,$ctx1.sendIdx["assert:equals:"]=1
  75968. //>>excludeEnd("ctx");
  75969. ][0];
  75970. $self._assert_equals_($recv(characterU)._asciiValue(),(85));
  75971. return self;
  75972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75973. }, function($ctx1) {$ctx1.fill(self,"testAsciiValue",{characterA:characterA,characterU:characterU})});
  75974. //>>excludeEnd("ctx");
  75975. }; }),
  75976. $globals.StringTest);
  75977. $core.addMethod(
  75978. $core.method({
  75979. selector: "testAtIfAbsentPut",
  75980. protocol: "tests",
  75981. //>>excludeStart("ide", pragmas.excludeIdeData);
  75982. args: [],
  75983. source: "testAtIfAbsentPut\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ 'hello' at: 6 ifAbsentPut: [ 'a' ] ] raise: Error",
  75984. referencedClasses: ["Error"],
  75985. //>>excludeEnd("ide");
  75986. pragmas: [],
  75987. messageSends: ["should:raise:", "at:ifAbsentPut:"]
  75988. }, function ($methodClass){ return function (){
  75989. var self=this,$self=this;
  75990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75991. return $core.withContext(function($ctx1) {
  75992. //>>excludeEnd("ctx");
  75993. $self._should_raise_((function(){
  75994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75995. return $core.withContext(function($ctx2) {
  75996. //>>excludeEnd("ctx");
  75997. return "hello"._at_ifAbsentPut_((6),(function(){
  75998. return "a";
  75999. }));
  76000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76001. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76002. //>>excludeEnd("ctx");
  76003. }),$globals.Error);
  76004. return self;
  76005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76006. }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsentPut",{})});
  76007. //>>excludeEnd("ctx");
  76008. }; }),
  76009. $globals.StringTest);
  76010. $core.addMethod(
  76011. $core.method({
  76012. selector: "testAtPut",
  76013. protocol: "tests",
  76014. //>>excludeStart("ide", pragmas.excludeIdeData);
  76015. args: [],
  76016. source: "testAtPut\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ 'hello' at: 1 put: 'a' ] raise: Error",
  76017. referencedClasses: ["Error"],
  76018. //>>excludeEnd("ide");
  76019. pragmas: [],
  76020. messageSends: ["should:raise:", "at:put:"]
  76021. }, function ($methodClass){ return function (){
  76022. var self=this,$self=this;
  76023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76024. return $core.withContext(function($ctx1) {
  76025. //>>excludeEnd("ctx");
  76026. $self._should_raise_((function(){
  76027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76028. return $core.withContext(function($ctx2) {
  76029. //>>excludeEnd("ctx");
  76030. return "hello"._at_put_((1),"a");
  76031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76032. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76033. //>>excludeEnd("ctx");
  76034. }),$globals.Error);
  76035. return self;
  76036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76037. }, function($ctx1) {$ctx1.fill(self,"testAtPut",{})});
  76038. //>>excludeEnd("ctx");
  76039. }; }),
  76040. $globals.StringTest);
  76041. $core.addMethod(
  76042. $core.method({
  76043. selector: "testCapitalized",
  76044. protocol: "tests",
  76045. //>>excludeStart("ide", pragmas.excludeIdeData);
  76046. args: [],
  76047. source: "testCapitalized\x0a\x09self assert: 'test' capitalized equals: 'Test'.\x0a\x09self assert: 'Test' capitalized equals: 'Test'.\x0a\x09self assert: '' capitalized equals: ''.\x0a\x09self assert: 'Test' isCapitalized equals: true.\x0a\x09self assert: 'test' isCapitalized equals: false.",
  76048. referencedClasses: [],
  76049. //>>excludeEnd("ide");
  76050. pragmas: [],
  76051. messageSends: ["assert:equals:", "capitalized", "isCapitalized"]
  76052. }, function ($methodClass){ return function (){
  76053. var self=this,$self=this;
  76054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76055. return $core.withContext(function($ctx1) {
  76056. //>>excludeEnd("ctx");
  76057. [$self._assert_equals_(["test"._capitalized()
  76058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76059. ,$ctx1.sendIdx["capitalized"]=1
  76060. //>>excludeEnd("ctx");
  76061. ][0],"Test")
  76062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76063. ,$ctx1.sendIdx["assert:equals:"]=1
  76064. //>>excludeEnd("ctx");
  76065. ][0];
  76066. [$self._assert_equals_(["Test"._capitalized()
  76067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76068. ,$ctx1.sendIdx["capitalized"]=2
  76069. //>>excludeEnd("ctx");
  76070. ][0],"Test")
  76071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76072. ,$ctx1.sendIdx["assert:equals:"]=2
  76073. //>>excludeEnd("ctx");
  76074. ][0];
  76075. [$self._assert_equals_(""._capitalized(),"")
  76076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76077. ,$ctx1.sendIdx["assert:equals:"]=3
  76078. //>>excludeEnd("ctx");
  76079. ][0];
  76080. [$self._assert_equals_(["Test"._isCapitalized()
  76081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76082. ,$ctx1.sendIdx["isCapitalized"]=1
  76083. //>>excludeEnd("ctx");
  76084. ][0],true)
  76085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76086. ,$ctx1.sendIdx["assert:equals:"]=4
  76087. //>>excludeEnd("ctx");
  76088. ][0];
  76089. $self._assert_equals_("test"._isCapitalized(),false);
  76090. return self;
  76091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76092. }, function($ctx1) {$ctx1.fill(self,"testCapitalized",{})});
  76093. //>>excludeEnd("ctx");
  76094. }; }),
  76095. $globals.StringTest);
  76096. $core.addMethod(
  76097. $core.method({
  76098. selector: "testCharCodeAt",
  76099. protocol: "tests",
  76100. //>>excludeStart("ide", pragmas.excludeIdeData);
  76101. args: [],
  76102. source: "testCharCodeAt\x0a\x09self assert: ('jackie' charCodeAt:1) equals: 106.\x0a\x09self assert: ('jackie' charCodeAt:2) equals: 97.\x0a\x09self assert: ('jackie' charCodeAt:3) equals: 99.\x0a\x09self assert: ('jackie' charCodeAt:4) equals: 107.\x0a\x09self assert: ('jackie' charCodeAt:5) equals: 105.\x0a\x09self assert: ('jackie' charCodeAt:6) equals: 101",
  76103. referencedClasses: [],
  76104. //>>excludeEnd("ide");
  76105. pragmas: [],
  76106. messageSends: ["assert:equals:", "charCodeAt:"]
  76107. }, function ($methodClass){ return function (){
  76108. var self=this,$self=this;
  76109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76110. return $core.withContext(function($ctx1) {
  76111. //>>excludeEnd("ctx");
  76112. [$self._assert_equals_(["jackie"._charCodeAt_((1))
  76113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76114. ,$ctx1.sendIdx["charCodeAt:"]=1
  76115. //>>excludeEnd("ctx");
  76116. ][0],(106))
  76117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76118. ,$ctx1.sendIdx["assert:equals:"]=1
  76119. //>>excludeEnd("ctx");
  76120. ][0];
  76121. [$self._assert_equals_(["jackie"._charCodeAt_((2))
  76122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76123. ,$ctx1.sendIdx["charCodeAt:"]=2
  76124. //>>excludeEnd("ctx");
  76125. ][0],(97))
  76126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76127. ,$ctx1.sendIdx["assert:equals:"]=2
  76128. //>>excludeEnd("ctx");
  76129. ][0];
  76130. [$self._assert_equals_(["jackie"._charCodeAt_((3))
  76131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76132. ,$ctx1.sendIdx["charCodeAt:"]=3
  76133. //>>excludeEnd("ctx");
  76134. ][0],(99))
  76135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76136. ,$ctx1.sendIdx["assert:equals:"]=3
  76137. //>>excludeEnd("ctx");
  76138. ][0];
  76139. [$self._assert_equals_(["jackie"._charCodeAt_((4))
  76140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76141. ,$ctx1.sendIdx["charCodeAt:"]=4
  76142. //>>excludeEnd("ctx");
  76143. ][0],(107))
  76144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76145. ,$ctx1.sendIdx["assert:equals:"]=4
  76146. //>>excludeEnd("ctx");
  76147. ][0];
  76148. [$self._assert_equals_(["jackie"._charCodeAt_((5))
  76149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76150. ,$ctx1.sendIdx["charCodeAt:"]=5
  76151. //>>excludeEnd("ctx");
  76152. ][0],(105))
  76153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76154. ,$ctx1.sendIdx["assert:equals:"]=5
  76155. //>>excludeEnd("ctx");
  76156. ][0];
  76157. $self._assert_equals_("jackie"._charCodeAt_((6)),(101));
  76158. return self;
  76159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76160. }, function($ctx1) {$ctx1.fill(self,"testCharCodeAt",{})});
  76161. //>>excludeEnd("ctx");
  76162. }; }),
  76163. $globals.StringTest);
  76164. $core.addMethod(
  76165. $core.method({
  76166. selector: "testCopyFromTo",
  76167. protocol: "tests",
  76168. //>>excludeStart("ide", pragmas.excludeIdeData);
  76169. args: [],
  76170. source: "testCopyFromTo\x0a\x09self assert: ('jackie' copyFrom: 1 to: 3) equals: 'jac'.\x0a\x09self assert: ('jackie' copyFrom: 4 to: 6) equals: 'kie'.",
  76171. referencedClasses: [],
  76172. //>>excludeEnd("ide");
  76173. pragmas: [],
  76174. messageSends: ["assert:equals:", "copyFrom:to:"]
  76175. }, function ($methodClass){ return function (){
  76176. var self=this,$self=this;
  76177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76178. return $core.withContext(function($ctx1) {
  76179. //>>excludeEnd("ctx");
  76180. [$self._assert_equals_(["jackie"._copyFrom_to_((1),(3))
  76181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76182. ,$ctx1.sendIdx["copyFrom:to:"]=1
  76183. //>>excludeEnd("ctx");
  76184. ][0],"jac")
  76185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76186. ,$ctx1.sendIdx["assert:equals:"]=1
  76187. //>>excludeEnd("ctx");
  76188. ][0];
  76189. $self._assert_equals_("jackie"._copyFrom_to_((4),(6)),"kie");
  76190. return self;
  76191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76192. }, function($ctx1) {$ctx1.fill(self,"testCopyFromTo",{})});
  76193. //>>excludeEnd("ctx");
  76194. }; }),
  76195. $globals.StringTest);
  76196. $core.addMethod(
  76197. $core.method({
  76198. selector: "testCopySeparates",
  76199. protocol: "tests",
  76200. //>>excludeStart("ide", pragmas.excludeIdeData);
  76201. args: [],
  76202. source: "testCopySeparates\x0a\x09\x22String instances are immutable\x22\x0a\x09self assert: self collection copy == self collection",
  76203. referencedClasses: [],
  76204. //>>excludeEnd("ide");
  76205. pragmas: [],
  76206. messageSends: ["assert:", "==", "copy", "collection"]
  76207. }, function ($methodClass){ return function (){
  76208. var self=this,$self=this;
  76209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76210. return $core.withContext(function($ctx1) {
  76211. //>>excludeEnd("ctx");
  76212. $self._assert_($recv($recv([$self._collection()
  76213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76214. ,$ctx1.sendIdx["collection"]=1
  76215. //>>excludeEnd("ctx");
  76216. ][0])._copy()).__eq_eq($self._collection()));
  76217. return self;
  76218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76219. }, function($ctx1) {$ctx1.fill(self,"testCopySeparates",{})});
  76220. //>>excludeEnd("ctx");
  76221. }; }),
  76222. $globals.StringTest);
  76223. $core.addMethod(
  76224. $core.method({
  76225. selector: "testCopyWithoutAll",
  76226. protocol: "tests",
  76227. //>>excludeStart("ide", pragmas.excludeIdeData);
  76228. args: [],
  76229. source: "testCopyWithoutAll\x0a\x09self\x0a\x09\x09assert: ('*hello* *world*' copyWithoutAll: '*')\x0a\x09\x09equals: 'hello world'",
  76230. referencedClasses: [],
  76231. //>>excludeEnd("ide");
  76232. pragmas: [],
  76233. messageSends: ["assert:equals:", "copyWithoutAll:"]
  76234. }, function ($methodClass){ return function (){
  76235. var self=this,$self=this;
  76236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76237. return $core.withContext(function($ctx1) {
  76238. //>>excludeEnd("ctx");
  76239. $self._assert_equals_("*hello* *world*"._copyWithoutAll_("*"),"hello world");
  76240. return self;
  76241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76242. }, function($ctx1) {$ctx1.fill(self,"testCopyWithoutAll",{})});
  76243. //>>excludeEnd("ctx");
  76244. }; }),
  76245. $globals.StringTest);
  76246. $core.addMethod(
  76247. $core.method({
  76248. selector: "testEquality",
  76249. protocol: "tests",
  76250. //>>excludeStart("ide", pragmas.excludeIdeData);
  76251. args: [],
  76252. source: "testEquality\x0a\x09self assert: 'hello' equals: 'hello'.\x0a\x09self deny: 'hello' = 'world'.\x0a\x09\x0a\x09\x22Test for issue 459\x22\x0a\x09self deny: 'hello' = (#() at: 1 ifAbsent: [ ]).\x0a\x0a\x09self assert: 'hello' equals: 'hello' yourself.\x0a\x09self assert: 'hello' yourself equals: 'hello'.\x0a\x0a\x09\x22test JS falsy value\x22\x0a\x09self deny: '' = 0",
  76253. referencedClasses: [],
  76254. //>>excludeEnd("ide");
  76255. pragmas: [],
  76256. messageSends: ["assert:equals:", "deny:", "=", "at:ifAbsent:", "yourself"]
  76257. }, function ($methodClass){ return function (){
  76258. var self=this,$self=this;
  76259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76260. return $core.withContext(function($ctx1) {
  76261. //>>excludeEnd("ctx");
  76262. [$self._assert_equals_("hello","hello")
  76263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76264. ,$ctx1.sendIdx["assert:equals:"]=1
  76265. //>>excludeEnd("ctx");
  76266. ][0];
  76267. [$self._deny_(["hello".__eq("world")
  76268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76269. ,$ctx1.sendIdx["="]=1
  76270. //>>excludeEnd("ctx");
  76271. ][0])
  76272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76273. ,$ctx1.sendIdx["deny:"]=1
  76274. //>>excludeEnd("ctx");
  76275. ][0];
  76276. [$self._deny_(["hello".__eq([]._at_ifAbsent_((1),(function(){
  76277. })))
  76278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76279. ,$ctx1.sendIdx["="]=2
  76280. //>>excludeEnd("ctx");
  76281. ][0])
  76282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76283. ,$ctx1.sendIdx["deny:"]=2
  76284. //>>excludeEnd("ctx");
  76285. ][0];
  76286. [$self._assert_equals_("hello",["hello"._yourself()
  76287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76288. ,$ctx1.sendIdx["yourself"]=1
  76289. //>>excludeEnd("ctx");
  76290. ][0])
  76291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76292. ,$ctx1.sendIdx["assert:equals:"]=2
  76293. //>>excludeEnd("ctx");
  76294. ][0];
  76295. $self._assert_equals_("hello"._yourself(),"hello");
  76296. $self._deny_("".__eq((0)));
  76297. return self;
  76298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76299. }, function($ctx1) {$ctx1.fill(self,"testEquality",{})});
  76300. //>>excludeEnd("ctx");
  76301. }; }),
  76302. $globals.StringTest);
  76303. $core.addMethod(
  76304. $core.method({
  76305. selector: "testIdentity",
  76306. protocol: "tests",
  76307. //>>excludeStart("ide", pragmas.excludeIdeData);
  76308. args: [],
  76309. source: "testIdentity\x0a\x09self assert: 'hello' == 'hello'.\x0a\x09self deny: 'hello' == 'world'.\x0a\x0a\x09self assert: 'hello' == 'hello' yourself.\x0a\x09self assert: 'hello' yourself == 'hello'.\x0a\x0a\x09\x22test JS falsy value\x22\x0a\x09self deny: '' == 0",
  76310. referencedClasses: [],
  76311. //>>excludeEnd("ide");
  76312. pragmas: [],
  76313. messageSends: ["assert:", "==", "deny:", "yourself"]
  76314. }, function ($methodClass){ return function (){
  76315. var self=this,$self=this;
  76316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76317. return $core.withContext(function($ctx1) {
  76318. //>>excludeEnd("ctx");
  76319. [$self._assert_(["hello".__eq_eq("hello")
  76320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76321. ,$ctx1.sendIdx["=="]=1
  76322. //>>excludeEnd("ctx");
  76323. ][0])
  76324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76325. ,$ctx1.sendIdx["assert:"]=1
  76326. //>>excludeEnd("ctx");
  76327. ][0];
  76328. [$self._deny_(["hello".__eq_eq("world")
  76329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76330. ,$ctx1.sendIdx["=="]=2
  76331. //>>excludeEnd("ctx");
  76332. ][0])
  76333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76334. ,$ctx1.sendIdx["deny:"]=1
  76335. //>>excludeEnd("ctx");
  76336. ][0];
  76337. [$self._assert_(["hello".__eq_eq(["hello"._yourself()
  76338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76339. ,$ctx1.sendIdx["yourself"]=1
  76340. //>>excludeEnd("ctx");
  76341. ][0])
  76342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76343. ,$ctx1.sendIdx["=="]=3
  76344. //>>excludeEnd("ctx");
  76345. ][0])
  76346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76347. ,$ctx1.sendIdx["assert:"]=2
  76348. //>>excludeEnd("ctx");
  76349. ][0];
  76350. $self._assert_([$recv("hello"._yourself()).__eq_eq("hello")
  76351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76352. ,$ctx1.sendIdx["=="]=4
  76353. //>>excludeEnd("ctx");
  76354. ][0]);
  76355. $self._deny_("".__eq_eq((0)));
  76356. return self;
  76357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76358. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{})});
  76359. //>>excludeEnd("ctx");
  76360. }; }),
  76361. $globals.StringTest);
  76362. $core.addMethod(
  76363. $core.method({
  76364. selector: "testIncludesSubString",
  76365. protocol: "tests",
  76366. //>>excludeStart("ide", pragmas.excludeIdeData);
  76367. args: [],
  76368. source: "testIncludesSubString\x0a\x09self assert: ('amber' includesSubString: 'ber').\x0a\x09self deny: ('amber' includesSubString: 'zork').",
  76369. referencedClasses: [],
  76370. //>>excludeEnd("ide");
  76371. pragmas: [],
  76372. messageSends: ["assert:", "includesSubString:", "deny:"]
  76373. }, function ($methodClass){ return function (){
  76374. var self=this,$self=this;
  76375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76376. return $core.withContext(function($ctx1) {
  76377. //>>excludeEnd("ctx");
  76378. $self._assert_(["amber"._includesSubString_("ber")
  76379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76380. ,$ctx1.sendIdx["includesSubString:"]=1
  76381. //>>excludeEnd("ctx");
  76382. ][0]);
  76383. $self._deny_("amber"._includesSubString_("zork"));
  76384. return self;
  76385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76386. }, function($ctx1) {$ctx1.fill(self,"testIncludesSubString",{})});
  76387. //>>excludeEnd("ctx");
  76388. }; }),
  76389. $globals.StringTest);
  76390. $core.addMethod(
  76391. $core.method({
  76392. selector: "testIndexOfStartingAtWithNull",
  76393. protocol: "tests",
  76394. //>>excludeStart("ide", pragmas.excludeIdeData);
  76395. args: [],
  76396. source: "testIndexOfStartingAtWithNull\x0a\x09\x22String cannot hold JS null\x22",
  76397. referencedClasses: [],
  76398. //>>excludeEnd("ide");
  76399. pragmas: [],
  76400. messageSends: []
  76401. }, function ($methodClass){ return function (){
  76402. var self=this,$self=this;
  76403. return self;
  76404. }; }),
  76405. $globals.StringTest);
  76406. $core.addMethod(
  76407. $core.method({
  76408. selector: "testIndexOfWithNull",
  76409. protocol: "tests",
  76410. //>>excludeStart("ide", pragmas.excludeIdeData);
  76411. args: [],
  76412. source: "testIndexOfWithNull\x0a\x09\x22String cannot hold JS null\x22",
  76413. referencedClasses: [],
  76414. //>>excludeEnd("ide");
  76415. pragmas: [],
  76416. messageSends: []
  76417. }, function ($methodClass){ return function (){
  76418. var self=this,$self=this;
  76419. return self;
  76420. }; }),
  76421. $globals.StringTest);
  76422. $core.addMethod(
  76423. $core.method({
  76424. selector: "testIsVowel",
  76425. protocol: "tests",
  76426. //>>excludeStart("ide", pragmas.excludeIdeData);
  76427. args: [],
  76428. source: "testIsVowel\x0a |vowel consonant|\x0a vowel := 'u'.\x0a consonant := 'z'.\x0a self assert: vowel isVowel equals: true.\x0a self assert: consonant isVowel equals: false",
  76429. referencedClasses: [],
  76430. //>>excludeEnd("ide");
  76431. pragmas: [],
  76432. messageSends: ["assert:equals:", "isVowel"]
  76433. }, function ($methodClass){ return function (){
  76434. var self=this,$self=this;
  76435. var vowel,consonant;
  76436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76437. return $core.withContext(function($ctx1) {
  76438. //>>excludeEnd("ctx");
  76439. vowel="u";
  76440. consonant="z";
  76441. [$self._assert_equals_([$recv(vowel)._isVowel()
  76442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76443. ,$ctx1.sendIdx["isVowel"]=1
  76444. //>>excludeEnd("ctx");
  76445. ][0],true)
  76446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76447. ,$ctx1.sendIdx["assert:equals:"]=1
  76448. //>>excludeEnd("ctx");
  76449. ][0];
  76450. $self._assert_equals_($recv(consonant)._isVowel(),false);
  76451. return self;
  76452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76453. }, function($ctx1) {$ctx1.fill(self,"testIsVowel",{vowel:vowel,consonant:consonant})});
  76454. //>>excludeEnd("ctx");
  76455. }; }),
  76456. $globals.StringTest);
  76457. $core.addMethod(
  76458. $core.method({
  76459. selector: "testJoin",
  76460. protocol: "tests",
  76461. //>>excludeStart("ide", pragmas.excludeIdeData);
  76462. args: [],
  76463. source: "testJoin\x0a\x09self assert: (',' join: #('hello' 'world')) equals: 'hello,world'",
  76464. referencedClasses: [],
  76465. //>>excludeEnd("ide");
  76466. pragmas: [],
  76467. messageSends: ["assert:equals:", "join:"]
  76468. }, function ($methodClass){ return function (){
  76469. var self=this,$self=this;
  76470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76471. return $core.withContext(function($ctx1) {
  76472. //>>excludeEnd("ctx");
  76473. $self._assert_equals_(","._join_(["hello", "world"]),"hello,world");
  76474. return self;
  76475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76476. }, function($ctx1) {$ctx1.fill(self,"testJoin",{})});
  76477. //>>excludeEnd("ctx");
  76478. }; }),
  76479. $globals.StringTest);
  76480. $core.addMethod(
  76481. $core.method({
  76482. selector: "testRegression1224",
  76483. protocol: "tests",
  76484. //>>excludeStart("ide", pragmas.excludeIdeData);
  76485. args: [],
  76486. source: "testRegression1224\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ (self collectionClass new\x0a\x09\x09remove: self sampleNewValue ifAbsent: [];\x0a\x09\x09yourself) size ] raise: Error",
  76487. referencedClasses: ["Error"],
  76488. //>>excludeEnd("ide");
  76489. pragmas: [],
  76490. messageSends: ["should:raise:", "size", "remove:ifAbsent:", "new", "collectionClass", "sampleNewValue", "yourself"]
  76491. }, function ($methodClass){ return function (){
  76492. var self=this,$self=this;
  76493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76494. return $core.withContext(function($ctx1) {
  76495. //>>excludeEnd("ctx");
  76496. var $1;
  76497. $self._should_raise_((function(){
  76498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76499. return $core.withContext(function($ctx2) {
  76500. //>>excludeEnd("ctx");
  76501. $1=$recv($self._collectionClass())._new();
  76502. $recv($1)._remove_ifAbsent_($self._sampleNewValue(),(function(){
  76503. }));
  76504. return $recv($recv($1)._yourself())._size();
  76505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76506. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76507. //>>excludeEnd("ctx");
  76508. }),$globals.Error);
  76509. return self;
  76510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76511. }, function($ctx1) {$ctx1.fill(self,"testRegression1224",{})});
  76512. //>>excludeEnd("ctx");
  76513. }; }),
  76514. $globals.StringTest);
  76515. $core.addMethod(
  76516. $core.method({
  76517. selector: "testRemoveAll",
  76518. protocol: "tests",
  76519. //>>excludeStart("ide", pragmas.excludeIdeData);
  76520. args: [],
  76521. source: "testRemoveAll\x0a\x09self should: [ self collection removeAll ] raise: Error",
  76522. referencedClasses: ["Error"],
  76523. //>>excludeEnd("ide");
  76524. pragmas: [],
  76525. messageSends: ["should:raise:", "removeAll", "collection"]
  76526. }, function ($methodClass){ return function (){
  76527. var self=this,$self=this;
  76528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76529. return $core.withContext(function($ctx1) {
  76530. //>>excludeEnd("ctx");
  76531. $self._should_raise_((function(){
  76532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76533. return $core.withContext(function($ctx2) {
  76534. //>>excludeEnd("ctx");
  76535. return $recv($self._collection())._removeAll();
  76536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76537. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76538. //>>excludeEnd("ctx");
  76539. }),$globals.Error);
  76540. return self;
  76541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76542. }, function($ctx1) {$ctx1.fill(self,"testRemoveAll",{})});
  76543. //>>excludeEnd("ctx");
  76544. }; }),
  76545. $globals.StringTest);
  76546. $core.addMethod(
  76547. $core.method({
  76548. selector: "testReversed",
  76549. protocol: "tests",
  76550. //>>excludeStart("ide", pragmas.excludeIdeData);
  76551. args: [],
  76552. source: "testReversed\x0a\x09self assert: 'jackiechan' reversed equals: 'nahceikcaj'.",
  76553. referencedClasses: [],
  76554. //>>excludeEnd("ide");
  76555. pragmas: [],
  76556. messageSends: ["assert:equals:", "reversed"]
  76557. }, function ($methodClass){ return function (){
  76558. var self=this,$self=this;
  76559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76560. return $core.withContext(function($ctx1) {
  76561. //>>excludeEnd("ctx");
  76562. $self._assert_equals_("jackiechan"._reversed(),"nahceikcaj");
  76563. return self;
  76564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76565. }, function($ctx1) {$ctx1.fill(self,"testReversed",{})});
  76566. //>>excludeEnd("ctx");
  76567. }; }),
  76568. $globals.StringTest);
  76569. $core.addMethod(
  76570. $core.method({
  76571. selector: "testStreamContents",
  76572. protocol: "tests",
  76573. //>>excludeStart("ide", pragmas.excludeIdeData);
  76574. args: [],
  76575. source: "testStreamContents\x0a\x09self\x0a\x09\x09assert: (String streamContents: [ :aStream |\x0a\x09\x09\x09aStream\x0a\x09\x09\x09\x09nextPutAll: 'hello'; space;\x0a\x09\x09\x09\x09nextPutAll: 'world' ])\x0a\x09\x09equals: 'hello world'",
  76576. referencedClasses: ["String"],
  76577. //>>excludeEnd("ide");
  76578. pragmas: [],
  76579. messageSends: ["assert:equals:", "streamContents:", "nextPutAll:", "space"]
  76580. }, function ($methodClass){ return function (){
  76581. var self=this,$self=this;
  76582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76583. return $core.withContext(function($ctx1) {
  76584. //>>excludeEnd("ctx");
  76585. $self._assert_equals_($recv($globals.String)._streamContents_((function(aStream){
  76586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76587. return $core.withContext(function($ctx2) {
  76588. //>>excludeEnd("ctx");
  76589. [$recv(aStream)._nextPutAll_("hello")
  76590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76591. ,$ctx2.sendIdx["nextPutAll:"]=1
  76592. //>>excludeEnd("ctx");
  76593. ][0];
  76594. $recv(aStream)._space();
  76595. return $recv(aStream)._nextPutAll_("world");
  76596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76597. }, function($ctx2) {$ctx2.fillBlock({aStream:aStream},$ctx1,1)});
  76598. //>>excludeEnd("ctx");
  76599. })),"hello world");
  76600. return self;
  76601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76602. }, function($ctx1) {$ctx1.fill(self,"testStreamContents",{})});
  76603. //>>excludeEnd("ctx");
  76604. }; }),
  76605. $globals.StringTest);
  76606. $core.addMethod(
  76607. $core.method({
  76608. selector: "testSubStrings",
  76609. protocol: "tests",
  76610. //>>excludeStart("ide", pragmas.excludeIdeData);
  76611. args: [],
  76612. source: "testSubStrings\x0a\x09self assert: ('jackiechan' subStrings: 'ie') equals: #( 'jack' 'chan' ).",
  76613. referencedClasses: [],
  76614. //>>excludeEnd("ide");
  76615. pragmas: [],
  76616. messageSends: ["assert:equals:", "subStrings:"]
  76617. }, function ($methodClass){ return function (){
  76618. var self=this,$self=this;
  76619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76620. return $core.withContext(function($ctx1) {
  76621. //>>excludeEnd("ctx");
  76622. $self._assert_equals_("jackiechan"._subStrings_("ie"),["jack", "chan"]);
  76623. return self;
  76624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76625. }, function($ctx1) {$ctx1.fill(self,"testSubStrings",{})});
  76626. //>>excludeEnd("ctx");
  76627. }; }),
  76628. $globals.StringTest);
  76629. $core.addMethod(
  76630. $core.method({
  76631. selector: "testTrim",
  76632. protocol: "tests",
  76633. //>>excludeStart("ide", pragmas.excludeIdeData);
  76634. args: [],
  76635. source: "testTrim\x0a\x09self assert: ' jackie' trimLeft equals: 'jackie'.\x0a\x09self assert: 'jackie ' trimRight equals: 'jackie'.",
  76636. referencedClasses: [],
  76637. //>>excludeEnd("ide");
  76638. pragmas: [],
  76639. messageSends: ["assert:equals:", "trimLeft", "trimRight"]
  76640. }, function ($methodClass){ return function (){
  76641. var self=this,$self=this;
  76642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76643. return $core.withContext(function($ctx1) {
  76644. //>>excludeEnd("ctx");
  76645. [$self._assert_equals_(" jackie"._trimLeft(),"jackie")
  76646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76647. ,$ctx1.sendIdx["assert:equals:"]=1
  76648. //>>excludeEnd("ctx");
  76649. ][0];
  76650. $self._assert_equals_("jackie "._trimRight(),"jackie");
  76651. return self;
  76652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76653. }, function($ctx1) {$ctx1.fill(self,"testTrim",{})});
  76654. //>>excludeEnd("ctx");
  76655. }; }),
  76656. $globals.StringTest);
  76657. $core.addMethod(
  76658. $core.method({
  76659. selector: "testValue",
  76660. protocol: "tests",
  76661. //>>excludeStart("ide", pragmas.excludeIdeData);
  76662. args: [],
  76663. source: "testValue\x0a\x0a\x09self assert: (#asString value: 1) equals: '1'.\x0a\x0a\x09\x22Which (since String and BlockClosure are now polymorphic) enables the nice idiom...\x22\x0a\x09self assert: (#(1 2 3) collect: #asString) equals: #('1' '2' '3')",
  76664. referencedClasses: [],
  76665. //>>excludeEnd("ide");
  76666. pragmas: [],
  76667. messageSends: ["assert:equals:", "value:", "collect:"]
  76668. }, function ($methodClass){ return function (){
  76669. var self=this,$self=this;
  76670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76671. return $core.withContext(function($ctx1) {
  76672. //>>excludeEnd("ctx");
  76673. [$self._assert_equals_("asString"._value_((1)),"1")
  76674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76675. ,$ctx1.sendIdx["assert:equals:"]=1
  76676. //>>excludeEnd("ctx");
  76677. ][0];
  76678. $self._assert_equals_([(1), (2), (3)]._collect_("asString"),["1", "2", "3"]);
  76679. return self;
  76680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76681. }, function($ctx1) {$ctx1.fill(self,"testValue",{})});
  76682. //>>excludeEnd("ctx");
  76683. }; }),
  76684. $globals.StringTest);
  76685. $core.addMethod(
  76686. $core.method({
  76687. selector: "collectionClass",
  76688. protocol: "fixture",
  76689. //>>excludeStart("ide", pragmas.excludeIdeData);
  76690. args: [],
  76691. source: "collectionClass\x0a\x09^ String",
  76692. referencedClasses: ["String"],
  76693. //>>excludeEnd("ide");
  76694. pragmas: [],
  76695. messageSends: []
  76696. }, function ($methodClass){ return function (){
  76697. var self=this,$self=this;
  76698. return $globals.String;
  76699. }; }),
  76700. $globals.StringTest.a$cls);
  76701. $core.addClass("SetTest", $globals.CollectionTest, "Kernel-Tests");
  76702. $core.addMethod(
  76703. $core.method({
  76704. selector: "collection",
  76705. protocol: "fixture",
  76706. //>>excludeStart("ide", pragmas.excludeIdeData);
  76707. args: [],
  76708. source: "collection\x0a\x09^ Set new\x0a\x09\x09add: Smalltalk;\x0a\x09\x09add: nil;\x0a\x09\x09add: 3@3;\x0a\x09\x09add: false;\x0a\x09\x09add: sampleBlock;\x0a\x09\x09yourself",
  76709. referencedClasses: ["Set", "Smalltalk"],
  76710. //>>excludeEnd("ide");
  76711. pragmas: [],
  76712. messageSends: ["add:", "new", "@", "yourself"]
  76713. }, function ($methodClass){ return function (){
  76714. var self=this,$self=this;
  76715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76716. return $core.withContext(function($ctx1) {
  76717. //>>excludeEnd("ctx");
  76718. var $1;
  76719. $1=$recv($globals.Set)._new();
  76720. [$recv($1)._add_($globals.Smalltalk)
  76721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76722. ,$ctx1.sendIdx["add:"]=1
  76723. //>>excludeEnd("ctx");
  76724. ][0];
  76725. [$recv($1)._add_(nil)
  76726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76727. ,$ctx1.sendIdx["add:"]=2
  76728. //>>excludeEnd("ctx");
  76729. ][0];
  76730. [$recv($1)._add_((3).__at((3)))
  76731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76732. ,$ctx1.sendIdx["add:"]=3
  76733. //>>excludeEnd("ctx");
  76734. ][0];
  76735. [$recv($1)._add_(false)
  76736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76737. ,$ctx1.sendIdx["add:"]=4
  76738. //>>excludeEnd("ctx");
  76739. ][0];
  76740. $recv($1)._add_($self.sampleBlock);
  76741. return $recv($1)._yourself();
  76742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76743. }, function($ctx1) {$ctx1.fill(self,"collection",{})});
  76744. //>>excludeEnd("ctx");
  76745. }; }),
  76746. $globals.SetTest);
  76747. $core.addMethod(
  76748. $core.method({
  76749. selector: "collectionOfPrintStrings",
  76750. protocol: "fixture",
  76751. //>>excludeStart("ide", pragmas.excludeIdeData);
  76752. args: [],
  76753. source: "collectionOfPrintStrings\x0a\x09^ Set new\x0a\x09\x09add: 'a SmalltalkImage';\x0a\x09\x09add: 'nil';\x0a\x09\x09add: '3@3';\x0a\x09\x09add: 'false';\x0a\x09\x09add: 'a BlockClosure';\x0a\x09\x09yourself",
  76754. referencedClasses: ["Set"],
  76755. //>>excludeEnd("ide");
  76756. pragmas: [],
  76757. messageSends: ["add:", "new", "yourself"]
  76758. }, function ($methodClass){ return function (){
  76759. var self=this,$self=this;
  76760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76761. return $core.withContext(function($ctx1) {
  76762. //>>excludeEnd("ctx");
  76763. var $1;
  76764. $1=$recv($globals.Set)._new();
  76765. [$recv($1)._add_("a SmalltalkImage")
  76766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76767. ,$ctx1.sendIdx["add:"]=1
  76768. //>>excludeEnd("ctx");
  76769. ][0];
  76770. [$recv($1)._add_("nil")
  76771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76772. ,$ctx1.sendIdx["add:"]=2
  76773. //>>excludeEnd("ctx");
  76774. ][0];
  76775. [$recv($1)._add_("3@3")
  76776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76777. ,$ctx1.sendIdx["add:"]=3
  76778. //>>excludeEnd("ctx");
  76779. ][0];
  76780. [$recv($1)._add_("false")
  76781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76782. ,$ctx1.sendIdx["add:"]=4
  76783. //>>excludeEnd("ctx");
  76784. ][0];
  76785. $recv($1)._add_("a BlockClosure");
  76786. return $recv($1)._yourself();
  76787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76788. }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{})});
  76789. //>>excludeEnd("ctx");
  76790. }; }),
  76791. $globals.SetTest);
  76792. $core.addMethod(
  76793. $core.method({
  76794. selector: "collectionSize",
  76795. protocol: "fixture",
  76796. //>>excludeStart("ide", pragmas.excludeIdeData);
  76797. args: [],
  76798. source: "collectionSize\x0a\x09^ 5",
  76799. referencedClasses: [],
  76800. //>>excludeEnd("ide");
  76801. pragmas: [],
  76802. messageSends: []
  76803. }, function ($methodClass){ return function (){
  76804. var self=this,$self=this;
  76805. return (5);
  76806. }; }),
  76807. $globals.SetTest);
  76808. $core.addMethod(
  76809. $core.method({
  76810. selector: "collectionWithDuplicates",
  76811. protocol: "fixture",
  76812. //>>excludeStart("ide", pragmas.excludeIdeData);
  76813. args: [],
  76814. source: "collectionWithDuplicates\x0a\x09\x22Set has no duplicates\x22\x0a\x09^ self collection add: 0; yourself",
  76815. referencedClasses: [],
  76816. //>>excludeEnd("ide");
  76817. pragmas: [],
  76818. messageSends: ["add:", "collection", "yourself"]
  76819. }, function ($methodClass){ return function (){
  76820. var self=this,$self=this;
  76821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76822. return $core.withContext(function($ctx1) {
  76823. //>>excludeEnd("ctx");
  76824. var $1;
  76825. $1=$self._collection();
  76826. $recv($1)._add_((0));
  76827. return $recv($1)._yourself();
  76828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76829. }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{})});
  76830. //>>excludeEnd("ctx");
  76831. }; }),
  76832. $globals.SetTest);
  76833. $core.addMethod(
  76834. $core.method({
  76835. selector: "collectionWithNewValue",
  76836. protocol: "fixture",
  76837. //>>excludeStart("ide", pragmas.excludeIdeData);
  76838. args: [],
  76839. source: "collectionWithNewValue\x0a\x09^ Set new\x0a\x09\x09add: Smalltalk;\x0a\x09\x09add: nil;\x0a\x09\x09add: 3@3;\x0a\x09\x09add: 'N';\x0a\x09\x09add: false;\x0a\x09\x09add: sampleBlock;\x0a\x09\x09yourself",
  76840. referencedClasses: ["Set", "Smalltalk"],
  76841. //>>excludeEnd("ide");
  76842. pragmas: [],
  76843. messageSends: ["add:", "new", "@", "yourself"]
  76844. }, function ($methodClass){ return function (){
  76845. var self=this,$self=this;
  76846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76847. return $core.withContext(function($ctx1) {
  76848. //>>excludeEnd("ctx");
  76849. var $1;
  76850. $1=$recv($globals.Set)._new();
  76851. [$recv($1)._add_($globals.Smalltalk)
  76852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76853. ,$ctx1.sendIdx["add:"]=1
  76854. //>>excludeEnd("ctx");
  76855. ][0];
  76856. [$recv($1)._add_(nil)
  76857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76858. ,$ctx1.sendIdx["add:"]=2
  76859. //>>excludeEnd("ctx");
  76860. ][0];
  76861. [$recv($1)._add_((3).__at((3)))
  76862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76863. ,$ctx1.sendIdx["add:"]=3
  76864. //>>excludeEnd("ctx");
  76865. ][0];
  76866. [$recv($1)._add_("N")
  76867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76868. ,$ctx1.sendIdx["add:"]=4
  76869. //>>excludeEnd("ctx");
  76870. ][0];
  76871. [$recv($1)._add_(false)
  76872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76873. ,$ctx1.sendIdx["add:"]=5
  76874. //>>excludeEnd("ctx");
  76875. ][0];
  76876. $recv($1)._add_($self.sampleBlock);
  76877. return $recv($1)._yourself();
  76878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76879. }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{})});
  76880. //>>excludeEnd("ctx");
  76881. }; }),
  76882. $globals.SetTest);
  76883. $core.addMethod(
  76884. $core.method({
  76885. selector: "testAddAll",
  76886. protocol: "tests",
  76887. //>>excludeStart("ide", pragmas.excludeIdeData);
  76888. args: [],
  76889. source: "testAddAll\x0a\x09super testAddAll.\x0a\x09self assert: (self collection addAll: self collection; yourself) equals: self collection.\x0a\x09self assert: (self collection addAll: self collectionWithNewValue; yourself) equals: self collectionWithNewValue.\x0a\x09self assert: (self collectionWithNewValue addAll: self collection; yourself) equals: self collectionWithNewValue",
  76890. referencedClasses: [],
  76891. //>>excludeEnd("ide");
  76892. pragmas: [],
  76893. messageSends: ["testAddAll", "assert:equals:", "addAll:", "collection", "yourself", "collectionWithNewValue"]
  76894. }, function ($methodClass){ return function (){
  76895. var self=this,$self=this;
  76896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76897. return $core.withContext(function($ctx1) {
  76898. //>>excludeEnd("ctx");
  76899. var $1,$2,$3;
  76900. [(
  76901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76902. $ctx1.supercall = true,
  76903. //>>excludeEnd("ctx");
  76904. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._testAddAll.call($self))
  76905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76906. ,$ctx1.supercall = false
  76907. //>>excludeEnd("ctx");
  76908. ][0];
  76909. $1=[$self._collection()
  76910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76911. ,$ctx1.sendIdx["collection"]=1
  76912. //>>excludeEnd("ctx");
  76913. ][0];
  76914. [$recv($1)._addAll_([$self._collection()
  76915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76916. ,$ctx1.sendIdx["collection"]=2
  76917. //>>excludeEnd("ctx");
  76918. ][0])
  76919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76920. ,$ctx1.sendIdx["addAll:"]=1
  76921. //>>excludeEnd("ctx");
  76922. ][0];
  76923. [$self._assert_equals_([$recv($1)._yourself()
  76924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76925. ,$ctx1.sendIdx["yourself"]=1
  76926. //>>excludeEnd("ctx");
  76927. ][0],[$self._collection()
  76928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76929. ,$ctx1.sendIdx["collection"]=3
  76930. //>>excludeEnd("ctx");
  76931. ][0])
  76932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76933. ,$ctx1.sendIdx["assert:equals:"]=1
  76934. //>>excludeEnd("ctx");
  76935. ][0];
  76936. $2=[$self._collection()
  76937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76938. ,$ctx1.sendIdx["collection"]=4
  76939. //>>excludeEnd("ctx");
  76940. ][0];
  76941. [$recv($2)._addAll_([$self._collectionWithNewValue()
  76942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76943. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  76944. //>>excludeEnd("ctx");
  76945. ][0])
  76946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76947. ,$ctx1.sendIdx["addAll:"]=2
  76948. //>>excludeEnd("ctx");
  76949. ][0];
  76950. [$self._assert_equals_([$recv($2)._yourself()
  76951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76952. ,$ctx1.sendIdx["yourself"]=2
  76953. //>>excludeEnd("ctx");
  76954. ][0],[$self._collectionWithNewValue()
  76955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76956. ,$ctx1.sendIdx["collectionWithNewValue"]=2
  76957. //>>excludeEnd("ctx");
  76958. ][0])
  76959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76960. ,$ctx1.sendIdx["assert:equals:"]=2
  76961. //>>excludeEnd("ctx");
  76962. ][0];
  76963. $3=[$self._collectionWithNewValue()
  76964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76965. ,$ctx1.sendIdx["collectionWithNewValue"]=3
  76966. //>>excludeEnd("ctx");
  76967. ][0];
  76968. $recv($3)._addAll_($self._collection());
  76969. $self._assert_equals_($recv($3)._yourself(),$self._collectionWithNewValue());
  76970. return self;
  76971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76972. }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
  76973. //>>excludeEnd("ctx");
  76974. }; }),
  76975. $globals.SetTest);
  76976. $core.addMethod(
  76977. $core.method({
  76978. selector: "testAddRemove",
  76979. protocol: "tests",
  76980. //>>excludeStart("ide", pragmas.excludeIdeData);
  76981. args: [],
  76982. source: "testAddRemove\x0a\x09| set |\x0a\x09set := Set new.\x0a\x09\x0a\x09self assert: set isEmpty.\x0a\x0a\x09set add: 3.\x0a\x09self assert: (set includes: 3).\x0a\x0a\x09set add: 5.\x0a\x09self assert: (set includes: 5).\x0a\x0a\x09set remove: 3.\x0a\x09self deny: (set includes: 3)",
  76983. referencedClasses: ["Set"],
  76984. //>>excludeEnd("ide");
  76985. pragmas: [],
  76986. messageSends: ["new", "assert:", "isEmpty", "add:", "includes:", "remove:", "deny:"]
  76987. }, function ($methodClass){ return function (){
  76988. var self=this,$self=this;
  76989. var set;
  76990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76991. return $core.withContext(function($ctx1) {
  76992. //>>excludeEnd("ctx");
  76993. set=$recv($globals.Set)._new();
  76994. [$self._assert_($recv(set)._isEmpty())
  76995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76996. ,$ctx1.sendIdx["assert:"]=1
  76997. //>>excludeEnd("ctx");
  76998. ][0];
  76999. [$recv(set)._add_((3))
  77000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77001. ,$ctx1.sendIdx["add:"]=1
  77002. //>>excludeEnd("ctx");
  77003. ][0];
  77004. [$self._assert_([$recv(set)._includes_((3))
  77005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77006. ,$ctx1.sendIdx["includes:"]=1
  77007. //>>excludeEnd("ctx");
  77008. ][0])
  77009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77010. ,$ctx1.sendIdx["assert:"]=2
  77011. //>>excludeEnd("ctx");
  77012. ][0];
  77013. $recv(set)._add_((5));
  77014. $self._assert_([$recv(set)._includes_((5))
  77015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77016. ,$ctx1.sendIdx["includes:"]=2
  77017. //>>excludeEnd("ctx");
  77018. ][0]);
  77019. $recv(set)._remove_((3));
  77020. $self._deny_($recv(set)._includes_((3)));
  77021. return self;
  77022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77023. }, function($ctx1) {$ctx1.fill(self,"testAddRemove",{set:set})});
  77024. //>>excludeEnd("ctx");
  77025. }; }),
  77026. $globals.SetTest);
  77027. $core.addMethod(
  77028. $core.method({
  77029. selector: "testAt",
  77030. protocol: "tests",
  77031. //>>excludeStart("ide", pragmas.excludeIdeData);
  77032. args: [],
  77033. source: "testAt\x0a\x09self should: [ Set new at: 1 put: 2 ] raise: Error",
  77034. referencedClasses: ["Set", "Error"],
  77035. //>>excludeEnd("ide");
  77036. pragmas: [],
  77037. messageSends: ["should:raise:", "at:put:", "new"]
  77038. }, function ($methodClass){ return function (){
  77039. var self=this,$self=this;
  77040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77041. return $core.withContext(function($ctx1) {
  77042. //>>excludeEnd("ctx");
  77043. $self._should_raise_((function(){
  77044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77045. return $core.withContext(function($ctx2) {
  77046. //>>excludeEnd("ctx");
  77047. return $recv($recv($globals.Set)._new())._at_put_((1),(2));
  77048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77049. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  77050. //>>excludeEnd("ctx");
  77051. }),$globals.Error);
  77052. return self;
  77053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77054. }, function($ctx1) {$ctx1.fill(self,"testAt",{})});
  77055. //>>excludeEnd("ctx");
  77056. }; }),
  77057. $globals.SetTest);
  77058. $core.addMethod(
  77059. $core.method({
  77060. selector: "testCollect",
  77061. protocol: "tests",
  77062. //>>excludeStart("ide", pragmas.excludeIdeData);
  77063. args: [],
  77064. source: "testCollect\x0a\x09super testCollect.\x0a\x09self assert: (#(5 6 8) asSet collect: [ :x | x \x5c\x5c 3 ]) equals: #(0 2) asSet",
  77065. referencedClasses: [],
  77066. //>>excludeEnd("ide");
  77067. pragmas: [],
  77068. messageSends: ["testCollect", "assert:equals:", "collect:", "asSet", "\x5c\x5c"]
  77069. }, function ($methodClass){ return function (){
  77070. var self=this,$self=this;
  77071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77072. return $core.withContext(function($ctx1) {
  77073. //>>excludeEnd("ctx");
  77074. [(
  77075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77076. $ctx1.supercall = true,
  77077. //>>excludeEnd("ctx");
  77078. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._testCollect.call($self))
  77079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77080. ,$ctx1.supercall = false
  77081. //>>excludeEnd("ctx");
  77082. ][0];
  77083. $self._assert_equals_($recv([[(5), (6), (8)]._asSet()
  77084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77085. ,$ctx1.sendIdx["asSet"]=1
  77086. //>>excludeEnd("ctx");
  77087. ][0])._collect_((function(x){
  77088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77089. return $core.withContext(function($ctx2) {
  77090. //>>excludeEnd("ctx");
  77091. return $recv(x).__backslash_backslash((3));
  77092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77093. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  77094. //>>excludeEnd("ctx");
  77095. })),[(0), (2)]._asSet());
  77096. return self;
  77097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77098. }, function($ctx1) {$ctx1.fill(self,"testCollect",{})});
  77099. //>>excludeEnd("ctx");
  77100. }; }),
  77101. $globals.SetTest);
  77102. $core.addMethod(
  77103. $core.method({
  77104. selector: "testComparing",
  77105. protocol: "tests",
  77106. //>>excludeStart("ide", pragmas.excludeIdeData);
  77107. args: [],
  77108. source: "testComparing\x0a\x09self assert: #(0 2) asSet equals: #(0 2) asSet.\x0a\x09self assert: #(2 0) asSet equals: #(0 2) asSet.\x0a\x09self deny: #(0 2 3) asSet = #(0 2) asSet.\x0a\x09self deny: #(1 2) asSet = #(0 2) asSet",
  77109. referencedClasses: [],
  77110. //>>excludeEnd("ide");
  77111. pragmas: [],
  77112. messageSends: ["assert:equals:", "asSet", "deny:", "="]
  77113. }, function ($methodClass){ return function (){
  77114. var self=this,$self=this;
  77115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77116. return $core.withContext(function($ctx1) {
  77117. //>>excludeEnd("ctx");
  77118. [$self._assert_equals_([[(0), (2)]._asSet()
  77119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77120. ,$ctx1.sendIdx["asSet"]=1
  77121. //>>excludeEnd("ctx");
  77122. ][0],[[(0), (2)]._asSet()
  77123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77124. ,$ctx1.sendIdx["asSet"]=2
  77125. //>>excludeEnd("ctx");
  77126. ][0])
  77127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77128. ,$ctx1.sendIdx["assert:equals:"]=1
  77129. //>>excludeEnd("ctx");
  77130. ][0];
  77131. $self._assert_equals_([[(2), (0)]._asSet()
  77132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77133. ,$ctx1.sendIdx["asSet"]=3
  77134. //>>excludeEnd("ctx");
  77135. ][0],[[(0), (2)]._asSet()
  77136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77137. ,$ctx1.sendIdx["asSet"]=4
  77138. //>>excludeEnd("ctx");
  77139. ][0]);
  77140. [$self._deny_([$recv([[(0), (2), (3)]._asSet()
  77141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77142. ,$ctx1.sendIdx["asSet"]=5
  77143. //>>excludeEnd("ctx");
  77144. ][0]).__eq([[(0), (2)]._asSet()
  77145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77146. ,$ctx1.sendIdx["asSet"]=6
  77147. //>>excludeEnd("ctx");
  77148. ][0])
  77149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77150. ,$ctx1.sendIdx["="]=1
  77151. //>>excludeEnd("ctx");
  77152. ][0])
  77153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77154. ,$ctx1.sendIdx["deny:"]=1
  77155. //>>excludeEnd("ctx");
  77156. ][0];
  77157. $self._deny_($recv([[(1), (2)]._asSet()
  77158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77159. ,$ctx1.sendIdx["asSet"]=7
  77160. //>>excludeEnd("ctx");
  77161. ][0]).__eq([(0), (2)]._asSet()));
  77162. return self;
  77163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77164. }, function($ctx1) {$ctx1.fill(self,"testComparing",{})});
  77165. //>>excludeEnd("ctx");
  77166. }; }),
  77167. $globals.SetTest);
  77168. $core.addMethod(
  77169. $core.method({
  77170. selector: "testPrintString",
  77171. protocol: "tests",
  77172. //>>excludeStart("ide", pragmas.excludeIdeData);
  77173. args: [],
  77174. source: "testPrintString\x0a\x09| set |\x0a\x09set := Set new.\x0a\x09self assert: set printString equals: 'a Set ()'.\x0a\x09set add: 1; add: 3.\x0a\x09self assert: set printString equals: 'a Set (1 3)'.\x0a\x09set add: 'foo'.\x0a\x09self assert: set printString equals: 'a Set (1 3 ''foo'')'.\x0a\x09set remove: 1; remove: 3.\x0a\x09self assert: set printString equals: 'a Set (''foo'')'.\x0a\x09set add: 3.\x0a\x09self assert: set printString equals: 'a Set (3 ''foo'')'.\x0a\x09set add: 3.\x0a\x09self assert: set printString equals: 'a Set (3 ''foo'')'",
  77175. referencedClasses: ["Set"],
  77176. //>>excludeEnd("ide");
  77177. pragmas: [],
  77178. messageSends: ["new", "assert:equals:", "printString", "add:", "remove:"]
  77179. }, function ($methodClass){ return function (){
  77180. var self=this,$self=this;
  77181. var set;
  77182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77183. return $core.withContext(function($ctx1) {
  77184. //>>excludeEnd("ctx");
  77185. var $1,$2;
  77186. set=$recv($globals.Set)._new();
  77187. [$self._assert_equals_([$recv(set)._printString()
  77188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77189. ,$ctx1.sendIdx["printString"]=1
  77190. //>>excludeEnd("ctx");
  77191. ][0],"a Set ()")
  77192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77193. ,$ctx1.sendIdx["assert:equals:"]=1
  77194. //>>excludeEnd("ctx");
  77195. ][0];
  77196. $1=set;
  77197. [$recv($1)._add_((1))
  77198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77199. ,$ctx1.sendIdx["add:"]=1
  77200. //>>excludeEnd("ctx");
  77201. ][0];
  77202. [$recv($1)._add_((3))
  77203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77204. ,$ctx1.sendIdx["add:"]=2
  77205. //>>excludeEnd("ctx");
  77206. ][0];
  77207. [$self._assert_equals_([$recv(set)._printString()
  77208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77209. ,$ctx1.sendIdx["printString"]=2
  77210. //>>excludeEnd("ctx");
  77211. ][0],"a Set (1 3)")
  77212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77213. ,$ctx1.sendIdx["assert:equals:"]=2
  77214. //>>excludeEnd("ctx");
  77215. ][0];
  77216. [$recv(set)._add_("foo")
  77217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77218. ,$ctx1.sendIdx["add:"]=3
  77219. //>>excludeEnd("ctx");
  77220. ][0];
  77221. [$self._assert_equals_([$recv(set)._printString()
  77222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77223. ,$ctx1.sendIdx["printString"]=3
  77224. //>>excludeEnd("ctx");
  77225. ][0],"a Set (1 3 'foo')")
  77226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77227. ,$ctx1.sendIdx["assert:equals:"]=3
  77228. //>>excludeEnd("ctx");
  77229. ][0];
  77230. $2=set;
  77231. [$recv($2)._remove_((1))
  77232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77233. ,$ctx1.sendIdx["remove:"]=1
  77234. //>>excludeEnd("ctx");
  77235. ][0];
  77236. $recv($2)._remove_((3));
  77237. [$self._assert_equals_([$recv(set)._printString()
  77238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77239. ,$ctx1.sendIdx["printString"]=4
  77240. //>>excludeEnd("ctx");
  77241. ][0],"a Set ('foo')")
  77242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77243. ,$ctx1.sendIdx["assert:equals:"]=4
  77244. //>>excludeEnd("ctx");
  77245. ][0];
  77246. [$recv(set)._add_((3))
  77247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77248. ,$ctx1.sendIdx["add:"]=4
  77249. //>>excludeEnd("ctx");
  77250. ][0];
  77251. [$self._assert_equals_([$recv(set)._printString()
  77252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77253. ,$ctx1.sendIdx["printString"]=5
  77254. //>>excludeEnd("ctx");
  77255. ][0],"a Set (3 'foo')")
  77256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77257. ,$ctx1.sendIdx["assert:equals:"]=5
  77258. //>>excludeEnd("ctx");
  77259. ][0];
  77260. $recv(set)._add_((3));
  77261. $self._assert_equals_($recv(set)._printString(),"a Set (3 'foo')");
  77262. return self;
  77263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77264. }, function($ctx1) {$ctx1.fill(self,"testPrintString",{set:set})});
  77265. //>>excludeEnd("ctx");
  77266. }; }),
  77267. $globals.SetTest);
  77268. $core.addMethod(
  77269. $core.method({
  77270. selector: "testRegression1225",
  77271. protocol: "tests",
  77272. //>>excludeStart("ide", pragmas.excludeIdeData);
  77273. args: [],
  77274. source: "testRegression1225\x0a\x09self assert: (#(1 2 3) asSet add: 3) equals: 3",
  77275. referencedClasses: [],
  77276. //>>excludeEnd("ide");
  77277. pragmas: [],
  77278. messageSends: ["assert:equals:", "add:", "asSet"]
  77279. }, function ($methodClass){ return function (){
  77280. var self=this,$self=this;
  77281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77282. return $core.withContext(function($ctx1) {
  77283. //>>excludeEnd("ctx");
  77284. $self._assert_equals_($recv([(1), (2), (3)]._asSet())._add_((3)),(3));
  77285. return self;
  77286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77287. }, function($ctx1) {$ctx1.fill(self,"testRegression1225",{})});
  77288. //>>excludeEnd("ctx");
  77289. }; }),
  77290. $globals.SetTest);
  77291. $core.addMethod(
  77292. $core.method({
  77293. selector: "testRegression1226",
  77294. protocol: "tests",
  77295. //>>excludeStart("ide", pragmas.excludeIdeData);
  77296. args: [],
  77297. source: "testRegression1226\x0a\x09self assert: (#(1 2 3) asSet remove: 3) equals: 3",
  77298. referencedClasses: [],
  77299. //>>excludeEnd("ide");
  77300. pragmas: [],
  77301. messageSends: ["assert:equals:", "remove:", "asSet"]
  77302. }, function ($methodClass){ return function (){
  77303. var self=this,$self=this;
  77304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77305. return $core.withContext(function($ctx1) {
  77306. //>>excludeEnd("ctx");
  77307. $self._assert_equals_($recv([(1), (2), (3)]._asSet())._remove_((3)),(3));
  77308. return self;
  77309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77310. }, function($ctx1) {$ctx1.fill(self,"testRegression1226",{})});
  77311. //>>excludeEnd("ctx");
  77312. }; }),
  77313. $globals.SetTest);
  77314. $core.addMethod(
  77315. $core.method({
  77316. selector: "testRegression1227",
  77317. protocol: "tests",
  77318. //>>excludeStart("ide", pragmas.excludeIdeData);
  77319. args: [],
  77320. source: "testRegression1227\x0a\x09self assert: (#(1 2 3) asSet remove: 4 ifAbsent: [5]) equals: 5",
  77321. referencedClasses: [],
  77322. //>>excludeEnd("ide");
  77323. pragmas: [],
  77324. messageSends: ["assert:equals:", "remove:ifAbsent:", "asSet"]
  77325. }, function ($methodClass){ return function (){
  77326. var self=this,$self=this;
  77327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77328. return $core.withContext(function($ctx1) {
  77329. //>>excludeEnd("ctx");
  77330. $self._assert_equals_($recv([(1), (2), (3)]._asSet())._remove_ifAbsent_((4),(function(){
  77331. return (5);
  77332. })),(5));
  77333. return self;
  77334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77335. }, function($ctx1) {$ctx1.fill(self,"testRegression1227",{})});
  77336. //>>excludeEnd("ctx");
  77337. }; }),
  77338. $globals.SetTest);
  77339. $core.addMethod(
  77340. $core.method({
  77341. selector: "testRegression1228",
  77342. protocol: "tests",
  77343. //>>excludeStart("ide", pragmas.excludeIdeData);
  77344. args: [],
  77345. source: "testRegression1228\x0a\x09self should: [#(1 2 3) asSet remove: 4] raise: Error",
  77346. referencedClasses: ["Error"],
  77347. //>>excludeEnd("ide");
  77348. pragmas: [],
  77349. messageSends: ["should:raise:", "remove:", "asSet"]
  77350. }, function ($methodClass){ return function (){
  77351. var self=this,$self=this;
  77352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77353. return $core.withContext(function($ctx1) {
  77354. //>>excludeEnd("ctx");
  77355. $self._should_raise_((function(){
  77356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77357. return $core.withContext(function($ctx2) {
  77358. //>>excludeEnd("ctx");
  77359. return $recv([(1), (2), (3)]._asSet())._remove_((4));
  77360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77361. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  77362. //>>excludeEnd("ctx");
  77363. }),$globals.Error);
  77364. return self;
  77365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77366. }, function($ctx1) {$ctx1.fill(self,"testRegression1228",{})});
  77367. //>>excludeEnd("ctx");
  77368. }; }),
  77369. $globals.SetTest);
  77370. $core.addMethod(
  77371. $core.method({
  77372. selector: "testRegression1245",
  77373. protocol: "tests",
  77374. //>>excludeStart("ide", pragmas.excludeIdeData);
  77375. args: [],
  77376. source: "testRegression1245\x0a\x09self assert: ({Object. String} asSet remove: String) equals: String",
  77377. referencedClasses: ["Object", "String"],
  77378. //>>excludeEnd("ide");
  77379. pragmas: [],
  77380. messageSends: ["assert:equals:", "remove:", "asSet"]
  77381. }, function ($methodClass){ return function (){
  77382. var self=this,$self=this;
  77383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77384. return $core.withContext(function($ctx1) {
  77385. //>>excludeEnd("ctx");
  77386. $self._assert_equals_($recv($recv([$globals.Object,$globals.String])._asSet())._remove_($globals.String),$globals.String);
  77387. return self;
  77388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77389. }, function($ctx1) {$ctx1.fill(self,"testRegression1245",{})});
  77390. //>>excludeEnd("ctx");
  77391. }; }),
  77392. $globals.SetTest);
  77393. $core.addMethod(
  77394. $core.method({
  77395. selector: "testUnboxedObjects",
  77396. protocol: "tests",
  77397. //>>excludeStart("ide", pragmas.excludeIdeData);
  77398. args: [],
  77399. source: "testUnboxedObjects\x0a\x09self assert: {'foo' yourself. 'foo' yourself} asSet asArray equals: #('foo')",
  77400. referencedClasses: [],
  77401. //>>excludeEnd("ide");
  77402. pragmas: [],
  77403. messageSends: ["assert:equals:", "asArray", "asSet", "yourself"]
  77404. }, function ($methodClass){ return function (){
  77405. var self=this,$self=this;
  77406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77407. return $core.withContext(function($ctx1) {
  77408. //>>excludeEnd("ctx");
  77409. $self._assert_equals_($recv($recv([["foo"._yourself()
  77410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77411. ,$ctx1.sendIdx["yourself"]=1
  77412. //>>excludeEnd("ctx");
  77413. ][0],"foo"._yourself()])._asSet())._asArray(),["foo"]);
  77414. return self;
  77415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77416. }, function($ctx1) {$ctx1.fill(self,"testUnboxedObjects",{})});
  77417. //>>excludeEnd("ctx");
  77418. }; }),
  77419. $globals.SetTest);
  77420. $core.addMethod(
  77421. $core.method({
  77422. selector: "testUnicity",
  77423. protocol: "tests",
  77424. //>>excludeStart("ide", pragmas.excludeIdeData);
  77425. args: [],
  77426. source: "testUnicity\x0a\x09| set |\x0a\x09set := Set new.\x0a\x09set add: 21.\x0a\x09set add: 'hello'.\x0a\x0a\x09set add: 21.\x0a\x09self assert: set size equals: 2.\x0a\x09\x0a\x09set add: 'hello'.\x0a\x09self assert: set size equals: 2.\x0a\x0a\x09self assert: set asArray equals: #(21 'hello')",
  77427. referencedClasses: ["Set"],
  77428. //>>excludeEnd("ide");
  77429. pragmas: [],
  77430. messageSends: ["new", "add:", "assert:equals:", "size", "asArray"]
  77431. }, function ($methodClass){ return function (){
  77432. var self=this,$self=this;
  77433. var set;
  77434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77435. return $core.withContext(function($ctx1) {
  77436. //>>excludeEnd("ctx");
  77437. set=$recv($globals.Set)._new();
  77438. [$recv(set)._add_((21))
  77439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77440. ,$ctx1.sendIdx["add:"]=1
  77441. //>>excludeEnd("ctx");
  77442. ][0];
  77443. [$recv(set)._add_("hello")
  77444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77445. ,$ctx1.sendIdx["add:"]=2
  77446. //>>excludeEnd("ctx");
  77447. ][0];
  77448. [$recv(set)._add_((21))
  77449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77450. ,$ctx1.sendIdx["add:"]=3
  77451. //>>excludeEnd("ctx");
  77452. ][0];
  77453. [$self._assert_equals_([$recv(set)._size()
  77454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77455. ,$ctx1.sendIdx["size"]=1
  77456. //>>excludeEnd("ctx");
  77457. ][0],(2))
  77458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77459. ,$ctx1.sendIdx["assert:equals:"]=1
  77460. //>>excludeEnd("ctx");
  77461. ][0];
  77462. $recv(set)._add_("hello");
  77463. [$self._assert_equals_($recv(set)._size(),(2))
  77464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77465. ,$ctx1.sendIdx["assert:equals:"]=2
  77466. //>>excludeEnd("ctx");
  77467. ][0];
  77468. $self._assert_equals_($recv(set)._asArray(),[(21), "hello"]);
  77469. return self;
  77470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77471. }, function($ctx1) {$ctx1.fill(self,"testUnicity",{set:set})});
  77472. //>>excludeEnd("ctx");
  77473. }; }),
  77474. $globals.SetTest);
  77475. $core.addMethod(
  77476. $core.method({
  77477. selector: "testUnorderedComma",
  77478. protocol: "tests",
  77479. //>>excludeStart("ide", pragmas.excludeIdeData);
  77480. args: [],
  77481. source: "testUnorderedComma\x0a\x09self assert: self collection, self collection equals: self collection.\x0a\x09self assert: self sampleNewValueAsCollection, self collection equals: self collectionWithNewValue.\x0a\x09self assert: self collection, self collectionWithNewValue equals: self collectionWithNewValue.\x0a\x09self assert: self collectionWithNewValue, self collection equals: self collectionWithNewValue",
  77482. referencedClasses: [],
  77483. //>>excludeEnd("ide");
  77484. pragmas: [],
  77485. messageSends: ["assert:equals:", ",", "collection", "sampleNewValueAsCollection", "collectionWithNewValue"]
  77486. }, function ($methodClass){ return function (){
  77487. var self=this,$self=this;
  77488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77489. return $core.withContext(function($ctx1) {
  77490. //>>excludeEnd("ctx");
  77491. [$self._assert_equals_([$recv([$self._collection()
  77492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77493. ,$ctx1.sendIdx["collection"]=1
  77494. //>>excludeEnd("ctx");
  77495. ][0]).__comma([$self._collection()
  77496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77497. ,$ctx1.sendIdx["collection"]=2
  77498. //>>excludeEnd("ctx");
  77499. ][0])
  77500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77501. ,$ctx1.sendIdx[","]=1
  77502. //>>excludeEnd("ctx");
  77503. ][0],[$self._collection()
  77504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77505. ,$ctx1.sendIdx["collection"]=3
  77506. //>>excludeEnd("ctx");
  77507. ][0])
  77508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77509. ,$ctx1.sendIdx["assert:equals:"]=1
  77510. //>>excludeEnd("ctx");
  77511. ][0];
  77512. [$self._assert_equals_([$recv($self._sampleNewValueAsCollection()).__comma([$self._collection()
  77513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77514. ,$ctx1.sendIdx["collection"]=4
  77515. //>>excludeEnd("ctx");
  77516. ][0])
  77517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77518. ,$ctx1.sendIdx[","]=2
  77519. //>>excludeEnd("ctx");
  77520. ][0],[$self._collectionWithNewValue()
  77521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77522. ,$ctx1.sendIdx["collectionWithNewValue"]=1
  77523. //>>excludeEnd("ctx");
  77524. ][0])
  77525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77526. ,$ctx1.sendIdx["assert:equals:"]=2
  77527. //>>excludeEnd("ctx");
  77528. ][0];
  77529. [$self._assert_equals_([$recv([$self._collection()
  77530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77531. ,$ctx1.sendIdx["collection"]=5
  77532. //>>excludeEnd("ctx");
  77533. ][0]).__comma([$self._collectionWithNewValue()
  77534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77535. ,$ctx1.sendIdx["collectionWithNewValue"]=2
  77536. //>>excludeEnd("ctx");
  77537. ][0])
  77538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77539. ,$ctx1.sendIdx[","]=3
  77540. //>>excludeEnd("ctx");
  77541. ][0],[$self._collectionWithNewValue()
  77542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77543. ,$ctx1.sendIdx["collectionWithNewValue"]=3
  77544. //>>excludeEnd("ctx");
  77545. ][0])
  77546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77547. ,$ctx1.sendIdx["assert:equals:"]=3
  77548. //>>excludeEnd("ctx");
  77549. ][0];
  77550. $self._assert_equals_($recv([$self._collectionWithNewValue()
  77551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77552. ,$ctx1.sendIdx["collectionWithNewValue"]=4
  77553. //>>excludeEnd("ctx");
  77554. ][0]).__comma($self._collection()),$self._collectionWithNewValue());
  77555. return self;
  77556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77557. }, function($ctx1) {$ctx1.fill(self,"testUnorderedComma",{})});
  77558. //>>excludeEnd("ctx");
  77559. }; }),
  77560. $globals.SetTest);
  77561. $core.addMethod(
  77562. $core.method({
  77563. selector: "collectionClass",
  77564. protocol: "fixture",
  77565. //>>excludeStart("ide", pragmas.excludeIdeData);
  77566. args: [],
  77567. source: "collectionClass\x0a\x09^ Set",
  77568. referencedClasses: ["Set"],
  77569. //>>excludeEnd("ide");
  77570. pragmas: [],
  77571. messageSends: []
  77572. }, function ($methodClass){ return function (){
  77573. var self=this,$self=this;
  77574. return $globals.Set;
  77575. }; }),
  77576. $globals.SetTest.a$cls);
  77577. $core.addClass("ConsoleTranscriptTest", $globals.TestCase, "Kernel-Tests");
  77578. $core.addMethod(
  77579. $core.method({
  77580. selector: "testShow",
  77581. protocol: "tests",
  77582. //>>excludeStart("ide", pragmas.excludeIdeData);
  77583. args: [],
  77584. source: "testShow\x0a| originalTranscript |\x0aoriginalTranscript := Transcript current.\x0aTranscript register: ConsoleTranscript new.\x0a\x0aself shouldnt: [ Transcript show: 'Hello console!' ] raise: Error.\x0aself shouldnt: [ Transcript show: console ] raise: Error.\x0a\x0aTranscript register: originalTranscript.",
  77585. referencedClasses: ["Transcript", "ConsoleTranscript", "Error"],
  77586. //>>excludeEnd("ide");
  77587. pragmas: [],
  77588. messageSends: ["current", "register:", "new", "shouldnt:raise:", "show:"]
  77589. }, function ($methodClass){ return function (){
  77590. var self=this,$self=this;
  77591. var originalTranscript;
  77592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77593. return $core.withContext(function($ctx1) {
  77594. //>>excludeEnd("ctx");
  77595. originalTranscript=$recv($globals.Transcript)._current();
  77596. [$recv($globals.Transcript)._register_($recv($globals.ConsoleTranscript)._new())
  77597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77598. ,$ctx1.sendIdx["register:"]=1
  77599. //>>excludeEnd("ctx");
  77600. ][0];
  77601. [$self._shouldnt_raise_((function(){
  77602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77603. return $core.withContext(function($ctx2) {
  77604. //>>excludeEnd("ctx");
  77605. return [$recv($globals.Transcript)._show_("Hello console!")
  77606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77607. ,$ctx2.sendIdx["show:"]=1
  77608. //>>excludeEnd("ctx");
  77609. ][0];
  77610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77611. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  77612. //>>excludeEnd("ctx");
  77613. }),$globals.Error)
  77614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77615. ,$ctx1.sendIdx["shouldnt:raise:"]=1
  77616. //>>excludeEnd("ctx");
  77617. ][0];
  77618. $self._shouldnt_raise_((function(){
  77619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77620. return $core.withContext(function($ctx2) {
  77621. //>>excludeEnd("ctx");
  77622. return $recv($globals.Transcript)._show_(console);
  77623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77624. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  77625. //>>excludeEnd("ctx");
  77626. }),$globals.Error);
  77627. $recv($globals.Transcript)._register_(originalTranscript);
  77628. return self;
  77629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77630. }, function($ctx1) {$ctx1.fill(self,"testShow",{originalTranscript:originalTranscript})});
  77631. //>>excludeEnd("ctx");
  77632. }; }),
  77633. $globals.ConsoleTranscriptTest);
  77634. $core.addClass("DateTest", $globals.TestCase, "Kernel-Tests");
  77635. $core.addMethod(
  77636. $core.method({
  77637. selector: "testEquality",
  77638. protocol: "tests",
  77639. //>>excludeStart("ide", pragmas.excludeIdeData);
  77640. args: [],
  77641. source: "testEquality\x0a\x09| now |\x0a\x09now := Date new.\x0a\x0a\x09self assert: now = now.\x0a\x0a\x09self deny: now = (Date fromMilliseconds: 0).\x0a\x0a\x09self assert: (Date fromMilliseconds: 12345678) = (Date fromMilliseconds: 12345678).\x0a\x09self assert: now = (Date fromMilliseconds: now asMilliseconds).\x0a\x09self assert: (Date fromMilliseconds: now asMilliseconds) = now",
  77642. referencedClasses: ["Date"],
  77643. //>>excludeEnd("ide");
  77644. pragmas: [],
  77645. messageSends: ["new", "assert:", "=", "deny:", "fromMilliseconds:", "asMilliseconds"]
  77646. }, function ($methodClass){ return function (){
  77647. var self=this,$self=this;
  77648. var now;
  77649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77650. return $core.withContext(function($ctx1) {
  77651. //>>excludeEnd("ctx");
  77652. now=$recv($globals.Date)._new();
  77653. [$self._assert_([$recv(now).__eq(now)
  77654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77655. ,$ctx1.sendIdx["="]=1
  77656. //>>excludeEnd("ctx");
  77657. ][0])
  77658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77659. ,$ctx1.sendIdx["assert:"]=1
  77660. //>>excludeEnd("ctx");
  77661. ][0];
  77662. $self._deny_([$recv(now).__eq([$recv($globals.Date)._fromMilliseconds_((0))
  77663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77664. ,$ctx1.sendIdx["fromMilliseconds:"]=1
  77665. //>>excludeEnd("ctx");
  77666. ][0])
  77667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77668. ,$ctx1.sendIdx["="]=2
  77669. //>>excludeEnd("ctx");
  77670. ][0]);
  77671. [$self._assert_([$recv([$recv($globals.Date)._fromMilliseconds_((12345678))
  77672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77673. ,$ctx1.sendIdx["fromMilliseconds:"]=2
  77674. //>>excludeEnd("ctx");
  77675. ][0]).__eq([$recv($globals.Date)._fromMilliseconds_((12345678))
  77676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77677. ,$ctx1.sendIdx["fromMilliseconds:"]=3
  77678. //>>excludeEnd("ctx");
  77679. ][0])
  77680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77681. ,$ctx1.sendIdx["="]=3
  77682. //>>excludeEnd("ctx");
  77683. ][0])
  77684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77685. ,$ctx1.sendIdx["assert:"]=2
  77686. //>>excludeEnd("ctx");
  77687. ][0];
  77688. [$self._assert_([$recv(now).__eq([$recv($globals.Date)._fromMilliseconds_([$recv(now)._asMilliseconds()
  77689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77690. ,$ctx1.sendIdx["asMilliseconds"]=1
  77691. //>>excludeEnd("ctx");
  77692. ][0])
  77693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77694. ,$ctx1.sendIdx["fromMilliseconds:"]=4
  77695. //>>excludeEnd("ctx");
  77696. ][0])
  77697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77698. ,$ctx1.sendIdx["="]=4
  77699. //>>excludeEnd("ctx");
  77700. ][0])
  77701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77702. ,$ctx1.sendIdx["assert:"]=3
  77703. //>>excludeEnd("ctx");
  77704. ][0];
  77705. $self._assert_($recv($recv($globals.Date)._fromMilliseconds_($recv(now)._asMilliseconds())).__eq(now));
  77706. return self;
  77707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77708. }, function($ctx1) {$ctx1.fill(self,"testEquality",{now:now})});
  77709. //>>excludeEnd("ctx");
  77710. }; }),
  77711. $globals.DateTest);
  77712. $core.addMethod(
  77713. $core.method({
  77714. selector: "testIdentity",
  77715. protocol: "tests",
  77716. //>>excludeStart("ide", pragmas.excludeIdeData);
  77717. args: [],
  77718. source: "testIdentity\x0a\x09| now |\x0a\x09now := Date new.\x0a\x0a\x09self assert: now == now.\x0a\x0a\x09self deny: now == (Date fromMilliseconds: 0).\x0a\x0a\x09self deny: (Date fromMilliseconds: 12345678) == (Date fromMilliseconds: 12345678).\x0a\x09self deny: now == (Date fromMilliseconds: now asMilliseconds).\x0a\x09self deny: (Date fromMilliseconds: now asMilliseconds) == now",
  77719. referencedClasses: ["Date"],
  77720. //>>excludeEnd("ide");
  77721. pragmas: [],
  77722. messageSends: ["new", "assert:", "==", "deny:", "fromMilliseconds:", "asMilliseconds"]
  77723. }, function ($methodClass){ return function (){
  77724. var self=this,$self=this;
  77725. var now;
  77726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77727. return $core.withContext(function($ctx1) {
  77728. //>>excludeEnd("ctx");
  77729. now=$recv($globals.Date)._new();
  77730. $self._assert_([$recv(now).__eq_eq(now)
  77731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77732. ,$ctx1.sendIdx["=="]=1
  77733. //>>excludeEnd("ctx");
  77734. ][0]);
  77735. [$self._deny_([$recv(now).__eq_eq([$recv($globals.Date)._fromMilliseconds_((0))
  77736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77737. ,$ctx1.sendIdx["fromMilliseconds:"]=1
  77738. //>>excludeEnd("ctx");
  77739. ][0])
  77740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77741. ,$ctx1.sendIdx["=="]=2
  77742. //>>excludeEnd("ctx");
  77743. ][0])
  77744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77745. ,$ctx1.sendIdx["deny:"]=1
  77746. //>>excludeEnd("ctx");
  77747. ][0];
  77748. [$self._deny_([$recv([$recv($globals.Date)._fromMilliseconds_((12345678))
  77749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77750. ,$ctx1.sendIdx["fromMilliseconds:"]=2
  77751. //>>excludeEnd("ctx");
  77752. ][0]).__eq_eq([$recv($globals.Date)._fromMilliseconds_((12345678))
  77753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77754. ,$ctx1.sendIdx["fromMilliseconds:"]=3
  77755. //>>excludeEnd("ctx");
  77756. ][0])
  77757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77758. ,$ctx1.sendIdx["=="]=3
  77759. //>>excludeEnd("ctx");
  77760. ][0])
  77761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77762. ,$ctx1.sendIdx["deny:"]=2
  77763. //>>excludeEnd("ctx");
  77764. ][0];
  77765. [$self._deny_([$recv(now).__eq_eq([$recv($globals.Date)._fromMilliseconds_([$recv(now)._asMilliseconds()
  77766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77767. ,$ctx1.sendIdx["asMilliseconds"]=1
  77768. //>>excludeEnd("ctx");
  77769. ][0])
  77770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77771. ,$ctx1.sendIdx["fromMilliseconds:"]=4
  77772. //>>excludeEnd("ctx");
  77773. ][0])
  77774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77775. ,$ctx1.sendIdx["=="]=4
  77776. //>>excludeEnd("ctx");
  77777. ][0])
  77778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77779. ,$ctx1.sendIdx["deny:"]=3
  77780. //>>excludeEnd("ctx");
  77781. ][0];
  77782. $self._deny_($recv($recv($globals.Date)._fromMilliseconds_($recv(now)._asMilliseconds())).__eq_eq(now));
  77783. return self;
  77784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77785. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{now:now})});
  77786. //>>excludeEnd("ctx");
  77787. }; }),
  77788. $globals.DateTest);
  77789. $core.addMethod(
  77790. $core.method({
  77791. selector: "testPlusAndMinus",
  77792. protocol: "tests",
  77793. //>>excludeStart("ide", pragmas.excludeIdeData);
  77794. args: [],
  77795. source: "testPlusAndMinus\x0a\x09| a b now zeroDuration |\x0a\x09a := Date fromString: '1974-07-12 14:30'.\x0a\x09now := Date now.\x0a\x09b := Date fromString: '2616-03-06'.\x0a\x09zeroDuration := 0.\x0a\x0a\x09self assert: {a-a. now-now. b-b} asSet equals: (Set with: zeroDuration).\x0a\x09self assert: now + (b - now) equals: b.\x0a\x09self assert: a + (b - a) equals: b.\x0a\x09self assert: now + (a - now) equals: a.\x0a\x09self assert: a + ((now - a) + (b - now)) equals: b",
  77796. referencedClasses: ["Date", "Set"],
  77797. //>>excludeEnd("ide");
  77798. pragmas: [],
  77799. messageSends: ["fromString:", "now", "assert:equals:", "asSet", "-", "with:", "+"]
  77800. }, function ($methodClass){ return function (){
  77801. var self=this,$self=this;
  77802. var a,b,now,zeroDuration;
  77803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77804. return $core.withContext(function($ctx1) {
  77805. //>>excludeEnd("ctx");
  77806. a=[$recv($globals.Date)._fromString_("1974-07-12 14:30")
  77807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77808. ,$ctx1.sendIdx["fromString:"]=1
  77809. //>>excludeEnd("ctx");
  77810. ][0];
  77811. now=$recv($globals.Date)._now();
  77812. b=$recv($globals.Date)._fromString_("2616-03-06");
  77813. zeroDuration=(0);
  77814. [$self._assert_equals_($recv([[$recv(a).__minus(a)
  77815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77816. ,$ctx1.sendIdx["-"]=1
  77817. //>>excludeEnd("ctx");
  77818. ][0],[$recv(now).__minus(now)
  77819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77820. ,$ctx1.sendIdx["-"]=2
  77821. //>>excludeEnd("ctx");
  77822. ][0],[$recv(b).__minus(b)
  77823. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77824. ,$ctx1.sendIdx["-"]=3
  77825. //>>excludeEnd("ctx");
  77826. ][0]])._asSet(),$recv($globals.Set)._with_(zeroDuration))
  77827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77828. ,$ctx1.sendIdx["assert:equals:"]=1
  77829. //>>excludeEnd("ctx");
  77830. ][0];
  77831. [$self._assert_equals_([$recv(now).__plus([$recv(b).__minus(now)
  77832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77833. ,$ctx1.sendIdx["-"]=4
  77834. //>>excludeEnd("ctx");
  77835. ][0])
  77836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77837. ,$ctx1.sendIdx["+"]=1
  77838. //>>excludeEnd("ctx");
  77839. ][0],b)
  77840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77841. ,$ctx1.sendIdx["assert:equals:"]=2
  77842. //>>excludeEnd("ctx");
  77843. ][0];
  77844. [$self._assert_equals_([$recv(a).__plus([$recv(b).__minus(a)
  77845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77846. ,$ctx1.sendIdx["-"]=5
  77847. //>>excludeEnd("ctx");
  77848. ][0])
  77849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77850. ,$ctx1.sendIdx["+"]=2
  77851. //>>excludeEnd("ctx");
  77852. ][0],b)
  77853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77854. ,$ctx1.sendIdx["assert:equals:"]=3
  77855. //>>excludeEnd("ctx");
  77856. ][0];
  77857. [$self._assert_equals_([$recv(now).__plus([$recv(a).__minus(now)
  77858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77859. ,$ctx1.sendIdx["-"]=6
  77860. //>>excludeEnd("ctx");
  77861. ][0])
  77862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77863. ,$ctx1.sendIdx["+"]=3
  77864. //>>excludeEnd("ctx");
  77865. ][0],a)
  77866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77867. ,$ctx1.sendIdx["assert:equals:"]=4
  77868. //>>excludeEnd("ctx");
  77869. ][0];
  77870. $self._assert_equals_([$recv(a).__plus($recv([$recv(now).__minus(a)
  77871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77872. ,$ctx1.sendIdx["-"]=7
  77873. //>>excludeEnd("ctx");
  77874. ][0]).__plus($recv(b).__minus(now)))
  77875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77876. ,$ctx1.sendIdx["+"]=4
  77877. //>>excludeEnd("ctx");
  77878. ][0],b);
  77879. return self;
  77880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77881. }, function($ctx1) {$ctx1.fill(self,"testPlusAndMinus",{a:a,b:b,now:now,zeroDuration:zeroDuration})});
  77882. //>>excludeEnd("ctx");
  77883. }; }),
  77884. $globals.DateTest);
  77885. $core.addClass("JSObjectProxyTest", $globals.TestCase, "Kernel-Tests");
  77886. $core.addMethod(
  77887. $core.method({
  77888. selector: "jsObject",
  77889. protocol: "accessing",
  77890. //>>excludeStart("ide", pragmas.excludeIdeData);
  77891. args: [],
  77892. source: "jsObject\x0a\x09<inlineJS: \x0a\x09\x09'return {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: \x22\x22, \x22e\x22: null, \x22f\x22: void 0}'>",
  77893. referencedClasses: [],
  77894. //>>excludeEnd("ide");
  77895. pragmas: [["inlineJS:", ["return {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: \x22\x22, \x22e\x22: null, \x22f\x22: void 0}"]]],
  77896. messageSends: []
  77897. }, function ($methodClass){ return function (){
  77898. var self=this,$self=this;
  77899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77900. return $core.withContext(function($ctx1) {
  77901. //>>excludeEnd("ctx");
  77902. return {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: "", "e": null, "f": void 0};
  77903. return self;
  77904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77905. }, function($ctx1) {$ctx1.fill(self,"jsObject",{})});
  77906. //>>excludeEnd("ctx");
  77907. }; }),
  77908. $globals.JSObjectProxyTest);
  77909. $core.addMethod(
  77910. $core.method({
  77911. selector: "jsUndefined",
  77912. protocol: "accessing",
  77913. //>>excludeStart("ide", pragmas.excludeIdeData);
  77914. args: [],
  77915. source: "jsUndefined\x0a\x09<inlineJS: 'return'>",
  77916. referencedClasses: [],
  77917. //>>excludeEnd("ide");
  77918. pragmas: [["inlineJS:", ["return"]]],
  77919. messageSends: []
  77920. }, function ($methodClass){ return function (){
  77921. var self=this,$self=this;
  77922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77923. return $core.withContext(function($ctx1) {
  77924. //>>excludeEnd("ctx");
  77925. return;
  77926. return self;
  77927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77928. }, function($ctx1) {$ctx1.fill(self,"jsUndefined",{})});
  77929. //>>excludeEnd("ctx");
  77930. }; }),
  77931. $globals.JSObjectProxyTest);
  77932. $core.addMethod(
  77933. $core.method({
  77934. selector: "testAtIfAbsent",
  77935. protocol: "tests",
  77936. //>>excludeStart("ide", pragmas.excludeIdeData);
  77937. args: [],
  77938. source: "testAtIfAbsent\x0a\x09| testObject |\x0a\x09testObject := self jsObject.\x0a\x09self assert: (testObject at: 'abc' ifAbsent: [ 'Property does not exist' ]) equals: 'Property does not exist'.\x0a\x09self assert: (testObject at: 'e' ifAbsent: [ 'Property does not exist' ]) equals: nil.\x0a\x09self assert: (testObject at: 'a' ifAbsent: [ 'Property does not exist' ]) equals: 1.\x0a\x09self assert: (testObject at: 'f' ifAbsent: [ 'Property does not exist' ]) equals: nil.",
  77939. referencedClasses: [],
  77940. //>>excludeEnd("ide");
  77941. pragmas: [],
  77942. messageSends: ["jsObject", "assert:equals:", "at:ifAbsent:"]
  77943. }, function ($methodClass){ return function (){
  77944. var self=this,$self=this;
  77945. var testObject;
  77946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77947. return $core.withContext(function($ctx1) {
  77948. //>>excludeEnd("ctx");
  77949. testObject=$self._jsObject();
  77950. [$self._assert_equals_([$recv(testObject)._at_ifAbsent_("abc",(function(){
  77951. return "Property does not exist";
  77952. }))
  77953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77954. ,$ctx1.sendIdx["at:ifAbsent:"]=1
  77955. //>>excludeEnd("ctx");
  77956. ][0],"Property does not exist")
  77957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77958. ,$ctx1.sendIdx["assert:equals:"]=1
  77959. //>>excludeEnd("ctx");
  77960. ][0];
  77961. [$self._assert_equals_([$recv(testObject)._at_ifAbsent_("e",(function(){
  77962. return "Property does not exist";
  77963. }))
  77964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77965. ,$ctx1.sendIdx["at:ifAbsent:"]=2
  77966. //>>excludeEnd("ctx");
  77967. ][0],nil)
  77968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77969. ,$ctx1.sendIdx["assert:equals:"]=2
  77970. //>>excludeEnd("ctx");
  77971. ][0];
  77972. [$self._assert_equals_([$recv(testObject)._at_ifAbsent_("a",(function(){
  77973. return "Property does not exist";
  77974. }))
  77975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77976. ,$ctx1.sendIdx["at:ifAbsent:"]=3
  77977. //>>excludeEnd("ctx");
  77978. ][0],(1))
  77979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77980. ,$ctx1.sendIdx["assert:equals:"]=3
  77981. //>>excludeEnd("ctx");
  77982. ][0];
  77983. $self._assert_equals_($recv(testObject)._at_ifAbsent_("f",(function(){
  77984. return "Property does not exist";
  77985. })),nil);
  77986. return self;
  77987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77988. }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{testObject:testObject})});
  77989. //>>excludeEnd("ctx");
  77990. }; }),
  77991. $globals.JSObjectProxyTest);
  77992. $core.addMethod(
  77993. $core.method({
  77994. selector: "testAtIfPresent",
  77995. protocol: "tests",
  77996. //>>excludeStart("ide", pragmas.excludeIdeData);
  77997. args: [],
  77998. source: "testAtIfPresent\x0a\x09| testObject |\x0a\x09\x0a\x09testObject := self jsObject.\x0a\x09\x0a\x09self assert: (testObject at: 'abc' ifPresent: [ :x | 'hello ',x asString ]) equals: nil.\x0a\x09self assert: (testObject at: 'e' ifPresent: [ :x | 'hello ',x asString ]) equals: 'hello nil'.\x0a\x09self assert: (testObject at: 'a' ifPresent: [ :x | 'hello ',x asString ]) equals: 'hello 1'.\x0a\x09self assert: (testObject at: 'f' ifPresent: [ :x | 'hello ',x asString ]) equals: 'hello nil'.",
  77999. referencedClasses: [],
  78000. //>>excludeEnd("ide");
  78001. pragmas: [],
  78002. messageSends: ["jsObject", "assert:equals:", "at:ifPresent:", ",", "asString"]
  78003. }, function ($methodClass){ return function (){
  78004. var self=this,$self=this;
  78005. var testObject;
  78006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78007. return $core.withContext(function($ctx1) {
  78008. //>>excludeEnd("ctx");
  78009. testObject=$self._jsObject();
  78010. [$self._assert_equals_([$recv(testObject)._at_ifPresent_("abc",(function(x){
  78011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78012. return $core.withContext(function($ctx2) {
  78013. //>>excludeEnd("ctx");
  78014. return ["hello ".__comma([$recv(x)._asString()
  78015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78016. ,$ctx2.sendIdx["asString"]=1
  78017. //>>excludeEnd("ctx");
  78018. ][0])
  78019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78020. ,$ctx2.sendIdx[","]=1
  78021. //>>excludeEnd("ctx");
  78022. ][0];
  78023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78024. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  78025. //>>excludeEnd("ctx");
  78026. }))
  78027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78028. ,$ctx1.sendIdx["at:ifPresent:"]=1
  78029. //>>excludeEnd("ctx");
  78030. ][0],nil)
  78031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78032. ,$ctx1.sendIdx["assert:equals:"]=1
  78033. //>>excludeEnd("ctx");
  78034. ][0];
  78035. [$self._assert_equals_([$recv(testObject)._at_ifPresent_("e",(function(x){
  78036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78037. return $core.withContext(function($ctx2) {
  78038. //>>excludeEnd("ctx");
  78039. return ["hello ".__comma([$recv(x)._asString()
  78040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78041. ,$ctx2.sendIdx["asString"]=2
  78042. //>>excludeEnd("ctx");
  78043. ][0])
  78044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78045. ,$ctx2.sendIdx[","]=2
  78046. //>>excludeEnd("ctx");
  78047. ][0];
  78048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78049. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
  78050. //>>excludeEnd("ctx");
  78051. }))
  78052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78053. ,$ctx1.sendIdx["at:ifPresent:"]=2
  78054. //>>excludeEnd("ctx");
  78055. ][0],"hello nil")
  78056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78057. ,$ctx1.sendIdx["assert:equals:"]=2
  78058. //>>excludeEnd("ctx");
  78059. ][0];
  78060. [$self._assert_equals_([$recv(testObject)._at_ifPresent_("a",(function(x){
  78061. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78062. return $core.withContext(function($ctx2) {
  78063. //>>excludeEnd("ctx");
  78064. return ["hello ".__comma([$recv(x)._asString()
  78065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78066. ,$ctx2.sendIdx["asString"]=3
  78067. //>>excludeEnd("ctx");
  78068. ][0])
  78069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78070. ,$ctx2.sendIdx[","]=3
  78071. //>>excludeEnd("ctx");
  78072. ][0];
  78073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78074. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,3)});
  78075. //>>excludeEnd("ctx");
  78076. }))
  78077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78078. ,$ctx1.sendIdx["at:ifPresent:"]=3
  78079. //>>excludeEnd("ctx");
  78080. ][0],"hello 1")
  78081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78082. ,$ctx1.sendIdx["assert:equals:"]=3
  78083. //>>excludeEnd("ctx");
  78084. ][0];
  78085. $self._assert_equals_($recv(testObject)._at_ifPresent_("f",(function(x){
  78086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78087. return $core.withContext(function($ctx2) {
  78088. //>>excludeEnd("ctx");
  78089. return "hello ".__comma($recv(x)._asString());
  78090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78091. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,4)});
  78092. //>>excludeEnd("ctx");
  78093. })),"hello nil");
  78094. return self;
  78095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78096. }, function($ctx1) {$ctx1.fill(self,"testAtIfPresent",{testObject:testObject})});
  78097. //>>excludeEnd("ctx");
  78098. }; }),
  78099. $globals.JSObjectProxyTest);
  78100. $core.addMethod(
  78101. $core.method({
  78102. selector: "testAtIfPresentIfAbsent",
  78103. protocol: "tests",
  78104. //>>excludeStart("ide", pragmas.excludeIdeData);
  78105. args: [],
  78106. source: "testAtIfPresentIfAbsent\x0a\x09| testObject |\x0a\x09testObject := self jsObject.\x0a\x09self assert: (testObject at: 'abc' ifPresent: [ :x|'hello ',x asString ] ifAbsent: [ 'not present' ]) equals: 'not present'.\x0a\x09self assert: (testObject at: 'e' ifPresent: [ :x|'hello ',x asString ] ifAbsent: [ 'not present' ]) equals: 'hello nil'.\x0a\x09self assert: (testObject at: 'a' ifPresent: [ :x|'hello ',x asString ] ifAbsent: [ 'not present' ]) equals: 'hello 1'.\x0a\x09self assert: (testObject at: 'f' ifPresent: [ :x|'hello ',x asString ] ifAbsent: [ 'not present' ]) equals: 'hello nil'.",
  78107. referencedClasses: [],
  78108. //>>excludeEnd("ide");
  78109. pragmas: [],
  78110. messageSends: ["jsObject", "assert:equals:", "at:ifPresent:ifAbsent:", ",", "asString"]
  78111. }, function ($methodClass){ return function (){
  78112. var self=this,$self=this;
  78113. var testObject;
  78114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78115. return $core.withContext(function($ctx1) {
  78116. //>>excludeEnd("ctx");
  78117. testObject=$self._jsObject();
  78118. [$self._assert_equals_([$recv(testObject)._at_ifPresent_ifAbsent_("abc",(function(x){
  78119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78120. return $core.withContext(function($ctx2) {
  78121. //>>excludeEnd("ctx");
  78122. return ["hello ".__comma([$recv(x)._asString()
  78123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78124. ,$ctx2.sendIdx["asString"]=1
  78125. //>>excludeEnd("ctx");
  78126. ][0])
  78127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78128. ,$ctx2.sendIdx[","]=1
  78129. //>>excludeEnd("ctx");
  78130. ][0];
  78131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78132. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  78133. //>>excludeEnd("ctx");
  78134. }),(function(){
  78135. return "not present";
  78136. }))
  78137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78138. ,$ctx1.sendIdx["at:ifPresent:ifAbsent:"]=1
  78139. //>>excludeEnd("ctx");
  78140. ][0],"not present")
  78141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78142. ,$ctx1.sendIdx["assert:equals:"]=1
  78143. //>>excludeEnd("ctx");
  78144. ][0];
  78145. [$self._assert_equals_([$recv(testObject)._at_ifPresent_ifAbsent_("e",(function(x){
  78146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78147. return $core.withContext(function($ctx2) {
  78148. //>>excludeEnd("ctx");
  78149. return ["hello ".__comma([$recv(x)._asString()
  78150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78151. ,$ctx2.sendIdx["asString"]=2
  78152. //>>excludeEnd("ctx");
  78153. ][0])
  78154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78155. ,$ctx2.sendIdx[","]=2
  78156. //>>excludeEnd("ctx");
  78157. ][0];
  78158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78159. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,3)});
  78160. //>>excludeEnd("ctx");
  78161. }),(function(){
  78162. return "not present";
  78163. }))
  78164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78165. ,$ctx1.sendIdx["at:ifPresent:ifAbsent:"]=2
  78166. //>>excludeEnd("ctx");
  78167. ][0],"hello nil")
  78168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78169. ,$ctx1.sendIdx["assert:equals:"]=2
  78170. //>>excludeEnd("ctx");
  78171. ][0];
  78172. [$self._assert_equals_([$recv(testObject)._at_ifPresent_ifAbsent_("a",(function(x){
  78173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78174. return $core.withContext(function($ctx2) {
  78175. //>>excludeEnd("ctx");
  78176. return ["hello ".__comma([$recv(x)._asString()
  78177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78178. ,$ctx2.sendIdx["asString"]=3
  78179. //>>excludeEnd("ctx");
  78180. ][0])
  78181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78182. ,$ctx2.sendIdx[","]=3
  78183. //>>excludeEnd("ctx");
  78184. ][0];
  78185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78186. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,5)});
  78187. //>>excludeEnd("ctx");
  78188. }),(function(){
  78189. return "not present";
  78190. }))
  78191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78192. ,$ctx1.sendIdx["at:ifPresent:ifAbsent:"]=3
  78193. //>>excludeEnd("ctx");
  78194. ][0],"hello 1")
  78195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78196. ,$ctx1.sendIdx["assert:equals:"]=3
  78197. //>>excludeEnd("ctx");
  78198. ][0];
  78199. $self._assert_equals_($recv(testObject)._at_ifPresent_ifAbsent_("f",(function(x){
  78200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78201. return $core.withContext(function($ctx2) {
  78202. //>>excludeEnd("ctx");
  78203. return "hello ".__comma($recv(x)._asString());
  78204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78205. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,7)});
  78206. //>>excludeEnd("ctx");
  78207. }),(function(){
  78208. return "not present";
  78209. })),"hello nil");
  78210. return self;
  78211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78212. }, function($ctx1) {$ctx1.fill(self,"testAtIfPresentIfAbsent",{testObject:testObject})});
  78213. //>>excludeEnd("ctx");
  78214. }; }),
  78215. $globals.JSObjectProxyTest);
  78216. $core.addMethod(
  78217. $core.method({
  78218. selector: "testAtPut",
  78219. protocol: "tests",
  78220. //>>excludeStart("ide", pragmas.excludeIdeData);
  78221. args: [],
  78222. source: "testAtPut\x0a\x09| testObject |\x0a\x09testObject := self jsObject.\x0a\x09\x0a\x09self assert: (testObject at: 'abc') ~= 'xyz'.\x0a\x09self assert: (testObject at: 'abc' put: 'xyz') equals: 'xyz'.\x0a\x09self assert: (testObject at: 'abc') equals: 'xyz'",
  78223. referencedClasses: [],
  78224. //>>excludeEnd("ide");
  78225. pragmas: [],
  78226. messageSends: ["jsObject", "assert:", "~=", "at:", "assert:equals:", "at:put:"]
  78227. }, function ($methodClass){ return function (){
  78228. var self=this,$self=this;
  78229. var testObject;
  78230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78231. return $core.withContext(function($ctx1) {
  78232. //>>excludeEnd("ctx");
  78233. testObject=$self._jsObject();
  78234. $self._assert_($recv([$recv(testObject)._at_("abc")
  78235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78236. ,$ctx1.sendIdx["at:"]=1
  78237. //>>excludeEnd("ctx");
  78238. ][0]).__tild_eq("xyz"));
  78239. [$self._assert_equals_($recv(testObject)._at_put_("abc","xyz"),"xyz")
  78240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78241. ,$ctx1.sendIdx["assert:equals:"]=1
  78242. //>>excludeEnd("ctx");
  78243. ][0];
  78244. $self._assert_equals_($recv(testObject)._at_("abc"),"xyz");
  78245. return self;
  78246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78247. }, function($ctx1) {$ctx1.fill(self,"testAtPut",{testObject:testObject})});
  78248. //>>excludeEnd("ctx");
  78249. }; }),
  78250. $globals.JSObjectProxyTest);
  78251. $core.addMethod(
  78252. $core.method({
  78253. selector: "testComparison",
  78254. protocol: "tests",
  78255. //>>excludeStart("ide", pragmas.excludeIdeData);
  78256. args: [],
  78257. source: "testComparison\x0a\x09self assert: ({ console. 2 } indexOf: console) equals: 1.\x0a\x09self assert: console = console.\x0a\x09self deny: console = Object new.\x0a\x09self deny: console = self jsObject",
  78258. referencedClasses: ["Object"],
  78259. //>>excludeEnd("ide");
  78260. pragmas: [],
  78261. messageSends: ["assert:equals:", "indexOf:", "assert:", "=", "deny:", "new", "jsObject"]
  78262. }, function ($methodClass){ return function (){
  78263. var self=this,$self=this;
  78264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78265. return $core.withContext(function($ctx1) {
  78266. //>>excludeEnd("ctx");
  78267. $self._assert_equals_($recv([console,(2)])._indexOf_(console),(1));
  78268. $self._assert_([$recv(console).__eq(console)
  78269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78270. ,$ctx1.sendIdx["="]=1
  78271. //>>excludeEnd("ctx");
  78272. ][0]);
  78273. [$self._deny_([$recv(console).__eq($recv($globals.Object)._new())
  78274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78275. ,$ctx1.sendIdx["="]=2
  78276. //>>excludeEnd("ctx");
  78277. ][0])
  78278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78279. ,$ctx1.sendIdx["deny:"]=1
  78280. //>>excludeEnd("ctx");
  78281. ][0];
  78282. $self._deny_($recv(console).__eq($self._jsObject()));
  78283. return self;
  78284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78285. }, function($ctx1) {$ctx1.fill(self,"testComparison",{})});
  78286. //>>excludeEnd("ctx");
  78287. }; }),
  78288. $globals.JSObjectProxyTest);
  78289. $core.addMethod(
  78290. $core.method({
  78291. selector: "testDNU",
  78292. protocol: "tests",
  78293. //>>excludeStart("ide", pragmas.excludeIdeData);
  78294. args: [],
  78295. source: "testDNU\x0a\x09self should: [ self jsObject foo ] raise: MessageNotUnderstood",
  78296. referencedClasses: ["MessageNotUnderstood"],
  78297. //>>excludeEnd("ide");
  78298. pragmas: [],
  78299. messageSends: ["should:raise:", "foo", "jsObject"]
  78300. }, function ($methodClass){ return function (){
  78301. var self=this,$self=this;
  78302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78303. return $core.withContext(function($ctx1) {
  78304. //>>excludeEnd("ctx");
  78305. $self._should_raise_((function(){
  78306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78307. return $core.withContext(function($ctx2) {
  78308. //>>excludeEnd("ctx");
  78309. return $recv($self._jsObject())._foo();
  78310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78311. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  78312. //>>excludeEnd("ctx");
  78313. }),$globals.MessageNotUnderstood);
  78314. return self;
  78315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78316. }, function($ctx1) {$ctx1.fill(self,"testDNU",{})});
  78317. //>>excludeEnd("ctx");
  78318. }; }),
  78319. $globals.JSObjectProxyTest);
  78320. $core.addMethod(
  78321. $core.method({
  78322. selector: "testDNUWithAllowJavaScriptCalls",
  78323. protocol: "tests",
  78324. //>>excludeStart("ide", pragmas.excludeIdeData);
  78325. args: [],
  78326. source: "testDNUWithAllowJavaScriptCalls\x0a\x09| jsObject |\x0a\x09jsObject := #().\x0a\x09jsObject basicAt: 'allowJavaScriptCalls' put: true.\x0a\x09self should: [ jsObject foo ] raise: MessageNotUnderstood",
  78327. referencedClasses: ["MessageNotUnderstood"],
  78328. //>>excludeEnd("ide");
  78329. pragmas: [],
  78330. messageSends: ["basicAt:put:", "should:raise:", "foo"]
  78331. }, function ($methodClass){ return function (){
  78332. var self=this,$self=this;
  78333. var jsObject;
  78334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78335. return $core.withContext(function($ctx1) {
  78336. //>>excludeEnd("ctx");
  78337. jsObject=[];
  78338. $recv(jsObject)._basicAt_put_("allowJavaScriptCalls",true);
  78339. $self._should_raise_((function(){
  78340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78341. return $core.withContext(function($ctx2) {
  78342. //>>excludeEnd("ctx");
  78343. return $recv(jsObject)._foo();
  78344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78345. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  78346. //>>excludeEnd("ctx");
  78347. }),$globals.MessageNotUnderstood);
  78348. return self;
  78349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78350. }, function($ctx1) {$ctx1.fill(self,"testDNUWithAllowJavaScriptCalls",{jsObject:jsObject})});
  78351. //>>excludeEnd("ctx");
  78352. }; }),
  78353. $globals.JSObjectProxyTest);
  78354. $core.addMethod(
  78355. $core.method({
  78356. selector: "testMessageSend",
  78357. protocol: "tests",
  78358. //>>excludeStart("ide", pragmas.excludeIdeData);
  78359. args: [],
  78360. source: "testMessageSend\x0a\x0a\x09self assert: self jsObject a equals: 1.\x0a\x09self assert: self jsObject b equals: 2.\x0a\x09self assert: (self jsObject c: 3) equals: 3",
  78361. referencedClasses: [],
  78362. //>>excludeEnd("ide");
  78363. pragmas: [],
  78364. messageSends: ["assert:equals:", "a", "jsObject", "b", "c:"]
  78365. }, function ($methodClass){ return function (){
  78366. var self=this,$self=this;
  78367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78368. return $core.withContext(function($ctx1) {
  78369. //>>excludeEnd("ctx");
  78370. [$self._assert_equals_($recv([$self._jsObject()
  78371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78372. ,$ctx1.sendIdx["jsObject"]=1
  78373. //>>excludeEnd("ctx");
  78374. ][0])._a(),(1))
  78375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78376. ,$ctx1.sendIdx["assert:equals:"]=1
  78377. //>>excludeEnd("ctx");
  78378. ][0];
  78379. [$self._assert_equals_($recv([$self._jsObject()
  78380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78381. ,$ctx1.sendIdx["jsObject"]=2
  78382. //>>excludeEnd("ctx");
  78383. ][0])._b(),(2))
  78384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78385. ,$ctx1.sendIdx["assert:equals:"]=2
  78386. //>>excludeEnd("ctx");
  78387. ][0];
  78388. $self._assert_equals_($recv($self._jsObject())._c_((3)),(3));
  78389. return self;
  78390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78391. }, function($ctx1) {$ctx1.fill(self,"testMessageSend",{})});
  78392. //>>excludeEnd("ctx");
  78393. }; }),
  78394. $globals.JSObjectProxyTest);
  78395. $core.addMethod(
  78396. $core.method({
  78397. selector: "testMethodWithArguments",
  78398. protocol: "tests",
  78399. //>>excludeStart("ide", pragmas.excludeIdeData);
  78400. args: [],
  78401. source: "testMethodWithArguments\x0a\x09self assert: (self jsObject c: 1) equals: 1",
  78402. referencedClasses: [],
  78403. //>>excludeEnd("ide");
  78404. pragmas: [],
  78405. messageSends: ["assert:equals:", "c:", "jsObject"]
  78406. }, function ($methodClass){ return function (){
  78407. var self=this,$self=this;
  78408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78409. return $core.withContext(function($ctx1) {
  78410. //>>excludeEnd("ctx");
  78411. $self._assert_equals_($recv($self._jsObject())._c_((1)),(1));
  78412. return self;
  78413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78414. }, function($ctx1) {$ctx1.fill(self,"testMethodWithArguments",{})});
  78415. //>>excludeEnd("ctx");
  78416. }; }),
  78417. $globals.JSObjectProxyTest);
  78418. $core.addMethod(
  78419. $core.method({
  78420. selector: "testNull",
  78421. protocol: "tests",
  78422. //>>excludeStart("ide", pragmas.excludeIdeData);
  78423. args: [],
  78424. source: "testNull\x0a\x09self assert: JSObjectProxy null isNil.\x0a\x09self\x0a\x09\x09assert: (JSON stringify: #{#foo -> JSObjectProxy null})\x0a\x09\x09equals: '{\x22foo\x22:null}'",
  78425. referencedClasses: ["JSObjectProxy", "JSON"],
  78426. //>>excludeEnd("ide");
  78427. pragmas: [],
  78428. messageSends: ["assert:", "isNil", "null", "assert:equals:", "stringify:"]
  78429. }, function ($methodClass){ return function (){
  78430. var self=this,$self=this;
  78431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78432. return $core.withContext(function($ctx1) {
  78433. //>>excludeEnd("ctx");
  78434. $self._assert_($recv([$recv($globals.JSObjectProxy)._null()
  78435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78436. ,$ctx1.sendIdx["null"]=1
  78437. //>>excludeEnd("ctx");
  78438. ][0])._isNil());
  78439. $self._assert_equals_($recv($globals.JSON)._stringify_($globals.HashedCollection._newFromPairs_(["foo",$recv($globals.JSObjectProxy)._null()])),"{\x22foo\x22:null}");
  78440. return self;
  78441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78442. }, function($ctx1) {$ctx1.fill(self,"testNull",{})});
  78443. //>>excludeEnd("ctx");
  78444. }; }),
  78445. $globals.JSObjectProxyTest);
  78446. $core.addMethod(
  78447. $core.method({
  78448. selector: "testPrinting",
  78449. protocol: "tests",
  78450. //>>excludeStart("ide", pragmas.excludeIdeData);
  78451. args: [],
  78452. source: "testPrinting\x0a\x09self assert: self jsObject printString equals: '[object Object]'",
  78453. referencedClasses: [],
  78454. //>>excludeEnd("ide");
  78455. pragmas: [],
  78456. messageSends: ["assert:equals:", "printString", "jsObject"]
  78457. }, function ($methodClass){ return function (){
  78458. var self=this,$self=this;
  78459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78460. return $core.withContext(function($ctx1) {
  78461. //>>excludeEnd("ctx");
  78462. $self._assert_equals_($recv($self._jsObject())._printString(),"[object Object]");
  78463. return self;
  78464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78465. }, function($ctx1) {$ctx1.fill(self,"testPrinting",{})});
  78466. //>>excludeEnd("ctx");
  78467. }; }),
  78468. $globals.JSObjectProxyTest);
  78469. $core.addMethod(
  78470. $core.method({
  78471. selector: "testPropertyThatReturnsEmptyString",
  78472. protocol: "tests",
  78473. //>>excludeStart("ide", pragmas.excludeIdeData);
  78474. args: [],
  78475. source: "testPropertyThatReturnsEmptyString\x0a\x09| object |\x0a\x0a\x09object := self jsObject.\x0a\x09self assert: object d equals: ''.\x0a\x0a\x09object d: 'hello'.\x0a\x09self assert: object d equals: 'hello'",
  78476. referencedClasses: [],
  78477. //>>excludeEnd("ide");
  78478. pragmas: [],
  78479. messageSends: ["jsObject", "assert:equals:", "d", "d:"]
  78480. }, function ($methodClass){ return function (){
  78481. var self=this,$self=this;
  78482. var object;
  78483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78484. return $core.withContext(function($ctx1) {
  78485. //>>excludeEnd("ctx");
  78486. object=$self._jsObject();
  78487. [$self._assert_equals_([$recv(object)._d()
  78488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78489. ,$ctx1.sendIdx["d"]=1
  78490. //>>excludeEnd("ctx");
  78491. ][0],"")
  78492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78493. ,$ctx1.sendIdx["assert:equals:"]=1
  78494. //>>excludeEnd("ctx");
  78495. ][0];
  78496. $recv(object)._d_("hello");
  78497. $self._assert_equals_($recv(object)._d(),"hello");
  78498. return self;
  78499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78500. }, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsEmptyString",{object:object})});
  78501. //>>excludeEnd("ctx");
  78502. }; }),
  78503. $globals.JSObjectProxyTest);
  78504. $core.addMethod(
  78505. $core.method({
  78506. selector: "testPropertyThatReturnsUndefined",
  78507. protocol: "tests",
  78508. //>>excludeStart("ide", pragmas.excludeIdeData);
  78509. args: [],
  78510. source: "testPropertyThatReturnsUndefined\x0a\x09| object |\x0a\x0a\x09object := self jsObject.\x0a\x09self shouldnt: [ object e ] raise: MessageNotUnderstood.\x0a\x09self assert: object e isNil",
  78511. referencedClasses: ["MessageNotUnderstood"],
  78512. //>>excludeEnd("ide");
  78513. pragmas: [],
  78514. messageSends: ["jsObject", "shouldnt:raise:", "e", "assert:", "isNil"]
  78515. }, function ($methodClass){ return function (){
  78516. var self=this,$self=this;
  78517. var object;
  78518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78519. return $core.withContext(function($ctx1) {
  78520. //>>excludeEnd("ctx");
  78521. object=$self._jsObject();
  78522. $self._shouldnt_raise_((function(){
  78523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78524. return $core.withContext(function($ctx2) {
  78525. //>>excludeEnd("ctx");
  78526. return [$recv(object)._e()
  78527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78528. ,$ctx2.sendIdx["e"]=1
  78529. //>>excludeEnd("ctx");
  78530. ][0];
  78531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78532. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  78533. //>>excludeEnd("ctx");
  78534. }),$globals.MessageNotUnderstood);
  78535. $self._assert_($recv($recv(object)._e())._isNil());
  78536. return self;
  78537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78538. }, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsUndefined",{object:object})});
  78539. //>>excludeEnd("ctx");
  78540. }; }),
  78541. $globals.JSObjectProxyTest);
  78542. $core.addMethod(
  78543. $core.method({
  78544. selector: "testSetPropertyWithFalsyValue",
  78545. protocol: "tests",
  78546. //>>excludeStart("ide", pragmas.excludeIdeData);
  78547. args: [],
  78548. source: "testSetPropertyWithFalsyValue\x0a\x09| jsObject |\x0a\x09jsObject := self jsObject.\x0a\x09self assert: (jsObject a) equals: 1.\x0a\x0a\x09jsObject a: JSObjectProxy null.\x0a\x09self assert: (jsObject a) equals: nil.\x0a\x09jsObject a: 0.\x0a\x09self assert: (jsObject a) equals: 0.\x0a\x09jsObject a: self jsUndefined.\x0a\x09self assert: (jsObject a) equals: nil.\x0a\x09jsObject a: ''.\x0a\x09self assert: (jsObject a) equals: ''.\x0a\x09jsObject a: false.\x0a\x09self assert: (jsObject a) equals: false",
  78549. referencedClasses: ["JSObjectProxy"],
  78550. //>>excludeEnd("ide");
  78551. pragmas: [],
  78552. messageSends: ["jsObject", "assert:equals:", "a", "a:", "null", "jsUndefined"]
  78553. }, function ($methodClass){ return function (){
  78554. var self=this,$self=this;
  78555. var jsObject;
  78556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78557. return $core.withContext(function($ctx1) {
  78558. //>>excludeEnd("ctx");
  78559. jsObject=$self._jsObject();
  78560. [$self._assert_equals_([$recv(jsObject)._a()
  78561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78562. ,$ctx1.sendIdx["a"]=1
  78563. //>>excludeEnd("ctx");
  78564. ][0],(1))
  78565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78566. ,$ctx1.sendIdx["assert:equals:"]=1
  78567. //>>excludeEnd("ctx");
  78568. ][0];
  78569. [$recv(jsObject)._a_($recv($globals.JSObjectProxy)._null())
  78570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78571. ,$ctx1.sendIdx["a:"]=1
  78572. //>>excludeEnd("ctx");
  78573. ][0];
  78574. [$self._assert_equals_([$recv(jsObject)._a()
  78575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78576. ,$ctx1.sendIdx["a"]=2
  78577. //>>excludeEnd("ctx");
  78578. ][0],nil)
  78579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78580. ,$ctx1.sendIdx["assert:equals:"]=2
  78581. //>>excludeEnd("ctx");
  78582. ][0];
  78583. [$recv(jsObject)._a_((0))
  78584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78585. ,$ctx1.sendIdx["a:"]=2
  78586. //>>excludeEnd("ctx");
  78587. ][0];
  78588. [$self._assert_equals_([$recv(jsObject)._a()
  78589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78590. ,$ctx1.sendIdx["a"]=3
  78591. //>>excludeEnd("ctx");
  78592. ][0],(0))
  78593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78594. ,$ctx1.sendIdx["assert:equals:"]=3
  78595. //>>excludeEnd("ctx");
  78596. ][0];
  78597. [$recv(jsObject)._a_($self._jsUndefined())
  78598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78599. ,$ctx1.sendIdx["a:"]=3
  78600. //>>excludeEnd("ctx");
  78601. ][0];
  78602. [$self._assert_equals_([$recv(jsObject)._a()
  78603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78604. ,$ctx1.sendIdx["a"]=4
  78605. //>>excludeEnd("ctx");
  78606. ][0],nil)
  78607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78608. ,$ctx1.sendIdx["assert:equals:"]=4
  78609. //>>excludeEnd("ctx");
  78610. ][0];
  78611. [$recv(jsObject)._a_("")
  78612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78613. ,$ctx1.sendIdx["a:"]=4
  78614. //>>excludeEnd("ctx");
  78615. ][0];
  78616. [$self._assert_equals_([$recv(jsObject)._a()
  78617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78618. ,$ctx1.sendIdx["a"]=5
  78619. //>>excludeEnd("ctx");
  78620. ][0],"")
  78621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78622. ,$ctx1.sendIdx["assert:equals:"]=5
  78623. //>>excludeEnd("ctx");
  78624. ][0];
  78625. $recv(jsObject)._a_(false);
  78626. $self._assert_equals_($recv(jsObject)._a(),false);
  78627. return self;
  78628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78629. }, function($ctx1) {$ctx1.fill(self,"testSetPropertyWithFalsyValue",{jsObject:jsObject})});
  78630. //>>excludeEnd("ctx");
  78631. }; }),
  78632. $globals.JSObjectProxyTest);
  78633. $core.addMethod(
  78634. $core.method({
  78635. selector: "testUndefined",
  78636. protocol: "tests",
  78637. //>>excludeStart("ide", pragmas.excludeIdeData);
  78638. args: [],
  78639. source: "testUndefined\x0a\x09self assert: JSObjectProxy undefined isNil.\x0a\x09self\x0a\x09\x09assert: (JSON stringify: #{#foo -> JSObjectProxy undefined})\x0a\x09\x09equals: '{}'",
  78640. referencedClasses: ["JSObjectProxy", "JSON"],
  78641. //>>excludeEnd("ide");
  78642. pragmas: [],
  78643. messageSends: ["assert:", "isNil", "undefined", "assert:equals:", "stringify:"]
  78644. }, function ($methodClass){ return function (){
  78645. var self=this,$self=this;
  78646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78647. return $core.withContext(function($ctx1) {
  78648. //>>excludeEnd("ctx");
  78649. $self._assert_($recv([$recv($globals.JSObjectProxy)._undefined()
  78650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78651. ,$ctx1.sendIdx["undefined"]=1
  78652. //>>excludeEnd("ctx");
  78653. ][0])._isNil());
  78654. $self._assert_equals_($recv($globals.JSON)._stringify_($globals.HashedCollection._newFromPairs_(["foo",$recv($globals.JSObjectProxy)._undefined()])),"{}");
  78655. return self;
  78656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78657. }, function($ctx1) {$ctx1.fill(self,"testUndefined",{})});
  78658. //>>excludeEnd("ctx");
  78659. }; }),
  78660. $globals.JSObjectProxyTest);
  78661. $core.addMethod(
  78662. $core.method({
  78663. selector: "testValue",
  78664. protocol: "tests",
  78665. //>>excludeStart("ide", pragmas.excludeIdeData);
  78666. args: [],
  78667. source: "testValue\x0a\x09| testObject |\x0a\x09testObject := self jsObject.\x0a\x09testObject at: 'value' put: 'aValue'.\x0a\x09self assert: testObject value equals: 'aValue'",
  78668. referencedClasses: [],
  78669. //>>excludeEnd("ide");
  78670. pragmas: [],
  78671. messageSends: ["jsObject", "at:put:", "assert:equals:", "value"]
  78672. }, function ($methodClass){ return function (){
  78673. var self=this,$self=this;
  78674. var testObject;
  78675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78676. return $core.withContext(function($ctx1) {
  78677. //>>excludeEnd("ctx");
  78678. testObject=$self._jsObject();
  78679. $recv(testObject)._at_put_("value","aValue");
  78680. $self._assert_equals_($recv(testObject)._value(),"aValue");
  78681. return self;
  78682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78683. }, function($ctx1) {$ctx1.fill(self,"testValue",{testObject:testObject})});
  78684. //>>excludeEnd("ctx");
  78685. }; }),
  78686. $globals.JSObjectProxyTest);
  78687. $core.addMethod(
  78688. $core.method({
  78689. selector: "testYourself",
  78690. protocol: "tests",
  78691. //>>excludeStart("ide", pragmas.excludeIdeData);
  78692. args: [],
  78693. source: "testYourself\x0a\x09| object |\x0a\x09object := self jsObject\x0a\x09\x09d: 'test';\x0a\x09\x09yourself.\x0a\x0a\x09self assert: object d equals: 'test'",
  78694. referencedClasses: [],
  78695. //>>excludeEnd("ide");
  78696. pragmas: [],
  78697. messageSends: ["d:", "jsObject", "yourself", "assert:equals:", "d"]
  78698. }, function ($methodClass){ return function (){
  78699. var self=this,$self=this;
  78700. var object;
  78701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78702. return $core.withContext(function($ctx1) {
  78703. //>>excludeEnd("ctx");
  78704. var $1;
  78705. $1=$self._jsObject();
  78706. $recv($1)._d_("test");
  78707. object=$recv($1)._yourself();
  78708. $self._assert_equals_($recv(object)._d(),"test");
  78709. return self;
  78710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78711. }, function($ctx1) {$ctx1.fill(self,"testYourself",{object:object})});
  78712. //>>excludeEnd("ctx");
  78713. }; }),
  78714. $globals.JSObjectProxyTest);
  78715. $core.addClass("JavaScriptExceptionTest", $globals.TestCase, "Kernel-Tests");
  78716. $core.addMethod(
  78717. $core.method({
  78718. selector: "testCatchingException",
  78719. protocol: "tests",
  78720. //>>excludeStart("ide", pragmas.excludeIdeData);
  78721. args: [],
  78722. source: "testCatchingException\x0a\x09[ self throwException ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :error |\x0a\x09\x09\x09self assert: error exception = 'test' ]",
  78723. referencedClasses: ["Error"],
  78724. //>>excludeEnd("ide");
  78725. pragmas: [],
  78726. messageSends: ["on:do:", "throwException", "assert:", "=", "exception"]
  78727. }, function ($methodClass){ return function (){
  78728. var self=this,$self=this;
  78729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78730. return $core.withContext(function($ctx1) {
  78731. //>>excludeEnd("ctx");
  78732. $recv((function(){
  78733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78734. return $core.withContext(function($ctx2) {
  78735. //>>excludeEnd("ctx");
  78736. return $self._throwException();
  78737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78738. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  78739. //>>excludeEnd("ctx");
  78740. }))._on_do_($globals.Error,(function(error){
  78741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78742. return $core.withContext(function($ctx2) {
  78743. //>>excludeEnd("ctx");
  78744. return $self._assert_($recv($recv(error)._exception()).__eq("test"));
  78745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78746. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  78747. //>>excludeEnd("ctx");
  78748. }));
  78749. return self;
  78750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78751. }, function($ctx1) {$ctx1.fill(self,"testCatchingException",{})});
  78752. //>>excludeEnd("ctx");
  78753. }; }),
  78754. $globals.JavaScriptExceptionTest);
  78755. $core.addMethod(
  78756. $core.method({
  78757. selector: "testRaisingException",
  78758. protocol: "tests",
  78759. //>>excludeStart("ide", pragmas.excludeIdeData);
  78760. args: [],
  78761. source: "testRaisingException\x0a\x09self should: [ self throwException ] raise: JavaScriptException",
  78762. referencedClasses: ["JavaScriptException"],
  78763. //>>excludeEnd("ide");
  78764. pragmas: [],
  78765. messageSends: ["should:raise:", "throwException"]
  78766. }, function ($methodClass){ return function (){
  78767. var self=this,$self=this;
  78768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78769. return $core.withContext(function($ctx1) {
  78770. //>>excludeEnd("ctx");
  78771. $self._should_raise_((function(){
  78772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78773. return $core.withContext(function($ctx2) {
  78774. //>>excludeEnd("ctx");
  78775. return $self._throwException();
  78776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78777. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  78778. //>>excludeEnd("ctx");
  78779. }),$globals.JavaScriptException);
  78780. return self;
  78781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78782. }, function($ctx1) {$ctx1.fill(self,"testRaisingException",{})});
  78783. //>>excludeEnd("ctx");
  78784. }; }),
  78785. $globals.JavaScriptExceptionTest);
  78786. $core.addMethod(
  78787. $core.method({
  78788. selector: "throwException",
  78789. protocol: "helpers",
  78790. //>>excludeStart("ide", pragmas.excludeIdeData);
  78791. args: [],
  78792. source: "throwException\x0a\x09<inlineJS: 'throw \x22test\x22'>",
  78793. referencedClasses: [],
  78794. //>>excludeEnd("ide");
  78795. pragmas: [["inlineJS:", ["throw \x22test\x22"]]],
  78796. messageSends: []
  78797. }, function ($methodClass){ return function (){
  78798. var self=this,$self=this;
  78799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78800. return $core.withContext(function($ctx1) {
  78801. //>>excludeEnd("ctx");
  78802. throw "test";
  78803. return self;
  78804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78805. }, function($ctx1) {$ctx1.fill(self,"throwException",{})});
  78806. //>>excludeEnd("ctx");
  78807. }; }),
  78808. $globals.JavaScriptExceptionTest);
  78809. $core.addClass("MessageSendTest", $globals.TestCase, "Kernel-Tests");
  78810. $core.addMethod(
  78811. $core.method({
  78812. selector: "testValue",
  78813. protocol: "tests",
  78814. //>>excludeStart("ide", pragmas.excludeIdeData);
  78815. args: [],
  78816. source: "testValue\x0a\x09| messageSend |\x0a\x09\x0a\x09messageSend := MessageSend new\x0a\x09\x09receiver: Object new;\x0a\x09\x09selector: #asString;\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09self assert: messageSend value equals: 'an Object'",
  78817. referencedClasses: ["MessageSend", "Object"],
  78818. //>>excludeEnd("ide");
  78819. pragmas: [],
  78820. messageSends: ["receiver:", "new", "selector:", "yourself", "assert:equals:", "value"]
  78821. }, function ($methodClass){ return function (){
  78822. var self=this,$self=this;
  78823. var messageSend;
  78824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78825. return $core.withContext(function($ctx1) {
  78826. //>>excludeEnd("ctx");
  78827. var $1;
  78828. $1=[$recv($globals.MessageSend)._new()
  78829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78830. ,$ctx1.sendIdx["new"]=1
  78831. //>>excludeEnd("ctx");
  78832. ][0];
  78833. $recv($1)._receiver_($recv($globals.Object)._new());
  78834. $recv($1)._selector_("asString");
  78835. messageSend=$recv($1)._yourself();
  78836. $self._assert_equals_($recv(messageSend)._value(),"an Object");
  78837. return self;
  78838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78839. }, function($ctx1) {$ctx1.fill(self,"testValue",{messageSend:messageSend})});
  78840. //>>excludeEnd("ctx");
  78841. }; }),
  78842. $globals.MessageSendTest);
  78843. $core.addMethod(
  78844. $core.method({
  78845. selector: "testValueWithArguments",
  78846. protocol: "tests",
  78847. //>>excludeStart("ide", pragmas.excludeIdeData);
  78848. args: [],
  78849. source: "testValueWithArguments\x0a\x09| messageSend |\x0a\x09\x0a\x09messageSend := MessageSend new\x0a\x09\x09receiver: 2;\x0a\x09\x09selector: '+';\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09self assert: (messageSend value: 3) equals: 5.\x0a\x09\x0a\x09self assert: (messageSend valueWithPossibleArguments: #(4)) equals: 6",
  78850. referencedClasses: ["MessageSend"],
  78851. //>>excludeEnd("ide");
  78852. pragmas: [],
  78853. messageSends: ["receiver:", "new", "selector:", "yourself", "assert:equals:", "value:", "valueWithPossibleArguments:"]
  78854. }, function ($methodClass){ return function (){
  78855. var self=this,$self=this;
  78856. var messageSend;
  78857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78858. return $core.withContext(function($ctx1) {
  78859. //>>excludeEnd("ctx");
  78860. var $1;
  78861. $1=$recv($globals.MessageSend)._new();
  78862. $recv($1)._receiver_((2));
  78863. $recv($1)._selector_("+");
  78864. messageSend=$recv($1)._yourself();
  78865. [$self._assert_equals_($recv(messageSend)._value_((3)),(5))
  78866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78867. ,$ctx1.sendIdx["assert:equals:"]=1
  78868. //>>excludeEnd("ctx");
  78869. ][0];
  78870. $self._assert_equals_($recv(messageSend)._valueWithPossibleArguments_([(4)]),(6));
  78871. return self;
  78872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78873. }, function($ctx1) {$ctx1.fill(self,"testValueWithArguments",{messageSend:messageSend})});
  78874. //>>excludeEnd("ctx");
  78875. }; }),
  78876. $globals.MessageSendTest);
  78877. $core.addClass("MethodInheritanceTest", $globals.TestCase, "Kernel-Tests");
  78878. $core.setSlots($globals.MethodInheritanceTest, ["receiverTop", "receiverMiddle", "receiverBottom", "method", "performBlock"]);
  78879. $core.addMethod(
  78880. $core.method({
  78881. selector: "codeGeneratorClass",
  78882. protocol: "accessing",
  78883. //>>excludeStart("ide", pragmas.excludeIdeData);
  78884. args: [],
  78885. source: "codeGeneratorClass\x0a\x09^ CodeGenerator",
  78886. referencedClasses: ["CodeGenerator"],
  78887. //>>excludeEnd("ide");
  78888. pragmas: [],
  78889. messageSends: []
  78890. }, function ($methodClass){ return function (){
  78891. var self=this,$self=this;
  78892. return $globals.CodeGenerator;
  78893. }; }),
  78894. $globals.MethodInheritanceTest);
  78895. $core.addMethod(
  78896. $core.method({
  78897. selector: "compiler",
  78898. protocol: "factory",
  78899. //>>excludeStart("ide", pragmas.excludeIdeData);
  78900. args: [],
  78901. source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself",
  78902. referencedClasses: ["Compiler"],
  78903. //>>excludeEnd("ide");
  78904. pragmas: [],
  78905. messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]
  78906. }, function ($methodClass){ return function (){
  78907. var self=this,$self=this;
  78908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78909. return $core.withContext(function($ctx1) {
  78910. //>>excludeEnd("ctx");
  78911. var $1;
  78912. $1=$recv($globals.Compiler)._new();
  78913. $recv($1)._codeGeneratorClass_($self._codeGeneratorClass());
  78914. return $recv($1)._yourself();
  78915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78916. }, function($ctx1) {$ctx1.fill(self,"compiler",{})});
  78917. //>>excludeEnd("ctx");
  78918. }; }),
  78919. $globals.MethodInheritanceTest);
  78920. $core.addMethod(
  78921. $core.method({
  78922. selector: "deinstallBottom",
  78923. protocol: "testing",
  78924. //>>excludeStart("ide", pragmas.excludeIdeData);
  78925. args: [],
  78926. source: "deinstallBottom\x0a\x09self targetClassBottom removeCompiledMethod: method",
  78927. referencedClasses: [],
  78928. //>>excludeEnd("ide");
  78929. pragmas: [],
  78930. messageSends: ["removeCompiledMethod:", "targetClassBottom"]
  78931. }, function ($methodClass){ return function (){
  78932. var self=this,$self=this;
  78933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78934. return $core.withContext(function($ctx1) {
  78935. //>>excludeEnd("ctx");
  78936. $recv($self._targetClassBottom())._removeCompiledMethod_($self.method);
  78937. return self;
  78938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78939. }, function($ctx1) {$ctx1.fill(self,"deinstallBottom",{})});
  78940. //>>excludeEnd("ctx");
  78941. }; }),
  78942. $globals.MethodInheritanceTest);
  78943. $core.addMethod(
  78944. $core.method({
  78945. selector: "deinstallMiddle",
  78946. protocol: "testing",
  78947. //>>excludeStart("ide", pragmas.excludeIdeData);
  78948. args: [],
  78949. source: "deinstallMiddle\x0a\x09self targetClassMiddle removeCompiledMethod: method",
  78950. referencedClasses: [],
  78951. //>>excludeEnd("ide");
  78952. pragmas: [],
  78953. messageSends: ["removeCompiledMethod:", "targetClassMiddle"]
  78954. }, function ($methodClass){ return function (){
  78955. var self=this,$self=this;
  78956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78957. return $core.withContext(function($ctx1) {
  78958. //>>excludeEnd("ctx");
  78959. $recv($self._targetClassMiddle())._removeCompiledMethod_($self.method);
  78960. return self;
  78961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78962. }, function($ctx1) {$ctx1.fill(self,"deinstallMiddle",{})});
  78963. //>>excludeEnd("ctx");
  78964. }; }),
  78965. $globals.MethodInheritanceTest);
  78966. $core.addMethod(
  78967. $core.method({
  78968. selector: "deinstallTop",
  78969. protocol: "testing",
  78970. //>>excludeStart("ide", pragmas.excludeIdeData);
  78971. args: [],
  78972. source: "deinstallTop\x0a\x09self targetClassTop removeCompiledMethod: method",
  78973. referencedClasses: [],
  78974. //>>excludeEnd("ide");
  78975. pragmas: [],
  78976. messageSends: ["removeCompiledMethod:", "targetClassTop"]
  78977. }, function ($methodClass){ return function (){
  78978. var self=this,$self=this;
  78979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78980. return $core.withContext(function($ctx1) {
  78981. //>>excludeEnd("ctx");
  78982. $recv($self._targetClassTop())._removeCompiledMethod_($self.method);
  78983. return self;
  78984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78985. }, function($ctx1) {$ctx1.fill(self,"deinstallTop",{})});
  78986. //>>excludeEnd("ctx");
  78987. }; }),
  78988. $globals.MethodInheritanceTest);
  78989. $core.addMethod(
  78990. $core.method({
  78991. selector: "installBottom:",
  78992. protocol: "testing",
  78993. //>>excludeStart("ide", pragmas.excludeIdeData);
  78994. args: ["aString"],
  78995. source: "installBottom: aString\x0a\x09method := self compiler install: aString forClass: self targetClassBottom protocol: 'tests'",
  78996. referencedClasses: [],
  78997. //>>excludeEnd("ide");
  78998. pragmas: [],
  78999. messageSends: ["install:forClass:protocol:", "compiler", "targetClassBottom"]
  79000. }, function ($methodClass){ return function (aString){
  79001. var self=this,$self=this;
  79002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79003. return $core.withContext(function($ctx1) {
  79004. //>>excludeEnd("ctx");
  79005. $self.method=$recv($self._compiler())._install_forClass_protocol_(aString,$self._targetClassBottom(),"tests");
  79006. return self;
  79007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79008. }, function($ctx1) {$ctx1.fill(self,"installBottom:",{aString:aString})});
  79009. //>>excludeEnd("ctx");
  79010. }; }),
  79011. $globals.MethodInheritanceTest);
  79012. $core.addMethod(
  79013. $core.method({
  79014. selector: "installMiddle:",
  79015. protocol: "testing",
  79016. //>>excludeStart("ide", pragmas.excludeIdeData);
  79017. args: ["aString"],
  79018. source: "installMiddle: aString\x0a\x09method := self compiler install: aString forClass: self targetClassMiddle protocol: 'tests'",
  79019. referencedClasses: [],
  79020. //>>excludeEnd("ide");
  79021. pragmas: [],
  79022. messageSends: ["install:forClass:protocol:", "compiler", "targetClassMiddle"]
  79023. }, function ($methodClass){ return function (aString){
  79024. var self=this,$self=this;
  79025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79026. return $core.withContext(function($ctx1) {
  79027. //>>excludeEnd("ctx");
  79028. $self.method=$recv($self._compiler())._install_forClass_protocol_(aString,$self._targetClassMiddle(),"tests");
  79029. return self;
  79030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79031. }, function($ctx1) {$ctx1.fill(self,"installMiddle:",{aString:aString})});
  79032. //>>excludeEnd("ctx");
  79033. }; }),
  79034. $globals.MethodInheritanceTest);
  79035. $core.addMethod(
  79036. $core.method({
  79037. selector: "installTop:",
  79038. protocol: "testing",
  79039. //>>excludeStart("ide", pragmas.excludeIdeData);
  79040. args: ["aString"],
  79041. source: "installTop: aString\x0a\x09method := self compiler install: aString forClass: self targetClassTop protocol: 'tests'",
  79042. referencedClasses: [],
  79043. //>>excludeEnd("ide");
  79044. pragmas: [],
  79045. messageSends: ["install:forClass:protocol:", "compiler", "targetClassTop"]
  79046. }, function ($methodClass){ return function (aString){
  79047. var self=this,$self=this;
  79048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79049. return $core.withContext(function($ctx1) {
  79050. //>>excludeEnd("ctx");
  79051. $self.method=$recv($self._compiler())._install_forClass_protocol_(aString,$self._targetClassTop(),"tests");
  79052. return self;
  79053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79054. }, function($ctx1) {$ctx1.fill(self,"installTop:",{aString:aString})});
  79055. //>>excludeEnd("ctx");
  79056. }; }),
  79057. $globals.MethodInheritanceTest);
  79058. $core.addMethod(
  79059. $core.method({
  79060. selector: "setUp",
  79061. protocol: "initialization",
  79062. //>>excludeStart("ide", pragmas.excludeIdeData);
  79063. args: [],
  79064. source: "setUp\x0a\x09receiverTop := self targetClassTop new.\x0a\x09receiverMiddle := self targetClassMiddle new.\x0a\x09receiverBottom := self targetClassBottom new.\x0a\x09method := nil.\x0a\x09performBlock := [ self error: 'performBlock not initialized' ]",
  79065. referencedClasses: [],
  79066. //>>excludeEnd("ide");
  79067. pragmas: [],
  79068. messageSends: ["new", "targetClassTop", "targetClassMiddle", "targetClassBottom", "error:"]
  79069. }, function ($methodClass){ return function (){
  79070. var self=this,$self=this;
  79071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79072. return $core.withContext(function($ctx1) {
  79073. //>>excludeEnd("ctx");
  79074. $self.receiverTop=[$recv($self._targetClassTop())._new()
  79075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79076. ,$ctx1.sendIdx["new"]=1
  79077. //>>excludeEnd("ctx");
  79078. ][0];
  79079. $self.receiverMiddle=[$recv($self._targetClassMiddle())._new()
  79080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79081. ,$ctx1.sendIdx["new"]=2
  79082. //>>excludeEnd("ctx");
  79083. ][0];
  79084. $self.receiverBottom=$recv($self._targetClassBottom())._new();
  79085. $self.method=nil;
  79086. $self.performBlock=(function(){
  79087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79088. return $core.withContext(function($ctx2) {
  79089. //>>excludeEnd("ctx");
  79090. return $self._error_("performBlock not initialized");
  79091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79092. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  79093. //>>excludeEnd("ctx");
  79094. });
  79095. return self;
  79096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79097. }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
  79098. //>>excludeEnd("ctx");
  79099. }; }),
  79100. $globals.MethodInheritanceTest);
  79101. $core.addMethod(
  79102. $core.method({
  79103. selector: "shouldMNU",
  79104. protocol: "testing",
  79105. //>>excludeStart("ide", pragmas.excludeIdeData);
  79106. args: [],
  79107. source: "shouldMNU\x0a\x09self shouldMNUTop.\x0a\x09self shouldMNUMiddle.\x0a\x09self shouldMNUBottom",
  79108. referencedClasses: [],
  79109. //>>excludeEnd("ide");
  79110. pragmas: [],
  79111. messageSends: ["shouldMNUTop", "shouldMNUMiddle", "shouldMNUBottom"]
  79112. }, function ($methodClass){ return function (){
  79113. var self=this,$self=this;
  79114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79115. return $core.withContext(function($ctx1) {
  79116. //>>excludeEnd("ctx");
  79117. $self._shouldMNUTop();
  79118. $self._shouldMNUMiddle();
  79119. $self._shouldMNUBottom();
  79120. return self;
  79121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79122. }, function($ctx1) {$ctx1.fill(self,"shouldMNU",{})});
  79123. //>>excludeEnd("ctx");
  79124. }; }),
  79125. $globals.MethodInheritanceTest);
  79126. $core.addMethod(
  79127. $core.method({
  79128. selector: "shouldMNUBottom",
  79129. protocol: "testing",
  79130. //>>excludeStart("ide", pragmas.excludeIdeData);
  79131. args: [],
  79132. source: "shouldMNUBottom\x0a\x09self should: [ performBlock value: receiverBottom ] raise: MessageNotUnderstood",
  79133. referencedClasses: ["MessageNotUnderstood"],
  79134. //>>excludeEnd("ide");
  79135. pragmas: [],
  79136. messageSends: ["should:raise:", "value:"]
  79137. }, function ($methodClass){ return function (){
  79138. var self=this,$self=this;
  79139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79140. return $core.withContext(function($ctx1) {
  79141. //>>excludeEnd("ctx");
  79142. $self._should_raise_((function(){
  79143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79144. return $core.withContext(function($ctx2) {
  79145. //>>excludeEnd("ctx");
  79146. return $recv($self.performBlock)._value_($self.receiverBottom);
  79147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79148. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  79149. //>>excludeEnd("ctx");
  79150. }),$globals.MessageNotUnderstood);
  79151. return self;
  79152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79153. }, function($ctx1) {$ctx1.fill(self,"shouldMNUBottom",{})});
  79154. //>>excludeEnd("ctx");
  79155. }; }),
  79156. $globals.MethodInheritanceTest);
  79157. $core.addMethod(
  79158. $core.method({
  79159. selector: "shouldMNUMiddle",
  79160. protocol: "testing",
  79161. //>>excludeStart("ide", pragmas.excludeIdeData);
  79162. args: [],
  79163. source: "shouldMNUMiddle\x0a\x09self should: [ performBlock value: receiverMiddle ] raise: MessageNotUnderstood",
  79164. referencedClasses: ["MessageNotUnderstood"],
  79165. //>>excludeEnd("ide");
  79166. pragmas: [],
  79167. messageSends: ["should:raise:", "value:"]
  79168. }, function ($methodClass){ return function (){
  79169. var self=this,$self=this;
  79170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79171. return $core.withContext(function($ctx1) {
  79172. //>>excludeEnd("ctx");
  79173. $self._should_raise_((function(){
  79174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79175. return $core.withContext(function($ctx2) {
  79176. //>>excludeEnd("ctx");
  79177. return $recv($self.performBlock)._value_($self.receiverMiddle);
  79178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79179. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  79180. //>>excludeEnd("ctx");
  79181. }),$globals.MessageNotUnderstood);
  79182. return self;
  79183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79184. }, function($ctx1) {$ctx1.fill(self,"shouldMNUMiddle",{})});
  79185. //>>excludeEnd("ctx");
  79186. }; }),
  79187. $globals.MethodInheritanceTest);
  79188. $core.addMethod(
  79189. $core.method({
  79190. selector: "shouldMNUTop",
  79191. protocol: "testing",
  79192. //>>excludeStart("ide", pragmas.excludeIdeData);
  79193. args: [],
  79194. source: "shouldMNUTop\x0a\x09self should: [ performBlock value: receiverTop ] raise: MessageNotUnderstood",
  79195. referencedClasses: ["MessageNotUnderstood"],
  79196. //>>excludeEnd("ide");
  79197. pragmas: [],
  79198. messageSends: ["should:raise:", "value:"]
  79199. }, function ($methodClass){ return function (){
  79200. var self=this,$self=this;
  79201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79202. return $core.withContext(function($ctx1) {
  79203. //>>excludeEnd("ctx");
  79204. $self._should_raise_((function(){
  79205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79206. return $core.withContext(function($ctx2) {
  79207. //>>excludeEnd("ctx");
  79208. return $recv($self.performBlock)._value_($self.receiverTop);
  79209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79210. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  79211. //>>excludeEnd("ctx");
  79212. }),$globals.MessageNotUnderstood);
  79213. return self;
  79214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79215. }, function($ctx1) {$ctx1.fill(self,"shouldMNUTop",{})});
  79216. //>>excludeEnd("ctx");
  79217. }; }),
  79218. $globals.MethodInheritanceTest);
  79219. $core.addMethod(
  79220. $core.method({
  79221. selector: "shouldReturn:",
  79222. protocol: "testing",
  79223. //>>excludeStart("ide", pragmas.excludeIdeData);
  79224. args: ["anObject"],
  79225. source: "shouldReturn: anObject\x0a\x09| result |\x0a\x0a\x09result := performBlock value: receiverTop.\x0a\x09self assert: { 'top'. anObject } equals: { 'top'. result }.\x0a\x09result := performBlock value: receiverMiddle.\x0a\x09self assert: { 'middle'. anObject } equals: { 'middle'. result }.\x0a\x09result := performBlock value: receiverBottom.\x0a\x09self assert: { 'bottom'. anObject } equals: { 'bottom'. result }",
  79226. referencedClasses: [],
  79227. //>>excludeEnd("ide");
  79228. pragmas: [],
  79229. messageSends: ["value:", "assert:equals:"]
  79230. }, function ($methodClass){ return function (anObject){
  79231. var self=this,$self=this;
  79232. var result;
  79233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79234. return $core.withContext(function($ctx1) {
  79235. //>>excludeEnd("ctx");
  79236. result=[$recv($self.performBlock)._value_($self.receiverTop)
  79237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79238. ,$ctx1.sendIdx["value:"]=1
  79239. //>>excludeEnd("ctx");
  79240. ][0];
  79241. [$self._assert_equals_(["top",anObject],["top",result])
  79242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79243. ,$ctx1.sendIdx["assert:equals:"]=1
  79244. //>>excludeEnd("ctx");
  79245. ][0];
  79246. result=[$recv($self.performBlock)._value_($self.receiverMiddle)
  79247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79248. ,$ctx1.sendIdx["value:"]=2
  79249. //>>excludeEnd("ctx");
  79250. ][0];
  79251. [$self._assert_equals_(["middle",anObject],["middle",result])
  79252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79253. ,$ctx1.sendIdx["assert:equals:"]=2
  79254. //>>excludeEnd("ctx");
  79255. ][0];
  79256. result=$recv($self.performBlock)._value_($self.receiverBottom);
  79257. $self._assert_equals_(["bottom",anObject],["bottom",result]);
  79258. return self;
  79259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79260. }, function($ctx1) {$ctx1.fill(self,"shouldReturn:",{anObject:anObject,result:result})});
  79261. //>>excludeEnd("ctx");
  79262. }; }),
  79263. $globals.MethodInheritanceTest);
  79264. $core.addMethod(
  79265. $core.method({
  79266. selector: "shouldReturn:and:and:",
  79267. protocol: "testing",
  79268. //>>excludeStart("ide", pragmas.excludeIdeData);
  79269. args: ["anObject", "anObject2", "anObject3"],
  79270. source: "shouldReturn: anObject and: anObject2 and: anObject3\x0a\x09| result |\x0a\x0a\x09result := performBlock value: receiverTop.\x0a\x09self assert: { 'top'. anObject } equals: { 'top'. result }.\x0a\x09result := performBlock value: receiverMiddle.\x0a\x09self assert: { 'middle'. anObject2 } equals: { 'middle'. result }.\x0a\x09result := performBlock value: receiverBottom.\x0a\x09self assert: { 'bottom'. anObject3 } equals: { 'bottom'. result }",
  79271. referencedClasses: [],
  79272. //>>excludeEnd("ide");
  79273. pragmas: [],
  79274. messageSends: ["value:", "assert:equals:"]
  79275. }, function ($methodClass){ return function (anObject,anObject2,anObject3){
  79276. var self=this,$self=this;
  79277. var result;
  79278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79279. return $core.withContext(function($ctx1) {
  79280. //>>excludeEnd("ctx");
  79281. result=[$recv($self.performBlock)._value_($self.receiverTop)
  79282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79283. ,$ctx1.sendIdx["value:"]=1
  79284. //>>excludeEnd("ctx");
  79285. ][0];
  79286. [$self._assert_equals_(["top",anObject],["top",result])
  79287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79288. ,$ctx1.sendIdx["assert:equals:"]=1
  79289. //>>excludeEnd("ctx");
  79290. ][0];
  79291. result=[$recv($self.performBlock)._value_($self.receiverMiddle)
  79292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79293. ,$ctx1.sendIdx["value:"]=2
  79294. //>>excludeEnd("ctx");
  79295. ][0];
  79296. [$self._assert_equals_(["middle",anObject2],["middle",result])
  79297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79298. ,$ctx1.sendIdx["assert:equals:"]=2
  79299. //>>excludeEnd("ctx");
  79300. ][0];
  79301. result=$recv($self.performBlock)._value_($self.receiverBottom);
  79302. $self._assert_equals_(["bottom",anObject3],["bottom",result]);
  79303. return self;
  79304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79305. }, function($ctx1) {$ctx1.fill(self,"shouldReturn:and:and:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3,result:result})});
  79306. //>>excludeEnd("ctx");
  79307. }; }),
  79308. $globals.MethodInheritanceTest);
  79309. $core.addMethod(
  79310. $core.method({
  79311. selector: "targetClassBottom",
  79312. protocol: "accessing",
  79313. //>>excludeStart("ide", pragmas.excludeIdeData);
  79314. args: [],
  79315. source: "targetClassBottom\x0a\x09^ JavaScriptException",
  79316. referencedClasses: ["JavaScriptException"],
  79317. //>>excludeEnd("ide");
  79318. pragmas: [],
  79319. messageSends: []
  79320. }, function ($methodClass){ return function (){
  79321. var self=this,$self=this;
  79322. return $globals.JavaScriptException;
  79323. }; }),
  79324. $globals.MethodInheritanceTest);
  79325. $core.addMethod(
  79326. $core.method({
  79327. selector: "targetClassMiddle",
  79328. protocol: "accessing",
  79329. //>>excludeStart("ide", pragmas.excludeIdeData);
  79330. args: [],
  79331. source: "targetClassMiddle\x0a\x09^ Error",
  79332. referencedClasses: ["Error"],
  79333. //>>excludeEnd("ide");
  79334. pragmas: [],
  79335. messageSends: []
  79336. }, function ($methodClass){ return function (){
  79337. var self=this,$self=this;
  79338. return $globals.Error;
  79339. }; }),
  79340. $globals.MethodInheritanceTest);
  79341. $core.addMethod(
  79342. $core.method({
  79343. selector: "targetClassTop",
  79344. protocol: "accessing",
  79345. //>>excludeStart("ide", pragmas.excludeIdeData);
  79346. args: [],
  79347. source: "targetClassTop\x0a\x09^ Object",
  79348. referencedClasses: ["Object"],
  79349. //>>excludeEnd("ide");
  79350. pragmas: [],
  79351. messageSends: []
  79352. }, function ($methodClass){ return function (){
  79353. var self=this,$self=this;
  79354. return $globals.Object;
  79355. }; }),
  79356. $globals.MethodInheritanceTest);
  79357. $core.addMethod(
  79358. $core.method({
  79359. selector: "tearDown",
  79360. protocol: "initialization",
  79361. //>>excludeStart("ide", pragmas.excludeIdeData);
  79362. args: [],
  79363. source: "tearDown\x0a\x09[ self deinstallTop ] on: Error do: [ ].\x0a\x09[ self deinstallMiddle ] on: Error do: [ ].\x0a\x09[ self deinstallBottom ] on: Error do: [ ]",
  79364. referencedClasses: ["Error"],
  79365. //>>excludeEnd("ide");
  79366. pragmas: [],
  79367. messageSends: ["on:do:", "deinstallTop", "deinstallMiddle", "deinstallBottom"]
  79368. }, function ($methodClass){ return function (){
  79369. var self=this,$self=this;
  79370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79371. return $core.withContext(function($ctx1) {
  79372. //>>excludeEnd("ctx");
  79373. [$recv((function(){
  79374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79375. return $core.withContext(function($ctx2) {
  79376. //>>excludeEnd("ctx");
  79377. return $self._deinstallTop();
  79378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79379. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  79380. //>>excludeEnd("ctx");
  79381. }))._on_do_($globals.Error,(function(){
  79382. }))
  79383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79384. ,$ctx1.sendIdx["on:do:"]=1
  79385. //>>excludeEnd("ctx");
  79386. ][0];
  79387. [$recv((function(){
  79388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79389. return $core.withContext(function($ctx2) {
  79390. //>>excludeEnd("ctx");
  79391. return $self._deinstallMiddle();
  79392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79393. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  79394. //>>excludeEnd("ctx");
  79395. }))._on_do_($globals.Error,(function(){
  79396. }))
  79397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79398. ,$ctx1.sendIdx["on:do:"]=2
  79399. //>>excludeEnd("ctx");
  79400. ][0];
  79401. $recv((function(){
  79402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79403. return $core.withContext(function($ctx2) {
  79404. //>>excludeEnd("ctx");
  79405. return $self._deinstallBottom();
  79406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79407. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  79408. //>>excludeEnd("ctx");
  79409. }))._on_do_($globals.Error,(function(){
  79410. }));
  79411. return self;
  79412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79413. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  79414. //>>excludeEnd("ctx");
  79415. }; }),
  79416. $globals.MethodInheritanceTest);
  79417. $core.addMethod(
  79418. $core.method({
  79419. selector: "testMNU11",
  79420. protocol: "tests",
  79421. //>>excludeStart("ide", pragmas.excludeIdeData);
  79422. args: [],
  79423. source: "testMNU11\x0a\x09performBlock := [ :x | x foo ].\x0a\x09self shouldMNU.\x0a\x09self installTop: 'foo ^ false'.\x0a\x09self installTop: 'foo ^ true'.\x0a\x09self deinstallTop.\x0a\x09self shouldMNU",
  79424. referencedClasses: [],
  79425. //>>excludeEnd("ide");
  79426. pragmas: [],
  79427. messageSends: ["foo", "shouldMNU", "installTop:", "deinstallTop"]
  79428. }, function ($methodClass){ return function (){
  79429. var self=this,$self=this;
  79430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79431. return $core.withContext(function($ctx1) {
  79432. //>>excludeEnd("ctx");
  79433. $self.performBlock=(function(x){
  79434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79435. return $core.withContext(function($ctx2) {
  79436. //>>excludeEnd("ctx");
  79437. return $recv(x)._foo();
  79438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79439. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  79440. //>>excludeEnd("ctx");
  79441. });
  79442. [$self._shouldMNU()
  79443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79444. ,$ctx1.sendIdx["shouldMNU"]=1
  79445. //>>excludeEnd("ctx");
  79446. ][0];
  79447. [$self._installTop_("foo ^ false")
  79448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79449. ,$ctx1.sendIdx["installTop:"]=1
  79450. //>>excludeEnd("ctx");
  79451. ][0];
  79452. $self._installTop_("foo ^ true");
  79453. $self._deinstallTop();
  79454. $self._shouldMNU();
  79455. return self;
  79456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79457. }, function($ctx1) {$ctx1.fill(self,"testMNU11",{})});
  79458. //>>excludeEnd("ctx");
  79459. }; }),
  79460. $globals.MethodInheritanceTest);
  79461. $core.addMethod(
  79462. $core.method({
  79463. selector: "testMNU22",
  79464. protocol: "tests",
  79465. //>>excludeStart("ide", pragmas.excludeIdeData);
  79466. args: [],
  79467. source: "testMNU22\x0a\x09performBlock := [ :x | x foo ].\x0a\x09self shouldMNU.\x0a\x09self installMiddle: 'foo ^ false'.\x0a\x09self installMiddle: 'foo ^ true'.\x0a\x09self deinstallMiddle.\x0a\x09self shouldMNU",
  79468. referencedClasses: [],
  79469. //>>excludeEnd("ide");
  79470. pragmas: [],
  79471. messageSends: ["foo", "shouldMNU", "installMiddle:", "deinstallMiddle"]
  79472. }, function ($methodClass){ return function (){
  79473. var self=this,$self=this;
  79474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79475. return $core.withContext(function($ctx1) {
  79476. //>>excludeEnd("ctx");
  79477. $self.performBlock=(function(x){
  79478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79479. return $core.withContext(function($ctx2) {
  79480. //>>excludeEnd("ctx");
  79481. return $recv(x)._foo();
  79482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79483. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  79484. //>>excludeEnd("ctx");
  79485. });
  79486. [$self._shouldMNU()
  79487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79488. ,$ctx1.sendIdx["shouldMNU"]=1
  79489. //>>excludeEnd("ctx");
  79490. ][0];
  79491. [$self._installMiddle_("foo ^ false")
  79492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79493. ,$ctx1.sendIdx["installMiddle:"]=1
  79494. //>>excludeEnd("ctx");
  79495. ][0];
  79496. $self._installMiddle_("foo ^ true");
  79497. $self._deinstallMiddle();
  79498. $self._shouldMNU();
  79499. return self;
  79500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79501. }, function($ctx1) {$ctx1.fill(self,"testMNU22",{})});
  79502. //>>excludeEnd("ctx");
  79503. }; }),
  79504. $globals.MethodInheritanceTest);
  79505. $core.addMethod(
  79506. $core.method({
  79507. selector: "testReturns1",
  79508. protocol: "tests",
  79509. //>>excludeStart("ide", pragmas.excludeIdeData);
  79510. args: [],
  79511. source: "testReturns1\x0a\x09performBlock := [ :x | x foo ].\x0a\x09self installTop: 'foo ^ false'.\x0a\x09self shouldReturn: false.\x0a\x09self installTop: 'foo ^ true'.\x0a\x09self shouldReturn: true",
  79512. referencedClasses: [],
  79513. //>>excludeEnd("ide");
  79514. pragmas: [],
  79515. messageSends: ["foo", "installTop:", "shouldReturn:"]
  79516. }, function ($methodClass){ return function (){
  79517. var self=this,$self=this;
  79518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79519. return $core.withContext(function($ctx1) {
  79520. //>>excludeEnd("ctx");
  79521. $self.performBlock=(function(x){
  79522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79523. return $core.withContext(function($ctx2) {
  79524. //>>excludeEnd("ctx");
  79525. return $recv(x)._foo();
  79526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79527. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  79528. //>>excludeEnd("ctx");
  79529. });
  79530. [$self._installTop_("foo ^ false")
  79531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79532. ,$ctx1.sendIdx["installTop:"]=1
  79533. //>>excludeEnd("ctx");
  79534. ][0];
  79535. [$self._shouldReturn_(false)
  79536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79537. ,$ctx1.sendIdx["shouldReturn:"]=1
  79538. //>>excludeEnd("ctx");
  79539. ][0];
  79540. $self._installTop_("foo ^ true");
  79541. $self._shouldReturn_(true);
  79542. return self;
  79543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79544. }, function($ctx1) {$ctx1.fill(self,"testReturns1",{})});
  79545. //>>excludeEnd("ctx");
  79546. }; }),
  79547. $globals.MethodInheritanceTest);
  79548. $core.addClass("NumberTest", $globals.TestCase, "Kernel-Tests");
  79549. $core.addMethod(
  79550. $core.method({
  79551. selector: "testAbs",
  79552. protocol: "tests",
  79553. //>>excludeStart("ide", pragmas.excludeIdeData);
  79554. args: [],
  79555. source: "testAbs\x0a\x09self assert: 4 abs equals: 4.\x0a\x09self assert: -4 abs equals: 4",
  79556. referencedClasses: [],
  79557. //>>excludeEnd("ide");
  79558. pragmas: [],
  79559. messageSends: ["assert:equals:", "abs"]
  79560. }, function ($methodClass){ return function (){
  79561. var self=this,$self=this;
  79562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79563. return $core.withContext(function($ctx1) {
  79564. //>>excludeEnd("ctx");
  79565. [$self._assert_equals_([(4)._abs()
  79566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79567. ,$ctx1.sendIdx["abs"]=1
  79568. //>>excludeEnd("ctx");
  79569. ][0],(4))
  79570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79571. ,$ctx1.sendIdx["assert:equals:"]=1
  79572. //>>excludeEnd("ctx");
  79573. ][0];
  79574. $self._assert_equals_((-4)._abs(),(4));
  79575. return self;
  79576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79577. }, function($ctx1) {$ctx1.fill(self,"testAbs",{})});
  79578. //>>excludeEnd("ctx");
  79579. }; }),
  79580. $globals.NumberTest);
  79581. $core.addMethod(
  79582. $core.method({
  79583. selector: "testArithmetic",
  79584. protocol: "tests",
  79585. //>>excludeStart("ide", pragmas.excludeIdeData);
  79586. args: [],
  79587. source: "testArithmetic\x0a\x09\x0a\x09\x22We rely on JS here, so we won't test complex behavior, just check if\x0a\x09message sends are corrects\x22\x0a\x0a\x09self assert: 1.5 + 1 equals: 2.5.\x0a\x09self assert: 2 - 1 equals: 1.\x0a\x09self assert: -2 - 1 equals: -3.\x0a\x09self assert: 12 / 2 equals: 6.\x0a\x09self assert: 3 * 4 equals: 12.\x0a\x09self assert: 7 // 2 equals: 3.\x0a\x09self assert: 7 \x5c\x5c 2 equals: 1.\x0a\x0a\x09\x22Simple parenthesis and execution order\x22\x0a\x09self assert: 1 + 2 * 3 equals: 9.\x0a\x09self assert: 1 + (2 * 3) equals: 7",
  79588. referencedClasses: [],
  79589. //>>excludeEnd("ide");
  79590. pragmas: [],
  79591. messageSends: ["assert:equals:", "+", "-", "/", "*", "//", "\x5c\x5c"]
  79592. }, function ($methodClass){ return function (){
  79593. var self=this,$self=this;
  79594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79595. return $core.withContext(function($ctx1) {
  79596. //>>excludeEnd("ctx");
  79597. [$self._assert_equals_([(1.5).__plus((1))
  79598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79599. ,$ctx1.sendIdx["+"]=1
  79600. //>>excludeEnd("ctx");
  79601. ][0],(2.5))
  79602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79603. ,$ctx1.sendIdx["assert:equals:"]=1
  79604. //>>excludeEnd("ctx");
  79605. ][0];
  79606. [$self._assert_equals_([(2).__minus((1))
  79607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79608. ,$ctx1.sendIdx["-"]=1
  79609. //>>excludeEnd("ctx");
  79610. ][0],(1))
  79611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79612. ,$ctx1.sendIdx["assert:equals:"]=2
  79613. //>>excludeEnd("ctx");
  79614. ][0];
  79615. [$self._assert_equals_((-2).__minus((1)),(-3))
  79616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79617. ,$ctx1.sendIdx["assert:equals:"]=3
  79618. //>>excludeEnd("ctx");
  79619. ][0];
  79620. [$self._assert_equals_((12).__slash((2)),(6))
  79621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79622. ,$ctx1.sendIdx["assert:equals:"]=4
  79623. //>>excludeEnd("ctx");
  79624. ][0];
  79625. [$self._assert_equals_([(3).__star((4))
  79626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79627. ,$ctx1.sendIdx["*"]=1
  79628. //>>excludeEnd("ctx");
  79629. ][0],(12))
  79630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79631. ,$ctx1.sendIdx["assert:equals:"]=5
  79632. //>>excludeEnd("ctx");
  79633. ][0];
  79634. [$self._assert_equals_((7).__slash_slash((2)),(3))
  79635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79636. ,$ctx1.sendIdx["assert:equals:"]=6
  79637. //>>excludeEnd("ctx");
  79638. ][0];
  79639. [$self._assert_equals_((7).__backslash_backslash((2)),(1))
  79640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79641. ,$ctx1.sendIdx["assert:equals:"]=7
  79642. //>>excludeEnd("ctx");
  79643. ][0];
  79644. [$self._assert_equals_([$recv([(1).__plus((2))
  79645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79646. ,$ctx1.sendIdx["+"]=2
  79647. //>>excludeEnd("ctx");
  79648. ][0]).__star((3))
  79649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79650. ,$ctx1.sendIdx["*"]=2
  79651. //>>excludeEnd("ctx");
  79652. ][0],(9))
  79653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79654. ,$ctx1.sendIdx["assert:equals:"]=8
  79655. //>>excludeEnd("ctx");
  79656. ][0];
  79657. $self._assert_equals_((1).__plus((2).__star((3))),(7));
  79658. return self;
  79659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79660. }, function($ctx1) {$ctx1.fill(self,"testArithmetic",{})});
  79661. //>>excludeEnd("ctx");
  79662. }; }),
  79663. $globals.NumberTest);
  79664. $core.addMethod(
  79665. $core.method({
  79666. selector: "testAsNumber",
  79667. protocol: "tests",
  79668. //>>excludeStart("ide", pragmas.excludeIdeData);
  79669. args: [],
  79670. source: "testAsNumber\x0a\x09self assert: 3 asNumber equals: 3.",
  79671. referencedClasses: [],
  79672. //>>excludeEnd("ide");
  79673. pragmas: [],
  79674. messageSends: ["assert:equals:", "asNumber"]
  79675. }, function ($methodClass){ return function (){
  79676. var self=this,$self=this;
  79677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79678. return $core.withContext(function($ctx1) {
  79679. //>>excludeEnd("ctx");
  79680. $self._assert_equals_((3)._asNumber(),(3));
  79681. return self;
  79682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79683. }, function($ctx1) {$ctx1.fill(self,"testAsNumber",{})});
  79684. //>>excludeEnd("ctx");
  79685. }; }),
  79686. $globals.NumberTest);
  79687. $core.addMethod(
  79688. $core.method({
  79689. selector: "testBetweenAnd",
  79690. protocol: "tests",
  79691. //>>excludeStart("ide", pragmas.excludeIdeData);
  79692. args: [],
  79693. source: "testBetweenAnd\x0a\x09self assert: (4 between: 3 and: 5).\x0a\x09self assert: (1 between: 5 and: 6) not.\x0a\x09self assert: (90 between: 67 and: 87) not.\x0a\x09self assert: (1 between: 1 and: 1).",
  79694. referencedClasses: [],
  79695. //>>excludeEnd("ide");
  79696. pragmas: [],
  79697. messageSends: ["assert:", "between:and:", "not"]
  79698. }, function ($methodClass){ return function (){
  79699. var self=this,$self=this;
  79700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79701. return $core.withContext(function($ctx1) {
  79702. //>>excludeEnd("ctx");
  79703. [$self._assert_([(4)._between_and_((3),(5))
  79704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79705. ,$ctx1.sendIdx["between:and:"]=1
  79706. //>>excludeEnd("ctx");
  79707. ][0])
  79708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79709. ,$ctx1.sendIdx["assert:"]=1
  79710. //>>excludeEnd("ctx");
  79711. ][0];
  79712. [$self._assert_([$recv([(1)._between_and_((5),(6))
  79713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79714. ,$ctx1.sendIdx["between:and:"]=2
  79715. //>>excludeEnd("ctx");
  79716. ][0])._not()
  79717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79718. ,$ctx1.sendIdx["not"]=1
  79719. //>>excludeEnd("ctx");
  79720. ][0])
  79721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79722. ,$ctx1.sendIdx["assert:"]=2
  79723. //>>excludeEnd("ctx");
  79724. ][0];
  79725. [$self._assert_($recv([(90)._between_and_((67),(87))
  79726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79727. ,$ctx1.sendIdx["between:and:"]=3
  79728. //>>excludeEnd("ctx");
  79729. ][0])._not())
  79730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79731. ,$ctx1.sendIdx["assert:"]=3
  79732. //>>excludeEnd("ctx");
  79733. ][0];
  79734. $self._assert_((1)._between_and_((1),(1)));
  79735. return self;
  79736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79737. }, function($ctx1) {$ctx1.fill(self,"testBetweenAnd",{})});
  79738. //>>excludeEnd("ctx");
  79739. }; }),
  79740. $globals.NumberTest);
  79741. $core.addMethod(
  79742. $core.method({
  79743. selector: "testBitAnd",
  79744. protocol: "tests",
  79745. //>>excludeStart("ide", pragmas.excludeIdeData);
  79746. args: [],
  79747. source: "testBitAnd\x0a\x09self assert: (15 bitAnd: 2) equals: 2.\x0a\x09self assert: (15 bitAnd: 15) equals: 15.\x0a\x09self assert: (-1 bitAnd: 1021) equals: 1021",
  79748. referencedClasses: [],
  79749. //>>excludeEnd("ide");
  79750. pragmas: [],
  79751. messageSends: ["assert:equals:", "bitAnd:"]
  79752. }, function ($methodClass){ return function (){
  79753. var self=this,$self=this;
  79754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79755. return $core.withContext(function($ctx1) {
  79756. //>>excludeEnd("ctx");
  79757. [$self._assert_equals_([(15)._bitAnd_((2))
  79758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79759. ,$ctx1.sendIdx["bitAnd:"]=1
  79760. //>>excludeEnd("ctx");
  79761. ][0],(2))
  79762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79763. ,$ctx1.sendIdx["assert:equals:"]=1
  79764. //>>excludeEnd("ctx");
  79765. ][0];
  79766. [$self._assert_equals_([(15)._bitAnd_((15))
  79767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79768. ,$ctx1.sendIdx["bitAnd:"]=2
  79769. //>>excludeEnd("ctx");
  79770. ][0],(15))
  79771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79772. ,$ctx1.sendIdx["assert:equals:"]=2
  79773. //>>excludeEnd("ctx");
  79774. ][0];
  79775. $self._assert_equals_((-1)._bitAnd_((1021)),(1021));
  79776. return self;
  79777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79778. }, function($ctx1) {$ctx1.fill(self,"testBitAnd",{})});
  79779. //>>excludeEnd("ctx");
  79780. }; }),
  79781. $globals.NumberTest);
  79782. $core.addMethod(
  79783. $core.method({
  79784. selector: "testBitNot",
  79785. protocol: "tests",
  79786. //>>excludeStart("ide", pragmas.excludeIdeData);
  79787. args: [],
  79788. source: "testBitNot\x0a\x09self assert: 2 bitNot equals: -3.\x0a\x09self assert: -1 bitNot equals: 0.\x0a\x09self assert: -1022 bitNot equals: 1021",
  79789. referencedClasses: [],
  79790. //>>excludeEnd("ide");
  79791. pragmas: [],
  79792. messageSends: ["assert:equals:", "bitNot"]
  79793. }, function ($methodClass){ return function (){
  79794. var self=this,$self=this;
  79795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79796. return $core.withContext(function($ctx1) {
  79797. //>>excludeEnd("ctx");
  79798. [$self._assert_equals_([(2)._bitNot()
  79799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79800. ,$ctx1.sendIdx["bitNot"]=1
  79801. //>>excludeEnd("ctx");
  79802. ][0],(-3))
  79803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79804. ,$ctx1.sendIdx["assert:equals:"]=1
  79805. //>>excludeEnd("ctx");
  79806. ][0];
  79807. [$self._assert_equals_([(-1)._bitNot()
  79808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79809. ,$ctx1.sendIdx["bitNot"]=2
  79810. //>>excludeEnd("ctx");
  79811. ][0],(0))
  79812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79813. ,$ctx1.sendIdx["assert:equals:"]=2
  79814. //>>excludeEnd("ctx");
  79815. ][0];
  79816. $self._assert_equals_((-1022)._bitNot(),(1021));
  79817. return self;
  79818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79819. }, function($ctx1) {$ctx1.fill(self,"testBitNot",{})});
  79820. //>>excludeEnd("ctx");
  79821. }; }),
  79822. $globals.NumberTest);
  79823. $core.addMethod(
  79824. $core.method({
  79825. selector: "testBitOr",
  79826. protocol: "tests",
  79827. //>>excludeStart("ide", pragmas.excludeIdeData);
  79828. args: [],
  79829. source: "testBitOr\x0a\x09self assert: (2 bitOr: 4) equals: 6.\x0a\x09self assert: (7 bitOr: 2) equals: 7.\x0a\x09self assert: (-1 bitOr: 1021) equals: -1",
  79830. referencedClasses: [],
  79831. //>>excludeEnd("ide");
  79832. pragmas: [],
  79833. messageSends: ["assert:equals:", "bitOr:"]
  79834. }, function ($methodClass){ return function (){
  79835. var self=this,$self=this;
  79836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79837. return $core.withContext(function($ctx1) {
  79838. //>>excludeEnd("ctx");
  79839. [$self._assert_equals_([(2)._bitOr_((4))
  79840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79841. ,$ctx1.sendIdx["bitOr:"]=1
  79842. //>>excludeEnd("ctx");
  79843. ][0],(6))
  79844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79845. ,$ctx1.sendIdx["assert:equals:"]=1
  79846. //>>excludeEnd("ctx");
  79847. ][0];
  79848. [$self._assert_equals_([(7)._bitOr_((2))
  79849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79850. ,$ctx1.sendIdx["bitOr:"]=2
  79851. //>>excludeEnd("ctx");
  79852. ][0],(7))
  79853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79854. ,$ctx1.sendIdx["assert:equals:"]=2
  79855. //>>excludeEnd("ctx");
  79856. ][0];
  79857. $self._assert_equals_((-1)._bitOr_((1021)),(-1));
  79858. return self;
  79859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79860. }, function($ctx1) {$ctx1.fill(self,"testBitOr",{})});
  79861. //>>excludeEnd("ctx");
  79862. }; }),
  79863. $globals.NumberTest);
  79864. $core.addMethod(
  79865. $core.method({
  79866. selector: "testBitXor",
  79867. protocol: "tests",
  79868. //>>excludeStart("ide", pragmas.excludeIdeData);
  79869. args: [],
  79870. source: "testBitXor\x0a\x09self assert: (2 bitXor: 4) equals: 6.\x0a\x09self assert: (7 bitXor: 2) equals: 5.\x0a\x09self assert: (-1 bitXor: 1021) equals: -1022.\x0a\x09self assert: (91 bitXor: 91) equals: 0",
  79871. referencedClasses: [],
  79872. //>>excludeEnd("ide");
  79873. pragmas: [],
  79874. messageSends: ["assert:equals:", "bitXor:"]
  79875. }, function ($methodClass){ return function (){
  79876. var self=this,$self=this;
  79877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79878. return $core.withContext(function($ctx1) {
  79879. //>>excludeEnd("ctx");
  79880. [$self._assert_equals_([(2)._bitXor_((4))
  79881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79882. ,$ctx1.sendIdx["bitXor:"]=1
  79883. //>>excludeEnd("ctx");
  79884. ][0],(6))
  79885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79886. ,$ctx1.sendIdx["assert:equals:"]=1
  79887. //>>excludeEnd("ctx");
  79888. ][0];
  79889. [$self._assert_equals_([(7)._bitXor_((2))
  79890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79891. ,$ctx1.sendIdx["bitXor:"]=2
  79892. //>>excludeEnd("ctx");
  79893. ][0],(5))
  79894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79895. ,$ctx1.sendIdx["assert:equals:"]=2
  79896. //>>excludeEnd("ctx");
  79897. ][0];
  79898. [$self._assert_equals_([(-1)._bitXor_((1021))
  79899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79900. ,$ctx1.sendIdx["bitXor:"]=3
  79901. //>>excludeEnd("ctx");
  79902. ][0],(-1022))
  79903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79904. ,$ctx1.sendIdx["assert:equals:"]=3
  79905. //>>excludeEnd("ctx");
  79906. ][0];
  79907. $self._assert_equals_((91)._bitXor_((91)),(0));
  79908. return self;
  79909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79910. }, function($ctx1) {$ctx1.fill(self,"testBitXor",{})});
  79911. //>>excludeEnd("ctx");
  79912. }; }),
  79913. $globals.NumberTest);
  79914. $core.addMethod(
  79915. $core.method({
  79916. selector: "testCeiling",
  79917. protocol: "tests",
  79918. //>>excludeStart("ide", pragmas.excludeIdeData);
  79919. args: [],
  79920. source: "testCeiling\x0a\x09self assert: 1.2 ceiling equals: 2.\x0a\x09self assert: -1.2 ceiling equals: -1.\x0a\x09self assert: 1.0 ceiling equals: 1.",
  79921. referencedClasses: [],
  79922. //>>excludeEnd("ide");
  79923. pragmas: [],
  79924. messageSends: ["assert:equals:", "ceiling"]
  79925. }, function ($methodClass){ return function (){
  79926. var self=this,$self=this;
  79927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79928. return $core.withContext(function($ctx1) {
  79929. //>>excludeEnd("ctx");
  79930. [$self._assert_equals_([(1.2)._ceiling()
  79931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79932. ,$ctx1.sendIdx["ceiling"]=1
  79933. //>>excludeEnd("ctx");
  79934. ][0],(2))
  79935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79936. ,$ctx1.sendIdx["assert:equals:"]=1
  79937. //>>excludeEnd("ctx");
  79938. ][0];
  79939. [$self._assert_equals_([(-1.2)._ceiling()
  79940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79941. ,$ctx1.sendIdx["ceiling"]=2
  79942. //>>excludeEnd("ctx");
  79943. ][0],(-1))
  79944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79945. ,$ctx1.sendIdx["assert:equals:"]=2
  79946. //>>excludeEnd("ctx");
  79947. ][0];
  79948. $self._assert_equals_((1)._ceiling(),(1));
  79949. return self;
  79950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79951. }, function($ctx1) {$ctx1.fill(self,"testCeiling",{})});
  79952. //>>excludeEnd("ctx");
  79953. }; }),
  79954. $globals.NumberTest);
  79955. $core.addMethod(
  79956. $core.method({
  79957. selector: "testComparison",
  79958. protocol: "tests",
  79959. //>>excludeStart("ide", pragmas.excludeIdeData);
  79960. args: [],
  79961. source: "testComparison\x0a\x0a\x09self assert: 3 > 2.\x0a\x09self assert: 2 < 3.\x0a\x09\x0a\x09self deny: 3 < 2.\x0a\x09self deny: 2 > 3.\x0a\x0a\x09self assert: 3 >= 3.\x0a\x09self assert: 3.1 >= 3.\x0a\x09self assert: 3 <= 3.\x0a\x09self assert: 3 <= 3.1",
  79962. referencedClasses: [],
  79963. //>>excludeEnd("ide");
  79964. pragmas: [],
  79965. messageSends: ["assert:", ">", "<", "deny:", ">=", "<="]
  79966. }, function ($methodClass){ return function (){
  79967. var self=this,$self=this;
  79968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79969. return $core.withContext(function($ctx1) {
  79970. //>>excludeEnd("ctx");
  79971. [$self._assert_([(3).__gt((2))
  79972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79973. ,$ctx1.sendIdx[">"]=1
  79974. //>>excludeEnd("ctx");
  79975. ][0])
  79976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79977. ,$ctx1.sendIdx["assert:"]=1
  79978. //>>excludeEnd("ctx");
  79979. ][0];
  79980. [$self._assert_([(2).__lt((3))
  79981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79982. ,$ctx1.sendIdx["<"]=1
  79983. //>>excludeEnd("ctx");
  79984. ][0])
  79985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79986. ,$ctx1.sendIdx["assert:"]=2
  79987. //>>excludeEnd("ctx");
  79988. ][0];
  79989. [$self._deny_((3).__lt((2)))
  79990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79991. ,$ctx1.sendIdx["deny:"]=1
  79992. //>>excludeEnd("ctx");
  79993. ][0];
  79994. $self._deny_((2).__gt((3)));
  79995. [$self._assert_([(3).__gt_eq((3))
  79996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79997. ,$ctx1.sendIdx[">="]=1
  79998. //>>excludeEnd("ctx");
  79999. ][0])
  80000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80001. ,$ctx1.sendIdx["assert:"]=3
  80002. //>>excludeEnd("ctx");
  80003. ][0];
  80004. [$self._assert_((3.1).__gt_eq((3)))
  80005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80006. ,$ctx1.sendIdx["assert:"]=4
  80007. //>>excludeEnd("ctx");
  80008. ][0];
  80009. [$self._assert_([(3).__lt_eq((3))
  80010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80011. ,$ctx1.sendIdx["<="]=1
  80012. //>>excludeEnd("ctx");
  80013. ][0])
  80014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80015. ,$ctx1.sendIdx["assert:"]=5
  80016. //>>excludeEnd("ctx");
  80017. ][0];
  80018. $self._assert_((3).__lt_eq((3.1)));
  80019. return self;
  80020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80021. }, function($ctx1) {$ctx1.fill(self,"testComparison",{})});
  80022. //>>excludeEnd("ctx");
  80023. }; }),
  80024. $globals.NumberTest);
  80025. $core.addMethod(
  80026. $core.method({
  80027. selector: "testCopying",
  80028. protocol: "tests",
  80029. //>>excludeStart("ide", pragmas.excludeIdeData);
  80030. args: [],
  80031. source: "testCopying\x0a\x09self assert: 1 copy == 1.\x0a\x09self assert: 1 deepCopy == 1",
  80032. referencedClasses: [],
  80033. //>>excludeEnd("ide");
  80034. pragmas: [],
  80035. messageSends: ["assert:", "==", "copy", "deepCopy"]
  80036. }, function ($methodClass){ return function (){
  80037. var self=this,$self=this;
  80038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80039. return $core.withContext(function($ctx1) {
  80040. //>>excludeEnd("ctx");
  80041. [$self._assert_([$recv((1)._copy()).__eq_eq((1))
  80042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80043. ,$ctx1.sendIdx["=="]=1
  80044. //>>excludeEnd("ctx");
  80045. ][0])
  80046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80047. ,$ctx1.sendIdx["assert:"]=1
  80048. //>>excludeEnd("ctx");
  80049. ][0];
  80050. $self._assert_($recv((1)._deepCopy()).__eq_eq((1)));
  80051. return self;
  80052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80053. }, function($ctx1) {$ctx1.fill(self,"testCopying",{})});
  80054. //>>excludeEnd("ctx");
  80055. }; }),
  80056. $globals.NumberTest);
  80057. $core.addMethod(
  80058. $core.method({
  80059. selector: "testDegreesToRadians",
  80060. protocol: "tests",
  80061. //>>excludeStart("ide", pragmas.excludeIdeData);
  80062. args: [],
  80063. source: "testDegreesToRadians\x0a\x09self assert: (180 degreesToRadians - Number pi) abs <= 0.01.",
  80064. referencedClasses: ["Number"],
  80065. //>>excludeEnd("ide");
  80066. pragmas: [],
  80067. messageSends: ["assert:", "<=", "abs", "-", "degreesToRadians", "pi"]
  80068. }, function ($methodClass){ return function (){
  80069. var self=this,$self=this;
  80070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80071. return $core.withContext(function($ctx1) {
  80072. //>>excludeEnd("ctx");
  80073. $self._assert_($recv($recv($recv((180)._degreesToRadians()).__minus($recv($globals.Number)._pi()))._abs()).__lt_eq((0.01)));
  80074. return self;
  80075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80076. }, function($ctx1) {$ctx1.fill(self,"testDegreesToRadians",{})});
  80077. //>>excludeEnd("ctx");
  80078. }; }),
  80079. $globals.NumberTest);
  80080. $core.addMethod(
  80081. $core.method({
  80082. selector: "testEquality",
  80083. protocol: "tests",
  80084. //>>excludeStart("ide", pragmas.excludeIdeData);
  80085. args: [],
  80086. source: "testEquality\x0a\x09self assert: (1 = 1).\x0a\x09self assert: (0 = 0).\x0a\x09self deny: (1 = 0).\x0a\x0a\x09self assert: (1 yourself = 1).\x0a\x09self assert: (1 = 1 yourself).\x0a\x09self assert: (1 yourself = 1 yourself).\x0a\x09\x0a\x09self deny: 0 = false.\x0a\x09self deny: false = 0.\x0a\x09self deny: '' = 0.\x0a\x09self deny: 0 = ''",
  80087. referencedClasses: [],
  80088. //>>excludeEnd("ide");
  80089. pragmas: [],
  80090. messageSends: ["assert:", "=", "deny:", "yourself"]
  80091. }, function ($methodClass){ return function (){
  80092. var self=this,$self=this;
  80093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80094. return $core.withContext(function($ctx1) {
  80095. //>>excludeEnd("ctx");
  80096. [$self._assert_([(1).__eq((1))
  80097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80098. ,$ctx1.sendIdx["="]=1
  80099. //>>excludeEnd("ctx");
  80100. ][0])
  80101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80102. ,$ctx1.sendIdx["assert:"]=1
  80103. //>>excludeEnd("ctx");
  80104. ][0];
  80105. [$self._assert_([(0).__eq((0))
  80106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80107. ,$ctx1.sendIdx["="]=2
  80108. //>>excludeEnd("ctx");
  80109. ][0])
  80110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80111. ,$ctx1.sendIdx["assert:"]=2
  80112. //>>excludeEnd("ctx");
  80113. ][0];
  80114. [$self._deny_([(1).__eq((0))
  80115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80116. ,$ctx1.sendIdx["="]=3
  80117. //>>excludeEnd("ctx");
  80118. ][0])
  80119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80120. ,$ctx1.sendIdx["deny:"]=1
  80121. //>>excludeEnd("ctx");
  80122. ][0];
  80123. [$self._assert_([$recv([(1)._yourself()
  80124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80125. ,$ctx1.sendIdx["yourself"]=1
  80126. //>>excludeEnd("ctx");
  80127. ][0]).__eq((1))
  80128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80129. ,$ctx1.sendIdx["="]=4
  80130. //>>excludeEnd("ctx");
  80131. ][0])
  80132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80133. ,$ctx1.sendIdx["assert:"]=3
  80134. //>>excludeEnd("ctx");
  80135. ][0];
  80136. [$self._assert_([(1).__eq([(1)._yourself()
  80137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80138. ,$ctx1.sendIdx["yourself"]=2
  80139. //>>excludeEnd("ctx");
  80140. ][0])
  80141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80142. ,$ctx1.sendIdx["="]=5
  80143. //>>excludeEnd("ctx");
  80144. ][0])
  80145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80146. ,$ctx1.sendIdx["assert:"]=4
  80147. //>>excludeEnd("ctx");
  80148. ][0];
  80149. $self._assert_([$recv([(1)._yourself()
  80150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80151. ,$ctx1.sendIdx["yourself"]=3
  80152. //>>excludeEnd("ctx");
  80153. ][0]).__eq((1)._yourself())
  80154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80155. ,$ctx1.sendIdx["="]=6
  80156. //>>excludeEnd("ctx");
  80157. ][0]);
  80158. [$self._deny_([(0).__eq(false)
  80159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80160. ,$ctx1.sendIdx["="]=7
  80161. //>>excludeEnd("ctx");
  80162. ][0])
  80163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80164. ,$ctx1.sendIdx["deny:"]=2
  80165. //>>excludeEnd("ctx");
  80166. ][0];
  80167. [$self._deny_([false.__eq((0))
  80168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80169. ,$ctx1.sendIdx["="]=8
  80170. //>>excludeEnd("ctx");
  80171. ][0])
  80172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80173. ,$ctx1.sendIdx["deny:"]=3
  80174. //>>excludeEnd("ctx");
  80175. ][0];
  80176. [$self._deny_(["".__eq((0))
  80177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80178. ,$ctx1.sendIdx["="]=9
  80179. //>>excludeEnd("ctx");
  80180. ][0])
  80181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80182. ,$ctx1.sendIdx["deny:"]=4
  80183. //>>excludeEnd("ctx");
  80184. ][0];
  80185. $self._deny_((0).__eq(""));
  80186. return self;
  80187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80188. }, function($ctx1) {$ctx1.fill(self,"testEquality",{})});
  80189. //>>excludeEnd("ctx");
  80190. }; }),
  80191. $globals.NumberTest);
  80192. $core.addMethod(
  80193. $core.method({
  80194. selector: "testFloor",
  80195. protocol: "tests",
  80196. //>>excludeStart("ide", pragmas.excludeIdeData);
  80197. args: [],
  80198. source: "testFloor\x0a\x09self assert: 1.2 floor equals: 1.\x0a\x09self assert: -1.2 floor equals: -2.\x0a\x09self assert: 1.0 floor equals: 1.",
  80199. referencedClasses: [],
  80200. //>>excludeEnd("ide");
  80201. pragmas: [],
  80202. messageSends: ["assert:equals:", "floor"]
  80203. }, function ($methodClass){ return function (){
  80204. var self=this,$self=this;
  80205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80206. return $core.withContext(function($ctx1) {
  80207. //>>excludeEnd("ctx");
  80208. [$self._assert_equals_([(1.2)._floor()
  80209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80210. ,$ctx1.sendIdx["floor"]=1
  80211. //>>excludeEnd("ctx");
  80212. ][0],(1))
  80213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80214. ,$ctx1.sendIdx["assert:equals:"]=1
  80215. //>>excludeEnd("ctx");
  80216. ][0];
  80217. [$self._assert_equals_([(-1.2)._floor()
  80218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80219. ,$ctx1.sendIdx["floor"]=2
  80220. //>>excludeEnd("ctx");
  80221. ][0],(-2))
  80222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80223. ,$ctx1.sendIdx["assert:equals:"]=2
  80224. //>>excludeEnd("ctx");
  80225. ][0];
  80226. $self._assert_equals_((1)._floor(),(1));
  80227. return self;
  80228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80229. }, function($ctx1) {$ctx1.fill(self,"testFloor",{})});
  80230. //>>excludeEnd("ctx");
  80231. }; }),
  80232. $globals.NumberTest);
  80233. $core.addMethod(
  80234. $core.method({
  80235. selector: "testHexNumbers",
  80236. protocol: "tests",
  80237. //>>excludeStart("ide", pragmas.excludeIdeData);
  80238. args: [],
  80239. source: "testHexNumbers\x0a\x0a\x09self assert: 16r9 equals: 9.\x0a\x09self assert: 16rA truncated equals: 10.\x0a\x09self assert: 16rB truncated equals: 11.\x0a\x09self assert: 16rC truncated equals: 12.\x0a\x09self assert: 16rD truncated equals: 13.\x0a\x09self assert: 16rE truncated equals: 14.\x0a\x09self assert: 16rF truncated equals: 15",
  80240. referencedClasses: [],
  80241. //>>excludeEnd("ide");
  80242. pragmas: [],
  80243. messageSends: ["assert:equals:", "truncated"]
  80244. }, function ($methodClass){ return function (){
  80245. var self=this,$self=this;
  80246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80247. return $core.withContext(function($ctx1) {
  80248. //>>excludeEnd("ctx");
  80249. [$self._assert_equals_((9),(9))
  80250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80251. ,$ctx1.sendIdx["assert:equals:"]=1
  80252. //>>excludeEnd("ctx");
  80253. ][0];
  80254. [$self._assert_equals_([(10)._truncated()
  80255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80256. ,$ctx1.sendIdx["truncated"]=1
  80257. //>>excludeEnd("ctx");
  80258. ][0],(10))
  80259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80260. ,$ctx1.sendIdx["assert:equals:"]=2
  80261. //>>excludeEnd("ctx");
  80262. ][0];
  80263. [$self._assert_equals_([(11)._truncated()
  80264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80265. ,$ctx1.sendIdx["truncated"]=2
  80266. //>>excludeEnd("ctx");
  80267. ][0],(11))
  80268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80269. ,$ctx1.sendIdx["assert:equals:"]=3
  80270. //>>excludeEnd("ctx");
  80271. ][0];
  80272. [$self._assert_equals_([(12)._truncated()
  80273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80274. ,$ctx1.sendIdx["truncated"]=3
  80275. //>>excludeEnd("ctx");
  80276. ][0],(12))
  80277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80278. ,$ctx1.sendIdx["assert:equals:"]=4
  80279. //>>excludeEnd("ctx");
  80280. ][0];
  80281. [$self._assert_equals_([(13)._truncated()
  80282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80283. ,$ctx1.sendIdx["truncated"]=4
  80284. //>>excludeEnd("ctx");
  80285. ][0],(13))
  80286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80287. ,$ctx1.sendIdx["assert:equals:"]=5
  80288. //>>excludeEnd("ctx");
  80289. ][0];
  80290. [$self._assert_equals_([(14)._truncated()
  80291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80292. ,$ctx1.sendIdx["truncated"]=5
  80293. //>>excludeEnd("ctx");
  80294. ][0],(14))
  80295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80296. ,$ctx1.sendIdx["assert:equals:"]=6
  80297. //>>excludeEnd("ctx");
  80298. ][0];
  80299. $self._assert_equals_((15)._truncated(),(15));
  80300. return self;
  80301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80302. }, function($ctx1) {$ctx1.fill(self,"testHexNumbers",{})});
  80303. //>>excludeEnd("ctx");
  80304. }; }),
  80305. $globals.NumberTest);
  80306. $core.addMethod(
  80307. $core.method({
  80308. selector: "testIdentity",
  80309. protocol: "tests",
  80310. //>>excludeStart("ide", pragmas.excludeIdeData);
  80311. args: [],
  80312. source: "testIdentity\x0a\x09self assert: 1 == 1.\x0a\x09self assert: 0 == 0.\x0a\x09self deny: 1 == 0.\x0a\x0a\x09self assert: 1 yourself == 1.\x0a\x09self assert: 1 == 1 yourself.\x0a\x09self assert: 1 yourself == 1 yourself.\x0a\x09\x0a\x09self deny: 1 == 2",
  80313. referencedClasses: [],
  80314. //>>excludeEnd("ide");
  80315. pragmas: [],
  80316. messageSends: ["assert:", "==", "deny:", "yourself"]
  80317. }, function ($methodClass){ return function (){
  80318. var self=this,$self=this;
  80319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80320. return $core.withContext(function($ctx1) {
  80321. //>>excludeEnd("ctx");
  80322. [$self._assert_([(1).__eq_eq((1))
  80323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80324. ,$ctx1.sendIdx["=="]=1
  80325. //>>excludeEnd("ctx");
  80326. ][0])
  80327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80328. ,$ctx1.sendIdx["assert:"]=1
  80329. //>>excludeEnd("ctx");
  80330. ][0];
  80331. [$self._assert_([(0).__eq_eq((0))
  80332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80333. ,$ctx1.sendIdx["=="]=2
  80334. //>>excludeEnd("ctx");
  80335. ][0])
  80336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80337. ,$ctx1.sendIdx["assert:"]=2
  80338. //>>excludeEnd("ctx");
  80339. ][0];
  80340. [$self._deny_([(1).__eq_eq((0))
  80341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80342. ,$ctx1.sendIdx["=="]=3
  80343. //>>excludeEnd("ctx");
  80344. ][0])
  80345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80346. ,$ctx1.sendIdx["deny:"]=1
  80347. //>>excludeEnd("ctx");
  80348. ][0];
  80349. [$self._assert_([$recv([(1)._yourself()
  80350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80351. ,$ctx1.sendIdx["yourself"]=1
  80352. //>>excludeEnd("ctx");
  80353. ][0]).__eq_eq((1))
  80354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80355. ,$ctx1.sendIdx["=="]=4
  80356. //>>excludeEnd("ctx");
  80357. ][0])
  80358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80359. ,$ctx1.sendIdx["assert:"]=3
  80360. //>>excludeEnd("ctx");
  80361. ][0];
  80362. [$self._assert_([(1).__eq_eq([(1)._yourself()
  80363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80364. ,$ctx1.sendIdx["yourself"]=2
  80365. //>>excludeEnd("ctx");
  80366. ][0])
  80367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80368. ,$ctx1.sendIdx["=="]=5
  80369. //>>excludeEnd("ctx");
  80370. ][0])
  80371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80372. ,$ctx1.sendIdx["assert:"]=4
  80373. //>>excludeEnd("ctx");
  80374. ][0];
  80375. $self._assert_([$recv([(1)._yourself()
  80376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80377. ,$ctx1.sendIdx["yourself"]=3
  80378. //>>excludeEnd("ctx");
  80379. ][0]).__eq_eq((1)._yourself())
  80380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80381. ,$ctx1.sendIdx["=="]=6
  80382. //>>excludeEnd("ctx");
  80383. ][0]);
  80384. $self._deny_((1).__eq_eq((2)));
  80385. return self;
  80386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80387. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{})});
  80388. //>>excludeEnd("ctx");
  80389. }; }),
  80390. $globals.NumberTest);
  80391. $core.addMethod(
  80392. $core.method({
  80393. selector: "testInvalidHexNumbers",
  80394. protocol: "tests",
  80395. //>>excludeStart("ide", pragmas.excludeIdeData);
  80396. args: [],
  80397. source: "testInvalidHexNumbers\x0a\x0a\x09self should: [ 16rG ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rg ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rH ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rh ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rI ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16ri ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rJ ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rj ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rK ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rk ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rL ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rl ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rM ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rm ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rN ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rn ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rO ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16ro ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rP ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rp ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rQ ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rq ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rR ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rr ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rS ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rs ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rT ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rt ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rU ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16ru ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rV ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rv ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rW ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rw ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rX ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rx ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rY ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16ry ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rZ ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rz ] raise: MessageNotUnderstood.\x0a\x09self should: [ 16rABcdEfZ ] raise: MessageNotUnderstood.",
  80398. referencedClasses: ["MessageNotUnderstood"],
  80399. //>>excludeEnd("ide");
  80400. pragmas: [],
  80401. messageSends: ["should:raise:", "rG", "rg", "rH", "rh", "rI", "ri", "rJ", "rj", "rK", "rk", "rL", "rl", "rM", "rm", "rN", "rn", "rO", "ro", "rP", "rp", "rQ", "rq", "rR", "rr", "rS", "rs", "rT", "rt", "rU", "ru", "rV", "rv", "rW", "rw", "rX", "rx", "rY", "ry", "rZ", "rz", "Z"]
  80402. }, function ($methodClass){ return function (){
  80403. var self=this,$self=this;
  80404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80405. return $core.withContext(function($ctx1) {
  80406. //>>excludeEnd("ctx");
  80407. [$self._should_raise_((function(){
  80408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80409. return $core.withContext(function($ctx2) {
  80410. //>>excludeEnd("ctx");
  80411. return (16)._rG();
  80412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80413. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  80414. //>>excludeEnd("ctx");
  80415. }),$globals.MessageNotUnderstood)
  80416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80417. ,$ctx1.sendIdx["should:raise:"]=1
  80418. //>>excludeEnd("ctx");
  80419. ][0];
  80420. [$self._should_raise_((function(){
  80421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80422. return $core.withContext(function($ctx2) {
  80423. //>>excludeEnd("ctx");
  80424. return (16)._rg();
  80425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80426. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  80427. //>>excludeEnd("ctx");
  80428. }),$globals.MessageNotUnderstood)
  80429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80430. ,$ctx1.sendIdx["should:raise:"]=2
  80431. //>>excludeEnd("ctx");
  80432. ][0];
  80433. [$self._should_raise_((function(){
  80434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80435. return $core.withContext(function($ctx2) {
  80436. //>>excludeEnd("ctx");
  80437. return (16)._rH();
  80438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80439. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  80440. //>>excludeEnd("ctx");
  80441. }),$globals.MessageNotUnderstood)
  80442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80443. ,$ctx1.sendIdx["should:raise:"]=3
  80444. //>>excludeEnd("ctx");
  80445. ][0];
  80446. [$self._should_raise_((function(){
  80447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80448. return $core.withContext(function($ctx2) {
  80449. //>>excludeEnd("ctx");
  80450. return (16)._rh();
  80451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80452. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  80453. //>>excludeEnd("ctx");
  80454. }),$globals.MessageNotUnderstood)
  80455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80456. ,$ctx1.sendIdx["should:raise:"]=4
  80457. //>>excludeEnd("ctx");
  80458. ][0];
  80459. [$self._should_raise_((function(){
  80460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80461. return $core.withContext(function($ctx2) {
  80462. //>>excludeEnd("ctx");
  80463. return (16)._rI();
  80464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80465. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  80466. //>>excludeEnd("ctx");
  80467. }),$globals.MessageNotUnderstood)
  80468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80469. ,$ctx1.sendIdx["should:raise:"]=5
  80470. //>>excludeEnd("ctx");
  80471. ][0];
  80472. [$self._should_raise_((function(){
  80473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80474. return $core.withContext(function($ctx2) {
  80475. //>>excludeEnd("ctx");
  80476. return (16)._ri();
  80477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80478. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  80479. //>>excludeEnd("ctx");
  80480. }),$globals.MessageNotUnderstood)
  80481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80482. ,$ctx1.sendIdx["should:raise:"]=6
  80483. //>>excludeEnd("ctx");
  80484. ][0];
  80485. [$self._should_raise_((function(){
  80486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80487. return $core.withContext(function($ctx2) {
  80488. //>>excludeEnd("ctx");
  80489. return (16)._rJ();
  80490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80491. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  80492. //>>excludeEnd("ctx");
  80493. }),$globals.MessageNotUnderstood)
  80494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80495. ,$ctx1.sendIdx["should:raise:"]=7
  80496. //>>excludeEnd("ctx");
  80497. ][0];
  80498. [$self._should_raise_((function(){
  80499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80500. return $core.withContext(function($ctx2) {
  80501. //>>excludeEnd("ctx");
  80502. return (16)._rj();
  80503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80504. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,8)});
  80505. //>>excludeEnd("ctx");
  80506. }),$globals.MessageNotUnderstood)
  80507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80508. ,$ctx1.sendIdx["should:raise:"]=8
  80509. //>>excludeEnd("ctx");
  80510. ][0];
  80511. [$self._should_raise_((function(){
  80512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80513. return $core.withContext(function($ctx2) {
  80514. //>>excludeEnd("ctx");
  80515. return (16)._rK();
  80516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80517. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,9)});
  80518. //>>excludeEnd("ctx");
  80519. }),$globals.MessageNotUnderstood)
  80520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80521. ,$ctx1.sendIdx["should:raise:"]=9
  80522. //>>excludeEnd("ctx");
  80523. ][0];
  80524. [$self._should_raise_((function(){
  80525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80526. return $core.withContext(function($ctx2) {
  80527. //>>excludeEnd("ctx");
  80528. return (16)._rk();
  80529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80530. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,10)});
  80531. //>>excludeEnd("ctx");
  80532. }),$globals.MessageNotUnderstood)
  80533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80534. ,$ctx1.sendIdx["should:raise:"]=10
  80535. //>>excludeEnd("ctx");
  80536. ][0];
  80537. [$self._should_raise_((function(){
  80538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80539. return $core.withContext(function($ctx2) {
  80540. //>>excludeEnd("ctx");
  80541. return (16)._rL();
  80542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80543. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,11)});
  80544. //>>excludeEnd("ctx");
  80545. }),$globals.MessageNotUnderstood)
  80546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80547. ,$ctx1.sendIdx["should:raise:"]=11
  80548. //>>excludeEnd("ctx");
  80549. ][0];
  80550. [$self._should_raise_((function(){
  80551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80552. return $core.withContext(function($ctx2) {
  80553. //>>excludeEnd("ctx");
  80554. return (16)._rl();
  80555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80556. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,12)});
  80557. //>>excludeEnd("ctx");
  80558. }),$globals.MessageNotUnderstood)
  80559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80560. ,$ctx1.sendIdx["should:raise:"]=12
  80561. //>>excludeEnd("ctx");
  80562. ][0];
  80563. [$self._should_raise_((function(){
  80564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80565. return $core.withContext(function($ctx2) {
  80566. //>>excludeEnd("ctx");
  80567. return (16)._rM();
  80568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80569. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,13)});
  80570. //>>excludeEnd("ctx");
  80571. }),$globals.MessageNotUnderstood)
  80572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80573. ,$ctx1.sendIdx["should:raise:"]=13
  80574. //>>excludeEnd("ctx");
  80575. ][0];
  80576. [$self._should_raise_((function(){
  80577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80578. return $core.withContext(function($ctx2) {
  80579. //>>excludeEnd("ctx");
  80580. return (16)._rm();
  80581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80582. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,14)});
  80583. //>>excludeEnd("ctx");
  80584. }),$globals.MessageNotUnderstood)
  80585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80586. ,$ctx1.sendIdx["should:raise:"]=14
  80587. //>>excludeEnd("ctx");
  80588. ][0];
  80589. [$self._should_raise_((function(){
  80590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80591. return $core.withContext(function($ctx2) {
  80592. //>>excludeEnd("ctx");
  80593. return (16)._rN();
  80594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80595. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,15)});
  80596. //>>excludeEnd("ctx");
  80597. }),$globals.MessageNotUnderstood)
  80598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80599. ,$ctx1.sendIdx["should:raise:"]=15
  80600. //>>excludeEnd("ctx");
  80601. ][0];
  80602. [$self._should_raise_((function(){
  80603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80604. return $core.withContext(function($ctx2) {
  80605. //>>excludeEnd("ctx");
  80606. return (16)._rn();
  80607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80608. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,16)});
  80609. //>>excludeEnd("ctx");
  80610. }),$globals.MessageNotUnderstood)
  80611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80612. ,$ctx1.sendIdx["should:raise:"]=16
  80613. //>>excludeEnd("ctx");
  80614. ][0];
  80615. [$self._should_raise_((function(){
  80616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80617. return $core.withContext(function($ctx2) {
  80618. //>>excludeEnd("ctx");
  80619. return (16)._rO();
  80620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80621. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,17)});
  80622. //>>excludeEnd("ctx");
  80623. }),$globals.MessageNotUnderstood)
  80624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80625. ,$ctx1.sendIdx["should:raise:"]=17
  80626. //>>excludeEnd("ctx");
  80627. ][0];
  80628. [$self._should_raise_((function(){
  80629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80630. return $core.withContext(function($ctx2) {
  80631. //>>excludeEnd("ctx");
  80632. return (16)._ro();
  80633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80634. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,18)});
  80635. //>>excludeEnd("ctx");
  80636. }),$globals.MessageNotUnderstood)
  80637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80638. ,$ctx1.sendIdx["should:raise:"]=18
  80639. //>>excludeEnd("ctx");
  80640. ][0];
  80641. [$self._should_raise_((function(){
  80642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80643. return $core.withContext(function($ctx2) {
  80644. //>>excludeEnd("ctx");
  80645. return (16)._rP();
  80646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80647. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,19)});
  80648. //>>excludeEnd("ctx");
  80649. }),$globals.MessageNotUnderstood)
  80650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80651. ,$ctx1.sendIdx["should:raise:"]=19
  80652. //>>excludeEnd("ctx");
  80653. ][0];
  80654. [$self._should_raise_((function(){
  80655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80656. return $core.withContext(function($ctx2) {
  80657. //>>excludeEnd("ctx");
  80658. return (16)._rp();
  80659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80660. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,20)});
  80661. //>>excludeEnd("ctx");
  80662. }),$globals.MessageNotUnderstood)
  80663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80664. ,$ctx1.sendIdx["should:raise:"]=20
  80665. //>>excludeEnd("ctx");
  80666. ][0];
  80667. [$self._should_raise_((function(){
  80668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80669. return $core.withContext(function($ctx2) {
  80670. //>>excludeEnd("ctx");
  80671. return (16)._rQ();
  80672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80673. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,21)});
  80674. //>>excludeEnd("ctx");
  80675. }),$globals.MessageNotUnderstood)
  80676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80677. ,$ctx1.sendIdx["should:raise:"]=21
  80678. //>>excludeEnd("ctx");
  80679. ][0];
  80680. [$self._should_raise_((function(){
  80681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80682. return $core.withContext(function($ctx2) {
  80683. //>>excludeEnd("ctx");
  80684. return (16)._rq();
  80685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80686. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,22)});
  80687. //>>excludeEnd("ctx");
  80688. }),$globals.MessageNotUnderstood)
  80689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80690. ,$ctx1.sendIdx["should:raise:"]=22
  80691. //>>excludeEnd("ctx");
  80692. ][0];
  80693. [$self._should_raise_((function(){
  80694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80695. return $core.withContext(function($ctx2) {
  80696. //>>excludeEnd("ctx");
  80697. return (16)._rR();
  80698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80699. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,23)});
  80700. //>>excludeEnd("ctx");
  80701. }),$globals.MessageNotUnderstood)
  80702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80703. ,$ctx1.sendIdx["should:raise:"]=23
  80704. //>>excludeEnd("ctx");
  80705. ][0];
  80706. [$self._should_raise_((function(){
  80707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80708. return $core.withContext(function($ctx2) {
  80709. //>>excludeEnd("ctx");
  80710. return (16)._rr();
  80711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80712. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,24)});
  80713. //>>excludeEnd("ctx");
  80714. }),$globals.MessageNotUnderstood)
  80715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80716. ,$ctx1.sendIdx["should:raise:"]=24
  80717. //>>excludeEnd("ctx");
  80718. ][0];
  80719. [$self._should_raise_((function(){
  80720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80721. return $core.withContext(function($ctx2) {
  80722. //>>excludeEnd("ctx");
  80723. return (16)._rS();
  80724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80725. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,25)});
  80726. //>>excludeEnd("ctx");
  80727. }),$globals.MessageNotUnderstood)
  80728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80729. ,$ctx1.sendIdx["should:raise:"]=25
  80730. //>>excludeEnd("ctx");
  80731. ][0];
  80732. [$self._should_raise_((function(){
  80733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80734. return $core.withContext(function($ctx2) {
  80735. //>>excludeEnd("ctx");
  80736. return (16)._rs();
  80737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80738. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,26)});
  80739. //>>excludeEnd("ctx");
  80740. }),$globals.MessageNotUnderstood)
  80741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80742. ,$ctx1.sendIdx["should:raise:"]=26
  80743. //>>excludeEnd("ctx");
  80744. ][0];
  80745. [$self._should_raise_((function(){
  80746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80747. return $core.withContext(function($ctx2) {
  80748. //>>excludeEnd("ctx");
  80749. return (16)._rT();
  80750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80751. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,27)});
  80752. //>>excludeEnd("ctx");
  80753. }),$globals.MessageNotUnderstood)
  80754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80755. ,$ctx1.sendIdx["should:raise:"]=27
  80756. //>>excludeEnd("ctx");
  80757. ][0];
  80758. [$self._should_raise_((function(){
  80759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80760. return $core.withContext(function($ctx2) {
  80761. //>>excludeEnd("ctx");
  80762. return (16)._rt();
  80763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80764. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,28)});
  80765. //>>excludeEnd("ctx");
  80766. }),$globals.MessageNotUnderstood)
  80767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80768. ,$ctx1.sendIdx["should:raise:"]=28
  80769. //>>excludeEnd("ctx");
  80770. ][0];
  80771. [$self._should_raise_((function(){
  80772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80773. return $core.withContext(function($ctx2) {
  80774. //>>excludeEnd("ctx");
  80775. return (16)._rU();
  80776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80777. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,29)});
  80778. //>>excludeEnd("ctx");
  80779. }),$globals.MessageNotUnderstood)
  80780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80781. ,$ctx1.sendIdx["should:raise:"]=29
  80782. //>>excludeEnd("ctx");
  80783. ][0];
  80784. [$self._should_raise_((function(){
  80785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80786. return $core.withContext(function($ctx2) {
  80787. //>>excludeEnd("ctx");
  80788. return (16)._ru();
  80789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80790. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,30)});
  80791. //>>excludeEnd("ctx");
  80792. }),$globals.MessageNotUnderstood)
  80793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80794. ,$ctx1.sendIdx["should:raise:"]=30
  80795. //>>excludeEnd("ctx");
  80796. ][0];
  80797. [$self._should_raise_((function(){
  80798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80799. return $core.withContext(function($ctx2) {
  80800. //>>excludeEnd("ctx");
  80801. return (16)._rV();
  80802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80803. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,31)});
  80804. //>>excludeEnd("ctx");
  80805. }),$globals.MessageNotUnderstood)
  80806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80807. ,$ctx1.sendIdx["should:raise:"]=31
  80808. //>>excludeEnd("ctx");
  80809. ][0];
  80810. [$self._should_raise_((function(){
  80811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80812. return $core.withContext(function($ctx2) {
  80813. //>>excludeEnd("ctx");
  80814. return (16)._rv();
  80815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80816. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,32)});
  80817. //>>excludeEnd("ctx");
  80818. }),$globals.MessageNotUnderstood)
  80819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80820. ,$ctx1.sendIdx["should:raise:"]=32
  80821. //>>excludeEnd("ctx");
  80822. ][0];
  80823. [$self._should_raise_((function(){
  80824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80825. return $core.withContext(function($ctx2) {
  80826. //>>excludeEnd("ctx");
  80827. return (16)._rW();
  80828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80829. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,33)});
  80830. //>>excludeEnd("ctx");
  80831. }),$globals.MessageNotUnderstood)
  80832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80833. ,$ctx1.sendIdx["should:raise:"]=33
  80834. //>>excludeEnd("ctx");
  80835. ][0];
  80836. [$self._should_raise_((function(){
  80837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80838. return $core.withContext(function($ctx2) {
  80839. //>>excludeEnd("ctx");
  80840. return (16)._rw();
  80841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80842. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,34)});
  80843. //>>excludeEnd("ctx");
  80844. }),$globals.MessageNotUnderstood)
  80845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80846. ,$ctx1.sendIdx["should:raise:"]=34
  80847. //>>excludeEnd("ctx");
  80848. ][0];
  80849. [$self._should_raise_((function(){
  80850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80851. return $core.withContext(function($ctx2) {
  80852. //>>excludeEnd("ctx");
  80853. return (16)._rX();
  80854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80855. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,35)});
  80856. //>>excludeEnd("ctx");
  80857. }),$globals.MessageNotUnderstood)
  80858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80859. ,$ctx1.sendIdx["should:raise:"]=35
  80860. //>>excludeEnd("ctx");
  80861. ][0];
  80862. [$self._should_raise_((function(){
  80863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80864. return $core.withContext(function($ctx2) {
  80865. //>>excludeEnd("ctx");
  80866. return (16)._rx();
  80867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80868. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,36)});
  80869. //>>excludeEnd("ctx");
  80870. }),$globals.MessageNotUnderstood)
  80871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80872. ,$ctx1.sendIdx["should:raise:"]=36
  80873. //>>excludeEnd("ctx");
  80874. ][0];
  80875. [$self._should_raise_((function(){
  80876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80877. return $core.withContext(function($ctx2) {
  80878. //>>excludeEnd("ctx");
  80879. return (16)._rY();
  80880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80881. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,37)});
  80882. //>>excludeEnd("ctx");
  80883. }),$globals.MessageNotUnderstood)
  80884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80885. ,$ctx1.sendIdx["should:raise:"]=37
  80886. //>>excludeEnd("ctx");
  80887. ][0];
  80888. [$self._should_raise_((function(){
  80889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80890. return $core.withContext(function($ctx2) {
  80891. //>>excludeEnd("ctx");
  80892. return (16)._ry();
  80893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80894. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,38)});
  80895. //>>excludeEnd("ctx");
  80896. }),$globals.MessageNotUnderstood)
  80897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80898. ,$ctx1.sendIdx["should:raise:"]=38
  80899. //>>excludeEnd("ctx");
  80900. ][0];
  80901. [$self._should_raise_((function(){
  80902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80903. return $core.withContext(function($ctx2) {
  80904. //>>excludeEnd("ctx");
  80905. return (16)._rZ();
  80906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80907. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,39)});
  80908. //>>excludeEnd("ctx");
  80909. }),$globals.MessageNotUnderstood)
  80910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80911. ,$ctx1.sendIdx["should:raise:"]=39
  80912. //>>excludeEnd("ctx");
  80913. ][0];
  80914. [$self._should_raise_((function(){
  80915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80916. return $core.withContext(function($ctx2) {
  80917. //>>excludeEnd("ctx");
  80918. return (16)._rz();
  80919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80920. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,40)});
  80921. //>>excludeEnd("ctx");
  80922. }),$globals.MessageNotUnderstood)
  80923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80924. ,$ctx1.sendIdx["should:raise:"]=40
  80925. //>>excludeEnd("ctx");
  80926. ][0];
  80927. $self._should_raise_((function(){
  80928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80929. return $core.withContext(function($ctx2) {
  80930. //>>excludeEnd("ctx");
  80931. return (11259375)._Z();
  80932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80933. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,41)});
  80934. //>>excludeEnd("ctx");
  80935. }),$globals.MessageNotUnderstood);
  80936. return self;
  80937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80938. }, function($ctx1) {$ctx1.fill(self,"testInvalidHexNumbers",{})});
  80939. //>>excludeEnd("ctx");
  80940. }; }),
  80941. $globals.NumberTest);
  80942. $core.addMethod(
  80943. $core.method({
  80944. selector: "testLog",
  80945. protocol: "tests",
  80946. //>>excludeStart("ide", pragmas.excludeIdeData);
  80947. args: [],
  80948. source: "testLog\x0a\x09self assert: 10000 log equals: 4.\x0a\x09self assert: (512 log: 2) equals: 9.\x0a\x09self assert: Number e ln equals: 1.",
  80949. referencedClasses: ["Number"],
  80950. //>>excludeEnd("ide");
  80951. pragmas: [],
  80952. messageSends: ["assert:equals:", "log", "log:", "ln", "e"]
  80953. }, function ($methodClass){ return function (){
  80954. var self=this,$self=this;
  80955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80956. return $core.withContext(function($ctx1) {
  80957. //>>excludeEnd("ctx");
  80958. [$self._assert_equals_((10000)._log(),(4))
  80959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80960. ,$ctx1.sendIdx["assert:equals:"]=1
  80961. //>>excludeEnd("ctx");
  80962. ][0];
  80963. [$self._assert_equals_((512)._log_((2)),(9))
  80964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80965. ,$ctx1.sendIdx["assert:equals:"]=2
  80966. //>>excludeEnd("ctx");
  80967. ][0];
  80968. $self._assert_equals_($recv($recv($globals.Number)._e())._ln(),(1));
  80969. return self;
  80970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80971. }, function($ctx1) {$ctx1.fill(self,"testLog",{})});
  80972. //>>excludeEnd("ctx");
  80973. }; }),
  80974. $globals.NumberTest);
  80975. $core.addMethod(
  80976. $core.method({
  80977. selector: "testMinMax",
  80978. protocol: "tests",
  80979. //>>excludeStart("ide", pragmas.excludeIdeData);
  80980. args: [],
  80981. source: "testMinMax\x0a\x09\x0a\x09self assert: (2 max: 5) equals: 5.\x0a\x09self assert: (2 min: 5) equals: 2.\x0a\x09self assert: (2 min: 5 max: 3) equals: 3.\x0a\x09self assert: (7 min: 5 max: 3) equals: 5.\x0a\x09self assert: (4 min: 5 max: 3) equals: 4.",
  80982. referencedClasses: [],
  80983. //>>excludeEnd("ide");
  80984. pragmas: [],
  80985. messageSends: ["assert:equals:", "max:", "min:", "min:max:"]
  80986. }, function ($methodClass){ return function (){
  80987. var self=this,$self=this;
  80988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80989. return $core.withContext(function($ctx1) {
  80990. //>>excludeEnd("ctx");
  80991. [$self._assert_equals_((2)._max_((5)),(5))
  80992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80993. ,$ctx1.sendIdx["assert:equals:"]=1
  80994. //>>excludeEnd("ctx");
  80995. ][0];
  80996. [$self._assert_equals_((2)._min_((5)),(2))
  80997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80998. ,$ctx1.sendIdx["assert:equals:"]=2
  80999. //>>excludeEnd("ctx");
  81000. ][0];
  81001. [$self._assert_equals_([(2)._min_max_((5),(3))
  81002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81003. ,$ctx1.sendIdx["min:max:"]=1
  81004. //>>excludeEnd("ctx");
  81005. ][0],(3))
  81006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81007. ,$ctx1.sendIdx["assert:equals:"]=3
  81008. //>>excludeEnd("ctx");
  81009. ][0];
  81010. [$self._assert_equals_([(7)._min_max_((5),(3))
  81011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81012. ,$ctx1.sendIdx["min:max:"]=2
  81013. //>>excludeEnd("ctx");
  81014. ][0],(5))
  81015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81016. ,$ctx1.sendIdx["assert:equals:"]=4
  81017. //>>excludeEnd("ctx");
  81018. ][0];
  81019. $self._assert_equals_((4)._min_max_((5),(3)),(4));
  81020. return self;
  81021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81022. }, function($ctx1) {$ctx1.fill(self,"testMinMax",{})});
  81023. //>>excludeEnd("ctx");
  81024. }; }),
  81025. $globals.NumberTest);
  81026. $core.addMethod(
  81027. $core.method({
  81028. selector: "testNegated",
  81029. protocol: "tests",
  81030. //>>excludeStart("ide", pragmas.excludeIdeData);
  81031. args: [],
  81032. source: "testNegated\x0a\x09self assert: 3 negated equals: -3.\x0a\x09self assert: -3 negated equals: 3",
  81033. referencedClasses: [],
  81034. //>>excludeEnd("ide");
  81035. pragmas: [],
  81036. messageSends: ["assert:equals:", "negated"]
  81037. }, function ($methodClass){ return function (){
  81038. var self=this,$self=this;
  81039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81040. return $core.withContext(function($ctx1) {
  81041. //>>excludeEnd("ctx");
  81042. [$self._assert_equals_([(3)._negated()
  81043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81044. ,$ctx1.sendIdx["negated"]=1
  81045. //>>excludeEnd("ctx");
  81046. ][0],(-3))
  81047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81048. ,$ctx1.sendIdx["assert:equals:"]=1
  81049. //>>excludeEnd("ctx");
  81050. ][0];
  81051. $self._assert_equals_((-3)._negated(),(3));
  81052. return self;
  81053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81054. }, function($ctx1) {$ctx1.fill(self,"testNegated",{})});
  81055. //>>excludeEnd("ctx");
  81056. }; }),
  81057. $globals.NumberTest);
  81058. $core.addMethod(
  81059. $core.method({
  81060. selector: "testPrintShowingDecimalPlaces",
  81061. protocol: "tests",
  81062. //>>excludeStart("ide", pragmas.excludeIdeData);
  81063. args: [],
  81064. source: "testPrintShowingDecimalPlaces\x0a\x09self assert: (23 printShowingDecimalPlaces: 2) equals: '23.00'.\x0a\x09self assert: (23.5698 printShowingDecimalPlaces: 2) equals: '23.57'.\x0a\x09self assert: (234.567 negated printShowingDecimalPlaces: 5) equals: '-234.56700'.\x0a\x09self assert: (23.4567 printShowingDecimalPlaces: 0) equals: '23'.\x0a\x09self assert: (23.5567 printShowingDecimalPlaces: 0) equals: '24'.\x0a\x09self assert: (23.4567 negated printShowingDecimalPlaces: 0) equals: '-23'.\x0a\x09self assert: (23.5567 negated printShowingDecimalPlaces: 0) equals: '-24'.\x0a\x09self assert: (100000000 printShowingDecimalPlaces: 1) equals: '100000000.0'.\x0a\x09self assert: (0.98 printShowingDecimalPlaces: 5) equals: '0.98000'.\x0a\x09self assert: (0.98 negated printShowingDecimalPlaces: 2) equals: '-0.98'.\x0a\x09self assert: (2.567 printShowingDecimalPlaces: 2) equals: '2.57'.\x0a\x09self assert: (-2.567 printShowingDecimalPlaces: 2) equals: '-2.57'.\x0a\x09self assert: (0 printShowingDecimalPlaces: 2) equals: '0.00'.",
  81065. referencedClasses: [],
  81066. //>>excludeEnd("ide");
  81067. pragmas: [],
  81068. messageSends: ["assert:equals:", "printShowingDecimalPlaces:", "negated"]
  81069. }, function ($methodClass){ return function (){
  81070. var self=this,$self=this;
  81071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81072. return $core.withContext(function($ctx1) {
  81073. //>>excludeEnd("ctx");
  81074. [$self._assert_equals_([(23)._printShowingDecimalPlaces_((2))
  81075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81076. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=1
  81077. //>>excludeEnd("ctx");
  81078. ][0],"23.00")
  81079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81080. ,$ctx1.sendIdx["assert:equals:"]=1
  81081. //>>excludeEnd("ctx");
  81082. ][0];
  81083. [$self._assert_equals_([(23.5698)._printShowingDecimalPlaces_((2))
  81084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81085. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=2
  81086. //>>excludeEnd("ctx");
  81087. ][0],"23.57")
  81088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81089. ,$ctx1.sendIdx["assert:equals:"]=2
  81090. //>>excludeEnd("ctx");
  81091. ][0];
  81092. [$self._assert_equals_([$recv([(234.567)._negated()
  81093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81094. ,$ctx1.sendIdx["negated"]=1
  81095. //>>excludeEnd("ctx");
  81096. ][0])._printShowingDecimalPlaces_((5))
  81097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81098. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=3
  81099. //>>excludeEnd("ctx");
  81100. ][0],"-234.56700")
  81101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81102. ,$ctx1.sendIdx["assert:equals:"]=3
  81103. //>>excludeEnd("ctx");
  81104. ][0];
  81105. [$self._assert_equals_([(23.4567)._printShowingDecimalPlaces_((0))
  81106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81107. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=4
  81108. //>>excludeEnd("ctx");
  81109. ][0],"23")
  81110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81111. ,$ctx1.sendIdx["assert:equals:"]=4
  81112. //>>excludeEnd("ctx");
  81113. ][0];
  81114. [$self._assert_equals_([(23.5567)._printShowingDecimalPlaces_((0))
  81115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81116. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=5
  81117. //>>excludeEnd("ctx");
  81118. ][0],"24")
  81119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81120. ,$ctx1.sendIdx["assert:equals:"]=5
  81121. //>>excludeEnd("ctx");
  81122. ][0];
  81123. [$self._assert_equals_([$recv([(23.4567)._negated()
  81124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81125. ,$ctx1.sendIdx["negated"]=2
  81126. //>>excludeEnd("ctx");
  81127. ][0])._printShowingDecimalPlaces_((0))
  81128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81129. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=6
  81130. //>>excludeEnd("ctx");
  81131. ][0],"-23")
  81132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81133. ,$ctx1.sendIdx["assert:equals:"]=6
  81134. //>>excludeEnd("ctx");
  81135. ][0];
  81136. [$self._assert_equals_([$recv([(23.5567)._negated()
  81137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81138. ,$ctx1.sendIdx["negated"]=3
  81139. //>>excludeEnd("ctx");
  81140. ][0])._printShowingDecimalPlaces_((0))
  81141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81142. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=7
  81143. //>>excludeEnd("ctx");
  81144. ][0],"-24")
  81145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81146. ,$ctx1.sendIdx["assert:equals:"]=7
  81147. //>>excludeEnd("ctx");
  81148. ][0];
  81149. [$self._assert_equals_([(100000000)._printShowingDecimalPlaces_((1))
  81150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81151. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=8
  81152. //>>excludeEnd("ctx");
  81153. ][0],"100000000.0")
  81154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81155. ,$ctx1.sendIdx["assert:equals:"]=8
  81156. //>>excludeEnd("ctx");
  81157. ][0];
  81158. [$self._assert_equals_([(0.98)._printShowingDecimalPlaces_((5))
  81159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81160. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=9
  81161. //>>excludeEnd("ctx");
  81162. ][0],"0.98000")
  81163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81164. ,$ctx1.sendIdx["assert:equals:"]=9
  81165. //>>excludeEnd("ctx");
  81166. ][0];
  81167. [$self._assert_equals_([$recv((0.98)._negated())._printShowingDecimalPlaces_((2))
  81168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81169. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=10
  81170. //>>excludeEnd("ctx");
  81171. ][0],"-0.98")
  81172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81173. ,$ctx1.sendIdx["assert:equals:"]=10
  81174. //>>excludeEnd("ctx");
  81175. ][0];
  81176. [$self._assert_equals_([(2.567)._printShowingDecimalPlaces_((2))
  81177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81178. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=11
  81179. //>>excludeEnd("ctx");
  81180. ][0],"2.57")
  81181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81182. ,$ctx1.sendIdx["assert:equals:"]=11
  81183. //>>excludeEnd("ctx");
  81184. ][0];
  81185. [$self._assert_equals_([(-2.567)._printShowingDecimalPlaces_((2))
  81186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81187. ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=12
  81188. //>>excludeEnd("ctx");
  81189. ][0],"-2.57")
  81190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81191. ,$ctx1.sendIdx["assert:equals:"]=12
  81192. //>>excludeEnd("ctx");
  81193. ][0];
  81194. $self._assert_equals_((0)._printShowingDecimalPlaces_((2)),"0.00");
  81195. return self;
  81196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81197. }, function($ctx1) {$ctx1.fill(self,"testPrintShowingDecimalPlaces",{})});
  81198. //>>excludeEnd("ctx");
  81199. }; }),
  81200. $globals.NumberTest);
  81201. $core.addMethod(
  81202. $core.method({
  81203. selector: "testPrintStringBase",
  81204. protocol: "tests",
  81205. //>>excludeStart("ide", pragmas.excludeIdeData);
  81206. args: [],
  81207. source: "testPrintStringBase\x0a\x09self assert: (15 printStringBase: 2) equals: '1111'.\x0a\x09self assert: (15 printStringBase: 16) equals: 'f'.\x0a\x09self assert: (256 printStringBase: 16) equals: '100'.\x0a\x09self assert: (256 printStringBase: 2) equals: '100000000'",
  81208. referencedClasses: [],
  81209. //>>excludeEnd("ide");
  81210. pragmas: [],
  81211. messageSends: ["assert:equals:", "printStringBase:"]
  81212. }, function ($methodClass){ return function (){
  81213. var self=this,$self=this;
  81214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81215. return $core.withContext(function($ctx1) {
  81216. //>>excludeEnd("ctx");
  81217. [$self._assert_equals_([(15)._printStringBase_((2))
  81218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81219. ,$ctx1.sendIdx["printStringBase:"]=1
  81220. //>>excludeEnd("ctx");
  81221. ][0],"1111")
  81222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81223. ,$ctx1.sendIdx["assert:equals:"]=1
  81224. //>>excludeEnd("ctx");
  81225. ][0];
  81226. [$self._assert_equals_([(15)._printStringBase_((16))
  81227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81228. ,$ctx1.sendIdx["printStringBase:"]=2
  81229. //>>excludeEnd("ctx");
  81230. ][0],"f")
  81231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81232. ,$ctx1.sendIdx["assert:equals:"]=2
  81233. //>>excludeEnd("ctx");
  81234. ][0];
  81235. [$self._assert_equals_([(256)._printStringBase_((16))
  81236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81237. ,$ctx1.sendIdx["printStringBase:"]=3
  81238. //>>excludeEnd("ctx");
  81239. ][0],"100")
  81240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81241. ,$ctx1.sendIdx["assert:equals:"]=3
  81242. //>>excludeEnd("ctx");
  81243. ][0];
  81244. $self._assert_equals_((256)._printStringBase_((2)),"100000000");
  81245. return self;
  81246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81247. }, function($ctx1) {$ctx1.fill(self,"testPrintStringBase",{})});
  81248. //>>excludeEnd("ctx");
  81249. }; }),
  81250. $globals.NumberTest);
  81251. $core.addMethod(
  81252. $core.method({
  81253. selector: "testRadiansToDegrees",
  81254. protocol: "tests",
  81255. //>>excludeStart("ide", pragmas.excludeIdeData);
  81256. args: [],
  81257. source: "testRadiansToDegrees\x0a\x09self assert: (Number pi radiansToDegrees - 180) abs <= 0.01.",
  81258. referencedClasses: ["Number"],
  81259. //>>excludeEnd("ide");
  81260. pragmas: [],
  81261. messageSends: ["assert:", "<=", "abs", "-", "radiansToDegrees", "pi"]
  81262. }, function ($methodClass){ return function (){
  81263. var self=this,$self=this;
  81264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81265. return $core.withContext(function($ctx1) {
  81266. //>>excludeEnd("ctx");
  81267. $self._assert_($recv($recv($recv($recv($recv($globals.Number)._pi())._radiansToDegrees()).__minus((180)))._abs()).__lt_eq((0.01)));
  81268. return self;
  81269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81270. }, function($ctx1) {$ctx1.fill(self,"testRadiansToDegrees",{})});
  81271. //>>excludeEnd("ctx");
  81272. }; }),
  81273. $globals.NumberTest);
  81274. $core.addMethod(
  81275. $core.method({
  81276. selector: "testRaisedTo",
  81277. protocol: "tests",
  81278. //>>excludeStart("ide", pragmas.excludeIdeData);
  81279. args: [],
  81280. source: "testRaisedTo\x0a\x09self assert: (2 raisedTo: 4) equals: 16.\x0a\x09self assert: (2 raisedTo: 0) equals: 1.\x0a\x09self assert: (2 raisedTo: -3) equals: 0.125.\x0a\x09self assert: (4 raisedTo: 0.5) equals: 2.\x0a\x09\x0a\x09self assert: 2 ** 4 equals: 16.",
  81281. referencedClasses: [],
  81282. //>>excludeEnd("ide");
  81283. pragmas: [],
  81284. messageSends: ["assert:equals:", "raisedTo:", "**"]
  81285. }, function ($methodClass){ return function (){
  81286. var self=this,$self=this;
  81287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81288. return $core.withContext(function($ctx1) {
  81289. //>>excludeEnd("ctx");
  81290. [$self._assert_equals_([(2)._raisedTo_((4))
  81291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81292. ,$ctx1.sendIdx["raisedTo:"]=1
  81293. //>>excludeEnd("ctx");
  81294. ][0],(16))
  81295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81296. ,$ctx1.sendIdx["assert:equals:"]=1
  81297. //>>excludeEnd("ctx");
  81298. ][0];
  81299. [$self._assert_equals_([(2)._raisedTo_((0))
  81300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81301. ,$ctx1.sendIdx["raisedTo:"]=2
  81302. //>>excludeEnd("ctx");
  81303. ][0],(1))
  81304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81305. ,$ctx1.sendIdx["assert:equals:"]=2
  81306. //>>excludeEnd("ctx");
  81307. ][0];
  81308. [$self._assert_equals_([(2)._raisedTo_((-3))
  81309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81310. ,$ctx1.sendIdx["raisedTo:"]=3
  81311. //>>excludeEnd("ctx");
  81312. ][0],(0.125))
  81313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81314. ,$ctx1.sendIdx["assert:equals:"]=3
  81315. //>>excludeEnd("ctx");
  81316. ][0];
  81317. [$self._assert_equals_((4)._raisedTo_((0.5)),(2))
  81318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81319. ,$ctx1.sendIdx["assert:equals:"]=4
  81320. //>>excludeEnd("ctx");
  81321. ][0];
  81322. $self._assert_equals_((2).__star_star((4)),(16));
  81323. return self;
  81324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81325. }, function($ctx1) {$ctx1.fill(self,"testRaisedTo",{})});
  81326. //>>excludeEnd("ctx");
  81327. }; }),
  81328. $globals.NumberTest);
  81329. $core.addMethod(
  81330. $core.method({
  81331. selector: "testRounded",
  81332. protocol: "tests",
  81333. //>>excludeStart("ide", pragmas.excludeIdeData);
  81334. args: [],
  81335. source: "testRounded\x0a\x09\x0a\x09self assert: 3 rounded equals: 3.\x0a\x09self assert: 3.212 rounded equals: 3.\x0a\x09self assert: 3.51 rounded equals: 4",
  81336. referencedClasses: [],
  81337. //>>excludeEnd("ide");
  81338. pragmas: [],
  81339. messageSends: ["assert:equals:", "rounded"]
  81340. }, function ($methodClass){ return function (){
  81341. var self=this,$self=this;
  81342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81343. return $core.withContext(function($ctx1) {
  81344. //>>excludeEnd("ctx");
  81345. [$self._assert_equals_([(3)._rounded()
  81346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81347. ,$ctx1.sendIdx["rounded"]=1
  81348. //>>excludeEnd("ctx");
  81349. ][0],(3))
  81350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81351. ,$ctx1.sendIdx["assert:equals:"]=1
  81352. //>>excludeEnd("ctx");
  81353. ][0];
  81354. [$self._assert_equals_([(3.212)._rounded()
  81355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81356. ,$ctx1.sendIdx["rounded"]=2
  81357. //>>excludeEnd("ctx");
  81358. ][0],(3))
  81359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81360. ,$ctx1.sendIdx["assert:equals:"]=2
  81361. //>>excludeEnd("ctx");
  81362. ][0];
  81363. $self._assert_equals_((3.51)._rounded(),(4));
  81364. return self;
  81365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81366. }, function($ctx1) {$ctx1.fill(self,"testRounded",{})});
  81367. //>>excludeEnd("ctx");
  81368. }; }),
  81369. $globals.NumberTest);
  81370. $core.addMethod(
  81371. $core.method({
  81372. selector: "testSign",
  81373. protocol: "tests",
  81374. //>>excludeStart("ide", pragmas.excludeIdeData);
  81375. args: [],
  81376. source: "testSign\x0a\x09self assert: 5 sign equals: 1.\x0a\x09self assert: 0 sign equals: 0.\x0a\x09self assert: -1.4 sign equals: -1.",
  81377. referencedClasses: [],
  81378. //>>excludeEnd("ide");
  81379. pragmas: [],
  81380. messageSends: ["assert:equals:", "sign"]
  81381. }, function ($methodClass){ return function (){
  81382. var self=this,$self=this;
  81383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81384. return $core.withContext(function($ctx1) {
  81385. //>>excludeEnd("ctx");
  81386. [$self._assert_equals_([(5)._sign()
  81387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81388. ,$ctx1.sendIdx["sign"]=1
  81389. //>>excludeEnd("ctx");
  81390. ][0],(1))
  81391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81392. ,$ctx1.sendIdx["assert:equals:"]=1
  81393. //>>excludeEnd("ctx");
  81394. ][0];
  81395. [$self._assert_equals_([(0)._sign()
  81396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81397. ,$ctx1.sendIdx["sign"]=2
  81398. //>>excludeEnd("ctx");
  81399. ][0],(0))
  81400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81401. ,$ctx1.sendIdx["assert:equals:"]=2
  81402. //>>excludeEnd("ctx");
  81403. ][0];
  81404. $self._assert_equals_((-1.4)._sign(),(-1));
  81405. return self;
  81406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81407. }, function($ctx1) {$ctx1.fill(self,"testSign",{})});
  81408. //>>excludeEnd("ctx");
  81409. }; }),
  81410. $globals.NumberTest);
  81411. $core.addMethod(
  81412. $core.method({
  81413. selector: "testSqrt",
  81414. protocol: "tests",
  81415. //>>excludeStart("ide", pragmas.excludeIdeData);
  81416. args: [],
  81417. source: "testSqrt\x0a\x09\x0a\x09self assert: 4 sqrt equals: 2.\x0a\x09self assert: 16 sqrt equals: 4",
  81418. referencedClasses: [],
  81419. //>>excludeEnd("ide");
  81420. pragmas: [],
  81421. messageSends: ["assert:equals:", "sqrt"]
  81422. }, function ($methodClass){ return function (){
  81423. var self=this,$self=this;
  81424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81425. return $core.withContext(function($ctx1) {
  81426. //>>excludeEnd("ctx");
  81427. [$self._assert_equals_([(4)._sqrt()
  81428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81429. ,$ctx1.sendIdx["sqrt"]=1
  81430. //>>excludeEnd("ctx");
  81431. ][0],(2))
  81432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81433. ,$ctx1.sendIdx["assert:equals:"]=1
  81434. //>>excludeEnd("ctx");
  81435. ][0];
  81436. $self._assert_equals_((16)._sqrt(),(4));
  81437. return self;
  81438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81439. }, function($ctx1) {$ctx1.fill(self,"testSqrt",{})});
  81440. //>>excludeEnd("ctx");
  81441. }; }),
  81442. $globals.NumberTest);
  81443. $core.addMethod(
  81444. $core.method({
  81445. selector: "testSquared",
  81446. protocol: "tests",
  81447. //>>excludeStart("ide", pragmas.excludeIdeData);
  81448. args: [],
  81449. source: "testSquared\x0a\x09\x0a\x09self assert: 4 squared equals: 16",
  81450. referencedClasses: [],
  81451. //>>excludeEnd("ide");
  81452. pragmas: [],
  81453. messageSends: ["assert:equals:", "squared"]
  81454. }, function ($methodClass){ return function (){
  81455. var self=this,$self=this;
  81456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81457. return $core.withContext(function($ctx1) {
  81458. //>>excludeEnd("ctx");
  81459. $self._assert_equals_((4)._squared(),(16));
  81460. return self;
  81461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81462. }, function($ctx1) {$ctx1.fill(self,"testSquared",{})});
  81463. //>>excludeEnd("ctx");
  81464. }; }),
  81465. $globals.NumberTest);
  81466. $core.addMethod(
  81467. $core.method({
  81468. selector: "testTimesRepeat",
  81469. protocol: "tests",
  81470. //>>excludeStart("ide", pragmas.excludeIdeData);
  81471. args: [],
  81472. source: "testTimesRepeat\x0a\x09| i |\x0a\x0a\x09i := 0.\x0a\x090 timesRepeat: [ i := i + 1 ].\x0a\x09self assert: i equals: 0.\x0a\x0a\x095 timesRepeat: [ i := i + 1 ].\x0a\x09self assert: i equals: 5",
  81473. referencedClasses: [],
  81474. //>>excludeEnd("ide");
  81475. pragmas: [],
  81476. messageSends: ["timesRepeat:", "+", "assert:equals:"]
  81477. }, function ($methodClass){ return function (){
  81478. var self=this,$self=this;
  81479. var i;
  81480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81481. return $core.withContext(function($ctx1) {
  81482. //>>excludeEnd("ctx");
  81483. i=(0);
  81484. [(0)._timesRepeat_((function(){
  81485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81486. return $core.withContext(function($ctx2) {
  81487. //>>excludeEnd("ctx");
  81488. i=[$recv(i).__plus((1))
  81489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81490. ,$ctx2.sendIdx["+"]=1
  81491. //>>excludeEnd("ctx");
  81492. ][0];
  81493. return i;
  81494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81495. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  81496. //>>excludeEnd("ctx");
  81497. }))
  81498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81499. ,$ctx1.sendIdx["timesRepeat:"]=1
  81500. //>>excludeEnd("ctx");
  81501. ][0];
  81502. [$self._assert_equals_(i,(0))
  81503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81504. ,$ctx1.sendIdx["assert:equals:"]=1
  81505. //>>excludeEnd("ctx");
  81506. ][0];
  81507. (5)._timesRepeat_((function(){
  81508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81509. return $core.withContext(function($ctx2) {
  81510. //>>excludeEnd("ctx");
  81511. i=$recv(i).__plus((1));
  81512. return i;
  81513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81514. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  81515. //>>excludeEnd("ctx");
  81516. }));
  81517. $self._assert_equals_(i,(5));
  81518. return self;
  81519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81520. }, function($ctx1) {$ctx1.fill(self,"testTimesRepeat",{i:i})});
  81521. //>>excludeEnd("ctx");
  81522. }; }),
  81523. $globals.NumberTest);
  81524. $core.addMethod(
  81525. $core.method({
  81526. selector: "testTo",
  81527. protocol: "tests",
  81528. //>>excludeStart("ide", pragmas.excludeIdeData);
  81529. args: [],
  81530. source: "testTo\x0a\x09self assert: (1 to: 5) equals: #(1 2 3 4 5)",
  81531. referencedClasses: [],
  81532. //>>excludeEnd("ide");
  81533. pragmas: [],
  81534. messageSends: ["assert:equals:", "to:"]
  81535. }, function ($methodClass){ return function (){
  81536. var self=this,$self=this;
  81537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81538. return $core.withContext(function($ctx1) {
  81539. //>>excludeEnd("ctx");
  81540. $self._assert_equals_((1)._to_((5)),[(1), (2), (3), (4), (5)]);
  81541. return self;
  81542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81543. }, function($ctx1) {$ctx1.fill(self,"testTo",{})});
  81544. //>>excludeEnd("ctx");
  81545. }; }),
  81546. $globals.NumberTest);
  81547. $core.addMethod(
  81548. $core.method({
  81549. selector: "testToBy",
  81550. protocol: "tests",
  81551. //>>excludeStart("ide", pragmas.excludeIdeData);
  81552. args: [],
  81553. source: "testToBy\x0a\x09self assert: (0 to: 6 by: 2) equals: #(0 2 4 6).\x0a\x0a\x09self should: [ 1 to: 4 by: 0 ] raise: Error",
  81554. referencedClasses: ["Error"],
  81555. //>>excludeEnd("ide");
  81556. pragmas: [],
  81557. messageSends: ["assert:equals:", "to:by:", "should:raise:"]
  81558. }, function ($methodClass){ return function (){
  81559. var self=this,$self=this;
  81560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81561. return $core.withContext(function($ctx1) {
  81562. //>>excludeEnd("ctx");
  81563. $self._assert_equals_([(0)._to_by_((6),(2))
  81564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81565. ,$ctx1.sendIdx["to:by:"]=1
  81566. //>>excludeEnd("ctx");
  81567. ][0],[(0), (2), (4), (6)]);
  81568. $self._should_raise_((function(){
  81569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81570. return $core.withContext(function($ctx2) {
  81571. //>>excludeEnd("ctx");
  81572. return (1)._to_by_((4),(0));
  81573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81574. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  81575. //>>excludeEnd("ctx");
  81576. }),$globals.Error);
  81577. return self;
  81578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81579. }, function($ctx1) {$ctx1.fill(self,"testToBy",{})});
  81580. //>>excludeEnd("ctx");
  81581. }; }),
  81582. $globals.NumberTest);
  81583. $core.addMethod(
  81584. $core.method({
  81585. selector: "testTrigonometry",
  81586. protocol: "tests",
  81587. //>>excludeStart("ide", pragmas.excludeIdeData);
  81588. args: [],
  81589. source: "testTrigonometry\x0a\x09self assert: 0 cos equals: 1.\x0a\x09self assert: 0 sin equals: 0.\x0a\x09self assert: 0 tan equals: 0.\x0a\x09self assert: 1 arcCos equals: 0.\x0a\x09self assert: 0 arcSin equals: 0.\x0a\x09self assert: 0 arcTan equals: 0.\x0a\x09\x0a\x09self assert: (0 arcTan: 1) equals: 0.\x0a\x09self assert: (1 arcTan: 0) equals: (Number pi / 2)",
  81590. referencedClasses: ["Number"],
  81591. //>>excludeEnd("ide");
  81592. pragmas: [],
  81593. messageSends: ["assert:equals:", "cos", "sin", "tan", "arcCos", "arcSin", "arcTan", "arcTan:", "/", "pi"]
  81594. }, function ($methodClass){ return function (){
  81595. var self=this,$self=this;
  81596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81597. return $core.withContext(function($ctx1) {
  81598. //>>excludeEnd("ctx");
  81599. [$self._assert_equals_((0)._cos(),(1))
  81600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81601. ,$ctx1.sendIdx["assert:equals:"]=1
  81602. //>>excludeEnd("ctx");
  81603. ][0];
  81604. [$self._assert_equals_((0)._sin(),(0))
  81605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81606. ,$ctx1.sendIdx["assert:equals:"]=2
  81607. //>>excludeEnd("ctx");
  81608. ][0];
  81609. [$self._assert_equals_((0)._tan(),(0))
  81610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81611. ,$ctx1.sendIdx["assert:equals:"]=3
  81612. //>>excludeEnd("ctx");
  81613. ][0];
  81614. [$self._assert_equals_((1)._arcCos(),(0))
  81615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81616. ,$ctx1.sendIdx["assert:equals:"]=4
  81617. //>>excludeEnd("ctx");
  81618. ][0];
  81619. [$self._assert_equals_((0)._arcSin(),(0))
  81620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81621. ,$ctx1.sendIdx["assert:equals:"]=5
  81622. //>>excludeEnd("ctx");
  81623. ][0];
  81624. [$self._assert_equals_((0)._arcTan(),(0))
  81625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81626. ,$ctx1.sendIdx["assert:equals:"]=6
  81627. //>>excludeEnd("ctx");
  81628. ][0];
  81629. [$self._assert_equals_([(0)._arcTan_((1))
  81630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81631. ,$ctx1.sendIdx["arcTan:"]=1
  81632. //>>excludeEnd("ctx");
  81633. ][0],(0))
  81634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81635. ,$ctx1.sendIdx["assert:equals:"]=7
  81636. //>>excludeEnd("ctx");
  81637. ][0];
  81638. $self._assert_equals_((1)._arcTan_((0)),$recv($recv($globals.Number)._pi()).__slash((2)));
  81639. return self;
  81640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81641. }, function($ctx1) {$ctx1.fill(self,"testTrigonometry",{})});
  81642. //>>excludeEnd("ctx");
  81643. }; }),
  81644. $globals.NumberTest);
  81645. $core.addMethod(
  81646. $core.method({
  81647. selector: "testTruncated",
  81648. protocol: "tests",
  81649. //>>excludeStart("ide", pragmas.excludeIdeData);
  81650. args: [],
  81651. source: "testTruncated\x0a\x09\x0a\x09self assert: 3 truncated equals: 3.\x0a\x09self assert: 3.212 truncated equals: 3.\x0a\x09self assert: 3.51 truncated equals: 3",
  81652. referencedClasses: [],
  81653. //>>excludeEnd("ide");
  81654. pragmas: [],
  81655. messageSends: ["assert:equals:", "truncated"]
  81656. }, function ($methodClass){ return function (){
  81657. var self=this,$self=this;
  81658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81659. return $core.withContext(function($ctx1) {
  81660. //>>excludeEnd("ctx");
  81661. [$self._assert_equals_([(3)._truncated()
  81662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81663. ,$ctx1.sendIdx["truncated"]=1
  81664. //>>excludeEnd("ctx");
  81665. ][0],(3))
  81666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81667. ,$ctx1.sendIdx["assert:equals:"]=1
  81668. //>>excludeEnd("ctx");
  81669. ][0];
  81670. [$self._assert_equals_([(3.212)._truncated()
  81671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81672. ,$ctx1.sendIdx["truncated"]=2
  81673. //>>excludeEnd("ctx");
  81674. ][0],(3))
  81675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81676. ,$ctx1.sendIdx["assert:equals:"]=2
  81677. //>>excludeEnd("ctx");
  81678. ][0];
  81679. $self._assert_equals_((3.51)._truncated(),(3));
  81680. return self;
  81681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81682. }, function($ctx1) {$ctx1.fill(self,"testTruncated",{})});
  81683. //>>excludeEnd("ctx");
  81684. }; }),
  81685. $globals.NumberTest);
  81686. $core.addClass("ObjectMock", $globals.Object, "Kernel-Tests");
  81687. $core.setSlots($globals.ObjectMock, ["foo", "bar"]);
  81688. //>>excludeStart("ide", pragmas.excludeIdeData);
  81689. $globals.ObjectMock.comment="ObjectMock is there only to perform tests on classes.";
  81690. //>>excludeEnd("ide");
  81691. $core.addMethod(
  81692. $core.method({
  81693. selector: "foo",
  81694. protocol: "not yet classified",
  81695. //>>excludeStart("ide", pragmas.excludeIdeData);
  81696. args: [],
  81697. source: "foo\x0a\x09^ foo",
  81698. referencedClasses: [],
  81699. //>>excludeEnd("ide");
  81700. pragmas: [],
  81701. messageSends: []
  81702. }, function ($methodClass){ return function (){
  81703. var self=this,$self=this;
  81704. return $self.foo;
  81705. }; }),
  81706. $globals.ObjectMock);
  81707. $core.addMethod(
  81708. $core.method({
  81709. selector: "foo:",
  81710. protocol: "not yet classified",
  81711. //>>excludeStart("ide", pragmas.excludeIdeData);
  81712. args: ["anObject"],
  81713. source: "foo: anObject\x0a\x09foo := anObject",
  81714. referencedClasses: [],
  81715. //>>excludeEnd("ide");
  81716. pragmas: [],
  81717. messageSends: []
  81718. }, function ($methodClass){ return function (anObject){
  81719. var self=this,$self=this;
  81720. $self.foo=anObject;
  81721. return self;
  81722. }; }),
  81723. $globals.ObjectMock);
  81724. $core.addClass("ObjectTest", $globals.TestCase, "Kernel-Tests");
  81725. $core.addMethod(
  81726. $core.method({
  81727. selector: "notDefined",
  81728. protocol: "tests",
  81729. //>>excludeStart("ide", pragmas.excludeIdeData);
  81730. args: [],
  81731. source: "notDefined\x0a\x09<inlineJS: 'return void 0;'>",
  81732. referencedClasses: [],
  81733. //>>excludeEnd("ide");
  81734. pragmas: [["inlineJS:", ["return void 0;"]]],
  81735. messageSends: []
  81736. }, function ($methodClass){ return function (){
  81737. var self=this,$self=this;
  81738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81739. return $core.withContext(function($ctx1) {
  81740. //>>excludeEnd("ctx");
  81741. return void 0;;
  81742. return self;
  81743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81744. }, function($ctx1) {$ctx1.fill(self,"notDefined",{})});
  81745. //>>excludeEnd("ctx");
  81746. }; }),
  81747. $globals.ObjectTest);
  81748. $core.addMethod(
  81749. $core.method({
  81750. selector: "testBasicAccess",
  81751. protocol: "tests",
  81752. //>>excludeStart("ide", pragmas.excludeIdeData);
  81753. args: [],
  81754. source: "testBasicAccess\x0a\x09| o |\x0a\x09o := Object new.\x0a\x09o basicAt: 'a' put: 1.\x0a\x09self assert: (o basicAt: 'a') equals: 1.\x0a\x09self assert: (o basicAt: 'b') equals: nil",
  81755. referencedClasses: ["Object"],
  81756. //>>excludeEnd("ide");
  81757. pragmas: [],
  81758. messageSends: ["new", "basicAt:put:", "assert:equals:", "basicAt:"]
  81759. }, function ($methodClass){ return function (){
  81760. var self=this,$self=this;
  81761. var o;
  81762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81763. return $core.withContext(function($ctx1) {
  81764. //>>excludeEnd("ctx");
  81765. o=$recv($globals.Object)._new();
  81766. $recv(o)._basicAt_put_("a",(1));
  81767. [$self._assert_equals_([$recv(o)._basicAt_("a")
  81768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81769. ,$ctx1.sendIdx["basicAt:"]=1
  81770. //>>excludeEnd("ctx");
  81771. ][0],(1))
  81772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81773. ,$ctx1.sendIdx["assert:equals:"]=1
  81774. //>>excludeEnd("ctx");
  81775. ][0];
  81776. $self._assert_equals_($recv(o)._basicAt_("b"),nil);
  81777. return self;
  81778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81779. }, function($ctx1) {$ctx1.fill(self,"testBasicAccess",{o:o})});
  81780. //>>excludeEnd("ctx");
  81781. }; }),
  81782. $globals.ObjectTest);
  81783. $core.addMethod(
  81784. $core.method({
  81785. selector: "testBasicPerform",
  81786. protocol: "tests",
  81787. //>>excludeStart("ide", pragmas.excludeIdeData);
  81788. args: [],
  81789. source: "testBasicPerform\x0a\x09| o |\x0a\x09o := Object new.\x0a\x09o basicAt: 'func' put: [ 'hello' ].\x0a\x09o basicAt: 'func2' put: [ :a | a + 1 ].\x0a\x0a\x09self assert: (o basicPerform: 'func') equals: 'hello'.\x0a\x09self assert: (o basicPerform: 'func2' withArguments: #(3)) equals: 4",
  81790. referencedClasses: ["Object"],
  81791. //>>excludeEnd("ide");
  81792. pragmas: [],
  81793. messageSends: ["new", "basicAt:put:", "+", "assert:equals:", "basicPerform:", "basicPerform:withArguments:"]
  81794. }, function ($methodClass){ return function (){
  81795. var self=this,$self=this;
  81796. var o;
  81797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81798. return $core.withContext(function($ctx1) {
  81799. //>>excludeEnd("ctx");
  81800. o=$recv($globals.Object)._new();
  81801. [$recv(o)._basicAt_put_("func",(function(){
  81802. return "hello";
  81803. }))
  81804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81805. ,$ctx1.sendIdx["basicAt:put:"]=1
  81806. //>>excludeEnd("ctx");
  81807. ][0];
  81808. $recv(o)._basicAt_put_("func2",(function(a){
  81809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81810. return $core.withContext(function($ctx2) {
  81811. //>>excludeEnd("ctx");
  81812. return $recv(a).__plus((1));
  81813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81814. }, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)});
  81815. //>>excludeEnd("ctx");
  81816. }));
  81817. [$self._assert_equals_($recv(o)._basicPerform_("func"),"hello")
  81818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81819. ,$ctx1.sendIdx["assert:equals:"]=1
  81820. //>>excludeEnd("ctx");
  81821. ][0];
  81822. $self._assert_equals_($recv(o)._basicPerform_withArguments_("func2",[(3)]),(4));
  81823. return self;
  81824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81825. }, function($ctx1) {$ctx1.fill(self,"testBasicPerform",{o:o})});
  81826. //>>excludeEnd("ctx");
  81827. }; }),
  81828. $globals.ObjectTest);
  81829. $core.addMethod(
  81830. $core.method({
  81831. selector: "testDNU",
  81832. protocol: "tests",
  81833. //>>excludeStart("ide", pragmas.excludeIdeData);
  81834. args: [],
  81835. source: "testDNU\x0a\x09self should: [ Object new foo ] raise: MessageNotUnderstood",
  81836. referencedClasses: ["Object", "MessageNotUnderstood"],
  81837. //>>excludeEnd("ide");
  81838. pragmas: [],
  81839. messageSends: ["should:raise:", "foo", "new"]
  81840. }, function ($methodClass){ return function (){
  81841. var self=this,$self=this;
  81842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81843. return $core.withContext(function($ctx1) {
  81844. //>>excludeEnd("ctx");
  81845. $self._should_raise_((function(){
  81846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81847. return $core.withContext(function($ctx2) {
  81848. //>>excludeEnd("ctx");
  81849. return $recv($recv($globals.Object)._new())._foo();
  81850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81851. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  81852. //>>excludeEnd("ctx");
  81853. }),$globals.MessageNotUnderstood);
  81854. return self;
  81855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81856. }, function($ctx1) {$ctx1.fill(self,"testDNU",{})});
  81857. //>>excludeEnd("ctx");
  81858. }; }),
  81859. $globals.ObjectTest);
  81860. $core.addMethod(
  81861. $core.method({
  81862. selector: "testEquality",
  81863. protocol: "tests",
  81864. //>>excludeStart("ide", pragmas.excludeIdeData);
  81865. args: [],
  81866. source: "testEquality\x0a\x09| o |\x0a\x09o := Object new.\x0a\x09self deny: o = Object new.\x0a\x09self assert: (o = o).\x0a\x09self assert: (o yourself = o).\x0a\x09self assert: (o = o yourself)",
  81867. referencedClasses: ["Object"],
  81868. //>>excludeEnd("ide");
  81869. pragmas: [],
  81870. messageSends: ["new", "deny:", "=", "assert:", "yourself"]
  81871. }, function ($methodClass){ return function (){
  81872. var self=this,$self=this;
  81873. var o;
  81874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81875. return $core.withContext(function($ctx1) {
  81876. //>>excludeEnd("ctx");
  81877. o=[$recv($globals.Object)._new()
  81878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81879. ,$ctx1.sendIdx["new"]=1
  81880. //>>excludeEnd("ctx");
  81881. ][0];
  81882. $self._deny_([$recv(o).__eq($recv($globals.Object)._new())
  81883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81884. ,$ctx1.sendIdx["="]=1
  81885. //>>excludeEnd("ctx");
  81886. ][0]);
  81887. [$self._assert_([$recv(o).__eq(o)
  81888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81889. ,$ctx1.sendIdx["="]=2
  81890. //>>excludeEnd("ctx");
  81891. ][0])
  81892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81893. ,$ctx1.sendIdx["assert:"]=1
  81894. //>>excludeEnd("ctx");
  81895. ][0];
  81896. [$self._assert_([$recv([$recv(o)._yourself()
  81897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81898. ,$ctx1.sendIdx["yourself"]=1
  81899. //>>excludeEnd("ctx");
  81900. ][0]).__eq(o)
  81901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81902. ,$ctx1.sendIdx["="]=3
  81903. //>>excludeEnd("ctx");
  81904. ][0])
  81905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81906. ,$ctx1.sendIdx["assert:"]=2
  81907. //>>excludeEnd("ctx");
  81908. ][0];
  81909. $self._assert_($recv(o).__eq($recv(o)._yourself()));
  81910. return self;
  81911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81912. }, function($ctx1) {$ctx1.fill(self,"testEquality",{o:o})});
  81913. //>>excludeEnd("ctx");
  81914. }; }),
  81915. $globals.ObjectTest);
  81916. $core.addMethod(
  81917. $core.method({
  81918. selector: "testHalt",
  81919. protocol: "tests",
  81920. //>>excludeStart("ide", pragmas.excludeIdeData);
  81921. args: [],
  81922. source: "testHalt\x0a\x09self should: [ Object new halt ] raise: Error",
  81923. referencedClasses: ["Object", "Error"],
  81924. //>>excludeEnd("ide");
  81925. pragmas: [],
  81926. messageSends: ["should:raise:", "halt", "new"]
  81927. }, function ($methodClass){ return function (){
  81928. var self=this,$self=this;
  81929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81930. return $core.withContext(function($ctx1) {
  81931. //>>excludeEnd("ctx");
  81932. $self._should_raise_((function(){
  81933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81934. return $core.withContext(function($ctx2) {
  81935. //>>excludeEnd("ctx");
  81936. return $recv($recv($globals.Object)._new())._halt();
  81937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81938. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  81939. //>>excludeEnd("ctx");
  81940. }),$globals.Error);
  81941. return self;
  81942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81943. }, function($ctx1) {$ctx1.fill(self,"testHalt",{})});
  81944. //>>excludeEnd("ctx");
  81945. }; }),
  81946. $globals.ObjectTest);
  81947. $core.addMethod(
  81948. $core.method({
  81949. selector: "testIdentity",
  81950. protocol: "tests",
  81951. //>>excludeStart("ide", pragmas.excludeIdeData);
  81952. args: [],
  81953. source: "testIdentity\x0a\x09| o |\x0a\x09o := Object new.\x0a\x09self deny: o == Object new.\x0a\x09self assert: o == o.\x0a\x09self assert: o yourself == o.\x0a\x09self assert: o == o yourself",
  81954. referencedClasses: ["Object"],
  81955. //>>excludeEnd("ide");
  81956. pragmas: [],
  81957. messageSends: ["new", "deny:", "==", "assert:", "yourself"]
  81958. }, function ($methodClass){ return function (){
  81959. var self=this,$self=this;
  81960. var o;
  81961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81962. return $core.withContext(function($ctx1) {
  81963. //>>excludeEnd("ctx");
  81964. o=[$recv($globals.Object)._new()
  81965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81966. ,$ctx1.sendIdx["new"]=1
  81967. //>>excludeEnd("ctx");
  81968. ][0];
  81969. $self._deny_([$recv(o).__eq_eq($recv($globals.Object)._new())
  81970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81971. ,$ctx1.sendIdx["=="]=1
  81972. //>>excludeEnd("ctx");
  81973. ][0]);
  81974. [$self._assert_([$recv(o).__eq_eq(o)
  81975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81976. ,$ctx1.sendIdx["=="]=2
  81977. //>>excludeEnd("ctx");
  81978. ][0])
  81979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81980. ,$ctx1.sendIdx["assert:"]=1
  81981. //>>excludeEnd("ctx");
  81982. ][0];
  81983. [$self._assert_([$recv([$recv(o)._yourself()
  81984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81985. ,$ctx1.sendIdx["yourself"]=1
  81986. //>>excludeEnd("ctx");
  81987. ][0]).__eq_eq(o)
  81988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81989. ,$ctx1.sendIdx["=="]=3
  81990. //>>excludeEnd("ctx");
  81991. ][0])
  81992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81993. ,$ctx1.sendIdx["assert:"]=2
  81994. //>>excludeEnd("ctx");
  81995. ][0];
  81996. $self._assert_($recv(o).__eq_eq($recv(o)._yourself()));
  81997. return self;
  81998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  81999. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{o:o})});
  82000. //>>excludeEnd("ctx");
  82001. }; }),
  82002. $globals.ObjectTest);
  82003. $core.addMethod(
  82004. $core.method({
  82005. selector: "testIfNil",
  82006. protocol: "tests",
  82007. //>>excludeStart("ide", pragmas.excludeIdeData);
  82008. args: [],
  82009. source: "testIfNil\x0a\x09self deny: Object new isNil.\x0a\x09self deny: (Object new ifNil: [ true ]) = true.\x0a\x09self assert: (Object new ifNotNil: [ true ]) equals: true.\x0a\x0a\x09self assert: (Object new ifNil: [ false ] ifNotNil: [ true ]) equals: true.\x0a\x09self assert: (Object new ifNotNil: [ true ] ifNil: [ false ]) equals: true",
  82010. referencedClasses: ["Object"],
  82011. //>>excludeEnd("ide");
  82012. pragmas: [],
  82013. messageSends: ["deny:", "isNil", "new", "=", "ifNil:", "assert:equals:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"]
  82014. }, function ($methodClass){ return function (){
  82015. var self=this,$self=this;
  82016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82017. return $core.withContext(function($ctx1) {
  82018. //>>excludeEnd("ctx");
  82019. var $1,$2,$3,$4,$5,$6,$7,$8;
  82020. [$self._deny_($recv([$recv($globals.Object)._new()
  82021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82022. ,$ctx1.sendIdx["new"]=1
  82023. //>>excludeEnd("ctx");
  82024. ][0])._isNil())
  82025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82026. ,$ctx1.sendIdx["deny:"]=1
  82027. //>>excludeEnd("ctx");
  82028. ][0];
  82029. $1=[$recv($globals.Object)._new()
  82030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82031. ,$ctx1.sendIdx["new"]=2
  82032. //>>excludeEnd("ctx");
  82033. ][0];
  82034. if($1 == null || $1.a$nil){
  82035. $2=true;
  82036. } else {
  82037. $2=$1;
  82038. }
  82039. $self._deny_($recv($2).__eq(true));
  82040. $3=[$recv($globals.Object)._new()
  82041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82042. ,$ctx1.sendIdx["new"]=3
  82043. //>>excludeEnd("ctx");
  82044. ][0];
  82045. if($3 == null || $3.a$nil){
  82046. $4=$3;
  82047. } else {
  82048. $4=true;
  82049. }
  82050. [$self._assert_equals_($4,true)
  82051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82052. ,$ctx1.sendIdx["assert:equals:"]=1
  82053. //>>excludeEnd("ctx");
  82054. ][0];
  82055. $5=[$recv($globals.Object)._new()
  82056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82057. ,$ctx1.sendIdx["new"]=4
  82058. //>>excludeEnd("ctx");
  82059. ][0];
  82060. if($5 == null || $5.a$nil){
  82061. $6=false;
  82062. } else {
  82063. $6=true;
  82064. }
  82065. [$self._assert_equals_($6,true)
  82066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82067. ,$ctx1.sendIdx["assert:equals:"]=2
  82068. //>>excludeEnd("ctx");
  82069. ][0];
  82070. $7=$recv($globals.Object)._new();
  82071. if($7 == null || $7.a$nil){
  82072. $8=false;
  82073. } else {
  82074. $8=true;
  82075. }
  82076. $self._assert_equals_($8,true);
  82077. return self;
  82078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82079. }, function($ctx1) {$ctx1.fill(self,"testIfNil",{})});
  82080. //>>excludeEnd("ctx");
  82081. }; }),
  82082. $globals.ObjectTest);
  82083. $core.addMethod(
  82084. $core.method({
  82085. selector: "testInstVars",
  82086. protocol: "tests",
  82087. //>>excludeStart("ide", pragmas.excludeIdeData);
  82088. args: [],
  82089. source: "testInstVars\x0a\x09| o |\x0a\x09o := ObjectMock new.\x0a\x09self assert: (o instVarNamed: #foo) equals: nil.\x0a\x0a\x09o instVarNamed: #foo put: 1.\x0a\x09self assert: (o instVarNamed: #foo) equals: 1.\x0a\x09self assert: (o instVarNamed: 'foo') equals: 1",
  82090. referencedClasses: ["ObjectMock"],
  82091. //>>excludeEnd("ide");
  82092. pragmas: [],
  82093. messageSends: ["new", "assert:equals:", "instVarNamed:", "instVarNamed:put:"]
  82094. }, function ($methodClass){ return function (){
  82095. var self=this,$self=this;
  82096. var o;
  82097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82098. return $core.withContext(function($ctx1) {
  82099. //>>excludeEnd("ctx");
  82100. o=$recv($globals.ObjectMock)._new();
  82101. [$self._assert_equals_([$recv(o)._instVarNamed_("foo")
  82102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82103. ,$ctx1.sendIdx["instVarNamed:"]=1
  82104. //>>excludeEnd("ctx");
  82105. ][0],nil)
  82106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82107. ,$ctx1.sendIdx["assert:equals:"]=1
  82108. //>>excludeEnd("ctx");
  82109. ][0];
  82110. $recv(o)._instVarNamed_put_("foo",(1));
  82111. [$self._assert_equals_([$recv(o)._instVarNamed_("foo")
  82112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82113. ,$ctx1.sendIdx["instVarNamed:"]=2
  82114. //>>excludeEnd("ctx");
  82115. ][0],(1))
  82116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82117. ,$ctx1.sendIdx["assert:equals:"]=2
  82118. //>>excludeEnd("ctx");
  82119. ][0];
  82120. $self._assert_equals_($recv(o)._instVarNamed_("foo"),(1));
  82121. return self;
  82122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82123. }, function($ctx1) {$ctx1.fill(self,"testInstVars",{o:o})});
  82124. //>>excludeEnd("ctx");
  82125. }; }),
  82126. $globals.ObjectTest);
  82127. $core.addMethod(
  82128. $core.method({
  82129. selector: "testNilUndefined",
  82130. protocol: "tests",
  82131. //>>excludeStart("ide", pragmas.excludeIdeData);
  82132. args: [],
  82133. source: "testNilUndefined\x0a\x09\x22nil in Smalltalk is the undefined object in JS\x22\x0a\x0a\x09self assert: self notDefined equals: nil",
  82134. referencedClasses: [],
  82135. //>>excludeEnd("ide");
  82136. pragmas: [],
  82137. messageSends: ["assert:equals:", "notDefined"]
  82138. }, function ($methodClass){ return function (){
  82139. var self=this,$self=this;
  82140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82141. return $core.withContext(function($ctx1) {
  82142. //>>excludeEnd("ctx");
  82143. $self._assert_equals_($self._notDefined(),nil);
  82144. return self;
  82145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82146. }, function($ctx1) {$ctx1.fill(self,"testNilUndefined",{})});
  82147. //>>excludeEnd("ctx");
  82148. }; }),
  82149. $globals.ObjectTest);
  82150. $core.addMethod(
  82151. $core.method({
  82152. selector: "testYourself",
  82153. protocol: "tests",
  82154. //>>excludeStart("ide", pragmas.excludeIdeData);
  82155. args: [],
  82156. source: "testYourself\x0a\x09| o |\x0a\x09o := ObjectMock new.\x0a\x09self assert: o yourself == o",
  82157. referencedClasses: ["ObjectMock"],
  82158. //>>excludeEnd("ide");
  82159. pragmas: [],
  82160. messageSends: ["new", "assert:", "==", "yourself"]
  82161. }, function ($methodClass){ return function (){
  82162. var self=this,$self=this;
  82163. var o;
  82164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82165. return $core.withContext(function($ctx1) {
  82166. //>>excludeEnd("ctx");
  82167. o=$recv($globals.ObjectMock)._new();
  82168. $self._assert_($recv($recv(o)._yourself()).__eq_eq(o));
  82169. return self;
  82170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82171. }, function($ctx1) {$ctx1.fill(self,"testYourself",{o:o})});
  82172. //>>excludeEnd("ctx");
  82173. }; }),
  82174. $globals.ObjectTest);
  82175. $core.addClass("PointTest", $globals.TestCase, "Kernel-Tests");
  82176. $core.addMethod(
  82177. $core.method({
  82178. selector: "testAccessing",
  82179. protocol: "tests",
  82180. //>>excludeStart("ide", pragmas.excludeIdeData);
  82181. args: [],
  82182. source: "testAccessing\x0a\x09self assert: (Point x: 3 y: 4) x equals: 3.\x0a\x09self assert: (Point x: 3 y: 4) y equals: 4.\x0a\x09self assert: (Point new x: 3) x equals: 3.\x0a\x09self assert: (Point new y: 4) y equals: 4",
  82183. referencedClasses: ["Point"],
  82184. //>>excludeEnd("ide");
  82185. pragmas: [],
  82186. messageSends: ["assert:equals:", "x", "x:y:", "y", "x:", "new", "y:"]
  82187. }, function ($methodClass){ return function (){
  82188. var self=this,$self=this;
  82189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82190. return $core.withContext(function($ctx1) {
  82191. //>>excludeEnd("ctx");
  82192. [$self._assert_equals_([$recv([$recv($globals.Point)._x_y_((3),(4))
  82193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82194. ,$ctx1.sendIdx["x:y:"]=1
  82195. //>>excludeEnd("ctx");
  82196. ][0])._x()
  82197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82198. ,$ctx1.sendIdx["x"]=1
  82199. //>>excludeEnd("ctx");
  82200. ][0],(3))
  82201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82202. ,$ctx1.sendIdx["assert:equals:"]=1
  82203. //>>excludeEnd("ctx");
  82204. ][0];
  82205. [$self._assert_equals_([$recv($recv($globals.Point)._x_y_((3),(4)))._y()
  82206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82207. ,$ctx1.sendIdx["y"]=1
  82208. //>>excludeEnd("ctx");
  82209. ][0],(4))
  82210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82211. ,$ctx1.sendIdx["assert:equals:"]=2
  82212. //>>excludeEnd("ctx");
  82213. ][0];
  82214. [$self._assert_equals_($recv($recv([$recv($globals.Point)._new()
  82215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82216. ,$ctx1.sendIdx["new"]=1
  82217. //>>excludeEnd("ctx");
  82218. ][0])._x_((3)))._x(),(3))
  82219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82220. ,$ctx1.sendIdx["assert:equals:"]=3
  82221. //>>excludeEnd("ctx");
  82222. ][0];
  82223. $self._assert_equals_($recv($recv($recv($globals.Point)._new())._y_((4)))._y(),(4));
  82224. return self;
  82225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82226. }, function($ctx1) {$ctx1.fill(self,"testAccessing",{})});
  82227. //>>excludeEnd("ctx");
  82228. }; }),
  82229. $globals.PointTest);
  82230. $core.addMethod(
  82231. $core.method({
  82232. selector: "testAngle",
  82233. protocol: "tests",
  82234. //>>excludeStart("ide", pragmas.excludeIdeData);
  82235. args: [],
  82236. source: "testAngle\x0a\x09self assert: (-1@0) angle equals: Number pi",
  82237. referencedClasses: ["Number"],
  82238. //>>excludeEnd("ide");
  82239. pragmas: [],
  82240. messageSends: ["assert:equals:", "angle", "@", "pi"]
  82241. }, function ($methodClass){ return function (){
  82242. var self=this,$self=this;
  82243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82244. return $core.withContext(function($ctx1) {
  82245. //>>excludeEnd("ctx");
  82246. $self._assert_equals_($recv((-1).__at((0)))._angle(),$recv($globals.Number)._pi());
  82247. return self;
  82248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82249. }, function($ctx1) {$ctx1.fill(self,"testAngle",{})});
  82250. //>>excludeEnd("ctx");
  82251. }; }),
  82252. $globals.PointTest);
  82253. $core.addMethod(
  82254. $core.method({
  82255. selector: "testArithmetic",
  82256. protocol: "tests",
  82257. //>>excludeStart("ide", pragmas.excludeIdeData);
  82258. args: [],
  82259. source: "testArithmetic\x0a\x09self assert: 3@4 * (3@4 ) equals: (Point x: 9 y: 16).\x0a\x09self assert: 3@4 + (3@4 ) equals: (Point x: 6 y: 8).\x0a\x09self assert: 3@4 - (3@4 ) equals: (Point x: 0 y: 0).\x0a\x09self assert: 6@8 / (3@4 ) equals: (Point x: 2 y: 2)",
  82260. referencedClasses: ["Point"],
  82261. //>>excludeEnd("ide");
  82262. pragmas: [],
  82263. messageSends: ["assert:equals:", "*", "@", "x:y:", "+", "-", "/"]
  82264. }, function ($methodClass){ return function (){
  82265. var self=this,$self=this;
  82266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82267. return $core.withContext(function($ctx1) {
  82268. //>>excludeEnd("ctx");
  82269. [$self._assert_equals_($recv([(3).__at((4))
  82270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82271. ,$ctx1.sendIdx["@"]=1
  82272. //>>excludeEnd("ctx");
  82273. ][0]).__star([(3).__at((4))
  82274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82275. ,$ctx1.sendIdx["@"]=2
  82276. //>>excludeEnd("ctx");
  82277. ][0]),[$recv($globals.Point)._x_y_((9),(16))
  82278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82279. ,$ctx1.sendIdx["x:y:"]=1
  82280. //>>excludeEnd("ctx");
  82281. ][0])
  82282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82283. ,$ctx1.sendIdx["assert:equals:"]=1
  82284. //>>excludeEnd("ctx");
  82285. ][0];
  82286. [$self._assert_equals_($recv([(3).__at((4))
  82287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82288. ,$ctx1.sendIdx["@"]=3
  82289. //>>excludeEnd("ctx");
  82290. ][0]).__plus([(3).__at((4))
  82291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82292. ,$ctx1.sendIdx["@"]=4
  82293. //>>excludeEnd("ctx");
  82294. ][0]),[$recv($globals.Point)._x_y_((6),(8))
  82295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82296. ,$ctx1.sendIdx["x:y:"]=2
  82297. //>>excludeEnd("ctx");
  82298. ][0])
  82299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82300. ,$ctx1.sendIdx["assert:equals:"]=2
  82301. //>>excludeEnd("ctx");
  82302. ][0];
  82303. [$self._assert_equals_($recv([(3).__at((4))
  82304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82305. ,$ctx1.sendIdx["@"]=5
  82306. //>>excludeEnd("ctx");
  82307. ][0]).__minus([(3).__at((4))
  82308. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82309. ,$ctx1.sendIdx["@"]=6
  82310. //>>excludeEnd("ctx");
  82311. ][0]),[$recv($globals.Point)._x_y_((0),(0))
  82312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82313. ,$ctx1.sendIdx["x:y:"]=3
  82314. //>>excludeEnd("ctx");
  82315. ][0])
  82316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82317. ,$ctx1.sendIdx["assert:equals:"]=3
  82318. //>>excludeEnd("ctx");
  82319. ][0];
  82320. $self._assert_equals_($recv([(6).__at((8))
  82321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82322. ,$ctx1.sendIdx["@"]=7
  82323. //>>excludeEnd("ctx");
  82324. ][0]).__slash((3).__at((4))),$recv($globals.Point)._x_y_((2),(2)));
  82325. return self;
  82326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82327. }, function($ctx1) {$ctx1.fill(self,"testArithmetic",{})});
  82328. //>>excludeEnd("ctx");
  82329. }; }),
  82330. $globals.PointTest);
  82331. $core.addMethod(
  82332. $core.method({
  82333. selector: "testAt",
  82334. protocol: "tests",
  82335. //>>excludeStart("ide", pragmas.excludeIdeData);
  82336. args: [],
  82337. source: "testAt\x0a\x09self assert: 3@4 equals: (Point x: 3 y: 4)",
  82338. referencedClasses: ["Point"],
  82339. //>>excludeEnd("ide");
  82340. pragmas: [],
  82341. messageSends: ["assert:equals:", "@", "x:y:"]
  82342. }, function ($methodClass){ return function (){
  82343. var self=this,$self=this;
  82344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82345. return $core.withContext(function($ctx1) {
  82346. //>>excludeEnd("ctx");
  82347. $self._assert_equals_((3).__at((4)),$recv($globals.Point)._x_y_((3),(4)));
  82348. return self;
  82349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82350. }, function($ctx1) {$ctx1.fill(self,"testAt",{})});
  82351. //>>excludeEnd("ctx");
  82352. }; }),
  82353. $globals.PointTest);
  82354. $core.addMethod(
  82355. $core.method({
  82356. selector: "testComparison",
  82357. protocol: "tests",
  82358. //>>excludeStart("ide", pragmas.excludeIdeData);
  82359. args: [],
  82360. source: "testComparison\x0a\x09self assert: 3@4 < (4@5).\x0a\x09self deny: 3@4 < (4@4).\x0a\x09\x0a\x09self assert: 4@5 <= (4@5).\x0a\x09self deny: 4@5 <= (3@5).\x0a\x09\x0a\x09self assert: 5@6 > (4@5).\x0a\x09self deny: 5@6 > (6@6).\x0a\x09\x0a\x09self assert: 4@5 >= (4@5).\x0a\x09self deny: 4@5 >= (5@5)",
  82361. referencedClasses: [],
  82362. //>>excludeEnd("ide");
  82363. pragmas: [],
  82364. messageSends: ["assert:", "<", "@", "deny:", "<=", ">", ">="]
  82365. }, function ($methodClass){ return function (){
  82366. var self=this,$self=this;
  82367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82368. return $core.withContext(function($ctx1) {
  82369. //>>excludeEnd("ctx");
  82370. [$self._assert_([$recv([(3).__at((4))
  82371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82372. ,$ctx1.sendIdx["@"]=1
  82373. //>>excludeEnd("ctx");
  82374. ][0]).__lt([(4).__at((5))
  82375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82376. ,$ctx1.sendIdx["@"]=2
  82377. //>>excludeEnd("ctx");
  82378. ][0])
  82379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82380. ,$ctx1.sendIdx["<"]=1
  82381. //>>excludeEnd("ctx");
  82382. ][0])
  82383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82384. ,$ctx1.sendIdx["assert:"]=1
  82385. //>>excludeEnd("ctx");
  82386. ][0];
  82387. [$self._deny_($recv([(3).__at((4))
  82388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82389. ,$ctx1.sendIdx["@"]=3
  82390. //>>excludeEnd("ctx");
  82391. ][0]).__lt([(4).__at((4))
  82392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82393. ,$ctx1.sendIdx["@"]=4
  82394. //>>excludeEnd("ctx");
  82395. ][0]))
  82396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82397. ,$ctx1.sendIdx["deny:"]=1
  82398. //>>excludeEnd("ctx");
  82399. ][0];
  82400. [$self._assert_([$recv([(4).__at((5))
  82401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82402. ,$ctx1.sendIdx["@"]=5
  82403. //>>excludeEnd("ctx");
  82404. ][0]).__lt_eq([(4).__at((5))
  82405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82406. ,$ctx1.sendIdx["@"]=6
  82407. //>>excludeEnd("ctx");
  82408. ][0])
  82409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82410. ,$ctx1.sendIdx["<="]=1
  82411. //>>excludeEnd("ctx");
  82412. ][0])
  82413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82414. ,$ctx1.sendIdx["assert:"]=2
  82415. //>>excludeEnd("ctx");
  82416. ][0];
  82417. [$self._deny_($recv([(4).__at((5))
  82418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82419. ,$ctx1.sendIdx["@"]=7
  82420. //>>excludeEnd("ctx");
  82421. ][0]).__lt_eq([(3).__at((5))
  82422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82423. ,$ctx1.sendIdx["@"]=8
  82424. //>>excludeEnd("ctx");
  82425. ][0]))
  82426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82427. ,$ctx1.sendIdx["deny:"]=2
  82428. //>>excludeEnd("ctx");
  82429. ][0];
  82430. [$self._assert_([$recv([(5).__at((6))
  82431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82432. ,$ctx1.sendIdx["@"]=9
  82433. //>>excludeEnd("ctx");
  82434. ][0]).__gt([(4).__at((5))
  82435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82436. ,$ctx1.sendIdx["@"]=10
  82437. //>>excludeEnd("ctx");
  82438. ][0])
  82439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82440. ,$ctx1.sendIdx[">"]=1
  82441. //>>excludeEnd("ctx");
  82442. ][0])
  82443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82444. ,$ctx1.sendIdx["assert:"]=3
  82445. //>>excludeEnd("ctx");
  82446. ][0];
  82447. [$self._deny_($recv([(5).__at((6))
  82448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82449. ,$ctx1.sendIdx["@"]=11
  82450. //>>excludeEnd("ctx");
  82451. ][0]).__gt([(6).__at((6))
  82452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82453. ,$ctx1.sendIdx["@"]=12
  82454. //>>excludeEnd("ctx");
  82455. ][0]))
  82456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82457. ,$ctx1.sendIdx["deny:"]=3
  82458. //>>excludeEnd("ctx");
  82459. ][0];
  82460. $self._assert_([$recv([(4).__at((5))
  82461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82462. ,$ctx1.sendIdx["@"]=13
  82463. //>>excludeEnd("ctx");
  82464. ][0]).__gt_eq([(4).__at((5))
  82465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82466. ,$ctx1.sendIdx["@"]=14
  82467. //>>excludeEnd("ctx");
  82468. ][0])
  82469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82470. ,$ctx1.sendIdx[">="]=1
  82471. //>>excludeEnd("ctx");
  82472. ][0]);
  82473. $self._deny_($recv([(4).__at((5))
  82474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82475. ,$ctx1.sendIdx["@"]=15
  82476. //>>excludeEnd("ctx");
  82477. ][0]).__gt_eq((5).__at((5))));
  82478. return self;
  82479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82480. }, function($ctx1) {$ctx1.fill(self,"testComparison",{})});
  82481. //>>excludeEnd("ctx");
  82482. }; }),
  82483. $globals.PointTest);
  82484. $core.addMethod(
  82485. $core.method({
  82486. selector: "testDotProduct",
  82487. protocol: "tests",
  82488. //>>excludeStart("ide", pragmas.excludeIdeData);
  82489. args: [],
  82490. source: "testDotProduct\x0a\x09self assert: (2@3 dotProduct: 3@7) equals: 27",
  82491. referencedClasses: [],
  82492. //>>excludeEnd("ide");
  82493. pragmas: [],
  82494. messageSends: ["assert:equals:", "dotProduct:", "@"]
  82495. }, function ($methodClass){ return function (){
  82496. var self=this,$self=this;
  82497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82498. return $core.withContext(function($ctx1) {
  82499. //>>excludeEnd("ctx");
  82500. $self._assert_equals_($recv([(2).__at((3))
  82501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82502. ,$ctx1.sendIdx["@"]=1
  82503. //>>excludeEnd("ctx");
  82504. ][0])._dotProduct_((3).__at((7))),(27));
  82505. return self;
  82506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82507. }, function($ctx1) {$ctx1.fill(self,"testDotProduct",{})});
  82508. //>>excludeEnd("ctx");
  82509. }; }),
  82510. $globals.PointTest);
  82511. $core.addMethod(
  82512. $core.method({
  82513. selector: "testEgality",
  82514. protocol: "tests",
  82515. //>>excludeStart("ide", pragmas.excludeIdeData);
  82516. args: [],
  82517. source: "testEgality\x0a\x09self assert: (3@4 = (3@4)).\x0a\x09self deny: 3@5 = (3@6)",
  82518. referencedClasses: [],
  82519. //>>excludeEnd("ide");
  82520. pragmas: [],
  82521. messageSends: ["assert:", "=", "@", "deny:"]
  82522. }, function ($methodClass){ return function (){
  82523. var self=this,$self=this;
  82524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82525. return $core.withContext(function($ctx1) {
  82526. //>>excludeEnd("ctx");
  82527. $self._assert_([$recv([(3).__at((4))
  82528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82529. ,$ctx1.sendIdx["@"]=1
  82530. //>>excludeEnd("ctx");
  82531. ][0]).__eq([(3).__at((4))
  82532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82533. ,$ctx1.sendIdx["@"]=2
  82534. //>>excludeEnd("ctx");
  82535. ][0])
  82536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82537. ,$ctx1.sendIdx["="]=1
  82538. //>>excludeEnd("ctx");
  82539. ][0]);
  82540. $self._deny_($recv([(3).__at((5))
  82541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82542. ,$ctx1.sendIdx["@"]=3
  82543. //>>excludeEnd("ctx");
  82544. ][0]).__eq((3).__at((6))));
  82545. return self;
  82546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82547. }, function($ctx1) {$ctx1.fill(self,"testEgality",{})});
  82548. //>>excludeEnd("ctx");
  82549. }; }),
  82550. $globals.PointTest);
  82551. $core.addMethod(
  82552. $core.method({
  82553. selector: "testNew",
  82554. protocol: "tests",
  82555. //>>excludeStart("ide", pragmas.excludeIdeData);
  82556. args: [],
  82557. source: "testNew\x0a\x0a\x09self assert: (Point new x: 3) y equals: nil.\x0a\x09self deny: (Point new x: 3) x = 0.\x0a\x09self assert: (Point new y: 4) x equals: nil.\x0a\x09self deny: (Point new y: 4) y = 0",
  82558. referencedClasses: ["Point"],
  82559. //>>excludeEnd("ide");
  82560. pragmas: [],
  82561. messageSends: ["assert:equals:", "y", "x:", "new", "deny:", "=", "x", "y:"]
  82562. }, function ($methodClass){ return function (){
  82563. var self=this,$self=this;
  82564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82565. return $core.withContext(function($ctx1) {
  82566. //>>excludeEnd("ctx");
  82567. [$self._assert_equals_([$recv([$recv([$recv($globals.Point)._new()
  82568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82569. ,$ctx1.sendIdx["new"]=1
  82570. //>>excludeEnd("ctx");
  82571. ][0])._x_((3))
  82572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82573. ,$ctx1.sendIdx["x:"]=1
  82574. //>>excludeEnd("ctx");
  82575. ][0])._y()
  82576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82577. ,$ctx1.sendIdx["y"]=1
  82578. //>>excludeEnd("ctx");
  82579. ][0],nil)
  82580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82581. ,$ctx1.sendIdx["assert:equals:"]=1
  82582. //>>excludeEnd("ctx");
  82583. ][0];
  82584. [$self._deny_([$recv([$recv($recv([$recv($globals.Point)._new()
  82585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82586. ,$ctx1.sendIdx["new"]=2
  82587. //>>excludeEnd("ctx");
  82588. ][0])._x_((3)))._x()
  82589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82590. ,$ctx1.sendIdx["x"]=1
  82591. //>>excludeEnd("ctx");
  82592. ][0]).__eq((0))
  82593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82594. ,$ctx1.sendIdx["="]=1
  82595. //>>excludeEnd("ctx");
  82596. ][0])
  82597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82598. ,$ctx1.sendIdx["deny:"]=1
  82599. //>>excludeEnd("ctx");
  82600. ][0];
  82601. $self._assert_equals_($recv([$recv([$recv($globals.Point)._new()
  82602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82603. ,$ctx1.sendIdx["new"]=3
  82604. //>>excludeEnd("ctx");
  82605. ][0])._y_((4))
  82606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82607. ,$ctx1.sendIdx["y:"]=1
  82608. //>>excludeEnd("ctx");
  82609. ][0])._x(),nil);
  82610. $self._deny_($recv($recv($recv($recv($globals.Point)._new())._y_((4)))._y()).__eq((0)));
  82611. return self;
  82612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82613. }, function($ctx1) {$ctx1.fill(self,"testNew",{})});
  82614. //>>excludeEnd("ctx");
  82615. }; }),
  82616. $globals.PointTest);
  82617. $core.addMethod(
  82618. $core.method({
  82619. selector: "testNormal",
  82620. protocol: "tests",
  82621. //>>excludeStart("ide", pragmas.excludeIdeData);
  82622. args: [],
  82623. source: "testNormal\x0a\x09self assert: (1@0) normal equals: 0@1",
  82624. referencedClasses: [],
  82625. //>>excludeEnd("ide");
  82626. pragmas: [],
  82627. messageSends: ["assert:equals:", "normal", "@"]
  82628. }, function ($methodClass){ return function (){
  82629. var self=this,$self=this;
  82630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82631. return $core.withContext(function($ctx1) {
  82632. //>>excludeEnd("ctx");
  82633. $self._assert_equals_($recv([(1).__at((0))
  82634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82635. ,$ctx1.sendIdx["@"]=1
  82636. //>>excludeEnd("ctx");
  82637. ][0])._normal(),(0).__at((1)));
  82638. return self;
  82639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82640. }, function($ctx1) {$ctx1.fill(self,"testNormal",{})});
  82641. //>>excludeEnd("ctx");
  82642. }; }),
  82643. $globals.PointTest);
  82644. $core.addMethod(
  82645. $core.method({
  82646. selector: "testNormalized",
  82647. protocol: "tests",
  82648. //>>excludeStart("ide", pragmas.excludeIdeData);
  82649. args: [],
  82650. source: "testNormalized\x0a\x09self assert: (0@2) normalized equals: 0@1.\x0a\x09self assert: (0@0) normalized equals: 0@0.",
  82651. referencedClasses: [],
  82652. //>>excludeEnd("ide");
  82653. pragmas: [],
  82654. messageSends: ["assert:equals:", "normalized", "@"]
  82655. }, function ($methodClass){ return function (){
  82656. var self=this,$self=this;
  82657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82658. return $core.withContext(function($ctx1) {
  82659. //>>excludeEnd("ctx");
  82660. [$self._assert_equals_([$recv([(0).__at((2))
  82661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82662. ,$ctx1.sendIdx["@"]=1
  82663. //>>excludeEnd("ctx");
  82664. ][0])._normalized()
  82665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82666. ,$ctx1.sendIdx["normalized"]=1
  82667. //>>excludeEnd("ctx");
  82668. ][0],[(0).__at((1))
  82669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82670. ,$ctx1.sendIdx["@"]=2
  82671. //>>excludeEnd("ctx");
  82672. ][0])
  82673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82674. ,$ctx1.sendIdx["assert:equals:"]=1
  82675. //>>excludeEnd("ctx");
  82676. ][0];
  82677. $self._assert_equals_($recv([(0).__at((0))
  82678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82679. ,$ctx1.sendIdx["@"]=3
  82680. //>>excludeEnd("ctx");
  82681. ][0])._normalized(),(0).__at((0)));
  82682. return self;
  82683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82684. }, function($ctx1) {$ctx1.fill(self,"testNormalized",{})});
  82685. //>>excludeEnd("ctx");
  82686. }; }),
  82687. $globals.PointTest);
  82688. $core.addMethod(
  82689. $core.method({
  82690. selector: "testPolarCoordinates",
  82691. protocol: "tests",
  82692. //>>excludeStart("ide", pragmas.excludeIdeData);
  82693. args: [],
  82694. source: "testPolarCoordinates\x0a\x09self assert: (1@0) r equals: 1.\x0a\x09self assert: (0@0) r equals: 0.",
  82695. referencedClasses: [],
  82696. //>>excludeEnd("ide");
  82697. pragmas: [],
  82698. messageSends: ["assert:equals:", "r", "@"]
  82699. }, function ($methodClass){ return function (){
  82700. var self=this,$self=this;
  82701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82702. return $core.withContext(function($ctx1) {
  82703. //>>excludeEnd("ctx");
  82704. [$self._assert_equals_([$recv([(1).__at((0))
  82705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82706. ,$ctx1.sendIdx["@"]=1
  82707. //>>excludeEnd("ctx");
  82708. ][0])._r()
  82709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82710. ,$ctx1.sendIdx["r"]=1
  82711. //>>excludeEnd("ctx");
  82712. ][0],(1))
  82713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82714. ,$ctx1.sendIdx["assert:equals:"]=1
  82715. //>>excludeEnd("ctx");
  82716. ][0];
  82717. $self._assert_equals_($recv((0).__at((0)))._r(),(0));
  82718. return self;
  82719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82720. }, function($ctx1) {$ctx1.fill(self,"testPolarCoordinates",{})});
  82721. //>>excludeEnd("ctx");
  82722. }; }),
  82723. $globals.PointTest);
  82724. $core.addMethod(
  82725. $core.method({
  82726. selector: "testRectangleCreation",
  82727. protocol: "tests",
  82728. //>>excludeStart("ide", pragmas.excludeIdeData);
  82729. args: [],
  82730. source: "testRectangleCreation\x0a\x09self assert: (1@1 corner: 2@2) equals: (Rectangle origin: 1@1 corner: 2@2).\x0a\x09self assert: (1@1 rectangle: 2@2) equals: (Rectangle point: 1@1 point: 2@2).\x0a\x09self assert: (1@1 extent: 2@2) equals: (Rectangle origin: 1@1 extent: 2@2)",
  82731. referencedClasses: ["Rectangle"],
  82732. //>>excludeEnd("ide");
  82733. pragmas: [],
  82734. messageSends: ["assert:equals:", "corner:", "@", "origin:corner:", "rectangle:", "point:point:", "extent:", "origin:extent:"]
  82735. }, function ($methodClass){ return function (){
  82736. var self=this,$self=this;
  82737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82738. return $core.withContext(function($ctx1) {
  82739. //>>excludeEnd("ctx");
  82740. [$self._assert_equals_($recv([(1).__at((1))
  82741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82742. ,$ctx1.sendIdx["@"]=1
  82743. //>>excludeEnd("ctx");
  82744. ][0])._corner_([(2).__at((2))
  82745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82746. ,$ctx1.sendIdx["@"]=2
  82747. //>>excludeEnd("ctx");
  82748. ][0]),$recv($globals.Rectangle)._origin_corner_([(1).__at((1))
  82749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82750. ,$ctx1.sendIdx["@"]=3
  82751. //>>excludeEnd("ctx");
  82752. ][0],[(2).__at((2))
  82753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82754. ,$ctx1.sendIdx["@"]=4
  82755. //>>excludeEnd("ctx");
  82756. ][0]))
  82757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82758. ,$ctx1.sendIdx["assert:equals:"]=1
  82759. //>>excludeEnd("ctx");
  82760. ][0];
  82761. [$self._assert_equals_($recv([(1).__at((1))
  82762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82763. ,$ctx1.sendIdx["@"]=5
  82764. //>>excludeEnd("ctx");
  82765. ][0])._rectangle_([(2).__at((2))
  82766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82767. ,$ctx1.sendIdx["@"]=6
  82768. //>>excludeEnd("ctx");
  82769. ][0]),$recv($globals.Rectangle)._point_point_([(1).__at((1))
  82770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82771. ,$ctx1.sendIdx["@"]=7
  82772. //>>excludeEnd("ctx");
  82773. ][0],[(2).__at((2))
  82774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82775. ,$ctx1.sendIdx["@"]=8
  82776. //>>excludeEnd("ctx");
  82777. ][0]))
  82778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82779. ,$ctx1.sendIdx["assert:equals:"]=2
  82780. //>>excludeEnd("ctx");
  82781. ][0];
  82782. $self._assert_equals_($recv([(1).__at((1))
  82783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82784. ,$ctx1.sendIdx["@"]=9
  82785. //>>excludeEnd("ctx");
  82786. ][0])._extent_([(2).__at((2))
  82787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82788. ,$ctx1.sendIdx["@"]=10
  82789. //>>excludeEnd("ctx");
  82790. ][0]),$recv($globals.Rectangle)._origin_extent_([(1).__at((1))
  82791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82792. ,$ctx1.sendIdx["@"]=11
  82793. //>>excludeEnd("ctx");
  82794. ][0],(2).__at((2))));
  82795. return self;
  82796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82797. }, function($ctx1) {$ctx1.fill(self,"testRectangleCreation",{})});
  82798. //>>excludeEnd("ctx");
  82799. }; }),
  82800. $globals.PointTest);
  82801. $core.addMethod(
  82802. $core.method({
  82803. selector: "testTranslateBy",
  82804. protocol: "tests",
  82805. //>>excludeStart("ide", pragmas.excludeIdeData);
  82806. args: [],
  82807. source: "testTranslateBy\x0a\x09self assert: (3@3 translateBy: 0@1) equals: 3@4.\x0a\x09self assert: (3@3 translateBy: 0@1 negated) equals: 3@2.\x0a\x09self assert: (3@3 translateBy: 2@3) equals: 5@6.\x0a\x09self assert: (3@3 translateBy: 3 negated @0) equals: 0@3.",
  82808. referencedClasses: [],
  82809. //>>excludeEnd("ide");
  82810. pragmas: [],
  82811. messageSends: ["assert:equals:", "translateBy:", "@", "negated"]
  82812. }, function ($methodClass){ return function (){
  82813. var self=this,$self=this;
  82814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82815. return $core.withContext(function($ctx1) {
  82816. //>>excludeEnd("ctx");
  82817. [$self._assert_equals_([$recv([(3).__at((3))
  82818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82819. ,$ctx1.sendIdx["@"]=1
  82820. //>>excludeEnd("ctx");
  82821. ][0])._translateBy_([(0).__at((1))
  82822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82823. ,$ctx1.sendIdx["@"]=2
  82824. //>>excludeEnd("ctx");
  82825. ][0])
  82826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82827. ,$ctx1.sendIdx["translateBy:"]=1
  82828. //>>excludeEnd("ctx");
  82829. ][0],[(3).__at((4))
  82830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82831. ,$ctx1.sendIdx["@"]=3
  82832. //>>excludeEnd("ctx");
  82833. ][0])
  82834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82835. ,$ctx1.sendIdx["assert:equals:"]=1
  82836. //>>excludeEnd("ctx");
  82837. ][0];
  82838. [$self._assert_equals_([$recv([(3).__at((3))
  82839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82840. ,$ctx1.sendIdx["@"]=4
  82841. //>>excludeEnd("ctx");
  82842. ][0])._translateBy_([(0).__at([(1)._negated()
  82843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82844. ,$ctx1.sendIdx["negated"]=1
  82845. //>>excludeEnd("ctx");
  82846. ][0])
  82847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82848. ,$ctx1.sendIdx["@"]=5
  82849. //>>excludeEnd("ctx");
  82850. ][0])
  82851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82852. ,$ctx1.sendIdx["translateBy:"]=2
  82853. //>>excludeEnd("ctx");
  82854. ][0],[(3).__at((2))
  82855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82856. ,$ctx1.sendIdx["@"]=6
  82857. //>>excludeEnd("ctx");
  82858. ][0])
  82859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82860. ,$ctx1.sendIdx["assert:equals:"]=2
  82861. //>>excludeEnd("ctx");
  82862. ][0];
  82863. [$self._assert_equals_([$recv([(3).__at((3))
  82864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82865. ,$ctx1.sendIdx["@"]=7
  82866. //>>excludeEnd("ctx");
  82867. ][0])._translateBy_([(2).__at((3))
  82868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82869. ,$ctx1.sendIdx["@"]=8
  82870. //>>excludeEnd("ctx");
  82871. ][0])
  82872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82873. ,$ctx1.sendIdx["translateBy:"]=3
  82874. //>>excludeEnd("ctx");
  82875. ][0],[(5).__at((6))
  82876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82877. ,$ctx1.sendIdx["@"]=9
  82878. //>>excludeEnd("ctx");
  82879. ][0])
  82880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82881. ,$ctx1.sendIdx["assert:equals:"]=3
  82882. //>>excludeEnd("ctx");
  82883. ][0];
  82884. $self._assert_equals_($recv([(3).__at((3))
  82885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82886. ,$ctx1.sendIdx["@"]=10
  82887. //>>excludeEnd("ctx");
  82888. ][0])._translateBy_([$recv((3)._negated()).__at((0))
  82889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82890. ,$ctx1.sendIdx["@"]=11
  82891. //>>excludeEnd("ctx");
  82892. ][0]),(0).__at((3)));
  82893. return self;
  82894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82895. }, function($ctx1) {$ctx1.fill(self,"testTranslateBy",{})});
  82896. //>>excludeEnd("ctx");
  82897. }; }),
  82898. $globals.PointTest);
  82899. $core.addClass("QueueTest", $globals.TestCase, "Kernel-Tests");
  82900. $core.addMethod(
  82901. $core.method({
  82902. selector: "testNextIfAbsent",
  82903. protocol: "tests",
  82904. //>>excludeStart("ide", pragmas.excludeIdeData);
  82905. args: [],
  82906. source: "testNextIfAbsent\x0a\x09| queue |\x0a\x09queue := Queue new.\x0a\x09queue nextPut: 'index1'. \x0a\x0a\x09self assert: (queue nextIfAbsent: 'empty') = 'index1'.\x0a\x09self deny: (queue nextIfAbsent: 'empty') = 'index1'",
  82907. referencedClasses: ["Queue"],
  82908. //>>excludeEnd("ide");
  82909. pragmas: [],
  82910. messageSends: ["new", "nextPut:", "assert:", "=", "nextIfAbsent:", "deny:"]
  82911. }, function ($methodClass){ return function (){
  82912. var self=this,$self=this;
  82913. var queue;
  82914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82915. return $core.withContext(function($ctx1) {
  82916. //>>excludeEnd("ctx");
  82917. queue=$recv($globals.Queue)._new();
  82918. $recv(queue)._nextPut_("index1");
  82919. $self._assert_([$recv([$recv(queue)._nextIfAbsent_("empty")
  82920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82921. ,$ctx1.sendIdx["nextIfAbsent:"]=1
  82922. //>>excludeEnd("ctx");
  82923. ][0]).__eq("index1")
  82924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82925. ,$ctx1.sendIdx["="]=1
  82926. //>>excludeEnd("ctx");
  82927. ][0]);
  82928. $self._deny_($recv($recv(queue)._nextIfAbsent_("empty")).__eq("index1"));
  82929. return self;
  82930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82931. }, function($ctx1) {$ctx1.fill(self,"testNextIfAbsent",{queue:queue})});
  82932. //>>excludeEnd("ctx");
  82933. }; }),
  82934. $globals.QueueTest);
  82935. $core.addMethod(
  82936. $core.method({
  82937. selector: "testQueueNext",
  82938. protocol: "tests",
  82939. //>>excludeStart("ide", pragmas.excludeIdeData);
  82940. args: [],
  82941. source: "testQueueNext\x0a\x09| queue | \x0a\x09queue := Queue new.\x0a\x09queue \x0a\x09\x09nextPut: 'index1';\x0a\x09\x09nextPut: 'index2'.\x0a\x0a\x09self assert: queue next = 'index1'.\x0a\x09self deny: queue next = 'index'.\x0a\x09self should: [ queue next ] raise: Error",
  82942. referencedClasses: ["Queue", "Error"],
  82943. //>>excludeEnd("ide");
  82944. pragmas: [],
  82945. messageSends: ["new", "nextPut:", "assert:", "=", "next", "deny:", "should:raise:"]
  82946. }, function ($methodClass){ return function (){
  82947. var self=this,$self=this;
  82948. var queue;
  82949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82950. return $core.withContext(function($ctx1) {
  82951. //>>excludeEnd("ctx");
  82952. var $1;
  82953. queue=$recv($globals.Queue)._new();
  82954. $1=queue;
  82955. [$recv($1)._nextPut_("index1")
  82956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82957. ,$ctx1.sendIdx["nextPut:"]=1
  82958. //>>excludeEnd("ctx");
  82959. ][0];
  82960. $recv($1)._nextPut_("index2");
  82961. $self._assert_([$recv([$recv(queue)._next()
  82962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82963. ,$ctx1.sendIdx["next"]=1
  82964. //>>excludeEnd("ctx");
  82965. ][0]).__eq("index1")
  82966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82967. ,$ctx1.sendIdx["="]=1
  82968. //>>excludeEnd("ctx");
  82969. ][0]);
  82970. $self._deny_($recv([$recv(queue)._next()
  82971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82972. ,$ctx1.sendIdx["next"]=2
  82973. //>>excludeEnd("ctx");
  82974. ][0]).__eq("index"));
  82975. $self._should_raise_((function(){
  82976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82977. return $core.withContext(function($ctx2) {
  82978. //>>excludeEnd("ctx");
  82979. return $recv(queue)._next();
  82980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82981. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  82982. //>>excludeEnd("ctx");
  82983. }),$globals.Error);
  82984. return self;
  82985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  82986. }, function($ctx1) {$ctx1.fill(self,"testQueueNext",{queue:queue})});
  82987. //>>excludeEnd("ctx");
  82988. }; }),
  82989. $globals.QueueTest);
  82990. $core.addClass("RandomTest", $globals.TestCase, "Kernel-Tests");
  82991. $core.addMethod(
  82992. $core.method({
  82993. selector: "testAtRandomNumber",
  82994. protocol: "tests",
  82995. //>>excludeStart("ide", pragmas.excludeIdeData);
  82996. args: [],
  82997. source: "testAtRandomNumber\x0a\x09|val|\x09\x0a\x0a\x09100 timesRepeat: [\x0a\x09\x09val := 10 atRandom.\x09\x0a\x09\x09self assert: (val > 0).\x0a\x09\x09self assert: (val <11)\x0a\x09]",
  82998. referencedClasses: [],
  82999. //>>excludeEnd("ide");
  83000. pragmas: [],
  83001. messageSends: ["timesRepeat:", "atRandom", "assert:", ">", "<"]
  83002. }, function ($methodClass){ return function (){
  83003. var self=this,$self=this;
  83004. var val;
  83005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83006. return $core.withContext(function($ctx1) {
  83007. //>>excludeEnd("ctx");
  83008. (100)._timesRepeat_((function(){
  83009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83010. return $core.withContext(function($ctx2) {
  83011. //>>excludeEnd("ctx");
  83012. val=(10)._atRandom();
  83013. [$self._assert_($recv(val).__gt((0)))
  83014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83015. ,$ctx2.sendIdx["assert:"]=1
  83016. //>>excludeEnd("ctx");
  83017. ][0];
  83018. return $self._assert_($recv(val).__lt((11)));
  83019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83020. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  83021. //>>excludeEnd("ctx");
  83022. }));
  83023. return self;
  83024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83025. }, function($ctx1) {$ctx1.fill(self,"testAtRandomNumber",{val:val})});
  83026. //>>excludeEnd("ctx");
  83027. }; }),
  83028. $globals.RandomTest);
  83029. $core.addMethod(
  83030. $core.method({
  83031. selector: "testAtRandomSequenceableCollection",
  83032. protocol: "tests",
  83033. //>>excludeStart("ide", pragmas.excludeIdeData);
  83034. args: [],
  83035. source: "testAtRandomSequenceableCollection\x0a\x09|val|\x0a\x09\x0a\x09100 timesRepeat: [\x0a\x09\x09val := 'abc' atRandom.\x0a\x09\x09self assert: ((val = 'a') | (val = 'b') | (val = 'c' )).\x0a\x09].",
  83036. referencedClasses: [],
  83037. //>>excludeEnd("ide");
  83038. pragmas: [],
  83039. messageSends: ["timesRepeat:", "atRandom", "assert:", "|", "="]
  83040. }, function ($methodClass){ return function (){
  83041. var self=this,$self=this;
  83042. var val;
  83043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83044. return $core.withContext(function($ctx1) {
  83045. //>>excludeEnd("ctx");
  83046. (100)._timesRepeat_((function(){
  83047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83048. return $core.withContext(function($ctx2) {
  83049. //>>excludeEnd("ctx");
  83050. val="abc"._atRandom();
  83051. return $self._assert_([$recv($recv([$recv(val).__eq("a")
  83052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83053. ,$ctx2.sendIdx["="]=1
  83054. //>>excludeEnd("ctx");
  83055. ][0]).__or([$recv(val).__eq("b")
  83056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83057. ,$ctx2.sendIdx["="]=2
  83058. //>>excludeEnd("ctx");
  83059. ][0])).__or($recv(val).__eq("c"))
  83060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83061. ,$ctx2.sendIdx["|"]=1
  83062. //>>excludeEnd("ctx");
  83063. ][0]);
  83064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83065. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  83066. //>>excludeEnd("ctx");
  83067. }));
  83068. return self;
  83069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83070. }, function($ctx1) {$ctx1.fill(self,"testAtRandomSequenceableCollection",{val:val})});
  83071. //>>excludeEnd("ctx");
  83072. }; }),
  83073. $globals.RandomTest);
  83074. $core.addMethod(
  83075. $core.method({
  83076. selector: "textNext",
  83077. protocol: "tests",
  83078. //>>excludeStart("ide", pragmas.excludeIdeData);
  83079. args: [],
  83080. source: "textNext\x0a\x0a\x0910000 timesRepeat: [\x0a\x09\x09\x09| current next |\x0a\x09\x09\x09next := Random new next.\x0a\x09\x09\x09self assert: (next >= 0).\x0a\x09\x09\x09self assert: (next < 1).\x0a\x09\x09\x09self deny: current = next.\x0a\x09\x09\x09next = current ]",
  83081. referencedClasses: ["Random"],
  83082. //>>excludeEnd("ide");
  83083. pragmas: [],
  83084. messageSends: ["timesRepeat:", "next", "new", "assert:", ">=", "<", "deny:", "="]
  83085. }, function ($methodClass){ return function (){
  83086. var self=this,$self=this;
  83087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83088. return $core.withContext(function($ctx1) {
  83089. //>>excludeEnd("ctx");
  83090. (10000)._timesRepeat_((function(){
  83091. var current,next;
  83092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83093. return $core.withContext(function($ctx2) {
  83094. //>>excludeEnd("ctx");
  83095. next=$recv($recv($globals.Random)._new())._next();
  83096. [$self._assert_($recv(next).__gt_eq((0)))
  83097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83098. ,$ctx2.sendIdx["assert:"]=1
  83099. //>>excludeEnd("ctx");
  83100. ][0];
  83101. $self._assert_($recv(next).__lt((1)));
  83102. $self._deny_([$recv(current).__eq(next)
  83103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83104. ,$ctx2.sendIdx["="]=1
  83105. //>>excludeEnd("ctx");
  83106. ][0]);
  83107. return $recv(next).__eq(current);
  83108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83109. }, function($ctx2) {$ctx2.fillBlock({current:current,next:next},$ctx1,1)});
  83110. //>>excludeEnd("ctx");
  83111. }));
  83112. return self;
  83113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83114. }, function($ctx1) {$ctx1.fill(self,"textNext",{})});
  83115. //>>excludeEnd("ctx");
  83116. }; }),
  83117. $globals.RandomTest);
  83118. $core.addClass("RectangleTest", $globals.TestCase, "Kernel-Tests");
  83119. $core.addMethod(
  83120. $core.method({
  83121. selector: "testContainsPoint",
  83122. protocol: "tests",
  83123. //>>excludeStart("ide", pragmas.excludeIdeData);
  83124. args: [],
  83125. source: "testContainsPoint\x0a\x09| rect |\x0a\x09rect := Rectangle origin: 0@0 corner: 4@4.\x0a\x09\x0a\x09self assert: (rect containsPoint: 1@2).\x0a\x09self assert: (rect containsPoint: 5@4) not.",
  83126. referencedClasses: ["Rectangle"],
  83127. //>>excludeEnd("ide");
  83128. pragmas: [],
  83129. messageSends: ["origin:corner:", "@", "assert:", "containsPoint:", "not"]
  83130. }, function ($methodClass){ return function (){
  83131. var self=this,$self=this;
  83132. var rect;
  83133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83134. return $core.withContext(function($ctx1) {
  83135. //>>excludeEnd("ctx");
  83136. rect=$recv($globals.Rectangle)._origin_corner_([(0).__at((0))
  83137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83138. ,$ctx1.sendIdx["@"]=1
  83139. //>>excludeEnd("ctx");
  83140. ][0],[(4).__at((4))
  83141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83142. ,$ctx1.sendIdx["@"]=2
  83143. //>>excludeEnd("ctx");
  83144. ][0]);
  83145. [$self._assert_([$recv(rect)._containsPoint_([(1).__at((2))
  83146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83147. ,$ctx1.sendIdx["@"]=3
  83148. //>>excludeEnd("ctx");
  83149. ][0])
  83150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83151. ,$ctx1.sendIdx["containsPoint:"]=1
  83152. //>>excludeEnd("ctx");
  83153. ][0])
  83154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83155. ,$ctx1.sendIdx["assert:"]=1
  83156. //>>excludeEnd("ctx");
  83157. ][0];
  83158. $self._assert_($recv($recv(rect)._containsPoint_((5).__at((4))))._not());
  83159. return self;
  83160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83161. }, function($ctx1) {$ctx1.fill(self,"testContainsPoint",{rect:rect})});
  83162. //>>excludeEnd("ctx");
  83163. }; }),
  83164. $globals.RectangleTest);
  83165. $core.addMethod(
  83166. $core.method({
  83167. selector: "testContainsRect",
  83168. protocol: "tests",
  83169. //>>excludeStart("ide", pragmas.excludeIdeData);
  83170. args: [],
  83171. source: "testContainsRect\x0a\x09self assert: ((Rectangle origin: 0@0 corner: 6@6) containsRect: (Rectangle origin: 1@1 corner: 5@5)).\x0a\x09self assert: ((Rectangle origin: 0@0 corner: 6@6) containsRect: (Rectangle origin: 1@(-1) corner: 5@5)) not.",
  83172. referencedClasses: ["Rectangle"],
  83173. //>>excludeEnd("ide");
  83174. pragmas: [],
  83175. messageSends: ["assert:", "containsRect:", "origin:corner:", "@", "not"]
  83176. }, function ($methodClass){ return function (){
  83177. var self=this,$self=this;
  83178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83179. return $core.withContext(function($ctx1) {
  83180. //>>excludeEnd("ctx");
  83181. [$self._assert_([$recv([$recv($globals.Rectangle)._origin_corner_([(0).__at((0))
  83182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83183. ,$ctx1.sendIdx["@"]=1
  83184. //>>excludeEnd("ctx");
  83185. ][0],[(6).__at((6))
  83186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83187. ,$ctx1.sendIdx["@"]=2
  83188. //>>excludeEnd("ctx");
  83189. ][0])
  83190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83191. ,$ctx1.sendIdx["origin:corner:"]=1
  83192. //>>excludeEnd("ctx");
  83193. ][0])._containsRect_([$recv($globals.Rectangle)._origin_corner_([(1).__at((1))
  83194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83195. ,$ctx1.sendIdx["@"]=3
  83196. //>>excludeEnd("ctx");
  83197. ][0],[(5).__at((5))
  83198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83199. ,$ctx1.sendIdx["@"]=4
  83200. //>>excludeEnd("ctx");
  83201. ][0])
  83202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83203. ,$ctx1.sendIdx["origin:corner:"]=2
  83204. //>>excludeEnd("ctx");
  83205. ][0])
  83206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83207. ,$ctx1.sendIdx["containsRect:"]=1
  83208. //>>excludeEnd("ctx");
  83209. ][0])
  83210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83211. ,$ctx1.sendIdx["assert:"]=1
  83212. //>>excludeEnd("ctx");
  83213. ][0];
  83214. $self._assert_($recv($recv([$recv($globals.Rectangle)._origin_corner_([(0).__at((0))
  83215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83216. ,$ctx1.sendIdx["@"]=5
  83217. //>>excludeEnd("ctx");
  83218. ][0],[(6).__at((6))
  83219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83220. ,$ctx1.sendIdx["@"]=6
  83221. //>>excludeEnd("ctx");
  83222. ][0])
  83223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83224. ,$ctx1.sendIdx["origin:corner:"]=3
  83225. //>>excludeEnd("ctx");
  83226. ][0])._containsRect_($recv($globals.Rectangle)._origin_corner_([(1).__at((-1))
  83227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83228. ,$ctx1.sendIdx["@"]=7
  83229. //>>excludeEnd("ctx");
  83230. ][0],(5).__at((5)))))._not());
  83231. return self;
  83232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83233. }, function($ctx1) {$ctx1.fill(self,"testContainsRect",{})});
  83234. //>>excludeEnd("ctx");
  83235. }; }),
  83236. $globals.RectangleTest);
  83237. $core.addMethod(
  83238. $core.method({
  83239. selector: "testOriginExtent",
  83240. protocol: "tests",
  83241. //>>excludeStart("ide", pragmas.excludeIdeData);
  83242. args: [],
  83243. source: "testOriginExtent\x0a\x09| rectangle |\x0a\x09rectangle := Rectangle origin: 3@4 extent: 7@8.\x0a\x09\x0a\x09self assert: rectangle origin equals: 3@4.\x0a\x09self assert: rectangle corner equals: 10@12.",
  83244. referencedClasses: ["Rectangle"],
  83245. //>>excludeEnd("ide");
  83246. pragmas: [],
  83247. messageSends: ["origin:extent:", "@", "assert:equals:", "origin", "corner"]
  83248. }, function ($methodClass){ return function (){
  83249. var self=this,$self=this;
  83250. var rectangle;
  83251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83252. return $core.withContext(function($ctx1) {
  83253. //>>excludeEnd("ctx");
  83254. rectangle=$recv($globals.Rectangle)._origin_extent_([(3).__at((4))
  83255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83256. ,$ctx1.sendIdx["@"]=1
  83257. //>>excludeEnd("ctx");
  83258. ][0],[(7).__at((8))
  83259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83260. ,$ctx1.sendIdx["@"]=2
  83261. //>>excludeEnd("ctx");
  83262. ][0]);
  83263. [$self._assert_equals_($recv(rectangle)._origin(),[(3).__at((4))
  83264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83265. ,$ctx1.sendIdx["@"]=3
  83266. //>>excludeEnd("ctx");
  83267. ][0])
  83268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83269. ,$ctx1.sendIdx["assert:equals:"]=1
  83270. //>>excludeEnd("ctx");
  83271. ][0];
  83272. $self._assert_equals_($recv(rectangle)._corner(),(10).__at((12)));
  83273. return self;
  83274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83275. }, function($ctx1) {$ctx1.fill(self,"testOriginExtent",{rectangle:rectangle})});
  83276. //>>excludeEnd("ctx");
  83277. }; }),
  83278. $globals.RectangleTest);
  83279. $core.addClass("StreamTest", $globals.TestCase, "Kernel-Tests");
  83280. $core.addMethod(
  83281. $core.method({
  83282. selector: "collectionClass",
  83283. protocol: "accessing",
  83284. //>>excludeStart("ide", pragmas.excludeIdeData);
  83285. args: [],
  83286. source: "collectionClass\x0a\x09^ self class collectionClass",
  83287. referencedClasses: [],
  83288. //>>excludeEnd("ide");
  83289. pragmas: [],
  83290. messageSends: ["collectionClass", "class"]
  83291. }, function ($methodClass){ return function (){
  83292. var self=this,$self=this;
  83293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83294. return $core.withContext(function($ctx1) {
  83295. //>>excludeEnd("ctx");
  83296. return $recv($self._class())._collectionClass();
  83297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83298. }, function($ctx1) {$ctx1.fill(self,"collectionClass",{})});
  83299. //>>excludeEnd("ctx");
  83300. }; }),
  83301. $globals.StreamTest);
  83302. $core.addMethod(
  83303. $core.method({
  83304. selector: "newCollection",
  83305. protocol: "accessing",
  83306. //>>excludeStart("ide", pragmas.excludeIdeData);
  83307. args: [],
  83308. source: "newCollection\x0a\x09^ self collectionClass new",
  83309. referencedClasses: [],
  83310. //>>excludeEnd("ide");
  83311. pragmas: [],
  83312. messageSends: ["new", "collectionClass"]
  83313. }, function ($methodClass){ return function (){
  83314. var self=this,$self=this;
  83315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83316. return $core.withContext(function($ctx1) {
  83317. //>>excludeEnd("ctx");
  83318. return $recv($self._collectionClass())._new();
  83319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83320. }, function($ctx1) {$ctx1.fill(self,"newCollection",{})});
  83321. //>>excludeEnd("ctx");
  83322. }; }),
  83323. $globals.StreamTest);
  83324. $core.addMethod(
  83325. $core.method({
  83326. selector: "newStream",
  83327. protocol: "accessing",
  83328. //>>excludeStart("ide", pragmas.excludeIdeData);
  83329. args: [],
  83330. source: "newStream\x0a\x09^ self collectionClass new stream",
  83331. referencedClasses: [],
  83332. //>>excludeEnd("ide");
  83333. pragmas: [],
  83334. messageSends: ["stream", "new", "collectionClass"]
  83335. }, function ($methodClass){ return function (){
  83336. var self=this,$self=this;
  83337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83338. return $core.withContext(function($ctx1) {
  83339. //>>excludeEnd("ctx");
  83340. return $recv($recv($self._collectionClass())._new())._stream();
  83341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83342. }, function($ctx1) {$ctx1.fill(self,"newStream",{})});
  83343. //>>excludeEnd("ctx");
  83344. }; }),
  83345. $globals.StreamTest);
  83346. $core.addMethod(
  83347. $core.method({
  83348. selector: "testAtStartAtEnd",
  83349. protocol: "tests",
  83350. //>>excludeStart("ide", pragmas.excludeIdeData);
  83351. args: [],
  83352. source: "testAtStartAtEnd\x0a\x09| stream |\x0a\x09\x0a\x09stream := self newStream.\x0a\x09self assert: stream atStart.\x0a\x09self assert: stream atEnd.\x0a\x09\x0a\x09stream nextPutAll: self newCollection.\x0a\x09self assert: stream atEnd.\x0a\x09self deny: stream atStart.\x0a\x09\x0a\x09stream position: 1.\x0a\x09self deny: stream atEnd.\x0a\x09self deny: stream atStart",
  83353. referencedClasses: [],
  83354. //>>excludeEnd("ide");
  83355. pragmas: [],
  83356. messageSends: ["newStream", "assert:", "atStart", "atEnd", "nextPutAll:", "newCollection", "deny:", "position:"]
  83357. }, function ($methodClass){ return function (){
  83358. var self=this,$self=this;
  83359. var stream;
  83360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83361. return $core.withContext(function($ctx1) {
  83362. //>>excludeEnd("ctx");
  83363. stream=$self._newStream();
  83364. [$self._assert_([$recv(stream)._atStart()
  83365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83366. ,$ctx1.sendIdx["atStart"]=1
  83367. //>>excludeEnd("ctx");
  83368. ][0])
  83369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83370. ,$ctx1.sendIdx["assert:"]=1
  83371. //>>excludeEnd("ctx");
  83372. ][0];
  83373. [$self._assert_([$recv(stream)._atEnd()
  83374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83375. ,$ctx1.sendIdx["atEnd"]=1
  83376. //>>excludeEnd("ctx");
  83377. ][0])
  83378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83379. ,$ctx1.sendIdx["assert:"]=2
  83380. //>>excludeEnd("ctx");
  83381. ][0];
  83382. $recv(stream)._nextPutAll_($self._newCollection());
  83383. $self._assert_([$recv(stream)._atEnd()
  83384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83385. ,$ctx1.sendIdx["atEnd"]=2
  83386. //>>excludeEnd("ctx");
  83387. ][0]);
  83388. [$self._deny_([$recv(stream)._atStart()
  83389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83390. ,$ctx1.sendIdx["atStart"]=2
  83391. //>>excludeEnd("ctx");
  83392. ][0])
  83393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83394. ,$ctx1.sendIdx["deny:"]=1
  83395. //>>excludeEnd("ctx");
  83396. ][0];
  83397. $recv(stream)._position_((1));
  83398. [$self._deny_($recv(stream)._atEnd())
  83399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83400. ,$ctx1.sendIdx["deny:"]=2
  83401. //>>excludeEnd("ctx");
  83402. ][0];
  83403. $self._deny_($recv(stream)._atStart());
  83404. return self;
  83405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83406. }, function($ctx1) {$ctx1.fill(self,"testAtStartAtEnd",{stream:stream})});
  83407. //>>excludeEnd("ctx");
  83408. }; }),
  83409. $globals.StreamTest);
  83410. $core.addMethod(
  83411. $core.method({
  83412. selector: "testContents",
  83413. protocol: "tests",
  83414. //>>excludeStart("ide", pragmas.excludeIdeData);
  83415. args: [],
  83416. source: "testContents\x0a\x09| stream |\x0a\x09\x0a\x09stream := self newStream.\x0a\x09stream nextPutAll: self newCollection.\x0a\x09\x0a\x09self assert: stream contents equals: self newCollection",
  83417. referencedClasses: [],
  83418. //>>excludeEnd("ide");
  83419. pragmas: [],
  83420. messageSends: ["newStream", "nextPutAll:", "newCollection", "assert:equals:", "contents"]
  83421. }, function ($methodClass){ return function (){
  83422. var self=this,$self=this;
  83423. var stream;
  83424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83425. return $core.withContext(function($ctx1) {
  83426. //>>excludeEnd("ctx");
  83427. stream=$self._newStream();
  83428. $recv(stream)._nextPutAll_([$self._newCollection()
  83429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83430. ,$ctx1.sendIdx["newCollection"]=1
  83431. //>>excludeEnd("ctx");
  83432. ][0]);
  83433. $self._assert_equals_($recv(stream)._contents(),$self._newCollection());
  83434. return self;
  83435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83436. }, function($ctx1) {$ctx1.fill(self,"testContents",{stream:stream})});
  83437. //>>excludeEnd("ctx");
  83438. }; }),
  83439. $globals.StreamTest);
  83440. $core.addMethod(
  83441. $core.method({
  83442. selector: "testIsEmpty",
  83443. protocol: "tests",
  83444. //>>excludeStart("ide", pragmas.excludeIdeData);
  83445. args: [],
  83446. source: "testIsEmpty\x0a\x09| stream |\x0a\x09\x0a\x09stream := self newStream.\x0a\x09self assert: stream isEmpty.\x0a\x09\x0a\x09stream nextPutAll: self newCollection.\x0a\x09self deny: stream isEmpty",
  83447. referencedClasses: [],
  83448. //>>excludeEnd("ide");
  83449. pragmas: [],
  83450. messageSends: ["newStream", "assert:", "isEmpty", "nextPutAll:", "newCollection", "deny:"]
  83451. }, function ($methodClass){ return function (){
  83452. var self=this,$self=this;
  83453. var stream;
  83454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83455. return $core.withContext(function($ctx1) {
  83456. //>>excludeEnd("ctx");
  83457. stream=$self._newStream();
  83458. $self._assert_([$recv(stream)._isEmpty()
  83459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83460. ,$ctx1.sendIdx["isEmpty"]=1
  83461. //>>excludeEnd("ctx");
  83462. ][0]);
  83463. $recv(stream)._nextPutAll_($self._newCollection());
  83464. $self._deny_($recv(stream)._isEmpty());
  83465. return self;
  83466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83467. }, function($ctx1) {$ctx1.fill(self,"testIsEmpty",{stream:stream})});
  83468. //>>excludeEnd("ctx");
  83469. }; }),
  83470. $globals.StreamTest);
  83471. $core.addMethod(
  83472. $core.method({
  83473. selector: "testPosition",
  83474. protocol: "tests",
  83475. //>>excludeStart("ide", pragmas.excludeIdeData);
  83476. args: [],
  83477. source: "testPosition\x0a\x09| collection stream |\x0a\x09\x0a\x09collection := self newCollection.\x0a\x09stream := self newStream.\x0a\x09\x0a\x09stream nextPutAll: collection.\x0a\x09self assert: stream position equals: collection size.\x0a\x09\x0a\x09stream position: 0.\x0a\x09self assert: stream position equals: 0.\x0a\x09\x0a\x09stream next.\x0a\x09self assert: stream position equals: 1.\x0a\x09\x0a\x09stream next.\x0a\x09self assert: stream position equals: 2",
  83478. referencedClasses: [],
  83479. //>>excludeEnd("ide");
  83480. pragmas: [],
  83481. messageSends: ["newCollection", "newStream", "nextPutAll:", "assert:equals:", "position", "size", "position:", "next"]
  83482. }, function ($methodClass){ return function (){
  83483. var self=this,$self=this;
  83484. var collection,stream;
  83485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83486. return $core.withContext(function($ctx1) {
  83487. //>>excludeEnd("ctx");
  83488. collection=$self._newCollection();
  83489. stream=$self._newStream();
  83490. $recv(stream)._nextPutAll_(collection);
  83491. [$self._assert_equals_([$recv(stream)._position()
  83492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83493. ,$ctx1.sendIdx["position"]=1
  83494. //>>excludeEnd("ctx");
  83495. ][0],$recv(collection)._size())
  83496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83497. ,$ctx1.sendIdx["assert:equals:"]=1
  83498. //>>excludeEnd("ctx");
  83499. ][0];
  83500. $recv(stream)._position_((0));
  83501. [$self._assert_equals_([$recv(stream)._position()
  83502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83503. ,$ctx1.sendIdx["position"]=2
  83504. //>>excludeEnd("ctx");
  83505. ][0],(0))
  83506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83507. ,$ctx1.sendIdx["assert:equals:"]=2
  83508. //>>excludeEnd("ctx");
  83509. ][0];
  83510. [$recv(stream)._next()
  83511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83512. ,$ctx1.sendIdx["next"]=1
  83513. //>>excludeEnd("ctx");
  83514. ][0];
  83515. [$self._assert_equals_([$recv(stream)._position()
  83516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83517. ,$ctx1.sendIdx["position"]=3
  83518. //>>excludeEnd("ctx");
  83519. ][0],(1))
  83520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83521. ,$ctx1.sendIdx["assert:equals:"]=3
  83522. //>>excludeEnd("ctx");
  83523. ][0];
  83524. $recv(stream)._next();
  83525. $self._assert_equals_($recv(stream)._position(),(2));
  83526. return self;
  83527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83528. }, function($ctx1) {$ctx1.fill(self,"testPosition",{collection:collection,stream:stream})});
  83529. //>>excludeEnd("ctx");
  83530. }; }),
  83531. $globals.StreamTest);
  83532. $core.addMethod(
  83533. $core.method({
  83534. selector: "testReading",
  83535. protocol: "tests",
  83536. //>>excludeStart("ide", pragmas.excludeIdeData);
  83537. args: [],
  83538. source: "testReading\x0a\x09| stream collection |\x0a\x09\x0a\x09collection := self newCollection.\x0a\x09stream := self newStream.\x0a\x09\x0a\x09stream \x0a\x09\x09nextPutAll: collection;\x0a\x09\x09position: 0.\x0a\x09\x0a\x09collection do: [ :each |\x0a\x09\x09self assert: stream next equals: each ].\x0a\x09\x09\x0a\x09self assert: stream next isNil",
  83539. referencedClasses: [],
  83540. //>>excludeEnd("ide");
  83541. pragmas: [],
  83542. messageSends: ["newCollection", "newStream", "nextPutAll:", "position:", "do:", "assert:equals:", "next", "assert:", "isNil"]
  83543. }, function ($methodClass){ return function (){
  83544. var self=this,$self=this;
  83545. var stream,collection;
  83546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83547. return $core.withContext(function($ctx1) {
  83548. //>>excludeEnd("ctx");
  83549. var $1;
  83550. collection=$self._newCollection();
  83551. stream=$self._newStream();
  83552. $1=stream;
  83553. $recv($1)._nextPutAll_(collection);
  83554. $recv($1)._position_((0));
  83555. $recv(collection)._do_((function(each){
  83556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83557. return $core.withContext(function($ctx2) {
  83558. //>>excludeEnd("ctx");
  83559. return $self._assert_equals_([$recv(stream)._next()
  83560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83561. ,$ctx2.sendIdx["next"]=1
  83562. //>>excludeEnd("ctx");
  83563. ][0],each);
  83564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83565. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  83566. //>>excludeEnd("ctx");
  83567. }));
  83568. $self._assert_($recv($recv(stream)._next())._isNil());
  83569. return self;
  83570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83571. }, function($ctx1) {$ctx1.fill(self,"testReading",{stream:stream,collection:collection})});
  83572. //>>excludeEnd("ctx");
  83573. }; }),
  83574. $globals.StreamTest);
  83575. $core.addMethod(
  83576. $core.method({
  83577. selector: "testStreamContents",
  83578. protocol: "tests",
  83579. //>>excludeStart("ide", pragmas.excludeIdeData);
  83580. args: [],
  83581. source: "testStreamContents",
  83582. referencedClasses: [],
  83583. //>>excludeEnd("ide");
  83584. pragmas: [],
  83585. messageSends: []
  83586. }, function ($methodClass){ return function (){
  83587. var self=this,$self=this;
  83588. return self;
  83589. }; }),
  83590. $globals.StreamTest);
  83591. $core.addMethod(
  83592. $core.method({
  83593. selector: "testWrite",
  83594. protocol: "tests",
  83595. //>>excludeStart("ide", pragmas.excludeIdeData);
  83596. args: [],
  83597. source: "testWrite\x0a\x09| stream collection |\x0a\x09\x0a\x09collection := self newCollection.\x0a\x09stream := self newStream.\x0a\x09\x0a\x09collection do: [ :each | stream << each ].\x0a\x09self assert: stream contents equals: collection",
  83598. referencedClasses: [],
  83599. //>>excludeEnd("ide");
  83600. pragmas: [],
  83601. messageSends: ["newCollection", "newStream", "do:", "<<", "assert:equals:", "contents"]
  83602. }, function ($methodClass){ return function (){
  83603. var self=this,$self=this;
  83604. var stream,collection;
  83605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83606. return $core.withContext(function($ctx1) {
  83607. //>>excludeEnd("ctx");
  83608. collection=$self._newCollection();
  83609. stream=$self._newStream();
  83610. $recv(collection)._do_((function(each){
  83611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83612. return $core.withContext(function($ctx2) {
  83613. //>>excludeEnd("ctx");
  83614. return $recv(stream).__lt_lt(each);
  83615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83616. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  83617. //>>excludeEnd("ctx");
  83618. }));
  83619. $self._assert_equals_($recv(stream)._contents(),collection);
  83620. return self;
  83621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83622. }, function($ctx1) {$ctx1.fill(self,"testWrite",{stream:stream,collection:collection})});
  83623. //>>excludeEnd("ctx");
  83624. }; }),
  83625. $globals.StreamTest);
  83626. $core.addMethod(
  83627. $core.method({
  83628. selector: "testWriting",
  83629. protocol: "tests",
  83630. //>>excludeStart("ide", pragmas.excludeIdeData);
  83631. args: [],
  83632. source: "testWriting\x0a\x09| stream collection |\x0a\x09\x0a\x09collection := self newCollection.\x0a\x09stream := self newStream.\x0a\x09\x0a\x09collection do: [ :each | stream nextPut: each ].\x0a\x09self assert: stream contents equals: collection.\x0a\x09\x0a\x09stream := self newStream.\x0a\x09stream nextPutAll: collection.\x0a\x09self assert: stream contents equals: collection",
  83633. referencedClasses: [],
  83634. //>>excludeEnd("ide");
  83635. pragmas: [],
  83636. messageSends: ["newCollection", "newStream", "do:", "nextPut:", "assert:equals:", "contents", "nextPutAll:"]
  83637. }, function ($methodClass){ return function (){
  83638. var self=this,$self=this;
  83639. var stream,collection;
  83640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83641. return $core.withContext(function($ctx1) {
  83642. //>>excludeEnd("ctx");
  83643. collection=$self._newCollection();
  83644. stream=[$self._newStream()
  83645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83646. ,$ctx1.sendIdx["newStream"]=1
  83647. //>>excludeEnd("ctx");
  83648. ][0];
  83649. $recv(collection)._do_((function(each){
  83650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83651. return $core.withContext(function($ctx2) {
  83652. //>>excludeEnd("ctx");
  83653. return $recv(stream)._nextPut_(each);
  83654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83655. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  83656. //>>excludeEnd("ctx");
  83657. }));
  83658. [$self._assert_equals_([$recv(stream)._contents()
  83659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83660. ,$ctx1.sendIdx["contents"]=1
  83661. //>>excludeEnd("ctx");
  83662. ][0],collection)
  83663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83664. ,$ctx1.sendIdx["assert:equals:"]=1
  83665. //>>excludeEnd("ctx");
  83666. ][0];
  83667. stream=$self._newStream();
  83668. $recv(stream)._nextPutAll_(collection);
  83669. $self._assert_equals_($recv(stream)._contents(),collection);
  83670. return self;
  83671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83672. }, function($ctx1) {$ctx1.fill(self,"testWriting",{stream:stream,collection:collection})});
  83673. //>>excludeEnd("ctx");
  83674. }; }),
  83675. $globals.StreamTest);
  83676. $core.addMethod(
  83677. $core.method({
  83678. selector: "collectionClass",
  83679. protocol: "accessing",
  83680. //>>excludeStart("ide", pragmas.excludeIdeData);
  83681. args: [],
  83682. source: "collectionClass\x0a\x09^ nil",
  83683. referencedClasses: [],
  83684. //>>excludeEnd("ide");
  83685. pragmas: [],
  83686. messageSends: []
  83687. }, function ($methodClass){ return function (){
  83688. var self=this,$self=this;
  83689. return nil;
  83690. }; }),
  83691. $globals.StreamTest.a$cls);
  83692. $core.addMethod(
  83693. $core.method({
  83694. selector: "isAbstract",
  83695. protocol: "testing",
  83696. //>>excludeStart("ide", pragmas.excludeIdeData);
  83697. args: [],
  83698. source: "isAbstract\x0a\x09^ self collectionClass isNil",
  83699. referencedClasses: [],
  83700. //>>excludeEnd("ide");
  83701. pragmas: [],
  83702. messageSends: ["isNil", "collectionClass"]
  83703. }, function ($methodClass){ return function (){
  83704. var self=this,$self=this;
  83705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83706. return $core.withContext(function($ctx1) {
  83707. //>>excludeEnd("ctx");
  83708. return $recv($self._collectionClass())._isNil();
  83709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83710. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
  83711. //>>excludeEnd("ctx");
  83712. }; }),
  83713. $globals.StreamTest.a$cls);
  83714. $core.addClass("ArrayStreamTest", $globals.StreamTest, "Kernel-Tests");
  83715. $core.addMethod(
  83716. $core.method({
  83717. selector: "newCollection",
  83718. protocol: "accessing",
  83719. //>>excludeStart("ide", pragmas.excludeIdeData);
  83720. args: [],
  83721. source: "newCollection\x0a\x09^ { true. 1. 3@4. 'foo' }",
  83722. referencedClasses: [],
  83723. //>>excludeEnd("ide");
  83724. pragmas: [],
  83725. messageSends: ["@"]
  83726. }, function ($methodClass){ return function (){
  83727. var self=this,$self=this;
  83728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83729. return $core.withContext(function($ctx1) {
  83730. //>>excludeEnd("ctx");
  83731. return [true,(1),(3).__at((4)),"foo"];
  83732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83733. }, function($ctx1) {$ctx1.fill(self,"newCollection",{})});
  83734. //>>excludeEnd("ctx");
  83735. }; }),
  83736. $globals.ArrayStreamTest);
  83737. $core.addMethod(
  83738. $core.method({
  83739. selector: "collectionClass",
  83740. protocol: "accessing",
  83741. //>>excludeStart("ide", pragmas.excludeIdeData);
  83742. args: [],
  83743. source: "collectionClass\x0a\x09^ Array",
  83744. referencedClasses: ["Array"],
  83745. //>>excludeEnd("ide");
  83746. pragmas: [],
  83747. messageSends: []
  83748. }, function ($methodClass){ return function (){
  83749. var self=this,$self=this;
  83750. return $globals.Array;
  83751. }; }),
  83752. $globals.ArrayStreamTest.a$cls);
  83753. $core.addClass("StringStreamTest", $globals.StreamTest, "Kernel-Tests");
  83754. $core.addMethod(
  83755. $core.method({
  83756. selector: "newCollection",
  83757. protocol: "accessing",
  83758. //>>excludeStart("ide", pragmas.excludeIdeData);
  83759. args: [],
  83760. source: "newCollection\x0a\x09^ 'hello world'",
  83761. referencedClasses: [],
  83762. //>>excludeEnd("ide");
  83763. pragmas: [],
  83764. messageSends: []
  83765. }, function ($methodClass){ return function (){
  83766. var self=this,$self=this;
  83767. return "hello world";
  83768. }; }),
  83769. $globals.StringStreamTest);
  83770. $core.addMethod(
  83771. $core.method({
  83772. selector: "collectionClass",
  83773. protocol: "accessing",
  83774. //>>excludeStart("ide", pragmas.excludeIdeData);
  83775. args: [],
  83776. source: "collectionClass\x0a\x09^ String",
  83777. referencedClasses: ["String"],
  83778. //>>excludeEnd("ide");
  83779. pragmas: [],
  83780. messageSends: []
  83781. }, function ($methodClass){ return function (){
  83782. var self=this,$self=this;
  83783. return $globals.String;
  83784. }; }),
  83785. $globals.StringStreamTest.a$cls);
  83786. $core.addTrait("TClassBuildingTest", "Kernel-Tests");
  83787. $core.addMethod(
  83788. $core.method({
  83789. selector: "assert:isClassCopyOf:",
  83790. protocol: "running",
  83791. //>>excludeStart("ide", pragmas.excludeIdeData);
  83792. args: ["aClass", "anotherClass"],
  83793. source: "assert: aClass isClassCopyOf: anotherClass\x0a\x09self assert: aClass superclass == anotherClass superclass.\x0a\x09self deny: aClass slots == anotherClass slots.\x0a\x09self assert: aClass slots equals: anotherClass slots.\x0a\x09self deny: aClass class slots == anotherClass class slots.\x0a\x09self assert: aClass class slots equals: anotherClass class slots.\x0a\x09self assert: aClass package == anotherClass package.\x0a\x09self assert: (aClass package classes includes: aClass).\x0a\x09self assert: aClass methodDictionary keys equals: anotherClass methodDictionary keys",
  83794. referencedClasses: [],
  83795. //>>excludeEnd("ide");
  83796. pragmas: [],
  83797. messageSends: ["assert:", "==", "superclass", "deny:", "slots", "assert:equals:", "class", "package", "includes:", "classes", "keys", "methodDictionary"]
  83798. }, function ($methodClass){ return function (aClass,anotherClass){
  83799. var self=this,$self=this;
  83800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83801. return $core.withContext(function($ctx1) {
  83802. //>>excludeEnd("ctx");
  83803. [$self._assert_([$recv([$recv(aClass)._superclass()
  83804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83805. ,$ctx1.sendIdx["superclass"]=1
  83806. //>>excludeEnd("ctx");
  83807. ][0]).__eq_eq($recv(anotherClass)._superclass())
  83808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83809. ,$ctx1.sendIdx["=="]=1
  83810. //>>excludeEnd("ctx");
  83811. ][0])
  83812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83813. ,$ctx1.sendIdx["assert:"]=1
  83814. //>>excludeEnd("ctx");
  83815. ][0];
  83816. [$self._deny_([$recv([$recv(aClass)._slots()
  83817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83818. ,$ctx1.sendIdx["slots"]=1
  83819. //>>excludeEnd("ctx");
  83820. ][0]).__eq_eq([$recv(anotherClass)._slots()
  83821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83822. ,$ctx1.sendIdx["slots"]=2
  83823. //>>excludeEnd("ctx");
  83824. ][0])
  83825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83826. ,$ctx1.sendIdx["=="]=2
  83827. //>>excludeEnd("ctx");
  83828. ][0])
  83829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83830. ,$ctx1.sendIdx["deny:"]=1
  83831. //>>excludeEnd("ctx");
  83832. ][0];
  83833. [$self._assert_equals_([$recv(aClass)._slots()
  83834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83835. ,$ctx1.sendIdx["slots"]=3
  83836. //>>excludeEnd("ctx");
  83837. ][0],[$recv(anotherClass)._slots()
  83838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83839. ,$ctx1.sendIdx["slots"]=4
  83840. //>>excludeEnd("ctx");
  83841. ][0])
  83842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83843. ,$ctx1.sendIdx["assert:equals:"]=1
  83844. //>>excludeEnd("ctx");
  83845. ][0];
  83846. $self._deny_([$recv([$recv([$recv(aClass)._class()
  83847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83848. ,$ctx1.sendIdx["class"]=1
  83849. //>>excludeEnd("ctx");
  83850. ][0])._slots()
  83851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83852. ,$ctx1.sendIdx["slots"]=5
  83853. //>>excludeEnd("ctx");
  83854. ][0]).__eq_eq([$recv([$recv(anotherClass)._class()
  83855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83856. ,$ctx1.sendIdx["class"]=2
  83857. //>>excludeEnd("ctx");
  83858. ][0])._slots()
  83859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83860. ,$ctx1.sendIdx["slots"]=6
  83861. //>>excludeEnd("ctx");
  83862. ][0])
  83863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83864. ,$ctx1.sendIdx["=="]=3
  83865. //>>excludeEnd("ctx");
  83866. ][0]);
  83867. [$self._assert_equals_([$recv([$recv(aClass)._class()
  83868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83869. ,$ctx1.sendIdx["class"]=3
  83870. //>>excludeEnd("ctx");
  83871. ][0])._slots()
  83872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83873. ,$ctx1.sendIdx["slots"]=7
  83874. //>>excludeEnd("ctx");
  83875. ][0],$recv($recv(anotherClass)._class())._slots())
  83876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83877. ,$ctx1.sendIdx["assert:equals:"]=2
  83878. //>>excludeEnd("ctx");
  83879. ][0];
  83880. [$self._assert_($recv([$recv(aClass)._package()
  83881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83882. ,$ctx1.sendIdx["package"]=1
  83883. //>>excludeEnd("ctx");
  83884. ][0]).__eq_eq([$recv(anotherClass)._package()
  83885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83886. ,$ctx1.sendIdx["package"]=2
  83887. //>>excludeEnd("ctx");
  83888. ][0]))
  83889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83890. ,$ctx1.sendIdx["assert:"]=2
  83891. //>>excludeEnd("ctx");
  83892. ][0];
  83893. $self._assert_($recv($recv($recv(aClass)._package())._classes())._includes_(aClass));
  83894. $self._assert_equals_([$recv([$recv(aClass)._methodDictionary()
  83895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83896. ,$ctx1.sendIdx["methodDictionary"]=1
  83897. //>>excludeEnd("ctx");
  83898. ][0])._keys()
  83899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83900. ,$ctx1.sendIdx["keys"]=1
  83901. //>>excludeEnd("ctx");
  83902. ][0],$recv($recv(anotherClass)._methodDictionary())._keys());
  83903. return self;
  83904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83905. }, function($ctx1) {$ctx1.fill(self,"assert:isClassCopyOf:",{aClass:aClass,anotherClass:anotherClass})});
  83906. //>>excludeEnd("ctx");
  83907. }; }),
  83908. $globals.TClassBuildingTest);
  83909. $core.addMethod(
  83910. $core.method({
  83911. selector: "assert:isJavaScriptInstanceOf:",
  83912. protocol: "running",
  83913. //>>excludeStart("ide", pragmas.excludeIdeData);
  83914. args: ["anObject", "aJavaScriptClass"],
  83915. source: "assert: anObject isJavaScriptInstanceOf: aJavaScriptClass\x0a\x09self assert: (self is: anObject javaScriptInstanceOf: aJavaScriptClass)",
  83916. referencedClasses: [],
  83917. //>>excludeEnd("ide");
  83918. pragmas: [],
  83919. messageSends: ["assert:", "is:javaScriptInstanceOf:"]
  83920. }, function ($methodClass){ return function (anObject,aJavaScriptClass){
  83921. var self=this,$self=this;
  83922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83923. return $core.withContext(function($ctx1) {
  83924. //>>excludeEnd("ctx");
  83925. $self._assert_($self._is_javaScriptInstanceOf_(anObject,aJavaScriptClass));
  83926. return self;
  83927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83928. }, function($ctx1) {$ctx1.fill(self,"assert:isJavaScriptInstanceOf:",{anObject:anObject,aJavaScriptClass:aJavaScriptClass})});
  83929. //>>excludeEnd("ctx");
  83930. }; }),
  83931. $globals.TClassBuildingTest);
  83932. $core.addMethod(
  83933. $core.method({
  83934. selector: "is:javaScriptInstanceOf:",
  83935. protocol: "private",
  83936. //>>excludeStart("ide", pragmas.excludeIdeData);
  83937. args: ["anObject", "aJavaScriptClass"],
  83938. source: "is: anObject javaScriptInstanceOf: aJavaScriptClass\x0a\x09<inlineJS: 'return anObject instanceof aJavaScriptClass'>",
  83939. referencedClasses: [],
  83940. //>>excludeEnd("ide");
  83941. pragmas: [["inlineJS:", ["return anObject instanceof aJavaScriptClass"]]],
  83942. messageSends: []
  83943. }, function ($methodClass){ return function (anObject,aJavaScriptClass){
  83944. var self=this,$self=this;
  83945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83946. return $core.withContext(function($ctx1) {
  83947. //>>excludeEnd("ctx");
  83948. return anObject instanceof aJavaScriptClass;
  83949. return self;
  83950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83951. }, function($ctx1) {$ctx1.fill(self,"is:javaScriptInstanceOf:",{anObject:anObject,aJavaScriptClass:aJavaScriptClass})});
  83952. //>>excludeEnd("ctx");
  83953. }; }),
  83954. $globals.TClassBuildingTest);
  83955. $core.addMethod(
  83956. $core.method({
  83957. selector: "tearDown",
  83958. protocol: "running",
  83959. //>>excludeStart("ide", pragmas.excludeIdeData);
  83960. args: [],
  83961. source: "tearDown\x0a\x09self theClass ifNotNil: [ :theClass |\x0a\x09\x09(Array streamContents: [ :s | theClass allSubclassesDo: [ :each | s nextPut: each ] ])\x0a\x09\x09\x09reverseDo: [ :each | Smalltalk removeClass: each ].\x0a\x09\x09Smalltalk removeClass: theClass ]",
  83962. referencedClasses: ["Array", "Smalltalk"],
  83963. //>>excludeEnd("ide");
  83964. pragmas: [],
  83965. messageSends: ["ifNotNil:", "theClass", "reverseDo:", "streamContents:", "allSubclassesDo:", "nextPut:", "removeClass:"]
  83966. }, function ($methodClass){ return function (){
  83967. var self=this,$self=this;
  83968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83969. return $core.withContext(function($ctx1) {
  83970. //>>excludeEnd("ctx");
  83971. var $1;
  83972. $1=$self._theClass();
  83973. if($1 == null || $1.a$nil){
  83974. $1;
  83975. } else {
  83976. var theClass;
  83977. theClass=$1;
  83978. $recv($recv($globals.Array)._streamContents_((function(s){
  83979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83980. return $core.withContext(function($ctx2) {
  83981. //>>excludeEnd("ctx");
  83982. return $recv(theClass)._allSubclassesDo_((function(each){
  83983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83984. return $core.withContext(function($ctx3) {
  83985. //>>excludeEnd("ctx");
  83986. return $recv(s)._nextPut_(each);
  83987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83988. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
  83989. //>>excludeEnd("ctx");
  83990. }));
  83991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83992. }, function($ctx2) {$ctx2.fillBlock({s:s},$ctx1,2)});
  83993. //>>excludeEnd("ctx");
  83994. })))._reverseDo_((function(each){
  83995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83996. return $core.withContext(function($ctx2) {
  83997. //>>excludeEnd("ctx");
  83998. return [$recv($globals.Smalltalk)._removeClass_(each)
  83999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84000. ,$ctx2.sendIdx["removeClass:"]=1
  84001. //>>excludeEnd("ctx");
  84002. ][0];
  84003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84004. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  84005. //>>excludeEnd("ctx");
  84006. }));
  84007. $recv($globals.Smalltalk)._removeClass_(theClass);
  84008. }
  84009. return self;
  84010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84011. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  84012. //>>excludeEnd("ctx");
  84013. }; }),
  84014. $globals.TClassBuildingTest);
  84015. $core.addMethod(
  84016. $core.method({
  84017. selector: "theClass",
  84018. protocol: "accessing",
  84019. //>>excludeStart("ide", pragmas.excludeIdeData);
  84020. args: [],
  84021. source: "theClass\x0a\x09self subclassResponsibility",
  84022. referencedClasses: [],
  84023. //>>excludeEnd("ide");
  84024. pragmas: [],
  84025. messageSends: ["subclassResponsibility"]
  84026. }, function ($methodClass){ return function (){
  84027. var self=this,$self=this;
  84028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84029. return $core.withContext(function($ctx1) {
  84030. //>>excludeEnd("ctx");
  84031. $self._subclassResponsibility();
  84032. return self;
  84033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84034. }, function($ctx1) {$ctx1.fill(self,"theClass",{})});
  84035. //>>excludeEnd("ctx");
  84036. }; }),
  84037. $globals.TClassBuildingTest);
  84038. $core.addTrait("TKeyValueCollectionTest", "Kernel-Tests");
  84039. $core.addMethod(
  84040. $core.method({
  84041. selector: "nonIndexesDo:",
  84042. protocol: "fixture",
  84043. //>>excludeStart("ide", pragmas.excludeIdeData);
  84044. args: ["aBlock"],
  84045. source: "nonIndexesDo: aBlock\x0a\x09\x22Executes block a few times,\x0a\x09each time passing value that is known\x0a\x09not to be an index, as the first parameter\x22\x0a\x09\x0a\x09self subclassResponsibility",
  84046. referencedClasses: [],
  84047. //>>excludeEnd("ide");
  84048. pragmas: [],
  84049. messageSends: ["subclassResponsibility"]
  84050. }, function ($methodClass){ return function (aBlock){
  84051. var self=this,$self=this;
  84052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84053. return $core.withContext(function($ctx1) {
  84054. //>>excludeEnd("ctx");
  84055. $self._subclassResponsibility();
  84056. return self;
  84057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84058. }, function($ctx1) {$ctx1.fill(self,"nonIndexesDo:",{aBlock:aBlock})});
  84059. //>>excludeEnd("ctx");
  84060. }; }),
  84061. $globals.TKeyValueCollectionTest);
  84062. $core.addMethod(
  84063. $core.method({
  84064. selector: "sampleNewIndex",
  84065. protocol: "fixture",
  84066. //>>excludeStart("ide", pragmas.excludeIdeData);
  84067. args: [],
  84068. source: "sampleNewIndex\x0a\x09\x22Answers a value that can be used as index in at:put: or at:ifAbsentPut:\x22\x0a\x09\x0a\x09self subclassResponsibility",
  84069. referencedClasses: [],
  84070. //>>excludeEnd("ide");
  84071. pragmas: [],
  84072. messageSends: ["subclassResponsibility"]
  84073. }, function ($methodClass){ return function (){
  84074. var self=this,$self=this;
  84075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84076. return $core.withContext(function($ctx1) {
  84077. //>>excludeEnd("ctx");
  84078. $self._subclassResponsibility();
  84079. return self;
  84080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84081. }, function($ctx1) {$ctx1.fill(self,"sampleNewIndex",{})});
  84082. //>>excludeEnd("ctx");
  84083. }; }),
  84084. $globals.TKeyValueCollectionTest);
  84085. $core.addMethod(
  84086. $core.method({
  84087. selector: "samplesDo:",
  84088. protocol: "fixture",
  84089. //>>excludeStart("ide", pragmas.excludeIdeData);
  84090. args: ["aBlock"],
  84091. source: "samplesDo: aBlock\x0a\x09\x22Executes block a few times,\x0a\x09each time passing known index and value stored\x0a\x09under that index as the parameters\x22\x0a\x09\x0a\x09self subclassResponsibility",
  84092. referencedClasses: [],
  84093. //>>excludeEnd("ide");
  84094. pragmas: [],
  84095. messageSends: ["subclassResponsibility"]
  84096. }, function ($methodClass){ return function (aBlock){
  84097. var self=this,$self=this;
  84098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84099. return $core.withContext(function($ctx1) {
  84100. //>>excludeEnd("ctx");
  84101. $self._subclassResponsibility();
  84102. return self;
  84103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84104. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
  84105. //>>excludeEnd("ctx");
  84106. }; }),
  84107. $globals.TKeyValueCollectionTest);
  84108. $core.addMethod(
  84109. $core.method({
  84110. selector: "testAt",
  84111. protocol: "tests",
  84112. //>>excludeStart("ide", pragmas.excludeIdeData);
  84113. args: [],
  84114. source: "testAt\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09self should: [ self collection at: each ] raise: Error ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection at: index) equals: value ]",
  84115. referencedClasses: ["Error"],
  84116. //>>excludeEnd("ide");
  84117. pragmas: [],
  84118. messageSends: ["nonIndexesDo:", "should:raise:", "at:", "collection", "samplesDo:", "assert:equals:"]
  84119. }, function ($methodClass){ return function (){
  84120. var self=this,$self=this;
  84121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84122. return $core.withContext(function($ctx1) {
  84123. //>>excludeEnd("ctx");
  84124. $self._nonIndexesDo_((function(each){
  84125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84126. return $core.withContext(function($ctx2) {
  84127. //>>excludeEnd("ctx");
  84128. return $self._should_raise_((function(){
  84129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84130. return $core.withContext(function($ctx3) {
  84131. //>>excludeEnd("ctx");
  84132. return [$recv([$self._collection()
  84133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84134. ,$ctx3.sendIdx["collection"]=1
  84135. //>>excludeEnd("ctx");
  84136. ][0])._at_(each)
  84137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84138. ,$ctx3.sendIdx["at:"]=1
  84139. //>>excludeEnd("ctx");
  84140. ][0];
  84141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84142. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  84143. //>>excludeEnd("ctx");
  84144. }),$globals.Error);
  84145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84146. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  84147. //>>excludeEnd("ctx");
  84148. }));
  84149. $self._samplesDo_((function(index,value){
  84150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84151. return $core.withContext(function($ctx2) {
  84152. //>>excludeEnd("ctx");
  84153. return $self._assert_equals_($recv($self._collection())._at_(index),value);
  84154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84155. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
  84156. //>>excludeEnd("ctx");
  84157. }));
  84158. return self;
  84159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84160. }, function($ctx1) {$ctx1.fill(self,"testAt",{})});
  84161. //>>excludeEnd("ctx");
  84162. }; }),
  84163. $globals.TKeyValueCollectionTest);
  84164. $core.addMethod(
  84165. $core.method({
  84166. selector: "testAtIfAbsent",
  84167. protocol: "tests",
  84168. //>>excludeStart("ide", pragmas.excludeIdeData);
  84169. args: [],
  84170. source: "testAtIfAbsent\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09self assert: (self collection at: each ifAbsent: [ self sampleNewValue ]) equals: self sampleNewValue ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection at: index ifAbsent: [ self sampleNewValue ]) equals: value ].",
  84171. referencedClasses: [],
  84172. //>>excludeEnd("ide");
  84173. pragmas: [],
  84174. messageSends: ["nonIndexesDo:", "assert:equals:", "at:ifAbsent:", "collection", "sampleNewValue", "samplesDo:"]
  84175. }, function ($methodClass){ return function (){
  84176. var self=this,$self=this;
  84177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84178. return $core.withContext(function($ctx1) {
  84179. //>>excludeEnd("ctx");
  84180. $self._nonIndexesDo_((function(each){
  84181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84182. return $core.withContext(function($ctx2) {
  84183. //>>excludeEnd("ctx");
  84184. return [$self._assert_equals_([$recv([$self._collection()
  84185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84186. ,$ctx2.sendIdx["collection"]=1
  84187. //>>excludeEnd("ctx");
  84188. ][0])._at_ifAbsent_(each,(function(){
  84189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84190. return $core.withContext(function($ctx3) {
  84191. //>>excludeEnd("ctx");
  84192. return [$self._sampleNewValue()
  84193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84194. ,$ctx3.sendIdx["sampleNewValue"]=1
  84195. //>>excludeEnd("ctx");
  84196. ][0];
  84197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84198. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  84199. //>>excludeEnd("ctx");
  84200. }))
  84201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84202. ,$ctx2.sendIdx["at:ifAbsent:"]=1
  84203. //>>excludeEnd("ctx");
  84204. ][0],[$self._sampleNewValue()
  84205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84206. ,$ctx2.sendIdx["sampleNewValue"]=2
  84207. //>>excludeEnd("ctx");
  84208. ][0])
  84209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84210. ,$ctx2.sendIdx["assert:equals:"]=1
  84211. //>>excludeEnd("ctx");
  84212. ][0];
  84213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84214. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  84215. //>>excludeEnd("ctx");
  84216. }));
  84217. $self._samplesDo_((function(index,value){
  84218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84219. return $core.withContext(function($ctx2) {
  84220. //>>excludeEnd("ctx");
  84221. return $self._assert_equals_($recv($self._collection())._at_ifAbsent_(index,(function(){
  84222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84223. return $core.withContext(function($ctx3) {
  84224. //>>excludeEnd("ctx");
  84225. return $self._sampleNewValue();
  84226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84227. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  84228. //>>excludeEnd("ctx");
  84229. })),value);
  84230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84231. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
  84232. //>>excludeEnd("ctx");
  84233. }));
  84234. return self;
  84235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84236. }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{})});
  84237. //>>excludeEnd("ctx");
  84238. }; }),
  84239. $globals.TKeyValueCollectionTest);
  84240. $core.addMethod(
  84241. $core.method({
  84242. selector: "testAtIfAbsentPut",
  84243. protocol: "tests",
  84244. //>>excludeStart("ide", pragmas.excludeIdeData);
  84245. args: [],
  84246. source: "testAtIfAbsentPut\x0a\x09| newCollection |\x0a\x09newCollection := self collection.\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (newCollection at: index ifAbsentPut: [ self sampleNewValue ]) equals: value ].\x0a\x09self assert: newCollection equals: self collection.\x0a\x09self assert: (newCollection at: self sampleNewIndex ifAbsentPut: [ self sampleNewValue ]) equals: self sampleNewValue.\x0a\x09self assert: newCollection equals: self collectionWithNewValue",
  84247. referencedClasses: [],
  84248. //>>excludeEnd("ide");
  84249. pragmas: [],
  84250. messageSends: ["collection", "samplesDo:", "assert:equals:", "at:ifAbsentPut:", "sampleNewValue", "sampleNewIndex", "collectionWithNewValue"]
  84251. }, function ($methodClass){ return function (){
  84252. var self=this,$self=this;
  84253. var newCollection;
  84254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84255. return $core.withContext(function($ctx1) {
  84256. //>>excludeEnd("ctx");
  84257. newCollection=[$self._collection()
  84258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84259. ,$ctx1.sendIdx["collection"]=1
  84260. //>>excludeEnd("ctx");
  84261. ][0];
  84262. $self._samplesDo_((function(index,value){
  84263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84264. return $core.withContext(function($ctx2) {
  84265. //>>excludeEnd("ctx");
  84266. return [$self._assert_equals_([$recv(newCollection)._at_ifAbsentPut_(index,(function(){
  84267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84268. return $core.withContext(function($ctx3) {
  84269. //>>excludeEnd("ctx");
  84270. return [$self._sampleNewValue()
  84271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84272. ,$ctx3.sendIdx["sampleNewValue"]=1
  84273. //>>excludeEnd("ctx");
  84274. ][0];
  84275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84276. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  84277. //>>excludeEnd("ctx");
  84278. }))
  84279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84280. ,$ctx2.sendIdx["at:ifAbsentPut:"]=1
  84281. //>>excludeEnd("ctx");
  84282. ][0],value)
  84283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84284. ,$ctx2.sendIdx["assert:equals:"]=1
  84285. //>>excludeEnd("ctx");
  84286. ][0];
  84287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84288. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
  84289. //>>excludeEnd("ctx");
  84290. }));
  84291. [$self._assert_equals_(newCollection,$self._collection())
  84292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84293. ,$ctx1.sendIdx["assert:equals:"]=2
  84294. //>>excludeEnd("ctx");
  84295. ][0];
  84296. [$self._assert_equals_($recv(newCollection)._at_ifAbsentPut_($self._sampleNewIndex(),(function(){
  84297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84298. return $core.withContext(function($ctx2) {
  84299. //>>excludeEnd("ctx");
  84300. return [$self._sampleNewValue()
  84301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84302. ,$ctx2.sendIdx["sampleNewValue"]=2
  84303. //>>excludeEnd("ctx");
  84304. ][0];
  84305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84306. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  84307. //>>excludeEnd("ctx");
  84308. })),$self._sampleNewValue())
  84309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84310. ,$ctx1.sendIdx["assert:equals:"]=3
  84311. //>>excludeEnd("ctx");
  84312. ][0];
  84313. $self._assert_equals_(newCollection,$self._collectionWithNewValue());
  84314. return self;
  84315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84316. }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsentPut",{newCollection:newCollection})});
  84317. //>>excludeEnd("ctx");
  84318. }; }),
  84319. $globals.TKeyValueCollectionTest);
  84320. $core.addMethod(
  84321. $core.method({
  84322. selector: "testAtIfPresent",
  84323. protocol: "tests",
  84324. //>>excludeStart("ide", pragmas.excludeIdeData);
  84325. args: [],
  84326. source: "testAtIfPresent\x0a\x09| visited sentinel |\x0a\x09sentinel := Object new.\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09visited := nil.\x0a\x09\x09self assert: (self collection at: each ifPresent: [ :value1 | visited := value1. sentinel ]) equals: nil.\x0a\x09\x09self assert: visited isNil ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09visited := nil.\x0a\x09\x09self assert: (self collection at: index ifPresent: [ :value2 | visited := value2. sentinel ]) equals: sentinel.\x0a\x09\x09self assert: visited equals: (self collection at: index) ]",
  84327. referencedClasses: ["Object"],
  84328. //>>excludeEnd("ide");
  84329. pragmas: [],
  84330. messageSends: ["new", "nonIndexesDo:", "assert:equals:", "at:ifPresent:", "collection", "assert:", "isNil", "samplesDo:", "at:"]
  84331. }, function ($methodClass){ return function (){
  84332. var self=this,$self=this;
  84333. var visited,sentinel;
  84334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84335. return $core.withContext(function($ctx1) {
  84336. //>>excludeEnd("ctx");
  84337. sentinel=$recv($globals.Object)._new();
  84338. $self._nonIndexesDo_((function(each){
  84339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84340. return $core.withContext(function($ctx2) {
  84341. //>>excludeEnd("ctx");
  84342. visited=nil;
  84343. [$self._assert_equals_([$recv([$self._collection()
  84344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84345. ,$ctx2.sendIdx["collection"]=1
  84346. //>>excludeEnd("ctx");
  84347. ][0])._at_ifPresent_(each,(function(value1){
  84348. visited=value1;
  84349. return sentinel;
  84350. }))
  84351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84352. ,$ctx2.sendIdx["at:ifPresent:"]=1
  84353. //>>excludeEnd("ctx");
  84354. ][0],nil)
  84355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84356. ,$ctx2.sendIdx["assert:equals:"]=1
  84357. //>>excludeEnd("ctx");
  84358. ][0];
  84359. return $self._assert_($recv(visited)._isNil());
  84360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84361. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  84362. //>>excludeEnd("ctx");
  84363. }));
  84364. $self._samplesDo_((function(index,value){
  84365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84366. return $core.withContext(function($ctx2) {
  84367. //>>excludeEnd("ctx");
  84368. visited=nil;
  84369. [$self._assert_equals_($recv([$self._collection()
  84370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84371. ,$ctx2.sendIdx["collection"]=2
  84372. //>>excludeEnd("ctx");
  84373. ][0])._at_ifPresent_(index,(function(value2){
  84374. visited=value2;
  84375. return sentinel;
  84376. })),sentinel)
  84377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84378. ,$ctx2.sendIdx["assert:equals:"]=2
  84379. //>>excludeEnd("ctx");
  84380. ][0];
  84381. return $self._assert_equals_(visited,$recv($self._collection())._at_(index));
  84382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84383. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
  84384. //>>excludeEnd("ctx");
  84385. }));
  84386. return self;
  84387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84388. }, function($ctx1) {$ctx1.fill(self,"testAtIfPresent",{visited:visited,sentinel:sentinel})});
  84389. //>>excludeEnd("ctx");
  84390. }; }),
  84391. $globals.TKeyValueCollectionTest);
  84392. $core.addMethod(
  84393. $core.method({
  84394. selector: "testAtIfPresentIfAbsent",
  84395. protocol: "tests",
  84396. //>>excludeStart("ide", pragmas.excludeIdeData);
  84397. args: [],
  84398. source: "testAtIfPresentIfAbsent\x0a\x09| visited sentinel |\x0a\x09sentinel := Object new.\x0a\x09self nonIndexesDo: [ :each |\x0a\x09\x09visited := nil.\x0a\x09\x09self assert: (self collection at: each ifPresent: [ :value1 | visited := value1. sentinel ] ifAbsent: [ self sampleNewValue ] ) equals: self sampleNewValue.\x0a\x09\x09self assert: visited isNil ].\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09visited := nil.\x0a\x09\x09self assert: (self collection at: index ifPresent: [ :value2 | visited := value2. sentinel ] ifAbsent: [ self sampleNewValue ]) equals: sentinel.\x0a\x09\x09self assert: visited equals: (self collection at: index) ]",
  84399. referencedClasses: ["Object"],
  84400. //>>excludeEnd("ide");
  84401. pragmas: [],
  84402. messageSends: ["new", "nonIndexesDo:", "assert:equals:", "at:ifPresent:ifAbsent:", "collection", "sampleNewValue", "assert:", "isNil", "samplesDo:", "at:"]
  84403. }, function ($methodClass){ return function (){
  84404. var self=this,$self=this;
  84405. var visited,sentinel;
  84406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84407. return $core.withContext(function($ctx1) {
  84408. //>>excludeEnd("ctx");
  84409. sentinel=$recv($globals.Object)._new();
  84410. $self._nonIndexesDo_((function(each){
  84411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84412. return $core.withContext(function($ctx2) {
  84413. //>>excludeEnd("ctx");
  84414. visited=nil;
  84415. [$self._assert_equals_([$recv([$self._collection()
  84416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84417. ,$ctx2.sendIdx["collection"]=1
  84418. //>>excludeEnd("ctx");
  84419. ][0])._at_ifPresent_ifAbsent_(each,(function(value1){
  84420. visited=value1;
  84421. return sentinel;
  84422. }),(function(){
  84423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84424. return $core.withContext(function($ctx3) {
  84425. //>>excludeEnd("ctx");
  84426. return [$self._sampleNewValue()
  84427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84428. ,$ctx3.sendIdx["sampleNewValue"]=1
  84429. //>>excludeEnd("ctx");
  84430. ][0];
  84431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84432. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  84433. //>>excludeEnd("ctx");
  84434. }))
  84435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84436. ,$ctx2.sendIdx["at:ifPresent:ifAbsent:"]=1
  84437. //>>excludeEnd("ctx");
  84438. ][0],[$self._sampleNewValue()
  84439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84440. ,$ctx2.sendIdx["sampleNewValue"]=2
  84441. //>>excludeEnd("ctx");
  84442. ][0])
  84443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84444. ,$ctx2.sendIdx["assert:equals:"]=1
  84445. //>>excludeEnd("ctx");
  84446. ][0];
  84447. return $self._assert_($recv(visited)._isNil());
  84448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84449. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  84450. //>>excludeEnd("ctx");
  84451. }));
  84452. $self._samplesDo_((function(index,value){
  84453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84454. return $core.withContext(function($ctx2) {
  84455. //>>excludeEnd("ctx");
  84456. visited=nil;
  84457. [$self._assert_equals_($recv([$self._collection()
  84458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84459. ,$ctx2.sendIdx["collection"]=2
  84460. //>>excludeEnd("ctx");
  84461. ][0])._at_ifPresent_ifAbsent_(index,(function(value2){
  84462. visited=value2;
  84463. return sentinel;
  84464. }),(function(){
  84465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84466. return $core.withContext(function($ctx3) {
  84467. //>>excludeEnd("ctx");
  84468. return $self._sampleNewValue();
  84469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84470. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,6)});
  84471. //>>excludeEnd("ctx");
  84472. })),sentinel)
  84473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84474. ,$ctx2.sendIdx["assert:equals:"]=2
  84475. //>>excludeEnd("ctx");
  84476. ][0];
  84477. return $self._assert_equals_(visited,$recv($self._collection())._at_(index));
  84478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84479. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,4)});
  84480. //>>excludeEnd("ctx");
  84481. }));
  84482. return self;
  84483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84484. }, function($ctx1) {$ctx1.fill(self,"testAtIfPresentIfAbsent",{visited:visited,sentinel:sentinel})});
  84485. //>>excludeEnd("ctx");
  84486. }; }),
  84487. $globals.TKeyValueCollectionTest);
  84488. $core.addMethod(
  84489. $core.method({
  84490. selector: "testAtPut",
  84491. protocol: "tests",
  84492. //>>excludeStart("ide", pragmas.excludeIdeData);
  84493. args: [],
  84494. source: "testAtPut\x0a\x09| newCollection |\x0a\x09newCollection := self collection.\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09newCollection at: index put: value ].\x0a\x09self assert: newCollection equals: self collection.\x0a\x09newCollection at: self sampleNewIndex put: self sampleNewValue.\x0a\x09self assert: newCollection equals: self collectionWithNewValue",
  84495. referencedClasses: [],
  84496. //>>excludeEnd("ide");
  84497. pragmas: [],
  84498. messageSends: ["collection", "samplesDo:", "at:put:", "assert:equals:", "sampleNewIndex", "sampleNewValue", "collectionWithNewValue"]
  84499. }, function ($methodClass){ return function (){
  84500. var self=this,$self=this;
  84501. var newCollection;
  84502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84503. return $core.withContext(function($ctx1) {
  84504. //>>excludeEnd("ctx");
  84505. newCollection=[$self._collection()
  84506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84507. ,$ctx1.sendIdx["collection"]=1
  84508. //>>excludeEnd("ctx");
  84509. ][0];
  84510. $self._samplesDo_((function(index,value){
  84511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84512. return $core.withContext(function($ctx2) {
  84513. //>>excludeEnd("ctx");
  84514. return [$recv(newCollection)._at_put_(index,value)
  84515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84516. ,$ctx2.sendIdx["at:put:"]=1
  84517. //>>excludeEnd("ctx");
  84518. ][0];
  84519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84520. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
  84521. //>>excludeEnd("ctx");
  84522. }));
  84523. [$self._assert_equals_(newCollection,$self._collection())
  84524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84525. ,$ctx1.sendIdx["assert:equals:"]=1
  84526. //>>excludeEnd("ctx");
  84527. ][0];
  84528. $recv(newCollection)._at_put_($self._sampleNewIndex(),$self._sampleNewValue());
  84529. $self._assert_equals_(newCollection,$self._collectionWithNewValue());
  84530. return self;
  84531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84532. }, function($ctx1) {$ctx1.fill(self,"testAtPut",{newCollection:newCollection})});
  84533. //>>excludeEnd("ctx");
  84534. }; }),
  84535. $globals.TKeyValueCollectionTest);
  84536. $core.addMethod(
  84537. $core.method({
  84538. selector: "testIndexOf",
  84539. protocol: "tests",
  84540. //>>excludeStart("ide", pragmas.excludeIdeData);
  84541. args: [],
  84542. source: "testIndexOf\x0a\x09self should: [ self collection indexOf: self sampleNewValue ] raise: Error.\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection indexOf: value) equals: index ]",
  84543. referencedClasses: ["Error"],
  84544. //>>excludeEnd("ide");
  84545. pragmas: [],
  84546. messageSends: ["should:raise:", "indexOf:", "collection", "sampleNewValue", "samplesDo:", "assert:equals:"]
  84547. }, function ($methodClass){ return function (){
  84548. var self=this,$self=this;
  84549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84550. return $core.withContext(function($ctx1) {
  84551. //>>excludeEnd("ctx");
  84552. $self._should_raise_((function(){
  84553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84554. return $core.withContext(function($ctx2) {
  84555. //>>excludeEnd("ctx");
  84556. return [$recv([$self._collection()
  84557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84558. ,$ctx2.sendIdx["collection"]=1
  84559. //>>excludeEnd("ctx");
  84560. ][0])._indexOf_($self._sampleNewValue())
  84561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84562. ,$ctx2.sendIdx["indexOf:"]=1
  84563. //>>excludeEnd("ctx");
  84564. ][0];
  84565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84566. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  84567. //>>excludeEnd("ctx");
  84568. }),$globals.Error);
  84569. $self._samplesDo_((function(index,value){
  84570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84571. return $core.withContext(function($ctx2) {
  84572. //>>excludeEnd("ctx");
  84573. return $self._assert_equals_($recv($self._collection())._indexOf_(value),index);
  84574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84575. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,2)});
  84576. //>>excludeEnd("ctx");
  84577. }));
  84578. return self;
  84579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84580. }, function($ctx1) {$ctx1.fill(self,"testIndexOf",{})});
  84581. //>>excludeEnd("ctx");
  84582. }; }),
  84583. $globals.TKeyValueCollectionTest);
  84584. $core.addMethod(
  84585. $core.method({
  84586. selector: "testIndexOfWithNull",
  84587. protocol: "tests",
  84588. //>>excludeStart("ide", pragmas.excludeIdeData);
  84589. args: [],
  84590. source: "testIndexOfWithNull\x0a\x09| jsNull |\x0a\x09jsNull := JSON parse: 'null'.\x0a\x09self samplesDo: [ :index :value |\x0a\x09\x09self assert: (self collection at: index put: jsNull; indexOf: jsNull) equals: index ]",
  84591. referencedClasses: ["JSON"],
  84592. //>>excludeEnd("ide");
  84593. pragmas: [],
  84594. messageSends: ["parse:", "samplesDo:", "assert:equals:", "at:put:", "collection", "indexOf:"]
  84595. }, function ($methodClass){ return function (){
  84596. var self=this,$self=this;
  84597. var jsNull;
  84598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84599. return $core.withContext(function($ctx1) {
  84600. //>>excludeEnd("ctx");
  84601. var $1;
  84602. jsNull=$recv($globals.JSON)._parse_("null");
  84603. $self._samplesDo_((function(index,value){
  84604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84605. return $core.withContext(function($ctx2) {
  84606. //>>excludeEnd("ctx");
  84607. $1=$self._collection();
  84608. $recv($1)._at_put_(index,jsNull);
  84609. return $self._assert_equals_($recv($1)._indexOf_(jsNull),index);
  84610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84611. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
  84612. //>>excludeEnd("ctx");
  84613. }));
  84614. return self;
  84615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84616. }, function($ctx1) {$ctx1.fill(self,"testIndexOfWithNull",{jsNull:jsNull})});
  84617. //>>excludeEnd("ctx");
  84618. }; }),
  84619. $globals.TKeyValueCollectionTest);
  84620. $core.addMethod(
  84621. $core.method({
  84622. selector: "testWithIndexDo",
  84623. protocol: "tests",
  84624. //>>excludeStart("ide", pragmas.excludeIdeData);
  84625. args: [],
  84626. source: "testWithIndexDo\x0a\x09| collection |\x0a\x09collection := self collection.\x0a\x09\x0a\x09self collection withIndexDo: [ :each :index |\x0a\x09\x09self assert: (collection at: index) equals: each ]",
  84627. referencedClasses: [],
  84628. //>>excludeEnd("ide");
  84629. pragmas: [],
  84630. messageSends: ["collection", "withIndexDo:", "assert:equals:", "at:"]
  84631. }, function ($methodClass){ return function (){
  84632. var self=this,$self=this;
  84633. var collection;
  84634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84635. return $core.withContext(function($ctx1) {
  84636. //>>excludeEnd("ctx");
  84637. collection=[$self._collection()
  84638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84639. ,$ctx1.sendIdx["collection"]=1
  84640. //>>excludeEnd("ctx");
  84641. ][0];
  84642. $recv($self._collection())._withIndexDo_((function(each,index){
  84643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84644. return $core.withContext(function($ctx2) {
  84645. //>>excludeEnd("ctx");
  84646. return $self._assert_equals_($recv(collection)._at_(index),each);
  84647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84648. }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)});
  84649. //>>excludeEnd("ctx");
  84650. }));
  84651. return self;
  84652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84653. }, function($ctx1) {$ctx1.fill(self,"testWithIndexDo",{collection:collection})});
  84654. //>>excludeEnd("ctx");
  84655. }; }),
  84656. $globals.TKeyValueCollectionTest);
  84657. $core.addClass("UndefinedTest", $globals.TestCase, "Kernel-Tests");
  84658. $core.addMethod(
  84659. $core.method({
  84660. selector: "testCopying",
  84661. protocol: "tests",
  84662. //>>excludeStart("ide", pragmas.excludeIdeData);
  84663. args: [],
  84664. source: "testCopying\x0a\x09self assert: nil copy equals: nil",
  84665. referencedClasses: [],
  84666. //>>excludeEnd("ide");
  84667. pragmas: [],
  84668. messageSends: ["assert:equals:", "copy"]
  84669. }, function ($methodClass){ return function (){
  84670. var self=this,$self=this;
  84671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84672. return $core.withContext(function($ctx1) {
  84673. //>>excludeEnd("ctx");
  84674. $self._assert_equals_($nil._copy(),nil);
  84675. return self;
  84676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84677. }, function($ctx1) {$ctx1.fill(self,"testCopying",{})});
  84678. //>>excludeEnd("ctx");
  84679. }; }),
  84680. $globals.UndefinedTest);
  84681. $core.addMethod(
  84682. $core.method({
  84683. selector: "testDeepCopy",
  84684. protocol: "tests",
  84685. //>>excludeStart("ide", pragmas.excludeIdeData);
  84686. args: [],
  84687. source: "testDeepCopy\x0a\x09self assert: nil deepCopy = nil",
  84688. referencedClasses: [],
  84689. //>>excludeEnd("ide");
  84690. pragmas: [],
  84691. messageSends: ["assert:", "=", "deepCopy"]
  84692. }, function ($methodClass){ return function (){
  84693. var self=this,$self=this;
  84694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84695. return $core.withContext(function($ctx1) {
  84696. //>>excludeEnd("ctx");
  84697. $self._assert_($recv($nil._deepCopy()).__eq(nil));
  84698. return self;
  84699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84700. }, function($ctx1) {$ctx1.fill(self,"testDeepCopy",{})});
  84701. //>>excludeEnd("ctx");
  84702. }; }),
  84703. $globals.UndefinedTest);
  84704. $core.addMethod(
  84705. $core.method({
  84706. selector: "testIfNil",
  84707. protocol: "tests",
  84708. //>>excludeStart("ide", pragmas.excludeIdeData);
  84709. args: [],
  84710. source: "testIfNil\x0a\x09self assert: (nil ifNil: [ true ]) equals: true.\x0a\x09self deny: (nil ifNotNil: [ true ]) = true.\x0a\x09self assert: (nil ifNil: [ true ] ifNotNil: [ false ]) equals: true.\x0a\x09self deny: (nil ifNotNil: [ true ] ifNil: [ false ]) = true",
  84711. referencedClasses: [],
  84712. //>>excludeEnd("ide");
  84713. pragmas: [],
  84714. messageSends: ["assert:equals:", "ifNil:", "deny:", "=", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"]
  84715. }, function ($methodClass){ return function (){
  84716. var self=this,$self=this;
  84717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84718. return $core.withContext(function($ctx1) {
  84719. //>>excludeEnd("ctx");
  84720. var $1,$2,$3,$4;
  84721. if(nil == null || nil.a$nil){
  84722. $1=true;
  84723. } else {
  84724. $1=nil;
  84725. }
  84726. [$self._assert_equals_($1,true)
  84727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84728. ,$ctx1.sendIdx["assert:equals:"]=1
  84729. //>>excludeEnd("ctx");
  84730. ][0];
  84731. if(nil == null || nil.a$nil){
  84732. $2=nil;
  84733. } else {
  84734. $2=true;
  84735. }
  84736. [$self._deny_([$recv($2).__eq(true)
  84737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84738. ,$ctx1.sendIdx["="]=1
  84739. //>>excludeEnd("ctx");
  84740. ][0])
  84741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84742. ,$ctx1.sendIdx["deny:"]=1
  84743. //>>excludeEnd("ctx");
  84744. ][0];
  84745. if(nil == null || nil.a$nil){
  84746. $3=true;
  84747. } else {
  84748. $3=false;
  84749. }
  84750. $self._assert_equals_($3,true);
  84751. if(nil == null || nil.a$nil){
  84752. $4=false;
  84753. } else {
  84754. $4=true;
  84755. }
  84756. $self._deny_($recv($4).__eq(true));
  84757. return self;
  84758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84759. }, function($ctx1) {$ctx1.fill(self,"testIfNil",{})});
  84760. //>>excludeEnd("ctx");
  84761. }; }),
  84762. $globals.UndefinedTest);
  84763. $core.addMethod(
  84764. $core.method({
  84765. selector: "testIsNil",
  84766. protocol: "tests",
  84767. //>>excludeStart("ide", pragmas.excludeIdeData);
  84768. args: [],
  84769. source: "testIsNil\x0a\x09self assert: nil isNil.\x0a\x09self deny: nil notNil.",
  84770. referencedClasses: [],
  84771. //>>excludeEnd("ide");
  84772. pragmas: [],
  84773. messageSends: ["assert:", "isNil", "deny:", "notNil"]
  84774. }, function ($methodClass){ return function (){
  84775. var self=this,$self=this;
  84776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84777. return $core.withContext(function($ctx1) {
  84778. //>>excludeEnd("ctx");
  84779. $self._assert_($nil._isNil());
  84780. $self._deny_($nil._notNil());
  84781. return self;
  84782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84783. }, function($ctx1) {$ctx1.fill(self,"testIsNil",{})});
  84784. //>>excludeEnd("ctx");
  84785. }; }),
  84786. $globals.UndefinedTest);
  84787. $core.setTraitComposition([{trait: $globals.TClassBuildingTest, aliases: {"tearDownTheClass":"tearDown"}}], $globals.ClassBuilderTest);
  84788. $core.setTraitComposition([{trait: $globals.TClassBuildingTest}], $globals.ClassTest);
  84789. $core.setTraitComposition([{trait: $globals.TKeyValueCollectionTest}], $globals.AssociativeCollectionTest);
  84790. $core.setTraitComposition([{trait: $globals.TKeyValueCollectionTest}], $globals.SequenceableCollectionTest);
  84791. });
  84792. define('amber/core/Compiler-Tests',["amber/boot", "require", "amber/core/Kernel-Tests", "amber/core/SUnit"], function($boot,requirejs){"use strict";
  84793. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  84794. var $pkg = $core.addPackage("Compiler-Tests");
  84795. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  84796. $core.addClass("ASTMethodRunningTest", $globals.TestCase, "Compiler-Tests");
  84797. $core.setSlots($globals.ASTMethodRunningTest, ["receiver", "arguments"]);
  84798. $core.addMethod(
  84799. $core.method({
  84800. selector: "arguments",
  84801. protocol: "accessing",
  84802. //>>excludeStart("ide", pragmas.excludeIdeData);
  84803. args: [],
  84804. source: "arguments\x0a\x09^ arguments",
  84805. referencedClasses: [],
  84806. //>>excludeEnd("ide");
  84807. pragmas: [],
  84808. messageSends: []
  84809. }, function ($methodClass){ return function (){
  84810. var self=this,$self=this;
  84811. return $self.arguments;
  84812. }; }),
  84813. $globals.ASTMethodRunningTest);
  84814. $core.addMethod(
  84815. $core.method({
  84816. selector: "receiver",
  84817. protocol: "accessing",
  84818. //>>excludeStart("ide", pragmas.excludeIdeData);
  84819. args: [],
  84820. source: "receiver\x0a\x09^ receiver",
  84821. referencedClasses: [],
  84822. //>>excludeEnd("ide");
  84823. pragmas: [],
  84824. messageSends: []
  84825. }, function ($methodClass){ return function (){
  84826. var self=this,$self=this;
  84827. return $self.receiver;
  84828. }; }),
  84829. $globals.ASTMethodRunningTest);
  84830. $core.addMethod(
  84831. $core.method({
  84832. selector: "setUp",
  84833. protocol: "initialization",
  84834. //>>excludeStart("ide", pragmas.excludeIdeData);
  84835. args: [],
  84836. source: "setUp\x0a\x09arguments := #().\x0a\x09receiver := DoIt new",
  84837. referencedClasses: ["DoIt"],
  84838. //>>excludeEnd("ide");
  84839. pragmas: [],
  84840. messageSends: ["new"]
  84841. }, function ($methodClass){ return function (){
  84842. var self=this,$self=this;
  84843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84844. return $core.withContext(function($ctx1) {
  84845. //>>excludeEnd("ctx");
  84846. $self.arguments=[];
  84847. $self.receiver=$recv($globals.DoIt)._new();
  84848. return self;
  84849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84850. }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
  84851. //>>excludeEnd("ctx");
  84852. }; }),
  84853. $globals.ASTMethodRunningTest);
  84854. $core.addMethod(
  84855. $core.method({
  84856. selector: "should:class:receiver:return:",
  84857. protocol: "testing",
  84858. //>>excludeStart("ide", pragmas.excludeIdeData);
  84859. args: ["aString", "aClass", "anObject", "aResult"],
  84860. source: "should: aString class: aClass receiver: anObject return: aResult\x0a\x09receiver := anObject.\x0a\x09self while: aString inClass: aClass should: [ :runBlock |\x0a\x09\x09self assert: runBlock value equals: aResult ]",
  84861. referencedClasses: [],
  84862. //>>excludeEnd("ide");
  84863. pragmas: [],
  84864. messageSends: ["while:inClass:should:", "assert:equals:", "value"]
  84865. }, function ($methodClass){ return function (aString,aClass,anObject,aResult){
  84866. var self=this,$self=this;
  84867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84868. return $core.withContext(function($ctx1) {
  84869. //>>excludeEnd("ctx");
  84870. $self.receiver=anObject;
  84871. $self._while_inClass_should_(aString,aClass,(function(runBlock){
  84872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84873. return $core.withContext(function($ctx2) {
  84874. //>>excludeEnd("ctx");
  84875. return $self._assert_equals_($recv(runBlock)._value(),aResult);
  84876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84877. }, function($ctx2) {$ctx2.fillBlock({runBlock:runBlock},$ctx1,1)});
  84878. //>>excludeEnd("ctx");
  84879. }));
  84880. return self;
  84881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84882. }, function($ctx1) {$ctx1.fill(self,"should:class:receiver:return:",{aString:aString,aClass:aClass,anObject:anObject,aResult:aResult})});
  84883. //>>excludeEnd("ctx");
  84884. }; }),
  84885. $globals.ASTMethodRunningTest);
  84886. $core.addMethod(
  84887. $core.method({
  84888. selector: "should:receiver:raise:",
  84889. protocol: "testing",
  84890. //>>excludeStart("ide", pragmas.excludeIdeData);
  84891. args: ["aString", "anObject", "anErrorClass"],
  84892. source: "should: aString receiver: anObject raise: anErrorClass\x0a\x09receiver := anObject.\x0a\x09self while: aString should: [ :runBlock |\x0a\x09\x09self should: runBlock raise: anErrorClass ]",
  84893. referencedClasses: [],
  84894. //>>excludeEnd("ide");
  84895. pragmas: [],
  84896. messageSends: ["while:should:", "should:raise:"]
  84897. }, function ($methodClass){ return function (aString,anObject,anErrorClass){
  84898. var self=this,$self=this;
  84899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84900. return $core.withContext(function($ctx1) {
  84901. //>>excludeEnd("ctx");
  84902. $self.receiver=anObject;
  84903. $self._while_should_(aString,(function(runBlock){
  84904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84905. return $core.withContext(function($ctx2) {
  84906. //>>excludeEnd("ctx");
  84907. return $self._should_raise_(runBlock,anErrorClass);
  84908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84909. }, function($ctx2) {$ctx2.fillBlock({runBlock:runBlock},$ctx1,1)});
  84910. //>>excludeEnd("ctx");
  84911. }));
  84912. return self;
  84913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84914. }, function($ctx1) {$ctx1.fill(self,"should:receiver:raise:",{aString:aString,anObject:anObject,anErrorClass:anErrorClass})});
  84915. //>>excludeEnd("ctx");
  84916. }; }),
  84917. $globals.ASTMethodRunningTest);
  84918. $core.addMethod(
  84919. $core.method({
  84920. selector: "should:receiver:return:",
  84921. protocol: "testing",
  84922. //>>excludeStart("ide", pragmas.excludeIdeData);
  84923. args: ["aString", "anObject", "aResult"],
  84924. source: "should: aString receiver: anObject return: aResult\x0a\x09receiver := anObject.\x0a\x09self should: aString return: aResult",
  84925. referencedClasses: [],
  84926. //>>excludeEnd("ide");
  84927. pragmas: [],
  84928. messageSends: ["should:return:"]
  84929. }, function ($methodClass){ return function (aString,anObject,aResult){
  84930. var self=this,$self=this;
  84931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84932. return $core.withContext(function($ctx1) {
  84933. //>>excludeEnd("ctx");
  84934. $self.receiver=anObject;
  84935. $self._should_return_(aString,aResult);
  84936. return self;
  84937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84938. }, function($ctx1) {$ctx1.fill(self,"should:receiver:return:",{aString:aString,anObject:anObject,aResult:aResult})});
  84939. //>>excludeEnd("ctx");
  84940. }; }),
  84941. $globals.ASTMethodRunningTest);
  84942. $core.addMethod(
  84943. $core.method({
  84944. selector: "should:return:",
  84945. protocol: "testing",
  84946. //>>excludeStart("ide", pragmas.excludeIdeData);
  84947. args: ["aString", "anObject"],
  84948. source: "should: aString return: anObject\x0a\x09self while: aString should: [ :runBlock |\x0a\x09\x09self assert: runBlock value equals: anObject ]",
  84949. referencedClasses: [],
  84950. //>>excludeEnd("ide");
  84951. pragmas: [],
  84952. messageSends: ["while:should:", "assert:equals:", "value"]
  84953. }, function ($methodClass){ return function (aString,anObject){
  84954. var self=this,$self=this;
  84955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84956. return $core.withContext(function($ctx1) {
  84957. //>>excludeEnd("ctx");
  84958. $self._while_should_(aString,(function(runBlock){
  84959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84960. return $core.withContext(function($ctx2) {
  84961. //>>excludeEnd("ctx");
  84962. return $self._assert_equals_($recv(runBlock)._value(),anObject);
  84963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84964. }, function($ctx2) {$ctx2.fillBlock({runBlock:runBlock},$ctx1,1)});
  84965. //>>excludeEnd("ctx");
  84966. }));
  84967. return self;
  84968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84969. }, function($ctx1) {$ctx1.fill(self,"should:return:",{aString:aString,anObject:anObject})});
  84970. //>>excludeEnd("ctx");
  84971. }; }),
  84972. $globals.ASTMethodRunningTest);
  84973. $core.addClass("AbstractCompilerTest", $globals.ASTMethodRunningTest, "Compiler-Tests");
  84974. $core.addMethod(
  84975. $core.method({
  84976. selector: "testAfterInliningNonLocalBlockReturnIndexSend",
  84977. protocol: "tests",
  84978. //>>excludeStart("ide", pragmas.excludeIdeData);
  84979. args: [],
  84980. source: "testAfterInliningNonLocalBlockReturnIndexSend\x0a\x09self should: 'foo [ ^ true ifTrue: [ self class ] ] value. self class' return: DoIt.",
  84981. referencedClasses: ["DoIt"],
  84982. //>>excludeEnd("ide");
  84983. pragmas: [],
  84984. messageSends: ["should:return:"]
  84985. }, function ($methodClass){ return function (){
  84986. var self=this,$self=this;
  84987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84988. return $core.withContext(function($ctx1) {
  84989. //>>excludeEnd("ctx");
  84990. $self._should_return_("foo [ ^ true ifTrue: [ self class ] ] value. self class",$globals.DoIt);
  84991. return self;
  84992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84993. }, function($ctx1) {$ctx1.fill(self,"testAfterInliningNonLocalBlockReturnIndexSend",{})});
  84994. //>>excludeEnd("ctx");
  84995. }; }),
  84996. $globals.AbstractCompilerTest);
  84997. $core.addMethod(
  84998. $core.method({
  84999. selector: "testAfterInliningNonLocalBlockReturnSuperSend",
  85000. protocol: "tests",
  85001. //>>excludeStart("ide", pragmas.excludeIdeData);
  85002. args: [],
  85003. source: "testAfterInliningNonLocalBlockReturnSuperSend\x0a\x09self should: 'foo [ ^ true ifTrue: [ super class ] ] value' return: DoIt.",
  85004. referencedClasses: ["DoIt"],
  85005. //>>excludeEnd("ide");
  85006. pragmas: [],
  85007. messageSends: ["should:return:"]
  85008. }, function ($methodClass){ return function (){
  85009. var self=this,$self=this;
  85010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85011. return $core.withContext(function($ctx1) {
  85012. //>>excludeEnd("ctx");
  85013. $self._should_return_("foo [ ^ true ifTrue: [ super class ] ] value",$globals.DoIt);
  85014. return self;
  85015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85016. }, function($ctx1) {$ctx1.fill(self,"testAfterInliningNonLocalBlockReturnSuperSend",{})});
  85017. //>>excludeEnd("ctx");
  85018. }; }),
  85019. $globals.AbstractCompilerTest);
  85020. $core.addMethod(
  85021. $core.method({
  85022. selector: "testAssignment",
  85023. protocol: "tests",
  85024. //>>excludeStart("ide", pragmas.excludeIdeData);
  85025. args: [],
  85026. source: "testAssignment\x0a\x09self should: 'foo | a | a := true ifTrue: [ 1 ]. ^ a' return: 1.\x0a\x09self should: 'foo | a | a := false ifTrue: [ 1 ]. ^ a' return: nil.\x0a\x0a\x09self should: 'foo | a | ^ a := true ifTrue: [ 1 ]' return: 1",
  85027. referencedClasses: [],
  85028. //>>excludeEnd("ide");
  85029. pragmas: [],
  85030. messageSends: ["should:return:"]
  85031. }, function ($methodClass){ return function (){
  85032. var self=this,$self=this;
  85033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85034. return $core.withContext(function($ctx1) {
  85035. //>>excludeEnd("ctx");
  85036. [$self._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1))
  85037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85038. ,$ctx1.sendIdx["should:return:"]=1
  85039. //>>excludeEnd("ctx");
  85040. ][0];
  85041. [$self._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil)
  85042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85043. ,$ctx1.sendIdx["should:return:"]=2
  85044. //>>excludeEnd("ctx");
  85045. ][0];
  85046. $self._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
  85047. return self;
  85048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85049. }, function($ctx1) {$ctx1.fill(self,"testAssignment",{})});
  85050. //>>excludeEnd("ctx");
  85051. }; }),
  85052. $globals.AbstractCompilerTest);
  85053. $core.addMethod(
  85054. $core.method({
  85055. selector: "testBackslashSelectors",
  85056. protocol: "tests",
  85057. //>>excludeStart("ide", pragmas.excludeIdeData);
  85058. args: [],
  85059. source: "testBackslashSelectors\x0a\x09\x0a\x09self should: '\x5c arg ^ 4' return: 4.\x0a\x09self should: '\x5c\x5c arg ^ 42' return: 42",
  85060. referencedClasses: [],
  85061. //>>excludeEnd("ide");
  85062. pragmas: [],
  85063. messageSends: ["should:return:"]
  85064. }, function ($methodClass){ return function (){
  85065. var self=this,$self=this;
  85066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85067. return $core.withContext(function($ctx1) {
  85068. //>>excludeEnd("ctx");
  85069. [$self._should_return_("\x5c arg ^ 4",(4))
  85070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85071. ,$ctx1.sendIdx["should:return:"]=1
  85072. //>>excludeEnd("ctx");
  85073. ][0];
  85074. $self._should_return_("\x5c\x5c arg ^ 42",(42));
  85075. return self;
  85076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85077. }, function($ctx1) {$ctx1.fill(self,"testBackslashSelectors",{})});
  85078. //>>excludeEnd("ctx");
  85079. }; }),
  85080. $globals.AbstractCompilerTest);
  85081. $core.addMethod(
  85082. $core.method({
  85083. selector: "testBlockReturn",
  85084. protocol: "tests",
  85085. //>>excludeStart("ide", pragmas.excludeIdeData);
  85086. args: [],
  85087. source: "testBlockReturn\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]' return: #(2 3 4).\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]' return: #(2 3 4).\x0a\x09self should: 'foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]' return: #(2 1 4).",
  85088. referencedClasses: [],
  85089. //>>excludeEnd("ide");
  85090. pragmas: [],
  85091. messageSends: ["should:return:"]
  85092. }, function ($methodClass){ return function (){
  85093. var self=this,$self=this;
  85094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85095. return $core.withContext(function($ctx1) {
  85096. //>>excludeEnd("ctx");
  85097. [$self._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)])
  85098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85099. ,$ctx1.sendIdx["should:return:"]=1
  85100. //>>excludeEnd("ctx");
  85101. ][0];
  85102. [$self._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)])
  85103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85104. ,$ctx1.sendIdx["should:return:"]=2
  85105. //>>excludeEnd("ctx");
  85106. ][0];
  85107. $self._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
  85108. return self;
  85109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85110. }, function($ctx1) {$ctx1.fill(self,"testBlockReturn",{})});
  85111. //>>excludeEnd("ctx");
  85112. }; }),
  85113. $globals.AbstractCompilerTest);
  85114. $core.addMethod(
  85115. $core.method({
  85116. selector: "testCascades",
  85117. protocol: "tests",
  85118. //>>excludeStart("ide", pragmas.excludeIdeData);
  85119. args: [],
  85120. source: "testCascades\x0a\x09\x0a\x09self should: 'foo ^ Array new add: 3; add: 4; yourself' return: #(3 4)",
  85121. referencedClasses: [],
  85122. //>>excludeEnd("ide");
  85123. pragmas: [],
  85124. messageSends: ["should:return:"]
  85125. }, function ($methodClass){ return function (){
  85126. var self=this,$self=this;
  85127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85128. return $core.withContext(function($ctx1) {
  85129. //>>excludeEnd("ctx");
  85130. $self._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
  85131. return self;
  85132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85133. }, function($ctx1) {$ctx1.fill(self,"testCascades",{})});
  85134. //>>excludeEnd("ctx");
  85135. }; }),
  85136. $globals.AbstractCompilerTest);
  85137. $core.addMethod(
  85138. $core.method({
  85139. selector: "testCascadesInDynamicArray",
  85140. protocol: "tests",
  85141. //>>excludeStart("ide", pragmas.excludeIdeData);
  85142. args: [],
  85143. source: "testCascadesInDynamicArray\x0a\x09self should: 'foo | x | x := 1. ^ {x. [x:=2] value; in: [x]}' return: #(1 2)",
  85144. referencedClasses: [],
  85145. //>>excludeEnd("ide");
  85146. pragmas: [],
  85147. messageSends: ["should:return:"]
  85148. }, function ($methodClass){ return function (){
  85149. var self=this,$self=this;
  85150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85151. return $core.withContext(function($ctx1) {
  85152. //>>excludeEnd("ctx");
  85153. $self._should_return_("foo | x | x := 1. ^ {x. [x:=2] value; in: [x]}",[(1), (2)]);
  85154. return self;
  85155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85156. }, function($ctx1) {$ctx1.fill(self,"testCascadesInDynamicArray",{})});
  85157. //>>excludeEnd("ctx");
  85158. }; }),
  85159. $globals.AbstractCompilerTest);
  85160. $core.addMethod(
  85161. $core.method({
  85162. selector: "testCascadesInDynamicDictioary",
  85163. protocol: "tests",
  85164. //>>excludeStart("ide", pragmas.excludeIdeData);
  85165. args: [],
  85166. source: "testCascadesInDynamicDictioary\x0a\x09self should: 'foo | x | x := 1. ^ #{''one'' -> x. ''two'' -> ([x:=2] value; in: [x])}' return: #{'one' -> 1. 'two' -> 2}",
  85167. referencedClasses: [],
  85168. //>>excludeEnd("ide");
  85169. pragmas: [],
  85170. messageSends: ["should:return:"]
  85171. }, function ($methodClass){ return function (){
  85172. var self=this,$self=this;
  85173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85174. return $core.withContext(function($ctx1) {
  85175. //>>excludeEnd("ctx");
  85176. $self._should_return_("foo | x | x := 1. ^ #{'one' -> x. 'two' -> ([x:=2] value; in: [x])}",$globals.HashedCollection._newFromPairs_(["one",(1),"two",(2)]));
  85177. return self;
  85178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85179. }, function($ctx1) {$ctx1.fill(self,"testCascadesInDynamicDictioary",{})});
  85180. //>>excludeEnd("ctx");
  85181. }; }),
  85182. $globals.AbstractCompilerTest);
  85183. $core.addMethod(
  85184. $core.method({
  85185. selector: "testCascadesInSend",
  85186. protocol: "tests",
  85187. //>>excludeStart("ide", pragmas.excludeIdeData);
  85188. args: [],
  85189. source: "testCascadesInSend\x0a\x09self should: 'foo | x | x := 1. ^ Array with: x with: ([x:=2] value; in: [x])' return: #(1 2)",
  85190. referencedClasses: [],
  85191. //>>excludeEnd("ide");
  85192. pragmas: [],
  85193. messageSends: ["should:return:"]
  85194. }, function ($methodClass){ return function (){
  85195. var self=this,$self=this;
  85196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85197. return $core.withContext(function($ctx1) {
  85198. //>>excludeEnd("ctx");
  85199. $self._should_return_("foo | x | x := 1. ^ Array with: x with: ([x:=2] value; in: [x])",[(1), (2)]);
  85200. return self;
  85201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85202. }, function($ctx1) {$ctx1.fill(self,"testCascadesInSend",{})});
  85203. //>>excludeEnd("ctx");
  85204. }; }),
  85205. $globals.AbstractCompilerTest);
  85206. $core.addMethod(
  85207. $core.method({
  85208. selector: "testCascadesWithInlining",
  85209. protocol: "tests",
  85210. //>>excludeStart("ide", pragmas.excludeIdeData);
  85211. args: [],
  85212. source: "testCascadesWithInlining\x0a\x09\x0a\x09self should: 'foo ^ true class; ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 1.\x0a\x09self should: 'foo ^ false class; ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 2",
  85213. referencedClasses: [],
  85214. //>>excludeEnd("ide");
  85215. pragmas: [],
  85216. messageSends: ["should:return:"]
  85217. }, function ($methodClass){ return function (){
  85218. var self=this,$self=this;
  85219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85220. return $core.withContext(function($ctx1) {
  85221. //>>excludeEnd("ctx");
  85222. [$self._should_return_("foo ^ true class; ifTrue: [ 1 ] ifFalse: [ 2 ]",(1))
  85223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85224. ,$ctx1.sendIdx["should:return:"]=1
  85225. //>>excludeEnd("ctx");
  85226. ][0];
  85227. $self._should_return_("foo ^ false class; ifTrue: [ 1 ] ifFalse: [ 2 ]",(2));
  85228. return self;
  85229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85230. }, function($ctx1) {$ctx1.fill(self,"testCascadesWithInlining",{})});
  85231. //>>excludeEnd("ctx");
  85232. }; }),
  85233. $globals.AbstractCompilerTest);
  85234. $core.addMethod(
  85235. $core.method({
  85236. selector: "testDynamicArrayElementsOrdered",
  85237. protocol: "tests",
  85238. //>>excludeStart("ide", pragmas.excludeIdeData);
  85239. args: [],
  85240. source: "testDynamicArrayElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. x := 2 }\x0a' return: #(1 2).\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a' return: #(1 2).",
  85241. referencedClasses: [],
  85242. //>>excludeEnd("ide");
  85243. pragmas: [],
  85244. messageSends: ["should:return:"]
  85245. }, function ($methodClass){ return function (){
  85246. var self=this,$self=this;
  85247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85248. return $core.withContext(function($ctx1) {
  85249. //>>excludeEnd("ctx");
  85250. [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. x := 2 }\x0a",[(1), (2)])
  85251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85252. ,$ctx1.sendIdx["should:return:"]=1
  85253. //>>excludeEnd("ctx");
  85254. ][0];
  85255. $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
  85256. return self;
  85257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85258. }, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered",{})});
  85259. //>>excludeEnd("ctx");
  85260. }; }),
  85261. $globals.AbstractCompilerTest);
  85262. $core.addMethod(
  85263. $core.method({
  85264. selector: "testDynamicDictionaryElementsOrdered",
  85265. protocol: "tests",
  85266. //>>excludeStart("ide", pragmas.excludeIdeData);
  85267. args: [],
  85268. source: "testDynamicDictionaryElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := ''foo''.\x0a\x09^ #{ x->1. ''bar''->(true ifTrue: [ 2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.",
  85269. referencedClasses: [],
  85270. //>>excludeEnd("ide");
  85271. pragmas: [],
  85272. messageSends: ["should:return:"]
  85273. }, function ($methodClass){ return function (){
  85274. var self=this,$self=this;
  85275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85276. return $core.withContext(function($ctx1) {
  85277. //>>excludeEnd("ctx");
  85278. $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 'foo'.\x0a\x09^ #{ x->1. 'bar'->(true ifTrue: [ 2 ]) }\x0a",$globals.HashedCollection._newFromPairs_(["foo",(1),"bar",(2)]));
  85279. return self;
  85280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85281. }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{})});
  85282. //>>excludeEnd("ctx");
  85283. }; }),
  85284. $globals.AbstractCompilerTest);
  85285. $core.addMethod(
  85286. $core.method({
  85287. selector: "testDynamicDictionaryWithMoreArrows",
  85288. protocol: "tests",
  85289. //>>excludeStart("ide", pragmas.excludeIdeData);
  85290. args: [],
  85291. source: "testDynamicDictionaryWithMoreArrows\x0a\x09self should: 'foo ^ #{1->2->3}' return: (HashedCollection with: 1->2->3)",
  85292. referencedClasses: ["HashedCollection"],
  85293. //>>excludeEnd("ide");
  85294. pragmas: [],
  85295. messageSends: ["should:return:", "with:", "->"]
  85296. }, function ($methodClass){ return function (){
  85297. var self=this,$self=this;
  85298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85299. return $core.withContext(function($ctx1) {
  85300. //>>excludeEnd("ctx");
  85301. $self._should_return_("foo ^ #{1->2->3}",$recv($globals.HashedCollection)._with_([$recv((1).__minus_gt((2))).__minus_gt((3))
  85302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85303. ,$ctx1.sendIdx["->"]=1
  85304. //>>excludeEnd("ctx");
  85305. ][0]));
  85306. return self;
  85307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85308. }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryWithMoreArrows",{})});
  85309. //>>excludeEnd("ctx");
  85310. }; }),
  85311. $globals.AbstractCompilerTest);
  85312. $core.addMethod(
  85313. $core.method({
  85314. selector: "testGlobalVar",
  85315. protocol: "tests",
  85316. //>>excludeStart("ide", pragmas.excludeIdeData);
  85317. args: [],
  85318. source: "testGlobalVar\x0a\x09self should: 'foo ^ eval class' return: BlockClosure.\x0a\x09self should: 'foo ^ Math cos: 0' return: 1.\x0a\x09self should: 'foo ^ NonExistingVar' return: nil",
  85319. referencedClasses: ["BlockClosure"],
  85320. //>>excludeEnd("ide");
  85321. pragmas: [],
  85322. messageSends: ["should:return:"]
  85323. }, function ($methodClass){ return function (){
  85324. var self=this,$self=this;
  85325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85326. return $core.withContext(function($ctx1) {
  85327. //>>excludeEnd("ctx");
  85328. [$self._should_return_("foo ^ eval class",$globals.BlockClosure)
  85329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85330. ,$ctx1.sendIdx["should:return:"]=1
  85331. //>>excludeEnd("ctx");
  85332. ][0];
  85333. [$self._should_return_("foo ^ Math cos: 0",(1))
  85334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85335. ,$ctx1.sendIdx["should:return:"]=2
  85336. //>>excludeEnd("ctx");
  85337. ][0];
  85338. $self._should_return_("foo ^ NonExistingVar",nil);
  85339. return self;
  85340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85341. }, function($ctx1) {$ctx1.fill(self,"testGlobalVar",{})});
  85342. //>>excludeEnd("ctx");
  85343. }; }),
  85344. $globals.AbstractCompilerTest);
  85345. $core.addMethod(
  85346. $core.method({
  85347. selector: "testInnerTemporalDependentElementsOrdered",
  85348. protocol: "tests",
  85349. //>>excludeStart("ide", pragmas.excludeIdeData);
  85350. args: [],
  85351. source: "testInnerTemporalDependentElementsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: ''foo''->x with: ''bar''->(x := 2)\x0a' return: {'foo'->Array. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: ''foo''->x with: ''bar''->(true ifTrue: [ x := 2 ])\x0a' return: {'foo'->Array. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: ''foo''->x with: ''bar''->(true ifTrue: [ x := 2 ])\x0a' return: {'foo'->1. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { ''foo''->x. ''bar''->(true ifTrue: [ x := 2 ]) }\x0a' return: {'foo'->1. 'bar'->2}.\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ ''foo''->x. ''bar''->(true ifTrue: [ x := 2 ]) }\x0a' return: #{'foo'->1. 'bar'->2}.",
  85352. referencedClasses: ["Array"],
  85353. //>>excludeEnd("ide");
  85354. pragmas: [],
  85355. messageSends: ["should:return:", "->"]
  85356. }, function ($methodClass){ return function (){
  85357. var self=this,$self=this;
  85358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85359. return $core.withContext(function($ctx1) {
  85360. //>>excludeEnd("ctx");
  85361. [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(x := 2)\x0a",[["foo".__minus_gt($globals.Array)
  85362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85363. ,$ctx1.sendIdx["->"]=1
  85364. //>>excludeEnd("ctx");
  85365. ][0],["bar".__minus_gt((2))
  85366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85367. ,$ctx1.sendIdx["->"]=2
  85368. //>>excludeEnd("ctx");
  85369. ][0]])
  85370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85371. ,$ctx1.sendIdx["should:return:"]=1
  85372. //>>excludeEnd("ctx");
  85373. ][0];
  85374. [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[["foo".__minus_gt($globals.Array)
  85375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85376. ,$ctx1.sendIdx["->"]=3
  85377. //>>excludeEnd("ctx");
  85378. ][0],["bar".__minus_gt((2))
  85379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85380. ,$ctx1.sendIdx["->"]=4
  85381. //>>excludeEnd("ctx");
  85382. ][0]])
  85383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85384. ,$ctx1.sendIdx["should:return:"]=2
  85385. //>>excludeEnd("ctx");
  85386. ][0];
  85387. [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[["foo".__minus_gt((1))
  85388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85389. ,$ctx1.sendIdx["->"]=5
  85390. //>>excludeEnd("ctx");
  85391. ][0],["bar".__minus_gt((2))
  85392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85393. ,$ctx1.sendIdx["->"]=6
  85394. //>>excludeEnd("ctx");
  85395. ][0]])
  85396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85397. ,$ctx1.sendIdx["should:return:"]=3
  85398. //>>excludeEnd("ctx");
  85399. ][0];
  85400. [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[["foo".__minus_gt((1))
  85401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85402. ,$ctx1.sendIdx["->"]=7
  85403. //>>excludeEnd("ctx");
  85404. ][0],"bar".__minus_gt((2))])
  85405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85406. ,$ctx1.sendIdx["should:return:"]=4
  85407. //>>excludeEnd("ctx");
  85408. ][0];
  85409. $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ #{ 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",$globals.HashedCollection._newFromPairs_(["foo",(1),"bar",(2)]));
  85410. return self;
  85411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85412. }, function($ctx1) {$ctx1.fill(self,"testInnerTemporalDependentElementsOrdered",{})});
  85413. //>>excludeEnd("ctx");
  85414. }; }),
  85415. $globals.AbstractCompilerTest);
  85416. $core.addMethod(
  85417. $core.method({
  85418. selector: "testLexicalScope",
  85419. protocol: "tests",
  85420. //>>excludeStart("ide", pragmas.excludeIdeData);
  85421. args: [],
  85422. source: "testLexicalScope\x0a\x09self should: 'foo | a | a := 1. [ a := 2 ] value. ^ a' return: 2",
  85423. referencedClasses: [],
  85424. //>>excludeEnd("ide");
  85425. pragmas: [],
  85426. messageSends: ["should:return:"]
  85427. }, function ($methodClass){ return function (){
  85428. var self=this,$self=this;
  85429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85430. return $core.withContext(function($ctx1) {
  85431. //>>excludeEnd("ctx");
  85432. $self._should_return_("foo | a | a := 1. [ a := 2 ] value. ^ a",(2));
  85433. return self;
  85434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85435. }, function($ctx1) {$ctx1.fill(self,"testLexicalScope",{})});
  85436. //>>excludeEnd("ctx");
  85437. }; }),
  85438. $globals.AbstractCompilerTest);
  85439. $core.addMethod(
  85440. $core.method({
  85441. selector: "testLiterals",
  85442. protocol: "tests",
  85443. //>>excludeStart("ide", pragmas.excludeIdeData);
  85444. args: [],
  85445. source: "testLiterals\x0a\x09self should: 'foo ^ 1' return: 1.\x0a\x09self should: 'foo ^ ''hello''' return: 'hello'.\x0a\x09self should: 'foo ^ #(1 2 3 4)' return: #(1 2 3 4).\x0a\x09self should: 'foo ^ {1. [:x | x ] value: 2. 3. [4] value}' return: #(1 2 3 4).\x0a\x09self should: 'foo ^ true' return: true.\x0a\x09self should: 'foo ^ false' return: false.\x0a\x09self should: 'foo ^ #{1->2. 3->4}' return: #{1->2. 3->4}.\x0a\x09self should: 'foo ^ #hello' return: #hello.\x0a\x09self should: 'foo ^ $h' return: 'h'.\x0a\x09self should: 'foo ^ -123.456' return: -123.456.\x0a\x09self should: 'foo ^ -2.5e4' return: -25000.",
  85446. referencedClasses: [],
  85447. //>>excludeEnd("ide");
  85448. pragmas: [],
  85449. messageSends: ["should:return:"]
  85450. }, function ($methodClass){ return function (){
  85451. var self=this,$self=this;
  85452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85453. return $core.withContext(function($ctx1) {
  85454. //>>excludeEnd("ctx");
  85455. [$self._should_return_("foo ^ 1",(1))
  85456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85457. ,$ctx1.sendIdx["should:return:"]=1
  85458. //>>excludeEnd("ctx");
  85459. ][0];
  85460. [$self._should_return_("foo ^ 'hello'","hello")
  85461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85462. ,$ctx1.sendIdx["should:return:"]=2
  85463. //>>excludeEnd("ctx");
  85464. ][0];
  85465. [$self._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)])
  85466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85467. ,$ctx1.sendIdx["should:return:"]=3
  85468. //>>excludeEnd("ctx");
  85469. ][0];
  85470. [$self._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)])
  85471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85472. ,$ctx1.sendIdx["should:return:"]=4
  85473. //>>excludeEnd("ctx");
  85474. ][0];
  85475. [$self._should_return_("foo ^ true",true)
  85476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85477. ,$ctx1.sendIdx["should:return:"]=5
  85478. //>>excludeEnd("ctx");
  85479. ][0];
  85480. [$self._should_return_("foo ^ false",false)
  85481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85482. ,$ctx1.sendIdx["should:return:"]=6
  85483. //>>excludeEnd("ctx");
  85484. ][0];
  85485. [$self._should_return_("foo ^ #{1->2. 3->4}",$globals.HashedCollection._newFromPairs_([(1),(2),(3),(4)]))
  85486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85487. ,$ctx1.sendIdx["should:return:"]=7
  85488. //>>excludeEnd("ctx");
  85489. ][0];
  85490. [$self._should_return_("foo ^ #hello","hello")
  85491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85492. ,$ctx1.sendIdx["should:return:"]=8
  85493. //>>excludeEnd("ctx");
  85494. ][0];
  85495. [$self._should_return_("foo ^ $h","h")
  85496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85497. ,$ctx1.sendIdx["should:return:"]=9
  85498. //>>excludeEnd("ctx");
  85499. ][0];
  85500. [$self._should_return_("foo ^ -123.456",(-123.456))
  85501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85502. ,$ctx1.sendIdx["should:return:"]=10
  85503. //>>excludeEnd("ctx");
  85504. ][0];
  85505. $self._should_return_("foo ^ -2.5e4",(-25000));
  85506. return self;
  85507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85508. }, function($ctx1) {$ctx1.fill(self,"testLiterals",{})});
  85509. //>>excludeEnd("ctx");
  85510. }; }),
  85511. $globals.AbstractCompilerTest);
  85512. $core.addMethod(
  85513. $core.method({
  85514. selector: "testLocalReturn",
  85515. protocol: "tests",
  85516. //>>excludeStart("ide", pragmas.excludeIdeData);
  85517. args: [],
  85518. source: "testLocalReturn\x0a\x09self should: 'foo ^ 1' return: 1.\x0a\x09self should: 'foo ^ 1 + 1' return: 2.\x0a\x09self should: 'foo ' return: receiver.\x0a\x09self should: 'foo self asString' return: receiver.\x0a\x09self should: 'foo | a b | a := 1. b := 2. ^ a + b' return: 3",
  85519. referencedClasses: [],
  85520. //>>excludeEnd("ide");
  85521. pragmas: [],
  85522. messageSends: ["should:return:"]
  85523. }, function ($methodClass){ return function (){
  85524. var self=this,$self=this;
  85525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85526. return $core.withContext(function($ctx1) {
  85527. //>>excludeEnd("ctx");
  85528. [$self._should_return_("foo ^ 1",(1))
  85529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85530. ,$ctx1.sendIdx["should:return:"]=1
  85531. //>>excludeEnd("ctx");
  85532. ][0];
  85533. [$self._should_return_("foo ^ 1 + 1",(2))
  85534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85535. ,$ctx1.sendIdx["should:return:"]=2
  85536. //>>excludeEnd("ctx");
  85537. ][0];
  85538. [$self._should_return_("foo ",$self.receiver)
  85539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85540. ,$ctx1.sendIdx["should:return:"]=3
  85541. //>>excludeEnd("ctx");
  85542. ][0];
  85543. [$self._should_return_("foo self asString",$self.receiver)
  85544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85545. ,$ctx1.sendIdx["should:return:"]=4
  85546. //>>excludeEnd("ctx");
  85547. ][0];
  85548. $self._should_return_("foo | a b | a := 1. b := 2. ^ a + b",(3));
  85549. return self;
  85550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85551. }, function($ctx1) {$ctx1.fill(self,"testLocalReturn",{})});
  85552. //>>excludeEnd("ctx");
  85553. }; }),
  85554. $globals.AbstractCompilerTest);
  85555. $core.addMethod(
  85556. $core.method({
  85557. selector: "testMessageSends",
  85558. protocol: "tests",
  85559. //>>excludeStart("ide", pragmas.excludeIdeData);
  85560. args: [],
  85561. source: "testMessageSends\x0a\x09self should: 'foo ^ 1 asString' return: '1'.\x0a\x0a\x09self should: 'foo ^ 1 + 1' return: 2.\x0a\x09self should: 'foo ^ 1 + 2 * 3' return: 9.\x0a\x0a\x09self should: 'foo ^ 1 to: 3' return: #(1 2 3).\x0a\x09self should: 'foo ^ 1 to: 5 by: 2' return: #(1 3 5)",
  85562. referencedClasses: [],
  85563. //>>excludeEnd("ide");
  85564. pragmas: [],
  85565. messageSends: ["should:return:"]
  85566. }, function ($methodClass){ return function (){
  85567. var self=this,$self=this;
  85568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85569. return $core.withContext(function($ctx1) {
  85570. //>>excludeEnd("ctx");
  85571. [$self._should_return_("foo ^ 1 asString","1")
  85572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85573. ,$ctx1.sendIdx["should:return:"]=1
  85574. //>>excludeEnd("ctx");
  85575. ][0];
  85576. [$self._should_return_("foo ^ 1 + 1",(2))
  85577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85578. ,$ctx1.sendIdx["should:return:"]=2
  85579. //>>excludeEnd("ctx");
  85580. ][0];
  85581. [$self._should_return_("foo ^ 1 + 2 * 3",(9))
  85582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85583. ,$ctx1.sendIdx["should:return:"]=3
  85584. //>>excludeEnd("ctx");
  85585. ][0];
  85586. [$self._should_return_("foo ^ 1 to: 3",[(1), (2), (3)])
  85587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85588. ,$ctx1.sendIdx["should:return:"]=4
  85589. //>>excludeEnd("ctx");
  85590. ][0];
  85591. $self._should_return_("foo ^ 1 to: 5 by: 2",[(1), (3), (5)]);
  85592. return self;
  85593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85594. }, function($ctx1) {$ctx1.fill(self,"testMessageSends",{})});
  85595. //>>excludeEnd("ctx");
  85596. }; }),
  85597. $globals.AbstractCompilerTest);
  85598. $core.addMethod(
  85599. $core.method({
  85600. selector: "testMultipleSequences",
  85601. protocol: "tests",
  85602. //>>excludeStart("ide", pragmas.excludeIdeData);
  85603. args: [],
  85604. source: "testMultipleSequences\x0a\x09self should: 'foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6' return: 30",
  85605. referencedClasses: [],
  85606. //>>excludeEnd("ide");
  85607. pragmas: [],
  85608. messageSends: ["should:return:"]
  85609. }, function ($methodClass){ return function (){
  85610. var self=this,$self=this;
  85611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85612. return $core.withContext(function($ctx1) {
  85613. //>>excludeEnd("ctx");
  85614. $self._should_return_("foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6",(30));
  85615. return self;
  85616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85617. }, function($ctx1) {$ctx1.fill(self,"testMultipleSequences",{})});
  85618. //>>excludeEnd("ctx");
  85619. }; }),
  85620. $globals.AbstractCompilerTest);
  85621. $core.addMethod(
  85622. $core.method({
  85623. selector: "testMutableLiterals",
  85624. protocol: "tests",
  85625. //>>excludeStart("ide", pragmas.excludeIdeData);
  85626. args: [],
  85627. source: "testMutableLiterals\x0a\x09\x22Mutable literals must be aliased in cascades.\x0a\x09See https://lolg.it/amber/amber/issues/428\x22\x0a\x09\x0a\x09self \x0a\x09\x09should: 'foo ^ #( 1 2 ) at: 1 put: 3; yourself' \x0a\x09\x09return: #(3 2)",
  85628. referencedClasses: [],
  85629. //>>excludeEnd("ide");
  85630. pragmas: [],
  85631. messageSends: ["should:return:"]
  85632. }, function ($methodClass){ return function (){
  85633. var self=this,$self=this;
  85634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85635. return $core.withContext(function($ctx1) {
  85636. //>>excludeEnd("ctx");
  85637. $self._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]);
  85638. return self;
  85639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85640. }, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{})});
  85641. //>>excludeEnd("ctx");
  85642. }; }),
  85643. $globals.AbstractCompilerTest);
  85644. $core.addMethod(
  85645. $core.method({
  85646. selector: "testNestedIfTrue",
  85647. protocol: "tests",
  85648. //>>excludeStart("ide", pragmas.excludeIdeData);
  85649. args: [],
  85650. source: "testNestedIfTrue\x0a\x09self should: 'foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]' return: 1.\x0a\x09self should: 'foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]' return: nil.\x0a\x0a\x09self should: 'foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]' return: 1.\x0a\x09self should: 'foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]' return: receiver.",
  85651. referencedClasses: [],
  85652. //>>excludeEnd("ide");
  85653. pragmas: [],
  85654. messageSends: ["should:return:"]
  85655. }, function ($methodClass){ return function (){
  85656. var self=this,$self=this;
  85657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85658. return $core.withContext(function($ctx1) {
  85659. //>>excludeEnd("ctx");
  85660. [$self._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1))
  85661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85662. ,$ctx1.sendIdx["should:return:"]=1
  85663. //>>excludeEnd("ctx");
  85664. ][0];
  85665. [$self._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil)
  85666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85667. ,$ctx1.sendIdx["should:return:"]=2
  85668. //>>excludeEnd("ctx");
  85669. ][0];
  85670. [$self._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1))
  85671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85672. ,$ctx1.sendIdx["should:return:"]=3
  85673. //>>excludeEnd("ctx");
  85674. ][0];
  85675. $self._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",$self.receiver);
  85676. return self;
  85677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85678. }, function($ctx1) {$ctx1.fill(self,"testNestedIfTrue",{})});
  85679. //>>excludeEnd("ctx");
  85680. }; }),
  85681. $globals.AbstractCompilerTest);
  85682. $core.addMethod(
  85683. $core.method({
  85684. selector: "testNestedSends",
  85685. protocol: "tests",
  85686. //>>excludeStart("ide", pragmas.excludeIdeData);
  85687. args: [],
  85688. source: "testNestedSends\x0a\x09self should: 'foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString' return: (Point x: (2@3) y: 4) asString",
  85689. referencedClasses: ["Point"],
  85690. //>>excludeEnd("ide");
  85691. pragmas: [],
  85692. messageSends: ["should:return:", "asString", "x:y:", "@"]
  85693. }, function ($methodClass){ return function (){
  85694. var self=this,$self=this;
  85695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85696. return $core.withContext(function($ctx1) {
  85697. //>>excludeEnd("ctx");
  85698. $self._should_return_("foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString",$recv($recv($globals.Point)._x_y_((2).__at((3)),(4)))._asString());
  85699. return self;
  85700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85701. }, function($ctx1) {$ctx1.fill(self,"testNestedSends",{})});
  85702. //>>excludeEnd("ctx");
  85703. }; }),
  85704. $globals.AbstractCompilerTest);
  85705. $core.addMethod(
  85706. $core.method({
  85707. selector: "testNilPerform",
  85708. protocol: "tests",
  85709. //>>excludeStart("ide", pragmas.excludeIdeData);
  85710. args: [],
  85711. source: "testNilPerform\x0a\x09self should: 'foo ^ nil perform: #yourself' return: nil",
  85712. referencedClasses: [],
  85713. //>>excludeEnd("ide");
  85714. pragmas: [],
  85715. messageSends: ["should:return:"]
  85716. }, function ($methodClass){ return function (){
  85717. var self=this,$self=this;
  85718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85719. return $core.withContext(function($ctx1) {
  85720. //>>excludeEnd("ctx");
  85721. $self._should_return_("foo ^ nil perform: #yourself",nil);
  85722. return self;
  85723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85724. }, function($ctx1) {$ctx1.fill(self,"testNilPerform",{})});
  85725. //>>excludeEnd("ctx");
  85726. }; }),
  85727. $globals.AbstractCompilerTest);
  85728. $core.addMethod(
  85729. $core.method({
  85730. selector: "testNonLocalReturn",
  85731. protocol: "tests",
  85732. //>>excludeStart("ide", pragmas.excludeIdeData);
  85733. args: [],
  85734. source: "testNonLocalReturn\x0a\x09self should: 'foo [ ^ 1 ] value' return: 1.\x0a\x09self should: 'foo [ ^ 1 + 1 ] value' return: 2.\x0a\x09self should: 'foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt' return: 3.\x0a\x09self should: 'foo [ :x | ^ x + x ] value: 4. ^ 2' return: 8",
  85735. referencedClasses: [],
  85736. //>>excludeEnd("ide");
  85737. pragmas: [],
  85738. messageSends: ["should:return:"]
  85739. }, function ($methodClass){ return function (){
  85740. var self=this,$self=this;
  85741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85742. return $core.withContext(function($ctx1) {
  85743. //>>excludeEnd("ctx");
  85744. [$self._should_return_("foo [ ^ 1 ] value",(1))
  85745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85746. ,$ctx1.sendIdx["should:return:"]=1
  85747. //>>excludeEnd("ctx");
  85748. ][0];
  85749. [$self._should_return_("foo [ ^ 1 + 1 ] value",(2))
  85750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85751. ,$ctx1.sendIdx["should:return:"]=2
  85752. //>>excludeEnd("ctx");
  85753. ][0];
  85754. [$self._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3))
  85755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85756. ,$ctx1.sendIdx["should:return:"]=3
  85757. //>>excludeEnd("ctx");
  85758. ][0];
  85759. $self._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
  85760. return self;
  85761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85762. }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{})});
  85763. //>>excludeEnd("ctx");
  85764. }; }),
  85765. $globals.AbstractCompilerTest);
  85766. $core.addMethod(
  85767. $core.method({
  85768. selector: "testPascalCaseGlobal",
  85769. protocol: "tests",
  85770. //>>excludeStart("ide", pragmas.excludeIdeData);
  85771. args: [],
  85772. source: "testPascalCaseGlobal\x0a\x09self should: 'foo ^Object' return: (Smalltalk globals at: 'Object').\x0a\x09self should: 'foo ^NonExistent' return: nil",
  85773. referencedClasses: ["Smalltalk"],
  85774. //>>excludeEnd("ide");
  85775. pragmas: [],
  85776. messageSends: ["should:return:", "at:", "globals"]
  85777. }, function ($methodClass){ return function (){
  85778. var self=this,$self=this;
  85779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85780. return $core.withContext(function($ctx1) {
  85781. //>>excludeEnd("ctx");
  85782. [$self._should_return_("foo ^Object",$recv($recv($globals.Smalltalk)._globals())._at_("Object"))
  85783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85784. ,$ctx1.sendIdx["should:return:"]=1
  85785. //>>excludeEnd("ctx");
  85786. ][0];
  85787. $self._should_return_("foo ^NonExistent",nil);
  85788. return self;
  85789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85790. }, function($ctx1) {$ctx1.fill(self,"testPascalCaseGlobal",{})});
  85791. //>>excludeEnd("ctx");
  85792. }; }),
  85793. $globals.AbstractCompilerTest);
  85794. $core.addMethod(
  85795. $core.method({
  85796. selector: "testPragmaJSStatement",
  85797. protocol: "tests",
  85798. //>>excludeStart("ide", pragmas.excludeIdeData);
  85799. args: [],
  85800. source: "testPragmaJSStatement\x0a\x09self should: 'foo < inlineJS: ''return 2+3'' >' return: 5",
  85801. referencedClasses: [],
  85802. //>>excludeEnd("ide");
  85803. pragmas: [],
  85804. messageSends: ["should:return:"]
  85805. }, function ($methodClass){ return function (){
  85806. var self=this,$self=this;
  85807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85808. return $core.withContext(function($ctx1) {
  85809. //>>excludeEnd("ctx");
  85810. $self._should_return_("foo < inlineJS: 'return 2+3' >",(5));
  85811. return self;
  85812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85813. }, function($ctx1) {$ctx1.fill(self,"testPragmaJSStatement",{})});
  85814. //>>excludeEnd("ctx");
  85815. }; }),
  85816. $globals.AbstractCompilerTest);
  85817. $core.addMethod(
  85818. $core.method({
  85819. selector: "testReceiverEvaluatedOnceInSpecials",
  85820. protocol: "tests",
  85821. //>>excludeStart("ide", pragmas.excludeIdeData);
  85822. args: [],
  85823. source: "testReceiverEvaluatedOnceInSpecials\x0a\x09self should: 'foo |x| x := 1. ^ {[ x := x+1 ] value ifNil: []. x}' return: {2. 2}.\x0a\x09self should: 'foo |xs| xs := {nil. nil}. ^ {[ xs removeLast ] value ifNotNil: []. xs}' return: {nil. {nil}}.",
  85824. referencedClasses: [],
  85825. //>>excludeEnd("ide");
  85826. pragmas: [],
  85827. messageSends: ["should:return:"]
  85828. }, function ($methodClass){ return function (){
  85829. var self=this,$self=this;
  85830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85831. return $core.withContext(function($ctx1) {
  85832. //>>excludeEnd("ctx");
  85833. [$self._should_return_("foo |x| x := 1. ^ {[ x := x+1 ] value ifNil: []. x}",[(2),(2)])
  85834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85835. ,$ctx1.sendIdx["should:return:"]=1
  85836. //>>excludeEnd("ctx");
  85837. ][0];
  85838. $self._should_return_("foo |xs| xs := {nil. nil}. ^ {[ xs removeLast ] value ifNotNil: []. xs}",[nil,[nil]]);
  85839. return self;
  85840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85841. }, function($ctx1) {$ctx1.fill(self,"testReceiverEvaluatedOnceInSpecials",{})});
  85842. //>>excludeEnd("ctx");
  85843. }; }),
  85844. $globals.AbstractCompilerTest);
  85845. $core.addMethod(
  85846. $core.method({
  85847. selector: "testRegression1242",
  85848. protocol: "tests",
  85849. //>>excludeStart("ide", pragmas.excludeIdeData);
  85850. args: [],
  85851. source: "testRegression1242\x0a\x09self should: '\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := nil ifNil: [].\x0a\x09\x09\x09^ x\x0a\x09' return: nil.\x0a\x09\x0a\x09self should: '\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := 1 ifNotNil: [].\x0a\x09\x09\x09^ x\x0a\x09' return: nil.\x0a\x09\x0a\x09self should: '\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := false ifFalse: [].\x0a\x09\x09\x09^ x\x0a\x09' return: nil.\x0a\x09\x0a\x09self should: '\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := true ifTrue: [].\x0a\x09\x09\x09^ x\x0a\x09' return: nil.",
  85852. referencedClasses: [],
  85853. //>>excludeEnd("ide");
  85854. pragmas: [],
  85855. messageSends: ["should:return:"]
  85856. }, function ($methodClass){ return function (){
  85857. var self=this,$self=this;
  85858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85859. return $core.withContext(function($ctx1) {
  85860. //>>excludeEnd("ctx");
  85861. [$self._should_return_("\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := nil ifNil: [].\x0a\x09\x09\x09^ x\x0a\x09",nil)
  85862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85863. ,$ctx1.sendIdx["should:return:"]=1
  85864. //>>excludeEnd("ctx");
  85865. ][0];
  85866. [$self._should_return_("\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := 1 ifNotNil: [].\x0a\x09\x09\x09^ x\x0a\x09",nil)
  85867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85868. ,$ctx1.sendIdx["should:return:"]=2
  85869. //>>excludeEnd("ctx");
  85870. ][0];
  85871. [$self._should_return_("\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := false ifFalse: [].\x0a\x09\x09\x09^ x\x0a\x09",nil)
  85872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85873. ,$ctx1.sendIdx["should:return:"]=3
  85874. //>>excludeEnd("ctx");
  85875. ][0];
  85876. $self._should_return_("\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := true ifTrue: [].\x0a\x09\x09\x09^ x\x0a\x09",nil);
  85877. return self;
  85878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85879. }, function($ctx1) {$ctx1.fill(self,"testRegression1242",{})});
  85880. //>>excludeEnd("ctx");
  85881. }; }),
  85882. $globals.AbstractCompilerTest);
  85883. $core.addMethod(
  85884. $core.method({
  85885. selector: "testRegression1242ForReturn",
  85886. protocol: "tests",
  85887. //>>excludeStart("ide", pragmas.excludeIdeData);
  85888. args: [],
  85889. source: "testRegression1242ForReturn\x0a\x09self should: 'foo [ ^ nil ifNil: [] ] value' return: nil.\x0a\x09self should: 'foo [ ^ 1 ifNotNil: [] ] value' return: nil.\x0a\x09self should: 'foo [ ^ false ifFalse: [] ] value' return: nil.\x0a\x09self should: 'foo [ ^ true ifTrue: [] ] value' return: nil.",
  85890. referencedClasses: [],
  85891. //>>excludeEnd("ide");
  85892. pragmas: [],
  85893. messageSends: ["should:return:"]
  85894. }, function ($methodClass){ return function (){
  85895. var self=this,$self=this;
  85896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85897. return $core.withContext(function($ctx1) {
  85898. //>>excludeEnd("ctx");
  85899. [$self._should_return_("foo [ ^ nil ifNil: [] ] value",nil)
  85900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85901. ,$ctx1.sendIdx["should:return:"]=1
  85902. //>>excludeEnd("ctx");
  85903. ][0];
  85904. [$self._should_return_("foo [ ^ 1 ifNotNil: [] ] value",nil)
  85905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85906. ,$ctx1.sendIdx["should:return:"]=2
  85907. //>>excludeEnd("ctx");
  85908. ][0];
  85909. [$self._should_return_("foo [ ^ false ifFalse: [] ] value",nil)
  85910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85911. ,$ctx1.sendIdx["should:return:"]=3
  85912. //>>excludeEnd("ctx");
  85913. ][0];
  85914. $self._should_return_("foo [ ^ true ifTrue: [] ] value",nil);
  85915. return self;
  85916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85917. }, function($ctx1) {$ctx1.fill(self,"testRegression1242ForReturn",{})});
  85918. //>>excludeEnd("ctx");
  85919. }; }),
  85920. $globals.AbstractCompilerTest);
  85921. $core.addMethod(
  85922. $core.method({
  85923. selector: "testRegression1244",
  85924. protocol: "tests",
  85925. //>>excludeStart("ide", pragmas.excludeIdeData);
  85926. args: [],
  85927. source: "testRegression1244\x0a\x09self should: 'foo [ ^ true ifTrue: [1] ifFalse: [2] ] value' return: 1",
  85928. referencedClasses: [],
  85929. //>>excludeEnd("ide");
  85930. pragmas: [],
  85931. messageSends: ["should:return:"]
  85932. }, function ($methodClass){ return function (){
  85933. var self=this,$self=this;
  85934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85935. return $core.withContext(function($ctx1) {
  85936. //>>excludeEnd("ctx");
  85937. $self._should_return_("foo [ ^ true ifTrue: [1] ifFalse: [2] ] value",(1));
  85938. return self;
  85939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85940. }, function($ctx1) {$ctx1.fill(self,"testRegression1244",{})});
  85941. //>>excludeEnd("ctx");
  85942. }; }),
  85943. $globals.AbstractCompilerTest);
  85944. $core.addMethod(
  85945. $core.method({
  85946. selector: "testRootSuperSend",
  85947. protocol: "tests",
  85948. //>>excludeStart("ide", pragmas.excludeIdeData);
  85949. args: [],
  85950. source: "testRootSuperSend\x0a\x09self \x0a\x09\x09should: 'foo ^ super class' \x0a\x09\x09receiver: ProtoObject new\x0a\x09\x09raise: MessageNotUnderstood",
  85951. referencedClasses: ["ProtoObject", "MessageNotUnderstood"],
  85952. //>>excludeEnd("ide");
  85953. pragmas: [],
  85954. messageSends: ["should:receiver:raise:", "new"]
  85955. }, function ($methodClass){ return function (){
  85956. var self=this,$self=this;
  85957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85958. return $core.withContext(function($ctx1) {
  85959. //>>excludeEnd("ctx");
  85960. $self._should_receiver_raise_("foo ^ super class",$recv($globals.ProtoObject)._new(),$globals.MessageNotUnderstood);
  85961. return self;
  85962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85963. }, function($ctx1) {$ctx1.fill(self,"testRootSuperSend",{})});
  85964. //>>excludeEnd("ctx");
  85965. }; }),
  85966. $globals.AbstractCompilerTest);
  85967. $core.addMethod(
  85968. $core.method({
  85969. selector: "testSendReceiverAndArgumentsOrdered",
  85970. protocol: "tests",
  85971. //>>excludeStart("ide", pragmas.excludeIdeData);
  85972. args: [],
  85973. source: "testSendReceiverAndArgumentsOrdered\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a' return: #(1 2).\x0a\x0a\x09self should: 'foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a' return: {Array. 2}.",
  85974. referencedClasses: ["Array"],
  85975. //>>excludeEnd("ide");
  85976. pragmas: [],
  85977. messageSends: ["should:return:"]
  85978. }, function ($methodClass){ return function (){
  85979. var self=this,$self=this;
  85980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85981. return $core.withContext(function($ctx1) {
  85982. //>>excludeEnd("ctx");
  85983. [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)])
  85984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85985. ,$ctx1.sendIdx["should:return:"]=1
  85986. //>>excludeEnd("ctx");
  85987. ][0];
  85988. $self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[$globals.Array,(2)]);
  85989. return self;
  85990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  85991. }, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered",{})});
  85992. //>>excludeEnd("ctx");
  85993. }; }),
  85994. $globals.AbstractCompilerTest);
  85995. $core.addMethod(
  85996. $core.method({
  85997. selector: "testSuperSend",
  85998. protocol: "tests",
  85999. //>>excludeStart("ide", pragmas.excludeIdeData);
  86000. args: [],
  86001. source: "testSuperSend\x0a\x09self \x0a\x09\x09should: 'foo ^ super isBoolean' \x0a\x09\x09receiver: true\x0a\x09\x09return: false",
  86002. referencedClasses: [],
  86003. //>>excludeEnd("ide");
  86004. pragmas: [],
  86005. messageSends: ["should:receiver:return:"]
  86006. }, function ($methodClass){ return function (){
  86007. var self=this,$self=this;
  86008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86009. return $core.withContext(function($ctx1) {
  86010. //>>excludeEnd("ctx");
  86011. $self._should_receiver_return_("foo ^ super isBoolean",true,false);
  86012. return self;
  86013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86014. }, function($ctx1) {$ctx1.fill(self,"testSuperSend",{})});
  86015. //>>excludeEnd("ctx");
  86016. }; }),
  86017. $globals.AbstractCompilerTest);
  86018. $core.addMethod(
  86019. $core.method({
  86020. selector: "testSuperSend2",
  86021. protocol: "tests",
  86022. //>>excludeStart("ide", pragmas.excludeIdeData);
  86023. args: [],
  86024. source: "testSuperSend2\x0a\x09self \x0a\x09\x09should: 'foo ^ super isNil'\x0a\x09\x09receiver: nil\x0a\x09\x09return: false",
  86025. referencedClasses: [],
  86026. //>>excludeEnd("ide");
  86027. pragmas: [],
  86028. messageSends: ["should:receiver:return:"]
  86029. }, function ($methodClass){ return function (){
  86030. var self=this,$self=this;
  86031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86032. return $core.withContext(function($ctx1) {
  86033. //>>excludeEnd("ctx");
  86034. $self._should_receiver_return_("foo ^ super isNil",nil,false);
  86035. return self;
  86036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86037. }, function($ctx1) {$ctx1.fill(self,"testSuperSend2",{})});
  86038. //>>excludeEnd("ctx");
  86039. }; }),
  86040. $globals.AbstractCompilerTest);
  86041. $core.addMethod(
  86042. $core.method({
  86043. selector: "testSuperSend3",
  86044. protocol: "tests",
  86045. //>>excludeStart("ide", pragmas.excludeIdeData);
  86046. args: [],
  86047. source: "testSuperSend3\x0a\x09self \x0a\x09\x09should: 'doo ^ super isNil'\x0a\x09\x09class: Object\x0a\x09\x09receiver: nil\x0a\x09\x09return: false",
  86048. referencedClasses: ["Object"],
  86049. //>>excludeEnd("ide");
  86050. pragmas: [],
  86051. messageSends: ["should:class:receiver:return:"]
  86052. }, function ($methodClass){ return function (){
  86053. var self=this,$self=this;
  86054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86055. return $core.withContext(function($ctx1) {
  86056. //>>excludeEnd("ctx");
  86057. $self._should_class_receiver_return_("doo ^ super isNil",$globals.Object,nil,false);
  86058. return self;
  86059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86060. }, function($ctx1) {$ctx1.fill(self,"testSuperSend3",{})});
  86061. //>>excludeEnd("ctx");
  86062. }; }),
  86063. $globals.AbstractCompilerTest);
  86064. $core.addMethod(
  86065. $core.method({
  86066. selector: "testSuperSend4",
  86067. protocol: "tests",
  86068. //>>excludeStart("ide", pragmas.excludeIdeData);
  86069. args: [],
  86070. source: "testSuperSend4\x0a\x09self \x0a\x09\x09should: 'foo ^ super asJavaScriptObject'\x0a\x09\x09receiver: 'me'\x0a\x09\x09return: #('m' 'e')",
  86071. referencedClasses: [],
  86072. //>>excludeEnd("ide");
  86073. pragmas: [],
  86074. messageSends: ["should:receiver:return:"]
  86075. }, function ($methodClass){ return function (){
  86076. var self=this,$self=this;
  86077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86078. return $core.withContext(function($ctx1) {
  86079. //>>excludeEnd("ctx");
  86080. $self._should_receiver_return_("foo ^ super asJavaScriptObject","me",["m", "e"]);
  86081. return self;
  86082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86083. }, function($ctx1) {$ctx1.fill(self,"testSuperSend4",{})});
  86084. //>>excludeEnd("ctx");
  86085. }; }),
  86086. $globals.AbstractCompilerTest);
  86087. $core.addMethod(
  86088. $core.method({
  86089. selector: "testSuperSend5",
  86090. protocol: "tests",
  86091. //>>excludeStart("ide", pragmas.excludeIdeData);
  86092. args: [],
  86093. source: "testSuperSend5\x0a\x09self \x0a\x09\x09should: 'foo [super addLast: 4] on: Error do: [ self add: 5 ]. ^ self'\x0a\x09\x09class: SequenceableCollection\x0a\x09\x09receiver: #(1 2 3)\x0a\x09\x09return: #(1 2 3 5)",
  86094. referencedClasses: ["SequenceableCollection"],
  86095. //>>excludeEnd("ide");
  86096. pragmas: [],
  86097. messageSends: ["should:class:receiver:return:"]
  86098. }, function ($methodClass){ return function (){
  86099. var self=this,$self=this;
  86100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86101. return $core.withContext(function($ctx1) {
  86102. //>>excludeEnd("ctx");
  86103. $self._should_class_receiver_return_("foo [super addLast: 4] on: Error do: [ self add: 5 ]. ^ self",$globals.SequenceableCollection,[(1), (2), (3)],[(1), (2), (3), (5)]);
  86104. return self;
  86105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86106. }, function($ctx1) {$ctx1.fill(self,"testSuperSend5",{})});
  86107. //>>excludeEnd("ctx");
  86108. }; }),
  86109. $globals.AbstractCompilerTest);
  86110. $core.addMethod(
  86111. $core.method({
  86112. selector: "testSuperSend6",
  86113. protocol: "tests",
  86114. //>>excludeStart("ide", pragmas.excludeIdeData);
  86115. args: [],
  86116. source: "testSuperSend6\x0a\x09self \x0a\x09\x09should: 'foo ^ super ifTrue: [ true ] ifFalse: [ false ]' \x0a\x09\x09receiver: true\x0a\x09\x09raise: Error",
  86117. referencedClasses: ["Error"],
  86118. //>>excludeEnd("ide");
  86119. pragmas: [],
  86120. messageSends: ["should:receiver:raise:"]
  86121. }, function ($methodClass){ return function (){
  86122. var self=this,$self=this;
  86123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86124. return $core.withContext(function($ctx1) {
  86125. //>>excludeEnd("ctx");
  86126. $self._should_receiver_raise_("foo ^ super ifTrue: [ true ] ifFalse: [ false ]",true,$globals.Error);
  86127. return self;
  86128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86129. }, function($ctx1) {$ctx1.fill(self,"testSuperSend6",{})});
  86130. //>>excludeEnd("ctx");
  86131. }; }),
  86132. $globals.AbstractCompilerTest);
  86133. $core.addMethod(
  86134. $core.method({
  86135. selector: "testTempVariables",
  86136. protocol: "tests",
  86137. //>>excludeStart("ide", pragmas.excludeIdeData);
  86138. args: [],
  86139. source: "testTempVariables\x0a\x09self should: 'foo | a | ^ a' return: nil.\x0a\x09self should: 'foo | AVariable | ^ AVariable' return: nil.\x0a\x09self should: 'foo | a b c | ^ c' return: nil.\x0a\x09self should: 'foo | a | [ | d | ^ d ] value' return: nil.\x0a\x09\x0a\x09self should: 'foo | a | a:= 1. ^ a' return: 1.\x0a\x09self should: 'foo | AVariable | AVariable := 1. ^ AVariable' return: 1.",
  86140. referencedClasses: [],
  86141. //>>excludeEnd("ide");
  86142. pragmas: [],
  86143. messageSends: ["should:return:"]
  86144. }, function ($methodClass){ return function (){
  86145. var self=this,$self=this;
  86146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86147. return $core.withContext(function($ctx1) {
  86148. //>>excludeEnd("ctx");
  86149. [$self._should_return_("foo | a | ^ a",nil)
  86150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86151. ,$ctx1.sendIdx["should:return:"]=1
  86152. //>>excludeEnd("ctx");
  86153. ][0];
  86154. [$self._should_return_("foo | AVariable | ^ AVariable",nil)
  86155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86156. ,$ctx1.sendIdx["should:return:"]=2
  86157. //>>excludeEnd("ctx");
  86158. ][0];
  86159. [$self._should_return_("foo | a b c | ^ c",nil)
  86160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86161. ,$ctx1.sendIdx["should:return:"]=3
  86162. //>>excludeEnd("ctx");
  86163. ][0];
  86164. [$self._should_return_("foo | a | [ | d | ^ d ] value",nil)
  86165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86166. ,$ctx1.sendIdx["should:return:"]=4
  86167. //>>excludeEnd("ctx");
  86168. ][0];
  86169. [$self._should_return_("foo | a | a:= 1. ^ a",(1))
  86170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86171. ,$ctx1.sendIdx["should:return:"]=5
  86172. //>>excludeEnd("ctx");
  86173. ][0];
  86174. $self._should_return_("foo | AVariable | AVariable := 1. ^ AVariable",(1));
  86175. return self;
  86176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86177. }, function($ctx1) {$ctx1.fill(self,"testTempVariables",{})});
  86178. //>>excludeEnd("ctx");
  86179. }; }),
  86180. $globals.AbstractCompilerTest);
  86181. $core.addMethod(
  86182. $core.method({
  86183. selector: "testThisContext",
  86184. protocol: "tests",
  86185. //>>excludeStart("ide", pragmas.excludeIdeData);
  86186. args: [],
  86187. source: "testThisContext\x0a\x09self should: 'foo ^ [ thisContext ] value outerContext == thisContext' return: true",
  86188. referencedClasses: [],
  86189. //>>excludeEnd("ide");
  86190. pragmas: [],
  86191. messageSends: ["should:return:"]
  86192. }, function ($methodClass){ return function (){
  86193. var self=this,$self=this;
  86194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86195. return $core.withContext(function($ctx1) {
  86196. //>>excludeEnd("ctx");
  86197. $self._should_return_("foo ^ [ thisContext ] value outerContext == thisContext",true);
  86198. return self;
  86199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86200. }, function($ctx1) {$ctx1.fill(self,"testThisContext",{})});
  86201. //>>excludeEnd("ctx");
  86202. }; }),
  86203. $globals.AbstractCompilerTest);
  86204. $core.addMethod(
  86205. $core.method({
  86206. selector: "testUnknownPragma",
  86207. protocol: "tests",
  86208. //>>excludeStart("ide", pragmas.excludeIdeData);
  86209. args: [],
  86210. source: "testUnknownPragma\x0a\x09self should: 'foo < fooBar: ''return 2+3'' > | x | ^ x := 6' return: 6.\x0a\x09self should: 'foo | x | < fooBar: ''return 2+3'' > ^ x := 6' return: 6",
  86211. referencedClasses: [],
  86212. //>>excludeEnd("ide");
  86213. pragmas: [],
  86214. messageSends: ["should:return:"]
  86215. }, function ($methodClass){ return function (){
  86216. var self=this,$self=this;
  86217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86218. return $core.withContext(function($ctx1) {
  86219. //>>excludeEnd("ctx");
  86220. [$self._should_return_("foo < fooBar: 'return 2+3' > | x | ^ x := 6",(6))
  86221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86222. ,$ctx1.sendIdx["should:return:"]=1
  86223. //>>excludeEnd("ctx");
  86224. ][0];
  86225. $self._should_return_("foo | x | < fooBar: 'return 2+3' > ^ x := 6",(6));
  86226. return self;
  86227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86228. }, function($ctx1) {$ctx1.fill(self,"testUnknownPragma",{})});
  86229. //>>excludeEnd("ctx");
  86230. }; }),
  86231. $globals.AbstractCompilerTest);
  86232. $core.addMethod(
  86233. $core.method({
  86234. selector: "testifFalse",
  86235. protocol: "tests",
  86236. //>>excludeStart("ide", pragmas.excludeIdeData);
  86237. args: [],
  86238. source: "testifFalse\x0a\x09self should: 'foo true ifFalse: [ ^ 1 ]' return: receiver.\x0a\x09self should: 'foo false ifFalse: [ ^ 2 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ true ifFalse: [ 1 ]' return: nil.\x0a\x09self should: 'foo ^ false ifFalse: [ 2 ]' return: 2.",
  86239. referencedClasses: [],
  86240. //>>excludeEnd("ide");
  86241. pragmas: [],
  86242. messageSends: ["should:return:"]
  86243. }, function ($methodClass){ return function (){
  86244. var self=this,$self=this;
  86245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86246. return $core.withContext(function($ctx1) {
  86247. //>>excludeEnd("ctx");
  86248. [$self._should_return_("foo true ifFalse: [ ^ 1 ]",$self.receiver)
  86249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86250. ,$ctx1.sendIdx["should:return:"]=1
  86251. //>>excludeEnd("ctx");
  86252. ][0];
  86253. [$self._should_return_("foo false ifFalse: [ ^ 2 ]",(2))
  86254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86255. ,$ctx1.sendIdx["should:return:"]=2
  86256. //>>excludeEnd("ctx");
  86257. ][0];
  86258. [$self._should_return_("foo ^ true ifFalse: [ 1 ]",nil)
  86259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86260. ,$ctx1.sendIdx["should:return:"]=3
  86261. //>>excludeEnd("ctx");
  86262. ][0];
  86263. $self._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
  86264. return self;
  86265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86266. }, function($ctx1) {$ctx1.fill(self,"testifFalse",{})});
  86267. //>>excludeEnd("ctx");
  86268. }; }),
  86269. $globals.AbstractCompilerTest);
  86270. $core.addMethod(
  86271. $core.method({
  86272. selector: "testifFalseIfTrue",
  86273. protocol: "tests",
  86274. //>>excludeStart("ide", pragmas.excludeIdeData);
  86275. args: [],
  86276. source: "testifFalseIfTrue\x0a\x09self should: 'foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]' return: 2.\x0a\x09self should: 'foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]' return: 2.\x0a\x09self should: 'foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]' return: 2.",
  86277. referencedClasses: [],
  86278. //>>excludeEnd("ide");
  86279. pragmas: [],
  86280. messageSends: ["should:return:"]
  86281. }, function ($methodClass){ return function (){
  86282. var self=this,$self=this;
  86283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86284. return $core.withContext(function($ctx1) {
  86285. //>>excludeEnd("ctx");
  86286. [$self._should_return_("foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]",(2))
  86287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86288. ,$ctx1.sendIdx["should:return:"]=1
  86289. //>>excludeEnd("ctx");
  86290. ][0];
  86291. [$self._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2))
  86292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86293. ,$ctx1.sendIdx["should:return:"]=2
  86294. //>>excludeEnd("ctx");
  86295. ][0];
  86296. [$self._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2))
  86297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86298. ,$ctx1.sendIdx["should:return:"]=3
  86299. //>>excludeEnd("ctx");
  86300. ][0];
  86301. $self._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
  86302. return self;
  86303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86304. }, function($ctx1) {$ctx1.fill(self,"testifFalseIfTrue",{})});
  86305. //>>excludeEnd("ctx");
  86306. }; }),
  86307. $globals.AbstractCompilerTest);
  86308. $core.addMethod(
  86309. $core.method({
  86310. selector: "testifNil",
  86311. protocol: "tests",
  86312. //>>excludeStart("ide", pragmas.excludeIdeData);
  86313. args: [],
  86314. source: "testifNil\x0a\x09self should: 'foo ^ 1 ifNil: [ 2 ]' return: 1.\x0a\x09self should: 'foo ^ nil ifNil: [ 2 ]' return: 2.\x0a\x0a\x09self should: 'foo 1 ifNil: [ ^ 2 ]' return: receiver.\x0a\x09self should: 'foo nil ifNil: [ ^ 2 ]' return: 2.",
  86315. referencedClasses: [],
  86316. //>>excludeEnd("ide");
  86317. pragmas: [],
  86318. messageSends: ["should:return:"]
  86319. }, function ($methodClass){ return function (){
  86320. var self=this,$self=this;
  86321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86322. return $core.withContext(function($ctx1) {
  86323. //>>excludeEnd("ctx");
  86324. [$self._should_return_("foo ^ 1 ifNil: [ 2 ]",(1))
  86325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86326. ,$ctx1.sendIdx["should:return:"]=1
  86327. //>>excludeEnd("ctx");
  86328. ][0];
  86329. [$self._should_return_("foo ^ nil ifNil: [ 2 ]",(2))
  86330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86331. ,$ctx1.sendIdx["should:return:"]=2
  86332. //>>excludeEnd("ctx");
  86333. ][0];
  86334. [$self._should_return_("foo 1 ifNil: [ ^ 2 ]",$self.receiver)
  86335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86336. ,$ctx1.sendIdx["should:return:"]=3
  86337. //>>excludeEnd("ctx");
  86338. ][0];
  86339. $self._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
  86340. return self;
  86341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86342. }, function($ctx1) {$ctx1.fill(self,"testifNil",{})});
  86343. //>>excludeEnd("ctx");
  86344. }; }),
  86345. $globals.AbstractCompilerTest);
  86346. $core.addMethod(
  86347. $core.method({
  86348. selector: "testifNilIfNotNil",
  86349. protocol: "tests",
  86350. //>>excludeStart("ide", pragmas.excludeIdeData);
  86351. args: [],
  86352. source: "testifNilIfNotNil\x0a\x09self should: 'foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]' return: 2.\x0a\x0a\x09self should: 'foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]' return: 3.\x0a\x09self should: 'foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]' return: 2.",
  86353. referencedClasses: [],
  86354. //>>excludeEnd("ide");
  86355. pragmas: [],
  86356. messageSends: ["should:return:"]
  86357. }, function ($methodClass){ return function (){
  86358. var self=this,$self=this;
  86359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86360. return $core.withContext(function($ctx1) {
  86361. //>>excludeEnd("ctx");
  86362. [$self._should_return_("foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]",(3))
  86363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86364. ,$ctx1.sendIdx["should:return:"]=1
  86365. //>>excludeEnd("ctx");
  86366. ][0];
  86367. [$self._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2))
  86368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86369. ,$ctx1.sendIdx["should:return:"]=2
  86370. //>>excludeEnd("ctx");
  86371. ][0];
  86372. [$self._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3))
  86373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86374. ,$ctx1.sendIdx["should:return:"]=3
  86375. //>>excludeEnd("ctx");
  86376. ][0];
  86377. $self._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
  86378. return self;
  86379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86380. }, function($ctx1) {$ctx1.fill(self,"testifNilIfNotNil",{})});
  86381. //>>excludeEnd("ctx");
  86382. }; }),
  86383. $globals.AbstractCompilerTest);
  86384. $core.addMethod(
  86385. $core.method({
  86386. selector: "testifNotNil",
  86387. protocol: "tests",
  86388. //>>excludeStart("ide", pragmas.excludeIdeData);
  86389. args: [],
  86390. source: "testifNotNil\x0a\x09self should: 'foo ^ 1 ifNotNil: [ 2 ]' return: 2.\x0a\x09self should: 'foo ^ nil ifNotNil: [ 2 ]' return: nil.\x0a\x0a\x09self should: 'foo 1 ifNotNil: [ ^ 2 ]' return: 2.\x0a\x09self should: 'foo nil ifNotNil: [ ^ 2 ]' return: receiver.",
  86391. referencedClasses: [],
  86392. //>>excludeEnd("ide");
  86393. pragmas: [],
  86394. messageSends: ["should:return:"]
  86395. }, function ($methodClass){ return function (){
  86396. var self=this,$self=this;
  86397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86398. return $core.withContext(function($ctx1) {
  86399. //>>excludeEnd("ctx");
  86400. [$self._should_return_("foo ^ 1 ifNotNil: [ 2 ]",(2))
  86401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86402. ,$ctx1.sendIdx["should:return:"]=1
  86403. //>>excludeEnd("ctx");
  86404. ][0];
  86405. [$self._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil)
  86406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86407. ,$ctx1.sendIdx["should:return:"]=2
  86408. //>>excludeEnd("ctx");
  86409. ][0];
  86410. [$self._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2))
  86411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86412. ,$ctx1.sendIdx["should:return:"]=3
  86413. //>>excludeEnd("ctx");
  86414. ][0];
  86415. $self._should_return_("foo nil ifNotNil: [ ^ 2 ]",$self.receiver);
  86416. return self;
  86417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86418. }, function($ctx1) {$ctx1.fill(self,"testifNotNil",{})});
  86419. //>>excludeEnd("ctx");
  86420. }; }),
  86421. $globals.AbstractCompilerTest);
  86422. $core.addMethod(
  86423. $core.method({
  86424. selector: "testifNotNilWithArgument",
  86425. protocol: "tests",
  86426. //>>excludeStart("ide", pragmas.excludeIdeData);
  86427. args: [],
  86428. source: "testifNotNilWithArgument\x0a\x09self should: 'foo ^ 1 ifNotNil: [ :val | val + 2 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNotNil: [ :val | val + 2 ]' return: nil.\x0a\x09\x0a\x09self should: 'foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]' return: 5.\x0a\x09\x0a\x09self should: 'foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]' return: 3.\x0a\x09self should: 'foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]' return: 5",
  86429. referencedClasses: [],
  86430. //>>excludeEnd("ide");
  86431. pragmas: [],
  86432. messageSends: ["should:return:"]
  86433. }, function ($methodClass){ return function (){
  86434. var self=this,$self=this;
  86435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86436. return $core.withContext(function($ctx1) {
  86437. //>>excludeEnd("ctx");
  86438. [$self._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ]",(3))
  86439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86440. ,$ctx1.sendIdx["should:return:"]=1
  86441. //>>excludeEnd("ctx");
  86442. ][0];
  86443. [$self._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ]",nil)
  86444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86445. ,$ctx1.sendIdx["should:return:"]=2
  86446. //>>excludeEnd("ctx");
  86447. ][0];
  86448. [$self._should_return_("foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(3))
  86449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86450. ,$ctx1.sendIdx["should:return:"]=3
  86451. //>>excludeEnd("ctx");
  86452. ][0];
  86453. [$self._should_return_("foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(5))
  86454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86455. ,$ctx1.sendIdx["should:return:"]=4
  86456. //>>excludeEnd("ctx");
  86457. ][0];
  86458. [$self._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(3))
  86459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86460. ,$ctx1.sendIdx["should:return:"]=5
  86461. //>>excludeEnd("ctx");
  86462. ][0];
  86463. $self._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(5));
  86464. return self;
  86465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86466. }, function($ctx1) {$ctx1.fill(self,"testifNotNilWithArgument",{})});
  86467. //>>excludeEnd("ctx");
  86468. }; }),
  86469. $globals.AbstractCompilerTest);
  86470. $core.addMethod(
  86471. $core.method({
  86472. selector: "testifTrue",
  86473. protocol: "tests",
  86474. //>>excludeStart("ide", pragmas.excludeIdeData);
  86475. args: [],
  86476. source: "testifTrue\x0a\x09self should: 'foo false ifTrue: [ ^ 1 ]' return: receiver.\x0a\x09self should: 'foo true ifTrue: [ ^ 2 ]' return: 2.\x0a\x09\x0a\x09self should: 'foo ^ false ifTrue: [ 1 ]' return: nil.\x0a\x09self should: 'foo ^ true ifTrue: [ 2 ]' return: 2.",
  86477. referencedClasses: [],
  86478. //>>excludeEnd("ide");
  86479. pragmas: [],
  86480. messageSends: ["should:return:"]
  86481. }, function ($methodClass){ return function (){
  86482. var self=this,$self=this;
  86483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86484. return $core.withContext(function($ctx1) {
  86485. //>>excludeEnd("ctx");
  86486. [$self._should_return_("foo false ifTrue: [ ^ 1 ]",$self.receiver)
  86487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86488. ,$ctx1.sendIdx["should:return:"]=1
  86489. //>>excludeEnd("ctx");
  86490. ][0];
  86491. [$self._should_return_("foo true ifTrue: [ ^ 2 ]",(2))
  86492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86493. ,$ctx1.sendIdx["should:return:"]=2
  86494. //>>excludeEnd("ctx");
  86495. ][0];
  86496. [$self._should_return_("foo ^ false ifTrue: [ 1 ]",nil)
  86497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86498. ,$ctx1.sendIdx["should:return:"]=3
  86499. //>>excludeEnd("ctx");
  86500. ][0];
  86501. $self._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
  86502. return self;
  86503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86504. }, function($ctx1) {$ctx1.fill(self,"testifTrue",{})});
  86505. //>>excludeEnd("ctx");
  86506. }; }),
  86507. $globals.AbstractCompilerTest);
  86508. $core.addMethod(
  86509. $core.method({
  86510. selector: "testifTrueIfFalse",
  86511. protocol: "tests",
  86512. //>>excludeStart("ide", pragmas.excludeIdeData);
  86513. args: [],
  86514. source: "testifTrueIfFalse\x0a\x09self should: 'foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]' return: 2.\x0a\x09self should: 'foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]' return: 1.\x0a\x09\x0a\x09self should: 'foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]' return: 1.\x0a\x09self should: 'foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]' return: 2.",
  86515. referencedClasses: [],
  86516. //>>excludeEnd("ide");
  86517. pragmas: [],
  86518. messageSends: ["should:return:"]
  86519. }, function ($methodClass){ return function (){
  86520. var self=this,$self=this;
  86521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86522. return $core.withContext(function($ctx1) {
  86523. //>>excludeEnd("ctx");
  86524. [$self._should_return_("foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]",(2))
  86525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86526. ,$ctx1.sendIdx["should:return:"]=1
  86527. //>>excludeEnd("ctx");
  86528. ][0];
  86529. [$self._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1))
  86530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86531. ,$ctx1.sendIdx["should:return:"]=2
  86532. //>>excludeEnd("ctx");
  86533. ][0];
  86534. [$self._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1))
  86535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86536. ,$ctx1.sendIdx["should:return:"]=3
  86537. //>>excludeEnd("ctx");
  86538. ][0];
  86539. $self._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
  86540. return self;
  86541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86542. }, function($ctx1) {$ctx1.fill(self,"testifTrueIfFalse",{})});
  86543. //>>excludeEnd("ctx");
  86544. }; }),
  86545. $globals.AbstractCompilerTest);
  86546. $core.addMethod(
  86547. $core.method({
  86548. selector: "isAbstract",
  86549. protocol: "testing",
  86550. //>>excludeStart("ide", pragmas.excludeIdeData);
  86551. args: [],
  86552. source: "isAbstract\x0a\x09^ self name = AbstractCompilerTest name",
  86553. referencedClasses: ["AbstractCompilerTest"],
  86554. //>>excludeEnd("ide");
  86555. pragmas: [],
  86556. messageSends: ["=", "name"]
  86557. }, function ($methodClass){ return function (){
  86558. var self=this,$self=this;
  86559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86560. return $core.withContext(function($ctx1) {
  86561. //>>excludeEnd("ctx");
  86562. return $recv([$self._name()
  86563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86564. ,$ctx1.sendIdx["name"]=1
  86565. //>>excludeEnd("ctx");
  86566. ][0]).__eq($recv($globals.AbstractCompilerTest)._name());
  86567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86568. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
  86569. //>>excludeEnd("ctx");
  86570. }; }),
  86571. $globals.AbstractCompilerTest.a$cls);
  86572. $core.addClass("ASTDebuggerTest", $globals.AbstractCompilerTest, "Compiler-Tests");
  86573. $core.addClass("ASTInterpreterTest", $globals.AbstractCompilerTest, "Compiler-Tests");
  86574. $core.addClass("CodeGeneratorTest", $globals.AbstractCompilerTest, "Compiler-Tests");
  86575. $core.addClass("InliningCodeGeneratorTest", $globals.AbstractCompilerTest, "Compiler-Tests");
  86576. $core.addClass("AbstractJavaScriptGatewayTest", $globals.ASTMethodRunningTest, "Compiler-Tests");
  86577. $core.setSlots($globals.AbstractJavaScriptGatewayTest, ["theClass"]);
  86578. $core.addMethod(
  86579. $core.method({
  86580. selector: "jsConstructor",
  86581. protocol: "running",
  86582. //>>excludeStart("ide", pragmas.excludeIdeData);
  86583. args: [],
  86584. source: "jsConstructor\x0a\x09<inlineJS: '\x0a\x09\x09var ctr = function () {};\x0a\x09\x09ctr.prototype.foo = function (a,b) {return a+\x22,\x22+b};\x0a\x09\x09return ctr;\x0a\x09'>",
  86585. referencedClasses: [],
  86586. //>>excludeEnd("ide");
  86587. pragmas: [["inlineJS:", ["\x0a\x09\x09var ctr = function () {};\x0a\x09\x09ctr.prototype.foo = function (a,b) {return a+\x22,\x22+b};\x0a\x09\x09return ctr;\x0a\x09"]]],
  86588. messageSends: []
  86589. }, function ($methodClass){ return function (){
  86590. var self=this,$self=this;
  86591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86592. return $core.withContext(function($ctx1) {
  86593. //>>excludeEnd("ctx");
  86594. var ctr = function () {};
  86595. ctr.prototype.foo = function (a,b) {return a+","+b};
  86596. return ctr;
  86597. ;
  86598. return self;
  86599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86600. }, function($ctx1) {$ctx1.fill(self,"jsConstructor",{})});
  86601. //>>excludeEnd("ctx");
  86602. }; }),
  86603. $globals.AbstractJavaScriptGatewayTest);
  86604. $core.addMethod(
  86605. $core.method({
  86606. selector: "testDyadicSuperDifferentNames",
  86607. protocol: "tests",
  86608. //>>excludeStart("ide", pragmas.excludeIdeData);
  86609. args: [],
  86610. source: "testDyadicSuperDifferentNames\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4 true).\x0a\x09self\x0a\x09\x09should: 'bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anObject anotherObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject'\x0a\x09\x09return: '4,true'",
  86611. referencedClasses: ["ObjectMock", "ObjectMock2"],
  86612. //>>excludeEnd("ide");
  86613. pragmas: [],
  86614. messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
  86615. }, function ($methodClass){ return function (){
  86616. var self=this,$self=this;
  86617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86618. return $core.withContext(function($ctx1) {
  86619. //>>excludeEnd("ctx");
  86620. var $1;
  86621. $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
  86622. $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
  86623. $1=$recv($globals.ObjectMock2)._new();
  86624. $recv($1)._foo_("should be shadowed");
  86625. $self.receiver=$recv($1)._yourself();
  86626. $self.arguments=[(4), true];
  86627. $self._should_return_("bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anObject anotherObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject","4,true");
  86628. return self;
  86629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86630. }, function($ctx1) {$ctx1.fill(self,"testDyadicSuperDifferentNames",{})});
  86631. //>>excludeEnd("ctx");
  86632. }; }),
  86633. $globals.AbstractJavaScriptGatewayTest);
  86634. $core.addMethod(
  86635. $core.method({
  86636. selector: "testDyadicSuperDifferentNamesNested",
  86637. protocol: "tests",
  86638. //>>excludeStart("ide", pragmas.excludeIdeData);
  86639. args: [],
  86640. source: "testDyadicSuperDifferentNamesNested\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4 true).\x0a\x09self\x0a\x09\x09should: 'bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anObject anotherObject)>\x0a\x09\x09\x09^ [ super bar: anObject baz: anotherObject ] value'\x0a\x09\x09return: '4,true'",
  86641. referencedClasses: ["ObjectMock", "ObjectMock2"],
  86642. //>>excludeEnd("ide");
  86643. pragmas: [],
  86644. messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
  86645. }, function ($methodClass){ return function (){
  86646. var self=this,$self=this;
  86647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86648. return $core.withContext(function($ctx1) {
  86649. //>>excludeEnd("ctx");
  86650. var $1;
  86651. $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
  86652. $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
  86653. $1=$recv($globals.ObjectMock2)._new();
  86654. $recv($1)._foo_("should be shadowed");
  86655. $self.receiver=$recv($1)._yourself();
  86656. $self.arguments=[(4), true];
  86657. $self._should_return_("bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anObject anotherObject)>\x0a\x09\x09\x09^ [ super bar: anObject baz: anotherObject ] value","4,true");
  86658. return self;
  86659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86660. }, function($ctx1) {$ctx1.fill(self,"testDyadicSuperDifferentNamesNested",{})});
  86661. //>>excludeEnd("ctx");
  86662. }; }),
  86663. $globals.AbstractJavaScriptGatewayTest);
  86664. $core.addMethod(
  86665. $core.method({
  86666. selector: "testDyadicSuperDifferentNamesPermutated",
  86667. protocol: "tests",
  86668. //>>excludeStart("ide", pragmas.excludeIdeData);
  86669. args: [],
  86670. source: "testDyadicSuperDifferentNamesPermutated\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4 true).\x0a\x09self\x0a\x09\x09should: 'bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anotherObject anObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject'\x0a\x09\x09return: 'true,4'",
  86671. referencedClasses: ["ObjectMock", "ObjectMock2"],
  86672. //>>excludeEnd("ide");
  86673. pragmas: [],
  86674. messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
  86675. }, function ($methodClass){ return function (){
  86676. var self=this,$self=this;
  86677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86678. return $core.withContext(function($ctx1) {
  86679. //>>excludeEnd("ctx");
  86680. var $1;
  86681. $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
  86682. $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
  86683. $1=$recv($globals.ObjectMock2)._new();
  86684. $recv($1)._foo_("should be shadowed");
  86685. $self.receiver=$recv($1)._yourself();
  86686. $self.arguments=[(4), true];
  86687. $self._should_return_("bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anotherObject anObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject","true,4");
  86688. return self;
  86689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86690. }, function($ctx1) {$ctx1.fill(self,"testDyadicSuperDifferentNamesPermutated",{})});
  86691. //>>excludeEnd("ctx");
  86692. }; }),
  86693. $globals.AbstractJavaScriptGatewayTest);
  86694. $core.addMethod(
  86695. $core.method({
  86696. selector: "testMonadicSuperDifferentNames",
  86697. protocol: "tests",
  86698. //>>excludeStart("ide", pragmas.excludeIdeData);
  86699. args: [],
  86700. source: "testMonadicSuperDifferentNames\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4).\x0a\x09self\x0a\x09\x09should: 'bar: anObject <jsOverride: #foo args: #(anObject)> ^ super bar: anObject'\x0a\x09\x09return: '4,undefined'",
  86701. referencedClasses: ["ObjectMock", "ObjectMock2"],
  86702. //>>excludeEnd("ide");
  86703. pragmas: [],
  86704. messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
  86705. }, function ($methodClass){ return function (){
  86706. var self=this,$self=this;
  86707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86708. return $core.withContext(function($ctx1) {
  86709. //>>excludeEnd("ctx");
  86710. var $1;
  86711. $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
  86712. $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
  86713. $1=$recv($globals.ObjectMock2)._new();
  86714. $recv($1)._foo_("should be shadowed");
  86715. $self.receiver=$recv($1)._yourself();
  86716. $self.arguments=[(4)];
  86717. $self._should_return_("bar: anObject <jsOverride: #foo args: #(anObject)> ^ super bar: anObject","4,undefined");
  86718. return self;
  86719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86720. }, function($ctx1) {$ctx1.fill(self,"testMonadicSuperDifferentNames",{})});
  86721. //>>excludeEnd("ctx");
  86722. }; }),
  86723. $globals.AbstractJavaScriptGatewayTest);
  86724. $core.addMethod(
  86725. $core.method({
  86726. selector: "testNiladicSuper",
  86727. protocol: "tests",
  86728. //>>excludeStart("ide", pragmas.excludeIdeData);
  86729. args: [],
  86730. source: "testNiladicSuper\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09self\x0a\x09\x09should: 'foo <jsOverride: #foo> ^ super foo'\x0a\x09\x09receiver: (ObjectMock2 new foo: 'should be shadowed'; yourself)\x0a\x09\x09return: 'undefined,undefined'",
  86731. referencedClasses: ["ObjectMock", "ObjectMock2"],
  86732. //>>excludeEnd("ide");
  86733. pragmas: [],
  86734. messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "should:receiver:return:", "foo:", "new", "yourself"]
  86735. }, function ($methodClass){ return function (){
  86736. var self=this,$self=this;
  86737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86738. return $core.withContext(function($ctx1) {
  86739. //>>excludeEnd("ctx");
  86740. var $1;
  86741. $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
  86742. $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
  86743. $1=$recv($globals.ObjectMock2)._new();
  86744. $recv($1)._foo_("should be shadowed");
  86745. $self._should_receiver_return_("foo <jsOverride: #foo> ^ super foo",$recv($1)._yourself(),"undefined,undefined");
  86746. return self;
  86747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86748. }, function($ctx1) {$ctx1.fill(self,"testNiladicSuper",{})});
  86749. //>>excludeEnd("ctx");
  86750. }; }),
  86751. $globals.AbstractJavaScriptGatewayTest);
  86752. $core.addMethod(
  86753. $core.method({
  86754. selector: "testNiladicSuperDifferentNames",
  86755. protocol: "tests",
  86756. //>>excludeStart("ide", pragmas.excludeIdeData);
  86757. args: [],
  86758. source: "testNiladicSuperDifferentNames\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09self\x0a\x09\x09should: 'bar <jsOverride: #foo> ^ super bar'\x0a\x09\x09receiver: (ObjectMock2 new foo: 'should be shadowed'; yourself)\x0a\x09\x09return: 'undefined,undefined'",
  86759. referencedClasses: ["ObjectMock", "ObjectMock2"],
  86760. //>>excludeEnd("ide");
  86761. pragmas: [],
  86762. messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "should:receiver:return:", "foo:", "new", "yourself"]
  86763. }, function ($methodClass){ return function (){
  86764. var self=this,$self=this;
  86765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86766. return $core.withContext(function($ctx1) {
  86767. //>>excludeEnd("ctx");
  86768. var $1;
  86769. $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
  86770. $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
  86771. $1=$recv($globals.ObjectMock2)._new();
  86772. $recv($1)._foo_("should be shadowed");
  86773. $self._should_receiver_return_("bar <jsOverride: #foo> ^ super bar",$recv($1)._yourself(),"undefined,undefined");
  86774. return self;
  86775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86776. }, function($ctx1) {$ctx1.fill(self,"testNiladicSuperDifferentNames",{})});
  86777. //>>excludeEnd("ctx");
  86778. }; }),
  86779. $globals.AbstractJavaScriptGatewayTest);
  86780. $core.addMethod(
  86781. $core.method({
  86782. selector: "testNiladicSuperNested",
  86783. protocol: "tests",
  86784. //>>excludeStart("ide", pragmas.excludeIdeData);
  86785. args: [],
  86786. source: "testNiladicSuperNested\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09self\x0a\x09\x09should: 'foo <jsOverride: #foo> ^ [ super foo ] value'\x0a\x09\x09receiver: (ObjectMock2 new foo: 'should be shadowed'; yourself)\x0a\x09\x09return: 'undefined,undefined'",
  86787. referencedClasses: ["ObjectMock", "ObjectMock2"],
  86788. //>>excludeEnd("ide");
  86789. pragmas: [],
  86790. messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "should:receiver:return:", "foo:", "new", "yourself"]
  86791. }, function ($methodClass){ return function (){
  86792. var self=this,$self=this;
  86793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86794. return $core.withContext(function($ctx1) {
  86795. //>>excludeEnd("ctx");
  86796. var $1;
  86797. $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
  86798. $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
  86799. $1=$recv($globals.ObjectMock2)._new();
  86800. $recv($1)._foo_("should be shadowed");
  86801. $self._should_receiver_return_("foo <jsOverride: #foo> ^ [ super foo ] value",$recv($1)._yourself(),"undefined,undefined");
  86802. return self;
  86803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86804. }, function($ctx1) {$ctx1.fill(self,"testNiladicSuperNested",{})});
  86805. //>>excludeEnd("ctx");
  86806. }; }),
  86807. $globals.AbstractJavaScriptGatewayTest);
  86808. $core.addMethod(
  86809. $core.method({
  86810. selector: "testTriadicSuperDifferentNamesPermutated",
  86811. protocol: "tests",
  86812. //>>excludeStart("ide", pragmas.excludeIdeData);
  86813. args: [],
  86814. source: "testTriadicSuperDifferentNamesPermutated\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4 true 'hello').\x0a\x09self\x0a\x09\x09should: 'bar: anObject baz: anotherObject moo: yao\x0a\x09\x09\x09<jsOverride: #foo args: #(yao anObject anotherObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject moo: yao'\x0a\x09\x09return: 'hello,4'",
  86815. referencedClasses: ["ObjectMock", "ObjectMock2"],
  86816. //>>excludeEnd("ide");
  86817. pragmas: [],
  86818. messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
  86819. }, function ($methodClass){ return function (){
  86820. var self=this,$self=this;
  86821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86822. return $core.withContext(function($ctx1) {
  86823. //>>excludeEnd("ctx");
  86824. var $1;
  86825. $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
  86826. $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
  86827. $1=$recv($globals.ObjectMock2)._new();
  86828. $recv($1)._foo_("should be shadowed");
  86829. $self.receiver=$recv($1)._yourself();
  86830. $self.arguments=[(4), true, "hello"];
  86831. $self._should_return_("bar: anObject baz: anotherObject moo: yao\x0a\x09\x09\x09<jsOverride: #foo args: #(yao anObject anotherObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject moo: yao","hello,4");
  86832. return self;
  86833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86834. }, function($ctx1) {$ctx1.fill(self,"testTriadicSuperDifferentNamesPermutated",{})});
  86835. //>>excludeEnd("ctx");
  86836. }; }),
  86837. $globals.AbstractJavaScriptGatewayTest);
  86838. $core.addMethod(
  86839. $core.method({
  86840. selector: "theClass",
  86841. protocol: "accessing",
  86842. //>>excludeStart("ide", pragmas.excludeIdeData);
  86843. args: [],
  86844. source: "theClass\x0a\x09^ theClass",
  86845. referencedClasses: [],
  86846. //>>excludeEnd("ide");
  86847. pragmas: [],
  86848. messageSends: []
  86849. }, function ($methodClass){ return function (){
  86850. var self=this,$self=this;
  86851. return $self.theClass;
  86852. }; }),
  86853. $globals.AbstractJavaScriptGatewayTest);
  86854. $core.addMethod(
  86855. $core.method({
  86856. selector: "isAbstract",
  86857. protocol: "testing",
  86858. //>>excludeStart("ide", pragmas.excludeIdeData);
  86859. args: [],
  86860. source: "isAbstract\x0a\x09^ self name = AbstractJavaScriptGatewayTest name",
  86861. referencedClasses: ["AbstractJavaScriptGatewayTest"],
  86862. //>>excludeEnd("ide");
  86863. pragmas: [],
  86864. messageSends: ["=", "name"]
  86865. }, function ($methodClass){ return function (){
  86866. var self=this,$self=this;
  86867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86868. return $core.withContext(function($ctx1) {
  86869. //>>excludeEnd("ctx");
  86870. return $recv([$self._name()
  86871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86872. ,$ctx1.sendIdx["name"]=1
  86873. //>>excludeEnd("ctx");
  86874. ][0]).__eq($recv($globals.AbstractJavaScriptGatewayTest)._name());
  86875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86876. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
  86877. //>>excludeEnd("ctx");
  86878. }; }),
  86879. $globals.AbstractJavaScriptGatewayTest.a$cls);
  86880. $core.addClass("DebuggedJSGTest", $globals.AbstractJavaScriptGatewayTest, "Compiler-Tests");
  86881. $core.addClass("InlinedJSGTest", $globals.AbstractJavaScriptGatewayTest, "Compiler-Tests");
  86882. $core.addClass("InterpretedJSGTest", $globals.AbstractJavaScriptGatewayTest, "Compiler-Tests");
  86883. $core.addClass("PlainJSGTest", $globals.AbstractJavaScriptGatewayTest, "Compiler-Tests");
  86884. $core.addClass("ASTPCNodeVisitorTest", $globals.TestCase, "Compiler-Tests");
  86885. $core.addMethod(
  86886. $core.method({
  86887. selector: "astPCNodeVisitor",
  86888. protocol: "factory",
  86889. //>>excludeStart("ide", pragmas.excludeIdeData);
  86890. args: [],
  86891. source: "astPCNodeVisitor\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09index: 0;\x0a\x09\x09yourself",
  86892. referencedClasses: ["ASTPCNodeVisitor"],
  86893. //>>excludeEnd("ide");
  86894. pragmas: [],
  86895. messageSends: ["index:", "new", "yourself"]
  86896. }, function ($methodClass){ return function (){
  86897. var self=this,$self=this;
  86898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86899. return $core.withContext(function($ctx1) {
  86900. //>>excludeEnd("ctx");
  86901. var $1;
  86902. $1=$recv($globals.ASTPCNodeVisitor)._new();
  86903. $recv($1)._index_((0));
  86904. return $recv($1)._yourself();
  86905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86906. }, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitor",{})});
  86907. //>>excludeEnd("ctx");
  86908. }; }),
  86909. $globals.ASTPCNodeVisitorTest);
  86910. $core.addMethod(
  86911. $core.method({
  86912. selector: "astPCNodeVisitorForSelector:",
  86913. protocol: "factory",
  86914. //>>excludeStart("ide", pragmas.excludeIdeData);
  86915. args: ["aString"],
  86916. source: "astPCNodeVisitorForSelector: aString\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09selector: aString;\x0a\x09\x09index: 0;\x0a\x09\x09yourself",
  86917. referencedClasses: ["ASTPCNodeVisitor"],
  86918. //>>excludeEnd("ide");
  86919. pragmas: [],
  86920. messageSends: ["selector:", "new", "index:", "yourself"]
  86921. }, function ($methodClass){ return function (aString){
  86922. var self=this,$self=this;
  86923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86924. return $core.withContext(function($ctx1) {
  86925. //>>excludeEnd("ctx");
  86926. var $1;
  86927. $1=$recv($globals.ASTPCNodeVisitor)._new();
  86928. $recv($1)._selector_(aString);
  86929. $recv($1)._index_((0));
  86930. return $recv($1)._yourself();
  86931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86932. }, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitorForSelector:",{aString:aString})});
  86933. //>>excludeEnd("ctx");
  86934. }; }),
  86935. $globals.ASTPCNodeVisitorTest);
  86936. $core.addMethod(
  86937. $core.method({
  86938. selector: "newTeachableVisitor",
  86939. protocol: "factory",
  86940. //>>excludeStart("ide", pragmas.excludeIdeData);
  86941. args: [],
  86942. source: "newTeachableVisitor\x0a\x09| result |\x0a\x09result := Teachable new\x0a\x09\x09whenSend: #visit: evaluate: [ :one | one acceptDagVisitor: result ];\x0a\x09\x09acceptSend: #visitDagNode:.\x0a\x09^ result",
  86943. referencedClasses: ["Teachable"],
  86944. //>>excludeEnd("ide");
  86945. pragmas: [],
  86946. messageSends: ["whenSend:evaluate:", "new", "acceptDagVisitor:", "acceptSend:"]
  86947. }, function ($methodClass){ return function (){
  86948. var self=this,$self=this;
  86949. var result;
  86950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86951. return $core.withContext(function($ctx1) {
  86952. //>>excludeEnd("ctx");
  86953. var $1;
  86954. $1=$recv($globals.Teachable)._new();
  86955. $recv($1)._whenSend_evaluate_("visit:",(function(one){
  86956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86957. return $core.withContext(function($ctx2) {
  86958. //>>excludeEnd("ctx");
  86959. return $recv(one)._acceptDagVisitor_(result);
  86960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86961. }, function($ctx2) {$ctx2.fillBlock({one:one},$ctx1,1)});
  86962. //>>excludeEnd("ctx");
  86963. }));
  86964. result=$recv($1)._acceptSend_("visitDagNode:");
  86965. return result;
  86966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86967. }, function($ctx1) {$ctx1.fill(self,"newTeachableVisitor",{result:result})});
  86968. //>>excludeEnd("ctx");
  86969. }; }),
  86970. $globals.ASTPCNodeVisitorTest);
  86971. $core.addMethod(
  86972. $core.method({
  86973. selector: "testJSStatementNode",
  86974. protocol: "tests",
  86975. //>>excludeStart("ide", pragmas.excludeIdeData);
  86976. args: [],
  86977. source: "testJSStatementNode\x0a\x09| ast result |\x0a\x09\x0a\x09ast := self parse: 'foo <inlineJS: ''consolee.log(1)''>' forClass: Object.\x0a\x09result := self astPCNodeVisitor visit: ast; currentNode.\x0a\x09self\x0a\x09\x09assert: ((self newTeachableVisitor whenSend: #visitJSStatementNode: return: 'JS'; yourself) visit: result)\x0a\x09\x09equals: 'JS'",
  86978. referencedClasses: ["Object"],
  86979. //>>excludeEnd("ide");
  86980. pragmas: [],
  86981. messageSends: ["parse:forClass:", "visit:", "astPCNodeVisitor", "currentNode", "assert:equals:", "whenSend:return:", "newTeachableVisitor", "yourself"]
  86982. }, function ($methodClass){ return function (){
  86983. var self=this,$self=this;
  86984. var ast,result;
  86985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86986. return $core.withContext(function($ctx1) {
  86987. //>>excludeEnd("ctx");
  86988. var $1,$2;
  86989. ast=$self._parse_forClass_("foo <inlineJS: 'consolee.log(1)'>",$globals.Object);
  86990. $1=$self._astPCNodeVisitor();
  86991. [$recv($1)._visit_(ast)
  86992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86993. ,$ctx1.sendIdx["visit:"]=1
  86994. //>>excludeEnd("ctx");
  86995. ][0];
  86996. result=$recv($1)._currentNode();
  86997. $2=$self._newTeachableVisitor();
  86998. $recv($2)._whenSend_return_("visitJSStatementNode:","JS");
  86999. $self._assert_equals_($recv($recv($2)._yourself())._visit_(result),"JS");
  87000. return self;
  87001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87002. }, function($ctx1) {$ctx1.fill(self,"testJSStatementNode",{ast:ast,result:result})});
  87003. //>>excludeEnd("ctx");
  87004. }; }),
  87005. $globals.ASTPCNodeVisitorTest);
  87006. $core.addMethod(
  87007. $core.method({
  87008. selector: "testMessageSend",
  87009. protocol: "tests",
  87010. //>>excludeStart("ide", pragmas.excludeIdeData);
  87011. args: [],
  87012. source: "testMessageSend\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo self asString yourself. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'",
  87013. referencedClasses: ["Object"],
  87014. //>>excludeEnd("ide");
  87015. pragmas: [],
  87016. messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
  87017. }, function ($methodClass){ return function (){
  87018. var self=this,$self=this;
  87019. var ast;
  87020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87021. return $core.withContext(function($ctx1) {
  87022. //>>excludeEnd("ctx");
  87023. var $1;
  87024. ast=$self._parse_forClass_("foo self asString yourself. ^ self asBoolean",$globals.Object);
  87025. $1=$self._astPCNodeVisitorForSelector_("yourself");
  87026. $recv($1)._visit_(ast);
  87027. $self._assert_equals_($recv($recv($1)._currentNode())._selector(),"yourself");
  87028. return self;
  87029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87030. }, function($ctx1) {$ctx1.fill(self,"testMessageSend",{ast:ast})});
  87031. //>>excludeEnd("ctx");
  87032. }; }),
  87033. $globals.ASTPCNodeVisitorTest);
  87034. $core.addMethod(
  87035. $core.method({
  87036. selector: "testMessageSendWithBlocks",
  87037. protocol: "tests",
  87038. //>>excludeStart("ide", pragmas.excludeIdeData);
  87039. args: [],
  87040. source: "testMessageSendWithBlocks\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ [ self asString yourself ] value. ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'",
  87041. referencedClasses: ["Object"],
  87042. //>>excludeEnd("ide");
  87043. pragmas: [],
  87044. messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
  87045. }, function ($methodClass){ return function (){
  87046. var self=this,$self=this;
  87047. var ast;
  87048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87049. return $core.withContext(function($ctx1) {
  87050. //>>excludeEnd("ctx");
  87051. var $1;
  87052. ast=$self._parse_forClass_("foo true ifTrue: [ [ self asString yourself ] value. ]. ^ self asBoolean",$globals.Object);
  87053. $1=$self._astPCNodeVisitorForSelector_("yourself");
  87054. $recv($1)._visit_(ast);
  87055. $self._assert_equals_($recv($recv($1)._currentNode())._selector(),"yourself");
  87056. return self;
  87057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87058. }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithBlocks",{ast:ast})});
  87059. //>>excludeEnd("ctx");
  87060. }; }),
  87061. $globals.ASTPCNodeVisitorTest);
  87062. $core.addMethod(
  87063. $core.method({
  87064. selector: "testMessageSendWithInlining",
  87065. protocol: "tests",
  87066. //>>excludeStart("ide", pragmas.excludeIdeData);
  87067. args: [],
  87068. source: "testMessageSendWithInlining\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ self asString yourself ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'yourself')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'yourself'.\x0a\x09\x09\x0a\x09ast := self parse: 'foo true ifTrue: [ self asString yourself ]. ^ self asBoolean' forClass: Object.\x0a\x09self assert: ((self astPCNodeVisitorForSelector: 'asBoolean')\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) selector equals: 'asBoolean'",
  87069. referencedClasses: ["Object"],
  87070. //>>excludeEnd("ide");
  87071. pragmas: [],
  87072. messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
  87073. }, function ($methodClass){ return function (){
  87074. var self=this,$self=this;
  87075. var ast;
  87076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87077. return $core.withContext(function($ctx1) {
  87078. //>>excludeEnd("ctx");
  87079. var $1,$2;
  87080. ast=[$self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$globals.Object)
  87081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87082. ,$ctx1.sendIdx["parse:forClass:"]=1
  87083. //>>excludeEnd("ctx");
  87084. ][0];
  87085. $1=[$self._astPCNodeVisitorForSelector_("yourself")
  87086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87087. ,$ctx1.sendIdx["astPCNodeVisitorForSelector:"]=1
  87088. //>>excludeEnd("ctx");
  87089. ][0];
  87090. [$recv($1)._visit_(ast)
  87091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87092. ,$ctx1.sendIdx["visit:"]=1
  87093. //>>excludeEnd("ctx");
  87094. ][0];
  87095. [$self._assert_equals_([$recv([$recv($1)._currentNode()
  87096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87097. ,$ctx1.sendIdx["currentNode"]=1
  87098. //>>excludeEnd("ctx");
  87099. ][0])._selector()
  87100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87101. ,$ctx1.sendIdx["selector"]=1
  87102. //>>excludeEnd("ctx");
  87103. ][0],"yourself")
  87104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87105. ,$ctx1.sendIdx["assert:equals:"]=1
  87106. //>>excludeEnd("ctx");
  87107. ][0];
  87108. ast=$self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$globals.Object);
  87109. $2=$self._astPCNodeVisitorForSelector_("asBoolean");
  87110. $recv($2)._visit_(ast);
  87111. $self._assert_equals_($recv($recv($2)._currentNode())._selector(),"asBoolean");
  87112. return self;
  87113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87114. }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithInlining",{ast:ast})});
  87115. //>>excludeEnd("ctx");
  87116. }; }),
  87117. $globals.ASTPCNodeVisitorTest);
  87118. $core.addMethod(
  87119. $core.method({
  87120. selector: "testNoMessageSend",
  87121. protocol: "tests",
  87122. //>>excludeStart("ide", pragmas.excludeIdeData);
  87123. args: [],
  87124. source: "testNoMessageSend\x0a\x09| ast |\x0a\x09\x0a\x09ast := self parse: 'foo ^ self' forClass: Object.\x0a\x09self assert: (self astPCNodeVisitor\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) isNil",
  87125. referencedClasses: ["Object"],
  87126. //>>excludeEnd("ide");
  87127. pragmas: [],
  87128. messageSends: ["parse:forClass:", "assert:", "isNil", "visit:", "astPCNodeVisitor", "currentNode"]
  87129. }, function ($methodClass){ return function (){
  87130. var self=this,$self=this;
  87131. var ast;
  87132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87133. return $core.withContext(function($ctx1) {
  87134. //>>excludeEnd("ctx");
  87135. var $1;
  87136. ast=$self._parse_forClass_("foo ^ self",$globals.Object);
  87137. $1=$self._astPCNodeVisitor();
  87138. $recv($1)._visit_(ast);
  87139. $self._assert_($recv($recv($1)._currentNode())._isNil());
  87140. return self;
  87141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87142. }, function($ctx1) {$ctx1.fill(self,"testNoMessageSend",{ast:ast})});
  87143. //>>excludeEnd("ctx");
  87144. }; }),
  87145. $globals.ASTPCNodeVisitorTest);
  87146. $core.addClass("ASTPositionTest", $globals.TestCase, "Compiler-Tests");
  87147. $core.addMethod(
  87148. $core.method({
  87149. selector: "testNodeAtPosition",
  87150. protocol: "tests",
  87151. //>>excludeStart("ide", pragmas.excludeIdeData);
  87152. args: [],
  87153. source: "testNodeAtPosition\x0a\x09| node |\x0a\x09\x0a\x09node := self parse: 'yourself\x0a\x09^ self' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@4 ifAbsent: [ nil ]) source equals: 'self'.\x0a\x09\x0a\x09node := self parse: 'foo\x0a\x09true ifTrue: [ 1 ]' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@7 ifAbsent: [ nil ]) selector equals: 'ifTrue:'.\x0a\x09\x0a\x09node := self parse: 'foo\x0a\x09self foo; bar; baz' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@8 ifAbsent: [ nil ]) selector equals: 'foo'",
  87154. referencedClasses: ["Object"],
  87155. //>>excludeEnd("ide");
  87156. pragmas: [],
  87157. messageSends: ["parse:forClass:", "assert:equals:", "source", "navigationNodeAt:ifAbsent:", "@", "selector"]
  87158. }, function ($methodClass){ return function (){
  87159. var self=this,$self=this;
  87160. var node;
  87161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87162. return $core.withContext(function($ctx1) {
  87163. //>>excludeEnd("ctx");
  87164. node=[$self._parse_forClass_("yourself\x0a\x09^ self",$globals.Object)
  87165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87166. ,$ctx1.sendIdx["parse:forClass:"]=1
  87167. //>>excludeEnd("ctx");
  87168. ][0];
  87169. [$self._assert_equals_($recv([$recv(node)._navigationNodeAt_ifAbsent_([(2).__at((4))
  87170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87171. ,$ctx1.sendIdx["@"]=1
  87172. //>>excludeEnd("ctx");
  87173. ][0],(function(){
  87174. return nil;
  87175. }))
  87176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87177. ,$ctx1.sendIdx["navigationNodeAt:ifAbsent:"]=1
  87178. //>>excludeEnd("ctx");
  87179. ][0])._source(),"self")
  87180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87181. ,$ctx1.sendIdx["assert:equals:"]=1
  87182. //>>excludeEnd("ctx");
  87183. ][0];
  87184. node=[$self._parse_forClass_("foo\x0a\x09true ifTrue: [ 1 ]",$globals.Object)
  87185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87186. ,$ctx1.sendIdx["parse:forClass:"]=2
  87187. //>>excludeEnd("ctx");
  87188. ][0];
  87189. [$self._assert_equals_([$recv([$recv(node)._navigationNodeAt_ifAbsent_([(2).__at((7))
  87190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87191. ,$ctx1.sendIdx["@"]=2
  87192. //>>excludeEnd("ctx");
  87193. ][0],(function(){
  87194. return nil;
  87195. }))
  87196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87197. ,$ctx1.sendIdx["navigationNodeAt:ifAbsent:"]=2
  87198. //>>excludeEnd("ctx");
  87199. ][0])._selector()
  87200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87201. ,$ctx1.sendIdx["selector"]=1
  87202. //>>excludeEnd("ctx");
  87203. ][0],"ifTrue:")
  87204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87205. ,$ctx1.sendIdx["assert:equals:"]=2
  87206. //>>excludeEnd("ctx");
  87207. ][0];
  87208. node=$self._parse_forClass_("foo\x0a\x09self foo; bar; baz",$globals.Object);
  87209. $self._assert_equals_($recv($recv(node)._navigationNodeAt_ifAbsent_((2).__at((8)),(function(){
  87210. return nil;
  87211. })))._selector(),"foo");
  87212. return self;
  87213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87214. }, function($ctx1) {$ctx1.fill(self,"testNodeAtPosition",{node:node})});
  87215. //>>excludeEnd("ctx");
  87216. }; }),
  87217. $globals.ASTPositionTest);
  87218. $core.addClass("AbstractCodeGeneratorInstallTest", $globals.TestCase, "Compiler-Tests");
  87219. $core.setSlots($globals.AbstractCodeGeneratorInstallTest, ["receiver"]);
  87220. $core.addMethod(
  87221. $core.method({
  87222. selector: "receiver",
  87223. protocol: "accessing",
  87224. //>>excludeStart("ide", pragmas.excludeIdeData);
  87225. args: [],
  87226. source: "receiver\x0a\x09^ receiver",
  87227. referencedClasses: [],
  87228. //>>excludeEnd("ide");
  87229. pragmas: [],
  87230. messageSends: []
  87231. }, function ($methodClass){ return function (){
  87232. var self=this,$self=this;
  87233. return $self.receiver;
  87234. }; }),
  87235. $globals.AbstractCodeGeneratorInstallTest);
  87236. $core.addMethod(
  87237. $core.method({
  87238. selector: "shouldntInstall:andRaise:",
  87239. protocol: "testing",
  87240. //>>excludeStart("ide", pragmas.excludeIdeData);
  87241. args: ["aString", "anErrorClass"],
  87242. source: "shouldntInstall: aString andRaise: anErrorClass\x0a\x09| method |\x0a\x0a\x09[ self\x0a\x09\x09should: [ method := self install: aString forClass: receiver class ]\x0a\x09\x09raise: anErrorClass ]\x0a\x09ensure: [ method ifNotNil: [ receiver class removeCompiledMethod: method ] ]",
  87243. referencedClasses: [],
  87244. //>>excludeEnd("ide");
  87245. pragmas: [],
  87246. messageSends: ["ensure:", "should:raise:", "install:forClass:", "class", "ifNotNil:", "removeCompiledMethod:"]
  87247. }, function ($methodClass){ return function (aString,anErrorClass){
  87248. var self=this,$self=this;
  87249. var method;
  87250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87251. return $core.withContext(function($ctx1) {
  87252. //>>excludeEnd("ctx");
  87253. var $1;
  87254. $recv((function(){
  87255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87256. return $core.withContext(function($ctx2) {
  87257. //>>excludeEnd("ctx");
  87258. return $self._should_raise_((function(){
  87259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87260. return $core.withContext(function($ctx3) {
  87261. //>>excludeEnd("ctx");
  87262. method=$self._install_forClass_(aString,[$recv($self.receiver)._class()
  87263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87264. ,$ctx3.sendIdx["class"]=1
  87265. //>>excludeEnd("ctx");
  87266. ][0]);
  87267. return method;
  87268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87269. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  87270. //>>excludeEnd("ctx");
  87271. }),anErrorClass);
  87272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87273. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  87274. //>>excludeEnd("ctx");
  87275. }))._ensure_((function(){
  87276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87277. return $core.withContext(function($ctx2) {
  87278. //>>excludeEnd("ctx");
  87279. $1=method;
  87280. if($1 == null || $1.a$nil){
  87281. return $1;
  87282. } else {
  87283. return $recv($recv($self.receiver)._class())._removeCompiledMethod_(method);
  87284. }
  87285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87286. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  87287. //>>excludeEnd("ctx");
  87288. }));
  87289. return self;
  87290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87291. }, function($ctx1) {$ctx1.fill(self,"shouldntInstall:andRaise:",{aString:aString,anErrorClass:anErrorClass,method:method})});
  87292. //>>excludeEnd("ctx");
  87293. }; }),
  87294. $globals.AbstractCodeGeneratorInstallTest);
  87295. $core.addMethod(
  87296. $core.method({
  87297. selector: "testDyadicJSOverrideArgMismatch",
  87298. protocol: "tests",
  87299. //>>excludeStart("ide", pragmas.excludeIdeData);
  87300. args: [],
  87301. source: "testDyadicJSOverrideArgMismatch\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherNumber)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)'\x0a\x09\x09andRaise: CompilerError.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(aNumber anotherInteger)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)'\x0a\x09\x09andRaise: CompilerError.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(anotherNumber anInteger)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)'\x0a\x09\x09andRaise: CompilerError",
  87302. referencedClasses: ["ObjectMock", "CompilerError"],
  87303. //>>excludeEnd("ide");
  87304. pragmas: [],
  87305. messageSends: ["new", "shouldntInstall:andRaise:"]
  87306. }, function ($methodClass){ return function (){
  87307. var self=this,$self=this;
  87308. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87309. return $core.withContext(function($ctx1) {
  87310. //>>excludeEnd("ctx");
  87311. $self.receiver=$recv($globals.ObjectMock)._new();
  87312. [$self._shouldntInstall_andRaise_("quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherNumber)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)",$globals.CompilerError)
  87313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87314. ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=1
  87315. //>>excludeEnd("ctx");
  87316. ][0];
  87317. [$self._shouldntInstall_andRaise_("quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(aNumber anotherInteger)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)",$globals.CompilerError)
  87318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87319. ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=2
  87320. //>>excludeEnd("ctx");
  87321. ][0];
  87322. $self._shouldntInstall_andRaise_("quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(anotherNumber anInteger)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)",$globals.CompilerError);
  87323. return self;
  87324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87325. }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideArgMismatch",{})});
  87326. //>>excludeEnd("ctx");
  87327. }; }),
  87328. $globals.AbstractCodeGeneratorInstallTest);
  87329. $core.addMethod(
  87330. $core.method({
  87331. selector: "testDyadicJSOverrideDifferentNames",
  87332. protocol: "tests",
  87333. //>>excludeStart("ide", pragmas.excludeIdeData);
  87334. args: [],
  87335. source: "testDyadicJSOverrideDifferentNames\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self should: [ receiver mux: 2 and: -1 ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux withArguments: #(2 -2)) equals: 6.\x0a\x09\x09self assert: (receiver quux: 1 foo: 4) equals: 10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: 10 ]",
  87336. referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
  87337. //>>excludeEnd("ide");
  87338. pragmas: [],
  87339. messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "mux:and:", "assert:equals:", "basicPerform:withArguments:", "quux:foo:", "basicPerform:", "foo"]
  87340. }, function ($methodClass){ return function (){
  87341. var self=this,$self=this;
  87342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87343. return $core.withContext(function($ctx1) {
  87344. //>>excludeEnd("ctx");
  87345. $self.receiver=$recv($globals.ObjectMock)._new();
  87346. $recv($self.receiver)._foo_((4));
  87347. $self._while_should_("quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)",(function(){
  87348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87349. return $core.withContext(function($ctx2) {
  87350. //>>excludeEnd("ctx");
  87351. [$self._should_raise_((function(){
  87352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87353. return $core.withContext(function($ctx3) {
  87354. //>>excludeEnd("ctx");
  87355. return $recv($self.receiver)._mux();
  87356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87357. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  87358. //>>excludeEnd("ctx");
  87359. }),$globals.MessageNotUnderstood)
  87360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87361. ,$ctx2.sendIdx["should:raise:"]=1
  87362. //>>excludeEnd("ctx");
  87363. ][0];
  87364. [$self._should_raise_((function(){
  87365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87366. return $core.withContext(function($ctx3) {
  87367. //>>excludeEnd("ctx");
  87368. return $recv($self.receiver)._mux_and_((2),(-1));
  87369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87370. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  87371. //>>excludeEnd("ctx");
  87372. }),$globals.MessageNotUnderstood)
  87373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87374. ,$ctx2.sendIdx["should:raise:"]=2
  87375. //>>excludeEnd("ctx");
  87376. ][0];
  87377. [$self._assert_equals_($recv($self.receiver)._basicPerform_withArguments_("mux",[(2), (-2)]),(6))
  87378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87379. ,$ctx2.sendIdx["assert:equals:"]=1
  87380. //>>excludeEnd("ctx");
  87381. ][0];
  87382. [$self._assert_equals_($recv($self.receiver)._quux_foo_((1),(4)),(10))
  87383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87384. ,$ctx2.sendIdx["assert:equals:"]=2
  87385. //>>excludeEnd("ctx");
  87386. ][0];
  87387. $self._should_raise_((function(){
  87388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87389. return $core.withContext(function($ctx3) {
  87390. //>>excludeEnd("ctx");
  87391. return $recv($self.receiver)._basicPerform_("quux");
  87392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87393. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  87394. //>>excludeEnd("ctx");
  87395. }),$globals.Error);
  87396. return $self._assert_equals_($recv($self.receiver)._foo(),(10));
  87397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87398. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  87399. //>>excludeEnd("ctx");
  87400. }));
  87401. return self;
  87402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87403. }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideDifferentNames",{})});
  87404. //>>excludeEnd("ctx");
  87405. }; }),
  87406. $globals.AbstractCodeGeneratorInstallTest);
  87407. $core.addMethod(
  87408. $core.method({
  87409. selector: "testDyadicJSOverrideDifferentNamesPermutated",
  87410. protocol: "tests",
  87411. //>>excludeStart("ide", pragmas.excludeIdeData);
  87412. args: [],
  87413. source: "testDyadicJSOverrideDifferentNamesPermutated\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anotherInteger anInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self should: [ receiver mux: 2 and: -1 ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux withArguments: #(-2 2)) equals: 6.\x0a\x09\x09self assert: (receiver quux: 1 foo: 4) equals: 10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: 10 ]",
  87414. referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
  87415. //>>excludeEnd("ide");
  87416. pragmas: [],
  87417. messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "mux:and:", "assert:equals:", "basicPerform:withArguments:", "quux:foo:", "basicPerform:", "foo"]
  87418. }, function ($methodClass){ return function (){
  87419. var self=this,$self=this;
  87420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87421. return $core.withContext(function($ctx1) {
  87422. //>>excludeEnd("ctx");
  87423. $self.receiver=$recv($globals.ObjectMock)._new();
  87424. $recv($self.receiver)._foo_((4));
  87425. $self._while_should_("quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anotherInteger anInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)",(function(){
  87426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87427. return $core.withContext(function($ctx2) {
  87428. //>>excludeEnd("ctx");
  87429. [$self._should_raise_((function(){
  87430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87431. return $core.withContext(function($ctx3) {
  87432. //>>excludeEnd("ctx");
  87433. return $recv($self.receiver)._mux();
  87434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87435. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  87436. //>>excludeEnd("ctx");
  87437. }),$globals.MessageNotUnderstood)
  87438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87439. ,$ctx2.sendIdx["should:raise:"]=1
  87440. //>>excludeEnd("ctx");
  87441. ][0];
  87442. [$self._should_raise_((function(){
  87443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87444. return $core.withContext(function($ctx3) {
  87445. //>>excludeEnd("ctx");
  87446. return $recv($self.receiver)._mux_and_((2),(-1));
  87447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87448. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  87449. //>>excludeEnd("ctx");
  87450. }),$globals.MessageNotUnderstood)
  87451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87452. ,$ctx2.sendIdx["should:raise:"]=2
  87453. //>>excludeEnd("ctx");
  87454. ][0];
  87455. [$self._assert_equals_($recv($self.receiver)._basicPerform_withArguments_("mux",[(-2), (2)]),(6))
  87456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87457. ,$ctx2.sendIdx["assert:equals:"]=1
  87458. //>>excludeEnd("ctx");
  87459. ][0];
  87460. [$self._assert_equals_($recv($self.receiver)._quux_foo_((1),(4)),(10))
  87461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87462. ,$ctx2.sendIdx["assert:equals:"]=2
  87463. //>>excludeEnd("ctx");
  87464. ][0];
  87465. $self._should_raise_((function(){
  87466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87467. return $core.withContext(function($ctx3) {
  87468. //>>excludeEnd("ctx");
  87469. return $recv($self.receiver)._basicPerform_("quux");
  87470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87471. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  87472. //>>excludeEnd("ctx");
  87473. }),$globals.Error);
  87474. return $self._assert_equals_($recv($self.receiver)._foo(),(10));
  87475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87476. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  87477. //>>excludeEnd("ctx");
  87478. }));
  87479. return self;
  87480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87481. }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideDifferentNamesPermutated",{})});
  87482. //>>excludeEnd("ctx");
  87483. }; }),
  87484. $globals.AbstractCodeGeneratorInstallTest);
  87485. $core.addMethod(
  87486. $core.method({
  87487. selector: "testDyadicJSOverrideInOneArg",
  87488. protocol: "tests",
  87489. //>>excludeStart("ide", pragmas.excludeIdeData);
  87490. args: [],
  87491. source: "testDyadicJSOverrideInOneArg\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo + anInteger)'\x0a\x09\x09andRaise: CompilerError.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anotherInteger anInteger)>\x0a\x09\x09^ (foo := foo + anInteger)'\x0a\x09\x09andRaise: CompilerError",
  87492. referencedClasses: ["ObjectMock", "CompilerError"],
  87493. //>>excludeEnd("ide");
  87494. pragmas: [],
  87495. messageSends: ["new", "shouldntInstall:andRaise:"]
  87496. }, function ($methodClass){ return function (){
  87497. var self=this,$self=this;
  87498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87499. return $core.withContext(function($ctx1) {
  87500. //>>excludeEnd("ctx");
  87501. $self.receiver=$recv($globals.ObjectMock)._new();
  87502. [$self._shouldntInstall_andRaise_("quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo + anInteger)",$globals.CompilerError)
  87503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87504. ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=1
  87505. //>>excludeEnd("ctx");
  87506. ][0];
  87507. $self._shouldntInstall_andRaise_("quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anotherInteger anInteger)>\x0a\x09\x09^ (foo := foo + anInteger)",$globals.CompilerError);
  87508. return self;
  87509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87510. }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideInOneArg",{})});
  87511. //>>excludeEnd("ctx");
  87512. }; }),
  87513. $globals.AbstractCodeGeneratorInstallTest);
  87514. $core.addMethod(
  87515. $core.method({
  87516. selector: "testDyadicJSOverrideInUnary",
  87517. protocol: "tests",
  87518. //>>excludeStart("ide", pragmas.excludeIdeData);
  87519. args: [],
  87520. source: "testDyadicJSOverrideInUnary\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux <jsOverride: #mux args: #(anInteger anotherInteger)> ^ (foo := foo + 3)'\x0a\x09\x09andRaise: CompilerError",
  87521. referencedClasses: ["ObjectMock", "CompilerError"],
  87522. //>>excludeEnd("ide");
  87523. pragmas: [],
  87524. messageSends: ["new", "shouldntInstall:andRaise:"]
  87525. }, function ($methodClass){ return function (){
  87526. var self=this,$self=this;
  87527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87528. return $core.withContext(function($ctx1) {
  87529. //>>excludeEnd("ctx");
  87530. $self.receiver=$recv($globals.ObjectMock)._new();
  87531. $self._shouldntInstall_andRaise_("quux <jsOverride: #mux args: #(anInteger anotherInteger)> ^ (foo := foo + 3)",$globals.CompilerError);
  87532. return self;
  87533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87534. }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideInUnary",{})});
  87535. //>>excludeEnd("ctx");
  87536. }; }),
  87537. $globals.AbstractCodeGeneratorInstallTest);
  87538. $core.addMethod(
  87539. $core.method({
  87540. selector: "testDyadicJSOverrideRepeatedArgs",
  87541. protocol: "tests",
  87542. //>>excludeStart("ide", pragmas.excludeIdeData);
  87543. args: [],
  87544. source: "testDyadicJSOverrideRepeatedArgs\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anInteger)>\x0a\x09\x09^ (foo := foo + anInteger)'\x0a\x09\x09andRaise: CompilerError.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)'\x0a\x09\x09andRaise: CompilerError",
  87545. referencedClasses: ["ObjectMock", "CompilerError"],
  87546. //>>excludeEnd("ide");
  87547. pragmas: [],
  87548. messageSends: ["new", "shouldntInstall:andRaise:"]
  87549. }, function ($methodClass){ return function (){
  87550. var self=this,$self=this;
  87551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87552. return $core.withContext(function($ctx1) {
  87553. //>>excludeEnd("ctx");
  87554. $self.receiver=$recv($globals.ObjectMock)._new();
  87555. [$self._shouldntInstall_andRaise_("quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anInteger)>\x0a\x09\x09^ (foo := foo + anInteger)",$globals.CompilerError)
  87556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87557. ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=1
  87558. //>>excludeEnd("ctx");
  87559. ][0];
  87560. $self._shouldntInstall_andRaise_("quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)",$globals.CompilerError);
  87561. return self;
  87562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87563. }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideRepeatedArgs",{})});
  87564. //>>excludeEnd("ctx");
  87565. }; }),
  87566. $globals.AbstractCodeGeneratorInstallTest);
  87567. $core.addMethod(
  87568. $core.method({
  87569. selector: "testInvalidAssignment",
  87570. protocol: "tests",
  87571. //>>excludeStart("ide", pragmas.excludeIdeData);
  87572. args: [],
  87573. source: "testInvalidAssignment\x0a\x09self shouldntInstall: 'foo:a a:=1' andRaise: InvalidAssignmentError.\x0a\x09self shouldntInstall: 'foo false:=1' andRaise: InvalidAssignmentError.\x0a\x09self shouldntInstall: 'foo console:=1' andRaise: InvalidAssignmentError.\x0a\x09self shouldntInstall: 'foo Number:=1' andRaise: InvalidAssignmentError",
  87574. referencedClasses: ["InvalidAssignmentError"],
  87575. //>>excludeEnd("ide");
  87576. pragmas: [],
  87577. messageSends: ["shouldntInstall:andRaise:"]
  87578. }, function ($methodClass){ return function (){
  87579. var self=this,$self=this;
  87580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87581. return $core.withContext(function($ctx1) {
  87582. //>>excludeEnd("ctx");
  87583. [$self._shouldntInstall_andRaise_("foo:a a:=1",$globals.InvalidAssignmentError)
  87584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87585. ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=1
  87586. //>>excludeEnd("ctx");
  87587. ][0];
  87588. [$self._shouldntInstall_andRaise_("foo false:=1",$globals.InvalidAssignmentError)
  87589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87590. ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=2
  87591. //>>excludeEnd("ctx");
  87592. ][0];
  87593. [$self._shouldntInstall_andRaise_("foo console:=1",$globals.InvalidAssignmentError)
  87594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87595. ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=3
  87596. //>>excludeEnd("ctx");
  87597. ][0];
  87598. $self._shouldntInstall_andRaise_("foo Number:=1",$globals.InvalidAssignmentError);
  87599. return self;
  87600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87601. }, function($ctx1) {$ctx1.fill(self,"testInvalidAssignment",{})});
  87602. //>>excludeEnd("ctx");
  87603. }; }),
  87604. $globals.AbstractCodeGeneratorInstallTest);
  87605. $core.addMethod(
  87606. $core.method({
  87607. selector: "testMistypedPragmaJSStatement",
  87608. protocol: "tests",
  87609. //>>excludeStart("ide", pragmas.excludeIdeData);
  87610. args: [],
  87611. source: "testMistypedPragmaJSStatement\x0a\x09self shouldntInstall: 'foo < inlineJS: ''return ''foo'''' >' andRaise: ParseError",
  87612. referencedClasses: ["ParseError"],
  87613. //>>excludeEnd("ide");
  87614. pragmas: [],
  87615. messageSends: ["shouldntInstall:andRaise:"]
  87616. }, function ($methodClass){ return function (){
  87617. var self=this,$self=this;
  87618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87619. return $core.withContext(function($ctx1) {
  87620. //>>excludeEnd("ctx");
  87621. $self._shouldntInstall_andRaise_("foo < inlineJS: 'return 'foo'' >",$globals.ParseError);
  87622. return self;
  87623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87624. }, function($ctx1) {$ctx1.fill(self,"testMistypedPragmaJSStatement",{})});
  87625. //>>excludeEnd("ctx");
  87626. }; }),
  87627. $globals.AbstractCodeGeneratorInstallTest);
  87628. $core.addMethod(
  87629. $core.method({
  87630. selector: "testMonadicJSOverrideArgMismatch",
  87631. protocol: "tests",
  87632. //>>excludeStart("ide", pragmas.excludeIdeData);
  87633. args: [],
  87634. source: "testMonadicJSOverrideArgMismatch\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: aNumber <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + aNumber)'\x0a\x09\x09andRaise: CompilerError",
  87635. referencedClasses: ["ObjectMock", "CompilerError"],
  87636. //>>excludeEnd("ide");
  87637. pragmas: [],
  87638. messageSends: ["new", "shouldntInstall:andRaise:"]
  87639. }, function ($methodClass){ return function (){
  87640. var self=this,$self=this;
  87641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87642. return $core.withContext(function($ctx1) {
  87643. //>>excludeEnd("ctx");
  87644. $self.receiver=$recv($globals.ObjectMock)._new();
  87645. $self._shouldntInstall_andRaise_("quux: aNumber <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + aNumber)",$globals.CompilerError);
  87646. return self;
  87647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87648. }, function($ctx1) {$ctx1.fill(self,"testMonadicJSOverrideArgMismatch",{})});
  87649. //>>excludeEnd("ctx");
  87650. }; }),
  87651. $globals.AbstractCodeGeneratorInstallTest);
  87652. $core.addMethod(
  87653. $core.method({
  87654. selector: "testMonadicJSOverrideDifferentNames",
  87655. protocol: "tests",
  87656. //>>excludeStart("ide", pragmas.excludeIdeData);
  87657. args: [],
  87658. source: "testMonadicJSOverrideDifferentNames\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux: anInteger <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + anInteger)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self should: [ receiver mux: 2 ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux withArguments: #(2)) equals: 6.\x0a\x09\x09self assert: (receiver quux: 4) equals: 10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: 10 ]",
  87659. referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
  87660. //>>excludeEnd("ide");
  87661. pragmas: [],
  87662. messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "mux:", "assert:equals:", "basicPerform:withArguments:", "quux:", "basicPerform:", "foo"]
  87663. }, function ($methodClass){ return function (){
  87664. var self=this,$self=this;
  87665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87666. return $core.withContext(function($ctx1) {
  87667. //>>excludeEnd("ctx");
  87668. $self.receiver=$recv($globals.ObjectMock)._new();
  87669. $recv($self.receiver)._foo_((4));
  87670. $self._while_should_("quux: anInteger <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + anInteger)",(function(){
  87671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87672. return $core.withContext(function($ctx2) {
  87673. //>>excludeEnd("ctx");
  87674. [$self._should_raise_((function(){
  87675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87676. return $core.withContext(function($ctx3) {
  87677. //>>excludeEnd("ctx");
  87678. return $recv($self.receiver)._mux();
  87679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87680. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  87681. //>>excludeEnd("ctx");
  87682. }),$globals.MessageNotUnderstood)
  87683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87684. ,$ctx2.sendIdx["should:raise:"]=1
  87685. //>>excludeEnd("ctx");
  87686. ][0];
  87687. [$self._should_raise_((function(){
  87688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87689. return $core.withContext(function($ctx3) {
  87690. //>>excludeEnd("ctx");
  87691. return $recv($self.receiver)._mux_((2));
  87692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87693. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  87694. //>>excludeEnd("ctx");
  87695. }),$globals.MessageNotUnderstood)
  87696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87697. ,$ctx2.sendIdx["should:raise:"]=2
  87698. //>>excludeEnd("ctx");
  87699. ][0];
  87700. [$self._assert_equals_($recv($self.receiver)._basicPerform_withArguments_("mux",[(2)]),(6))
  87701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87702. ,$ctx2.sendIdx["assert:equals:"]=1
  87703. //>>excludeEnd("ctx");
  87704. ][0];
  87705. [$self._assert_equals_($recv($self.receiver)._quux_((4)),(10))
  87706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87707. ,$ctx2.sendIdx["assert:equals:"]=2
  87708. //>>excludeEnd("ctx");
  87709. ][0];
  87710. $self._should_raise_((function(){
  87711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87712. return $core.withContext(function($ctx3) {
  87713. //>>excludeEnd("ctx");
  87714. return $recv($self.receiver)._basicPerform_("quux");
  87715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87716. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  87717. //>>excludeEnd("ctx");
  87718. }),$globals.Error);
  87719. return $self._assert_equals_($recv($self.receiver)._foo(),(10));
  87720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87721. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  87722. //>>excludeEnd("ctx");
  87723. }));
  87724. return self;
  87725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87726. }, function($ctx1) {$ctx1.fill(self,"testMonadicJSOverrideDifferentNames",{})});
  87727. //>>excludeEnd("ctx");
  87728. }; }),
  87729. $globals.AbstractCodeGeneratorInstallTest);
  87730. $core.addMethod(
  87731. $core.method({
  87732. selector: "testMonadicJSOverrideInUnary",
  87733. protocol: "tests",
  87734. //>>excludeStart("ide", pragmas.excludeIdeData);
  87735. args: [],
  87736. source: "testMonadicJSOverrideInUnary\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + 3)'\x0a\x09\x09andRaise: CompilerError",
  87737. referencedClasses: ["ObjectMock", "CompilerError"],
  87738. //>>excludeEnd("ide");
  87739. pragmas: [],
  87740. messageSends: ["new", "shouldntInstall:andRaise:"]
  87741. }, function ($methodClass){ return function (){
  87742. var self=this,$self=this;
  87743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87744. return $core.withContext(function($ctx1) {
  87745. //>>excludeEnd("ctx");
  87746. $self.receiver=$recv($globals.ObjectMock)._new();
  87747. $self._shouldntInstall_andRaise_("quux <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + 3)",$globals.CompilerError);
  87748. return self;
  87749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87750. }, function($ctx1) {$ctx1.fill(self,"testMonadicJSOverrideInUnary",{})});
  87751. //>>excludeEnd("ctx");
  87752. }; }),
  87753. $globals.AbstractCodeGeneratorInstallTest);
  87754. $core.addMethod(
  87755. $core.method({
  87756. selector: "testNiladicJSOverride",
  87757. protocol: "tests",
  87758. //>>excludeStart("ide", pragmas.excludeIdeData);
  87759. args: [],
  87760. source: "testNiladicJSOverride\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'baz <jsOverride: #baz> ^ (foo := foo + 3)' should: [\x0a\x09\x09self assert: receiver baz equals: 7.\x0a\x09\x09self assert: (receiver basicPerform: #baz) equals: 10.\x0a\x09\x09self assert: receiver baz equals: 13.\x0a\x09\x09self assert: receiver foo equals: 13 ]",
  87761. referencedClasses: ["ObjectMock"],
  87762. //>>excludeEnd("ide");
  87763. pragmas: [],
  87764. messageSends: ["new", "foo:", "while:should:", "assert:equals:", "baz", "basicPerform:", "foo"]
  87765. }, function ($methodClass){ return function (){
  87766. var self=this,$self=this;
  87767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87768. return $core.withContext(function($ctx1) {
  87769. //>>excludeEnd("ctx");
  87770. $self.receiver=$recv($globals.ObjectMock)._new();
  87771. $recv($self.receiver)._foo_((4));
  87772. $self._while_should_("baz <jsOverride: #baz> ^ (foo := foo + 3)",(function(){
  87773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87774. return $core.withContext(function($ctx2) {
  87775. //>>excludeEnd("ctx");
  87776. [$self._assert_equals_([$recv($self.receiver)._baz()
  87777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87778. ,$ctx2.sendIdx["baz"]=1
  87779. //>>excludeEnd("ctx");
  87780. ][0],(7))
  87781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87782. ,$ctx2.sendIdx["assert:equals:"]=1
  87783. //>>excludeEnd("ctx");
  87784. ][0];
  87785. [$self._assert_equals_($recv($self.receiver)._basicPerform_("baz"),(10))
  87786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87787. ,$ctx2.sendIdx["assert:equals:"]=2
  87788. //>>excludeEnd("ctx");
  87789. ][0];
  87790. [$self._assert_equals_($recv($self.receiver)._baz(),(13))
  87791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87792. ,$ctx2.sendIdx["assert:equals:"]=3
  87793. //>>excludeEnd("ctx");
  87794. ][0];
  87795. return $self._assert_equals_($recv($self.receiver)._foo(),(13));
  87796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87797. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  87798. //>>excludeEnd("ctx");
  87799. }));
  87800. return self;
  87801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87802. }, function($ctx1) {$ctx1.fill(self,"testNiladicJSOverride",{})});
  87803. //>>excludeEnd("ctx");
  87804. }; }),
  87805. $globals.AbstractCodeGeneratorInstallTest);
  87806. $core.addMethod(
  87807. $core.method({
  87808. selector: "testNiladicJSOverrideDifferentNames",
  87809. protocol: "tests",
  87810. //>>excludeStart("ide", pragmas.excludeIdeData);
  87811. args: [],
  87812. source: "testNiladicJSOverrideDifferentNames\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux <jsOverride: #mux> ^ (foo := foo + 3)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux) equals: 7.\x0a\x09\x09self assert: receiver quux equals: 10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: 10 ]",
  87813. referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
  87814. //>>excludeEnd("ide");
  87815. pragmas: [],
  87816. messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "assert:equals:", "basicPerform:", "quux", "foo"]
  87817. }, function ($methodClass){ return function (){
  87818. var self=this,$self=this;
  87819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87820. return $core.withContext(function($ctx1) {
  87821. //>>excludeEnd("ctx");
  87822. $self.receiver=$recv($globals.ObjectMock)._new();
  87823. $recv($self.receiver)._foo_((4));
  87824. $self._while_should_("quux <jsOverride: #mux> ^ (foo := foo + 3)",(function(){
  87825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87826. return $core.withContext(function($ctx2) {
  87827. //>>excludeEnd("ctx");
  87828. [$self._should_raise_((function(){
  87829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87830. return $core.withContext(function($ctx3) {
  87831. //>>excludeEnd("ctx");
  87832. return $recv($self.receiver)._mux();
  87833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87834. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  87835. //>>excludeEnd("ctx");
  87836. }),$globals.MessageNotUnderstood)
  87837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87838. ,$ctx2.sendIdx["should:raise:"]=1
  87839. //>>excludeEnd("ctx");
  87840. ][0];
  87841. [$self._assert_equals_([$recv($self.receiver)._basicPerform_("mux")
  87842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87843. ,$ctx2.sendIdx["basicPerform:"]=1
  87844. //>>excludeEnd("ctx");
  87845. ][0],(7))
  87846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87847. ,$ctx2.sendIdx["assert:equals:"]=1
  87848. //>>excludeEnd("ctx");
  87849. ][0];
  87850. [$self._assert_equals_($recv($self.receiver)._quux(),(10))
  87851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87852. ,$ctx2.sendIdx["assert:equals:"]=2
  87853. //>>excludeEnd("ctx");
  87854. ][0];
  87855. $self._should_raise_((function(){
  87856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87857. return $core.withContext(function($ctx3) {
  87858. //>>excludeEnd("ctx");
  87859. return $recv($self.receiver)._basicPerform_("quux");
  87860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87861. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  87862. //>>excludeEnd("ctx");
  87863. }),$globals.Error);
  87864. return $self._assert_equals_($recv($self.receiver)._foo(),(10));
  87865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87866. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  87867. //>>excludeEnd("ctx");
  87868. }));
  87869. return self;
  87870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87871. }, function($ctx1) {$ctx1.fill(self,"testNiladicJSOverrideDifferentNames",{})});
  87872. //>>excludeEnd("ctx");
  87873. }; }),
  87874. $globals.AbstractCodeGeneratorInstallTest);
  87875. $core.addMethod(
  87876. $core.method({
  87877. selector: "testNiladicJSOverrideInOneArg",
  87878. protocol: "tests",
  87879. //>>excludeStart("ide", pragmas.excludeIdeData);
  87880. args: [],
  87881. source: "testNiladicJSOverrideInOneArg\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger <jsOverride: #mux> ^ (foo := foo + anInteger)'\x0a\x09\x09andRaise: CompilerError",
  87882. referencedClasses: ["ObjectMock", "CompilerError"],
  87883. //>>excludeEnd("ide");
  87884. pragmas: [],
  87885. messageSends: ["new", "shouldntInstall:andRaise:"]
  87886. }, function ($methodClass){ return function (){
  87887. var self=this,$self=this;
  87888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87889. return $core.withContext(function($ctx1) {
  87890. //>>excludeEnd("ctx");
  87891. $self.receiver=$recv($globals.ObjectMock)._new();
  87892. $self._shouldntInstall_andRaise_("quux: anInteger <jsOverride: #mux> ^ (foo := foo + anInteger)",$globals.CompilerError);
  87893. return self;
  87894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87895. }, function($ctx1) {$ctx1.fill(self,"testNiladicJSOverrideInOneArg",{})});
  87896. //>>excludeEnd("ctx");
  87897. }; }),
  87898. $globals.AbstractCodeGeneratorInstallTest);
  87899. $core.addMethod(
  87900. $core.method({
  87901. selector: "testPragmaInBlock",
  87902. protocol: "tests",
  87903. //>>excludeStart("ide", pragmas.excludeIdeData);
  87904. args: [],
  87905. source: "testPragmaInBlock\x0a\x09self shouldntInstall: 'foo ^ [ < fooBar > 4 ] value' andRaise: ParseError",
  87906. referencedClasses: ["ParseError"],
  87907. //>>excludeEnd("ide");
  87908. pragmas: [],
  87909. messageSends: ["shouldntInstall:andRaise:"]
  87910. }, function ($methodClass){ return function (){
  87911. var self=this,$self=this;
  87912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87913. return $core.withContext(function($ctx1) {
  87914. //>>excludeEnd("ctx");
  87915. $self._shouldntInstall_andRaise_("foo ^ [ < fooBar > 4 ] value",$globals.ParseError);
  87916. return self;
  87917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87918. }, function($ctx1) {$ctx1.fill(self,"testPragmaInBlock",{})});
  87919. //>>excludeEnd("ctx");
  87920. }; }),
  87921. $globals.AbstractCodeGeneratorInstallTest);
  87922. $core.addMethod(
  87923. $core.method({
  87924. selector: "testTriadicJSOverrideDifferentNamesPermutated",
  87925. protocol: "tests",
  87926. //>>excludeStart("ide", pragmas.excludeIdeData);
  87927. args: [],
  87928. source: "testTriadicJSOverrideDifferentNamesPermutated\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux: anInteger foo: anotherInteger bar: yaInt\x0a\x09\x09<jsOverride: #mux args: #(yaInt anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger - yaInt)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self should: [ receiver mux: 2 and: -1 and: 0 ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux withArguments: #(5 2 3)) equals: 6.\x0a\x09\x09self assert: (receiver quux: 1 foo: 4 bar: 20) equals: -10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: -10 ]",
  87929. referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
  87930. //>>excludeEnd("ide");
  87931. pragmas: [],
  87932. messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "mux:and:and:", "assert:equals:", "basicPerform:withArguments:", "quux:foo:bar:", "basicPerform:", "foo"]
  87933. }, function ($methodClass){ return function (){
  87934. var self=this,$self=this;
  87935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87936. return $core.withContext(function($ctx1) {
  87937. //>>excludeEnd("ctx");
  87938. $self.receiver=$recv($globals.ObjectMock)._new();
  87939. $recv($self.receiver)._foo_((4));
  87940. $self._while_should_("quux: anInteger foo: anotherInteger bar: yaInt\x0a\x09\x09<jsOverride: #mux args: #(yaInt anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger - yaInt)",(function(){
  87941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87942. return $core.withContext(function($ctx2) {
  87943. //>>excludeEnd("ctx");
  87944. [$self._should_raise_((function(){
  87945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87946. return $core.withContext(function($ctx3) {
  87947. //>>excludeEnd("ctx");
  87948. return $recv($self.receiver)._mux();
  87949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87950. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  87951. //>>excludeEnd("ctx");
  87952. }),$globals.MessageNotUnderstood)
  87953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87954. ,$ctx2.sendIdx["should:raise:"]=1
  87955. //>>excludeEnd("ctx");
  87956. ][0];
  87957. [$self._should_raise_((function(){
  87958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87959. return $core.withContext(function($ctx3) {
  87960. //>>excludeEnd("ctx");
  87961. return $recv($self.receiver)._mux_and_and_((2),(-1),(0));
  87962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87963. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  87964. //>>excludeEnd("ctx");
  87965. }),$globals.MessageNotUnderstood)
  87966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87967. ,$ctx2.sendIdx["should:raise:"]=2
  87968. //>>excludeEnd("ctx");
  87969. ][0];
  87970. [$self._assert_equals_($recv($self.receiver)._basicPerform_withArguments_("mux",[(5), (2), (3)]),(6))
  87971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87972. ,$ctx2.sendIdx["assert:equals:"]=1
  87973. //>>excludeEnd("ctx");
  87974. ][0];
  87975. [$self._assert_equals_($recv($self.receiver)._quux_foo_bar_((1),(4),(20)),(-10))
  87976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87977. ,$ctx2.sendIdx["assert:equals:"]=2
  87978. //>>excludeEnd("ctx");
  87979. ][0];
  87980. $self._should_raise_((function(){
  87981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87982. return $core.withContext(function($ctx3) {
  87983. //>>excludeEnd("ctx");
  87984. return $recv($self.receiver)._basicPerform_("quux");
  87985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87986. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  87987. //>>excludeEnd("ctx");
  87988. }),$globals.Error);
  87989. return $self._assert_equals_($recv($self.receiver)._foo(),(-10));
  87990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87991. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  87992. //>>excludeEnd("ctx");
  87993. }));
  87994. return self;
  87995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87996. }, function($ctx1) {$ctx1.fill(self,"testTriadicJSOverrideDifferentNamesPermutated",{})});
  87997. //>>excludeEnd("ctx");
  87998. }; }),
  87999. $globals.AbstractCodeGeneratorInstallTest);
  88000. $core.addMethod(
  88001. $core.method({
  88002. selector: "isAbstract",
  88003. protocol: "testing",
  88004. //>>excludeStart("ide", pragmas.excludeIdeData);
  88005. args: [],
  88006. source: "isAbstract\x0a\x09^ self name = AbstractCodeGeneratorInstallTest name",
  88007. referencedClasses: ["AbstractCodeGeneratorInstallTest"],
  88008. //>>excludeEnd("ide");
  88009. pragmas: [],
  88010. messageSends: ["=", "name"]
  88011. }, function ($methodClass){ return function (){
  88012. var self=this,$self=this;
  88013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88014. return $core.withContext(function($ctx1) {
  88015. //>>excludeEnd("ctx");
  88016. return $recv([$self._name()
  88017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88018. ,$ctx1.sendIdx["name"]=1
  88019. //>>excludeEnd("ctx");
  88020. ][0]).__eq($recv($globals.AbstractCodeGeneratorInstallTest)._name());
  88021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88022. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
  88023. //>>excludeEnd("ctx");
  88024. }; }),
  88025. $globals.AbstractCodeGeneratorInstallTest.a$cls);
  88026. $core.addClass("CodeGeneratorInstallTest", $globals.AbstractCodeGeneratorInstallTest, "Compiler-Tests");
  88027. $core.addClass("InliningCodeGeneratorInstallTest", $globals.AbstractCodeGeneratorInstallTest, "Compiler-Tests");
  88028. $core.addClass("ScopeVarTest", $globals.TestCase, "Compiler-Tests");
  88029. $core.addMethod(
  88030. $core.method({
  88031. selector: "testClassRefVar",
  88032. protocol: "tests",
  88033. //>>excludeStart("ide", pragmas.excludeIdeData);
  88034. args: [],
  88035. source: "testClassRefVar\x0a\x09| node binding |\x0a\x09node := VariableNode new\x0a\x09\x09identifier: 'Object';\x0a\x09\x09yourself.\x0a\x09SemanticAnalyzer new \x0a\x09\x09pushScope: MethodLexicalScope new;\x0a\x09\x09visit: node.\x0a\x09binding := node binding.\x0a\x09self deny: binding isAssignable.\x0a\x09self deny: binding isIdempotent.\x0a\x09self assert: (binding alias includesSubString: 'Object').\x0a\x09self assert: (binding alias ~= 'Object')",
  88036. referencedClasses: ["VariableNode", "SemanticAnalyzer", "MethodLexicalScope"],
  88037. //>>excludeEnd("ide");
  88038. pragmas: [],
  88039. messageSends: ["identifier:", "new", "yourself", "pushScope:", "visit:", "binding", "deny:", "isAssignable", "isIdempotent", "assert:", "includesSubString:", "alias", "~="]
  88040. }, function ($methodClass){ return function (){
  88041. var self=this,$self=this;
  88042. var node,binding;
  88043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88044. return $core.withContext(function($ctx1) {
  88045. //>>excludeEnd("ctx");
  88046. var $1,$2;
  88047. $1=[$recv($globals.VariableNode)._new()
  88048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88049. ,$ctx1.sendIdx["new"]=1
  88050. //>>excludeEnd("ctx");
  88051. ][0];
  88052. $recv($1)._identifier_("Object");
  88053. node=$recv($1)._yourself();
  88054. $2=[$recv($globals.SemanticAnalyzer)._new()
  88055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88056. ,$ctx1.sendIdx["new"]=2
  88057. //>>excludeEnd("ctx");
  88058. ][0];
  88059. $recv($2)._pushScope_($recv($globals.MethodLexicalScope)._new());
  88060. $recv($2)._visit_(node);
  88061. binding=$recv(node)._binding();
  88062. [$self._deny_($recv(binding)._isAssignable())
  88063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88064. ,$ctx1.sendIdx["deny:"]=1
  88065. //>>excludeEnd("ctx");
  88066. ][0];
  88067. $self._deny_($recv(binding)._isIdempotent());
  88068. [$self._assert_($recv([$recv(binding)._alias()
  88069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88070. ,$ctx1.sendIdx["alias"]=1
  88071. //>>excludeEnd("ctx");
  88072. ][0])._includesSubString_("Object"))
  88073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88074. ,$ctx1.sendIdx["assert:"]=1
  88075. //>>excludeEnd("ctx");
  88076. ][0];
  88077. $self._assert_($recv($recv(binding)._alias()).__tild_eq("Object"));
  88078. return self;
  88079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88080. }, function($ctx1) {$ctx1.fill(self,"testClassRefVar",{node:node,binding:binding})});
  88081. //>>excludeEnd("ctx");
  88082. }; }),
  88083. $globals.ScopeVarTest);
  88084. $core.addMethod(
  88085. $core.method({
  88086. selector: "testExternallyKnownVar",
  88087. protocol: "tests",
  88088. //>>excludeStart("ide", pragmas.excludeIdeData);
  88089. args: [],
  88090. source: "testExternallyKnownVar\x0a\x09| node binding |\x0a\x09node := VariableNode new\x0a\x09\x09identifier: 'console';\x0a\x09\x09yourself.\x0a\x09SemanticAnalyzer new \x0a\x09\x09pushScope: MethodLexicalScope new;\x0a\x09\x09visit: node.\x0a\x09binding := node binding.\x0a\x09self deny: binding isAssignable.\x0a\x09self deny: binding isIdempotent.\x0a\x09self assert: binding alias equals: 'console'",
  88091. referencedClasses: ["VariableNode", "SemanticAnalyzer", "MethodLexicalScope"],
  88092. //>>excludeEnd("ide");
  88093. pragmas: [],
  88094. messageSends: ["identifier:", "new", "yourself", "pushScope:", "visit:", "binding", "deny:", "isAssignable", "isIdempotent", "assert:equals:", "alias"]
  88095. }, function ($methodClass){ return function (){
  88096. var self=this,$self=this;
  88097. var node,binding;
  88098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88099. return $core.withContext(function($ctx1) {
  88100. //>>excludeEnd("ctx");
  88101. var $1,$2;
  88102. $1=[$recv($globals.VariableNode)._new()
  88103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88104. ,$ctx1.sendIdx["new"]=1
  88105. //>>excludeEnd("ctx");
  88106. ][0];
  88107. $recv($1)._identifier_("console");
  88108. node=$recv($1)._yourself();
  88109. $2=[$recv($globals.SemanticAnalyzer)._new()
  88110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88111. ,$ctx1.sendIdx["new"]=2
  88112. //>>excludeEnd("ctx");
  88113. ][0];
  88114. $recv($2)._pushScope_($recv($globals.MethodLexicalScope)._new());
  88115. $recv($2)._visit_(node);
  88116. binding=$recv(node)._binding();
  88117. [$self._deny_($recv(binding)._isAssignable())
  88118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88119. ,$ctx1.sendIdx["deny:"]=1
  88120. //>>excludeEnd("ctx");
  88121. ][0];
  88122. $self._deny_($recv(binding)._isIdempotent());
  88123. $self._assert_equals_($recv(binding)._alias(),"console");
  88124. return self;
  88125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88126. }, function($ctx1) {$ctx1.fill(self,"testExternallyKnownVar",{node:node,binding:binding})});
  88127. //>>excludeEnd("ctx");
  88128. }; }),
  88129. $globals.ScopeVarTest);
  88130. $core.addMethod(
  88131. $core.method({
  88132. selector: "testExternallyUnknownVar",
  88133. protocol: "tests",
  88134. //>>excludeStart("ide", pragmas.excludeIdeData);
  88135. args: [],
  88136. source: "testExternallyUnknownVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09identifier: 'bzzz';\x0a\x09\x09yourself.\x0a\x09self \x0a\x09\x09should: [\x0a\x09\x09\x09SemanticAnalyzer new \x0a\x09\x09\x09pushScope: MethodLexicalScope new;\x0a\x09\x09\x09visit: node ]\x0a\x09\x09raise: UnknownVariableError",
  88137. referencedClasses: ["VariableNode", "SemanticAnalyzer", "MethodLexicalScope", "UnknownVariableError"],
  88138. //>>excludeEnd("ide");
  88139. pragmas: [],
  88140. messageSends: ["identifier:", "new", "yourself", "should:raise:", "pushScope:", "visit:"]
  88141. }, function ($methodClass){ return function (){
  88142. var self=this,$self=this;
  88143. var node;
  88144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88145. return $core.withContext(function($ctx1) {
  88146. //>>excludeEnd("ctx");
  88147. var $1,$2;
  88148. $1=[$recv($globals.VariableNode)._new()
  88149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88150. ,$ctx1.sendIdx["new"]=1
  88151. //>>excludeEnd("ctx");
  88152. ][0];
  88153. $recv($1)._identifier_("bzzz");
  88154. node=$recv($1)._yourself();
  88155. $self._should_raise_((function(){
  88156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88157. return $core.withContext(function($ctx2) {
  88158. //>>excludeEnd("ctx");
  88159. $2=[$recv($globals.SemanticAnalyzer)._new()
  88160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88161. ,$ctx2.sendIdx["new"]=2
  88162. //>>excludeEnd("ctx");
  88163. ][0];
  88164. $recv($2)._pushScope_($recv($globals.MethodLexicalScope)._new());
  88165. return $recv($2)._visit_(node);
  88166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88167. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  88168. //>>excludeEnd("ctx");
  88169. }),$globals.UnknownVariableError);
  88170. return self;
  88171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88172. }, function($ctx1) {$ctx1.fill(self,"testExternallyUnknownVar",{node:node})});
  88173. //>>excludeEnd("ctx");
  88174. }; }),
  88175. $globals.ScopeVarTest);
  88176. $core.addMethod(
  88177. $core.method({
  88178. selector: "testPseudoVar",
  88179. protocol: "tests",
  88180. //>>excludeStart("ide", pragmas.excludeIdeData);
  88181. args: [],
  88182. source: "testPseudoVar\x0a\x09#('self' 'super' 'true' 'false' 'nil' 'thisContext') do: [ :each |\x0a\x09\x09| binding |\x0a\x09\x09binding := MethodLexicalScope new bindingFor: each.\x0a\x09\x09self deny: binding isAssignable.\x0a\x09\x09self assert: binding isIdempotent ]",
  88183. referencedClasses: ["MethodLexicalScope"],
  88184. //>>excludeEnd("ide");
  88185. pragmas: [],
  88186. messageSends: ["do:", "bindingFor:", "new", "deny:", "isAssignable", "assert:", "isIdempotent"]
  88187. }, function ($methodClass){ return function (){
  88188. var self=this,$self=this;
  88189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88190. return $core.withContext(function($ctx1) {
  88191. //>>excludeEnd("ctx");
  88192. ["self", "super", "true", "false", "nil", "thisContext"]._do_((function(each){
  88193. var binding;
  88194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88195. return $core.withContext(function($ctx2) {
  88196. //>>excludeEnd("ctx");
  88197. binding=$recv($recv($globals.MethodLexicalScope)._new())._bindingFor_(each);
  88198. $self._deny_($recv(binding)._isAssignable());
  88199. return $self._assert_($recv(binding)._isIdempotent());
  88200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88201. }, function($ctx2) {$ctx2.fillBlock({each:each,binding:binding},$ctx1,1)});
  88202. //>>excludeEnd("ctx");
  88203. }));
  88204. return self;
  88205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88206. }, function($ctx1) {$ctx1.fill(self,"testPseudoVar",{})});
  88207. //>>excludeEnd("ctx");
  88208. }; }),
  88209. $globals.ScopeVarTest);
  88210. $core.addMethod(
  88211. $core.method({
  88212. selector: "testSlotVar",
  88213. protocol: "tests",
  88214. //>>excludeStart("ide", pragmas.excludeIdeData);
  88215. args: [],
  88216. source: "testSlotVar\x0a\x09| binding |\x0a\x09binding := MethodLexicalScope new\x0a\x09\x09addSlotVar: 'bzzz';\x0a\x09\x09bindingFor: 'bzzz'.\x0a\x09self assert: binding isAssignable.\x0a\x09self deny: binding isIdempotent.\x0a\x09self assert: (binding alias includesSubString: 'bzzz').\x0a\x09self assert: (binding alias ~= 'bzzz')",
  88217. referencedClasses: ["MethodLexicalScope"],
  88218. //>>excludeEnd("ide");
  88219. pragmas: [],
  88220. messageSends: ["addSlotVar:", "new", "bindingFor:", "assert:", "isAssignable", "deny:", "isIdempotent", "includesSubString:", "alias", "~="]
  88221. }, function ($methodClass){ return function (){
  88222. var self=this,$self=this;
  88223. var binding;
  88224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88225. return $core.withContext(function($ctx1) {
  88226. //>>excludeEnd("ctx");
  88227. var $1;
  88228. $1=$recv($globals.MethodLexicalScope)._new();
  88229. $recv($1)._addSlotVar_("bzzz");
  88230. binding=$recv($1)._bindingFor_("bzzz");
  88231. [$self._assert_($recv(binding)._isAssignable())
  88232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88233. ,$ctx1.sendIdx["assert:"]=1
  88234. //>>excludeEnd("ctx");
  88235. ][0];
  88236. $self._deny_($recv(binding)._isIdempotent());
  88237. [$self._assert_($recv([$recv(binding)._alias()
  88238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88239. ,$ctx1.sendIdx["alias"]=1
  88240. //>>excludeEnd("ctx");
  88241. ][0])._includesSubString_("bzzz"))
  88242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88243. ,$ctx1.sendIdx["assert:"]=2
  88244. //>>excludeEnd("ctx");
  88245. ][0];
  88246. $self._assert_($recv($recv(binding)._alias()).__tild_eq("bzzz"));
  88247. return self;
  88248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88249. }, function($ctx1) {$ctx1.fill(self,"testSlotVar",{binding:binding})});
  88250. //>>excludeEnd("ctx");
  88251. }; }),
  88252. $globals.ScopeVarTest);
  88253. $core.addMethod(
  88254. $core.method({
  88255. selector: "testTempVar",
  88256. protocol: "tests",
  88257. //>>excludeStart("ide", pragmas.excludeIdeData);
  88258. args: [],
  88259. source: "testTempVar\x0a\x09| binding |\x0a\x09binding := MethodLexicalScope new\x0a\x09\x09addTemp: 'bzzz';\x0a\x09\x09bindingFor: 'bzzz'.\x0a\x09self assert: binding isAssignable.\x0a\x09self deny: binding isIdempotent.\x0a\x09self assert: binding alias equals: 'bzzz'",
  88260. referencedClasses: ["MethodLexicalScope"],
  88261. //>>excludeEnd("ide");
  88262. pragmas: [],
  88263. messageSends: ["addTemp:", "new", "bindingFor:", "assert:", "isAssignable", "deny:", "isIdempotent", "assert:equals:", "alias"]
  88264. }, function ($methodClass){ return function (){
  88265. var self=this,$self=this;
  88266. var binding;
  88267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88268. return $core.withContext(function($ctx1) {
  88269. //>>excludeEnd("ctx");
  88270. var $1;
  88271. $1=$recv($globals.MethodLexicalScope)._new();
  88272. $recv($1)._addTemp_("bzzz");
  88273. binding=$recv($1)._bindingFor_("bzzz");
  88274. $self._assert_($recv(binding)._isAssignable());
  88275. $self._deny_($recv(binding)._isIdempotent());
  88276. $self._assert_equals_($recv(binding)._alias(),"bzzz");
  88277. return self;
  88278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88279. }, function($ctx1) {$ctx1.fill(self,"testTempVar",{binding:binding})});
  88280. //>>excludeEnd("ctx");
  88281. }; }),
  88282. $globals.ScopeVarTest);
  88283. $core.addMethod(
  88284. $core.method({
  88285. selector: "testUnknownVar",
  88286. protocol: "tests",
  88287. //>>excludeStart("ide", pragmas.excludeIdeData);
  88288. args: [],
  88289. source: "testUnknownVar\x0a\x09self assert: (MethodLexicalScope new bindingFor: 'bzzz') isNil",
  88290. referencedClasses: ["MethodLexicalScope"],
  88291. //>>excludeEnd("ide");
  88292. pragmas: [],
  88293. messageSends: ["assert:", "isNil", "bindingFor:", "new"]
  88294. }, function ($methodClass){ return function (){
  88295. var self=this,$self=this;
  88296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88297. return $core.withContext(function($ctx1) {
  88298. //>>excludeEnd("ctx");
  88299. $self._assert_($recv($recv($recv($globals.MethodLexicalScope)._new())._bindingFor_("bzzz"))._isNil());
  88300. return self;
  88301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88302. }, function($ctx1) {$ctx1.fill(self,"testUnknownVar",{})});
  88303. //>>excludeEnd("ctx");
  88304. }; }),
  88305. $globals.ScopeVarTest);
  88306. $core.addClass("SemanticAnalyzerTest", $globals.TestCase, "Compiler-Tests");
  88307. $core.setSlots($globals.SemanticAnalyzerTest, ["analyzer"]);
  88308. $core.addMethod(
  88309. $core.method({
  88310. selector: "setUp",
  88311. protocol: "running",
  88312. //>>excludeStart("ide", pragmas.excludeIdeData);
  88313. args: [],
  88314. source: "setUp\x0a\x09analyzer := SemanticAnalyzer on: Object",
  88315. referencedClasses: ["SemanticAnalyzer", "Object"],
  88316. //>>excludeEnd("ide");
  88317. pragmas: [],
  88318. messageSends: ["on:"]
  88319. }, function ($methodClass){ return function (){
  88320. var self=this,$self=this;
  88321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88322. return $core.withContext(function($ctx1) {
  88323. //>>excludeEnd("ctx");
  88324. $self.analyzer=$recv($globals.SemanticAnalyzer)._on_($globals.Object);
  88325. return self;
  88326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88327. }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
  88328. //>>excludeEnd("ctx");
  88329. }; }),
  88330. $globals.SemanticAnalyzerTest);
  88331. $core.addMethod(
  88332. $core.method({
  88333. selector: "testAssignment",
  88334. protocol: "tests",
  88335. //>>excludeStart("ide", pragmas.excludeIdeData);
  88336. args: [],
  88337. source: "testAssignment\x0a\x09| src ast |\x0a\x0a\x09src := 'foo self := 1'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: InvalidAssignmentError",
  88338. referencedClasses: ["Smalltalk", "InvalidAssignmentError"],
  88339. //>>excludeEnd("ide");
  88340. pragmas: [],
  88341. messageSends: ["parse:", "should:raise:", "visit:"]
  88342. }, function ($methodClass){ return function (){
  88343. var self=this,$self=this;
  88344. var src,ast;
  88345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88346. return $core.withContext(function($ctx1) {
  88347. //>>excludeEnd("ctx");
  88348. src="foo self := 1";
  88349. ast=$recv($globals.Smalltalk)._parse_(src);
  88350. $self._should_raise_((function(){
  88351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88352. return $core.withContext(function($ctx2) {
  88353. //>>excludeEnd("ctx");
  88354. return $recv($self.analyzer)._visit_(ast);
  88355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88356. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  88357. //>>excludeEnd("ctx");
  88358. }),$globals.InvalidAssignmentError);
  88359. return self;
  88360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88361. }, function($ctx1) {$ctx1.fill(self,"testAssignment",{src:src,ast:ast})});
  88362. //>>excludeEnd("ctx");
  88363. }; }),
  88364. $globals.SemanticAnalyzerTest);
  88365. $core.addMethod(
  88366. $core.method({
  88367. selector: "testNonLocalReturn",
  88368. protocol: "tests",
  88369. //>>excludeStart("ide", pragmas.excludeIdeData);
  88370. args: [],
  88371. source: "testNonLocalReturn\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. ^ a'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast scope hasNonLocalReturn",
  88372. referencedClasses: ["Smalltalk"],
  88373. //>>excludeEnd("ide");
  88374. pragmas: [],
  88375. messageSends: ["parse:", "visit:", "deny:", "hasNonLocalReturn", "scope"]
  88376. }, function ($methodClass){ return function (){
  88377. var self=this,$self=this;
  88378. var src,ast;
  88379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88380. return $core.withContext(function($ctx1) {
  88381. //>>excludeEnd("ctx");
  88382. src="foo | a | a + 1. ^ a";
  88383. ast=$recv($globals.Smalltalk)._parse_(src);
  88384. $recv($self.analyzer)._visit_(ast);
  88385. $self._deny_($recv($recv(ast)._scope())._hasNonLocalReturn());
  88386. return self;
  88387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88388. }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{src:src,ast:ast})});
  88389. //>>excludeEnd("ctx");
  88390. }; }),
  88391. $globals.SemanticAnalyzerTest);
  88392. $core.addMethod(
  88393. $core.method({
  88394. selector: "testNonLocalReturn2",
  88395. protocol: "tests",
  88396. //>>excludeStart("ide", pragmas.excludeIdeData);
  88397. args: [],
  88398. source: "testNonLocalReturn2\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ ^ a] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self assert: ast scope hasNonLocalReturn",
  88399. referencedClasses: ["Smalltalk"],
  88400. //>>excludeEnd("ide");
  88401. pragmas: [],
  88402. messageSends: ["parse:", "visit:", "assert:", "hasNonLocalReturn", "scope"]
  88403. }, function ($methodClass){ return function (){
  88404. var self=this,$self=this;
  88405. var src,ast;
  88406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88407. return $core.withContext(function($ctx1) {
  88408. //>>excludeEnd("ctx");
  88409. src="foo | a | a + 1. [ [ ^ a] ]";
  88410. ast=$recv($globals.Smalltalk)._parse_(src);
  88411. $recv($self.analyzer)._visit_(ast);
  88412. $self._assert_($recv($recv(ast)._scope())._hasNonLocalReturn());
  88413. return self;
  88414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88415. }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn2",{src:src,ast:ast})});
  88416. //>>excludeEnd("ctx");
  88417. }; }),
  88418. $globals.SemanticAnalyzerTest);
  88419. $core.addMethod(
  88420. $core.method({
  88421. selector: "testScope",
  88422. protocol: "tests",
  88423. //>>excludeStart("ide", pragmas.excludeIdeData);
  88424. args: [],
  88425. source: "testScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ | b | b := a ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast sequenceNode dagChildren last scope == ast scope.",
  88426. referencedClasses: ["Smalltalk"],
  88427. //>>excludeEnd("ide");
  88428. pragmas: [],
  88429. messageSends: ["parse:", "visit:", "deny:", "==", "scope", "last", "dagChildren", "sequenceNode"]
  88430. }, function ($methodClass){ return function (){
  88431. var self=this,$self=this;
  88432. var src,ast;
  88433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88434. return $core.withContext(function($ctx1) {
  88435. //>>excludeEnd("ctx");
  88436. src="foo | a | a + 1. [ | b | b := a ]";
  88437. ast=$recv($globals.Smalltalk)._parse_(src);
  88438. $recv($self.analyzer)._visit_(ast);
  88439. $self._deny_($recv([$recv($recv($recv($recv(ast)._sequenceNode())._dagChildren())._last())._scope()
  88440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88441. ,$ctx1.sendIdx["scope"]=1
  88442. //>>excludeEnd("ctx");
  88443. ][0]).__eq_eq($recv(ast)._scope()));
  88444. return self;
  88445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88446. }, function($ctx1) {$ctx1.fill(self,"testScope",{src:src,ast:ast})});
  88447. //>>excludeEnd("ctx");
  88448. }; }),
  88449. $globals.SemanticAnalyzerTest);
  88450. $core.addMethod(
  88451. $core.method({
  88452. selector: "testScope2",
  88453. protocol: "tests",
  88454. //>>excludeStart("ide", pragmas.excludeIdeData);
  88455. args: [],
  88456. source: "testScope2\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ | b | b := a ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast sequenceNode dagChildren last sequenceNode dagChildren first scope == ast scope.",
  88457. referencedClasses: ["Smalltalk"],
  88458. //>>excludeEnd("ide");
  88459. pragmas: [],
  88460. messageSends: ["parse:", "visit:", "deny:", "==", "scope", "first", "dagChildren", "sequenceNode", "last"]
  88461. }, function ($methodClass){ return function (){
  88462. var self=this,$self=this;
  88463. var src,ast;
  88464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88465. return $core.withContext(function($ctx1) {
  88466. //>>excludeEnd("ctx");
  88467. src="foo | a | a + 1. [ [ | b | b := a ] ]";
  88468. ast=$recv($globals.Smalltalk)._parse_(src);
  88469. $recv($self.analyzer)._visit_(ast);
  88470. $self._deny_($recv([$recv($recv([$recv([$recv($recv($recv($recv(ast)._sequenceNode())._dagChildren())._last())._sequenceNode()
  88471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88472. ,$ctx1.sendIdx["sequenceNode"]=1
  88473. //>>excludeEnd("ctx");
  88474. ][0])._dagChildren()
  88475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88476. ,$ctx1.sendIdx["dagChildren"]=1
  88477. //>>excludeEnd("ctx");
  88478. ][0])._first())._scope()
  88479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88480. ,$ctx1.sendIdx["scope"]=1
  88481. //>>excludeEnd("ctx");
  88482. ][0]).__eq_eq($recv(ast)._scope()));
  88483. return self;
  88484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88485. }, function($ctx1) {$ctx1.fill(self,"testScope2",{src:src,ast:ast})});
  88486. //>>excludeEnd("ctx");
  88487. }; }),
  88488. $globals.SemanticAnalyzerTest);
  88489. $core.addMethod(
  88490. $core.method({
  88491. selector: "testScopeLevel",
  88492. protocol: "tests",
  88493. //>>excludeStart("ide", pragmas.excludeIdeData);
  88494. args: [],
  88495. source: "testScopeLevel\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ | b | b := a ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self assert: ast scope scopeLevel equals: 1.\x0a\x09self assert: ast sequenceNode dagChildren last sequenceNode dagChildren first scope scopeLevel equals: 3",
  88496. referencedClasses: ["Smalltalk"],
  88497. //>>excludeEnd("ide");
  88498. pragmas: [],
  88499. messageSends: ["parse:", "visit:", "assert:equals:", "scopeLevel", "scope", "first", "dagChildren", "sequenceNode", "last"]
  88500. }, function ($methodClass){ return function (){
  88501. var self=this,$self=this;
  88502. var src,ast;
  88503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88504. return $core.withContext(function($ctx1) {
  88505. //>>excludeEnd("ctx");
  88506. src="foo | a | a + 1. [ [ | b | b := a ] ]";
  88507. ast=$recv($globals.Smalltalk)._parse_(src);
  88508. $recv($self.analyzer)._visit_(ast);
  88509. [$self._assert_equals_([$recv([$recv(ast)._scope()
  88510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88511. ,$ctx1.sendIdx["scope"]=1
  88512. //>>excludeEnd("ctx");
  88513. ][0])._scopeLevel()
  88514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88515. ,$ctx1.sendIdx["scopeLevel"]=1
  88516. //>>excludeEnd("ctx");
  88517. ][0],(1))
  88518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88519. ,$ctx1.sendIdx["assert:equals:"]=1
  88520. //>>excludeEnd("ctx");
  88521. ][0];
  88522. $self._assert_equals_($recv($recv($recv([$recv([$recv($recv($recv($recv(ast)._sequenceNode())._dagChildren())._last())._sequenceNode()
  88523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88524. ,$ctx1.sendIdx["sequenceNode"]=1
  88525. //>>excludeEnd("ctx");
  88526. ][0])._dagChildren()
  88527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88528. ,$ctx1.sendIdx["dagChildren"]=1
  88529. //>>excludeEnd("ctx");
  88530. ][0])._first())._scope())._scopeLevel(),(3));
  88531. return self;
  88532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88533. }, function($ctx1) {$ctx1.fill(self,"testScopeLevel",{src:src,ast:ast})});
  88534. //>>excludeEnd("ctx");
  88535. }; }),
  88536. $globals.SemanticAnalyzerTest);
  88537. $core.addMethod(
  88538. $core.method({
  88539. selector: "testUnknownVariables",
  88540. protocol: "tests",
  88541. //>>excludeStart("ide", pragmas.excludeIdeData);
  88542. args: [],
  88543. source: "testUnknownVariables\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | b + a'.\x0a\x09ast := Smalltalk parse: src.\x0a\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
  88544. referencedClasses: ["Smalltalk", "UnknownVariableError"],
  88545. //>>excludeEnd("ide");
  88546. pragmas: [],
  88547. messageSends: ["parse:", "should:raise:", "visit:"]
  88548. }, function ($methodClass){ return function (){
  88549. var self=this,$self=this;
  88550. var src,ast;
  88551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88552. return $core.withContext(function($ctx1) {
  88553. //>>excludeEnd("ctx");
  88554. src="foo | a | b + a";
  88555. ast=$recv($globals.Smalltalk)._parse_(src);
  88556. $self._should_raise_((function(){
  88557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88558. return $core.withContext(function($ctx2) {
  88559. //>>excludeEnd("ctx");
  88560. return $recv($self.analyzer)._visit_(ast);
  88561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88562. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  88563. //>>excludeEnd("ctx");
  88564. }),$globals.UnknownVariableError);
  88565. return self;
  88566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88567. }, function($ctx1) {$ctx1.fill(self,"testUnknownVariables",{src:src,ast:ast})});
  88568. //>>excludeEnd("ctx");
  88569. }; }),
  88570. $globals.SemanticAnalyzerTest);
  88571. $core.addMethod(
  88572. $core.method({
  88573. selector: "testUnknownVariablesWithScope",
  88574. protocol: "tests",
  88575. //>>excludeStart("ide", pragmas.excludeIdeData);
  88576. args: [],
  88577. source: "testUnknownVariablesWithScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a b | [ c + 1. [ a + 1. d + 1 ]]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09\x0a\x09self should: [ analyzer visit: ast ] raise: UnknownVariableError",
  88578. referencedClasses: ["Smalltalk", "UnknownVariableError"],
  88579. //>>excludeEnd("ide");
  88580. pragmas: [],
  88581. messageSends: ["parse:", "should:raise:", "visit:"]
  88582. }, function ($methodClass){ return function (){
  88583. var self=this,$self=this;
  88584. var src,ast;
  88585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88586. return $core.withContext(function($ctx1) {
  88587. //>>excludeEnd("ctx");
  88588. src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
  88589. ast=$recv($globals.Smalltalk)._parse_(src);
  88590. $self._should_raise_((function(){
  88591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88592. return $core.withContext(function($ctx2) {
  88593. //>>excludeEnd("ctx");
  88594. return $recv($self.analyzer)._visit_(ast);
  88595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88596. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  88597. //>>excludeEnd("ctx");
  88598. }),$globals.UnknownVariableError);
  88599. return self;
  88600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88601. }, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope",{src:src,ast:ast})});
  88602. //>>excludeEnd("ctx");
  88603. }; }),
  88604. $globals.SemanticAnalyzerTest);
  88605. $core.addMethod(
  88606. $core.method({
  88607. selector: "testVariableShadowing",
  88608. protocol: "tests",
  88609. //>>excludeStart("ide", pragmas.excludeIdeData);
  88610. args: [],
  88611. source: "testVariableShadowing\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
  88612. referencedClasses: ["Smalltalk"],
  88613. //>>excludeEnd("ide");
  88614. pragmas: [],
  88615. messageSends: ["parse:", "visit:"]
  88616. }, function ($methodClass){ return function (){
  88617. var self=this,$self=this;
  88618. var src,ast;
  88619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88620. return $core.withContext(function($ctx1) {
  88621. //>>excludeEnd("ctx");
  88622. src="foo | a | a + 1";
  88623. ast=$recv($globals.Smalltalk)._parse_(src);
  88624. $recv($self.analyzer)._visit_(ast);
  88625. return self;
  88626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88627. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing",{src:src,ast:ast})});
  88628. //>>excludeEnd("ctx");
  88629. }; }),
  88630. $globals.SemanticAnalyzerTest);
  88631. $core.addMethod(
  88632. $core.method({
  88633. selector: "testVariableShadowing2",
  88634. protocol: "tests",
  88635. //>>excludeStart("ide", pragmas.excludeIdeData);
  88636. args: [],
  88637. source: "testVariableShadowing2\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | a | a := 2 ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
  88638. referencedClasses: ["Smalltalk", "ShadowingVariableError"],
  88639. //>>excludeEnd("ide");
  88640. pragmas: [],
  88641. messageSends: ["parse:", "should:raise:", "visit:"]
  88642. }, function ($methodClass){ return function (){
  88643. var self=this,$self=this;
  88644. var src,ast;
  88645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88646. return $core.withContext(function($ctx1) {
  88647. //>>excludeEnd("ctx");
  88648. src="foo | a | a + 1. [ | a | a := 2 ]";
  88649. ast=$recv($globals.Smalltalk)._parse_(src);
  88650. $self._should_raise_((function(){
  88651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88652. return $core.withContext(function($ctx2) {
  88653. //>>excludeEnd("ctx");
  88654. return $recv($self.analyzer)._visit_(ast);
  88655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88656. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  88657. //>>excludeEnd("ctx");
  88658. }),$globals.ShadowingVariableError);
  88659. return self;
  88660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88661. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2",{src:src,ast:ast})});
  88662. //>>excludeEnd("ctx");
  88663. }; }),
  88664. $globals.SemanticAnalyzerTest);
  88665. $core.addMethod(
  88666. $core.method({
  88667. selector: "testVariableShadowing3",
  88668. protocol: "tests",
  88669. //>>excludeStart("ide", pragmas.excludeIdeData);
  88670. args: [],
  88671. source: "testVariableShadowing3\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | b | b := 2 ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
  88672. referencedClasses: ["Smalltalk"],
  88673. //>>excludeEnd("ide");
  88674. pragmas: [],
  88675. messageSends: ["parse:", "visit:"]
  88676. }, function ($methodClass){ return function (){
  88677. var self=this,$self=this;
  88678. var src,ast;
  88679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88680. return $core.withContext(function($ctx1) {
  88681. //>>excludeEnd("ctx");
  88682. src="foo | a | a + 1. [ | b | b := 2 ]";
  88683. ast=$recv($globals.Smalltalk)._parse_(src);
  88684. $recv($self.analyzer)._visit_(ast);
  88685. return self;
  88686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88687. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3",{src:src,ast:ast})});
  88688. //>>excludeEnd("ctx");
  88689. }; }),
  88690. $globals.SemanticAnalyzerTest);
  88691. $core.addMethod(
  88692. $core.method({
  88693. selector: "testVariableShadowing4",
  88694. protocol: "tests",
  88695. //>>excludeStart("ide", pragmas.excludeIdeData);
  88696. args: [],
  88697. source: "testVariableShadowing4\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
  88698. referencedClasses: ["Smalltalk"],
  88699. //>>excludeEnd("ide");
  88700. pragmas: [],
  88701. messageSends: ["parse:", "visit:"]
  88702. }, function ($methodClass){ return function (){
  88703. var self=this,$self=this;
  88704. var src,ast;
  88705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88706. return $core.withContext(function($ctx1) {
  88707. //>>excludeEnd("ctx");
  88708. src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
  88709. ast=$recv($globals.Smalltalk)._parse_(src);
  88710. $recv($self.analyzer)._visit_(ast);
  88711. return self;
  88712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88713. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4",{src:src,ast:ast})});
  88714. //>>excludeEnd("ctx");
  88715. }; }),
  88716. $globals.SemanticAnalyzerTest);
  88717. $core.addMethod(
  88718. $core.method({
  88719. selector: "testVariableShadowing5",
  88720. protocol: "tests",
  88721. //>>excludeStart("ide", pragmas.excludeIdeData);
  88722. args: [],
  88723. source: "testVariableShadowing5\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09self should: [analyzer visit: ast] raise: ShadowingVariableError",
  88724. referencedClasses: ["Smalltalk", "ShadowingVariableError"],
  88725. //>>excludeEnd("ide");
  88726. pragmas: [],
  88727. messageSends: ["parse:", "should:raise:", "visit:"]
  88728. }, function ($methodClass){ return function (){
  88729. var self=this,$self=this;
  88730. var src,ast;
  88731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88732. return $core.withContext(function($ctx1) {
  88733. //>>excludeEnd("ctx");
  88734. src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
  88735. ast=$recv($globals.Smalltalk)._parse_(src);
  88736. $self._should_raise_((function(){
  88737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88738. return $core.withContext(function($ctx2) {
  88739. //>>excludeEnd("ctx");
  88740. return $recv($self.analyzer)._visit_(ast);
  88741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88742. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  88743. //>>excludeEnd("ctx");
  88744. }),$globals.ShadowingVariableError);
  88745. return self;
  88746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88747. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5",{src:src,ast:ast})});
  88748. //>>excludeEnd("ctx");
  88749. }; }),
  88750. $globals.SemanticAnalyzerTest);
  88751. $core.addMethod(
  88752. $core.method({
  88753. selector: "testVariablesLookup",
  88754. protocol: "tests",
  88755. //>>excludeStart("ide", pragmas.excludeIdeData);
  88756. args: [],
  88757. source: "testVariablesLookup\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ | b | b := a ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09\x22Binding for `a` in the message send\x22\x0a\x09self assert: ast sequenceNode dagChildren first receiver binding isAssignable.\x0a\x09self assert: ast sequenceNode dagChildren first receiver binding alias equals: 'a'.\x0a\x09self assert: ast sequenceNode dagChildren first receiver binding scope == ast scope.\x0a\x0a\x09\x22Binding for `b`\x22\x0a\x09self assert: ast sequenceNode dagChildren last sequenceNode dagChildren first left binding isAssignable.\x0a\x09self assert: ast sequenceNode dagChildren last sequenceNode dagChildren first left binding alias equals: 'b'.\x0a\x09self assert: ast sequenceNode dagChildren last sequenceNode dagChildren first left binding scope == ast sequenceNode dagChildren last scope.",
  88758. referencedClasses: ["Smalltalk"],
  88759. //>>excludeEnd("ide");
  88760. pragmas: [],
  88761. messageSends: ["parse:", "visit:", "assert:", "isAssignable", "binding", "receiver", "first", "dagChildren", "sequenceNode", "assert:equals:", "alias", "==", "scope", "left", "last"]
  88762. }, function ($methodClass){ return function (){
  88763. var self=this,$self=this;
  88764. var src,ast;
  88765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88766. return $core.withContext(function($ctx1) {
  88767. //>>excludeEnd("ctx");
  88768. src="foo | a | a + 1. [ | b | b := a ]";
  88769. ast=$recv($globals.Smalltalk)._parse_(src);
  88770. $recv($self.analyzer)._visit_(ast);
  88771. [$self._assert_([$recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
  88772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88773. ,$ctx1.sendIdx["sequenceNode"]=1
  88774. //>>excludeEnd("ctx");
  88775. ][0])._dagChildren()
  88776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88777. ,$ctx1.sendIdx["dagChildren"]=1
  88778. //>>excludeEnd("ctx");
  88779. ][0])._first()
  88780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88781. ,$ctx1.sendIdx["first"]=1
  88782. //>>excludeEnd("ctx");
  88783. ][0])._receiver()
  88784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88785. ,$ctx1.sendIdx["receiver"]=1
  88786. //>>excludeEnd("ctx");
  88787. ][0])._binding()
  88788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88789. ,$ctx1.sendIdx["binding"]=1
  88790. //>>excludeEnd("ctx");
  88791. ][0])._isAssignable()
  88792. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88793. ,$ctx1.sendIdx["isAssignable"]=1
  88794. //>>excludeEnd("ctx");
  88795. ][0])
  88796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88797. ,$ctx1.sendIdx["assert:"]=1
  88798. //>>excludeEnd("ctx");
  88799. ][0];
  88800. [$self._assert_equals_([$recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
  88801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88802. ,$ctx1.sendIdx["sequenceNode"]=2
  88803. //>>excludeEnd("ctx");
  88804. ][0])._dagChildren()
  88805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88806. ,$ctx1.sendIdx["dagChildren"]=2
  88807. //>>excludeEnd("ctx");
  88808. ][0])._first()
  88809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88810. ,$ctx1.sendIdx["first"]=2
  88811. //>>excludeEnd("ctx");
  88812. ][0])._receiver()
  88813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88814. ,$ctx1.sendIdx["receiver"]=2
  88815. //>>excludeEnd("ctx");
  88816. ][0])._binding()
  88817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88818. ,$ctx1.sendIdx["binding"]=2
  88819. //>>excludeEnd("ctx");
  88820. ][0])._alias()
  88821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88822. ,$ctx1.sendIdx["alias"]=1
  88823. //>>excludeEnd("ctx");
  88824. ][0],"a")
  88825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88826. ,$ctx1.sendIdx["assert:equals:"]=1
  88827. //>>excludeEnd("ctx");
  88828. ][0];
  88829. [$self._assert_([$recv([$recv([$recv($recv([$recv([$recv([$recv(ast)._sequenceNode()
  88830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88831. ,$ctx1.sendIdx["sequenceNode"]=3
  88832. //>>excludeEnd("ctx");
  88833. ][0])._dagChildren()
  88834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88835. ,$ctx1.sendIdx["dagChildren"]=3
  88836. //>>excludeEnd("ctx");
  88837. ][0])._first()
  88838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88839. ,$ctx1.sendIdx["first"]=3
  88840. //>>excludeEnd("ctx");
  88841. ][0])._receiver())._binding()
  88842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88843. ,$ctx1.sendIdx["binding"]=3
  88844. //>>excludeEnd("ctx");
  88845. ][0])._scope()
  88846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88847. ,$ctx1.sendIdx["scope"]=1
  88848. //>>excludeEnd("ctx");
  88849. ][0]).__eq_eq([$recv(ast)._scope()
  88850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88851. ,$ctx1.sendIdx["scope"]=2
  88852. //>>excludeEnd("ctx");
  88853. ][0])
  88854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88855. ,$ctx1.sendIdx["=="]=1
  88856. //>>excludeEnd("ctx");
  88857. ][0])
  88858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88859. ,$ctx1.sendIdx["assert:"]=2
  88860. //>>excludeEnd("ctx");
  88861. ][0];
  88862. [$self._assert_($recv([$recv([$recv([$recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
  88863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88864. ,$ctx1.sendIdx["sequenceNode"]=5
  88865. //>>excludeEnd("ctx");
  88866. ][0])._dagChildren()
  88867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88868. ,$ctx1.sendIdx["dagChildren"]=5
  88869. //>>excludeEnd("ctx");
  88870. ][0])._last()
  88871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88872. ,$ctx1.sendIdx["last"]=1
  88873. //>>excludeEnd("ctx");
  88874. ][0])._sequenceNode()
  88875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88876. ,$ctx1.sendIdx["sequenceNode"]=4
  88877. //>>excludeEnd("ctx");
  88878. ][0])._dagChildren()
  88879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88880. ,$ctx1.sendIdx["dagChildren"]=4
  88881. //>>excludeEnd("ctx");
  88882. ][0])._first()
  88883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88884. ,$ctx1.sendIdx["first"]=4
  88885. //>>excludeEnd("ctx");
  88886. ][0])._left()
  88887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88888. ,$ctx1.sendIdx["left"]=1
  88889. //>>excludeEnd("ctx");
  88890. ][0])._binding()
  88891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88892. ,$ctx1.sendIdx["binding"]=4
  88893. //>>excludeEnd("ctx");
  88894. ][0])._isAssignable())
  88895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88896. ,$ctx1.sendIdx["assert:"]=3
  88897. //>>excludeEnd("ctx");
  88898. ][0];
  88899. $self._assert_equals_($recv([$recv([$recv([$recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
  88900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88901. ,$ctx1.sendIdx["sequenceNode"]=7
  88902. //>>excludeEnd("ctx");
  88903. ][0])._dagChildren()
  88904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88905. ,$ctx1.sendIdx["dagChildren"]=7
  88906. //>>excludeEnd("ctx");
  88907. ][0])._last()
  88908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88909. ,$ctx1.sendIdx["last"]=2
  88910. //>>excludeEnd("ctx");
  88911. ][0])._sequenceNode()
  88912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88913. ,$ctx1.sendIdx["sequenceNode"]=6
  88914. //>>excludeEnd("ctx");
  88915. ][0])._dagChildren()
  88916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88917. ,$ctx1.sendIdx["dagChildren"]=6
  88918. //>>excludeEnd("ctx");
  88919. ][0])._first()
  88920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88921. ,$ctx1.sendIdx["first"]=5
  88922. //>>excludeEnd("ctx");
  88923. ][0])._left()
  88924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88925. ,$ctx1.sendIdx["left"]=2
  88926. //>>excludeEnd("ctx");
  88927. ][0])._binding()
  88928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88929. ,$ctx1.sendIdx["binding"]=5
  88930. //>>excludeEnd("ctx");
  88931. ][0])._alias(),"b");
  88932. $self._assert_($recv([$recv($recv($recv($recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
  88933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88934. ,$ctx1.sendIdx["sequenceNode"]=9
  88935. //>>excludeEnd("ctx");
  88936. ][0])._dagChildren()
  88937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88938. ,$ctx1.sendIdx["dagChildren"]=9
  88939. //>>excludeEnd("ctx");
  88940. ][0])._last()
  88941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88942. ,$ctx1.sendIdx["last"]=3
  88943. //>>excludeEnd("ctx");
  88944. ][0])._sequenceNode()
  88945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88946. ,$ctx1.sendIdx["sequenceNode"]=8
  88947. //>>excludeEnd("ctx");
  88948. ][0])._dagChildren()
  88949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88950. ,$ctx1.sendIdx["dagChildren"]=8
  88951. //>>excludeEnd("ctx");
  88952. ][0])._first())._left())._binding())._scope()
  88953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88954. ,$ctx1.sendIdx["scope"]=3
  88955. //>>excludeEnd("ctx");
  88956. ][0]).__eq_eq($recv($recv($recv($recv(ast)._sequenceNode())._dagChildren())._last())._scope()));
  88957. return self;
  88958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88959. }, function($ctx1) {$ctx1.fill(self,"testVariablesLookup",{src:src,ast:ast})});
  88960. //>>excludeEnd("ctx");
  88961. }; }),
  88962. $globals.SemanticAnalyzerTest);
  88963. $core.addClass("AISemanticAnalyzerTest", $globals.SemanticAnalyzerTest, "Compiler-Tests");
  88964. $core.addMethod(
  88965. $core.method({
  88966. selector: "setUp",
  88967. protocol: "running",
  88968. //>>excludeStart("ide", pragmas.excludeIdeData);
  88969. args: [],
  88970. source: "setUp\x0a\x09analyzer := (AISemanticAnalyzer on: Object)\x0a\x09\x09context: (AIContext new\x0a\x09\x09\x09defineLocal: 'local';\x0a\x09\x09\x09localAt: 'local' put: 3;\x0a\x09\x09\x09yourself);\x0a\x09\x09yourself",
  88971. referencedClasses: ["AISemanticAnalyzer", "Object", "AIContext"],
  88972. //>>excludeEnd("ide");
  88973. pragmas: [],
  88974. messageSends: ["context:", "on:", "defineLocal:", "new", "localAt:put:", "yourself"]
  88975. }, function ($methodClass){ return function (){
  88976. var self=this,$self=this;
  88977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88978. return $core.withContext(function($ctx1) {
  88979. //>>excludeEnd("ctx");
  88980. var $1,$2;
  88981. $1=$recv($globals.AISemanticAnalyzer)._on_($globals.Object);
  88982. $2=$recv($globals.AIContext)._new();
  88983. $recv($2)._defineLocal_("local");
  88984. $recv($2)._localAt_put_("local",(3));
  88985. $recv($1)._context_([$recv($2)._yourself()
  88986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88987. ,$ctx1.sendIdx["yourself"]=1
  88988. //>>excludeEnd("ctx");
  88989. ][0]);
  88990. $self.analyzer=$recv($1)._yourself();
  88991. return self;
  88992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88993. }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
  88994. //>>excludeEnd("ctx");
  88995. }; }),
  88996. $globals.AISemanticAnalyzerTest);
  88997. $core.addMethod(
  88998. $core.method({
  88999. selector: "testContextVariables",
  89000. protocol: "tests",
  89001. //>>excludeStart("ide", pragmas.excludeIdeData);
  89002. args: [],
  89003. source: "testContextVariables\x0a\x09| src ast |\x0a\x09\x0a\x09src := 'foo | a | local + a'.\x0a\x09ast := Smalltalk parse: src.\x0a\x0a\x09self shouldnt: [ analyzer visit: ast ] raise: UnknownVariableError",
  89004. referencedClasses: ["Smalltalk", "UnknownVariableError"],
  89005. //>>excludeEnd("ide");
  89006. pragmas: [],
  89007. messageSends: ["parse:", "shouldnt:raise:", "visit:"]
  89008. }, function ($methodClass){ return function (){
  89009. var self=this,$self=this;
  89010. var src,ast;
  89011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89012. return $core.withContext(function($ctx1) {
  89013. //>>excludeEnd("ctx");
  89014. src="foo | a | local + a";
  89015. ast=$recv($globals.Smalltalk)._parse_(src);
  89016. $self._shouldnt_raise_((function(){
  89017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89018. return $core.withContext(function($ctx2) {
  89019. //>>excludeEnd("ctx");
  89020. return $recv($self.analyzer)._visit_(ast);
  89021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89022. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89023. //>>excludeEnd("ctx");
  89024. }),$globals.UnknownVariableError);
  89025. return self;
  89026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89027. }, function($ctx1) {$ctx1.fill(self,"testContextVariables",{src:src,ast:ast})});
  89028. //>>excludeEnd("ctx");
  89029. }; }),
  89030. $globals.AISemanticAnalyzerTest);
  89031. $core.addTrait("TASTCompilingTest", "Compiler-Tests");
  89032. $core.addMethod(
  89033. $core.method({
  89034. selector: "codeGeneratorClass",
  89035. protocol: "accessing",
  89036. //>>excludeStart("ide", pragmas.excludeIdeData);
  89037. args: [],
  89038. source: "codeGeneratorClass\x0a\x09self subclassResponsibility",
  89039. referencedClasses: [],
  89040. //>>excludeEnd("ide");
  89041. pragmas: [],
  89042. messageSends: ["subclassResponsibility"]
  89043. }, function ($methodClass){ return function (){
  89044. var self=this,$self=this;
  89045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89046. return $core.withContext(function($ctx1) {
  89047. //>>excludeEnd("ctx");
  89048. $self._subclassResponsibility();
  89049. return self;
  89050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89051. }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{})});
  89052. //>>excludeEnd("ctx");
  89053. }; }),
  89054. $globals.TASTCompilingTest);
  89055. $core.addMethod(
  89056. $core.method({
  89057. selector: "compiler",
  89058. protocol: "factory",
  89059. //>>excludeStart("ide", pragmas.excludeIdeData);
  89060. args: [],
  89061. source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself",
  89062. referencedClasses: ["Compiler"],
  89063. //>>excludeEnd("ide");
  89064. pragmas: [],
  89065. messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]
  89066. }, function ($methodClass){ return function (){
  89067. var self=this,$self=this;
  89068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89069. return $core.withContext(function($ctx1) {
  89070. //>>excludeEnd("ctx");
  89071. var $1;
  89072. $1=$recv($globals.Compiler)._new();
  89073. $recv($1)._codeGeneratorClass_($self._codeGeneratorClass());
  89074. return $recv($1)._yourself();
  89075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89076. }, function($ctx1) {$ctx1.fill(self,"compiler",{})});
  89077. //>>excludeEnd("ctx");
  89078. }; }),
  89079. $globals.TASTCompilingTest);
  89080. $core.addMethod(
  89081. $core.method({
  89082. selector: "install:forClass:",
  89083. protocol: "compiling",
  89084. //>>excludeStart("ide", pragmas.excludeIdeData);
  89085. args: ["aString", "aClass"],
  89086. source: "install: aString forClass: aClass\x0a\x09^ self compiler\x0a\x09\x09install: aString\x0a\x09\x09forClass: aClass\x0a\x09\x09protocol: 'tests'",
  89087. referencedClasses: [],
  89088. //>>excludeEnd("ide");
  89089. pragmas: [],
  89090. messageSends: ["install:forClass:protocol:", "compiler"]
  89091. }, function ($methodClass){ return function (aString,aClass){
  89092. var self=this,$self=this;
  89093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89094. return $core.withContext(function($ctx1) {
  89095. //>>excludeEnd("ctx");
  89096. return $recv($self._compiler())._install_forClass_protocol_(aString,aClass,"tests");
  89097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89098. }, function($ctx1) {$ctx1.fill(self,"install:forClass:",{aString:aString,aClass:aClass})});
  89099. //>>excludeEnd("ctx");
  89100. }; }),
  89101. $globals.TASTCompilingTest);
  89102. $core.addMethod(
  89103. $core.method({
  89104. selector: "while:inClass:should:",
  89105. protocol: "testing",
  89106. //>>excludeStart("ide", pragmas.excludeIdeData);
  89107. args: ["aString", "aClass", "aBlock"],
  89108. source: "while: aString inClass: aClass should: aBlock\x0a\x09| method |\x0a\x0a\x09[\x0a\x09\x09method := self install: aString forClass: aClass.\x0a\x09\x09aBlock value: method ]\x0a\x09ensure: [ method ifNotNil: [ aClass removeCompiledMethod: method ] ]",
  89109. referencedClasses: [],
  89110. //>>excludeEnd("ide");
  89111. pragmas: [],
  89112. messageSends: ["ensure:", "install:forClass:", "value:", "ifNotNil:", "removeCompiledMethod:"]
  89113. }, function ($methodClass){ return function (aString,aClass,aBlock){
  89114. var self=this,$self=this;
  89115. var method;
  89116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89117. return $core.withContext(function($ctx1) {
  89118. //>>excludeEnd("ctx");
  89119. var $1;
  89120. $recv((function(){
  89121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89122. return $core.withContext(function($ctx2) {
  89123. //>>excludeEnd("ctx");
  89124. method=$self._install_forClass_(aString,aClass);
  89125. return $recv(aBlock)._value_(method);
  89126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89127. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89128. //>>excludeEnd("ctx");
  89129. }))._ensure_((function(){
  89130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89131. return $core.withContext(function($ctx2) {
  89132. //>>excludeEnd("ctx");
  89133. $1=method;
  89134. if($1 == null || $1.a$nil){
  89135. return $1;
  89136. } else {
  89137. return $recv(aClass)._removeCompiledMethod_(method);
  89138. }
  89139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89140. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  89141. //>>excludeEnd("ctx");
  89142. }));
  89143. return self;
  89144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89145. }, function($ctx1) {$ctx1.fill(self,"while:inClass:should:",{aString:aString,aClass:aClass,aBlock:aBlock,method:method})});
  89146. //>>excludeEnd("ctx");
  89147. }; }),
  89148. $globals.TASTCompilingTest);
  89149. $core.addMethod(
  89150. $core.method({
  89151. selector: "while:should:",
  89152. protocol: "testing",
  89153. //>>excludeStart("ide", pragmas.excludeIdeData);
  89154. args: ["aString", "aBlock"],
  89155. source: "while: aString should: aBlock\x0a\x09self while: aString inClass: self receiver class should: aBlock",
  89156. referencedClasses: [],
  89157. //>>excludeEnd("ide");
  89158. pragmas: [],
  89159. messageSends: ["while:inClass:should:", "class", "receiver"]
  89160. }, function ($methodClass){ return function (aString,aBlock){
  89161. var self=this,$self=this;
  89162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89163. return $core.withContext(function($ctx1) {
  89164. //>>excludeEnd("ctx");
  89165. $self._while_inClass_should_(aString,$recv($self._receiver())._class(),aBlock);
  89166. return self;
  89167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89168. }, function($ctx1) {$ctx1.fill(self,"while:should:",{aString:aString,aBlock:aBlock})});
  89169. //>>excludeEnd("ctx");
  89170. }; }),
  89171. $globals.TASTCompilingTest);
  89172. $core.addTrait("TASTParsingTest", "Compiler-Tests");
  89173. $core.addMethod(
  89174. $core.method({
  89175. selector: "parse:forClass:",
  89176. protocol: "parsing",
  89177. //>>excludeStart("ide", pragmas.excludeIdeData);
  89178. args: ["aString", "aClass"],
  89179. source: "parse: aString forClass: aClass\x0a\x09^ Compiler new\x0a\x09\x09ast: aString\x0a\x09\x09forClass: aClass\x0a\x09\x09protocol: 'test'",
  89180. referencedClasses: ["Compiler"],
  89181. //>>excludeEnd("ide");
  89182. pragmas: [],
  89183. messageSends: ["ast:forClass:protocol:", "new"]
  89184. }, function ($methodClass){ return function (aString,aClass){
  89185. var self=this,$self=this;
  89186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89187. return $core.withContext(function($ctx1) {
  89188. //>>excludeEnd("ctx");
  89189. return $recv($recv($globals.Compiler)._new())._ast_forClass_protocol_(aString,aClass,"test");
  89190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89191. }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass})});
  89192. //>>excludeEnd("ctx");
  89193. }; }),
  89194. $globals.TASTParsingTest);
  89195. $core.addTrait("TCTDebugged", "Compiler-Tests");
  89196. $core.addMethod(
  89197. $core.method({
  89198. selector: "interpret:forClass:receiver:withArguments:",
  89199. protocol: "private",
  89200. //>>excludeStart("ide", pragmas.excludeIdeData);
  89201. args: ["aString", "aClass", "anObject", "aDictionary"],
  89202. source: "interpret: aString forClass: aClass receiver: anObject withArguments: aDictionary\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a\x09\x0a\x09| ctx |\x0a\x09\x0a\x09ctx := self prepareContextFor: aString class: aClass receiver: anObject withArguments: aDictionary.\x0a\x09\x0a\x09^ (ASTDebugger context: ctx) proceed; result",
  89203. referencedClasses: ["ASTDebugger"],
  89204. //>>excludeEnd("ide");
  89205. pragmas: [],
  89206. messageSends: ["prepareContextFor:class:receiver:withArguments:", "proceed", "context:", "result"]
  89207. }, function ($methodClass){ return function (aString,aClass,anObject,aDictionary){
  89208. var self=this,$self=this;
  89209. var ctx;
  89210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89211. return $core.withContext(function($ctx1) {
  89212. //>>excludeEnd("ctx");
  89213. var $1;
  89214. ctx=$self._prepareContextFor_class_receiver_withArguments_(aString,aClass,anObject,aDictionary);
  89215. $1=$recv($globals.ASTDebugger)._context_(ctx);
  89216. $recv($1)._proceed();
  89217. return $recv($1)._result();
  89218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89219. }, function($ctx1) {$ctx1.fill(self,"interpret:forClass:receiver:withArguments:",{aString:aString,aClass:aClass,anObject:anObject,aDictionary:aDictionary,ctx:ctx})});
  89220. //>>excludeEnd("ctx");
  89221. }; }),
  89222. $globals.TCTDebugged);
  89223. $core.addTrait("TCTExecuted", "Compiler-Tests");
  89224. $core.addMethod(
  89225. $core.method({
  89226. selector: "while:inClass:should:",
  89227. protocol: "testing",
  89228. //>>excludeStart("ide", pragmas.excludeIdeData);
  89229. args: ["aString", "aClass", "aBlock"],
  89230. source: "while: aString inClass: aClass should: aBlock\x0a\x09super\x0a\x09\x09while: aString\x0a\x09\x09inClass: aClass\x0a\x09\x09should: [ :method | aBlock value: [\x0a\x09\x09\x09self receiver perform: method selector withArguments: self arguments ] ]",
  89231. referencedClasses: [],
  89232. //>>excludeEnd("ide");
  89233. pragmas: [],
  89234. messageSends: ["while:inClass:should:", "value:", "perform:withArguments:", "receiver", "selector", "arguments"]
  89235. }, function ($methodClass){ return function (aString,aClass,aBlock){
  89236. var self=this,$self=this;
  89237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89238. return $core.withContext(function($ctx1) {
  89239. //>>excludeEnd("ctx");
  89240. [(
  89241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89242. $ctx1.supercall = true,
  89243. //>>excludeEnd("ctx");
  89244. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._while_inClass_should_.call($self,aString,aClass,(function(method){
  89245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89246. return $core.withContext(function($ctx2) {
  89247. //>>excludeEnd("ctx");
  89248. return $recv(aBlock)._value_((function(){
  89249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89250. return $core.withContext(function($ctx3) {
  89251. //>>excludeEnd("ctx");
  89252. return $recv($self._receiver())._perform_withArguments_($recv(method)._selector(),$self._arguments());
  89253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89254. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  89255. //>>excludeEnd("ctx");
  89256. }));
  89257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89258. }, function($ctx2) {$ctx2.fillBlock({method:method},$ctx1,1)});
  89259. //>>excludeEnd("ctx");
  89260. })))
  89261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89262. ,$ctx1.supercall = false
  89263. //>>excludeEnd("ctx");
  89264. ][0];
  89265. return self;
  89266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89267. }, function($ctx1) {$ctx1.fill(self,"while:inClass:should:",{aString:aString,aClass:aClass,aBlock:aBlock})});
  89268. //>>excludeEnd("ctx");
  89269. }; }),
  89270. $globals.TCTExecuted);
  89271. $core.addTrait("TCTInlined", "Compiler-Tests");
  89272. $core.addMethod(
  89273. $core.method({
  89274. selector: "codeGeneratorClass",
  89275. protocol: "accessing",
  89276. //>>excludeStart("ide", pragmas.excludeIdeData);
  89277. args: [],
  89278. source: "codeGeneratorClass\x0a\x09^ InliningCodeGenerator",
  89279. referencedClasses: ["InliningCodeGenerator"],
  89280. //>>excludeEnd("ide");
  89281. pragmas: [],
  89282. messageSends: []
  89283. }, function ($methodClass){ return function (){
  89284. var self=this,$self=this;
  89285. return $globals.InliningCodeGenerator;
  89286. }; }),
  89287. $globals.TCTInlined);
  89288. $core.addTrait("TCTInterpreted", "Compiler-Tests");
  89289. $core.addMethod(
  89290. $core.method({
  89291. selector: "interpret:forClass:receiver:withArguments:",
  89292. protocol: "private",
  89293. //>>excludeStart("ide", pragmas.excludeIdeData);
  89294. args: ["aString", "aClass", "anObject", "aDictionary"],
  89295. source: "interpret: aString forClass: aClass receiver: anObject withArguments: aDictionary\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a\x09\x0a\x09| ctx |\x0a\x09\x0a\x09ctx := self prepareContextFor: aString class: aClass receiver: anObject withArguments: aDictionary.\x0a\x09\x0a\x09^ ctx interpreter proceed; result",
  89296. referencedClasses: [],
  89297. //>>excludeEnd("ide");
  89298. pragmas: [],
  89299. messageSends: ["prepareContextFor:class:receiver:withArguments:", "proceed", "interpreter", "result"]
  89300. }, function ($methodClass){ return function (aString,aClass,anObject,aDictionary){
  89301. var self=this,$self=this;
  89302. var ctx;
  89303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89304. return $core.withContext(function($ctx1) {
  89305. //>>excludeEnd("ctx");
  89306. var $1;
  89307. ctx=$self._prepareContextFor_class_receiver_withArguments_(aString,aClass,anObject,aDictionary);
  89308. $1=$recv(ctx)._interpreter();
  89309. $recv($1)._proceed();
  89310. return $recv($1)._result();
  89311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89312. }, function($ctx1) {$ctx1.fill(self,"interpret:forClass:receiver:withArguments:",{aString:aString,aClass:aClass,anObject:anObject,aDictionary:aDictionary,ctx:ctx})});
  89313. //>>excludeEnd("ctx");
  89314. }; }),
  89315. $globals.TCTInterpreted);
  89316. $core.addMethod(
  89317. $core.method({
  89318. selector: "prepareContextFor:class:receiver:withArguments:",
  89319. protocol: "private",
  89320. //>>excludeStart("ide", pragmas.excludeIdeData);
  89321. args: ["aString", "aClass", "anObject", "anArray"],
  89322. source: "prepareContextFor: aString class: aClass receiver: anObject withArguments: anArray\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a\x09\x0a\x09| ctx ast |\x0a\x09\x0a\x09ast := self parse: aString forClass: aClass.\x0a\x09\x0a\x09ctx := AIContext new\x0a\x09\x09receiver: anObject;\x0a\x09\x09selector: ast selector;\x0a\x09\x09interpreter: ASTInterpreter new;\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09\x22Define locals for the context\x22\x0a\x09ast sequenceNode ifNotNil: [ :sequence |\x0a\x09\x09sequence temps do: [ :each |\x0a\x09\x09\x09ctx defineLocal: each ] ].\x0a\x0a\x09ast arguments with: anArray do: [ :key :value |\x0a\x09\x09ctx defineLocal: key; localAt: key put: value ].\x0a\x09\x0a\x09ctx interpreter\x0a\x09\x09context: ctx;\x0a\x09\x09node: ast;\x0a\x09\x09enterNode.\x0a\x09\x0a\x09^ctx",
  89323. referencedClasses: ["AIContext", "ASTInterpreter"],
  89324. //>>excludeEnd("ide");
  89325. pragmas: [],
  89326. messageSends: ["parse:forClass:", "receiver:", "new", "selector:", "selector", "interpreter:", "yourself", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "with:do:", "arguments", "localAt:put:", "context:", "interpreter", "node:", "enterNode"]
  89327. }, function ($methodClass){ return function (aString,aClass,anObject,anArray){
  89328. var self=this,$self=this;
  89329. var ctx,ast;
  89330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89331. return $core.withContext(function($ctx1) {
  89332. //>>excludeEnd("ctx");
  89333. var $1,$2,$3,$4;
  89334. ast=$self._parse_forClass_(aString,aClass);
  89335. $1=[$recv($globals.AIContext)._new()
  89336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89337. ,$ctx1.sendIdx["new"]=1
  89338. //>>excludeEnd("ctx");
  89339. ][0];
  89340. $recv($1)._receiver_(anObject);
  89341. $recv($1)._selector_($recv(ast)._selector());
  89342. $recv($1)._interpreter_($recv($globals.ASTInterpreter)._new());
  89343. ctx=$recv($1)._yourself();
  89344. $2=$recv(ast)._sequenceNode();
  89345. if($2 == null || $2.a$nil){
  89346. $2;
  89347. } else {
  89348. var sequence;
  89349. sequence=$2;
  89350. $recv($recv(sequence)._temps())._do_((function(each){
  89351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89352. return $core.withContext(function($ctx2) {
  89353. //>>excludeEnd("ctx");
  89354. return [$recv(ctx)._defineLocal_(each)
  89355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89356. ,$ctx2.sendIdx["defineLocal:"]=1
  89357. //>>excludeEnd("ctx");
  89358. ][0];
  89359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89360. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  89361. //>>excludeEnd("ctx");
  89362. }));
  89363. }
  89364. $recv($recv(ast)._arguments())._with_do_(anArray,(function(key,value){
  89365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89366. return $core.withContext(function($ctx2) {
  89367. //>>excludeEnd("ctx");
  89368. $3=ctx;
  89369. $recv($3)._defineLocal_(key);
  89370. return $recv($3)._localAt_put_(key,value);
  89371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89372. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
  89373. //>>excludeEnd("ctx");
  89374. }));
  89375. $4=$recv(ctx)._interpreter();
  89376. $recv($4)._context_(ctx);
  89377. $recv($4)._node_(ast);
  89378. $recv($4)._enterNode();
  89379. return ctx;
  89380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89381. }, function($ctx1) {$ctx1.fill(self,"prepareContextFor:class:receiver:withArguments:",{aString:aString,aClass:aClass,anObject:anObject,anArray:anArray,ctx:ctx,ast:ast})});
  89382. //>>excludeEnd("ctx");
  89383. }; }),
  89384. $globals.TCTInterpreted);
  89385. $core.addMethod(
  89386. $core.method({
  89387. selector: "while:inClass:should:",
  89388. protocol: "testing",
  89389. //>>excludeStart("ide", pragmas.excludeIdeData);
  89390. args: ["aString", "aClass", "aBlock"],
  89391. source: "while: aString inClass: aClass should: aBlock\x0a\x09super\x0a\x09\x09while: aString\x0a\x09\x09inClass: aClass\x0a\x09\x09should: [ aBlock value: [\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09interpret: aString\x0a\x09\x09\x09\x09forClass: aClass\x0a\x09\x09\x09\x09receiver: self receiver\x0a\x09\x09\x09\x09withArguments: self arguments ] ]",
  89392. referencedClasses: [],
  89393. //>>excludeEnd("ide");
  89394. pragmas: [],
  89395. messageSends: ["while:inClass:should:", "value:", "interpret:forClass:receiver:withArguments:", "receiver", "arguments"]
  89396. }, function ($methodClass){ return function (aString,aClass,aBlock){
  89397. var self=this,$self=this;
  89398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89399. return $core.withContext(function($ctx1) {
  89400. //>>excludeEnd("ctx");
  89401. [(
  89402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89403. $ctx1.supercall = true,
  89404. //>>excludeEnd("ctx");
  89405. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._while_inClass_should_.call($self,aString,aClass,(function(){
  89406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89407. return $core.withContext(function($ctx2) {
  89408. //>>excludeEnd("ctx");
  89409. return $recv(aBlock)._value_((function(){
  89410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89411. return $core.withContext(function($ctx3) {
  89412. //>>excludeEnd("ctx");
  89413. return $self._interpret_forClass_receiver_withArguments_(aString,aClass,$self._receiver(),$self._arguments());
  89414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89415. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  89416. //>>excludeEnd("ctx");
  89417. }));
  89418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89419. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89420. //>>excludeEnd("ctx");
  89421. })))
  89422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89423. ,$ctx1.supercall = false
  89424. //>>excludeEnd("ctx");
  89425. ][0];
  89426. return self;
  89427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89428. }, function($ctx1) {$ctx1.fill(self,"while:inClass:should:",{aString:aString,aClass:aClass,aBlock:aBlock})});
  89429. //>>excludeEnd("ctx");
  89430. }; }),
  89431. $globals.TCTInterpreted);
  89432. $core.addTrait("TCTNonInlined", "Compiler-Tests");
  89433. $core.addMethod(
  89434. $core.method({
  89435. selector: "codeGeneratorClass",
  89436. protocol: "accessing",
  89437. //>>excludeStart("ide", pragmas.excludeIdeData);
  89438. args: [],
  89439. source: "codeGeneratorClass\x0a\x09^ CodeGenerator",
  89440. referencedClasses: ["CodeGenerator"],
  89441. //>>excludeEnd("ide");
  89442. pragmas: [],
  89443. messageSends: []
  89444. }, function ($methodClass){ return function (){
  89445. var self=this,$self=this;
  89446. return $globals.CodeGenerator;
  89447. }; }),
  89448. $globals.TCTNonInlined);
  89449. $core.setTraitComposition([{trait: $globals.TASTParsingTest}], $globals.TASTCompilingTest);
  89450. $core.setTraitComposition([{trait: $globals.TCTInterpreted}], $globals.TCTDebugged);
  89451. $core.setTraitComposition([{trait: $globals.TASTCompilingTest}], $globals.ASTMethodRunningTest);
  89452. $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTDebugged}], $globals.ASTDebuggerTest);
  89453. $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTInterpreted}], $globals.ASTInterpreterTest);
  89454. $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTExecuted}], $globals.CodeGeneratorTest);
  89455. $core.setTraitComposition([{trait: $globals.TCTInlined}, {trait: $globals.TCTExecuted}], $globals.InliningCodeGeneratorTest);
  89456. $core.setTraitComposition([{trait: $globals.TClassBuildingTest}], $globals.AbstractJavaScriptGatewayTest);
  89457. $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTDebugged}], $globals.DebuggedJSGTest);
  89458. $core.setTraitComposition([{trait: $globals.TCTInlined}, {trait: $globals.TCTExecuted}], $globals.InlinedJSGTest);
  89459. $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTInterpreted}], $globals.InterpretedJSGTest);
  89460. $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTExecuted}], $globals.PlainJSGTest);
  89461. $core.setTraitComposition([{trait: $globals.TASTParsingTest}], $globals.ASTPCNodeVisitorTest);
  89462. $core.setTraitComposition([{trait: $globals.TASTParsingTest}], $globals.ASTPositionTest);
  89463. $core.setTraitComposition([{trait: $globals.TASTCompilingTest}], $globals.AbstractCodeGeneratorInstallTest);
  89464. $core.setTraitComposition([{trait: $globals.TCTNonInlined}], $globals.CodeGeneratorInstallTest);
  89465. $core.setTraitComposition([{trait: $globals.TCTInlined}], $globals.InliningCodeGeneratorInstallTest);
  89466. });
  89467. define('amber/core/Platform-DOM-Tests',["amber/boot", "require", "amber/core/SUnit"], function($boot,requirejs){"use strict";
  89468. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  89469. var $pkg = $core.addPackage("Platform-DOM-Tests");
  89470. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  89471. $core.addClass("PlatformDomTest", $globals.TestCase, "Platform-DOM-Tests");
  89472. $core.setSlots($globals.PlatformDomTest, ["fixtureDiv"]);
  89473. $core.addMethod(
  89474. $core.method({
  89475. selector: "testEntityConversion",
  89476. protocol: "testing",
  89477. //>>excludeStart("ide", pragmas.excludeIdeData);
  89478. args: [],
  89479. source: "testEntityConversion\x0a\x09PlatformDom isFeasible ifTrue: [ self assert: '&copy;' htmlTextContent equals: '©' ]",
  89480. referencedClasses: ["PlatformDom"],
  89481. //>>excludeEnd("ide");
  89482. pragmas: [],
  89483. messageSends: ["ifTrue:", "isFeasible", "assert:equals:", "htmlTextContent"]
  89484. }, function ($methodClass){ return function (){
  89485. var self=this,$self=this;
  89486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89487. return $core.withContext(function($ctx1) {
  89488. //>>excludeEnd("ctx");
  89489. if($core.assert($recv($globals.PlatformDom)._isFeasible())){
  89490. $self._assert_equals_("&copy;"._htmlTextContent(),"©");
  89491. }
  89492. return self;
  89493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89494. }, function($ctx1) {$ctx1.fill(self,"testEntityConversion",{})});
  89495. //>>excludeEnd("ctx");
  89496. }; }),
  89497. $globals.PlatformDomTest);
  89498. $core.addMethod(
  89499. $core.method({
  89500. selector: "testTextContentDoesNotRunScript",
  89501. protocol: "testing",
  89502. //>>excludeStart("ide", pragmas.excludeIdeData);
  89503. args: [],
  89504. source: "testTextContentDoesNotRunScript\x0a\x09PlatformDom isFeasible ifTrue: [\x0a\x09\x09self shouldnt: [ '<script>throw new Error(\x22Intentional\x22)</script>' htmlTextContent ] raise: Error ]",
  89505. referencedClasses: ["PlatformDom", "Error"],
  89506. //>>excludeEnd("ide");
  89507. pragmas: [],
  89508. messageSends: ["ifTrue:", "isFeasible", "shouldnt:raise:", "htmlTextContent"]
  89509. }, function ($methodClass){ return function (){
  89510. var self=this,$self=this;
  89511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89512. return $core.withContext(function($ctx1) {
  89513. //>>excludeEnd("ctx");
  89514. if($core.assert($recv($globals.PlatformDom)._isFeasible())){
  89515. $self._shouldnt_raise_((function(){
  89516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89517. return $core.withContext(function($ctx2) {
  89518. //>>excludeEnd("ctx");
  89519. return "<script>throw new Error(\x22Intentional\x22)</script>"._htmlTextContent();
  89520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89521. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  89522. //>>excludeEnd("ctx");
  89523. }),$globals.Error);
  89524. }
  89525. return self;
  89526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89527. }, function($ctx1) {$ctx1.fill(self,"testTextContentDoesNotRunScript",{})});
  89528. //>>excludeEnd("ctx");
  89529. }; }),
  89530. $globals.PlatformDomTest);
  89531. });
  89532. define('amber/core/SUnit-Tests',["amber/boot", "require", "amber/core/SUnit"], function($boot,requirejs){"use strict";
  89533. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  89534. var $pkg = $core.addPackage("SUnit-Tests");
  89535. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  89536. $core.addClass("ExampleSetTest", $globals.TestCase, "SUnit-Tests");
  89537. $core.setSlots($globals.ExampleSetTest, ["empty", "full"]);
  89538. //>>excludeStart("ide", pragmas.excludeIdeData);
  89539. $globals.ExampleSetTest.comment="ExampleSetTest is taken from Pharo 1.4.\x0a\x0aTHe purpose of this class is to demonstrate a simple use case of the test framework.";
  89540. //>>excludeEnd("ide");
  89541. $core.addMethod(
  89542. $core.method({
  89543. selector: "setUp",
  89544. protocol: "running",
  89545. //>>excludeStart("ide", pragmas.excludeIdeData);
  89546. args: [],
  89547. source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
  89548. referencedClasses: ["Set"],
  89549. //>>excludeEnd("ide");
  89550. pragmas: [],
  89551. messageSends: ["new", "with:with:"]
  89552. }, function ($methodClass){ return function (){
  89553. var self=this,$self=this;
  89554. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89555. return $core.withContext(function($ctx1) {
  89556. //>>excludeEnd("ctx");
  89557. $self.empty=$recv($globals.Set)._new();
  89558. $self.full=$recv($globals.Set)._with_with_((5),"abc");
  89559. return self;
  89560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89561. }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
  89562. //>>excludeEnd("ctx");
  89563. }; }),
  89564. $globals.ExampleSetTest);
  89565. $core.addMethod(
  89566. $core.method({
  89567. selector: "testAdd",
  89568. protocol: "tests",
  89569. //>>excludeStart("ide", pragmas.excludeIdeData);
  89570. args: [],
  89571. source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
  89572. referencedClasses: [],
  89573. //>>excludeEnd("ide");
  89574. pragmas: [],
  89575. messageSends: ["add:", "assert:", "includes:"]
  89576. }, function ($methodClass){ return function (){
  89577. var self=this,$self=this;
  89578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89579. return $core.withContext(function($ctx1) {
  89580. //>>excludeEnd("ctx");
  89581. $recv($self.empty)._add_((5));
  89582. $self._assert_($recv($self.empty)._includes_((5)));
  89583. return self;
  89584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89585. }, function($ctx1) {$ctx1.fill(self,"testAdd",{})});
  89586. //>>excludeEnd("ctx");
  89587. }; }),
  89588. $globals.ExampleSetTest);
  89589. $core.addMethod(
  89590. $core.method({
  89591. selector: "testGrow",
  89592. protocol: "tests",
  89593. //>>excludeStart("ide", pragmas.excludeIdeData);
  89594. args: [],
  89595. source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size equals: 100",
  89596. referencedClasses: [],
  89597. //>>excludeEnd("ide");
  89598. pragmas: [],
  89599. messageSends: ["addAll:", "to:", "assert:equals:", "size"]
  89600. }, function ($methodClass){ return function (){
  89601. var self=this,$self=this;
  89602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89603. return $core.withContext(function($ctx1) {
  89604. //>>excludeEnd("ctx");
  89605. $recv($self.empty)._addAll_((1)._to_((100)));
  89606. $self._assert_equals_($recv($self.empty)._size(),(100));
  89607. return self;
  89608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89609. }, function($ctx1) {$ctx1.fill(self,"testGrow",{})});
  89610. //>>excludeEnd("ctx");
  89611. }; }),
  89612. $globals.ExampleSetTest);
  89613. $core.addMethod(
  89614. $core.method({
  89615. selector: "testIllegal",
  89616. protocol: "tests",
  89617. //>>excludeStart("ide", pragmas.excludeIdeData);
  89618. args: [],
  89619. source: "testIllegal\x0a\x09self\x0a\x09\x09should: [ empty at: 5 ]\x0a\x09\x09raise: Error.\x0a\x09self\x0a\x09\x09should: [ empty at: 5 put: #abc ]\x0a\x09\x09raise: Error",
  89620. referencedClasses: ["Error"],
  89621. //>>excludeEnd("ide");
  89622. pragmas: [],
  89623. messageSends: ["should:raise:", "at:", "at:put:"]
  89624. }, function ($methodClass){ return function (){
  89625. var self=this,$self=this;
  89626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89627. return $core.withContext(function($ctx1) {
  89628. //>>excludeEnd("ctx");
  89629. [$self._should_raise_((function(){
  89630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89631. return $core.withContext(function($ctx2) {
  89632. //>>excludeEnd("ctx");
  89633. return $recv($self.empty)._at_((5));
  89634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89635. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89636. //>>excludeEnd("ctx");
  89637. }),$globals.Error)
  89638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89639. ,$ctx1.sendIdx["should:raise:"]=1
  89640. //>>excludeEnd("ctx");
  89641. ][0];
  89642. $self._should_raise_((function(){
  89643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89644. return $core.withContext(function($ctx2) {
  89645. //>>excludeEnd("ctx");
  89646. return $recv($self.empty)._at_put_((5),"abc");
  89647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89648. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  89649. //>>excludeEnd("ctx");
  89650. }),$globals.Error);
  89651. return self;
  89652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89653. }, function($ctx1) {$ctx1.fill(self,"testIllegal",{})});
  89654. //>>excludeEnd("ctx");
  89655. }; }),
  89656. $globals.ExampleSetTest);
  89657. $core.addMethod(
  89658. $core.method({
  89659. selector: "testIncludes",
  89660. protocol: "tests",
  89661. //>>excludeStart("ide", pragmas.excludeIdeData);
  89662. args: [],
  89663. source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
  89664. referencedClasses: [],
  89665. //>>excludeEnd("ide");
  89666. pragmas: [],
  89667. messageSends: ["assert:", "includes:"]
  89668. }, function ($methodClass){ return function (){
  89669. var self=this,$self=this;
  89670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89671. return $core.withContext(function($ctx1) {
  89672. //>>excludeEnd("ctx");
  89673. [$self._assert_([$recv($self.full)._includes_((5))
  89674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89675. ,$ctx1.sendIdx["includes:"]=1
  89676. //>>excludeEnd("ctx");
  89677. ][0])
  89678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89679. ,$ctx1.sendIdx["assert:"]=1
  89680. //>>excludeEnd("ctx");
  89681. ][0];
  89682. $self._assert_($recv($self.full)._includes_("abc"));
  89683. return self;
  89684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89685. }, function($ctx1) {$ctx1.fill(self,"testIncludes",{})});
  89686. //>>excludeEnd("ctx");
  89687. }; }),
  89688. $globals.ExampleSetTest);
  89689. $core.addMethod(
  89690. $core.method({
  89691. selector: "testOccurrences",
  89692. protocol: "tests",
  89693. //>>excludeStart("ide", pragmas.excludeIdeData);
  89694. args: [],
  89695. source: "testOccurrences\x0a\x09self assert: (empty occurrencesOf: 0) equals: 0.\x0a\x09self assert: (full occurrencesOf: 5) equals: 1.\x0a\x09full add: 5.\x0a\x09self assert: (full occurrencesOf: 5) equals: 1",
  89696. referencedClasses: [],
  89697. //>>excludeEnd("ide");
  89698. pragmas: [],
  89699. messageSends: ["assert:equals:", "occurrencesOf:", "add:"]
  89700. }, function ($methodClass){ return function (){
  89701. var self=this,$self=this;
  89702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89703. return $core.withContext(function($ctx1) {
  89704. //>>excludeEnd("ctx");
  89705. [$self._assert_equals_([$recv($self.empty)._occurrencesOf_((0))
  89706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89707. ,$ctx1.sendIdx["occurrencesOf:"]=1
  89708. //>>excludeEnd("ctx");
  89709. ][0],(0))
  89710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89711. ,$ctx1.sendIdx["assert:equals:"]=1
  89712. //>>excludeEnd("ctx");
  89713. ][0];
  89714. [$self._assert_equals_([$recv($self.full)._occurrencesOf_((5))
  89715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89716. ,$ctx1.sendIdx["occurrencesOf:"]=2
  89717. //>>excludeEnd("ctx");
  89718. ][0],(1))
  89719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89720. ,$ctx1.sendIdx["assert:equals:"]=2
  89721. //>>excludeEnd("ctx");
  89722. ][0];
  89723. $recv($self.full)._add_((5));
  89724. $self._assert_equals_($recv($self.full)._occurrencesOf_((5)),(1));
  89725. return self;
  89726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89727. }, function($ctx1) {$ctx1.fill(self,"testOccurrences",{})});
  89728. //>>excludeEnd("ctx");
  89729. }; }),
  89730. $globals.ExampleSetTest);
  89731. $core.addMethod(
  89732. $core.method({
  89733. selector: "testRemove",
  89734. protocol: "tests",
  89735. //>>excludeStart("ide", pragmas.excludeIdeData);
  89736. args: [],
  89737. source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
  89738. referencedClasses: [],
  89739. //>>excludeEnd("ide");
  89740. pragmas: [],
  89741. messageSends: ["remove:", "assert:", "includes:", "deny:"]
  89742. }, function ($methodClass){ return function (){
  89743. var self=this,$self=this;
  89744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89745. return $core.withContext(function($ctx1) {
  89746. //>>excludeEnd("ctx");
  89747. $recv($self.full)._remove_((5));
  89748. $self._assert_([$recv($self.full)._includes_("abc")
  89749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89750. ,$ctx1.sendIdx["includes:"]=1
  89751. //>>excludeEnd("ctx");
  89752. ][0]);
  89753. $self._deny_($recv($self.full)._includes_((5)));
  89754. return self;
  89755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89756. }, function($ctx1) {$ctx1.fill(self,"testRemove",{})});
  89757. //>>excludeEnd("ctx");
  89758. }; }),
  89759. $globals.ExampleSetTest);
  89760. $core.addClass("SUnitAsyncTest", $globals.TestCase, "SUnit-Tests");
  89761. $core.setSlots($globals.SUnitAsyncTest, ["flag"]);
  89762. $core.addMethod(
  89763. $core.method({
  89764. selector: "fakeError",
  89765. protocol: "helpers",
  89766. //>>excludeStart("ide", pragmas.excludeIdeData);
  89767. args: [],
  89768. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 20",
  89769. referencedClasses: [],
  89770. //>>excludeEnd("ide");
  89771. pragmas: [],
  89772. messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
  89773. }, function ($methodClass){ return function (){
  89774. var self=this,$self=this;
  89775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89776. return $core.withContext(function($ctx1) {
  89777. //>>excludeEnd("ctx");
  89778. $self.flag="bad";
  89779. $self._timeout_((30));
  89780. $self.flag=$recv($self._async_((function(){
  89781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89782. return $core.withContext(function($ctx2) {
  89783. //>>excludeEnd("ctx");
  89784. $self.flag="ok";
  89785. return $self._error_("Intentional");
  89786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89787. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89788. //>>excludeEnd("ctx");
  89789. })))._valueWithTimeout_((20));
  89790. return self;
  89791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89792. }, function($ctx1) {$ctx1.fill(self,"fakeError",{})});
  89793. //>>excludeEnd("ctx");
  89794. }; }),
  89795. $globals.SUnitAsyncTest);
  89796. $core.addMethod(
  89797. $core.method({
  89798. selector: "fakeErrorFailingInTearDown",
  89799. protocol: "helpers",
  89800. //>>excludeStart("ide", pragmas.excludeIdeData);
  89801. args: [],
  89802. source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 20",
  89803. referencedClasses: [],
  89804. //>>excludeEnd("ide");
  89805. pragmas: [],
  89806. messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
  89807. }, function ($methodClass){ return function (){
  89808. var self=this,$self=this;
  89809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89810. return $core.withContext(function($ctx1) {
  89811. //>>excludeEnd("ctx");
  89812. $self.flag="bad";
  89813. $self._timeout_((30));
  89814. $self.flag=$recv($self._async_((function(){
  89815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89816. return $core.withContext(function($ctx2) {
  89817. //>>excludeEnd("ctx");
  89818. return $self._error_("Intentional");
  89819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89820. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89821. //>>excludeEnd("ctx");
  89822. })))._valueWithTimeout_((20));
  89823. return self;
  89824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89825. }, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{})});
  89826. //>>excludeEnd("ctx");
  89827. }; }),
  89828. $globals.SUnitAsyncTest);
  89829. $core.addMethod(
  89830. $core.method({
  89831. selector: "fakeFailure",
  89832. protocol: "helpers",
  89833. //>>excludeStart("ide", pragmas.excludeIdeData);
  89834. args: [],
  89835. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 20",
  89836. referencedClasses: [],
  89837. //>>excludeEnd("ide");
  89838. pragmas: [],
  89839. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"]
  89840. }, function ($methodClass){ return function (){
  89841. var self=this,$self=this;
  89842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89843. return $core.withContext(function($ctx1) {
  89844. //>>excludeEnd("ctx");
  89845. $self.flag="bad";
  89846. $self._timeout_((30));
  89847. $self.flag=$recv($self._async_((function(){
  89848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89849. return $core.withContext(function($ctx2) {
  89850. //>>excludeEnd("ctx");
  89851. $self.flag="ok";
  89852. return $self._assert_(false);
  89853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89854. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89855. //>>excludeEnd("ctx");
  89856. })))._valueWithTimeout_((20));
  89857. return self;
  89858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89859. }, function($ctx1) {$ctx1.fill(self,"fakeFailure",{})});
  89860. //>>excludeEnd("ctx");
  89861. }; }),
  89862. $globals.SUnitAsyncTest);
  89863. $core.addMethod(
  89864. $core.method({
  89865. selector: "fakeMultipleTimeoutFailing",
  89866. protocol: "helpers",
  89867. //>>excludeStart("ide", pragmas.excludeIdeData);
  89868. args: [],
  89869. source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09(self async: [ \x0a\x09\x09self timeout: 20.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 30\x0a\x09]) valueWithTimeout: 20",
  89870. referencedClasses: [],
  89871. //>>excludeEnd("ide");
  89872. pragmas: [],
  89873. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  89874. }, function ($methodClass){ return function (){
  89875. var self=this,$self=this;
  89876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89877. return $core.withContext(function($ctx1) {
  89878. //>>excludeEnd("ctx");
  89879. [$self._timeout_((100))
  89880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89881. ,$ctx1.sendIdx["timeout:"]=1
  89882. //>>excludeEnd("ctx");
  89883. ][0];
  89884. [$recv([$self._async_((function(){
  89885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89886. return $core.withContext(function($ctx2) {
  89887. //>>excludeEnd("ctx");
  89888. $self._timeout_((20));
  89889. return $recv($self._async_((function(){
  89890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89891. return $core.withContext(function($ctx3) {
  89892. //>>excludeEnd("ctx");
  89893. return $self._finished();
  89894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89895. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  89896. //>>excludeEnd("ctx");
  89897. })))._valueWithTimeout_((30));
  89898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89899. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89900. //>>excludeEnd("ctx");
  89901. }))
  89902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89903. ,$ctx1.sendIdx["async:"]=1
  89904. //>>excludeEnd("ctx");
  89905. ][0])._valueWithTimeout_((20))
  89906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89907. ,$ctx1.sendIdx["valueWithTimeout:"]=1
  89908. //>>excludeEnd("ctx");
  89909. ][0];
  89910. return self;
  89911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89912. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{})});
  89913. //>>excludeEnd("ctx");
  89914. }; }),
  89915. $globals.SUnitAsyncTest);
  89916. $core.addMethod(
  89917. $core.method({
  89918. selector: "fakeMultipleTimeoutPassing",
  89919. protocol: "helpers",
  89920. //>>excludeStart("ide", pragmas.excludeIdeData);
  89921. args: [],
  89922. source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09(self async: [\x0a\x09\x09self timeout: 40.\x0a\x09\x09(self async: [ self finished ]) valueWithTimeout: 20\x0a\x09]) valueWithTimeout: 10",
  89923. referencedClasses: [],
  89924. //>>excludeEnd("ide");
  89925. pragmas: [],
  89926. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  89927. }, function ($methodClass){ return function (){
  89928. var self=this,$self=this;
  89929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89930. return $core.withContext(function($ctx1) {
  89931. //>>excludeEnd("ctx");
  89932. [$self._timeout_((20))
  89933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89934. ,$ctx1.sendIdx["timeout:"]=1
  89935. //>>excludeEnd("ctx");
  89936. ][0];
  89937. [$recv([$self._async_((function(){
  89938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89939. return $core.withContext(function($ctx2) {
  89940. //>>excludeEnd("ctx");
  89941. $self._timeout_((40));
  89942. return $recv($self._async_((function(){
  89943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89944. return $core.withContext(function($ctx3) {
  89945. //>>excludeEnd("ctx");
  89946. return $self._finished();
  89947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89948. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  89949. //>>excludeEnd("ctx");
  89950. })))._valueWithTimeout_((20));
  89951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89952. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89953. //>>excludeEnd("ctx");
  89954. }))
  89955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89956. ,$ctx1.sendIdx["async:"]=1
  89957. //>>excludeEnd("ctx");
  89958. ][0])._valueWithTimeout_((10))
  89959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89960. ,$ctx1.sendIdx["valueWithTimeout:"]=1
  89961. //>>excludeEnd("ctx");
  89962. ][0];
  89963. return self;
  89964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89965. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{})});
  89966. //>>excludeEnd("ctx");
  89967. }; }),
  89968. $globals.SUnitAsyncTest);
  89969. $core.addMethod(
  89970. $core.method({
  89971. selector: "fakeTimeout",
  89972. protocol: "helpers",
  89973. //>>excludeStart("ide", pragmas.excludeIdeData);
  89974. args: [],
  89975. source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
  89976. referencedClasses: [],
  89977. //>>excludeEnd("ide");
  89978. pragmas: [],
  89979. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  89980. }, function ($methodClass){ return function (){
  89981. var self=this,$self=this;
  89982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89983. return $core.withContext(function($ctx1) {
  89984. //>>excludeEnd("ctx");
  89985. $self._timeout_((10));
  89986. $recv($self._async_((function(){
  89987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89988. return $core.withContext(function($ctx2) {
  89989. //>>excludeEnd("ctx");
  89990. return $self._finished();
  89991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89992. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  89993. //>>excludeEnd("ctx");
  89994. })))._valueWithTimeout_((20));
  89995. return self;
  89996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  89997. }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
  89998. //>>excludeEnd("ctx");
  89999. }; }),
  90000. $globals.SUnitAsyncTest);
  90001. $core.addMethod(
  90002. $core.method({
  90003. selector: "selectorSetOf:",
  90004. protocol: "private",
  90005. //>>excludeStart("ide", pragmas.excludeIdeData);
  90006. args: ["aCollection"],
  90007. source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
  90008. referencedClasses: [],
  90009. //>>excludeEnd("ide");
  90010. pragmas: [],
  90011. messageSends: ["asSet", "collect:", "selector"]
  90012. }, function ($methodClass){ return function (aCollection){
  90013. var self=this,$self=this;
  90014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90015. return $core.withContext(function($ctx1) {
  90016. //>>excludeEnd("ctx");
  90017. return $recv($recv(aCollection)._collect_((function(each){
  90018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90019. return $core.withContext(function($ctx2) {
  90020. //>>excludeEnd("ctx");
  90021. return $recv(each)._selector();
  90022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90023. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  90024. //>>excludeEnd("ctx");
  90025. })))._asSet();
  90026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90027. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection})});
  90028. //>>excludeEnd("ctx");
  90029. }; }),
  90030. $globals.SUnitAsyncTest);
  90031. $core.addMethod(
  90032. $core.method({
  90033. selector: "setUp",
  90034. protocol: "running",
  90035. //>>excludeStart("ide", pragmas.excludeIdeData);
  90036. args: [],
  90037. source: "setUp\x0a\x09flag := 'ok'",
  90038. referencedClasses: [],
  90039. //>>excludeEnd("ide");
  90040. pragmas: [],
  90041. messageSends: []
  90042. }, function ($methodClass){ return function (){
  90043. var self=this,$self=this;
  90044. $self.flag="ok";
  90045. return self;
  90046. }; }),
  90047. $globals.SUnitAsyncTest);
  90048. $core.addMethod(
  90049. $core.method({
  90050. selector: "tearDown",
  90051. protocol: "running",
  90052. //>>excludeStart("ide", pragmas.excludeIdeData);
  90053. args: [],
  90054. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  90055. referencedClasses: [],
  90056. //>>excludeEnd("ide");
  90057. pragmas: [],
  90058. messageSends: ["assert:equals:"]
  90059. }, function ($methodClass){ return function (){
  90060. var self=this,$self=this;
  90061. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90062. return $core.withContext(function($ctx1) {
  90063. //>>excludeEnd("ctx");
  90064. $self._assert_equals_("ok",$self.flag);
  90065. return self;
  90066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90067. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  90068. //>>excludeEnd("ctx");
  90069. }; }),
  90070. $globals.SUnitAsyncTest);
  90071. $core.addMethod(
  90072. $core.method({
  90073. selector: "testAsyncErrorsAndFailures",
  90074. protocol: "tests",
  90075. //>>excludeStart("ide", pragmas.excludeIdeData);
  90076. args: [],
  90077. source: "testAsyncErrorsAndFailures\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #(fakeError fakeErrorFailingInTearDown fakeFailure testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: #(fakeError) asSet.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeErrorFailingInTearDown fakeFailure) asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: assertBlock ].\x0a\x09runner run",
  90078. referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"],
  90079. //>>excludeEnd("ide");
  90080. pragmas: [],
  90081. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "run"]
  90082. }, function ($methodClass){ return function (){
  90083. var self=this,$self=this;
  90084. var suite,runner,result,assertBlock;
  90085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90086. return $core.withContext(function($ctx1) {
  90087. //>>excludeEnd("ctx");
  90088. var $1;
  90089. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  90090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90091. return $core.withContext(function($ctx2) {
  90092. //>>excludeEnd("ctx");
  90093. return $recv($self._class())._selector_(each);
  90094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90095. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  90096. //>>excludeEnd("ctx");
  90097. }));
  90098. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  90099. $self._timeout_((200));
  90100. result=[$recv(runner)._result()
  90101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90102. ,$ctx1.sendIdx["result"]=1
  90103. //>>excludeEnd("ctx");
  90104. ][0];
  90105. assertBlock=$self._async_((function(){
  90106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90107. return $core.withContext(function($ctx2) {
  90108. //>>excludeEnd("ctx");
  90109. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  90110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90111. ,$ctx2.sendIdx["selectorSetOf:"]=1
  90112. //>>excludeEnd("ctx");
  90113. ][0],[["fakeError"]._asSet()
  90114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90115. ,$ctx2.sendIdx["asSet"]=1
  90116. //>>excludeEnd("ctx");
  90117. ][0])
  90118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90119. ,$ctx2.sendIdx["assert:equals:"]=1
  90120. //>>excludeEnd("ctx");
  90121. ][0];
  90122. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  90123. return $self._finished();
  90124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90125. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  90126. //>>excludeEnd("ctx");
  90127. }));
  90128. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  90129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90130. return $core.withContext(function($ctx2) {
  90131. //>>excludeEnd("ctx");
  90132. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  90133. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  90134. } else {
  90135. $1=false;
  90136. }
  90137. return $recv($1)._ifTrue_(assertBlock);
  90138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90139. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  90140. //>>excludeEnd("ctx");
  90141. }));
  90142. $recv(runner)._run();
  90143. return self;
  90144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90145. }, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  90146. //>>excludeEnd("ctx");
  90147. }; }),
  90148. $globals.SUnitAsyncTest);
  90149. $core.addMethod(
  90150. $core.method({
  90151. selector: "testAsyncNeedsTimeout",
  90152. protocol: "tests",
  90153. //>>excludeStart("ide", pragmas.excludeIdeData);
  90154. args: [],
  90155. source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
  90156. referencedClasses: ["Error"],
  90157. //>>excludeEnd("ide");
  90158. pragmas: [],
  90159. messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
  90160. }, function ($methodClass){ return function (){
  90161. var self=this,$self=this;
  90162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90163. return $core.withContext(function($ctx1) {
  90164. //>>excludeEnd("ctx");
  90165. $self._should_raise_((function(){
  90166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90167. return $core.withContext(function($ctx2) {
  90168. //>>excludeEnd("ctx");
  90169. return [$self._async_((function(){
  90170. }))
  90171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90172. ,$ctx2.sendIdx["async:"]=1
  90173. //>>excludeEnd("ctx");
  90174. ][0];
  90175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90176. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90177. //>>excludeEnd("ctx");
  90178. }),$globals.Error);
  90179. $self._timeout_((0));
  90180. $self._shouldnt_raise_((function(){
  90181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90182. return $core.withContext(function($ctx2) {
  90183. //>>excludeEnd("ctx");
  90184. return $self._async_((function(){
  90185. }));
  90186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90187. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  90188. //>>excludeEnd("ctx");
  90189. }),$globals.Error);
  90190. $self._finished();
  90191. return self;
  90192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90193. }, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{})});
  90194. //>>excludeEnd("ctx");
  90195. }; }),
  90196. $globals.SUnitAsyncTest);
  90197. $core.addMethod(
  90198. $core.method({
  90199. selector: "testFinishedNeedsTimeout",
  90200. protocol: "tests",
  90201. //>>excludeStart("ide", pragmas.excludeIdeData);
  90202. args: [],
  90203. source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
  90204. referencedClasses: ["Error"],
  90205. //>>excludeEnd("ide");
  90206. pragmas: [],
  90207. messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
  90208. }, function ($methodClass){ return function (){
  90209. var self=this,$self=this;
  90210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90211. return $core.withContext(function($ctx1) {
  90212. //>>excludeEnd("ctx");
  90213. $self._should_raise_((function(){
  90214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90215. return $core.withContext(function($ctx2) {
  90216. //>>excludeEnd("ctx");
  90217. return [$self._finished()
  90218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90219. ,$ctx2.sendIdx["finished"]=1
  90220. //>>excludeEnd("ctx");
  90221. ][0];
  90222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90223. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90224. //>>excludeEnd("ctx");
  90225. }),$globals.Error);
  90226. $self._timeout_((0));
  90227. $self._shouldnt_raise_((function(){
  90228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90229. return $core.withContext(function($ctx2) {
  90230. //>>excludeEnd("ctx");
  90231. return $self._finished();
  90232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90233. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  90234. //>>excludeEnd("ctx");
  90235. }),$globals.Error);
  90236. return self;
  90237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90238. }, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{})});
  90239. //>>excludeEnd("ctx");
  90240. }; }),
  90241. $globals.SUnitAsyncTest);
  90242. $core.addMethod(
  90243. $core.method({
  90244. selector: "testIsAsyncReturnsCorrectValues",
  90245. protocol: "tests",
  90246. //>>excludeStart("ide", pragmas.excludeIdeData);
  90247. args: [],
  90248. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
  90249. referencedClasses: [],
  90250. //>>excludeEnd("ide");
  90251. pragmas: [],
  90252. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
  90253. }, function ($methodClass){ return function (){
  90254. var self=this,$self=this;
  90255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90256. return $core.withContext(function($ctx1) {
  90257. //>>excludeEnd("ctx");
  90258. [$self._deny_([$self._isAsync()
  90259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90260. ,$ctx1.sendIdx["isAsync"]=1
  90261. //>>excludeEnd("ctx");
  90262. ][0])
  90263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90264. ,$ctx1.sendIdx["deny:"]=1
  90265. //>>excludeEnd("ctx");
  90266. ][0];
  90267. $self._timeout_((0));
  90268. $self._assert_([$self._isAsync()
  90269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90270. ,$ctx1.sendIdx["isAsync"]=2
  90271. //>>excludeEnd("ctx");
  90272. ][0]);
  90273. $self._finished();
  90274. $self._deny_($self._isAsync());
  90275. return self;
  90276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90277. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
  90278. //>>excludeEnd("ctx");
  90279. }; }),
  90280. $globals.SUnitAsyncTest);
  90281. $core.addMethod(
  90282. $core.method({
  90283. selector: "testPass",
  90284. protocol: "tests",
  90285. //>>excludeStart("ide", pragmas.excludeIdeData);
  90286. args: [],
  90287. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
  90288. referencedClasses: [],
  90289. //>>excludeEnd("ide");
  90290. pragmas: [],
  90291. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
  90292. }, function ($methodClass){ return function (){
  90293. var self=this,$self=this;
  90294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90295. return $core.withContext(function($ctx1) {
  90296. //>>excludeEnd("ctx");
  90297. $self.flag="bad";
  90298. $self._timeout_((10));
  90299. $self.flag=$recv($self._async_((function(){
  90300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90301. return $core.withContext(function($ctx2) {
  90302. //>>excludeEnd("ctx");
  90303. $self._assert_(true);
  90304. $self._finished();
  90305. $self.flag="ok";
  90306. return $self.flag;
  90307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90308. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90309. //>>excludeEnd("ctx");
  90310. })))._valueWithTimeout_((5));
  90311. return self;
  90312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90313. }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
  90314. //>>excludeEnd("ctx");
  90315. }; }),
  90316. $globals.SUnitAsyncTest);
  90317. $core.addMethod(
  90318. $core.method({
  90319. selector: "testTimeouts",
  90320. protocol: "tests",
  90321. //>>excludeStart("ide", pragmas.excludeIdeData);
  90322. args: [],
  90323. source: "testTimeouts\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #(fakeTimeout fakeMultipleTimeoutFailing fakeMultipleTimeoutPassing testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: Set new.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeMultipleTimeoutFailing fakeTimeout) asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: assertBlock ].\x0a\x09runner run",
  90324. referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
  90325. //>>excludeEnd("ide");
  90326. pragmas: [],
  90327. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "run"]
  90328. }, function ($methodClass){ return function (){
  90329. var self=this,$self=this;
  90330. var suite,runner,result,assertBlock;
  90331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90332. return $core.withContext(function($ctx1) {
  90333. //>>excludeEnd("ctx");
  90334. var $1;
  90335. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
  90336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90337. return $core.withContext(function($ctx2) {
  90338. //>>excludeEnd("ctx");
  90339. return $recv($self._class())._selector_(each);
  90340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90341. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  90342. //>>excludeEnd("ctx");
  90343. }));
  90344. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  90345. $self._timeout_((200));
  90346. result=[$recv(runner)._result()
  90347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90348. ,$ctx1.sendIdx["result"]=1
  90349. //>>excludeEnd("ctx");
  90350. ][0];
  90351. assertBlock=$self._async_((function(){
  90352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90353. return $core.withContext(function($ctx2) {
  90354. //>>excludeEnd("ctx");
  90355. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  90356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90357. ,$ctx2.sendIdx["selectorSetOf:"]=1
  90358. //>>excludeEnd("ctx");
  90359. ][0],$recv($globals.Set)._new())
  90360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90361. ,$ctx2.sendIdx["assert:equals:"]=1
  90362. //>>excludeEnd("ctx");
  90363. ][0];
  90364. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
  90365. return $self._finished();
  90366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90367. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  90368. //>>excludeEnd("ctx");
  90369. }));
  90370. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  90371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90372. return $core.withContext(function($ctx2) {
  90373. //>>excludeEnd("ctx");
  90374. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  90375. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  90376. } else {
  90377. $1=false;
  90378. }
  90379. return $recv($1)._ifTrue_(assertBlock);
  90380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90381. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  90382. //>>excludeEnd("ctx");
  90383. }));
  90384. $recv(runner)._run();
  90385. return self;
  90386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90387. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
  90388. //>>excludeEnd("ctx");
  90389. }; }),
  90390. $globals.SUnitAsyncTest);
  90391. $core.addMethod(
  90392. $core.method({
  90393. selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  90394. protocol: "tests",
  90395. //>>excludeStart("ide", pragmas.excludeIdeData);
  90396. args: [],
  90397. source: "testTwoAsyncPassesWithFinishedOnlyOneIsRun\x0a\x09| x |\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09x := 0.\x0a\x09flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: x equals: 1 ]) valueWithTimeout: 0.\x0a\x09flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: x equals: 1 ]) valueWithTimeout: 0.",
  90398. referencedClasses: [],
  90399. //>>excludeEnd("ide");
  90400. pragmas: [],
  90401. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
  90402. }, function ($methodClass){ return function (){
  90403. var self=this,$self=this;
  90404. var x;
  90405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90406. return $core.withContext(function($ctx1) {
  90407. //>>excludeEnd("ctx");
  90408. $self.flag="bad";
  90409. $self._timeout_((10));
  90410. x=(0);
  90411. $self.flag=[$recv([$self._async_((function(){
  90412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90413. return $core.withContext(function($ctx2) {
  90414. //>>excludeEnd("ctx");
  90415. [$self._finished()
  90416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90417. ,$ctx2.sendIdx["finished"]=1
  90418. //>>excludeEnd("ctx");
  90419. ][0];
  90420. $self.flag="ok";
  90421. x=[$recv(x).__plus((1))
  90422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90423. ,$ctx2.sendIdx["+"]=1
  90424. //>>excludeEnd("ctx");
  90425. ][0];
  90426. return [$self._assert_equals_(x,(1))
  90427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90428. ,$ctx2.sendIdx["assert:equals:"]=1
  90429. //>>excludeEnd("ctx");
  90430. ][0];
  90431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90432. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90433. //>>excludeEnd("ctx");
  90434. }))
  90435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90436. ,$ctx1.sendIdx["async:"]=1
  90437. //>>excludeEnd("ctx");
  90438. ][0])._valueWithTimeout_((0))
  90439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90440. ,$ctx1.sendIdx["valueWithTimeout:"]=1
  90441. //>>excludeEnd("ctx");
  90442. ][0];
  90443. $self.flag=$recv($self._async_((function(){
  90444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90445. return $core.withContext(function($ctx2) {
  90446. //>>excludeEnd("ctx");
  90447. $self._finished();
  90448. $self.flag="ok";
  90449. x=$recv(x).__plus((1));
  90450. return $self._assert_equals_(x,(1));
  90451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90452. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  90453. //>>excludeEnd("ctx");
  90454. })))._valueWithTimeout_((0));
  90455. return self;
  90456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90457. }, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x})});
  90458. //>>excludeEnd("ctx");
  90459. }; }),
  90460. $globals.SUnitAsyncTest);
  90461. $core.addClass("SUnitPromiseTest", $globals.TestCase, "SUnit-Tests");
  90462. $core.setSlots($globals.SUnitPromiseTest, ["flag"]);
  90463. $core.addMethod(
  90464. $core.method({
  90465. selector: "fakeError",
  90466. protocol: "helpers",
  90467. //>>excludeStart("ide", pragmas.excludeIdeData);
  90468. args: [],
  90469. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self error: 'Intentional' ]",
  90470. referencedClasses: ["Promise"],
  90471. //>>excludeEnd("ide");
  90472. pragmas: [],
  90473. messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
  90474. }, function ($methodClass){ return function (){
  90475. var self=this,$self=this;
  90476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90477. return $core.withContext(function($ctx1) {
  90478. //>>excludeEnd("ctx");
  90479. $self.flag="bad";
  90480. $self._timeout_((30));
  90481. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  90482. return $recv($self.flag)._then_((function(){
  90483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90484. return $core.withContext(function($ctx2) {
  90485. //>>excludeEnd("ctx");
  90486. $self.flag="ok";
  90487. return $self._error_("Intentional");
  90488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90489. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90490. //>>excludeEnd("ctx");
  90491. }));
  90492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90493. }, function($ctx1) {$ctx1.fill(self,"fakeError",{})});
  90494. //>>excludeEnd("ctx");
  90495. }; }),
  90496. $globals.SUnitPromiseTest);
  90497. $core.addMethod(
  90498. $core.method({
  90499. selector: "fakeErrorFailingInTearDown",
  90500. protocol: "helpers",
  90501. //>>excludeStart("ide", pragmas.excludeIdeData);
  90502. args: [],
  90503. source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ self error: 'Intentional' ]",
  90504. referencedClasses: ["Promise"],
  90505. //>>excludeEnd("ide");
  90506. pragmas: [],
  90507. messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
  90508. }, function ($methodClass){ return function (){
  90509. var self=this,$self=this;
  90510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90511. return $core.withContext(function($ctx1) {
  90512. //>>excludeEnd("ctx");
  90513. $self.flag="bad";
  90514. $self._timeout_((30));
  90515. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  90516. return $recv($self.flag)._then_((function(){
  90517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90518. return $core.withContext(function($ctx2) {
  90519. //>>excludeEnd("ctx");
  90520. return $self._error_("Intentional");
  90521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90522. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90523. //>>excludeEnd("ctx");
  90524. }));
  90525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90526. }, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{})});
  90527. //>>excludeEnd("ctx");
  90528. }; }),
  90529. $globals.SUnitPromiseTest);
  90530. $core.addMethod(
  90531. $core.method({
  90532. selector: "fakeFailure",
  90533. protocol: "helpers",
  90534. //>>excludeStart("ide", pragmas.excludeIdeData);
  90535. args: [],
  90536. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self assert: false ]",
  90537. referencedClasses: ["Promise"],
  90538. //>>excludeEnd("ide");
  90539. pragmas: [],
  90540. messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
  90541. }, function ($methodClass){ return function (){
  90542. var self=this,$self=this;
  90543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90544. return $core.withContext(function($ctx1) {
  90545. //>>excludeEnd("ctx");
  90546. $self.flag="bad";
  90547. $self._timeout_((30));
  90548. $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
  90549. return $recv($self.flag)._then_((function(){
  90550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90551. return $core.withContext(function($ctx2) {
  90552. //>>excludeEnd("ctx");
  90553. $self.flag="ok";
  90554. return $self._assert_(false);
  90555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90556. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90557. //>>excludeEnd("ctx");
  90558. }));
  90559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90560. }, function($ctx1) {$ctx1.fill(self,"fakeFailure",{})});
  90561. //>>excludeEnd("ctx");
  90562. }; }),
  90563. $globals.SUnitPromiseTest);
  90564. $core.addMethod(
  90565. $core.method({
  90566. selector: "fakeMultipleTimeoutFailing",
  90567. protocol: "helpers",
  90568. //>>excludeStart("ide", pragmas.excludeIdeData);
  90569. args: [],
  90570. source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09^ (Promise delayMilliseconds: 20) then: [ self timeout: 20. Promise delayMilliseconds: 30 ]",
  90571. referencedClasses: ["Promise"],
  90572. //>>excludeEnd("ide");
  90573. pragmas: [],
  90574. messageSends: ["timeout:", "then:", "delayMilliseconds:"]
  90575. }, function ($methodClass){ return function (){
  90576. var self=this,$self=this;
  90577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90578. return $core.withContext(function($ctx1) {
  90579. //>>excludeEnd("ctx");
  90580. [$self._timeout_((100))
  90581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90582. ,$ctx1.sendIdx["timeout:"]=1
  90583. //>>excludeEnd("ctx");
  90584. ][0];
  90585. return $recv([$recv($globals.Promise)._delayMilliseconds_((20))
  90586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90587. ,$ctx1.sendIdx["delayMilliseconds:"]=1
  90588. //>>excludeEnd("ctx");
  90589. ][0])._then_((function(){
  90590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90591. return $core.withContext(function($ctx2) {
  90592. //>>excludeEnd("ctx");
  90593. $self._timeout_((20));
  90594. return $recv($globals.Promise)._delayMilliseconds_((30));
  90595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90596. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90597. //>>excludeEnd("ctx");
  90598. }));
  90599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90600. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{})});
  90601. //>>excludeEnd("ctx");
  90602. }; }),
  90603. $globals.SUnitPromiseTest);
  90604. $core.addMethod(
  90605. $core.method({
  90606. selector: "fakeMultipleTimeoutPassing",
  90607. protocol: "helpers",
  90608. //>>excludeStart("ide", pragmas.excludeIdeData);
  90609. args: [],
  90610. source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09^ (Promise delayMilliseconds: 10) then: [ self timeout: 40. Promise delayMilliseconds: 20 ]",
  90611. referencedClasses: ["Promise"],
  90612. //>>excludeEnd("ide");
  90613. pragmas: [],
  90614. messageSends: ["timeout:", "then:", "delayMilliseconds:"]
  90615. }, function ($methodClass){ return function (){
  90616. var self=this,$self=this;
  90617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90618. return $core.withContext(function($ctx1) {
  90619. //>>excludeEnd("ctx");
  90620. [$self._timeout_((20))
  90621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90622. ,$ctx1.sendIdx["timeout:"]=1
  90623. //>>excludeEnd("ctx");
  90624. ][0];
  90625. return $recv([$recv($globals.Promise)._delayMilliseconds_((10))
  90626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90627. ,$ctx1.sendIdx["delayMilliseconds:"]=1
  90628. //>>excludeEnd("ctx");
  90629. ][0])._then_((function(){
  90630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90631. return $core.withContext(function($ctx2) {
  90632. //>>excludeEnd("ctx");
  90633. $self._timeout_((40));
  90634. return $recv($globals.Promise)._delayMilliseconds_((20));
  90635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90636. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90637. //>>excludeEnd("ctx");
  90638. }));
  90639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90640. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{})});
  90641. //>>excludeEnd("ctx");
  90642. }; }),
  90643. $globals.SUnitPromiseTest);
  90644. $core.addMethod(
  90645. $core.method({
  90646. selector: "fakePromiseWithoutTimeout",
  90647. protocol: "helpers",
  90648. //>>excludeStart("ide", pragmas.excludeIdeData);
  90649. args: [],
  90650. source: "fakePromiseWithoutTimeout\x0a\x09^ Promise delayMilliseconds: 10",
  90651. referencedClasses: ["Promise"],
  90652. //>>excludeEnd("ide");
  90653. pragmas: [],
  90654. messageSends: ["delayMilliseconds:"]
  90655. }, function ($methodClass){ return function (){
  90656. var self=this,$self=this;
  90657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90658. return $core.withContext(function($ctx1) {
  90659. //>>excludeEnd("ctx");
  90660. return $recv($globals.Promise)._delayMilliseconds_((10));
  90661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90662. }, function($ctx1) {$ctx1.fill(self,"fakePromiseWithoutTimeout",{})});
  90663. //>>excludeEnd("ctx");
  90664. }; }),
  90665. $globals.SUnitPromiseTest);
  90666. $core.addMethod(
  90667. $core.method({
  90668. selector: "fakeTimeout",
  90669. protocol: "helpers",
  90670. //>>excludeStart("ide", pragmas.excludeIdeData);
  90671. args: [],
  90672. source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09^ Promise delayMilliseconds: 20",
  90673. referencedClasses: ["Promise"],
  90674. //>>excludeEnd("ide");
  90675. pragmas: [],
  90676. messageSends: ["timeout:", "delayMilliseconds:"]
  90677. }, function ($methodClass){ return function (){
  90678. var self=this,$self=this;
  90679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90680. return $core.withContext(function($ctx1) {
  90681. //>>excludeEnd("ctx");
  90682. $self._timeout_((10));
  90683. return $recv($globals.Promise)._delayMilliseconds_((20));
  90684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90685. }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
  90686. //>>excludeEnd("ctx");
  90687. }; }),
  90688. $globals.SUnitPromiseTest);
  90689. $core.addMethod(
  90690. $core.method({
  90691. selector: "fakeTimeoutSendOnly",
  90692. protocol: "helpers",
  90693. //>>excludeStart("ide", pragmas.excludeIdeData);
  90694. args: [],
  90695. source: "fakeTimeoutSendOnly\x0a\x09self timeout: 10",
  90696. referencedClasses: [],
  90697. //>>excludeEnd("ide");
  90698. pragmas: [],
  90699. messageSends: ["timeout:"]
  90700. }, function ($methodClass){ return function (){
  90701. var self=this,$self=this;
  90702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90703. return $core.withContext(function($ctx1) {
  90704. //>>excludeEnd("ctx");
  90705. $self._timeout_((10));
  90706. return self;
  90707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90708. }, function($ctx1) {$ctx1.fill(self,"fakeTimeoutSendOnly",{})});
  90709. //>>excludeEnd("ctx");
  90710. }; }),
  90711. $globals.SUnitPromiseTest);
  90712. $core.addMethod(
  90713. $core.method({
  90714. selector: "selectorSetOf:",
  90715. protocol: "private",
  90716. //>>excludeStart("ide", pragmas.excludeIdeData);
  90717. args: ["aCollection"],
  90718. source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
  90719. referencedClasses: [],
  90720. //>>excludeEnd("ide");
  90721. pragmas: [],
  90722. messageSends: ["asSet", "collect:", "selector"]
  90723. }, function ($methodClass){ return function (aCollection){
  90724. var self=this,$self=this;
  90725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90726. return $core.withContext(function($ctx1) {
  90727. //>>excludeEnd("ctx");
  90728. return $recv($recv(aCollection)._collect_((function(each){
  90729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90730. return $core.withContext(function($ctx2) {
  90731. //>>excludeEnd("ctx");
  90732. return $recv(each)._selector();
  90733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90734. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  90735. //>>excludeEnd("ctx");
  90736. })))._asSet();
  90737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90738. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection})});
  90739. //>>excludeEnd("ctx");
  90740. }; }),
  90741. $globals.SUnitPromiseTest);
  90742. $core.addMethod(
  90743. $core.method({
  90744. selector: "setUp",
  90745. protocol: "running",
  90746. //>>excludeStart("ide", pragmas.excludeIdeData);
  90747. args: [],
  90748. source: "setUp\x0a\x09flag := 'ok'",
  90749. referencedClasses: [],
  90750. //>>excludeEnd("ide");
  90751. pragmas: [],
  90752. messageSends: []
  90753. }, function ($methodClass){ return function (){
  90754. var self=this,$self=this;
  90755. $self.flag="ok";
  90756. return self;
  90757. }; }),
  90758. $globals.SUnitPromiseTest);
  90759. $core.addMethod(
  90760. $core.method({
  90761. selector: "tearDown",
  90762. protocol: "running",
  90763. //>>excludeStart("ide", pragmas.excludeIdeData);
  90764. args: [],
  90765. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  90766. referencedClasses: [],
  90767. //>>excludeEnd("ide");
  90768. pragmas: [],
  90769. messageSends: ["assert:equals:"]
  90770. }, function ($methodClass){ return function (){
  90771. var self=this,$self=this;
  90772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90773. return $core.withContext(function($ctx1) {
  90774. //>>excludeEnd("ctx");
  90775. $self._assert_equals_("ok",$self.flag);
  90776. return self;
  90777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90778. }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
  90779. //>>excludeEnd("ctx");
  90780. }; }),
  90781. $globals.SUnitPromiseTest);
  90782. $core.addMethod(
  90783. $core.method({
  90784. selector: "testIsAsyncReturnsCorrectValues",
  90785. protocol: "tests",
  90786. //>>excludeStart("ide", pragmas.excludeIdeData);
  90787. args: [],
  90788. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09\x22self finished.\x0a\x09self deny: self isAsync\x22\x0a\x09^ Promise new",
  90789. referencedClasses: ["Promise"],
  90790. //>>excludeEnd("ide");
  90791. pragmas: [],
  90792. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "new"]
  90793. }, function ($methodClass){ return function (){
  90794. var self=this,$self=this;
  90795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90796. return $core.withContext(function($ctx1) {
  90797. //>>excludeEnd("ctx");
  90798. $self._deny_([$self._isAsync()
  90799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90800. ,$ctx1.sendIdx["isAsync"]=1
  90801. //>>excludeEnd("ctx");
  90802. ][0]);
  90803. $self._timeout_((0));
  90804. $self._assert_($self._isAsync());
  90805. return $recv($globals.Promise)._new();
  90806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90807. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
  90808. //>>excludeEnd("ctx");
  90809. }; }),
  90810. $globals.SUnitPromiseTest);
  90811. $core.addMethod(
  90812. $core.method({
  90813. selector: "testPass",
  90814. protocol: "tests",
  90815. //>>excludeStart("ide", pragmas.excludeIdeData);
  90816. args: [],
  90817. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := Promise delayMilliseconds: 5.\x0a\x09^ flag then: [ self assert: true. flag := 'ok' ]",
  90818. referencedClasses: ["Promise"],
  90819. //>>excludeEnd("ide");
  90820. pragmas: [],
  90821. messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
  90822. }, function ($methodClass){ return function (){
  90823. var self=this,$self=this;
  90824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90825. return $core.withContext(function($ctx1) {
  90826. //>>excludeEnd("ctx");
  90827. $self.flag="bad";
  90828. $self._timeout_((10));
  90829. $self.flag=$recv($globals.Promise)._delayMilliseconds_((5));
  90830. return $recv($self.flag)._then_((function(){
  90831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90832. return $core.withContext(function($ctx2) {
  90833. //>>excludeEnd("ctx");
  90834. $self._assert_(true);
  90835. $self.flag="ok";
  90836. return $self.flag;
  90837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90838. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  90839. //>>excludeEnd("ctx");
  90840. }));
  90841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90842. }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
  90843. //>>excludeEnd("ctx");
  90844. }; }),
  90845. $globals.SUnitPromiseTest);
  90846. $core.addMethod(
  90847. $core.method({
  90848. selector: "testPromiseErrorsAndFailures",
  90849. protocol: "tests",
  90850. //>>excludeStart("ide", pragmas.excludeIdeData);
  90851. args: [],
  90852. source: "testPromiseErrorsAndFailures\x0a\x09| suite runner result |\x0a\x09suite := #(fakeError fakeErrorFailingInTearDown fakeFailure testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09^ Promise new: [ :model |\x0a\x09\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: [\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result errors) equals: #(fakeError) asSet.\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeErrorFailingInTearDown fakeFailure) asSet.\x0a\x09\x09\x09\x09model value: nil ] ].\x0a\x09\x09runner run ]",
  90853. referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement"],
  90854. //>>excludeEnd("ide");
  90855. pragmas: [],
  90856. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "value:", "run"]
  90857. }, function ($methodClass){ return function (){
  90858. var self=this,$self=this;
  90859. var suite,runner,result;
  90860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90861. return $core.withContext(function($ctx1) {
  90862. //>>excludeEnd("ctx");
  90863. var $1;
  90864. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  90865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90866. return $core.withContext(function($ctx2) {
  90867. //>>excludeEnd("ctx");
  90868. return $recv($self._class())._selector_(each);
  90869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90870. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  90871. //>>excludeEnd("ctx");
  90872. }));
  90873. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  90874. $self._timeout_((200));
  90875. result=[$recv(runner)._result()
  90876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90877. ,$ctx1.sendIdx["result"]=1
  90878. //>>excludeEnd("ctx");
  90879. ][0];
  90880. return $recv($globals.Promise)._new_((function(model){
  90881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90882. return $core.withContext(function($ctx2) {
  90883. //>>excludeEnd("ctx");
  90884. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  90885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90886. return $core.withContext(function($ctx3) {
  90887. //>>excludeEnd("ctx");
  90888. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  90889. $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
  90890. } else {
  90891. $1=false;
  90892. }
  90893. if($core.assert($1)){
  90894. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  90895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90896. ,$ctx3.sendIdx["selectorSetOf:"]=1
  90897. //>>excludeEnd("ctx");
  90898. ][0],[["fakeError"]._asSet()
  90899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90900. ,$ctx3.sendIdx["asSet"]=1
  90901. //>>excludeEnd("ctx");
  90902. ][0])
  90903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90904. ,$ctx3.sendIdx["assert:equals:"]=1
  90905. //>>excludeEnd("ctx");
  90906. ][0];
  90907. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  90908. return $recv(model)._value_(nil);
  90909. }
  90910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90911. }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
  90912. //>>excludeEnd("ctx");
  90913. }));
  90914. return $recv(runner)._run();
  90915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90916. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
  90917. //>>excludeEnd("ctx");
  90918. }));
  90919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90920. }, function($ctx1) {$ctx1.fill(self,"testPromiseErrorsAndFailures",{suite:suite,runner:runner,result:result})});
  90921. //>>excludeEnd("ctx");
  90922. }; }),
  90923. $globals.SUnitPromiseTest);
  90924. $core.addMethod(
  90925. $core.method({
  90926. selector: "testTimeouts",
  90927. protocol: "tests",
  90928. //>>excludeStart("ide", pragmas.excludeIdeData);
  90929. args: [],
  90930. source: "testTimeouts\x0a\x09| suite runner result |\x0a\x09suite := #(fakeTimeout fakeMultipleTimeoutFailing fakeMultipleTimeoutPassing fakeTimeoutSendOnly fakePromiseWithoutTimeout testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09^ Promise new: [ :model |\x0a\x09\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09\x09console log: ann; log: ann result runs.\x0a\x09\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: [\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result errors) equals: #() asSet.\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeMultipleTimeoutFailing fakeTimeout fakeTimeoutSendOnly fakePromiseWithoutTimeout) asSet.\x0a\x09\x09\x09\x09model value: nil ] ].\x0a\x09\x09runner run ]",
  90931. referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement"],
  90932. //>>excludeEnd("ide");
  90933. pragmas: [],
  90934. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "log:", "runs", "ifTrue:", "and:", "==", "=", "total", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "value:", "run"]
  90935. }, function ($methodClass){ return function (){
  90936. var self=this,$self=this;
  90937. var suite,runner,result;
  90938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90939. return $core.withContext(function($ctx1) {
  90940. //>>excludeEnd("ctx");
  90941. var $1,$2;
  90942. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "fakeTimeoutSendOnly", "fakePromiseWithoutTimeout", "testPass"]._collect_((function(each){
  90943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90944. return $core.withContext(function($ctx2) {
  90945. //>>excludeEnd("ctx");
  90946. return $recv($self._class())._selector_(each);
  90947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90948. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  90949. //>>excludeEnd("ctx");
  90950. }));
  90951. runner=$recv($globals.TestSuiteRunner)._on_(suite);
  90952. $self._timeout_((200));
  90953. result=[$recv(runner)._result()
  90954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90955. ,$ctx1.sendIdx["result"]=1
  90956. //>>excludeEnd("ctx");
  90957. ][0];
  90958. return $recv($globals.Promise)._new_((function(model){
  90959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90960. return $core.withContext(function($ctx2) {
  90961. //>>excludeEnd("ctx");
  90962. $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
  90963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90964. return $core.withContext(function($ctx3) {
  90965. //>>excludeEnd("ctx");
  90966. $1=console;
  90967. [$recv($1)._log_(ann)
  90968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90969. ,$ctx3.sendIdx["log:"]=1
  90970. //>>excludeEnd("ctx");
  90971. ][0];
  90972. $recv($1)._log_([$recv([$recv(ann)._result()
  90973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90974. ,$ctx3.sendIdx["result"]=2
  90975. //>>excludeEnd("ctx");
  90976. ][0])._runs()
  90977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90978. ,$ctx3.sendIdx["runs"]=1
  90979. //>>excludeEnd("ctx");
  90980. ][0]);
  90981. if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
  90982. $2=$recv($recv(result)._runs()).__eq($recv(result)._total());
  90983. } else {
  90984. $2=false;
  90985. }
  90986. if($core.assert($2)){
  90987. [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
  90988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90989. ,$ctx3.sendIdx["selectorSetOf:"]=1
  90990. //>>excludeEnd("ctx");
  90991. ][0],[[]._asSet()
  90992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90993. ,$ctx3.sendIdx["asSet"]=1
  90994. //>>excludeEnd("ctx");
  90995. ][0])
  90996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90997. ,$ctx3.sendIdx["assert:equals:"]=1
  90998. //>>excludeEnd("ctx");
  90999. ][0];
  91000. $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout", "fakeTimeoutSendOnly", "fakePromiseWithoutTimeout"]._asSet());
  91001. return $recv(model)._value_(nil);
  91002. }
  91003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91004. }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
  91005. //>>excludeEnd("ctx");
  91006. }));
  91007. return $recv(runner)._run();
  91008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91009. }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
  91010. //>>excludeEnd("ctx");
  91011. }));
  91012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91013. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result})});
  91014. //>>excludeEnd("ctx");
  91015. }; }),
  91016. $globals.SUnitPromiseTest);
  91017. });
  91018. define('amber/devel',[
  91019. './lang',
  91020. './brikz', // pre-fetch, dep of ./boot
  91021. './kernel-checks', // pre-fetch, dep of ./boot
  91022. './kernel-fundamentals', // pre-fetch, dep of ./boot
  91023. './kernel-language', // pre-fetch, dep of ./boot
  91024. './boot', // pre-fetch, class loader
  91025. './deploy', // pre-fetch, dep of ./lang
  91026. // --- packages of the development only Amber begin here ---
  91027. 'amber/core/Platform-DOM',
  91028. 'amber/core/SUnit',
  91029. 'amber/core/Compiler-Tests',
  91030. 'amber/core/Kernel-Tests',
  91031. 'amber/core/Platform-DOM-Tests',
  91032. 'amber/core/SUnit-Tests'
  91033. // --- packages of the development only Amber end here ---
  91034. ], function (amber) {
  91035. return amber;
  91036. });
  91037. define('amber/core/Platform-Node',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  91038. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  91039. var $pkg = $core.addPackage("Platform-Node");
  91040. $pkg.imports = ["amber/core/Platform-Services"];
  91041. //>>excludeStart("imports", pragmas.excludeImports);
  91042. $pkg.isReady = new Promise(function (resolve, reject) { requirejs(["amber/core/Platform-Services"], function () {resolve();}, reject); });
  91043. //>>excludeEnd("imports");
  91044. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  91045. $core.addClass("NodePlatform", $globals.Object, "Platform-Node");
  91046. //>>excludeStart("ide", pragmas.excludeIdeData);
  91047. $globals.NodePlatform.comment="I am `Platform` service implementation for node-like environment.";
  91048. //>>excludeEnd("ide");
  91049. $core.addMethod(
  91050. $core.method({
  91051. selector: "fetch:",
  91052. protocol: "public API",
  91053. //>>excludeStart("ide", pragmas.excludeIdeData);
  91054. args: ["aStringOrObject"],
  91055. source: "fetch: aStringOrObject\x0a\x09^ self globals at: #fetch\x0a\x09\x09ifPresent: [ :fetch | fetch value: aStringOrObject ]\x0a\x09\x09ifAbsent: [ Promise signal: 'fetch not available.' ]",
  91056. referencedClasses: ["Promise"],
  91057. //>>excludeEnd("ide");
  91058. pragmas: [],
  91059. messageSends: ["at:ifPresent:ifAbsent:", "globals", "value:", "signal:"]
  91060. }, function ($methodClass){ return function (aStringOrObject){
  91061. var self=this,$self=this;
  91062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91063. return $core.withContext(function($ctx1) {
  91064. //>>excludeEnd("ctx");
  91065. return $recv($self._globals())._at_ifPresent_ifAbsent_("fetch",(function(fetch){
  91066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91067. return $core.withContext(function($ctx2) {
  91068. //>>excludeEnd("ctx");
  91069. return $recv(fetch)._value_(aStringOrObject);
  91070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91071. }, function($ctx2) {$ctx2.fillBlock({fetch:fetch},$ctx1,1)});
  91072. //>>excludeEnd("ctx");
  91073. }),(function(){
  91074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91075. return $core.withContext(function($ctx2) {
  91076. //>>excludeEnd("ctx");
  91077. return $recv($globals.Promise)._signal_("fetch not available.");
  91078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91079. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  91080. //>>excludeEnd("ctx");
  91081. }));
  91082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91083. }, function($ctx1) {$ctx1.fill(self,"fetch:",{aStringOrObject:aStringOrObject})});
  91084. //>>excludeEnd("ctx");
  91085. }; }),
  91086. $globals.NodePlatform);
  91087. $core.addMethod(
  91088. $core.method({
  91089. selector: "fetchUrl:options:",
  91090. protocol: "public API",
  91091. //>>excludeStart("ide", pragmas.excludeIdeData);
  91092. args: ["aString", "anObject"],
  91093. source: "fetchUrl: aString options: anObject\x0a\x09^ self globals at: #fetch\x0a\x09\x09ifPresent: [ :fetch | fetch value: aString value: anObject ]\x0a\x09\x09ifAbsent: [ Promise signal: 'fetch not available.' ]",
  91094. referencedClasses: ["Promise"],
  91095. //>>excludeEnd("ide");
  91096. pragmas: [],
  91097. messageSends: ["at:ifPresent:ifAbsent:", "globals", "value:value:", "signal:"]
  91098. }, function ($methodClass){ return function (aString,anObject){
  91099. var self=this,$self=this;
  91100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91101. return $core.withContext(function($ctx1) {
  91102. //>>excludeEnd("ctx");
  91103. return $recv($self._globals())._at_ifPresent_ifAbsent_("fetch",(function(fetch){
  91104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91105. return $core.withContext(function($ctx2) {
  91106. //>>excludeEnd("ctx");
  91107. return $recv(fetch)._value_value_(aString,anObject);
  91108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91109. }, function($ctx2) {$ctx2.fillBlock({fetch:fetch},$ctx1,1)});
  91110. //>>excludeEnd("ctx");
  91111. }),(function(){
  91112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91113. return $core.withContext(function($ctx2) {
  91114. //>>excludeEnd("ctx");
  91115. return $recv($globals.Promise)._signal_("fetch not available.");
  91116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91117. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  91118. //>>excludeEnd("ctx");
  91119. }));
  91120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91121. }, function($ctx1) {$ctx1.fill(self,"fetchUrl:options:",{aString:aString,anObject:anObject})});
  91122. //>>excludeEnd("ctx");
  91123. }; }),
  91124. $globals.NodePlatform);
  91125. $core.addMethod(
  91126. $core.method({
  91127. selector: "globals",
  91128. protocol: "accessing",
  91129. //>>excludeStart("ide", pragmas.excludeIdeData);
  91130. args: [],
  91131. source: "globals\x0a\x09^ global",
  91132. referencedClasses: [],
  91133. //>>excludeEnd("ide");
  91134. pragmas: [],
  91135. messageSends: []
  91136. }, function ($methodClass){ return function (){
  91137. var self=this,$self=this;
  91138. return global;
  91139. }; }),
  91140. $globals.NodePlatform);
  91141. $core.addMethod(
  91142. $core.method({
  91143. selector: "initialize",
  91144. protocol: "initialization",
  91145. //>>excludeStart("ide", pragmas.excludeIdeData);
  91146. args: [],
  91147. source: "initialize\x0a\x09process\x0a\x09\x09on: 'uncaughtException'\x0a\x09\x09do: [ :err | ErrorHandler handleError: err. process exit: 1 ];\x0a\x09\x09on: 'unhandledRejection'\x0a\x09\x09do: [ :err | ErrorHandler handleError: err. process exit: 2 ]",
  91148. referencedClasses: ["ErrorHandler"],
  91149. //>>excludeEnd("ide");
  91150. pragmas: [],
  91151. messageSends: ["on:do:", "handleError:", "exit:"]
  91152. }, function ($methodClass){ return function (){
  91153. var self=this,$self=this;
  91154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91155. return $core.withContext(function($ctx1) {
  91156. //>>excludeEnd("ctx");
  91157. var $1;
  91158. $1=process;
  91159. [$recv($1)._on_do_("uncaughtException",(function(err){
  91160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91161. return $core.withContext(function($ctx2) {
  91162. //>>excludeEnd("ctx");
  91163. [$recv($globals.ErrorHandler)._handleError_(err)
  91164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91165. ,$ctx2.sendIdx["handleError:"]=1
  91166. //>>excludeEnd("ctx");
  91167. ][0];
  91168. return [$recv(process)._exit_((1))
  91169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91170. ,$ctx2.sendIdx["exit:"]=1
  91171. //>>excludeEnd("ctx");
  91172. ][0];
  91173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91174. }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,1)});
  91175. //>>excludeEnd("ctx");
  91176. }))
  91177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91178. ,$ctx1.sendIdx["on:do:"]=1
  91179. //>>excludeEnd("ctx");
  91180. ][0];
  91181. $recv($1)._on_do_("unhandledRejection",(function(err){
  91182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91183. return $core.withContext(function($ctx2) {
  91184. //>>excludeEnd("ctx");
  91185. $recv($globals.ErrorHandler)._handleError_(err);
  91186. return $recv(process)._exit_((2));
  91187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91188. }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,2)});
  91189. //>>excludeEnd("ctx");
  91190. }));
  91191. return self;
  91192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91193. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  91194. //>>excludeEnd("ctx");
  91195. }; }),
  91196. $globals.NodePlatform);
  91197. $core.addMethod(
  91198. $core.method({
  91199. selector: "newXhr",
  91200. protocol: "public API",
  91201. //>>excludeStart("ide", pragmas.excludeIdeData);
  91202. args: [],
  91203. source: "newXhr\x0a\x09XMLHttpRequest\x0a\x09\x09ifNotNil: [ ^ XMLHttpRequest new ]\x0a\x09\x09ifNil: [ self error: 'XMLHttpRequest not available.' ]",
  91204. referencedClasses: ["XMLHttpRequest"],
  91205. //>>excludeEnd("ide");
  91206. pragmas: [],
  91207. messageSends: ["ifNotNil:ifNil:", "new", "error:"]
  91208. }, function ($methodClass){ return function (){
  91209. var self=this,$self=this;
  91210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91211. return $core.withContext(function($ctx1) {
  91212. //>>excludeEnd("ctx");
  91213. var $1;
  91214. $1=$globals.XMLHttpRequest;
  91215. if($1 == null || $1.a$nil){
  91216. $self._error_("XMLHttpRequest not available.");
  91217. } else {
  91218. return $recv($globals.XMLHttpRequest)._new();
  91219. }
  91220. return self;
  91221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91222. }, function($ctx1) {$ctx1.fill(self,"newXhr",{})});
  91223. //>>excludeEnd("ctx");
  91224. }; }),
  91225. $globals.NodePlatform);
  91226. $core.addMethod(
  91227. $core.method({
  91228. selector: "initialize",
  91229. protocol: "testing",
  91230. //>>excludeStart("ide", pragmas.excludeIdeData);
  91231. args: [],
  91232. source: "initialize\x0a\x09self isFeasible ifTrue: [ Platform registerIfNone: self new ]",
  91233. referencedClasses: ["Platform"],
  91234. //>>excludeEnd("ide");
  91235. pragmas: [],
  91236. messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
  91237. }, function ($methodClass){ return function (){
  91238. var self=this,$self=this;
  91239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91240. return $core.withContext(function($ctx1) {
  91241. //>>excludeEnd("ctx");
  91242. if($core.assert($self._isFeasible())){
  91243. $recv($globals.Platform)._registerIfNone_($self._new());
  91244. }
  91245. return self;
  91246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91247. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  91248. //>>excludeEnd("ctx");
  91249. }; }),
  91250. $globals.NodePlatform.a$cls);
  91251. $core.addMethod(
  91252. $core.method({
  91253. selector: "isFeasible",
  91254. protocol: "testing",
  91255. //>>excludeStart("ide", pragmas.excludeIdeData);
  91256. args: [],
  91257. source: "isFeasible\x0a<inlineJS: 'return typeof process !== \x22undefined\x22 && process && process.versions && process.versions.node != null'>",
  91258. referencedClasses: [],
  91259. //>>excludeEnd("ide");
  91260. pragmas: [["inlineJS:", ["return typeof process !== \x22undefined\x22 && process && process.versions && process.versions.node != null"]]],
  91261. messageSends: []
  91262. }, function ($methodClass){ return function (){
  91263. var self=this,$self=this;
  91264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91265. return $core.withContext(function($ctx1) {
  91266. //>>excludeEnd("ctx");
  91267. return typeof process !== "undefined" && process && process.versions && process.versions.node != null;
  91268. return self;
  91269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91270. }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
  91271. //>>excludeEnd("ctx");
  91272. }; }),
  91273. $globals.NodePlatform.a$cls);
  91274. });
  91275. define('amber_cli/AmberCli',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  91276. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  91277. var $pkg = $core.addPackage("AmberCli");
  91278. $pkg.transport = {"type":"amd","amdNamespace":"amber_cli"};
  91279. $core.addClass("AmberCli", $globals.Object, "AmberCli");
  91280. //>>excludeStart("ide", pragmas.excludeIdeData);
  91281. $globals.AmberCli.comment="I am the Amber CLI (CommandLine Interface) tool which runs on Node.js.\x0a\x0aMy responsibility is to start different Amber programs like the FileServer or the Repl.\x0aWhich program to start is determined by the first commandline parameters passed to the AmberCli executable.\x0aUse `help` to get a list of all available options.\x0aAny further commandline parameters are passed to the specific program.\x0a\x0a## Commands\x0a\x0aNew commands can be added by creating a class side method in the `commands` protocol which takes one parameter.\x0aThis parameter is an array of all commandline options + values passed on to the program.\x0aAny `camelCaseCommand` is transformed into a commandline parameter of the form `camel-case-command` and vice versa.";
  91282. //>>excludeEnd("ide");
  91283. $core.addMethod(
  91284. $core.method({
  91285. selector: "commandLineSwitches",
  91286. protocol: "commandline",
  91287. //>>excludeStart("ide", pragmas.excludeIdeData);
  91288. args: [],
  91289. source: "commandLineSwitches\x0a\x09\x22Collect all methodnames from the 'commands' protocol of the class\x0a\x09 and select the ones with only one parameter.\x0a\x09 Then remove the ':' at the end of the name.\x0a\x09 Additionally all uppercase letters are made lowercase and preceded by a '-'.\x0a\x09 Example: fallbackPage: becomes --fallback-page.\x0a\x09 Return the Array containing the commandline switches.\x22\x0a\x09| switches |\x0a\x09switches := ((self class methodsInProtocol: 'commands') collect: [ :each | each selector]).\x0a\x09switches := switches select: [ :each | each match: '^[^:]*:$'].\x0a\x09switches :=switches collect: [ :each |\x0a\x09\x09(each allButLast replace: '([A-Z])' with: '-$1') asLowercase].\x0a\x09^ switches",
  91290. referencedClasses: [],
  91291. //>>excludeEnd("ide");
  91292. pragmas: [],
  91293. messageSends: ["collect:", "methodsInProtocol:", "class", "selector", "select:", "match:", "asLowercase", "replace:with:", "allButLast"]
  91294. }, function ($methodClass){ return function (){
  91295. var self=this,$self=this;
  91296. var switches;
  91297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91298. return $core.withContext(function($ctx1) {
  91299. //>>excludeEnd("ctx");
  91300. switches=[$recv($recv($self._class())._methodsInProtocol_("commands"))._collect_((function(each){
  91301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91302. return $core.withContext(function($ctx2) {
  91303. //>>excludeEnd("ctx");
  91304. return $recv(each)._selector();
  91305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91306. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  91307. //>>excludeEnd("ctx");
  91308. }))
  91309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91310. ,$ctx1.sendIdx["collect:"]=1
  91311. //>>excludeEnd("ctx");
  91312. ][0];
  91313. switches=$recv(switches)._select_((function(each){
  91314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91315. return $core.withContext(function($ctx2) {
  91316. //>>excludeEnd("ctx");
  91317. return $recv(each)._match_("^[^:]*:$");
  91318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91319. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  91320. //>>excludeEnd("ctx");
  91321. }));
  91322. switches=$recv(switches)._collect_((function(each){
  91323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91324. return $core.withContext(function($ctx2) {
  91325. //>>excludeEnd("ctx");
  91326. return $recv($recv($recv(each)._allButLast())._replace_with_("([A-Z])","-$1"))._asLowercase();
  91327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91328. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  91329. //>>excludeEnd("ctx");
  91330. }));
  91331. return switches;
  91332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91333. }, function($ctx1) {$ctx1.fill(self,"commandLineSwitches",{switches:switches})});
  91334. //>>excludeEnd("ctx");
  91335. }; }),
  91336. $globals.AmberCli.a$cls);
  91337. $core.addMethod(
  91338. $core.method({
  91339. selector: "config:",
  91340. protocol: "commands",
  91341. //>>excludeStart("ide", pragmas.excludeIdeData);
  91342. args: ["args"],
  91343. source: "config: args\x0a\x09Configurator new start",
  91344. referencedClasses: ["Configurator"],
  91345. //>>excludeEnd("ide");
  91346. pragmas: [],
  91347. messageSends: ["start", "new"]
  91348. }, function ($methodClass){ return function (args){
  91349. var self=this,$self=this;
  91350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91351. return $core.withContext(function($ctx1) {
  91352. //>>excludeEnd("ctx");
  91353. $recv($recv($globals.Configurator)._new())._start();
  91354. return self;
  91355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91356. }, function($ctx1) {$ctx1.fill(self,"config:",{args:args})});
  91357. //>>excludeEnd("ctx");
  91358. }; }),
  91359. $globals.AmberCli.a$cls);
  91360. $core.addMethod(
  91361. $core.method({
  91362. selector: "handleArguments:",
  91363. protocol: "commandline",
  91364. //>>excludeStart("ide", pragmas.excludeIdeData);
  91365. args: ["args"],
  91366. source: "handleArguments: args\x0a\x09| selector |\x0a\x0a\x09selector := self selectorForCommandLineSwitch: (args first).\x0a\x09args remove: args first.\x0a\x09self perform: selector withArguments: { args }",
  91367. referencedClasses: [],
  91368. //>>excludeEnd("ide");
  91369. pragmas: [],
  91370. messageSends: ["selectorForCommandLineSwitch:", "first", "remove:", "perform:withArguments:"]
  91371. }, function ($methodClass){ return function (args){
  91372. var self=this,$self=this;
  91373. var selector;
  91374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91375. return $core.withContext(function($ctx1) {
  91376. //>>excludeEnd("ctx");
  91377. selector=$self._selectorForCommandLineSwitch_([$recv(args)._first()
  91378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91379. ,$ctx1.sendIdx["first"]=1
  91380. //>>excludeEnd("ctx");
  91381. ][0]);
  91382. $recv(args)._remove_($recv(args)._first());
  91383. $self._perform_withArguments_(selector,[args]);
  91384. return self;
  91385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91386. }, function($ctx1) {$ctx1.fill(self,"handleArguments:",{args:args,selector:selector})});
  91387. //>>excludeEnd("ctx");
  91388. }; }),
  91389. $globals.AmberCli.a$cls);
  91390. $core.addMethod(
  91391. $core.method({
  91392. selector: "help:",
  91393. protocol: "commands",
  91394. //>>excludeStart("ide", pragmas.excludeIdeData);
  91395. args: ["args"],
  91396. source: "help: args\x0a\x09Transcript show: 'Available commands'.\x0a\x09self commandLineSwitches do: [ :each | console log: each ]",
  91397. referencedClasses: ["Transcript"],
  91398. //>>excludeEnd("ide");
  91399. pragmas: [],
  91400. messageSends: ["show:", "do:", "commandLineSwitches", "log:"]
  91401. }, function ($methodClass){ return function (args){
  91402. var self=this,$self=this;
  91403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91404. return $core.withContext(function($ctx1) {
  91405. //>>excludeEnd("ctx");
  91406. $recv($globals.Transcript)._show_("Available commands");
  91407. $recv($self._commandLineSwitches())._do_((function(each){
  91408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91409. return $core.withContext(function($ctx2) {
  91410. //>>excludeEnd("ctx");
  91411. return $recv(console)._log_(each);
  91412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91413. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  91414. //>>excludeEnd("ctx");
  91415. }));
  91416. return self;
  91417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91418. }, function($ctx1) {$ctx1.fill(self,"help:",{args:args})});
  91419. //>>excludeEnd("ctx");
  91420. }; }),
  91421. $globals.AmberCli.a$cls);
  91422. $core.addMethod(
  91423. $core.method({
  91424. selector: "init:",
  91425. protocol: "commands",
  91426. //>>excludeStart("ide", pragmas.excludeIdeData);
  91427. args: ["args"],
  91428. source: "init: args\x0a\x09Initer new start",
  91429. referencedClasses: ["Initer"],
  91430. //>>excludeEnd("ide");
  91431. pragmas: [],
  91432. messageSends: ["start", "new"]
  91433. }, function ($methodClass){ return function (args){
  91434. var self=this,$self=this;
  91435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91436. return $core.withContext(function($ctx1) {
  91437. //>>excludeEnd("ctx");
  91438. $recv($recv($globals.Initer)._new())._start();
  91439. return self;
  91440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91441. }, function($ctx1) {$ctx1.fill(self,"init:",{args:args})});
  91442. //>>excludeEnd("ctx");
  91443. }; }),
  91444. $globals.AmberCli.a$cls);
  91445. $core.addMethod(
  91446. $core.method({
  91447. selector: "main",
  91448. protocol: "startup",
  91449. //>>excludeStart("ide", pragmas.excludeIdeData);
  91450. args: [],
  91451. source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09Parses commandline arguments and starts the according subprogram.\x22\x0a\x09| args packageJSON |\x0a\x09\x0a\x09packageJSON := require value: '../package.json'.\x0a\x09Transcript show: 'Welcome to Amber CLI version ', packageJSON version, ' (Amber ', Smalltalk version, ', NodeJS ', process versions node, ').'.\x0a\x0a\x09args := process argv.\x0a\x09\x22Remove the first args which contain the path to the node executable and the script file.\x22\x0a\x09args removeFrom: 1 to: 2.\x0a\x09\x0a\x09args\x0a\x09\x09ifEmpty: [self help: nil]\x0a\x09\x09ifNotEmpty: [^self handleArguments: args]",
  91452. referencedClasses: ["Transcript", "Smalltalk"],
  91453. //>>excludeEnd("ide");
  91454. pragmas: [],
  91455. messageSends: ["value:", "show:", ",", "version", "node", "versions", "argv", "removeFrom:to:", "ifEmpty:ifNotEmpty:", "help:", "handleArguments:"]
  91456. }, function ($methodClass){ return function (){
  91457. var self=this,$self=this;
  91458. var args,packageJSON;
  91459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91460. return $core.withContext(function($ctx1) {
  91461. //>>excludeEnd("ctx");
  91462. var $early={};
  91463. try {
  91464. packageJSON=$recv(require)._value_("../package.json");
  91465. $recv($globals.Transcript)._show_([$recv([$recv([$recv([$recv([$recv("Welcome to Amber CLI version ".__comma([$recv(packageJSON)._version()
  91466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91467. ,$ctx1.sendIdx["version"]=1
  91468. //>>excludeEnd("ctx");
  91469. ][0])).__comma(" (Amber ")
  91470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91471. ,$ctx1.sendIdx[","]=5
  91472. //>>excludeEnd("ctx");
  91473. ][0]).__comma($recv($globals.Smalltalk)._version())
  91474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91475. ,$ctx1.sendIdx[","]=4
  91476. //>>excludeEnd("ctx");
  91477. ][0]).__comma(", NodeJS ")
  91478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91479. ,$ctx1.sendIdx[","]=3
  91480. //>>excludeEnd("ctx");
  91481. ][0]).__comma($recv($recv(process)._versions())._node())
  91482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91483. ,$ctx1.sendIdx[","]=2
  91484. //>>excludeEnd("ctx");
  91485. ][0]).__comma(").")
  91486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91487. ,$ctx1.sendIdx[","]=1
  91488. //>>excludeEnd("ctx");
  91489. ][0]);
  91490. args=$recv(process)._argv();
  91491. $recv(args)._removeFrom_to_((1),(2));
  91492. $recv(args)._ifEmpty_ifNotEmpty_((function(){
  91493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91494. return $core.withContext(function($ctx2) {
  91495. //>>excludeEnd("ctx");
  91496. return $self._help_(nil);
  91497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91498. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  91499. //>>excludeEnd("ctx");
  91500. }),(function(){
  91501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91502. return $core.withContext(function($ctx2) {
  91503. //>>excludeEnd("ctx");
  91504. throw $early=[$self._handleArguments_(args)];
  91505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91506. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  91507. //>>excludeEnd("ctx");
  91508. }));
  91509. return self;
  91510. }
  91511. catch(e) {if(e===$early)return e[0]; throw e}
  91512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91513. }, function($ctx1) {$ctx1.fill(self,"main",{args:args,packageJSON:packageJSON})});
  91514. //>>excludeEnd("ctx");
  91515. }; }),
  91516. $globals.AmberCli.a$cls);
  91517. $core.addMethod(
  91518. $core.method({
  91519. selector: "repl:",
  91520. protocol: "commands",
  91521. //>>excludeStart("ide", pragmas.excludeIdeData);
  91522. args: ["args"],
  91523. source: "repl: args\x0a\x09^ Repl new createInterface",
  91524. referencedClasses: ["Repl"],
  91525. //>>excludeEnd("ide");
  91526. pragmas: [],
  91527. messageSends: ["createInterface", "new"]
  91528. }, function ($methodClass){ return function (args){
  91529. var self=this,$self=this;
  91530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91531. return $core.withContext(function($ctx1) {
  91532. //>>excludeEnd("ctx");
  91533. return $recv($recv($globals.Repl)._new())._createInterface();
  91534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91535. }, function($ctx1) {$ctx1.fill(self,"repl:",{args:args})});
  91536. //>>excludeEnd("ctx");
  91537. }; }),
  91538. $globals.AmberCli.a$cls);
  91539. $core.addMethod(
  91540. $core.method({
  91541. selector: "selectorForCommandLineSwitch:",
  91542. protocol: "commandline",
  91543. //>>excludeStart("ide", pragmas.excludeIdeData);
  91544. args: ["aSwitch"],
  91545. source: "selectorForCommandLineSwitch: aSwitch\x0a\x09\x22Add ':' at the end and replace all occurences of a lowercase letter preceded by a '-' with the Uppercase letter.\x0a\x09 Example: fallback-page becomes fallbackPage:.\x0a\x09 If no correct selector is found return 'help:'\x22\x0a\x09 | command selector |\x0a\x0a\x09 (self commandLineSwitches includes: aSwitch)\x0a\x09 ifTrue: [ selector := (aSwitch replace: '-[a-z]' with: [ :each | each second asUppercase ]), ':']\x0a\x09 ifFalse: [ selector := 'help:' ].\x0a\x09^ selector",
  91546. referencedClasses: [],
  91547. //>>excludeEnd("ide");
  91548. pragmas: [],
  91549. messageSends: ["ifTrue:ifFalse:", "includes:", "commandLineSwitches", ",", "replace:with:", "asUppercase", "second"]
  91550. }, function ($methodClass){ return function (aSwitch){
  91551. var self=this,$self=this;
  91552. var command,selector;
  91553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91554. return $core.withContext(function($ctx1) {
  91555. //>>excludeEnd("ctx");
  91556. if($core.assert($recv($self._commandLineSwitches())._includes_(aSwitch))){
  91557. selector=$recv($recv(aSwitch)._replace_with_("-[a-z]",(function(each){
  91558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91559. return $core.withContext(function($ctx2) {
  91560. //>>excludeEnd("ctx");
  91561. return $recv($recv(each)._second())._asUppercase();
  91562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91563. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  91564. //>>excludeEnd("ctx");
  91565. }))).__comma(":");
  91566. selector;
  91567. } else {
  91568. selector="help:";
  91569. selector;
  91570. }
  91571. return selector;
  91572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91573. }, function($ctx1) {$ctx1.fill(self,"selectorForCommandLineSwitch:",{aSwitch:aSwitch,command:command,selector:selector})});
  91574. //>>excludeEnd("ctx");
  91575. }; }),
  91576. $globals.AmberCli.a$cls);
  91577. $core.addMethod(
  91578. $core.method({
  91579. selector: "serve:",
  91580. protocol: "commands",
  91581. //>>excludeStart("ide", pragmas.excludeIdeData);
  91582. args: ["args"],
  91583. source: "serve: args\x0a\x09^ (FileServer createServerWithArguments: args) start",
  91584. referencedClasses: ["FileServer"],
  91585. //>>excludeEnd("ide");
  91586. pragmas: [],
  91587. messageSends: ["start", "createServerWithArguments:"]
  91588. }, function ($methodClass){ return function (args){
  91589. var self=this,$self=this;
  91590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91591. return $core.withContext(function($ctx1) {
  91592. //>>excludeEnd("ctx");
  91593. return $recv($recv($globals.FileServer)._createServerWithArguments_(args))._start();
  91594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91595. }, function($ctx1) {$ctx1.fill(self,"serve:",{args:args})});
  91596. //>>excludeEnd("ctx");
  91597. }; }),
  91598. $globals.AmberCli.a$cls);
  91599. $core.addMethod(
  91600. $core.method({
  91601. selector: "version:",
  91602. protocol: "commands",
  91603. //>>excludeStart("ide", pragmas.excludeIdeData);
  91604. args: ["arguments"],
  91605. source: "version: arguments",
  91606. referencedClasses: [],
  91607. //>>excludeEnd("ide");
  91608. pragmas: [],
  91609. messageSends: []
  91610. }, function ($methodClass){ return function (arguments_){
  91611. var self=this,$self=this;
  91612. return self;
  91613. }; }),
  91614. $globals.AmberCli.a$cls);
  91615. $core.addClass("BaseFileManipulator", $globals.Object, "AmberCli");
  91616. $core.setSlots($globals.BaseFileManipulator, ["path", "fs"]);
  91617. $core.addMethod(
  91618. $core.method({
  91619. selector: "dirname",
  91620. protocol: "private",
  91621. //>>excludeStart("ide", pragmas.excludeIdeData);
  91622. args: [],
  91623. source: "dirname\x0a\x09<inlineJS: 'return __dirname'>",
  91624. referencedClasses: [],
  91625. //>>excludeEnd("ide");
  91626. pragmas: [["inlineJS:", ["return __dirname"]]],
  91627. messageSends: []
  91628. }, function ($methodClass){ return function (){
  91629. var self=this,$self=this;
  91630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91631. return $core.withContext(function($ctx1) {
  91632. //>>excludeEnd("ctx");
  91633. return __dirname;
  91634. return self;
  91635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91636. }, function($ctx1) {$ctx1.fill(self,"dirname",{})});
  91637. //>>excludeEnd("ctx");
  91638. }; }),
  91639. $globals.BaseFileManipulator);
  91640. $core.addMethod(
  91641. $core.method({
  91642. selector: "initialize",
  91643. protocol: "initialization",
  91644. //>>excludeStart("ide", pragmas.excludeIdeData);
  91645. args: [],
  91646. source: "initialize\x0a\x09super initialize.\x0a\x09path := require value: 'path'.\x0a\x09fs := require value: 'fs'",
  91647. referencedClasses: [],
  91648. //>>excludeEnd("ide");
  91649. pragmas: [],
  91650. messageSends: ["initialize", "value:"]
  91651. }, function ($methodClass){ return function (){
  91652. var self=this,$self=this;
  91653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91654. return $core.withContext(function($ctx1) {
  91655. //>>excludeEnd("ctx");
  91656. [(
  91657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91658. $ctx1.supercall = true,
  91659. //>>excludeEnd("ctx");
  91660. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  91661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91662. ,$ctx1.supercall = false
  91663. //>>excludeEnd("ctx");
  91664. ][0];
  91665. $self.path=[$recv(require)._value_("path")
  91666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91667. ,$ctx1.sendIdx["value:"]=1
  91668. //>>excludeEnd("ctx");
  91669. ][0];
  91670. $self.fs=$recv(require)._value_("fs");
  91671. return self;
  91672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91673. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  91674. //>>excludeEnd("ctx");
  91675. }; }),
  91676. $globals.BaseFileManipulator);
  91677. $core.addMethod(
  91678. $core.method({
  91679. selector: "rootDirname",
  91680. protocol: "private",
  91681. //>>excludeStart("ide", pragmas.excludeIdeData);
  91682. args: [],
  91683. source: "rootDirname\x0a\x09^ path join: self dirname with: '..'",
  91684. referencedClasses: [],
  91685. //>>excludeEnd("ide");
  91686. pragmas: [],
  91687. messageSends: ["join:with:", "dirname"]
  91688. }, function ($methodClass){ return function (){
  91689. var self=this,$self=this;
  91690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91691. return $core.withContext(function($ctx1) {
  91692. //>>excludeEnd("ctx");
  91693. return $recv($self.path)._join_with_($self._dirname(),"..");
  91694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91695. }, function($ctx1) {$ctx1.fill(self,"rootDirname",{})});
  91696. //>>excludeEnd("ctx");
  91697. }; }),
  91698. $globals.BaseFileManipulator);
  91699. $core.addClass("Configurator", $globals.BaseFileManipulator, "AmberCli");
  91700. $core.addMethod(
  91701. $core.method({
  91702. selector: "initialize",
  91703. protocol: "initialization",
  91704. //>>excludeStart("ide", pragmas.excludeIdeData);
  91705. args: [],
  91706. source: "initialize\x0a\x09super initialize",
  91707. referencedClasses: [],
  91708. //>>excludeEnd("ide");
  91709. pragmas: [],
  91710. messageSends: ["initialize"]
  91711. }, function ($methodClass){ return function (){
  91712. var self=this,$self=this;
  91713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91714. return $core.withContext(function($ctx1) {
  91715. //>>excludeEnd("ctx");
  91716. [(
  91717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91718. $ctx1.supercall = true,
  91719. //>>excludeEnd("ctx");
  91720. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  91721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91722. ,$ctx1.supercall = false
  91723. //>>excludeEnd("ctx");
  91724. ][0];
  91725. return self;
  91726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91727. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  91728. //>>excludeEnd("ctx");
  91729. }; }),
  91730. $globals.Configurator);
  91731. $core.addMethod(
  91732. $core.method({
  91733. selector: "start",
  91734. protocol: "action",
  91735. //>>excludeStart("ide", pragmas.excludeIdeData);
  91736. args: [],
  91737. source: "start\x0a\x09self writeConfigThenDo: [ :err | err\x0a\x09\x09ifNotNil: [ process exit: 111 ]\x0a\x09\x09ifNil: [ process exit ]]",
  91738. referencedClasses: [],
  91739. //>>excludeEnd("ide");
  91740. pragmas: [],
  91741. messageSends: ["writeConfigThenDo:", "ifNotNil:ifNil:", "exit:", "exit"]
  91742. }, function ($methodClass){ return function (){
  91743. var self=this,$self=this;
  91744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91745. return $core.withContext(function($ctx1) {
  91746. //>>excludeEnd("ctx");
  91747. $self._writeConfigThenDo_((function(err){
  91748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91749. return $core.withContext(function($ctx2) {
  91750. //>>excludeEnd("ctx");
  91751. if(err == null || err.a$nil){
  91752. return $recv(process)._exit();
  91753. } else {
  91754. return $recv(process)._exit_((111));
  91755. }
  91756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91757. }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,1)});
  91758. //>>excludeEnd("ctx");
  91759. }));
  91760. return self;
  91761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91762. }, function($ctx1) {$ctx1.fill(self,"start",{})});
  91763. //>>excludeEnd("ctx");
  91764. }; }),
  91765. $globals.Configurator);
  91766. $core.addMethod(
  91767. $core.method({
  91768. selector: "writeConfigThenDo:",
  91769. protocol: "action",
  91770. //>>excludeStart("ide", pragmas.excludeIdeData);
  91771. args: ["aBlock"],
  91772. source: "writeConfigThenDo: aBlock\x0a\x09(require value: '@ambers/sdk') configBuilder\x0a\x09\x09writeConfig: process cwd\x0a\x09\x09toFile: 'config.js'\x0a\x09\x09thenDo: aBlock",
  91773. referencedClasses: [],
  91774. //>>excludeEnd("ide");
  91775. pragmas: [],
  91776. messageSends: ["writeConfig:toFile:thenDo:", "configBuilder", "value:", "cwd"]
  91777. }, function ($methodClass){ return function (aBlock){
  91778. var self=this,$self=this;
  91779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91780. return $core.withContext(function($ctx1) {
  91781. //>>excludeEnd("ctx");
  91782. $recv($recv($recv(require)._value_("@ambers/sdk"))._configBuilder())._writeConfig_toFile_thenDo_($recv(process)._cwd(),"config.js",aBlock);
  91783. return self;
  91784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91785. }, function($ctx1) {$ctx1.fill(self,"writeConfigThenDo:",{aBlock:aBlock})});
  91786. //>>excludeEnd("ctx");
  91787. }; }),
  91788. $globals.Configurator);
  91789. $core.addClass("FileServer", $globals.BaseFileManipulator, "AmberCli");
  91790. $core.setSlots($globals.FileServer, ["http", "url", "host", "port", "basePath", "util", "username", "password", "fallbackPage"]);
  91791. //>>excludeStart("ide", pragmas.excludeIdeData);
  91792. $globals.FileServer.comment="I am the Amber Smalltalk FileServer.\x0aMy runtime requirement is a functional Node.js executable.\x0a\x0aTo start a FileServer instance on port `4000` use the following code:\x0a\x0a FileServer new start\x0a\x0aA parameterized instance can be created with the following code:\x0a\x0a FileServer createServerWithArguments: options\x0a\x0aHere, `options` is an array of commandline style strings each followed by a value e.g. `#('--port', '6000', '--host', '0.0.0.0')`.\x0aA list of all available parameters can be printed to the commandline by passing `--help` as parameter.\x0aSee the `Options` section for further details on how options are mapped to instance methods.\x0a\x0aAfter startup FileServer checks if the directory layout required by Amber is present and logs a warning on absence.\x0a\x0a\x0a## Options\x0a\x0aEach option is of the form `--some-option-string` which is transformed into a selector of the format `someOptionString:`.\x0aThe trailing `--` gets removed, each `-[a-z]` gets transformed into the according uppercase letter, and a `:` is appended to create a selector which takes a single argument.\x0aAfterwards, the selector gets executed on the `FileServer` instance with the value following in the options array as parameter.\x0a\x0a## Adding new commandline parameters\x0a\x0aAdding new commandline parameters to `FileServer` is as easy as adding a new single parameter method to the `accessing` protocol.";
  91793. //>>excludeEnd("ide");
  91794. $core.addMethod(
  91795. $core.method({
  91796. selector: "base64Decode:",
  91797. protocol: "private",
  91798. //>>excludeStart("ide", pragmas.excludeIdeData);
  91799. args: ["aString"],
  91800. source: "base64Decode: aString\x0a\x09<inlineJS: 'return (new Buffer(aString, \x22base64\x22).toString())'>",
  91801. referencedClasses: [],
  91802. //>>excludeEnd("ide");
  91803. pragmas: [["inlineJS:", ["return (new Buffer(aString, \x22base64\x22).toString())"]]],
  91804. messageSends: []
  91805. }, function ($methodClass){ return function (aString){
  91806. var self=this,$self=this;
  91807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91808. return $core.withContext(function($ctx1) {
  91809. //>>excludeEnd("ctx");
  91810. return (new Buffer(aString, "base64").toString());
  91811. return self;
  91812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91813. }, function($ctx1) {$ctx1.fill(self,"base64Decode:",{aString:aString})});
  91814. //>>excludeEnd("ctx");
  91815. }; }),
  91816. $globals.FileServer);
  91817. $core.addMethod(
  91818. $core.method({
  91819. selector: "basePath",
  91820. protocol: "accessing",
  91821. //>>excludeStart("ide", pragmas.excludeIdeData);
  91822. args: [],
  91823. source: "basePath\x0a\x09^ basePath ifNil: [self class defaultBasePath]",
  91824. referencedClasses: [],
  91825. //>>excludeEnd("ide");
  91826. pragmas: [],
  91827. messageSends: ["ifNil:", "defaultBasePath", "class"]
  91828. }, function ($methodClass){ return function (){
  91829. var self=this,$self=this;
  91830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91831. return $core.withContext(function($ctx1) {
  91832. //>>excludeEnd("ctx");
  91833. var $1;
  91834. $1=$self.basePath;
  91835. if($1 == null || $1.a$nil){
  91836. return $recv($self._class())._defaultBasePath();
  91837. } else {
  91838. return $1;
  91839. }
  91840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91841. }, function($ctx1) {$ctx1.fill(self,"basePath",{})});
  91842. //>>excludeEnd("ctx");
  91843. }; }),
  91844. $globals.FileServer);
  91845. $core.addMethod(
  91846. $core.method({
  91847. selector: "basePath:",
  91848. protocol: "accessing",
  91849. //>>excludeStart("ide", pragmas.excludeIdeData);
  91850. args: ["aString"],
  91851. source: "basePath: aString\x0a\x09basePath := aString.\x0a\x09self validateBasePath.",
  91852. referencedClasses: [],
  91853. //>>excludeEnd("ide");
  91854. pragmas: [],
  91855. messageSends: ["validateBasePath"]
  91856. }, function ($methodClass){ return function (aString){
  91857. var self=this,$self=this;
  91858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91859. return $core.withContext(function($ctx1) {
  91860. //>>excludeEnd("ctx");
  91861. $self.basePath=aString;
  91862. $self._validateBasePath();
  91863. return self;
  91864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91865. }, function($ctx1) {$ctx1.fill(self,"basePath:",{aString:aString})});
  91866. //>>excludeEnd("ctx");
  91867. }; }),
  91868. $globals.FileServer);
  91869. $core.addMethod(
  91870. $core.method({
  91871. selector: "checkDirectoryLayout",
  91872. protocol: "initialization",
  91873. //>>excludeStart("ide", pragmas.excludeIdeData);
  91874. args: [],
  91875. source: "checkDirectoryLayout\x0a\x09(fs existsSync:\x09(self withBasePath: 'index.html')) ifFalse: [\x0a\x09\x09console warn: 'Warning: project directory does not contain index.html.'.\x0a\x09\x09console warn: ' You can specify the directory containing index.html with --base-path.'.\x0a\x09\x09console warn: ' You can also specify a page to be served by default,'.\x0a\x09\x09console warn: ' for all paths that do not map to a file, with --fallback-page.'].",
  91876. referencedClasses: [],
  91877. //>>excludeEnd("ide");
  91878. pragmas: [],
  91879. messageSends: ["ifFalse:", "existsSync:", "withBasePath:", "warn:"]
  91880. }, function ($methodClass){ return function (){
  91881. var self=this,$self=this;
  91882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91883. return $core.withContext(function($ctx1) {
  91884. //>>excludeEnd("ctx");
  91885. if(!$core.assert($recv($self.fs)._existsSync_($self._withBasePath_("index.html")))){
  91886. [$recv(console)._warn_("Warning: project directory does not contain index.html.")
  91887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91888. ,$ctx1.sendIdx["warn:"]=1
  91889. //>>excludeEnd("ctx");
  91890. ][0];
  91891. [$recv(console)._warn_(" You can specify the directory containing index.html with --base-path.")
  91892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91893. ,$ctx1.sendIdx["warn:"]=2
  91894. //>>excludeEnd("ctx");
  91895. ][0];
  91896. [$recv(console)._warn_(" You can also specify a page to be served by default,")
  91897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91898. ,$ctx1.sendIdx["warn:"]=3
  91899. //>>excludeEnd("ctx");
  91900. ][0];
  91901. $recv(console)._warn_(" for all paths that do not map to a file, with --fallback-page.");
  91902. }
  91903. return self;
  91904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91905. }, function($ctx1) {$ctx1.fill(self,"checkDirectoryLayout",{})});
  91906. //>>excludeEnd("ctx");
  91907. }; }),
  91908. $globals.FileServer);
  91909. $core.addMethod(
  91910. $core.method({
  91911. selector: "fallbackPage",
  91912. protocol: "accessing",
  91913. //>>excludeStart("ide", pragmas.excludeIdeData);
  91914. args: [],
  91915. source: "fallbackPage\x0a\x09^ fallbackPage",
  91916. referencedClasses: [],
  91917. //>>excludeEnd("ide");
  91918. pragmas: [],
  91919. messageSends: []
  91920. }, function ($methodClass){ return function (){
  91921. var self=this,$self=this;
  91922. return $self.fallbackPage;
  91923. }; }),
  91924. $globals.FileServer);
  91925. $core.addMethod(
  91926. $core.method({
  91927. selector: "fallbackPage:",
  91928. protocol: "accessing",
  91929. //>>excludeStart("ide", pragmas.excludeIdeData);
  91930. args: ["aString"],
  91931. source: "fallbackPage: aString\x0a\x09fallbackPage := aString",
  91932. referencedClasses: [],
  91933. //>>excludeEnd("ide");
  91934. pragmas: [],
  91935. messageSends: []
  91936. }, function ($methodClass){ return function (aString){
  91937. var self=this,$self=this;
  91938. $self.fallbackPage=aString;
  91939. return self;
  91940. }; }),
  91941. $globals.FileServer);
  91942. $core.addMethod(
  91943. $core.method({
  91944. selector: "handleGETRequest:respondTo:",
  91945. protocol: "request handling",
  91946. //>>excludeStart("ide", pragmas.excludeIdeData);
  91947. args: ["aRequest", "aResponse"],
  91948. source: "handleGETRequest: aRequest respondTo: aResponse\x0a\x09| uri filename |\x0a\x09uri := url parse: aRequest url.\x0a\x09filename := path join: self basePath with: uri pathname uriDecoded.\x0a\x09fs exists: filename do: [:aBoolean |\x0a\x09\x09aBoolean\x0a\x09\x09\x09ifFalse: [self respondNotFoundTo: aResponse]\x0a\x09\x09\x09ifTrue: [(fs statSync: filename) isDirectory\x0a\x09\x09\x09\x09ifTrue: [self respondDirectoryNamed: filename from: uri to: aResponse]\x0a\x09\x09\x09\x09ifFalse: [self respondFileNamed: filename to: aResponse]]]",
  91949. referencedClasses: [],
  91950. //>>excludeEnd("ide");
  91951. pragmas: [],
  91952. messageSends: ["parse:", "url", "join:with:", "basePath", "uriDecoded", "pathname", "exists:do:", "ifFalse:ifTrue:", "respondNotFoundTo:", "ifTrue:ifFalse:", "isDirectory", "statSync:", "respondDirectoryNamed:from:to:", "respondFileNamed:to:"]
  91953. }, function ($methodClass){ return function (aRequest,aResponse){
  91954. var self=this,$self=this;
  91955. var uri,filename;
  91956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91957. return $core.withContext(function($ctx1) {
  91958. //>>excludeEnd("ctx");
  91959. uri=$recv($self.url)._parse_($recv(aRequest)._url());
  91960. filename=$recv($self.path)._join_with_($self._basePath(),$recv($recv(uri)._pathname())._uriDecoded());
  91961. $recv($self.fs)._exists_do_(filename,(function(aBoolean){
  91962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91963. return $core.withContext(function($ctx2) {
  91964. //>>excludeEnd("ctx");
  91965. if($core.assert(aBoolean)){
  91966. if($core.assert($recv($recv($self.fs)._statSync_(filename))._isDirectory())){
  91967. return $self._respondDirectoryNamed_from_to_(filename,uri,aResponse);
  91968. } else {
  91969. return $self._respondFileNamed_to_(filename,aResponse);
  91970. }
  91971. } else {
  91972. return $self._respondNotFoundTo_(aResponse);
  91973. }
  91974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91975. }, function($ctx2) {$ctx2.fillBlock({aBoolean:aBoolean},$ctx1,1)});
  91976. //>>excludeEnd("ctx");
  91977. }));
  91978. return self;
  91979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91980. }, function($ctx1) {$ctx1.fill(self,"handleGETRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse,uri:uri,filename:filename})});
  91981. //>>excludeEnd("ctx");
  91982. }; }),
  91983. $globals.FileServer);
  91984. $core.addMethod(
  91985. $core.method({
  91986. selector: "handleOPTIONSRequest:respondTo:",
  91987. protocol: "request handling",
  91988. //>>excludeStart("ide", pragmas.excludeIdeData);
  91989. args: ["aRequest", "aResponse"],
  91990. source: "handleOPTIONSRequest: aRequest respondTo: aResponse\x0a\x09aResponse writeHead: 200 options: #{'Access-Control-Allow-Origin' -> '*'.\x0a\x09\x09\x09\x09\x09'Access-Control-Allow-Methods' -> 'GET, PUT, POST, DELETE, OPTIONS'.\x0a\x09\x09\x09\x09\x09'Access-Control-Allow-Headers' -> 'Content-Type, Accept'.\x0a\x09\x09\x09\x09\x09'Content-Length' -> 0.\x0a\x09\x09\x09\x09\x09'Access-Control-Max-Age' -> 10}.\x0a\x09aResponse end",
  91991. referencedClasses: [],
  91992. //>>excludeEnd("ide");
  91993. pragmas: [],
  91994. messageSends: ["writeHead:options:", "end"]
  91995. }, function ($methodClass){ return function (aRequest,aResponse){
  91996. var self=this,$self=this;
  91997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  91998. return $core.withContext(function($ctx1) {
  91999. //>>excludeEnd("ctx");
  92000. $recv(aResponse)._writeHead_options_((200),$globals.HashedCollection._newFromPairs_(["Access-Control-Allow-Origin","*","Access-Control-Allow-Methods","GET, PUT, POST, DELETE, OPTIONS","Access-Control-Allow-Headers","Content-Type, Accept","Content-Length",(0),"Access-Control-Max-Age",(10)]));
  92001. $recv(aResponse)._end();
  92002. return self;
  92003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92004. }, function($ctx1) {$ctx1.fill(self,"handleOPTIONSRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse})});
  92005. //>>excludeEnd("ctx");
  92006. }; }),
  92007. $globals.FileServer);
  92008. $core.addMethod(
  92009. $core.method({
  92010. selector: "handlePUTRequest:respondTo:",
  92011. protocol: "request handling",
  92012. //>>excludeStart("ide", pragmas.excludeIdeData);
  92013. args: ["aRequest", "aResponse"],
  92014. source: "handlePUTRequest: aRequest respondTo: aResponse\x0a\x09| file stream |\x0a\x09(self isAuthenticated: aRequest)\x0a\x09\x09ifFalse: [self respondAuthenticationRequiredTo: aResponse. ^ nil].\x0a\x0a\x09file := '.', aRequest url uriDecoded.\x0a\x09stream := fs createWriteStream: file.\x0a\x0a\x09stream on: 'error' do: [:error |\x0a\x09\x09console warn: 'Error creating WriteStream for file ', file.\x0a\x09\x09console warn: ' Did you forget to create the necessary directory in your project (often /src)?'.\x0a\x09\x09console warn: ' The exact error is: ', error asString.\x0a\x09\x09self respondNotCreatedTo: aResponse].\x0a\x0a\x09stream on: 'close' do: [\x0a\x09\x09self respondCreatedTo: aResponse].\x0a\x0a\x09aRequest setEncoding: 'utf8'.\x0a\x09aRequest on: 'data' do: [:data |\x0a\x09\x09stream write: data].\x0a\x0a\x09aRequest on: 'end' do: [\x0a\x09\x09stream writable ifTrue: [stream end]]",
  92015. referencedClasses: [],
  92016. //>>excludeEnd("ide");
  92017. pragmas: [],
  92018. messageSends: ["ifFalse:", "isAuthenticated:", "respondAuthenticationRequiredTo:", ",", "uriDecoded", "url", "createWriteStream:", "on:do:", "warn:", "asString", "respondNotCreatedTo:", "respondCreatedTo:", "setEncoding:", "write:", "ifTrue:", "writable", "end"]
  92019. }, function ($methodClass){ return function (aRequest,aResponse){
  92020. var self=this,$self=this;
  92021. var file,stream;
  92022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92023. return $core.withContext(function($ctx1) {
  92024. //>>excludeEnd("ctx");
  92025. if(!$core.assert($self._isAuthenticated_(aRequest))){
  92026. $self._respondAuthenticationRequiredTo_(aResponse);
  92027. return nil;
  92028. }
  92029. file=[".".__comma($recv($recv(aRequest)._url())._uriDecoded())
  92030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92031. ,$ctx1.sendIdx[","]=1
  92032. //>>excludeEnd("ctx");
  92033. ][0];
  92034. stream=$recv($self.fs)._createWriteStream_(file);
  92035. [$recv(stream)._on_do_("error",(function(error){
  92036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92037. return $core.withContext(function($ctx2) {
  92038. //>>excludeEnd("ctx");
  92039. [$recv(console)._warn_(["Error creating WriteStream for file ".__comma(file)
  92040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92041. ,$ctx2.sendIdx[","]=2
  92042. //>>excludeEnd("ctx");
  92043. ][0])
  92044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92045. ,$ctx2.sendIdx["warn:"]=1
  92046. //>>excludeEnd("ctx");
  92047. ][0];
  92048. [$recv(console)._warn_(" Did you forget to create the necessary directory in your project (often /src)?")
  92049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92050. ,$ctx2.sendIdx["warn:"]=2
  92051. //>>excludeEnd("ctx");
  92052. ][0];
  92053. $recv(console)._warn_(" The exact error is: ".__comma($recv(error)._asString()));
  92054. return $self._respondNotCreatedTo_(aResponse);
  92055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92056. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  92057. //>>excludeEnd("ctx");
  92058. }))
  92059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92060. ,$ctx1.sendIdx["on:do:"]=1
  92061. //>>excludeEnd("ctx");
  92062. ][0];
  92063. [$recv(stream)._on_do_("close",(function(){
  92064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92065. return $core.withContext(function($ctx2) {
  92066. //>>excludeEnd("ctx");
  92067. return $self._respondCreatedTo_(aResponse);
  92068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92069. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  92070. //>>excludeEnd("ctx");
  92071. }))
  92072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92073. ,$ctx1.sendIdx["on:do:"]=2
  92074. //>>excludeEnd("ctx");
  92075. ][0];
  92076. $recv(aRequest)._setEncoding_("utf8");
  92077. [$recv(aRequest)._on_do_("data",(function(data){
  92078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92079. return $core.withContext(function($ctx2) {
  92080. //>>excludeEnd("ctx");
  92081. return $recv(stream)._write_(data);
  92082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92083. }, function($ctx2) {$ctx2.fillBlock({data:data},$ctx1,4)});
  92084. //>>excludeEnd("ctx");
  92085. }))
  92086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92087. ,$ctx1.sendIdx["on:do:"]=3
  92088. //>>excludeEnd("ctx");
  92089. ][0];
  92090. $recv(aRequest)._on_do_("end",(function(){
  92091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92092. return $core.withContext(function($ctx2) {
  92093. //>>excludeEnd("ctx");
  92094. if($core.assert($recv(stream)._writable())){
  92095. return $recv(stream)._end();
  92096. }
  92097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92098. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  92099. //>>excludeEnd("ctx");
  92100. }));
  92101. return self;
  92102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92103. }, function($ctx1) {$ctx1.fill(self,"handlePUTRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse,file:file,stream:stream})});
  92104. //>>excludeEnd("ctx");
  92105. }; }),
  92106. $globals.FileServer);
  92107. $core.addMethod(
  92108. $core.method({
  92109. selector: "handleRequest:respondTo:",
  92110. protocol: "request handling",
  92111. //>>excludeStart("ide", pragmas.excludeIdeData);
  92112. args: ["aRequest", "aResponse"],
  92113. source: "handleRequest: aRequest respondTo: aResponse\x0a\x09aRequest method = 'PUT'\x0a\x09\x09ifTrue: [self handlePUTRequest: aRequest respondTo: aResponse].\x0a\x09aRequest method = 'GET'\x0a\x09\x09ifTrue:[self handleGETRequest: aRequest respondTo: aResponse].\x0a\x09aRequest method = 'OPTIONS'\x0a\x09\x09ifTrue:[self handleOPTIONSRequest: aRequest respondTo: aResponse]",
  92114. referencedClasses: [],
  92115. //>>excludeEnd("ide");
  92116. pragmas: [],
  92117. messageSends: ["ifTrue:", "=", "method", "handlePUTRequest:respondTo:", "handleGETRequest:respondTo:", "handleOPTIONSRequest:respondTo:"]
  92118. }, function ($methodClass){ return function (aRequest,aResponse){
  92119. var self=this,$self=this;
  92120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92121. return $core.withContext(function($ctx1) {
  92122. //>>excludeEnd("ctx");
  92123. if($core.assert([$recv([$recv(aRequest)._method()
  92124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92125. ,$ctx1.sendIdx["method"]=1
  92126. //>>excludeEnd("ctx");
  92127. ][0]).__eq("PUT")
  92128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92129. ,$ctx1.sendIdx["="]=1
  92130. //>>excludeEnd("ctx");
  92131. ][0])){
  92132. $self._handlePUTRequest_respondTo_(aRequest,aResponse);
  92133. }
  92134. if($core.assert([$recv([$recv(aRequest)._method()
  92135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92136. ,$ctx1.sendIdx["method"]=2
  92137. //>>excludeEnd("ctx");
  92138. ][0]).__eq("GET")
  92139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92140. ,$ctx1.sendIdx["="]=2
  92141. //>>excludeEnd("ctx");
  92142. ][0])){
  92143. $self._handleGETRequest_respondTo_(aRequest,aResponse);
  92144. }
  92145. if($core.assert($recv($recv(aRequest)._method()).__eq("OPTIONS"))){
  92146. $self._handleOPTIONSRequest_respondTo_(aRequest,aResponse);
  92147. }
  92148. return self;
  92149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92150. }, function($ctx1) {$ctx1.fill(self,"handleRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse})});
  92151. //>>excludeEnd("ctx");
  92152. }; }),
  92153. $globals.FileServer);
  92154. $core.addMethod(
  92155. $core.method({
  92156. selector: "host",
  92157. protocol: "accessing",
  92158. //>>excludeStart("ide", pragmas.excludeIdeData);
  92159. args: [],
  92160. source: "host\x0a\x09^ host",
  92161. referencedClasses: [],
  92162. //>>excludeEnd("ide");
  92163. pragmas: [],
  92164. messageSends: []
  92165. }, function ($methodClass){ return function (){
  92166. var self=this,$self=this;
  92167. return $self.host;
  92168. }; }),
  92169. $globals.FileServer);
  92170. $core.addMethod(
  92171. $core.method({
  92172. selector: "host:",
  92173. protocol: "accessing",
  92174. //>>excludeStart("ide", pragmas.excludeIdeData);
  92175. args: ["hostname"],
  92176. source: "host: hostname\x0a\x09host := hostname",
  92177. referencedClasses: [],
  92178. //>>excludeEnd("ide");
  92179. pragmas: [],
  92180. messageSends: []
  92181. }, function ($methodClass){ return function (hostname){
  92182. var self=this,$self=this;
  92183. $self.host=hostname;
  92184. return self;
  92185. }; }),
  92186. $globals.FileServer);
  92187. $core.addMethod(
  92188. $core.method({
  92189. selector: "initialize",
  92190. protocol: "initialization",
  92191. //>>excludeStart("ide", pragmas.excludeIdeData);
  92192. args: [],
  92193. source: "initialize\x0a\x09super initialize.\x0a\x09http := self require: 'http'.\x0a\x09util := self require: 'util'.\x0a\x09url := self require: 'url'.\x0a\x09host := self class defaultHost.\x0a\x09port := self class defaultPort.\x0a\x09username := nil.\x0a\x09password := nil.\x0a\x09fallbackPage := nil.",
  92194. referencedClasses: [],
  92195. //>>excludeEnd("ide");
  92196. pragmas: [],
  92197. messageSends: ["initialize", "require:", "defaultHost", "class", "defaultPort"]
  92198. }, function ($methodClass){ return function (){
  92199. var self=this,$self=this;
  92200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92201. return $core.withContext(function($ctx1) {
  92202. //>>excludeEnd("ctx");
  92203. [(
  92204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92205. $ctx1.supercall = true,
  92206. //>>excludeEnd("ctx");
  92207. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  92208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92209. ,$ctx1.supercall = false
  92210. //>>excludeEnd("ctx");
  92211. ][0];
  92212. $self.http=[$self._require_("http")
  92213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92214. ,$ctx1.sendIdx["require:"]=1
  92215. //>>excludeEnd("ctx");
  92216. ][0];
  92217. $self.util=[$self._require_("util")
  92218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92219. ,$ctx1.sendIdx["require:"]=2
  92220. //>>excludeEnd("ctx");
  92221. ][0];
  92222. $self.url=$self._require_("url");
  92223. $self.host=$recv([$self._class()
  92224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92225. ,$ctx1.sendIdx["class"]=1
  92226. //>>excludeEnd("ctx");
  92227. ][0])._defaultHost();
  92228. $self.port=$recv($self._class())._defaultPort();
  92229. $self.username=nil;
  92230. $self.password=nil;
  92231. $self.fallbackPage=nil;
  92232. return self;
  92233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92234. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  92235. //>>excludeEnd("ctx");
  92236. }; }),
  92237. $globals.FileServer);
  92238. $core.addMethod(
  92239. $core.method({
  92240. selector: "isAuthenticated:",
  92241. protocol: "private",
  92242. //>>excludeStart("ide", pragmas.excludeIdeData);
  92243. args: ["aRequest"],
  92244. source: "isAuthenticated: aRequest\x0a\x09\x22Basic HTTP Auth: http://stackoverflow.com/a/5957629/293175\x0a\x09 and https://gist.github.com/1686663\x22\x0a\x09| header token auth parts|\x0a\x0a\x09(username isNil and: [password isNil]) ifTrue: [^ true].\x0a\x0a\x09\x22get authentication header\x22\x0a\x09header := (aRequest headers at: 'authorization') ifNil:[''].\x0a\x09header\x0a\x09ifEmpty: [^ false]\x0a\x09ifNotEmpty: [\x0a\x09\x09\x22get authentication token\x22\x0a\x09\x09token := (header tokenize: ' ') ifNil:[''].\x0a\x09\x09\x22convert back from base64\x22\x0a\x09\x09auth := self base64Decode: (token at: 2).\x0a\x09\x09\x22split token at colon\x22\x0a\x09\x09parts := auth tokenize: ':'.\x0a\x0a\x09\x09((username = (parts at: 1)) and: [password = (parts at: 2)])\x0a\x09\x09\x09ifTrue: [^ true]\x0a\x09\x09\x09ifFalse: [^ false]\x0a\x09].",
  92245. referencedClasses: [],
  92246. //>>excludeEnd("ide");
  92247. pragmas: [],
  92248. messageSends: ["ifTrue:", "and:", "isNil", "ifNil:", "at:", "headers", "ifEmpty:ifNotEmpty:", "tokenize:", "base64Decode:", "ifTrue:ifFalse:", "="]
  92249. }, function ($methodClass){ return function (aRequest){
  92250. var self=this,$self=this;
  92251. var header,token,auth,parts;
  92252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92253. return $core.withContext(function($ctx1) {
  92254. //>>excludeEnd("ctx");
  92255. var $1,$2,$3,$4;
  92256. var $early={};
  92257. try {
  92258. if($core.assert([$recv($self.username)._isNil()
  92259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92260. ,$ctx1.sendIdx["isNil"]=1
  92261. //>>excludeEnd("ctx");
  92262. ][0])){
  92263. $1=$recv($self.password)._isNil();
  92264. } else {
  92265. $1=false;
  92266. }
  92267. if($core.assert($1)){
  92268. return true;
  92269. }
  92270. $2=[$recv($recv(aRequest)._headers())._at_("authorization")
  92271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92272. ,$ctx1.sendIdx["at:"]=1
  92273. //>>excludeEnd("ctx");
  92274. ][0];
  92275. if($2 == null || $2.a$nil){
  92276. header="";
  92277. } else {
  92278. header=$2;
  92279. }
  92280. $recv(header)._ifEmpty_ifNotEmpty_((function(){
  92281. throw $early=[false];
  92282. }),(function(){
  92283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92284. return $core.withContext(function($ctx2) {
  92285. //>>excludeEnd("ctx");
  92286. $3=[$recv(header)._tokenize_(" ")
  92287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92288. ,$ctx2.sendIdx["tokenize:"]=1
  92289. //>>excludeEnd("ctx");
  92290. ][0];
  92291. if($3 == null || $3.a$nil){
  92292. token="";
  92293. } else {
  92294. token=$3;
  92295. }
  92296. auth=$self._base64Decode_([$recv(token)._at_((2))
  92297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92298. ,$ctx2.sendIdx["at:"]=2
  92299. //>>excludeEnd("ctx");
  92300. ][0]);
  92301. parts=$recv(auth)._tokenize_(":");
  92302. if($core.assert([$recv($self.username).__eq([$recv(parts)._at_((1))
  92303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92304. ,$ctx2.sendIdx["at:"]=3
  92305. //>>excludeEnd("ctx");
  92306. ][0])
  92307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92308. ,$ctx2.sendIdx["="]=1
  92309. //>>excludeEnd("ctx");
  92310. ][0])){
  92311. $4=$recv($self.password).__eq($recv(parts)._at_((2)));
  92312. } else {
  92313. $4=false;
  92314. }
  92315. if($core.assert($4)){
  92316. throw $early=[true];
  92317. } else {
  92318. throw $early=[false];
  92319. }
  92320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92321. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  92322. //>>excludeEnd("ctx");
  92323. }));
  92324. return self;
  92325. }
  92326. catch(e) {if(e===$early)return e[0]; throw e}
  92327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92328. }, function($ctx1) {$ctx1.fill(self,"isAuthenticated:",{aRequest:aRequest,header:header,token:token,auth:auth,parts:parts})});
  92329. //>>excludeEnd("ctx");
  92330. }; }),
  92331. $globals.FileServer);
  92332. $core.addMethod(
  92333. $core.method({
  92334. selector: "password:",
  92335. protocol: "accessing",
  92336. //>>excludeStart("ide", pragmas.excludeIdeData);
  92337. args: ["aPassword"],
  92338. source: "password: aPassword\x0a\x09password := aPassword.",
  92339. referencedClasses: [],
  92340. //>>excludeEnd("ide");
  92341. pragmas: [],
  92342. messageSends: []
  92343. }, function ($methodClass){ return function (aPassword){
  92344. var self=this,$self=this;
  92345. $self.password=aPassword;
  92346. return self;
  92347. }; }),
  92348. $globals.FileServer);
  92349. $core.addMethod(
  92350. $core.method({
  92351. selector: "port",
  92352. protocol: "accessing",
  92353. //>>excludeStart("ide", pragmas.excludeIdeData);
  92354. args: [],
  92355. source: "port\x0a\x09^ port",
  92356. referencedClasses: [],
  92357. //>>excludeEnd("ide");
  92358. pragmas: [],
  92359. messageSends: []
  92360. }, function ($methodClass){ return function (){
  92361. var self=this,$self=this;
  92362. return $self.port;
  92363. }; }),
  92364. $globals.FileServer);
  92365. $core.addMethod(
  92366. $core.method({
  92367. selector: "port:",
  92368. protocol: "accessing",
  92369. //>>excludeStart("ide", pragmas.excludeIdeData);
  92370. args: ["aNumber"],
  92371. source: "port: aNumber\x0a\x09port := aNumber",
  92372. referencedClasses: [],
  92373. //>>excludeEnd("ide");
  92374. pragmas: [],
  92375. messageSends: []
  92376. }, function ($methodClass){ return function (aNumber){
  92377. var self=this,$self=this;
  92378. $self.port=aNumber;
  92379. return self;
  92380. }; }),
  92381. $globals.FileServer);
  92382. $core.addMethod(
  92383. $core.method({
  92384. selector: "require:",
  92385. protocol: "private",
  92386. //>>excludeStart("ide", pragmas.excludeIdeData);
  92387. args: ["aModuleString"],
  92388. source: "require: aModuleString\x0a\x09\x22call to the require function\x22\x0a\x09^require value: aModuleString",
  92389. referencedClasses: [],
  92390. //>>excludeEnd("ide");
  92391. pragmas: [],
  92392. messageSends: ["value:"]
  92393. }, function ($methodClass){ return function (aModuleString){
  92394. var self=this,$self=this;
  92395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92396. return $core.withContext(function($ctx1) {
  92397. //>>excludeEnd("ctx");
  92398. return $recv(require)._value_(aModuleString);
  92399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92400. }, function($ctx1) {$ctx1.fill(self,"require:",{aModuleString:aModuleString})});
  92401. //>>excludeEnd("ctx");
  92402. }; }),
  92403. $globals.FileServer);
  92404. $core.addMethod(
  92405. $core.method({
  92406. selector: "respondAuthenticationRequiredTo:",
  92407. protocol: "request handling",
  92408. //>>excludeStart("ide", pragmas.excludeIdeData);
  92409. args: ["aResponse"],
  92410. source: "respondAuthenticationRequiredTo: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 401 options: #{'WWW-Authenticate' -> 'Basic realm=\x22Secured Developer Area\x22'};\x0a\x09\x09write: '<html><body>Authentication needed</body></html>';\x0a\x09\x09end.",
  92411. referencedClasses: [],
  92412. //>>excludeEnd("ide");
  92413. pragmas: [],
  92414. messageSends: ["writeHead:options:", "write:", "end"]
  92415. }, function ($methodClass){ return function (aResponse){
  92416. var self=this,$self=this;
  92417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92418. return $core.withContext(function($ctx1) {
  92419. //>>excludeEnd("ctx");
  92420. $recv(aResponse)._writeHead_options_((401),$globals.HashedCollection._newFromPairs_(["WWW-Authenticate","Basic realm=\x22Secured Developer Area\x22"]));
  92421. $recv(aResponse)._write_("<html><body>Authentication needed</body></html>");
  92422. $recv(aResponse)._end();
  92423. return self;
  92424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92425. }, function($ctx1) {$ctx1.fill(self,"respondAuthenticationRequiredTo:",{aResponse:aResponse})});
  92426. //>>excludeEnd("ctx");
  92427. }; }),
  92428. $globals.FileServer);
  92429. $core.addMethod(
  92430. $core.method({
  92431. selector: "respondCreatedTo:",
  92432. protocol: "request handling",
  92433. //>>excludeStart("ide", pragmas.excludeIdeData);
  92434. args: ["aResponse"],
  92435. source: "respondCreatedTo: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 201 options: #{'Content-Type' -> 'text/plain'. 'Access-Control-Allow-Origin' -> '*'};\x0a\x09\x09end.",
  92436. referencedClasses: [],
  92437. //>>excludeEnd("ide");
  92438. pragmas: [],
  92439. messageSends: ["writeHead:options:", "end"]
  92440. }, function ($methodClass){ return function (aResponse){
  92441. var self=this,$self=this;
  92442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92443. return $core.withContext(function($ctx1) {
  92444. //>>excludeEnd("ctx");
  92445. $recv(aResponse)._writeHead_options_((201),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain","Access-Control-Allow-Origin","*"]));
  92446. $recv(aResponse)._end();
  92447. return self;
  92448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92449. }, function($ctx1) {$ctx1.fill(self,"respondCreatedTo:",{aResponse:aResponse})});
  92450. //>>excludeEnd("ctx");
  92451. }; }),
  92452. $globals.FileServer);
  92453. $core.addMethod(
  92454. $core.method({
  92455. selector: "respondDirectoryNamed:from:to:",
  92456. protocol: "request handling",
  92457. //>>excludeStart("ide", pragmas.excludeIdeData);
  92458. args: ["aDirname", "aUrl", "aResponse"],
  92459. source: "respondDirectoryNamed: aDirname from: aUrl to: aResponse\x0a\x09(aUrl pathname endsWith: '/')\x0a\x09\x09ifTrue: [self respondFileNamed: aDirname, 'index.html' to: aResponse]\x0a\x09\x09ifFalse: [self respondRedirect: aUrl pathname, '/', (aUrl search ifNil: ['']) to: aResponse]",
  92460. referencedClasses: [],
  92461. //>>excludeEnd("ide");
  92462. pragmas: [],
  92463. messageSends: ["ifTrue:ifFalse:", "endsWith:", "pathname", "respondFileNamed:to:", ",", "respondRedirect:to:", "ifNil:", "search"]
  92464. }, function ($methodClass){ return function (aDirname,aUrl,aResponse){
  92465. var self=this,$self=this;
  92466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92467. return $core.withContext(function($ctx1) {
  92468. //>>excludeEnd("ctx");
  92469. var $1,$2,$3;
  92470. if($core.assert($recv([$recv(aUrl)._pathname()
  92471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92472. ,$ctx1.sendIdx["pathname"]=1
  92473. //>>excludeEnd("ctx");
  92474. ][0])._endsWith_("/"))){
  92475. $self._respondFileNamed_to_([$recv(aDirname).__comma("index.html")
  92476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92477. ,$ctx1.sendIdx[","]=1
  92478. //>>excludeEnd("ctx");
  92479. ][0],aResponse);
  92480. } else {
  92481. $1=$recv($recv(aUrl)._pathname()).__comma("/");
  92482. $2=$recv(aUrl)._search();
  92483. if($2 == null || $2.a$nil){
  92484. $3="";
  92485. } else {
  92486. $3=$2;
  92487. }
  92488. $self._respondRedirect_to_([$recv($1).__comma($3)
  92489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92490. ,$ctx1.sendIdx[","]=2
  92491. //>>excludeEnd("ctx");
  92492. ][0],aResponse);
  92493. }
  92494. return self;
  92495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92496. }, function($ctx1) {$ctx1.fill(self,"respondDirectoryNamed:from:to:",{aDirname:aDirname,aUrl:aUrl,aResponse:aResponse})});
  92497. //>>excludeEnd("ctx");
  92498. }; }),
  92499. $globals.FileServer);
  92500. $core.addMethod(
  92501. $core.method({
  92502. selector: "respondFileNamed:to:",
  92503. protocol: "request handling",
  92504. //>>excludeStart("ide", pragmas.excludeIdeData);
  92505. args: ["aFilename", "aResponse"],
  92506. source: "respondFileNamed: aFilename to: aResponse\x0a\x09| type filename |\x0a\x0a\x09filename := aFilename.\x0a\x0a\x09fs readFile: filename do: [:ex :file |\x0a\x09\x09ex notNil \x0a\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09console log: filename, ' does not exist'.\x0a\x09\x09\x09\x09self respondNotFoundTo: aResponse]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09type := self class mimeTypeFor: filename.\x0a\x09\x09\x09\x09type = 'application/javascript'\x0a\x09\x09\x09\x09\x09ifTrue: [ type:=type,';charset=utf-8' ].\x0a\x09\x09\x09\x09aResponse \x0a\x09\x09\x09\x09\x09writeHead: 200 options: #{'Content-Type' -> type};\x0a\x09\x09\x09\x09\x09write: file encoding: 'binary';\x0a\x09\x09\x09\x09\x09end]]",
  92507. referencedClasses: [],
  92508. //>>excludeEnd("ide");
  92509. pragmas: [],
  92510. messageSends: ["readFile:do:", "ifTrue:ifFalse:", "notNil", "log:", ",", "respondNotFoundTo:", "mimeTypeFor:", "class", "ifTrue:", "=", "writeHead:options:", "write:encoding:", "end"]
  92511. }, function ($methodClass){ return function (aFilename,aResponse){
  92512. var self=this,$self=this;
  92513. var type,filename;
  92514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92515. return $core.withContext(function($ctx1) {
  92516. //>>excludeEnd("ctx");
  92517. filename=aFilename;
  92518. $recv($self.fs)._readFile_do_(filename,(function(ex,file){
  92519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92520. return $core.withContext(function($ctx2) {
  92521. //>>excludeEnd("ctx");
  92522. if($core.assert($recv(ex)._notNil())){
  92523. $recv(console)._log_([$recv(filename).__comma(" does not exist")
  92524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92525. ,$ctx2.sendIdx[","]=1
  92526. //>>excludeEnd("ctx");
  92527. ][0]);
  92528. return $self._respondNotFoundTo_(aResponse);
  92529. } else {
  92530. type=$recv($self._class())._mimeTypeFor_(filename);
  92531. if($core.assert($recv(type).__eq("application/javascript"))){
  92532. type=$recv(type).__comma(";charset=utf-8");
  92533. type;
  92534. }
  92535. $recv(aResponse)._writeHead_options_((200),$globals.HashedCollection._newFromPairs_(["Content-Type",type]));
  92536. $recv(aResponse)._write_encoding_(file,"binary");
  92537. return $recv(aResponse)._end();
  92538. }
  92539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92540. }, function($ctx2) {$ctx2.fillBlock({ex:ex,file:file},$ctx1,1)});
  92541. //>>excludeEnd("ctx");
  92542. }));
  92543. return self;
  92544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92545. }, function($ctx1) {$ctx1.fill(self,"respondFileNamed:to:",{aFilename:aFilename,aResponse:aResponse,type:type,filename:filename})});
  92546. //>>excludeEnd("ctx");
  92547. }; }),
  92548. $globals.FileServer);
  92549. $core.addMethod(
  92550. $core.method({
  92551. selector: "respondInternalErrorTo:",
  92552. protocol: "request handling",
  92553. //>>excludeStart("ide", pragmas.excludeIdeData);
  92554. args: ["aResponse"],
  92555. source: "respondInternalErrorTo: aResponse\x0a\x09aResponse \x0a\x09\x09writeHead: 500 options: #{'Content-Type' -> 'text/plain'};\x0a\x09\x09write: '500 Internal server error';\x0a\x09\x09end",
  92556. referencedClasses: [],
  92557. //>>excludeEnd("ide");
  92558. pragmas: [],
  92559. messageSends: ["writeHead:options:", "write:", "end"]
  92560. }, function ($methodClass){ return function (aResponse){
  92561. var self=this,$self=this;
  92562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92563. return $core.withContext(function($ctx1) {
  92564. //>>excludeEnd("ctx");
  92565. $recv(aResponse)._writeHead_options_((500),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain"]));
  92566. $recv(aResponse)._write_("500 Internal server error");
  92567. $recv(aResponse)._end();
  92568. return self;
  92569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92570. }, function($ctx1) {$ctx1.fill(self,"respondInternalErrorTo:",{aResponse:aResponse})});
  92571. //>>excludeEnd("ctx");
  92572. }; }),
  92573. $globals.FileServer);
  92574. $core.addMethod(
  92575. $core.method({
  92576. selector: "respondNotCreatedTo:",
  92577. protocol: "request handling",
  92578. //>>excludeStart("ide", pragmas.excludeIdeData);
  92579. args: ["aResponse"],
  92580. source: "respondNotCreatedTo: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 400 options: #{'Content-Type' -> 'text/plain'};\x0a\x09\x09write: 'File could not be created. Did you forget to create the src directory on the server?';\x0a\x09\x09end.",
  92581. referencedClasses: [],
  92582. //>>excludeEnd("ide");
  92583. pragmas: [],
  92584. messageSends: ["writeHead:options:", "write:", "end"]
  92585. }, function ($methodClass){ return function (aResponse){
  92586. var self=this,$self=this;
  92587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92588. return $core.withContext(function($ctx1) {
  92589. //>>excludeEnd("ctx");
  92590. $recv(aResponse)._writeHead_options_((400),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain"]));
  92591. $recv(aResponse)._write_("File could not be created. Did you forget to create the src directory on the server?");
  92592. $recv(aResponse)._end();
  92593. return self;
  92594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92595. }, function($ctx1) {$ctx1.fill(self,"respondNotCreatedTo:",{aResponse:aResponse})});
  92596. //>>excludeEnd("ctx");
  92597. }; }),
  92598. $globals.FileServer);
  92599. $core.addMethod(
  92600. $core.method({
  92601. selector: "respondNotFoundTo:",
  92602. protocol: "request handling",
  92603. //>>excludeStart("ide", pragmas.excludeIdeData);
  92604. args: ["aResponse"],
  92605. source: "respondNotFoundTo: aResponse\x0a\x09self fallbackPage isNil ifFalse: [^self respondFileNamed: self fallbackPage to: aResponse].\x0a\x09aResponse \x0a\x09\x09writeHead: 404 options: #{'Content-Type' -> 'text/html'};\x0a\x09\x09write: '<html><body><p>404 Not found</p>';\x0a\x09\x09write: '<p>Did you forget to put an index.html file into the directory which is served by \x22bin/amber serve\x22? To solve this you can:<ul>';\x0a\x09\x09write: '<li>create an index.html in the served directory.</li>';\x0a\x09\x09write: '<li>can also specify the location of a page to be served whenever path does not resolve to a file with the \x22--fallback-page\x22 option.</li>';\x0a\x09\x09write: '<li>change the directory to be served with the \x22--base-path\x22 option.</li>';\x0a\x09\x09write: '</ul></p></body></html>';\x0a\x09\x09end",
  92606. referencedClasses: [],
  92607. //>>excludeEnd("ide");
  92608. pragmas: [],
  92609. messageSends: ["ifFalse:", "isNil", "fallbackPage", "respondFileNamed:to:", "writeHead:options:", "write:", "end"]
  92610. }, function ($methodClass){ return function (aResponse){
  92611. var self=this,$self=this;
  92612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92613. return $core.withContext(function($ctx1) {
  92614. //>>excludeEnd("ctx");
  92615. if(!$core.assert($recv([$self._fallbackPage()
  92616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92617. ,$ctx1.sendIdx["fallbackPage"]=1
  92618. //>>excludeEnd("ctx");
  92619. ][0])._isNil())){
  92620. return $self._respondFileNamed_to_($self._fallbackPage(),aResponse);
  92621. }
  92622. $recv(aResponse)._writeHead_options_((404),$globals.HashedCollection._newFromPairs_(["Content-Type","text/html"]));
  92623. [$recv(aResponse)._write_("<html><body><p>404 Not found</p>")
  92624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92625. ,$ctx1.sendIdx["write:"]=1
  92626. //>>excludeEnd("ctx");
  92627. ][0];
  92628. [$recv(aResponse)._write_("<p>Did you forget to put an index.html file into the directory which is served by \x22bin/amber serve\x22? To solve this you can:<ul>")
  92629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92630. ,$ctx1.sendIdx["write:"]=2
  92631. //>>excludeEnd("ctx");
  92632. ][0];
  92633. [$recv(aResponse)._write_("<li>create an index.html in the served directory.</li>")
  92634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92635. ,$ctx1.sendIdx["write:"]=3
  92636. //>>excludeEnd("ctx");
  92637. ][0];
  92638. [$recv(aResponse)._write_("<li>can also specify the location of a page to be served whenever path does not resolve to a file with the \x22--fallback-page\x22 option.</li>")
  92639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92640. ,$ctx1.sendIdx["write:"]=4
  92641. //>>excludeEnd("ctx");
  92642. ][0];
  92643. [$recv(aResponse)._write_("<li>change the directory to be served with the \x22--base-path\x22 option.</li>")
  92644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92645. ,$ctx1.sendIdx["write:"]=5
  92646. //>>excludeEnd("ctx");
  92647. ][0];
  92648. $recv(aResponse)._write_("</ul></p></body></html>");
  92649. $recv(aResponse)._end();
  92650. return self;
  92651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92652. }, function($ctx1) {$ctx1.fill(self,"respondNotFoundTo:",{aResponse:aResponse})});
  92653. //>>excludeEnd("ctx");
  92654. }; }),
  92655. $globals.FileServer);
  92656. $core.addMethod(
  92657. $core.method({
  92658. selector: "respondOKTo:",
  92659. protocol: "request handling",
  92660. //>>excludeStart("ide", pragmas.excludeIdeData);
  92661. args: ["aResponse"],
  92662. source: "respondOKTo: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 200 options: #{'Content-Type' -> 'text/plain'. 'Access-Control-Allow-Origin' -> '*'};\x0a\x09\x09end.",
  92663. referencedClasses: [],
  92664. //>>excludeEnd("ide");
  92665. pragmas: [],
  92666. messageSends: ["writeHead:options:", "end"]
  92667. }, function ($methodClass){ return function (aResponse){
  92668. var self=this,$self=this;
  92669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92670. return $core.withContext(function($ctx1) {
  92671. //>>excludeEnd("ctx");
  92672. $recv(aResponse)._writeHead_options_((200),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain","Access-Control-Allow-Origin","*"]));
  92673. $recv(aResponse)._end();
  92674. return self;
  92675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92676. }, function($ctx1) {$ctx1.fill(self,"respondOKTo:",{aResponse:aResponse})});
  92677. //>>excludeEnd("ctx");
  92678. }; }),
  92679. $globals.FileServer);
  92680. $core.addMethod(
  92681. $core.method({
  92682. selector: "respondRedirect:to:",
  92683. protocol: "request handling",
  92684. //>>excludeStart("ide", pragmas.excludeIdeData);
  92685. args: ["aString", "aResponse"],
  92686. source: "respondRedirect: aString to: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 303 options: #{'Location' -> aString};\x0a\x09\x09end.",
  92687. referencedClasses: [],
  92688. //>>excludeEnd("ide");
  92689. pragmas: [],
  92690. messageSends: ["writeHead:options:", "end"]
  92691. }, function ($methodClass){ return function (aString,aResponse){
  92692. var self=this,$self=this;
  92693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92694. return $core.withContext(function($ctx1) {
  92695. //>>excludeEnd("ctx");
  92696. $recv(aResponse)._writeHead_options_((303),$globals.HashedCollection._newFromPairs_(["Location",aString]));
  92697. $recv(aResponse)._end();
  92698. return self;
  92699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92700. }, function($ctx1) {$ctx1.fill(self,"respondRedirect:to:",{aString:aString,aResponse:aResponse})});
  92701. //>>excludeEnd("ctx");
  92702. }; }),
  92703. $globals.FileServer);
  92704. $core.addMethod(
  92705. $core.method({
  92706. selector: "start",
  92707. protocol: "starting",
  92708. //>>excludeStart("ide", pragmas.excludeIdeData);
  92709. args: [],
  92710. source: "start\x0a\x09\x22Checks if required directory layout is present (issue warning if not).\x0a\x09 Afterwards start the server.\x22\x0a\x09self checkDirectoryLayout.\x0a\x09(http createServer: [:request :response |\x0a\x09 self handleRequest: request respondTo: response])\x0a\x09 on: 'error' do: [:error | console log: 'Error starting server: ', error asString];\x0a\x09 on: 'listening' do: [console log: 'Starting file server on http://', self host, ':', self port asString];\x0a\x09 listen: self port host: self host.",
  92711. referencedClasses: [],
  92712. //>>excludeEnd("ide");
  92713. pragmas: [],
  92714. messageSends: ["checkDirectoryLayout", "on:do:", "createServer:", "handleRequest:respondTo:", "log:", ",", "asString", "host", "port", "listen:host:"]
  92715. }, function ($methodClass){ return function (){
  92716. var self=this,$self=this;
  92717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92718. return $core.withContext(function($ctx1) {
  92719. //>>excludeEnd("ctx");
  92720. var $1;
  92721. $self._checkDirectoryLayout();
  92722. $1=$recv($self.http)._createServer_((function(request,response){
  92723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92724. return $core.withContext(function($ctx2) {
  92725. //>>excludeEnd("ctx");
  92726. return $self._handleRequest_respondTo_(request,response);
  92727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92728. }, function($ctx2) {$ctx2.fillBlock({request:request,response:response},$ctx1,1)});
  92729. //>>excludeEnd("ctx");
  92730. }));
  92731. [$recv($1)._on_do_("error",(function(error){
  92732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92733. return $core.withContext(function($ctx2) {
  92734. //>>excludeEnd("ctx");
  92735. return [$recv(console)._log_(["Error starting server: ".__comma([$recv(error)._asString()
  92736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92737. ,$ctx2.sendIdx["asString"]=1
  92738. //>>excludeEnd("ctx");
  92739. ][0])
  92740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92741. ,$ctx2.sendIdx[","]=1
  92742. //>>excludeEnd("ctx");
  92743. ][0])
  92744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92745. ,$ctx2.sendIdx["log:"]=1
  92746. //>>excludeEnd("ctx");
  92747. ][0];
  92748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92749. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  92750. //>>excludeEnd("ctx");
  92751. }))
  92752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92753. ,$ctx1.sendIdx["on:do:"]=1
  92754. //>>excludeEnd("ctx");
  92755. ][0];
  92756. $recv($1)._on_do_("listening",(function(){
  92757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92758. return $core.withContext(function($ctx2) {
  92759. //>>excludeEnd("ctx");
  92760. return $recv(console)._log_([$recv([$recv("Starting file server on http://".__comma([$self._host()
  92761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92762. ,$ctx2.sendIdx["host"]=1
  92763. //>>excludeEnd("ctx");
  92764. ][0])).__comma(":")
  92765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92766. ,$ctx2.sendIdx[","]=3
  92767. //>>excludeEnd("ctx");
  92768. ][0]).__comma($recv([$self._port()
  92769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92770. ,$ctx2.sendIdx["port"]=1
  92771. //>>excludeEnd("ctx");
  92772. ][0])._asString())
  92773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92774. ,$ctx2.sendIdx[","]=2
  92775. //>>excludeEnd("ctx");
  92776. ][0]);
  92777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92778. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  92779. //>>excludeEnd("ctx");
  92780. }));
  92781. $recv($1)._listen_host_($self._port(),$self._host());
  92782. return self;
  92783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92784. }, function($ctx1) {$ctx1.fill(self,"start",{})});
  92785. //>>excludeEnd("ctx");
  92786. }; }),
  92787. $globals.FileServer);
  92788. $core.addMethod(
  92789. $core.method({
  92790. selector: "startOn:",
  92791. protocol: "starting",
  92792. //>>excludeStart("ide", pragmas.excludeIdeData);
  92793. args: ["aPort"],
  92794. source: "startOn: aPort\x0a\x09self port: aPort.\x0a\x09self start",
  92795. referencedClasses: [],
  92796. //>>excludeEnd("ide");
  92797. pragmas: [],
  92798. messageSends: ["port:", "start"]
  92799. }, function ($methodClass){ return function (aPort){
  92800. var self=this,$self=this;
  92801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92802. return $core.withContext(function($ctx1) {
  92803. //>>excludeEnd("ctx");
  92804. $self._port_(aPort);
  92805. $self._start();
  92806. return self;
  92807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92808. }, function($ctx1) {$ctx1.fill(self,"startOn:",{aPort:aPort})});
  92809. //>>excludeEnd("ctx");
  92810. }; }),
  92811. $globals.FileServer);
  92812. $core.addMethod(
  92813. $core.method({
  92814. selector: "username:",
  92815. protocol: "accessing",
  92816. //>>excludeStart("ide", pragmas.excludeIdeData);
  92817. args: ["aUsername"],
  92818. source: "username: aUsername\x0a\x09username := aUsername.",
  92819. referencedClasses: [],
  92820. //>>excludeEnd("ide");
  92821. pragmas: [],
  92822. messageSends: []
  92823. }, function ($methodClass){ return function (aUsername){
  92824. var self=this,$self=this;
  92825. $self.username=aUsername;
  92826. return self;
  92827. }; }),
  92828. $globals.FileServer);
  92829. $core.addMethod(
  92830. $core.method({
  92831. selector: "validateBasePath",
  92832. protocol: "private",
  92833. //>>excludeStart("ide", pragmas.excludeIdeData);
  92834. args: [],
  92835. source: "validateBasePath\x0a\x09\x22The basePath must be an existing directory. \x22\x0a\x09fs stat: self basePath then: [ :err :stat | err\x0a\x09\x09ifNil: [ stat isDirectory ifFalse: [ console warn: 'Warning: --base-path parameter ' , self basePath , ' is not a directory.' ]]\x0a\x09\x09ifNotNil: [ console warn: 'Warning: path at --base-path parameter ' , self basePath , ' does not exist.' ]].",
  92836. referencedClasses: [],
  92837. //>>excludeEnd("ide");
  92838. pragmas: [],
  92839. messageSends: ["stat:then:", "basePath", "ifNil:ifNotNil:", "ifFalse:", "isDirectory", "warn:", ","]
  92840. }, function ($methodClass){ return function (){
  92841. var self=this,$self=this;
  92842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92843. return $core.withContext(function($ctx1) {
  92844. //>>excludeEnd("ctx");
  92845. $recv($self.fs)._stat_then_([$self._basePath()
  92846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92847. ,$ctx1.sendIdx["basePath"]=1
  92848. //>>excludeEnd("ctx");
  92849. ][0],(function(err,stat){
  92850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92851. return $core.withContext(function($ctx2) {
  92852. //>>excludeEnd("ctx");
  92853. if(err == null || err.a$nil){
  92854. if(!$core.assert($recv(stat)._isDirectory())){
  92855. return [$recv(console)._warn_([$recv(["Warning: --base-path parameter ".__comma([$self._basePath()
  92856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92857. ,$ctx2.sendIdx["basePath"]=2
  92858. //>>excludeEnd("ctx");
  92859. ][0])
  92860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92861. ,$ctx2.sendIdx[","]=2
  92862. //>>excludeEnd("ctx");
  92863. ][0]).__comma(" is not a directory.")
  92864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92865. ,$ctx2.sendIdx[","]=1
  92866. //>>excludeEnd("ctx");
  92867. ][0])
  92868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92869. ,$ctx2.sendIdx["warn:"]=1
  92870. //>>excludeEnd("ctx");
  92871. ][0];
  92872. }
  92873. } else {
  92874. return $recv(console)._warn_([$recv("Warning: path at --base-path parameter ".__comma($self._basePath())).__comma(" does not exist.")
  92875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92876. ,$ctx2.sendIdx[","]=3
  92877. //>>excludeEnd("ctx");
  92878. ][0]);
  92879. }
  92880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92881. }, function($ctx2) {$ctx2.fillBlock({err:err,stat:stat},$ctx1,1)});
  92882. //>>excludeEnd("ctx");
  92883. }));
  92884. return self;
  92885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92886. }, function($ctx1) {$ctx1.fill(self,"validateBasePath",{})});
  92887. //>>excludeEnd("ctx");
  92888. }; }),
  92889. $globals.FileServer);
  92890. $core.addMethod(
  92891. $core.method({
  92892. selector: "withBasePath:",
  92893. protocol: "private",
  92894. //>>excludeStart("ide", pragmas.excludeIdeData);
  92895. args: ["aBaseRelativePath"],
  92896. source: "withBasePath: aBaseRelativePath\x0a\x09\x22return a file path which is relative to the basePath.\x22\x0a\x09^ path join: self basePath with: aBaseRelativePath",
  92897. referencedClasses: [],
  92898. //>>excludeEnd("ide");
  92899. pragmas: [],
  92900. messageSends: ["join:with:", "basePath"]
  92901. }, function ($methodClass){ return function (aBaseRelativePath){
  92902. var self=this,$self=this;
  92903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92904. return $core.withContext(function($ctx1) {
  92905. //>>excludeEnd("ctx");
  92906. return $recv($self.path)._join_with_($self._basePath(),aBaseRelativePath);
  92907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92908. }, function($ctx1) {$ctx1.fill(self,"withBasePath:",{aBaseRelativePath:aBaseRelativePath})});
  92909. //>>excludeEnd("ctx");
  92910. }; }),
  92911. $globals.FileServer);
  92912. $core.addMethod(
  92913. $core.method({
  92914. selector: "writeData:toFileNamed:",
  92915. protocol: "private",
  92916. //>>excludeStart("ide", pragmas.excludeIdeData);
  92917. args: ["data", "aFilename"],
  92918. source: "writeData: data toFileNamed: aFilename\x0a\x09console log: aFilename",
  92919. referencedClasses: [],
  92920. //>>excludeEnd("ide");
  92921. pragmas: [],
  92922. messageSends: ["log:"]
  92923. }, function ($methodClass){ return function (data,aFilename){
  92924. var self=this,$self=this;
  92925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92926. return $core.withContext(function($ctx1) {
  92927. //>>excludeEnd("ctx");
  92928. $recv(console)._log_(aFilename);
  92929. return self;
  92930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92931. }, function($ctx1) {$ctx1.fill(self,"writeData:toFileNamed:",{data:data,aFilename:aFilename})});
  92932. //>>excludeEnd("ctx");
  92933. }; }),
  92934. $globals.FileServer);
  92935. $core.setSlots($globals.FileServer.a$cls, ["mimeTypes"]);
  92936. $core.addMethod(
  92937. $core.method({
  92938. selector: "commandLineSwitches",
  92939. protocol: "accessing",
  92940. //>>excludeStart("ide", pragmas.excludeIdeData);
  92941. args: [],
  92942. source: "commandLineSwitches\x0a\x09\x22Collect all methodnames from the 'accessing' protocol\x0a\x09 and select the ones with only one parameter.\x0a\x09 Then remove the ':' at the end of the name\x0a\x09 and add a '--' at the beginning.\x0a\x09 Additionally all uppercase letters are made lowercase and preceded by a '-'.\x0a\x09 Example: fallbackPage: becomes --fallback-page.\x0a\x09 Return the Array containing the commandline switches.\x22\x0a\x09| switches |\x0a\x09switches := ((self methodsInProtocol: 'accessing') collect: [ :each | each selector]).\x0a\x09switches := switches select: [ :each | each match: '^[^:]*:$'].\x0a\x09switches :=switches collect: [ :each |\x0a\x09\x09(each allButLast replace: '([A-Z])' with: '-$1') asLowercase replace: '^([a-z])' with: '--$1' ].\x0a\x09^ switches",
  92943. referencedClasses: [],
  92944. //>>excludeEnd("ide");
  92945. pragmas: [],
  92946. messageSends: ["collect:", "methodsInProtocol:", "selector", "select:", "match:", "replace:with:", "asLowercase", "allButLast"]
  92947. }, function ($methodClass){ return function (){
  92948. var self=this,$self=this;
  92949. var switches;
  92950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92951. return $core.withContext(function($ctx1) {
  92952. //>>excludeEnd("ctx");
  92953. switches=[$recv($self._methodsInProtocol_("accessing"))._collect_((function(each){
  92954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92955. return $core.withContext(function($ctx2) {
  92956. //>>excludeEnd("ctx");
  92957. return $recv(each)._selector();
  92958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92959. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  92960. //>>excludeEnd("ctx");
  92961. }))
  92962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92963. ,$ctx1.sendIdx["collect:"]=1
  92964. //>>excludeEnd("ctx");
  92965. ][0];
  92966. switches=$recv(switches)._select_((function(each){
  92967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92968. return $core.withContext(function($ctx2) {
  92969. //>>excludeEnd("ctx");
  92970. return $recv(each)._match_("^[^:]*:$");
  92971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92972. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  92973. //>>excludeEnd("ctx");
  92974. }));
  92975. switches=$recv(switches)._collect_((function(each){
  92976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92977. return $core.withContext(function($ctx2) {
  92978. //>>excludeEnd("ctx");
  92979. return [$recv($recv($recv($recv(each)._allButLast())._replace_with_("([A-Z])","-$1"))._asLowercase())._replace_with_("^([a-z])","--$1")
  92980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92981. ,$ctx2.sendIdx["replace:with:"]=1
  92982. //>>excludeEnd("ctx");
  92983. ][0];
  92984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92985. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  92986. //>>excludeEnd("ctx");
  92987. }));
  92988. return switches;
  92989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  92990. }, function($ctx1) {$ctx1.fill(self,"commandLineSwitches",{switches:switches})});
  92991. //>>excludeEnd("ctx");
  92992. }; }),
  92993. $globals.FileServer.a$cls);
  92994. $core.addMethod(
  92995. $core.method({
  92996. selector: "createServerWithArguments:",
  92997. protocol: "initialization",
  92998. //>>excludeStart("ide", pragmas.excludeIdeData);
  92999. args: ["options"],
  93000. source: "createServerWithArguments: options\x0a\x09\x22If options are empty return a default FileServer instance.\x0a\x09 If options are given loop through them and set the passed in values\x0a\x09 on the FileServer instance.\x0a\x09 \x0a\x09 Commanline options map directly to methods in the 'accessing' protocol\x0a\x09 taking one parameter.\x0a\x09 Adding a method to this protocol makes it directly settable through\x0a\x09 command line options.\x0a\x09 \x22\x0a\x09| server popFront front optionName optionValue switches |\x0a\x0a\x09switches := self commandLineSwitches.\x0a\x0a\x09server := self new.\x0a\x0a\x09options ifEmpty: [^server].\x0a\x0a\x09(options size even) ifFalse: [\x0a\x09\x09console log: 'Using default parameters.'.\x0a\x09\x09console log: 'Wrong commandline options or not enough arguments for: ' , (' ' join: options).\x0a\x09\x09console log: 'Use any of the following ones: ', (',' join: switches).\x0a\x09\x09^server].\x0a\x0a\x09popFront := [:args |\x0a\x09\x09front := args first.\x0a\x09\x09args remove: front.\x0a\x09\x09front].\x0a\x0a\x09[options notEmpty] whileTrue: [\x0a\x09\x09optionName := popFront value: options.\x0a\x09\x09optionValue := popFront value: options.\x0a\x0a\x09\x09(switches includes: optionName) ifTrue: [\x0a\x09\x09\x09optionName := self selectorForCommandLineSwitch: optionName.\x0a\x09\x09\x09server perform: optionName withArguments: { optionValue } ]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09console log: optionName, ' is not a valid commandline option'.\x0a\x09\x09\x09\x09console log: 'Use any of the following ones: ', (',' join: switches) ]].\x0a\x09^ server.",
  93001. referencedClasses: [],
  93002. //>>excludeEnd("ide");
  93003. pragmas: [],
  93004. messageSends: ["commandLineSwitches", "new", "ifEmpty:", "ifFalse:", "even", "size", "log:", ",", "join:", "first", "remove:", "whileTrue:", "notEmpty", "value:", "ifTrue:ifFalse:", "includes:", "selectorForCommandLineSwitch:", "perform:withArguments:"]
  93005. }, function ($methodClass){ return function (options){
  93006. var self=this,$self=this;
  93007. var server,popFront,front,optionName,optionValue,switches;
  93008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93009. return $core.withContext(function($ctx1) {
  93010. //>>excludeEnd("ctx");
  93011. var $early={};
  93012. try {
  93013. switches=$self._commandLineSwitches();
  93014. server=$self._new();
  93015. $recv(options)._ifEmpty_((function(){
  93016. throw $early=[server];
  93017. }));
  93018. if(!$core.assert($recv($recv(options)._size())._even())){
  93019. [$recv(console)._log_("Using default parameters.")
  93020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93021. ,$ctx1.sendIdx["log:"]=1
  93022. //>>excludeEnd("ctx");
  93023. ][0];
  93024. [$recv(console)._log_(["Wrong commandline options or not enough arguments for: ".__comma([" "._join_(options)
  93025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93026. ,$ctx1.sendIdx["join:"]=1
  93027. //>>excludeEnd("ctx");
  93028. ][0])
  93029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93030. ,$ctx1.sendIdx[","]=1
  93031. //>>excludeEnd("ctx");
  93032. ][0])
  93033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93034. ,$ctx1.sendIdx["log:"]=2
  93035. //>>excludeEnd("ctx");
  93036. ][0];
  93037. [$recv(console)._log_(["Use any of the following ones: ".__comma([","._join_(switches)
  93038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93039. ,$ctx1.sendIdx["join:"]=2
  93040. //>>excludeEnd("ctx");
  93041. ][0])
  93042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93043. ,$ctx1.sendIdx[","]=2
  93044. //>>excludeEnd("ctx");
  93045. ][0])
  93046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93047. ,$ctx1.sendIdx["log:"]=3
  93048. //>>excludeEnd("ctx");
  93049. ][0];
  93050. return server;
  93051. }
  93052. popFront=(function(args){
  93053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93054. return $core.withContext(function($ctx2) {
  93055. //>>excludeEnd("ctx");
  93056. front=$recv(args)._first();
  93057. $recv(args)._remove_(front);
  93058. return front;
  93059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93060. }, function($ctx2) {$ctx2.fillBlock({args:args},$ctx1,3)});
  93061. //>>excludeEnd("ctx");
  93062. });
  93063. $recv((function(){
  93064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93065. return $core.withContext(function($ctx2) {
  93066. //>>excludeEnd("ctx");
  93067. return $recv(options)._notEmpty();
  93068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93069. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  93070. //>>excludeEnd("ctx");
  93071. }))._whileTrue_((function(){
  93072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93073. return $core.withContext(function($ctx2) {
  93074. //>>excludeEnd("ctx");
  93075. optionName=[$recv(popFront)._value_(options)
  93076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93077. ,$ctx2.sendIdx["value:"]=1
  93078. //>>excludeEnd("ctx");
  93079. ][0];
  93080. optionValue=$recv(popFront)._value_(options);
  93081. if($core.assert($recv(switches)._includes_(optionName))){
  93082. optionName=$self._selectorForCommandLineSwitch_(optionName);
  93083. return $recv(server)._perform_withArguments_(optionName,[optionValue]);
  93084. } else {
  93085. [$recv(console)._log_([$recv(optionName).__comma(" is not a valid commandline option")
  93086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93087. ,$ctx2.sendIdx[","]=3
  93088. //>>excludeEnd("ctx");
  93089. ][0])
  93090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93091. ,$ctx2.sendIdx["log:"]=4
  93092. //>>excludeEnd("ctx");
  93093. ][0];
  93094. return $recv(console)._log_("Use any of the following ones: ".__comma(","._join_(switches)));
  93095. }
  93096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93097. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  93098. //>>excludeEnd("ctx");
  93099. }));
  93100. return server;
  93101. }
  93102. catch(e) {if(e===$early)return e[0]; throw e}
  93103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93104. }, function($ctx1) {$ctx1.fill(self,"createServerWithArguments:",{options:options,server:server,popFront:popFront,front:front,optionName:optionName,optionValue:optionValue,switches:switches})});
  93105. //>>excludeEnd("ctx");
  93106. }; }),
  93107. $globals.FileServer.a$cls);
  93108. $core.addMethod(
  93109. $core.method({
  93110. selector: "defaultBasePath",
  93111. protocol: "accessing",
  93112. //>>excludeStart("ide", pragmas.excludeIdeData);
  93113. args: [],
  93114. source: "defaultBasePath\x0a\x09^ './'",
  93115. referencedClasses: [],
  93116. //>>excludeEnd("ide");
  93117. pragmas: [],
  93118. messageSends: []
  93119. }, function ($methodClass){ return function (){
  93120. var self=this,$self=this;
  93121. return "./";
  93122. }; }),
  93123. $globals.FileServer.a$cls);
  93124. $core.addMethod(
  93125. $core.method({
  93126. selector: "defaultHost",
  93127. protocol: "accessing",
  93128. //>>excludeStart("ide", pragmas.excludeIdeData);
  93129. args: [],
  93130. source: "defaultHost\x0a\x09^ '127.0.0.1'",
  93131. referencedClasses: [],
  93132. //>>excludeEnd("ide");
  93133. pragmas: [],
  93134. messageSends: []
  93135. }, function ($methodClass){ return function (){
  93136. var self=this,$self=this;
  93137. return "127.0.0.1";
  93138. }; }),
  93139. $globals.FileServer.a$cls);
  93140. $core.addMethod(
  93141. $core.method({
  93142. selector: "defaultMimeTypes",
  93143. protocol: "accessing",
  93144. //>>excludeStart("ide", pragmas.excludeIdeData);
  93145. args: [],
  93146. source: "defaultMimeTypes\x0a\x09^ #{\x0a\x09\x09'%' -> 'application/x-trash'.\x0a\x09\x09'323' -> 'text/h323'.\x0a\x09\x09'abw' -> 'application/x-abiword'.\x0a\x09\x09'ai' -> 'application/postscript'.\x0a\x09\x09'aif' -> 'audio/x-aiff'.\x0a\x09\x09'aifc' -> 'audio/x-aiff'.\x0a\x09\x09'aiff' -> 'audio/x-aiff'.\x0a\x09\x09'alc' -> 'chemical/x-alchemy'.\x0a\x09\x09'art' -> 'image/x-jg'.\x0a\x09\x09'asc' -> 'text/plain'.\x0a\x09\x09'asf' -> 'video/x-ms-asf'.\x0a\x09\x09'asn' -> 'chemical/x-ncbi-asn1-spec'.\x0a\x09\x09'aso' -> 'chemical/x-ncbi-asn1-binary'.\x0a\x09\x09'asx' -> 'video/x-ms-asf'.\x0a\x09\x09'au' -> 'audio/basic'.\x0a\x09\x09'avi' -> 'video/x-msvideo'.\x0a\x09\x09'b' -> 'chemical/x-molconn-Z'.\x0a\x09\x09'bak' -> 'application/x-trash'.\x0a\x09\x09'bat' -> 'application/x-msdos-program'.\x0a\x09\x09'bcpio' -> 'application/x-bcpio'.\x0a\x09\x09'bib' -> 'text/x-bibtex'.\x0a\x09\x09'bin' -> 'application/octet-stream'.\x0a\x09\x09'bmp' -> 'image/x-ms-bmp'.\x0a\x09\x09'book' -> 'application/x-maker'.\x0a\x09\x09'bsd' -> 'chemical/x-crossfire'.\x0a\x09\x09'c' -> 'text/x-csrc'.\x0a\x09\x09'c++' -> 'text/x-c++src'.\x0a\x09\x09'c3d' -> 'chemical/x-chem3d'.\x0a\x09\x09'cac' -> 'chemical/x-cache'.\x0a\x09\x09'cache' -> 'chemical/x-cache'.\x0a\x09\x09'cascii' -> 'chemical/x-cactvs-binary'.\x0a\x09\x09'cat' -> 'application/vnd.ms-pki.seccat'.\x0a\x09\x09'cbin' -> 'chemical/x-cactvs-binary'.\x0a\x09\x09'cc' -> 'text/x-c++src'.\x0a\x09\x09'cdf' -> 'application/x-cdf'.\x0a\x09\x09'cdr' -> 'image/x-coreldraw'.\x0a\x09\x09'cdt' -> 'image/x-coreldrawtemplate'.\x0a\x09\x09'cdx' -> 'chemical/x-cdx'.\x0a\x09\x09'cdy' -> 'application/vnd.cinderella'.\x0a\x09\x09'cef' -> 'chemical/x-cxf'.\x0a\x09\x09'cer' -> 'chemical/x-cerius'.\x0a\x09\x09'chm' -> 'chemical/x-chemdraw'.\x0a\x09\x09'chrt' -> 'application/x-kchart'.\x0a\x09\x09'cif' -> 'chemical/x-cif'.\x0a\x09\x09'class' -> 'application/java-vm'.\x0a\x09\x09'cls' -> 'text/x-tex'.\x0a\x09\x09'cmdf' -> 'chemical/x-cmdf'.\x0a\x09\x09'cml' -> 'chemical/x-cml'.\x0a\x09\x09'cod' -> 'application/vnd.rim.cod'.\x0a\x09\x09'com' -> 'application/x-msdos-program'.\x0a\x09\x09'cpa' -> 'chemical/x-compass'.\x0a\x09\x09'cpio' -> 'application/x-cpio'.\x0a\x09\x09'cpp' -> 'text/x-c++src'.\x0a\x09\x09'cpt' -> 'image/x-corelphotopaint'.\x0a\x09\x09'crl' -> 'application/x-pkcs7-crl'.\x0a\x09\x09'crt' -> 'application/x-x509-ca-cert'.\x0a\x09\x09'csf' -> 'chemical/x-cache-csf'.\x0a\x09\x09'csh' -> 'text/x-csh'.\x0a\x09\x09'csm' -> 'chemical/x-csml'.\x0a\x09\x09'csml' -> 'chemical/x-csml'.\x0a\x09\x09'css' -> 'text/css'.\x0a\x09\x09'csv' -> 'text/comma-separated-values'.\x0a\x09\x09'ctab' -> 'chemical/x-cactvs-binary'.\x0a\x09\x09'ctx' -> 'chemical/x-ctx'.\x0a\x09\x09'cu' -> 'application/cu-seeme'.\x0a\x09\x09'cub' -> 'chemical/x-gaussian-cube'.\x0a\x09\x09'cxf' -> 'chemical/x-cxf'.\x0a\x09\x09'cxx' -> 'text/x-c++src'.\x0a\x09\x09'dat' -> 'chemical/x-mopac-input'.\x0a\x09\x09'dcr' -> 'application/x-director'.\x0a\x09\x09'deb' -> 'application/x-debian-package'.\x0a\x09\x09'dif' -> 'video/dv'.\x0a\x09\x09'diff' -> 'text/plain'.\x0a\x09\x09'dir' -> 'application/x-director'.\x0a\x09\x09'djv' -> 'image/vnd.djvu'.\x0a\x09\x09'djvu' -> 'image/vnd.djvu'.\x0a\x09\x09'dl' -> 'video/dl'.\x0a\x09\x09'dll' -> 'application/x-msdos-program'.\x0a\x09\x09'dmg' -> 'application/x-apple-diskimage'.\x0a\x09\x09'dms' -> 'application/x-dms'.\x0a\x09\x09'doc' -> 'application/msword'.\x0a\x09\x09'dot' -> 'application/msword'.\x0a\x09\x09'dv' -> 'video/dv'.\x0a\x09\x09'dvi' -> 'application/x-dvi'.\x0a\x09\x09'dx' -> 'chemical/x-jcamp-dx'.\x0a\x09\x09'dxr' -> 'application/x-director'.\x0a\x09\x09'emb' -> 'chemical/x-embl-dl-nucleotide'.\x0a\x09\x09'embl' -> 'chemical/x-embl-dl-nucleotide'.\x0a\x09\x09'ent' -> 'chemical/x-pdb'.\x0a\x09\x09'eps' -> 'application/postscript'.\x0a\x09\x09'etx' -> 'text/x-setext'.\x0a\x09\x09'exe' -> 'application/x-msdos-program'.\x0a\x09\x09'ez' -> 'application/andrew-inset'.\x0a\x09\x09'fb' -> 'application/x-maker'.\x0a\x09\x09'fbdoc' -> 'application/x-maker'.\x0a\x09\x09'fch' -> 'chemical/x-gaussian-checkpoint'.\x0a\x09\x09'fchk' -> 'chemical/x-gaussian-checkpoint'.\x0a\x09\x09'fig' -> 'application/x-xfig'.\x0a\x09\x09'flac' -> 'application/x-flac'.\x0a\x09\x09'fli' -> 'video/fli'.\x0a\x09\x09'fm' -> 'application/x-maker'.\x0a\x09\x09'frame' -> 'application/x-maker'.\x0a\x09\x09'frm' -> 'application/x-maker'.\x0a\x09\x09'gal' -> 'chemical/x-gaussian-log'.\x0a\x09\x09'gam' -> 'chemical/x-gamess-input'.\x0a\x09\x09'gamin' -> 'chemical/x-gamess-input'.\x0a\x09\x09'gau' -> 'chemical/x-gaussian-input'.\x0a\x09\x09'gcd' -> 'text/x-pcs-gcd'.\x0a\x09\x09'gcf' -> 'application/x-graphing-calculator'.\x0a\x09\x09'gcg' -> 'chemical/x-gcg8-sequence'.\x0a\x09\x09'gen' -> 'chemical/x-genbank'.\x0a\x09\x09'gf' -> 'application/x-tex-gf'.\x0a\x09\x09'gif' -> 'image/gif'.\x0a\x09\x09'gjc' -> 'chemical/x-gaussian-input'.\x0a\x09\x09'gjf' -> 'chemical/x-gaussian-input'.\x0a\x09\x09'gl' -> 'video/gl'.\x0a\x09\x09'gnumeric' -> 'application/x-gnumeric'.\x0a\x09\x09'gpt' -> 'chemical/x-mopac-graph'.\x0a\x09\x09'gsf' -> 'application/x-font'.\x0a\x09\x09'gsm' -> 'audio/x-gsm'.\x0a\x09\x09'gtar' -> 'application/x-gtar'.\x0a\x09\x09'h' -> 'text/x-chdr'.\x0a\x09\x09'h++' -> 'text/x-c++hdr'.\x0a\x09\x09'hdf' -> 'application/x-hdf'.\x0a\x09\x09'hh' -> 'text/x-c++hdr'.\x0a\x09\x09'hin' -> 'chemical/x-hin'.\x0a\x09\x09'hpp' -> 'text/x-c++hdr'.\x0a\x09\x09'hqx' -> 'application/mac-binhex40'.\x0a\x09\x09'hs' -> 'text/x-haskell'.\x0a\x09\x09'hta' -> 'application/hta'.\x0a\x09\x09'htc' -> 'text/x-component'.\x0a\x09\x09'htm' -> 'text/html'.\x0a\x09\x09'html' -> 'text/html'.\x0a\x09\x09'hxx' -> 'text/x-c++hdr'.\x0a\x09\x09'ica' -> 'application/x-ica'.\x0a\x09\x09'ice' -> 'x-conference/x-cooltalk'.\x0a\x09\x09'ico' -> 'image/x-icon'.\x0a\x09\x09'ics' -> 'text/calendar'.\x0a\x09\x09'icz' -> 'text/calendar'.\x0a\x09\x09'ief' -> 'image/ief'.\x0a\x09\x09'iges' -> 'model/iges'.\x0a\x09\x09'igs' -> 'model/iges'.\x0a\x09\x09'iii' -> 'application/x-iphone'.\x0a\x09\x09'inp' -> 'chemical/x-gamess-input'.\x0a\x09\x09'ins' -> 'application/x-internet-signup'.\x0a\x09\x09'iso' -> 'application/x-iso9660-image'.\x0a\x09\x09'isp' -> 'application/x-internet-signup'.\x0a\x09\x09'ist' -> 'chemical/x-isostar'.\x0a\x09\x09'istr' -> 'chemical/x-isostar'.\x0a\x09\x09'jad' -> 'text/vnd.sun.j2me.app-descriptor'.\x0a\x09\x09'jar' -> 'application/java-archive'.\x0a\x09\x09'java' -> 'text/x-java'.\x0a\x09\x09'jdx' -> 'chemical/x-jcamp-dx'.\x0a\x09\x09'jmz' -> 'application/x-jmol'.\x0a\x09\x09'jng' -> 'image/x-jng'.\x0a\x09\x09'jnlp' -> 'application/x-java-jnlp-file'.\x0a\x09\x09'jpe' -> 'image/jpeg'.\x0a\x09\x09'jpeg' -> 'image/jpeg'.\x0a\x09\x09'jpg' -> 'image/jpeg'.\x0a\x09\x09'js' -> 'application/javascript'.\x0a\x09\x09'kar' -> 'audio/midi'.\x0a\x09\x09'key' -> 'application/pgp-keys'.\x0a\x09\x09'kil' -> 'application/x-killustrator'.\x0a\x09\x09'kin' -> 'chemical/x-kinemage'.\x0a\x09\x09'kpr' -> 'application/x-kpresenter'.\x0a\x09\x09'kpt' -> 'application/x-kpresenter'.\x0a\x09\x09'ksp' -> 'application/x-kspread'.\x0a\x09\x09'kwd' -> 'application/x-kword'.\x0a\x09\x09'kwt' -> 'application/x-kword'.\x0a\x09\x09'latex' -> 'application/x-latex'.\x0a\x09\x09'lha' -> 'application/x-lha'.\x0a\x09\x09'lhs' -> 'text/x-literate-haskell'.\x0a\x09\x09'lsf' -> 'video/x-la-asf'.\x0a\x09\x09'lsx' -> 'video/x-la-asf'.\x0a\x09\x09'ltx' -> 'text/x-tex'.\x0a\x09\x09'lzh' -> 'application/x-lzh'.\x0a\x09\x09'lzx' -> 'application/x-lzx'.\x0a\x09\x09'm3u' -> 'audio/x-mpegurl'.\x0a\x09\x09'm4a' -> 'audio/mpeg'.\x0a\x09\x09'maker' -> 'application/x-maker'.\x0a\x09\x09'man' -> 'application/x-troff-man'.\x0a\x09\x09'mcif' -> 'chemical/x-mmcif'.\x0a\x09\x09'mcm' -> 'chemical/x-macmolecule'.\x0a\x09\x09'mdb' -> 'application/msaccess'.\x0a\x09\x09'me' -> 'application/x-troff-me'.\x0a\x09\x09'mesh' -> 'model/mesh'.\x0a\x09\x09'mid' -> 'audio/midi'.\x0a\x09\x09'midi' -> 'audio/midi'.\x0a\x09\x09'mif' -> 'application/x-mif'.\x0a\x09\x09'mm' -> 'application/x-freemind'.\x0a\x09\x09'mmd' -> 'chemical/x-macromodel-input'.\x0a\x09\x09'mmf' -> 'application/vnd.smaf'.\x0a\x09\x09'mml' -> 'text/mathml'.\x0a\x09\x09'mmod' -> 'chemical/x-macromodel-input'.\x0a\x09\x09'mng' -> 'video/x-mng'.\x0a\x09\x09'moc' -> 'text/x-moc'.\x0a\x09\x09'mol' -> 'chemical/x-mdl-molfile'.\x0a\x09\x09'mol2' -> 'chemical/x-mol2'.\x0a\x09\x09'moo' -> 'chemical/x-mopac-out'.\x0a\x09\x09'mop' -> 'chemical/x-mopac-input'.\x0a\x09\x09'mopcrt' -> 'chemical/x-mopac-input'.\x0a\x09\x09'mov' -> 'video/quicktime'.\x0a\x09\x09'movie' -> 'video/x-sgi-movie'.\x0a\x09\x09'mp2' -> 'audio/mpeg'.\x0a\x09\x09'mp3' -> 'audio/mpeg'.\x0a\x09\x09'mp4' -> 'video/mp4'.\x0a\x09\x09'mpc' -> 'chemical/x-mopac-input'.\x0a\x09\x09'mpe' -> 'video/mpeg'.\x0a\x09\x09'mpeg' -> 'video/mpeg'.\x0a\x09\x09'mpega' -> 'audio/mpeg'.\x0a\x09\x09'mpg' -> 'video/mpeg'.\x0a\x09\x09'mpga' -> 'audio/mpeg'.\x0a\x09\x09'ms' -> 'application/x-troff-ms'.\x0a\x09\x09'msh' -> 'model/mesh'.\x0a\x09\x09'msi' -> 'application/x-msi'.\x0a\x09\x09'mvb' -> 'chemical/x-mopac-vib'.\x0a\x09\x09'mxu' -> 'video/vnd.mpegurl'.\x0a\x09\x09'nb' -> 'application/mathematica'.\x0a\x09\x09'nc' -> 'application/x-netcdf'.\x0a\x09\x09'nwc' -> 'application/x-nwc'.\x0a\x09\x09'o' -> 'application/x-object'.\x0a\x09\x09'oda' -> 'application/oda'.\x0a\x09\x09'odb' -> 'application/vnd.oasis.opendocument.database'.\x0a\x09\x09'odc' -> 'application/vnd.oasis.opendocument.chart'.\x0a\x09\x09'odf' -> 'application/vnd.oasis.opendocument.formula'.\x0a\x09\x09'odg' -> 'application/vnd.oasis.opendocument.graphics'.\x0a\x09\x09'odi' -> 'application/vnd.oasis.opendocument.image'.\x0a\x09\x09'odm' -> 'application/vnd.oasis.opendocument.text-master'.\x0a\x09\x09'odp' -> 'application/vnd.oasis.opendocument.presentation'.\x0a\x09\x09'ods' -> 'application/vnd.oasis.opendocument.spreadsheet'.\x0a\x09\x09'odt' -> 'application/vnd.oasis.opendocument.text'.\x0a\x09\x09'ogg' -> 'application/ogg'.\x0a\x09\x09'old' -> 'application/x-trash'.\x0a\x09\x09'oth' -> 'application/vnd.oasis.opendocument.text-web'.\x0a\x09\x09'oza' -> 'application/x-oz-application'.\x0a\x09\x09'p' -> 'text/x-pascal'.\x0a\x09\x09'p7r' -> 'application/x-pkcs7-certreqresp'.\x0a\x09\x09'pac' -> 'application/x-ns-proxy-autoconfig'.\x0a\x09\x09'pas' -> 'text/x-pascal'.\x0a\x09\x09'pat' -> 'image/x-coreldrawpattern'.\x0a\x09\x09'pbm' -> 'image/x-portable-bitmap'.\x0a\x09\x09'pcf' -> 'application/x-font'.\x0a\x09\x09'pcf.Z' -> 'application/x-font'.\x0a\x09\x09'pcx' -> 'image/pcx'.\x0a\x09\x09'pdb' -> 'chemical/x-pdb'.\x0a\x09\x09'pdf' -> 'application/pdf'.\x0a\x09\x09'pfa' -> 'application/x-font'.\x0a\x09\x09'pfb' -> 'application/x-font'.\x0a\x09\x09'pgm' -> 'image/x-portable-graymap'.\x0a\x09\x09'pgn' -> 'application/x-chess-pgn'.\x0a\x09\x09'pgp' -> 'application/pgp-signature'.\x0a\x09\x09'pk' -> 'application/x-tex-pk'.\x0a\x09\x09'pl' -> 'text/x-perl'.\x0a\x09\x09'pls' -> 'audio/x-scpls'.\x0a\x09\x09'pm' -> 'text/x-perl'.\x0a\x09\x09'png' -> 'image/png'.\x0a\x09\x09'pnm' -> 'image/x-portable-anymap'.\x0a\x09\x09'pot' -> 'text/plain'.\x0a\x09\x09'ppm' -> 'image/x-portable-pixmap'.\x0a\x09\x09'pps' -> 'application/vnd.ms-powerpoint'.\x0a\x09\x09'ppt' -> 'application/vnd.ms-powerpoint'.\x0a\x09\x09'prf' -> 'application/pics-rules'.\x0a\x09\x09'prt' -> 'chemical/x-ncbi-asn1-ascii'.\x0a\x09\x09'ps' -> 'application/postscript'.\x0a\x09\x09'psd' -> 'image/x-photoshop'.\x0a\x09\x09'psp' -> 'text/x-psp'.\x0a\x09\x09'py' -> 'text/x-python'.\x0a\x09\x09'pyc' -> 'application/x-python-code'.\x0a\x09\x09'pyo' -> 'application/x-python-code'.\x0a\x09\x09'qt' -> 'video/quicktime'.\x0a\x09\x09'qtl' -> 'application/x-quicktimeplayer'.\x0a\x09\x09'ra' -> 'audio/x-realaudio'.\x0a\x09\x09'ram' -> 'audio/x-pn-realaudio'.\x0a\x09\x09'rar' -> 'application/rar'.\x0a\x09\x09'ras' -> 'image/x-cmu-raster'.\x0a\x09\x09'rd' -> 'chemical/x-mdl-rdfile'.\x0a\x09\x09'rdf' -> 'application/rdf+xml'.\x0a\x09\x09'rgb' -> 'image/x-rgb'.\x0a\x09\x09'rm' -> 'audio/x-pn-realaudio'.\x0a\x09\x09'roff' -> 'application/x-troff'.\x0a\x09\x09'ros' -> 'chemical/x-rosdal'.\x0a\x09\x09'rpm' -> 'application/x-redhat-package-manager'.\x0a\x09\x09'rss' -> 'application/rss+xml'.\x0a\x09\x09'rtf' -> 'text/rtf'.\x0a\x09\x09'rtx' -> 'text/richtext'.\x0a\x09\x09'rxn' -> 'chemical/x-mdl-rxnfile'.\x0a\x09\x09'sct' -> 'text/scriptlet'.\x0a\x09\x09'sd' -> 'chemical/x-mdl-sdfile'.\x0a\x09\x09'sd2' -> 'audio/x-sd2'.\x0a\x09\x09'sda' -> 'application/vnd.stardivision.draw'.\x0a\x09\x09'sdc' -> 'application/vnd.stardivision.calc'.\x0a\x09\x09'sdd' -> 'application/vnd.stardivision.impress'.\x0a\x09\x09'sdf' -> 'chemical/x-mdl-sdfile'.\x0a\x09\x09'sdp' -> 'application/vnd.stardivision.impress'.\x0a\x09\x09'sdw' -> 'application/vnd.stardivision.writer'.\x0a\x09\x09'ser' -> 'application/java-serialized-object'.\x0a\x09\x09'sgf' -> 'application/x-go-sgf'.\x0a\x09\x09'sgl' -> 'application/vnd.stardivision.writer-global'.\x0a\x09\x09'sh' -> 'text/x-sh'.\x0a\x09\x09'shar' -> 'application/x-shar'.\x0a\x09\x09'shtml' -> 'text/html'.\x0a\x09\x09'sid' -> 'audio/prs.sid'.\x0a\x09\x09'sik' -> 'application/x-trash'.\x0a\x09\x09'silo' -> 'model/mesh'.\x0a\x09\x09'sis' -> 'application/vnd.symbian.install'.\x0a\x09\x09'sit' -> 'application/x-stuffit'.\x0a\x09\x09'skd' -> 'application/x-koan'.\x0a\x09\x09'skm' -> 'application/x-koan'.\x0a\x09\x09'skp' -> 'application/x-koan'.\x0a\x09\x09'skt' -> 'application/x-koan'.\x0a\x09\x09'smf' -> 'application/vnd.stardivision.math'.\x0a\x09\x09'smi' -> 'application/smil'.\x0a\x09\x09'smil' -> 'application/smil'.\x0a\x09\x09'snd' -> 'audio/basic'.\x0a\x09\x09'spc' -> 'chemical/x-galactic-spc'.\x0a\x09\x09'spl' -> 'application/x-futuresplash'.\x0a\x09\x09'src' -> 'application/x-wais-source'.\x0a\x09\x09'stc' -> 'application/vnd.sun.xml.calc.template'.\x0a\x09\x09'std' -> 'application/vnd.sun.xml.draw.template'.\x0a\x09\x09'sti' -> 'application/vnd.sun.xml.impress.template'.\x0a\x09\x09'stl' -> 'application/vnd.ms-pki.stl'.\x0a\x09\x09'stw' -> 'application/vnd.sun.xml.writer.template'.\x0a\x09\x09'sty' -> 'text/x-tex'.\x0a\x09\x09'sv4cpio' -> 'application/x-sv4cpio'.\x0a\x09\x09'sv4crc' -> 'application/x-sv4crc'.\x0a\x09\x09'svg' -> 'image/svg+xml'.\x0a\x09\x09'svgz' -> 'image/svg+xml'.\x0a\x09\x09'sw' -> 'chemical/x-swissprot'.\x0a\x09\x09'swf' -> 'application/x-shockwave-flash'.\x0a\x09\x09'swfl' -> 'application/x-shockwave-flash'.\x0a\x09\x09'sxc' -> 'application/vnd.sun.xml.calc'.\x0a\x09\x09'sxd' -> 'application/vnd.sun.xml.draw'.\x0a\x09\x09'sxg' -> 'application/vnd.sun.xml.writer.global'.\x0a\x09\x09'sxi' -> 'application/vnd.sun.xml.impress'.\x0a\x09\x09'sxm' -> 'application/vnd.sun.xml.math'.\x0a\x09\x09'sxw' -> 'application/vnd.sun.xml.writer'.\x0a\x09\x09't' -> 'application/x-troff'.\x0a\x09\x09'tar' -> 'application/x-tar'.\x0a\x09\x09'taz' -> 'application/x-gtar'.\x0a\x09\x09'tcl' -> 'text/x-tcl'.\x0a\x09\x09'tex' -> 'text/x-tex'.\x0a\x09\x09'texi' -> 'application/x-texinfo'.\x0a\x09\x09'texinfo' -> 'application/x-texinfo'.\x0a\x09\x09'text' -> 'text/plain'.\x0a\x09\x09'tgf' -> 'chemical/x-mdl-tgf'.\x0a\x09\x09'tgz' -> 'application/x-gtar'.\x0a\x09\x09'tif' -> 'image/tiff'.\x0a\x09\x09'tiff' -> 'image/tiff'.\x0a\x09\x09'tk' -> 'text/x-tcl'.\x0a\x09\x09'tm' -> 'text/texmacs'.\x0a\x09\x09'torrent' -> 'application/x-bittorrent'.\x0a\x09\x09'tr' -> 'application/x-troff'.\x0a\x09\x09'ts' -> 'text/texmacs'.\x0a\x09\x09'tsp' -> 'application/dsptype'.\x0a\x09\x09'tsv' -> 'text/tab-separated-values'.\x0a\x09\x09'txt' -> 'text/plain'.\x0a\x09\x09'udeb' -> 'application/x-debian-package'.\x0a\x09\x09'uls' -> 'text/iuls'.\x0a\x09\x09'ustar' -> 'application/x-ustar'.\x0a\x09\x09'val' -> 'chemical/x-ncbi-asn1-binary'.\x0a\x09\x09'vcd' -> 'application/x-cdlink'.\x0a\x09\x09'vcf' -> 'text/x-vcard'.\x0a\x09\x09'vcs' -> 'text/x-vcalendar'.\x0a\x09\x09'vmd' -> 'chemical/x-vmd'.\x0a\x09\x09'vms' -> 'chemical/x-vamas-iso14976'.\x0a\x09\x09'vor' -> 'application/vnd.stardivision.writer'.\x0a\x09\x09'vrm' -> 'x-world/x-vrml'.\x0a\x09\x09'vrml' -> 'x-world/x-vrml'.\x0a\x09\x09'vsd' -> 'application/vnd.visio'.\x0a\x09\x09'wad' -> 'application/x-doom'.\x0a\x09\x09'wav' -> 'audio/x-wav'.\x0a\x09\x09'wax' -> 'audio/x-ms-wax'.\x0a\x09\x09'wbmp' -> 'image/vnd.wap.wbmp'.\x0a\x09\x09'wbxml' -> 'application/vnd.wap.wbxml'.\x0a\x09\x09'wk' -> 'application/x-123'.\x0a\x09\x09'wm' -> 'video/x-ms-wm'.\x0a\x09\x09'wma' -> 'audio/x-ms-wma'.\x0a\x09\x09'wmd' -> 'application/x-ms-wmd'.\x0a\x09\x09'wml' -> 'text/vnd.wap.wml'.\x0a\x09\x09'wmlc' -> 'application/vnd.wap.wmlc'.\x0a\x09\x09'wmls' -> 'text/vnd.wap.wmlscript'.\x0a\x09\x09'wmlsc' -> 'application/vnd.wap.wmlscriptc'.\x0a\x09\x09'wmv' -> 'video/x-ms-wmv'.\x0a\x09\x09'wmx' -> 'video/x-ms-wmx'.\x0a\x09\x09'wmz' -> 'application/x-ms-wmz'.\x0a\x09\x09'wp5' -> 'application/wordperfect5.1'.\x0a\x09\x09'wpd' -> 'application/wordperfect'.\x0a\x09\x09'wrl' -> 'x-world/x-vrml'.\x0a\x09\x09'wsc' -> 'text/scriptlet'.\x0a\x09\x09'wvx' -> 'video/x-ms-wvx'.\x0a\x09\x09'wz' -> 'application/x-wingz'.\x0a\x09\x09'xbm' -> 'image/x-xbitmap'.\x0a\x09\x09'xcf' -> 'application/x-xcf'.\x0a\x09\x09'xht' -> 'application/xhtml+xml'.\x0a\x09\x09'xhtml' -> 'application/xhtml+xml'.\x0a\x09\x09'xlb' -> 'application/vnd.ms-excel'.\x0a\x09\x09'xls' -> 'application/vnd.ms-excel'.\x0a\x09\x09'xlt' -> 'application/vnd.ms-excel'.\x0a\x09\x09'xml' -> 'application/xml'.\x0a\x09\x09'xpi' -> 'application/x-xpinstall'.\x0a\x09\x09'xpm' -> 'image/x-xpixmap'.\x0a\x09\x09'xsl' -> 'application/xml'.\x0a\x09\x09'xtel' -> 'chemical/x-xtel'.\x0a\x09\x09'xul' -> 'application/vnd.mozilla.xul+xml'.\x0a\x09\x09'xwd' -> 'image/x-xwindowdump'.\x0a\x09\x09'xyz' -> 'chemical/x-xyz'.\x0a\x09\x09'zip' -> 'application/zip'.\x0a\x09\x09'zmt' -> 'chemical/x-mopac-input'.\x0a\x09\x09'~' -> 'application/x-trash'\x0a\x09}",
  93147. referencedClasses: [],
  93148. //>>excludeEnd("ide");
  93149. pragmas: [],
  93150. messageSends: []
  93151. }, function ($methodClass){ return function (){
  93152. var self=this,$self=this;
  93153. return $globals.HashedCollection._newFromPairs_(["%","application/x-trash","323","text/h323","abw","application/x-abiword","ai","application/postscript","aif","audio/x-aiff","aifc","audio/x-aiff","aiff","audio/x-aiff","alc","chemical/x-alchemy","art","image/x-jg","asc","text/plain","asf","video/x-ms-asf","asn","chemical/x-ncbi-asn1-spec","aso","chemical/x-ncbi-asn1-binary","asx","video/x-ms-asf","au","audio/basic","avi","video/x-msvideo","b","chemical/x-molconn-Z","bak","application/x-trash","bat","application/x-msdos-program","bcpio","application/x-bcpio","bib","text/x-bibtex","bin","application/octet-stream","bmp","image/x-ms-bmp","book","application/x-maker","bsd","chemical/x-crossfire","c","text/x-csrc","c++","text/x-c++src","c3d","chemical/x-chem3d","cac","chemical/x-cache","cache","chemical/x-cache","cascii","chemical/x-cactvs-binary","cat","application/vnd.ms-pki.seccat","cbin","chemical/x-cactvs-binary","cc","text/x-c++src","cdf","application/x-cdf","cdr","image/x-coreldraw","cdt","image/x-coreldrawtemplate","cdx","chemical/x-cdx","cdy","application/vnd.cinderella","cef","chemical/x-cxf","cer","chemical/x-cerius","chm","chemical/x-chemdraw","chrt","application/x-kchart","cif","chemical/x-cif","class","application/java-vm","cls","text/x-tex","cmdf","chemical/x-cmdf","cml","chemical/x-cml","cod","application/vnd.rim.cod","com","application/x-msdos-program","cpa","chemical/x-compass","cpio","application/x-cpio","cpp","text/x-c++src","cpt","image/x-corelphotopaint","crl","application/x-pkcs7-crl","crt","application/x-x509-ca-cert","csf","chemical/x-cache-csf","csh","text/x-csh","csm","chemical/x-csml","csml","chemical/x-csml","css","text/css","csv","text/comma-separated-values","ctab","chemical/x-cactvs-binary","ctx","chemical/x-ctx","cu","application/cu-seeme","cub","chemical/x-gaussian-cube","cxf","chemical/x-cxf","cxx","text/x-c++src","dat","chemical/x-mopac-input","dcr","application/x-director","deb","application/x-debian-package","dif","video/dv","diff","text/plain","dir","application/x-director","djv","image/vnd.djvu","djvu","image/vnd.djvu","dl","video/dl","dll","application/x-msdos-program","dmg","application/x-apple-diskimage","dms","application/x-dms","doc","application/msword","dot","application/msword","dv","video/dv","dvi","application/x-dvi","dx","chemical/x-jcamp-dx","dxr","application/x-director","emb","chemical/x-embl-dl-nucleotide","embl","chemical/x-embl-dl-nucleotide","ent","chemical/x-pdb","eps","application/postscript","etx","text/x-setext","exe","application/x-msdos-program","ez","application/andrew-inset","fb","application/x-maker","fbdoc","application/x-maker","fch","chemical/x-gaussian-checkpoint","fchk","chemical/x-gaussian-checkpoint","fig","application/x-xfig","flac","application/x-flac","fli","video/fli","fm","application/x-maker","frame","application/x-maker","frm","application/x-maker","gal","chemical/x-gaussian-log","gam","chemical/x-gamess-input","gamin","chemical/x-gamess-input","gau","chemical/x-gaussian-input","gcd","text/x-pcs-gcd","gcf","application/x-graphing-calculator","gcg","chemical/x-gcg8-sequence","gen","chemical/x-genbank","gf","application/x-tex-gf","gif","image/gif","gjc","chemical/x-gaussian-input","gjf","chemical/x-gaussian-input","gl","video/gl","gnumeric","application/x-gnumeric","gpt","chemical/x-mopac-graph","gsf","application/x-font","gsm","audio/x-gsm","gtar","application/x-gtar","h","text/x-chdr","h++","text/x-c++hdr","hdf","application/x-hdf","hh","text/x-c++hdr","hin","chemical/x-hin","hpp","text/x-c++hdr","hqx","application/mac-binhex40","hs","text/x-haskell","hta","application/hta","htc","text/x-component","htm","text/html","html","text/html","hxx","text/x-c++hdr","ica","application/x-ica","ice","x-conference/x-cooltalk","ico","image/x-icon","ics","text/calendar","icz","text/calendar","ief","image/ief","iges","model/iges","igs","model/iges","iii","application/x-iphone","inp","chemical/x-gamess-input","ins","application/x-internet-signup","iso","application/x-iso9660-image","isp","application/x-internet-signup","ist","chemical/x-isostar","istr","chemical/x-isostar","jad","text/vnd.sun.j2me.app-descriptor","jar","application/java-archive","java","text/x-java","jdx","chemical/x-jcamp-dx","jmz","application/x-jmol","jng","image/x-jng","jnlp","application/x-java-jnlp-file","jpe","image/jpeg","jpeg","image/jpeg","jpg","image/jpeg","js","application/javascript","kar","audio/midi","key","application/pgp-keys","kil","application/x-killustrator","kin","chemical/x-kinemage","kpr","application/x-kpresenter","kpt","application/x-kpresenter","ksp","application/x-kspread","kwd","application/x-kword","kwt","application/x-kword","latex","application/x-latex","lha","application/x-lha","lhs","text/x-literate-haskell","lsf","video/x-la-asf","lsx","video/x-la-asf","ltx","text/x-tex","lzh","application/x-lzh","lzx","application/x-lzx","m3u","audio/x-mpegurl","m4a","audio/mpeg","maker","application/x-maker","man","application/x-troff-man","mcif","chemical/x-mmcif","mcm","chemical/x-macmolecule","mdb","application/msaccess","me","application/x-troff-me","mesh","model/mesh","mid","audio/midi","midi","audio/midi","mif","application/x-mif","mm","application/x-freemind","mmd","chemical/x-macromodel-input","mmf","application/vnd.smaf","mml","text/mathml","mmod","chemical/x-macromodel-input","mng","video/x-mng","moc","text/x-moc","mol","chemical/x-mdl-molfile","mol2","chemical/x-mol2","moo","chemical/x-mopac-out","mop","chemical/x-mopac-input","mopcrt","chemical/x-mopac-input","mov","video/quicktime","movie","video/x-sgi-movie","mp2","audio/mpeg","mp3","audio/mpeg","mp4","video/mp4","mpc","chemical/x-mopac-input","mpe","video/mpeg","mpeg","video/mpeg","mpega","audio/mpeg","mpg","video/mpeg","mpga","audio/mpeg","ms","application/x-troff-ms","msh","model/mesh","msi","application/x-msi","mvb","chemical/x-mopac-vib","mxu","video/vnd.mpegurl","nb","application/mathematica","nc","application/x-netcdf","nwc","application/x-nwc","o","application/x-object","oda","application/oda","odb","application/vnd.oasis.opendocument.database","odc","application/vnd.oasis.opendocument.chart","odf","application/vnd.oasis.opendocument.formula","odg","application/vnd.oasis.opendocument.graphics","odi","application/vnd.oasis.opendocument.image","odm","application/vnd.oasis.opendocument.text-master","odp","application/vnd.oasis.opendocument.presentation","ods","application/vnd.oasis.opendocument.spreadsheet","odt","application/vnd.oasis.opendocument.text","ogg","application/ogg","old","application/x-trash","oth","application/vnd.oasis.opendocument.text-web","oza","application/x-oz-application","p","text/x-pascal","p7r","application/x-pkcs7-certreqresp","pac","application/x-ns-proxy-autoconfig","pas","text/x-pascal","pat","image/x-coreldrawpattern","pbm","image/x-portable-bitmap","pcf","application/x-font","pcf.Z","application/x-font","pcx","image/pcx","pdb","chemical/x-pdb","pdf","application/pdf","pfa","application/x-font","pfb","application/x-font","pgm","image/x-portable-graymap","pgn","application/x-chess-pgn","pgp","application/pgp-signature","pk","application/x-tex-pk","pl","text/x-perl","pls","audio/x-scpls","pm","text/x-perl","png","image/png","pnm","image/x-portable-anymap","pot","text/plain","ppm","image/x-portable-pixmap","pps","application/vnd.ms-powerpoint","ppt","application/vnd.ms-powerpoint","prf","application/pics-rules","prt","chemical/x-ncbi-asn1-ascii","ps","application/postscript","psd","image/x-photoshop","psp","text/x-psp","py","text/x-python","pyc","application/x-python-code","pyo","application/x-python-code","qt","video/quicktime","qtl","application/x-quicktimeplayer","ra","audio/x-realaudio","ram","audio/x-pn-realaudio","rar","application/rar","ras","image/x-cmu-raster","rd","chemical/x-mdl-rdfile","rdf","application/rdf+xml","rgb","image/x-rgb","rm","audio/x-pn-realaudio","roff","application/x-troff","ros","chemical/x-rosdal","rpm","application/x-redhat-package-manager","rss","application/rss+xml","rtf","text/rtf","rtx","text/richtext","rxn","chemical/x-mdl-rxnfile","sct","text/scriptlet","sd","chemical/x-mdl-sdfile","sd2","audio/x-sd2","sda","application/vnd.stardivision.draw","sdc","application/vnd.stardivision.calc","sdd","application/vnd.stardivision.impress","sdf","chemical/x-mdl-sdfile","sdp","application/vnd.stardivision.impress","sdw","application/vnd.stardivision.writer","ser","application/java-serialized-object","sgf","application/x-go-sgf","sgl","application/vnd.stardivision.writer-global","sh","text/x-sh","shar","application/x-shar","shtml","text/html","sid","audio/prs.sid","sik","application/x-trash","silo","model/mesh","sis","application/vnd.symbian.install","sit","application/x-stuffit","skd","application/x-koan","skm","application/x-koan","skp","application/x-koan","skt","application/x-koan","smf","application/vnd.stardivision.math","smi","application/smil","smil","application/smil","snd","audio/basic","spc","chemical/x-galactic-spc","spl","application/x-futuresplash","src","application/x-wais-source","stc","application/vnd.sun.xml.calc.template","std","application/vnd.sun.xml.draw.template","sti","application/vnd.sun.xml.impress.template","stl","application/vnd.ms-pki.stl","stw","application/vnd.sun.xml.writer.template","sty","text/x-tex","sv4cpio","application/x-sv4cpio","sv4crc","application/x-sv4crc","svg","image/svg+xml","svgz","image/svg+xml","sw","chemical/x-swissprot","swf","application/x-shockwave-flash","swfl","application/x-shockwave-flash","sxc","application/vnd.sun.xml.calc","sxd","application/vnd.sun.xml.draw","sxg","application/vnd.sun.xml.writer.global","sxi","application/vnd.sun.xml.impress","sxm","application/vnd.sun.xml.math","sxw","application/vnd.sun.xml.writer","t","application/x-troff","tar","application/x-tar","taz","application/x-gtar","tcl","text/x-tcl","tex","text/x-tex","texi","application/x-texinfo","texinfo","application/x-texinfo","text","text/plain","tgf","chemical/x-mdl-tgf","tgz","application/x-gtar","tif","image/tiff","tiff","image/tiff","tk","text/x-tcl","tm","text/texmacs","torrent","application/x-bittorrent","tr","application/x-troff","ts","text/texmacs","tsp","application/dsptype","tsv","text/tab-separated-values","txt","text/plain","udeb","application/x-debian-package","uls","text/iuls","ustar","application/x-ustar","val","chemical/x-ncbi-asn1-binary","vcd","application/x-cdlink","vcf","text/x-vcard","vcs","text/x-vcalendar","vmd","chemical/x-vmd","vms","chemical/x-vamas-iso14976","vor","application/vnd.stardivision.writer","vrm","x-world/x-vrml","vrml","x-world/x-vrml","vsd","application/vnd.visio","wad","application/x-doom","wav","audio/x-wav","wax","audio/x-ms-wax","wbmp","image/vnd.wap.wbmp","wbxml","application/vnd.wap.wbxml","wk","application/x-123","wm","video/x-ms-wm","wma","audio/x-ms-wma","wmd","application/x-ms-wmd","wml","text/vnd.wap.wml","wmlc","application/vnd.wap.wmlc","wmls","text/vnd.wap.wmlscript","wmlsc","application/vnd.wap.wmlscriptc","wmv","video/x-ms-wmv","wmx","video/x-ms-wmx","wmz","application/x-ms-wmz","wp5","application/wordperfect5.1","wpd","application/wordperfect","wrl","x-world/x-vrml","wsc","text/scriptlet","wvx","video/x-ms-wvx","wz","application/x-wingz","xbm","image/x-xbitmap","xcf","application/x-xcf","xht","application/xhtml+xml","xhtml","application/xhtml+xml","xlb","application/vnd.ms-excel","xls","application/vnd.ms-excel","xlt","application/vnd.ms-excel","xml","application/xml","xpi","application/x-xpinstall","xpm","image/x-xpixmap","xsl","application/xml","xtel","chemical/x-xtel","xul","application/vnd.mozilla.xul+xml","xwd","image/x-xwindowdump","xyz","chemical/x-xyz","zip","application/zip","zmt","chemical/x-mopac-input","~","application/x-trash"]);
  93154. }; }),
  93155. $globals.FileServer.a$cls);
  93156. $core.addMethod(
  93157. $core.method({
  93158. selector: "defaultPort",
  93159. protocol: "accessing",
  93160. //>>excludeStart("ide", pragmas.excludeIdeData);
  93161. args: [],
  93162. source: "defaultPort\x0a\x09^ 4000",
  93163. referencedClasses: [],
  93164. //>>excludeEnd("ide");
  93165. pragmas: [],
  93166. messageSends: []
  93167. }, function ($methodClass){ return function (){
  93168. var self=this,$self=this;
  93169. return (4000);
  93170. }; }),
  93171. $globals.FileServer.a$cls);
  93172. $core.addMethod(
  93173. $core.method({
  93174. selector: "main",
  93175. protocol: "initialization",
  93176. //>>excludeStart("ide", pragmas.excludeIdeData);
  93177. args: [],
  93178. source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09 Creates and starts a FileServer instance.\x22\x0a\x09| fileServer args |\x0a\x09args := process argv.\x0a\x09\x22Remove the first args which contain the path to the node executable and the script file.\x22\x0a\x09args removeFrom: 1 to: 3.\x0a\x0a\x09args detect: [ :each |\x0a\x09\x09(each = '--help') ifTrue: [FileServer printHelp]]\x0a\x09ifNone: [\x0a\x09\x09fileServer := FileServer createServerWithArguments: args.\x0a\x09\x09^ fileServer start]",
  93179. referencedClasses: ["FileServer"],
  93180. //>>excludeEnd("ide");
  93181. pragmas: [],
  93182. messageSends: ["argv", "removeFrom:to:", "detect:ifNone:", "ifTrue:", "=", "printHelp", "createServerWithArguments:", "start"]
  93183. }, function ($methodClass){ return function (){
  93184. var self=this,$self=this;
  93185. var fileServer,args;
  93186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93187. return $core.withContext(function($ctx1) {
  93188. //>>excludeEnd("ctx");
  93189. var $early={};
  93190. try {
  93191. args=$recv(process)._argv();
  93192. $recv(args)._removeFrom_to_((1),(3));
  93193. $recv(args)._detect_ifNone_((function(each){
  93194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93195. return $core.withContext(function($ctx2) {
  93196. //>>excludeEnd("ctx");
  93197. if($core.assert($recv(each).__eq("--help"))){
  93198. return $recv($globals.FileServer)._printHelp();
  93199. }
  93200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93201. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  93202. //>>excludeEnd("ctx");
  93203. }),(function(){
  93204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93205. return $core.withContext(function($ctx2) {
  93206. //>>excludeEnd("ctx");
  93207. fileServer=$recv($globals.FileServer)._createServerWithArguments_(args);
  93208. throw $early=[$recv(fileServer)._start()];
  93209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93210. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  93211. //>>excludeEnd("ctx");
  93212. }));
  93213. return self;
  93214. }
  93215. catch(e) {if(e===$early)return e[0]; throw e}
  93216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93217. }, function($ctx1) {$ctx1.fill(self,"main",{fileServer:fileServer,args:args})});
  93218. //>>excludeEnd("ctx");
  93219. }; }),
  93220. $globals.FileServer.a$cls);
  93221. $core.addMethod(
  93222. $core.method({
  93223. selector: "mimeTypeFor:",
  93224. protocol: "accessing",
  93225. //>>excludeStart("ide", pragmas.excludeIdeData);
  93226. args: ["aString"],
  93227. source: "mimeTypeFor: aString\x0a\x09^ self mimeTypes at: (aString replace: '.*[\x5c.]' with: '') ifAbsent: ['text/plain']",
  93228. referencedClasses: [],
  93229. //>>excludeEnd("ide");
  93230. pragmas: [],
  93231. messageSends: ["at:ifAbsent:", "mimeTypes", "replace:with:"]
  93232. }, function ($methodClass){ return function (aString){
  93233. var self=this,$self=this;
  93234. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93235. return $core.withContext(function($ctx1) {
  93236. //>>excludeEnd("ctx");
  93237. return $recv($self._mimeTypes())._at_ifAbsent_($recv(aString)._replace_with_(".*[\x5c.]",""),(function(){
  93238. return "text/plain";
  93239. }));
  93240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93241. }, function($ctx1) {$ctx1.fill(self,"mimeTypeFor:",{aString:aString})});
  93242. //>>excludeEnd("ctx");
  93243. }; }),
  93244. $globals.FileServer.a$cls);
  93245. $core.addMethod(
  93246. $core.method({
  93247. selector: "mimeTypes",
  93248. protocol: "accessing",
  93249. //>>excludeStart("ide", pragmas.excludeIdeData);
  93250. args: [],
  93251. source: "mimeTypes\x0a\x09^ mimeTypes ifNil: [mimeTypes := self defaultMimeTypes]",
  93252. referencedClasses: [],
  93253. //>>excludeEnd("ide");
  93254. pragmas: [],
  93255. messageSends: ["ifNil:", "defaultMimeTypes"]
  93256. }, function ($methodClass){ return function (){
  93257. var self=this,$self=this;
  93258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93259. return $core.withContext(function($ctx1) {
  93260. //>>excludeEnd("ctx");
  93261. var $1;
  93262. $1=$self.mimeTypes;
  93263. if($1 == null || $1.a$nil){
  93264. $self.mimeTypes=$self._defaultMimeTypes();
  93265. return $self.mimeTypes;
  93266. } else {
  93267. return $1;
  93268. }
  93269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93270. }, function($ctx1) {$ctx1.fill(self,"mimeTypes",{})});
  93271. //>>excludeEnd("ctx");
  93272. }; }),
  93273. $globals.FileServer.a$cls);
  93274. $core.addMethod(
  93275. $core.method({
  93276. selector: "printHelp",
  93277. protocol: "accessing",
  93278. //>>excludeStart("ide", pragmas.excludeIdeData);
  93279. args: [],
  93280. source: "printHelp\x0a\x09console log: 'Available commandline options are:'.\x0a\x09console log: '--help'.\x0a\x09self commandLineSwitches do: [ :each |\x0a\x09\x09console log: each, ' <parameter>']",
  93281. referencedClasses: [],
  93282. //>>excludeEnd("ide");
  93283. pragmas: [],
  93284. messageSends: ["log:", "do:", "commandLineSwitches", ","]
  93285. }, function ($methodClass){ return function (){
  93286. var self=this,$self=this;
  93287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93288. return $core.withContext(function($ctx1) {
  93289. //>>excludeEnd("ctx");
  93290. [$recv(console)._log_("Available commandline options are:")
  93291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93292. ,$ctx1.sendIdx["log:"]=1
  93293. //>>excludeEnd("ctx");
  93294. ][0];
  93295. [$recv(console)._log_("--help")
  93296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93297. ,$ctx1.sendIdx["log:"]=2
  93298. //>>excludeEnd("ctx");
  93299. ][0];
  93300. $recv($self._commandLineSwitches())._do_((function(each){
  93301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93302. return $core.withContext(function($ctx2) {
  93303. //>>excludeEnd("ctx");
  93304. return $recv(console)._log_($recv(each).__comma(" <parameter>"));
  93305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93306. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  93307. //>>excludeEnd("ctx");
  93308. }));
  93309. return self;
  93310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93311. }, function($ctx1) {$ctx1.fill(self,"printHelp",{})});
  93312. //>>excludeEnd("ctx");
  93313. }; }),
  93314. $globals.FileServer.a$cls);
  93315. $core.addMethod(
  93316. $core.method({
  93317. selector: "selectorForCommandLineSwitch:",
  93318. protocol: "accessing",
  93319. //>>excludeStart("ide", pragmas.excludeIdeData);
  93320. args: ["aSwitch"],
  93321. source: "selectorForCommandLineSwitch: aSwitch\x0a\x09\x22Remove the trailing '--', add ':' at the end\x0a\x09 and replace all occurences of a lowercase letter preceded by a '-' with\x0a\x09 the Uppercase letter.\x0a\x09 Example: --fallback-page becomes fallbackPage:\x22\x0a\x09^ ((aSwitch replace: '^--' with: '')\x0a\x09\x09replace: '-[a-z]' with: [ :each | each second asUppercase ]), ':'",
  93322. referencedClasses: [],
  93323. //>>excludeEnd("ide");
  93324. pragmas: [],
  93325. messageSends: [",", "replace:with:", "asUppercase", "second"]
  93326. }, function ($methodClass){ return function (aSwitch){
  93327. var self=this,$self=this;
  93328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93329. return $core.withContext(function($ctx1) {
  93330. //>>excludeEnd("ctx");
  93331. return $recv([$recv($recv(aSwitch)._replace_with_("^--",""))._replace_with_("-[a-z]",(function(each){
  93332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93333. return $core.withContext(function($ctx2) {
  93334. //>>excludeEnd("ctx");
  93335. return $recv($recv(each)._second())._asUppercase();
  93336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93337. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  93338. //>>excludeEnd("ctx");
  93339. }))
  93340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93341. ,$ctx1.sendIdx["replace:with:"]=1
  93342. //>>excludeEnd("ctx");
  93343. ][0]).__comma(":");
  93344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93345. }, function($ctx1) {$ctx1.fill(self,"selectorForCommandLineSwitch:",{aSwitch:aSwitch})});
  93346. //>>excludeEnd("ctx");
  93347. }; }),
  93348. $globals.FileServer.a$cls);
  93349. $core.addClass("Initer", $globals.BaseFileManipulator, "AmberCli");
  93350. $core.setSlots($globals.Initer, ["childProcess", "nmPath"]);
  93351. $core.addMethod(
  93352. $core.method({
  93353. selector: "finishMessage",
  93354. protocol: "action",
  93355. //>>excludeStart("ide", pragmas.excludeIdeData);
  93356. args: [],
  93357. source: "finishMessage\x0a\x09console log: (#(\x0a\x09\x09' '\x0a\x09\x09'The project should now be set up.'\x0a\x09\x09' '\x0a\x09\x09' '\x0a\x09) join: String lf).\x0a\x09[] valueWithTimeout: 600",
  93358. referencedClasses: ["String"],
  93359. //>>excludeEnd("ide");
  93360. pragmas: [],
  93361. messageSends: ["log:", "join:", "lf", "valueWithTimeout:"]
  93362. }, function ($methodClass){ return function (){
  93363. var self=this,$self=this;
  93364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93365. return $core.withContext(function($ctx1) {
  93366. //>>excludeEnd("ctx");
  93367. $recv(console)._log_([" ", "The project should now be set up.", " ", " "]._join_($recv($globals.String)._lf()));
  93368. $recv((function(){
  93369. }))._valueWithTimeout_((600));
  93370. return self;
  93371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93372. }, function($ctx1) {$ctx1.fill(self,"finishMessage",{})});
  93373. //>>excludeEnd("ctx");
  93374. }; }),
  93375. $globals.Initer);
  93376. $core.addMethod(
  93377. $core.method({
  93378. selector: "gruntInitThenDo:",
  93379. protocol: "action",
  93380. //>>excludeStart("ide", pragmas.excludeIdeData);
  93381. args: ["aBlock"],
  93382. source: "gruntInitThenDo: aBlock\x0a\x09| child sanitizedTemplatePath |\x0a\x09sanitizedTemplatePath := ((path join: nmPath with: '@ambers/grunt-init-amber-project')\x0a\x09\x09replace: '\x5c\x5c' with: '\x5c\x5c') replace: ':' with: '\x5c:'.\x0a\x09child := childProcess\x0a\x09\x09fork: (self npmScriptForModule: 'grunt-init' named: 'grunt-init')\x0a\x09\x09args: {sanitizedTemplatePath}.\x0a\x09child\x0a\x09\x09on: 'error' do: aBlock;\x0a\x09\x09on: 'close' do: [ :code |\x0a\x09\x09\x09aBlock value: (code = 0 ifTrue: [ nil ] ifFalse: [ code ]) ]",
  93383. referencedClasses: [],
  93384. //>>excludeEnd("ide");
  93385. pragmas: [],
  93386. messageSends: ["replace:with:", "join:with:", "fork:args:", "npmScriptForModule:named:", "on:do:", "value:", "ifTrue:ifFalse:", "="]
  93387. }, function ($methodClass){ return function (aBlock){
  93388. var self=this,$self=this;
  93389. var child,sanitizedTemplatePath;
  93390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93391. return $core.withContext(function($ctx1) {
  93392. //>>excludeEnd("ctx");
  93393. var $1,$2;
  93394. sanitizedTemplatePath=[$recv($recv($recv($self.path)._join_with_($self.nmPath,"@ambers/grunt-init-amber-project"))._replace_with_("\x5c\x5c","\x5c\x5c"))._replace_with_(":","\x5c:")
  93395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93396. ,$ctx1.sendIdx["replace:with:"]=1
  93397. //>>excludeEnd("ctx");
  93398. ][0];
  93399. child=$recv($self.childProcess)._fork_args_($self._npmScriptForModule_named_("grunt-init","grunt-init"),[sanitizedTemplatePath]);
  93400. $1=child;
  93401. [$recv($1)._on_do_("error",aBlock)
  93402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93403. ,$ctx1.sendIdx["on:do:"]=1
  93404. //>>excludeEnd("ctx");
  93405. ][0];
  93406. $recv($1)._on_do_("close",(function(code){
  93407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93408. return $core.withContext(function($ctx2) {
  93409. //>>excludeEnd("ctx");
  93410. if($core.assert($recv(code).__eq((0)))){
  93411. $2=nil;
  93412. } else {
  93413. $2=code;
  93414. }
  93415. return $recv(aBlock)._value_($2);
  93416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93417. }, function($ctx2) {$ctx2.fillBlock({code:code},$ctx1,1)});
  93418. //>>excludeEnd("ctx");
  93419. }));
  93420. return self;
  93421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93422. }, function($ctx1) {$ctx1.fill(self,"gruntInitThenDo:",{aBlock:aBlock,child:child,sanitizedTemplatePath:sanitizedTemplatePath})});
  93423. //>>excludeEnd("ctx");
  93424. }; }),
  93425. $globals.Initer);
  93426. $core.addMethod(
  93427. $core.method({
  93428. selector: "initProjectThenDo:",
  93429. protocol: "action",
  93430. //>>excludeStart("ide", pragmas.excludeIdeData);
  93431. args: ["aBlock"],
  93432. source: "initProjectThenDo: aBlock\x0a\x09| child |\x0a\x09child := childProcess\x0a\x09\x09exec: 'npm run init'\x0a\x09\x09thenDo: aBlock.\x0a\x09child stdout pipe: process stdout options: #{ 'end' -> false }",
  93433. referencedClasses: [],
  93434. //>>excludeEnd("ide");
  93435. pragmas: [],
  93436. messageSends: ["exec:thenDo:", "pipe:options:", "stdout"]
  93437. }, function ($methodClass){ return function (aBlock){
  93438. var self=this,$self=this;
  93439. var child;
  93440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93441. return $core.withContext(function($ctx1) {
  93442. //>>excludeEnd("ctx");
  93443. child=$recv($self.childProcess)._exec_thenDo_("npm run init",aBlock);
  93444. $recv([$recv(child)._stdout()
  93445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93446. ,$ctx1.sendIdx["stdout"]=1
  93447. //>>excludeEnd("ctx");
  93448. ][0])._pipe_options_($recv(process)._stdout(),$globals.HashedCollection._newFromPairs_(["end",false]));
  93449. return self;
  93450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93451. }, function($ctx1) {$ctx1.fill(self,"initProjectThenDo:",{aBlock:aBlock,child:child})});
  93452. //>>excludeEnd("ctx");
  93453. }; }),
  93454. $globals.Initer);
  93455. $core.addMethod(
  93456. $core.method({
  93457. selector: "initialize",
  93458. protocol: "initialization",
  93459. //>>excludeStart("ide", pragmas.excludeIdeData);
  93460. args: [],
  93461. source: "initialize\x0a\x09super initialize.\x0a\x09childProcess := require value: 'child_process'.\x0a\x09nmPath := path join: self rootDirname with: 'node_modules'",
  93462. referencedClasses: [],
  93463. //>>excludeEnd("ide");
  93464. pragmas: [],
  93465. messageSends: ["initialize", "value:", "join:with:", "rootDirname"]
  93466. }, function ($methodClass){ return function (){
  93467. var self=this,$self=this;
  93468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93469. return $core.withContext(function($ctx1) {
  93470. //>>excludeEnd("ctx");
  93471. [(
  93472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93473. $ctx1.supercall = true,
  93474. //>>excludeEnd("ctx");
  93475. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  93476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93477. ,$ctx1.supercall = false
  93478. //>>excludeEnd("ctx");
  93479. ][0];
  93480. $self.childProcess=$recv(require)._value_("child_process");
  93481. $self.nmPath=$recv($self.path)._join_with_($self._rootDirname(),"node_modules");
  93482. return self;
  93483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93484. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  93485. //>>excludeEnd("ctx");
  93486. }; }),
  93487. $globals.Initer);
  93488. $core.addMethod(
  93489. $core.method({
  93490. selector: "npmScriptForModule:named:",
  93491. protocol: "npm",
  93492. //>>excludeStart("ide", pragmas.excludeIdeData);
  93493. args: ["aString", "anotherString"],
  93494. source: "npmScriptForModule: aString named: anotherString\x0a\x09| modulePath packageJson binSection scriptPath |\x0a\x09modulePath := path dirname: (\x0a\x09\x09require provided resolve: aString, '/package.json').\x0a\x09packageJson := Smalltalk readJSObject: (\x0a\x09\x09require value: aString, '/package.json').\x0a\x09binSection := packageJson at: 'bin'.\x0a\x09scriptPath := binSection isString\x0a\x09\x09ifTrue: [ binSection ]\x0a\x09\x09ifFalse: [ binSection at: anotherString ].\x0a\x09^ path join: modulePath with: scriptPath",
  93495. referencedClasses: ["Smalltalk"],
  93496. //>>excludeEnd("ide");
  93497. pragmas: [],
  93498. messageSends: ["dirname:", "resolve:", "provided", ",", "readJSObject:", "value:", "at:", "ifTrue:ifFalse:", "isString", "join:with:"]
  93499. }, function ($methodClass){ return function (aString,anotherString){
  93500. var self=this,$self=this;
  93501. var modulePath,packageJson,binSection,scriptPath;
  93502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93503. return $core.withContext(function($ctx1) {
  93504. //>>excludeEnd("ctx");
  93505. modulePath=$recv($self.path)._dirname_($recv($recv(require)._provided())._resolve_([$recv(aString).__comma("/package.json")
  93506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93507. ,$ctx1.sendIdx[","]=1
  93508. //>>excludeEnd("ctx");
  93509. ][0]));
  93510. packageJson=$recv($globals.Smalltalk)._readJSObject_($recv(require)._value_($recv(aString).__comma("/package.json")));
  93511. binSection=[$recv(packageJson)._at_("bin")
  93512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93513. ,$ctx1.sendIdx["at:"]=1
  93514. //>>excludeEnd("ctx");
  93515. ][0];
  93516. if($core.assert($recv(binSection)._isString())){
  93517. scriptPath=binSection;
  93518. } else {
  93519. scriptPath=$recv(binSection)._at_(anotherString);
  93520. }
  93521. return $recv($self.path)._join_with_(modulePath,scriptPath);
  93522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93523. }, function($ctx1) {$ctx1.fill(self,"npmScriptForModule:named:",{aString:aString,anotherString:anotherString,modulePath:modulePath,packageJson:packageJson,binSection:binSection,scriptPath:scriptPath})});
  93524. //>>excludeEnd("ctx");
  93525. }; }),
  93526. $globals.Initer);
  93527. $core.addMethod(
  93528. $core.method({
  93529. selector: "start",
  93530. protocol: "action",
  93531. //>>excludeStart("ide", pragmas.excludeIdeData);
  93532. args: [],
  93533. source: "start\x0a\x09self gruntInitThenDo: [ :error | error\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'grunt-init exec error:'; log: error.\x0a\x09\x09process exit: 101 ]\x0a\x09ifNil: [\x0a\x0a\x09self initProjectThenDo: [ :error2 | error2\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'npm run init exec error:'; log: error2.\x0a\x09\x09process exit: 105 ]\x0a\x09ifNil: [\x0a\x0a\x09self finishMessage.\x0a\x09process exit ]]]]",
  93534. referencedClasses: [],
  93535. //>>excludeEnd("ide");
  93536. pragmas: [],
  93537. messageSends: ["gruntInitThenDo:", "ifNotNil:ifNil:", "log:", "exit:", "initProjectThenDo:", "finishMessage", "exit"]
  93538. }, function ($methodClass){ return function (){
  93539. var self=this,$self=this;
  93540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93541. return $core.withContext(function($ctx1) {
  93542. //>>excludeEnd("ctx");
  93543. var $1,$2;
  93544. $self._gruntInitThenDo_((function(error){
  93545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93546. return $core.withContext(function($ctx2) {
  93547. //>>excludeEnd("ctx");
  93548. if(error == null || error.a$nil){
  93549. return $self._initProjectThenDo_((function(error2){
  93550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93551. return $core.withContext(function($ctx3) {
  93552. //>>excludeEnd("ctx");
  93553. if(error2 == null || error2.a$nil){
  93554. $self._finishMessage();
  93555. return $recv(process)._exit();
  93556. } else {
  93557. $2=console;
  93558. [$recv($2)._log_("npm run init exec error:")
  93559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93560. ,$ctx3.sendIdx["log:"]=3
  93561. //>>excludeEnd("ctx");
  93562. ][0];
  93563. $recv($2)._log_(error2);
  93564. return $recv(process)._exit_((105));
  93565. }
  93566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93567. }, function($ctx3) {$ctx3.fillBlock({error2:error2},$ctx2,4)});
  93568. //>>excludeEnd("ctx");
  93569. }));
  93570. } else {
  93571. $1=console;
  93572. [$recv($1)._log_("grunt-init exec error:")
  93573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93574. ,$ctx2.sendIdx["log:"]=1
  93575. //>>excludeEnd("ctx");
  93576. ][0];
  93577. [$recv($1)._log_(error)
  93578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93579. ,$ctx2.sendIdx["log:"]=2
  93580. //>>excludeEnd("ctx");
  93581. ][0];
  93582. return [$recv(process)._exit_((101))
  93583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93584. ,$ctx2.sendIdx["exit:"]=1
  93585. //>>excludeEnd("ctx");
  93586. ][0];
  93587. }
  93588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93589. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,1)});
  93590. //>>excludeEnd("ctx");
  93591. }));
  93592. return self;
  93593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93594. }, function($ctx1) {$ctx1.fill(self,"start",{})});
  93595. //>>excludeEnd("ctx");
  93596. }; }),
  93597. $globals.Initer);
  93598. $core.addClass("Repl", $globals.Object, "AmberCli");
  93599. $core.setSlots($globals.Repl, ["readline", "interface", "util", "session", "resultCount", "commands"]);
  93600. //>>excludeStart("ide", pragmas.excludeIdeData);
  93601. $globals.Repl.comment="I am a class representing a REPL (Read Evaluate Print Loop) and provide a command line interface to Amber Smalltalk.\x0aOn the prompt you can type Amber statements which will be evaluated after pressing <Enter>.\x0aThe evaluation is comparable with executing a 'DoIt' in a workspace.\x0a\x0aMy runtime requirement is a functional Node.js executable with working Readline support.";
  93602. //>>excludeEnd("ide");
  93603. $core.addMethod(
  93604. $core.method({
  93605. selector: "addVariableNamed:to:",
  93606. protocol: "private",
  93607. //>>excludeStart("ide", pragmas.excludeIdeData);
  93608. args: ["aString", "anObject"],
  93609. source: "addVariableNamed: aString to: anObject\x0a\x09| newClass newObject |\x0a\x09newClass := self subclass: anObject class withVariable: aString.\x0a\x09self encapsulateVariable: aString withValue: anObject in: newClass.\x0a\x09newObject := newClass new.\x0a\x09self setPreviousVariablesFor: newObject from: anObject.\x0a\x09^ newObject",
  93610. referencedClasses: [],
  93611. //>>excludeEnd("ide");
  93612. pragmas: [],
  93613. messageSends: ["subclass:withVariable:", "class", "encapsulateVariable:withValue:in:", "new", "setPreviousVariablesFor:from:"]
  93614. }, function ($methodClass){ return function (aString,anObject){
  93615. var self=this,$self=this;
  93616. var newClass,newObject;
  93617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93618. return $core.withContext(function($ctx1) {
  93619. //>>excludeEnd("ctx");
  93620. newClass=$self._subclass_withVariable_($recv(anObject)._class(),aString);
  93621. $self._encapsulateVariable_withValue_in_(aString,anObject,newClass);
  93622. newObject=$recv(newClass)._new();
  93623. $self._setPreviousVariablesFor_from_(newObject,anObject);
  93624. return newObject;
  93625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93626. }, function($ctx1) {$ctx1.fill(self,"addVariableNamed:to:",{aString:aString,anObject:anObject,newClass:newClass,newObject:newObject})});
  93627. //>>excludeEnd("ctx");
  93628. }; }),
  93629. $globals.Repl);
  93630. $core.addMethod(
  93631. $core.method({
  93632. selector: "assignNewVariable:do:",
  93633. protocol: "private",
  93634. //>>excludeStart("ide", pragmas.excludeIdeData);
  93635. args: ["buffer", "aBlock"],
  93636. source: "assignNewVariable: buffer do: aBlock\x0a\x09\x22Assigns a new variable and calls the given block with the variable's name and value\x0a\x09 if buffer contains an assignment expression. If it doesn't the block is called with nil for\x0a\x09 both arguments.\x22\x0a\x09^ self parseAssignment: buffer do: [ :name :expr || varName value |\x0a\x09\x09varName := name ifNil: [self nextResultName].\x0a\x09\x09session := self addVariableNamed: varName to: session.\x0a\x09\x09[ value := self eval: varName, ' := ', (expr ifNil: [buffer]) on: session ]\x0a\x09\x09\x09on: Error\x0a\x09\x09\x09do: [ :e | ConsoleErrorHandler new logError: e. value := nil].\x0a\x09\x09aBlock value: varName value: value]",
  93637. referencedClasses: ["Error", "ConsoleErrorHandler"],
  93638. //>>excludeEnd("ide");
  93639. pragmas: [],
  93640. messageSends: ["parseAssignment:do:", "ifNil:", "nextResultName", "addVariableNamed:to:", "on:do:", "eval:on:", ",", "logError:", "new", "value:value:"]
  93641. }, function ($methodClass){ return function (buffer,aBlock){
  93642. var self=this,$self=this;
  93643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93644. return $core.withContext(function($ctx1) {
  93645. //>>excludeEnd("ctx");
  93646. var $1,$2;
  93647. return $self._parseAssignment_do_(buffer,(function(name,expr){
  93648. var varName,value;
  93649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93650. return $core.withContext(function($ctx2) {
  93651. //>>excludeEnd("ctx");
  93652. if(name == null || name.a$nil){
  93653. varName=$self._nextResultName();
  93654. } else {
  93655. varName=name;
  93656. }
  93657. $self.session=$self._addVariableNamed_to_(varName,$self.session);
  93658. $recv((function(){
  93659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93660. return $core.withContext(function($ctx3) {
  93661. //>>excludeEnd("ctx");
  93662. $1=$recv(varName).__comma(" := ");
  93663. if(expr == null || expr.a$nil){
  93664. $2=buffer;
  93665. } else {
  93666. $2=expr;
  93667. }
  93668. value=$self._eval_on_([$recv($1).__comma($2)
  93669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93670. ,$ctx3.sendIdx[","]=1
  93671. //>>excludeEnd("ctx");
  93672. ][0],$self.session);
  93673. return value;
  93674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93675. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  93676. //>>excludeEnd("ctx");
  93677. }))._on_do_($globals.Error,(function(e){
  93678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93679. return $core.withContext(function($ctx3) {
  93680. //>>excludeEnd("ctx");
  93681. $recv($recv($globals.ConsoleErrorHandler)._new())._logError_(e);
  93682. value=nil;
  93683. return value;
  93684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93685. }, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,5)});
  93686. //>>excludeEnd("ctx");
  93687. }));
  93688. return $recv(aBlock)._value_value_(varName,value);
  93689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93690. }, function($ctx2) {$ctx2.fillBlock({name:name,expr:expr,varName:varName,value:value},$ctx1,1)});
  93691. //>>excludeEnd("ctx");
  93692. }));
  93693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93694. }, function($ctx1) {$ctx1.fill(self,"assignNewVariable:do:",{buffer:buffer,aBlock:aBlock})});
  93695. //>>excludeEnd("ctx");
  93696. }; }),
  93697. $globals.Repl);
  93698. $core.addMethod(
  93699. $core.method({
  93700. selector: "clearScreen",
  93701. protocol: "actions",
  93702. //>>excludeStart("ide", pragmas.excludeIdeData);
  93703. args: [],
  93704. source: "clearScreen\x0a\x09| esc cls |\x0a\x09esc := String fromCharCode: 27.\x0a\x09cls := esc, '[2J', esc, '[0;0f'.\x0a\x09process stdout write: cls.\x0a\x09interface prompt",
  93705. referencedClasses: ["String"],
  93706. //>>excludeEnd("ide");
  93707. pragmas: [],
  93708. messageSends: ["fromCharCode:", ",", "write:", "stdout", "prompt"]
  93709. }, function ($methodClass){ return function (){
  93710. var self=this,$self=this;
  93711. var esc,cls;
  93712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93713. return $core.withContext(function($ctx1) {
  93714. //>>excludeEnd("ctx");
  93715. esc=$recv($globals.String)._fromCharCode_((27));
  93716. cls=[$recv([$recv($recv(esc).__comma("[2J")).__comma(esc)
  93717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93718. ,$ctx1.sendIdx[","]=2
  93719. //>>excludeEnd("ctx");
  93720. ][0]).__comma("[0;0f")
  93721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93722. ,$ctx1.sendIdx[","]=1
  93723. //>>excludeEnd("ctx");
  93724. ][0];
  93725. $recv($recv(process)._stdout())._write_(cls);
  93726. $recv($self.interface)._prompt();
  93727. return self;
  93728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93729. }, function($ctx1) {$ctx1.fill(self,"clearScreen",{esc:esc,cls:cls})});
  93730. //>>excludeEnd("ctx");
  93731. }; }),
  93732. $globals.Repl);
  93733. $core.addMethod(
  93734. $core.method({
  93735. selector: "close",
  93736. protocol: "actions",
  93737. //>>excludeStart("ide", pragmas.excludeIdeData);
  93738. args: [],
  93739. source: "close\x0a\x09process stdin destroy",
  93740. referencedClasses: [],
  93741. //>>excludeEnd("ide");
  93742. pragmas: [],
  93743. messageSends: ["destroy", "stdin"]
  93744. }, function ($methodClass){ return function (){
  93745. var self=this,$self=this;
  93746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93747. return $core.withContext(function($ctx1) {
  93748. //>>excludeEnd("ctx");
  93749. $recv($recv(process)._stdin())._destroy();
  93750. return self;
  93751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93752. }, function($ctx1) {$ctx1.fill(self,"close",{})});
  93753. //>>excludeEnd("ctx");
  93754. }; }),
  93755. $globals.Repl);
  93756. $core.addMethod(
  93757. $core.method({
  93758. selector: "commands",
  93759. protocol: "accessing",
  93760. //>>excludeStart("ide", pragmas.excludeIdeData);
  93761. args: [],
  93762. source: "commands\x0a\x09^ commands",
  93763. referencedClasses: [],
  93764. //>>excludeEnd("ide");
  93765. pragmas: [],
  93766. messageSends: []
  93767. }, function ($methodClass){ return function (){
  93768. var self=this,$self=this;
  93769. return $self.commands;
  93770. }; }),
  93771. $globals.Repl);
  93772. $core.addMethod(
  93773. $core.method({
  93774. selector: "createInterface",
  93775. protocol: "actions",
  93776. //>>excludeStart("ide", pragmas.excludeIdeData);
  93777. args: [],
  93778. source: "createInterface\x0a\x09interface := readline createInterface: process stdin stdout: process stdout.\x0a\x09interface on: 'line' do: [:buffer | self processLine: buffer].\x0a\x09interface on: 'close' do: [self close].\x0a\x09self printWelcome; setupHotkeys; setPrompt.\x0a\x09interface prompt",
  93779. referencedClasses: [],
  93780. //>>excludeEnd("ide");
  93781. pragmas: [],
  93782. messageSends: ["createInterface:stdout:", "stdin", "stdout", "on:do:", "processLine:", "close", "printWelcome", "setupHotkeys", "setPrompt", "prompt"]
  93783. }, function ($methodClass){ return function (){
  93784. var self=this,$self=this;
  93785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93786. return $core.withContext(function($ctx1) {
  93787. //>>excludeEnd("ctx");
  93788. $self.interface=$recv($self.readline)._createInterface_stdout_($recv(process)._stdin(),$recv(process)._stdout());
  93789. [$recv($self.interface)._on_do_("line",(function(buffer){
  93790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93791. return $core.withContext(function($ctx2) {
  93792. //>>excludeEnd("ctx");
  93793. return $self._processLine_(buffer);
  93794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93795. }, function($ctx2) {$ctx2.fillBlock({buffer:buffer},$ctx1,1)});
  93796. //>>excludeEnd("ctx");
  93797. }))
  93798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93799. ,$ctx1.sendIdx["on:do:"]=1
  93800. //>>excludeEnd("ctx");
  93801. ][0];
  93802. $recv($self.interface)._on_do_("close",(function(){
  93803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93804. return $core.withContext(function($ctx2) {
  93805. //>>excludeEnd("ctx");
  93806. return $self._close();
  93807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93808. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  93809. //>>excludeEnd("ctx");
  93810. }));
  93811. $self._printWelcome();
  93812. $self._setupHotkeys();
  93813. $self._setPrompt();
  93814. $recv($self.interface)._prompt();
  93815. return self;
  93816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93817. }, function($ctx1) {$ctx1.fill(self,"createInterface",{})});
  93818. //>>excludeEnd("ctx");
  93819. }; }),
  93820. $globals.Repl);
  93821. $core.addMethod(
  93822. $core.method({
  93823. selector: "encapsulateVariable:withValue:in:",
  93824. protocol: "private",
  93825. //>>excludeStart("ide", pragmas.excludeIdeData);
  93826. args: ["aString", "anObject", "aClass"],
  93827. source: "encapsulateVariable: aString withValue: anObject in: aClass\x0a\x09\x22Add getter and setter for given variable to session.\x22\x0a\x09| compiler |\x0a\x09compiler := Compiler new.\x0a\x09compiler install: aString, ': anObject ^ ', aString, ' := anObject' forClass: aClass protocol: 'session'.\x0a\x09compiler install: aString, ' ^ ', aString forClass: aClass protocol: 'session'.",
  93828. referencedClasses: ["Compiler"],
  93829. //>>excludeEnd("ide");
  93830. pragmas: [],
  93831. messageSends: ["new", "install:forClass:protocol:", ","]
  93832. }, function ($methodClass){ return function (aString,anObject,aClass){
  93833. var self=this,$self=this;
  93834. var compiler;
  93835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93836. return $core.withContext(function($ctx1) {
  93837. //>>excludeEnd("ctx");
  93838. compiler=$recv($globals.Compiler)._new();
  93839. [$recv(compiler)._install_forClass_protocol_([$recv([$recv([$recv(aString).__comma(": anObject ^ ")
  93840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93841. ,$ctx1.sendIdx[","]=3
  93842. //>>excludeEnd("ctx");
  93843. ][0]).__comma(aString)
  93844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93845. ,$ctx1.sendIdx[","]=2
  93846. //>>excludeEnd("ctx");
  93847. ][0]).__comma(" := anObject")
  93848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93849. ,$ctx1.sendIdx[","]=1
  93850. //>>excludeEnd("ctx");
  93851. ][0],aClass,"session")
  93852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93853. ,$ctx1.sendIdx["install:forClass:protocol:"]=1
  93854. //>>excludeEnd("ctx");
  93855. ][0];
  93856. $recv(compiler)._install_forClass_protocol_([$recv($recv(aString).__comma(" ^ ")).__comma(aString)
  93857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93858. ,$ctx1.sendIdx[","]=4
  93859. //>>excludeEnd("ctx");
  93860. ][0],aClass,"session");
  93861. return self;
  93862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93863. }, function($ctx1) {$ctx1.fill(self,"encapsulateVariable:withValue:in:",{aString:aString,anObject:anObject,aClass:aClass,compiler:compiler})});
  93864. //>>excludeEnd("ctx");
  93865. }; }),
  93866. $globals.Repl);
  93867. $core.addMethod(
  93868. $core.method({
  93869. selector: "eval:",
  93870. protocol: "actions",
  93871. //>>excludeStart("ide", pragmas.excludeIdeData);
  93872. args: ["buffer"],
  93873. source: "eval: buffer\x0a\x09^ self eval: buffer on: DoIt new.",
  93874. referencedClasses: ["DoIt"],
  93875. //>>excludeEnd("ide");
  93876. pragmas: [],
  93877. messageSends: ["eval:on:", "new"]
  93878. }, function ($methodClass){ return function (buffer){
  93879. var self=this,$self=this;
  93880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93881. return $core.withContext(function($ctx1) {
  93882. //>>excludeEnd("ctx");
  93883. return $self._eval_on_(buffer,$recv($globals.DoIt)._new());
  93884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93885. }, function($ctx1) {$ctx1.fill(self,"eval:",{buffer:buffer})});
  93886. //>>excludeEnd("ctx");
  93887. }; }),
  93888. $globals.Repl);
  93889. $core.addMethod(
  93890. $core.method({
  93891. selector: "eval:on:",
  93892. protocol: "actions",
  93893. //>>excludeStart("ide", pragmas.excludeIdeData);
  93894. args: ["buffer", "anObject"],
  93895. source: "eval: buffer on: anObject\x0a\x09| result |\x0a\x09buffer ifNotEmpty: [\x0a\x09\x09[result := Compiler new evaluateExpression: buffer on: anObject]\x0a\x09\x09\x09tryIfTrue: [ :e | (Smalltalk isError: e) not or: [ e context isNil ] ]\x0a\x09\x09\x09catch: [ :e | process stdout write: e jsStack ]].\x0a\x09^ result",
  93896. referencedClasses: ["Compiler", "Smalltalk"],
  93897. //>>excludeEnd("ide");
  93898. pragmas: [],
  93899. messageSends: ["ifNotEmpty:", "tryIfTrue:catch:", "evaluateExpression:on:", "new", "or:", "not", "isError:", "isNil", "context", "write:", "stdout", "jsStack"]
  93900. }, function ($methodClass){ return function (buffer,anObject){
  93901. var self=this,$self=this;
  93902. var result;
  93903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93904. return $core.withContext(function($ctx1) {
  93905. //>>excludeEnd("ctx");
  93906. $recv(buffer)._ifNotEmpty_((function(){
  93907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93908. return $core.withContext(function($ctx2) {
  93909. //>>excludeEnd("ctx");
  93910. return $recv((function(){
  93911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93912. return $core.withContext(function($ctx3) {
  93913. //>>excludeEnd("ctx");
  93914. result=$recv($recv($globals.Compiler)._new())._evaluateExpression_on_(buffer,anObject);
  93915. return result;
  93916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93917. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  93918. //>>excludeEnd("ctx");
  93919. }))._tryIfTrue_catch_((function(e){
  93920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93921. return $core.withContext(function($ctx3) {
  93922. //>>excludeEnd("ctx");
  93923. if($core.assert($recv($recv($globals.Smalltalk)._isError_(e))._not())){
  93924. return true;
  93925. } else {
  93926. return $recv($recv(e)._context())._isNil();
  93927. }
  93928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93929. }, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,3)});
  93930. //>>excludeEnd("ctx");
  93931. }),(function(e){
  93932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93933. return $core.withContext(function($ctx3) {
  93934. //>>excludeEnd("ctx");
  93935. return $recv($recv(process)._stdout())._write_($recv(e)._jsStack());
  93936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93937. }, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,5)});
  93938. //>>excludeEnd("ctx");
  93939. }));
  93940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93941. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  93942. //>>excludeEnd("ctx");
  93943. }));
  93944. return result;
  93945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93946. }, function($ctx1) {$ctx1.fill(self,"eval:on:",{buffer:buffer,anObject:anObject,result:result})});
  93947. //>>excludeEnd("ctx");
  93948. }; }),
  93949. $globals.Repl);
  93950. $core.addMethod(
  93951. $core.method({
  93952. selector: "executeCommand:",
  93953. protocol: "private",
  93954. //>>excludeStart("ide", pragmas.excludeIdeData);
  93955. args: ["aString"],
  93956. source: "executeCommand: aString\x0a\x09\x22Tries to process the given string as a command. Returns true if it was a command, false if not.\x22\x0a\x09self commands keysAndValuesDo: [:names :cmd |\x0a\x09\x09(names includes: aString) ifTrue: [\x0a\x09\x09\x09cmd value.\x0a\x09\x09\x09^ true]].\x0a\x09^ false",
  93957. referencedClasses: [],
  93958. //>>excludeEnd("ide");
  93959. pragmas: [],
  93960. messageSends: ["keysAndValuesDo:", "commands", "ifTrue:", "includes:", "value"]
  93961. }, function ($methodClass){ return function (aString){
  93962. var self=this,$self=this;
  93963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93964. return $core.withContext(function($ctx1) {
  93965. //>>excludeEnd("ctx");
  93966. var $early={};
  93967. try {
  93968. $recv($self._commands())._keysAndValuesDo_((function(names,cmd){
  93969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93970. return $core.withContext(function($ctx2) {
  93971. //>>excludeEnd("ctx");
  93972. if($core.assert($recv(names)._includes_(aString))){
  93973. $recv(cmd)._value();
  93974. throw $early=[true];
  93975. }
  93976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93977. }, function($ctx2) {$ctx2.fillBlock({names:names,cmd:cmd},$ctx1,1)});
  93978. //>>excludeEnd("ctx");
  93979. }));
  93980. return false;
  93981. }
  93982. catch(e) {if(e===$early)return e[0]; throw e}
  93983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93984. }, function($ctx1) {$ctx1.fill(self,"executeCommand:",{aString:aString})});
  93985. //>>excludeEnd("ctx");
  93986. }; }),
  93987. $globals.Repl);
  93988. $core.addMethod(
  93989. $core.method({
  93990. selector: "initialize",
  93991. protocol: "initialization",
  93992. //>>excludeStart("ide", pragmas.excludeIdeData);
  93993. args: [],
  93994. source: "initialize\x0a\x09super initialize.\x0a\x09session := DoIt new.\x0a\x09readline := require value: 'readline'.\x0a\x09util := require value: 'util'.\x0a\x09self setupCommands",
  93995. referencedClasses: ["DoIt"],
  93996. //>>excludeEnd("ide");
  93997. pragmas: [],
  93998. messageSends: ["initialize", "new", "value:", "setupCommands"]
  93999. }, function ($methodClass){ return function (){
  94000. var self=this,$self=this;
  94001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94002. return $core.withContext(function($ctx1) {
  94003. //>>excludeEnd("ctx");
  94004. [(
  94005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94006. $ctx1.supercall = true,
  94007. //>>excludeEnd("ctx");
  94008. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
  94009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94010. ,$ctx1.supercall = false
  94011. //>>excludeEnd("ctx");
  94012. ][0];
  94013. $self.session=$recv($globals.DoIt)._new();
  94014. $self.readline=[$recv(require)._value_("readline")
  94015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94016. ,$ctx1.sendIdx["value:"]=1
  94017. //>>excludeEnd("ctx");
  94018. ][0];
  94019. $self.util=$recv(require)._value_("util");
  94020. $self._setupCommands();
  94021. return self;
  94022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94023. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  94024. //>>excludeEnd("ctx");
  94025. }; }),
  94026. $globals.Repl);
  94027. $core.addMethod(
  94028. $core.method({
  94029. selector: "instanceVariableNamesFor:",
  94030. protocol: "private",
  94031. //>>excludeStart("ide", pragmas.excludeIdeData);
  94032. args: ["aClass"],
  94033. source: "instanceVariableNamesFor: aClass\x0a\x09\x22Yields all instance variable names for the given class, including inherited ones.\x22\x0a\x09^ aClass superclass\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09aClass instanceVariableNames copyWithAll: (self instanceVariableNamesFor: aClass superclass)]\x0a\x09\x09ifNil: [\x0a\x09\x09\x09aClass instanceVariableNames]",
  94034. referencedClasses: [],
  94035. //>>excludeEnd("ide");
  94036. pragmas: [],
  94037. messageSends: ["ifNotNil:ifNil:", "superclass", "copyWithAll:", "instanceVariableNames", "instanceVariableNamesFor:"]
  94038. }, function ($methodClass){ return function (aClass){
  94039. var self=this,$self=this;
  94040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94041. return $core.withContext(function($ctx1) {
  94042. //>>excludeEnd("ctx");
  94043. var $1;
  94044. $1=[$recv(aClass)._superclass()
  94045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94046. ,$ctx1.sendIdx["superclass"]=1
  94047. //>>excludeEnd("ctx");
  94048. ][0];
  94049. if($1 == null || $1.a$nil){
  94050. return $recv(aClass)._instanceVariableNames();
  94051. } else {
  94052. return $recv([$recv(aClass)._instanceVariableNames()
  94053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94054. ,$ctx1.sendIdx["instanceVariableNames"]=1
  94055. //>>excludeEnd("ctx");
  94056. ][0])._copyWithAll_($self._instanceVariableNamesFor_($recv(aClass)._superclass()));
  94057. }
  94058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94059. }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aClass:aClass})});
  94060. //>>excludeEnd("ctx");
  94061. }; }),
  94062. $globals.Repl);
  94063. $core.addMethod(
  94064. $core.method({
  94065. selector: "isIdentifier:",
  94066. protocol: "private",
  94067. //>>excludeStart("ide", pragmas.excludeIdeData);
  94068. args: ["aString"],
  94069. source: "isIdentifier: aString\x0a\x09^ aString match: '^[a-z_]\x5cw*$' asRegexp",
  94070. referencedClasses: [],
  94071. //>>excludeEnd("ide");
  94072. pragmas: [],
  94073. messageSends: ["match:", "asRegexp"]
  94074. }, function ($methodClass){ return function (aString){
  94075. var self=this,$self=this;
  94076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94077. return $core.withContext(function($ctx1) {
  94078. //>>excludeEnd("ctx");
  94079. return $recv(aString)._match_("^[a-z_]\x5cw*$"._asRegexp());
  94080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94081. }, function($ctx1) {$ctx1.fill(self,"isIdentifier:",{aString:aString})});
  94082. //>>excludeEnd("ctx");
  94083. }; }),
  94084. $globals.Repl);
  94085. $core.addMethod(
  94086. $core.method({
  94087. selector: "isVariableDefined:",
  94088. protocol: "private",
  94089. //>>excludeStart("ide", pragmas.excludeIdeData);
  94090. args: ["aString"],
  94091. source: "isVariableDefined: aString\x0a\x09^ (self instanceVariableNamesFor: session class) includes: aString",
  94092. referencedClasses: [],
  94093. //>>excludeEnd("ide");
  94094. pragmas: [],
  94095. messageSends: ["includes:", "instanceVariableNamesFor:", "class"]
  94096. }, function ($methodClass){ return function (aString){
  94097. var self=this,$self=this;
  94098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94099. return $core.withContext(function($ctx1) {
  94100. //>>excludeEnd("ctx");
  94101. return $recv($self._instanceVariableNamesFor_($recv($self.session)._class()))._includes_(aString);
  94102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94103. }, function($ctx1) {$ctx1.fill(self,"isVariableDefined:",{aString:aString})});
  94104. //>>excludeEnd("ctx");
  94105. }; }),
  94106. $globals.Repl);
  94107. $core.addMethod(
  94108. $core.method({
  94109. selector: "nextResultName",
  94110. protocol: "private",
  94111. //>>excludeStart("ide", pragmas.excludeIdeData);
  94112. args: [],
  94113. source: "nextResultName\x0a\x09resultCount := resultCount\x0a \x09ifNotNil: [resultCount + 1]\x0a \x09ifNil: [1].\x0a ^ 'res', resultCount asString",
  94114. referencedClasses: [],
  94115. //>>excludeEnd("ide");
  94116. pragmas: [],
  94117. messageSends: ["ifNotNil:ifNil:", "+", ",", "asString"]
  94118. }, function ($methodClass){ return function (){
  94119. var self=this,$self=this;
  94120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94121. return $core.withContext(function($ctx1) {
  94122. //>>excludeEnd("ctx");
  94123. var $1;
  94124. $1=$self.resultCount;
  94125. if($1 == null || $1.a$nil){
  94126. $self.resultCount=(1);
  94127. } else {
  94128. $self.resultCount=$recv($self.resultCount).__plus((1));
  94129. }
  94130. return "res".__comma($recv($self.resultCount)._asString());
  94131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94132. }, function($ctx1) {$ctx1.fill(self,"nextResultName",{})});
  94133. //>>excludeEnd("ctx");
  94134. }; }),
  94135. $globals.Repl);
  94136. $core.addMethod(
  94137. $core.method({
  94138. selector: "onKeyPress:",
  94139. protocol: "private",
  94140. //>>excludeStart("ide", pragmas.excludeIdeData);
  94141. args: ["key"],
  94142. source: "onKeyPress: key\x0a\x09(key ctrl and: [key name = 'l'])\x0a\x09\x09ifTrue: [self clearScreen]",
  94143. referencedClasses: [],
  94144. //>>excludeEnd("ide");
  94145. pragmas: [],
  94146. messageSends: ["ifTrue:", "and:", "ctrl", "=", "name", "clearScreen"]
  94147. }, function ($methodClass){ return function (key){
  94148. var self=this,$self=this;
  94149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94150. return $core.withContext(function($ctx1) {
  94151. //>>excludeEnd("ctx");
  94152. var $1;
  94153. if($core.assert($recv(key)._ctrl())){
  94154. $1=$recv($recv(key)._name()).__eq("l");
  94155. } else {
  94156. $1=false;
  94157. }
  94158. if($core.assert($1)){
  94159. $self._clearScreen();
  94160. }
  94161. return self;
  94162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94163. }, function($ctx1) {$ctx1.fill(self,"onKeyPress:",{key:key})});
  94164. //>>excludeEnd("ctx");
  94165. }; }),
  94166. $globals.Repl);
  94167. $core.addMethod(
  94168. $core.method({
  94169. selector: "parseAssignment:do:",
  94170. protocol: "private",
  94171. //>>excludeStart("ide", pragmas.excludeIdeData);
  94172. args: ["aString", "aBlock"],
  94173. source: "parseAssignment: aString do: aBlock\x0a\x09\x22Assigns a new variable if the given string is an assignment expression. Calls the given block with name and value.\x0a\x09 If the string is not one no variable will be assigned and the block will be called with nil for both arguments.\x22\x0a\x09| assignment |\x0a\x09assignment := (aString tokenize: ':=') collect: [:s | s trimBoth].\x0a\x09^ (assignment size = 2 and: [self isIdentifier: assignment first])\x0a\x09\x09ifTrue: [ aBlock value: assignment first value: assignment last ]\x0a\x09\x09ifFalse: [ aBlock value: nil value: nil ]",
  94174. referencedClasses: [],
  94175. //>>excludeEnd("ide");
  94176. pragmas: [],
  94177. messageSends: ["collect:", "tokenize:", "trimBoth", "ifTrue:ifFalse:", "and:", "=", "size", "isIdentifier:", "first", "value:value:", "last"]
  94178. }, function ($methodClass){ return function (aString,aBlock){
  94179. var self=this,$self=this;
  94180. var assignment;
  94181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94182. return $core.withContext(function($ctx1) {
  94183. //>>excludeEnd("ctx");
  94184. var $1;
  94185. assignment=$recv($recv(aString)._tokenize_(":="))._collect_((function(s){
  94186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94187. return $core.withContext(function($ctx2) {
  94188. //>>excludeEnd("ctx");
  94189. return $recv(s)._trimBoth();
  94190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94191. }, function($ctx2) {$ctx2.fillBlock({s:s},$ctx1,1)});
  94192. //>>excludeEnd("ctx");
  94193. }));
  94194. if($core.assert($recv($recv(assignment)._size()).__eq((2)))){
  94195. $1=$self._isIdentifier_([$recv(assignment)._first()
  94196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94197. ,$ctx1.sendIdx["first"]=1
  94198. //>>excludeEnd("ctx");
  94199. ][0]);
  94200. } else {
  94201. $1=false;
  94202. }
  94203. if($core.assert($1)){
  94204. return [$recv(aBlock)._value_value_($recv(assignment)._first(),$recv(assignment)._last())
  94205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94206. ,$ctx1.sendIdx["value:value:"]=1
  94207. //>>excludeEnd("ctx");
  94208. ][0];
  94209. } else {
  94210. return $recv(aBlock)._value_value_(nil,nil);
  94211. }
  94212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94213. }, function($ctx1) {$ctx1.fill(self,"parseAssignment:do:",{aString:aString,aBlock:aBlock,assignment:assignment})});
  94214. //>>excludeEnd("ctx");
  94215. }; }),
  94216. $globals.Repl);
  94217. $core.addMethod(
  94218. $core.method({
  94219. selector: "presentResultNamed:withValue:",
  94220. protocol: "private",
  94221. //>>excludeStart("ide", pragmas.excludeIdeData);
  94222. args: ["varName", "value"],
  94223. source: "presentResultNamed: varName withValue: value\x0a\x09Transcript show: varName, ': ', value class name, ' = ', value asString; cr.\x0a\x09interface prompt",
  94224. referencedClasses: ["Transcript"],
  94225. //>>excludeEnd("ide");
  94226. pragmas: [],
  94227. messageSends: ["show:", ",", "name", "class", "asString", "cr", "prompt"]
  94228. }, function ($methodClass){ return function (varName,value){
  94229. var self=this,$self=this;
  94230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94231. return $core.withContext(function($ctx1) {
  94232. //>>excludeEnd("ctx");
  94233. var $1;
  94234. $1=$globals.Transcript;
  94235. $recv($1)._show_([$recv([$recv([$recv($recv(varName).__comma(": ")).__comma($recv($recv(value)._class())._name())
  94236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94237. ,$ctx1.sendIdx[","]=3
  94238. //>>excludeEnd("ctx");
  94239. ][0]).__comma(" = ")
  94240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94241. ,$ctx1.sendIdx[","]=2
  94242. //>>excludeEnd("ctx");
  94243. ][0]).__comma($recv(value)._asString())
  94244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94245. ,$ctx1.sendIdx[","]=1
  94246. //>>excludeEnd("ctx");
  94247. ][0]);
  94248. $recv($1)._cr();
  94249. $recv($self.interface)._prompt();
  94250. return self;
  94251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94252. }, function($ctx1) {$ctx1.fill(self,"presentResultNamed:withValue:",{varName:varName,value:value})});
  94253. //>>excludeEnd("ctx");
  94254. }; }),
  94255. $globals.Repl);
  94256. $core.addMethod(
  94257. $core.method({
  94258. selector: "printWelcome",
  94259. protocol: "actions",
  94260. //>>excludeStart("ide", pragmas.excludeIdeData);
  94261. args: [],
  94262. source: "printWelcome\x0a\x09Transcript show: 'Type :q to exit.'; cr.",
  94263. referencedClasses: ["Transcript"],
  94264. //>>excludeEnd("ide");
  94265. pragmas: [],
  94266. messageSends: ["show:", "cr"]
  94267. }, function ($methodClass){ return function (){
  94268. var self=this,$self=this;
  94269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94270. return $core.withContext(function($ctx1) {
  94271. //>>excludeEnd("ctx");
  94272. var $1;
  94273. $1=$globals.Transcript;
  94274. $recv($1)._show_("Type :q to exit.");
  94275. $recv($1)._cr();
  94276. return self;
  94277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94278. }, function($ctx1) {$ctx1.fill(self,"printWelcome",{})});
  94279. //>>excludeEnd("ctx");
  94280. }; }),
  94281. $globals.Repl);
  94282. $core.addMethod(
  94283. $core.method({
  94284. selector: "processLine:",
  94285. protocol: "private",
  94286. //>>excludeStart("ide", pragmas.excludeIdeData);
  94287. args: ["buffer"],
  94288. source: "processLine: buffer\x0a\x09\x22Processes lines entered through the readline interface.\x22\x0a\x09| show |\x0a\x09show := [:varName :value | self presentResultNamed: varName withValue: value].\x0a\x09(self executeCommand: buffer) ifFalse: [\x0a\x09\x09(self isVariableDefined: buffer)\x0a\x09\x09\x09ifTrue: [show value: buffer value: (session perform: buffer)]\x0a\x09\x09\x09ifFalse: [self assignNewVariable: buffer do: show]]",
  94289. referencedClasses: [],
  94290. //>>excludeEnd("ide");
  94291. pragmas: [],
  94292. messageSends: ["presentResultNamed:withValue:", "ifFalse:", "executeCommand:", "ifTrue:ifFalse:", "isVariableDefined:", "value:value:", "perform:", "assignNewVariable:do:"]
  94293. }, function ($methodClass){ return function (buffer){
  94294. var self=this,$self=this;
  94295. var show;
  94296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94297. return $core.withContext(function($ctx1) {
  94298. //>>excludeEnd("ctx");
  94299. show=(function(varName,value){
  94300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94301. return $core.withContext(function($ctx2) {
  94302. //>>excludeEnd("ctx");
  94303. return $self._presentResultNamed_withValue_(varName,value);
  94304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94305. }, function($ctx2) {$ctx2.fillBlock({varName:varName,value:value},$ctx1,1)});
  94306. //>>excludeEnd("ctx");
  94307. });
  94308. if(!$core.assert($self._executeCommand_(buffer))){
  94309. if($core.assert($self._isVariableDefined_(buffer))){
  94310. $recv(show)._value_value_(buffer,$recv($self.session)._perform_(buffer));
  94311. } else {
  94312. $self._assignNewVariable_do_(buffer,show);
  94313. }
  94314. }
  94315. return self;
  94316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94317. }, function($ctx1) {$ctx1.fill(self,"processLine:",{buffer:buffer,show:show})});
  94318. //>>excludeEnd("ctx");
  94319. }; }),
  94320. $globals.Repl);
  94321. $core.addMethod(
  94322. $core.method({
  94323. selector: "prompt",
  94324. protocol: "accessing",
  94325. //>>excludeStart("ide", pragmas.excludeIdeData);
  94326. args: [],
  94327. source: "prompt\x0a\x09^ 'amber >> '",
  94328. referencedClasses: [],
  94329. //>>excludeEnd("ide");
  94330. pragmas: [],
  94331. messageSends: []
  94332. }, function ($methodClass){ return function (){
  94333. var self=this,$self=this;
  94334. return "amber >> ";
  94335. }; }),
  94336. $globals.Repl);
  94337. $core.addMethod(
  94338. $core.method({
  94339. selector: "setPreviousVariablesFor:from:",
  94340. protocol: "private",
  94341. //>>excludeStart("ide", pragmas.excludeIdeData);
  94342. args: ["newObject", "oldObject"],
  94343. source: "setPreviousVariablesFor: newObject from: oldObject\x0a\x09(self instanceVariableNamesFor: oldObject class) do: [:each |\x0a\x09\x09newObject perform: each, ':' withArguments: {oldObject perform: each}].",
  94344. referencedClasses: [],
  94345. //>>excludeEnd("ide");
  94346. pragmas: [],
  94347. messageSends: ["do:", "instanceVariableNamesFor:", "class", "perform:withArguments:", ",", "perform:"]
  94348. }, function ($methodClass){ return function (newObject,oldObject){
  94349. var self=this,$self=this;
  94350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94351. return $core.withContext(function($ctx1) {
  94352. //>>excludeEnd("ctx");
  94353. $recv($self._instanceVariableNamesFor_($recv(oldObject)._class()))._do_((function(each){
  94354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94355. return $core.withContext(function($ctx2) {
  94356. //>>excludeEnd("ctx");
  94357. return $recv(newObject)._perform_withArguments_($recv(each).__comma(":"),[$recv(oldObject)._perform_(each)]);
  94358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94359. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  94360. //>>excludeEnd("ctx");
  94361. }));
  94362. return self;
  94363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94364. }, function($ctx1) {$ctx1.fill(self,"setPreviousVariablesFor:from:",{newObject:newObject,oldObject:oldObject})});
  94365. //>>excludeEnd("ctx");
  94366. }; }),
  94367. $globals.Repl);
  94368. $core.addMethod(
  94369. $core.method({
  94370. selector: "setPrompt",
  94371. protocol: "actions",
  94372. //>>excludeStart("ide", pragmas.excludeIdeData);
  94373. args: [],
  94374. source: "setPrompt\x0a\x09interface setPrompt: self prompt",
  94375. referencedClasses: [],
  94376. //>>excludeEnd("ide");
  94377. pragmas: [],
  94378. messageSends: ["setPrompt:", "prompt"]
  94379. }, function ($methodClass){ return function (){
  94380. var self=this,$self=this;
  94381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94382. return $core.withContext(function($ctx1) {
  94383. //>>excludeEnd("ctx");
  94384. $recv($self.interface)._setPrompt_($self._prompt());
  94385. return self;
  94386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94387. }, function($ctx1) {$ctx1.fill(self,"setPrompt",{})});
  94388. //>>excludeEnd("ctx");
  94389. }; }),
  94390. $globals.Repl);
  94391. $core.addMethod(
  94392. $core.method({
  94393. selector: "setupCommands",
  94394. protocol: "initialization",
  94395. //>>excludeStart("ide", pragmas.excludeIdeData);
  94396. args: [],
  94397. source: "setupCommands\x0a\x09commands := Dictionary from: {\x0a\x09\x09{':q'} -> [process exit].\x0a\x09\x09{''} -> [interface prompt]}",
  94398. referencedClasses: ["Dictionary"],
  94399. //>>excludeEnd("ide");
  94400. pragmas: [],
  94401. messageSends: ["from:", "->", "exit", "prompt"]
  94402. }, function ($methodClass){ return function (){
  94403. var self=this,$self=this;
  94404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94405. return $core.withContext(function($ctx1) {
  94406. //>>excludeEnd("ctx");
  94407. $self.commands=$recv($globals.Dictionary)._from_([[$recv([":q"]).__minus_gt((function(){
  94408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94409. return $core.withContext(function($ctx2) {
  94410. //>>excludeEnd("ctx");
  94411. return $recv(process)._exit();
  94412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94413. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  94414. //>>excludeEnd("ctx");
  94415. }))
  94416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94417. ,$ctx1.sendIdx["->"]=1
  94418. //>>excludeEnd("ctx");
  94419. ][0],$recv([""]).__minus_gt((function(){
  94420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94421. return $core.withContext(function($ctx2) {
  94422. //>>excludeEnd("ctx");
  94423. return $recv($self.interface)._prompt();
  94424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94425. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  94426. //>>excludeEnd("ctx");
  94427. }))]);
  94428. return self;
  94429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94430. }, function($ctx1) {$ctx1.fill(self,"setupCommands",{})});
  94431. //>>excludeEnd("ctx");
  94432. }; }),
  94433. $globals.Repl);
  94434. $core.addMethod(
  94435. $core.method({
  94436. selector: "setupHotkeys",
  94437. protocol: "initialization",
  94438. //>>excludeStart("ide", pragmas.excludeIdeData);
  94439. args: [],
  94440. source: "setupHotkeys\x0a\x09process stdin on: 'keypress' do: [:s :key | key ifNotNil: [self onKeyPress: key]].",
  94441. referencedClasses: [],
  94442. //>>excludeEnd("ide");
  94443. pragmas: [],
  94444. messageSends: ["on:do:", "stdin", "ifNotNil:", "onKeyPress:"]
  94445. }, function ($methodClass){ return function (){
  94446. var self=this,$self=this;
  94447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94448. return $core.withContext(function($ctx1) {
  94449. //>>excludeEnd("ctx");
  94450. $recv($recv(process)._stdin())._on_do_("keypress",(function(s,key){
  94451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94452. return $core.withContext(function($ctx2) {
  94453. //>>excludeEnd("ctx");
  94454. if(key == null || key.a$nil){
  94455. return key;
  94456. } else {
  94457. return $self._onKeyPress_(key);
  94458. }
  94459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94460. }, function($ctx2) {$ctx2.fillBlock({s:s,key:key},$ctx1,1)});
  94461. //>>excludeEnd("ctx");
  94462. }));
  94463. return self;
  94464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94465. }, function($ctx1) {$ctx1.fill(self,"setupHotkeys",{})});
  94466. //>>excludeEnd("ctx");
  94467. }; }),
  94468. $globals.Repl);
  94469. $core.addMethod(
  94470. $core.method({
  94471. selector: "subclass:withVariable:",
  94472. protocol: "private",
  94473. //>>excludeStart("ide", pragmas.excludeIdeData);
  94474. args: ["aClass", "varName"],
  94475. source: "subclass: aClass withVariable: varName\x0a\x09\x22Create subclass with new variable.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: (self subclassNameFor: aClass) asSymbol\x0a\x09\x09slots: {varName}\x0a\x09\x09package: 'Compiler-Core'",
  94476. referencedClasses: ["ClassBuilder"],
  94477. //>>excludeEnd("ide");
  94478. pragmas: [],
  94479. messageSends: ["addSubclassOf:named:slots:package:", "new", "asSymbol", "subclassNameFor:"]
  94480. }, function ($methodClass){ return function (aClass,varName){
  94481. var self=this,$self=this;
  94482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94483. return $core.withContext(function($ctx1) {
  94484. //>>excludeEnd("ctx");
  94485. return $recv($recv($globals.ClassBuilder)._new())._addSubclassOf_named_slots_package_(aClass,$recv($self._subclassNameFor_(aClass))._asSymbol(),[varName],"Compiler-Core");
  94486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94487. }, function($ctx1) {$ctx1.fill(self,"subclass:withVariable:",{aClass:aClass,varName:varName})});
  94488. //>>excludeEnd("ctx");
  94489. }; }),
  94490. $globals.Repl);
  94491. $core.addMethod(
  94492. $core.method({
  94493. selector: "subclassNameFor:",
  94494. protocol: "private",
  94495. //>>excludeStart("ide", pragmas.excludeIdeData);
  94496. args: ["aClass"],
  94497. source: "subclassNameFor: aClass\x0a\x09^ (aClass name matchesOf: '\x5cd+$')\x0a\x09\x09ifNotNil: [ | counter |\x0a\x09\x09\x09counter := (aClass name matchesOf: '\x5cd+$') first asNumber + 1.\x0a\x09\x09\x09aClass name replaceRegexp: '\x5cd+$' asRegexp with: counter asString]\x0a\x09\x09ifNil: [\x0a\x09\x09\x09aClass name, '2'].",
  94498. referencedClasses: [],
  94499. //>>excludeEnd("ide");
  94500. pragmas: [],
  94501. messageSends: ["ifNotNil:ifNil:", "matchesOf:", "name", "+", "asNumber", "first", "replaceRegexp:with:", "asRegexp", "asString", ","]
  94502. }, function ($methodClass){ return function (aClass){
  94503. var self=this,$self=this;
  94504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94505. return $core.withContext(function($ctx1) {
  94506. //>>excludeEnd("ctx");
  94507. var $1;
  94508. $1=[$recv([$recv(aClass)._name()
  94509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94510. ,$ctx1.sendIdx["name"]=1
  94511. //>>excludeEnd("ctx");
  94512. ][0])._matchesOf_("\x5cd+$")
  94513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94514. ,$ctx1.sendIdx["matchesOf:"]=1
  94515. //>>excludeEnd("ctx");
  94516. ][0];
  94517. if($1 == null || $1.a$nil){
  94518. return $recv($recv(aClass)._name()).__comma("2");
  94519. } else {
  94520. var counter;
  94521. counter=$recv($recv($recv($recv([$recv(aClass)._name()
  94522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94523. ,$ctx1.sendIdx["name"]=2
  94524. //>>excludeEnd("ctx");
  94525. ][0])._matchesOf_("\x5cd+$"))._first())._asNumber()).__plus((1));
  94526. return $recv([$recv(aClass)._name()
  94527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94528. ,$ctx1.sendIdx["name"]=3
  94529. //>>excludeEnd("ctx");
  94530. ][0])._replaceRegexp_with_("\x5cd+$"._asRegexp(),$recv(counter)._asString());
  94531. }
  94532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94533. }, function($ctx1) {$ctx1.fill(self,"subclassNameFor:",{aClass:aClass})});
  94534. //>>excludeEnd("ctx");
  94535. }; }),
  94536. $globals.Repl);
  94537. $core.addMethod(
  94538. $core.method({
  94539. selector: "main",
  94540. protocol: "initialization",
  94541. //>>excludeStart("ide", pragmas.excludeIdeData);
  94542. args: [],
  94543. source: "main\x0a\x09self new createInterface",
  94544. referencedClasses: [],
  94545. //>>excludeEnd("ide");
  94546. pragmas: [],
  94547. messageSends: ["createInterface", "new"]
  94548. }, function ($methodClass){ return function (){
  94549. var self=this,$self=this;
  94550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94551. return $core.withContext(function($ctx1) {
  94552. //>>excludeEnd("ctx");
  94553. $recv($self._new())._createInterface();
  94554. return self;
  94555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94556. }, function($ctx1) {$ctx1.fill(self,"main",{})});
  94557. //>>excludeEnd("ctx");
  94558. }; }),
  94559. $globals.Repl.a$cls);
  94560. });
  94561. (function () {
  94562. define('__app__',["amber/devel", "amber/core/Platform-Node", "amber_cli/AmberCli"], function (amber) {
  94563. amber.initialize().then(function () {
  94564. amber.globals.AmberCli._main();
  94565. });
  94566. });
  94567. }());
  94568. (function () {
  94569. define('app',["require", "amber/es6-promise"], function (require, promiseLib) {
  94570. promiseLib.polyfill();
  94571. return new Promise(function (resolve, reject) {
  94572. require(["__app__"], resolve, reject);
  94573. });
  94574. });
  94575. }());
  94576. require(["app"]);
  94577. });
  94578. }((function amdefine(module, requireFn) {
  94579. 'use strict';
  94580. var defineCache = {},
  94581. loaderCache = {},
  94582. alreadyCalled = false,
  94583. path = require('path'),
  94584. makeRequire, stringRequire;
  94585. /**
  94586. * Trims the . and .. from an array of path segments.
  94587. * It will keep a leading path segment if a .. will become
  94588. * the first path segment, to help with module name lookups,
  94589. * which act like paths, but can be remapped. But the end result,
  94590. * all paths that use this function should look normalized.
  94591. * NOTE: this method MODIFIES the input array.
  94592. * @param {Array} ary the array of path segments.
  94593. */
  94594. function trimDots(ary) {
  94595. var i, part;
  94596. for (i = 0; ary[i]; i+= 1) {
  94597. part = ary[i];
  94598. if (part === '.') {
  94599. ary.splice(i, 1);
  94600. i -= 1;
  94601. } else if (part === '..') {
  94602. if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
  94603. //End of the line. Keep at least one non-dot
  94604. //path segment at the front so it can be mapped
  94605. //correctly to disk. Otherwise, there is likely
  94606. //no path mapping for a path starting with '..'.
  94607. //This can still fail, but catches the most reasonable
  94608. //uses of ..
  94609. break;
  94610. } else if (i > 0) {
  94611. ary.splice(i - 1, 2);
  94612. i -= 2;
  94613. }
  94614. }
  94615. }
  94616. }
  94617. function normalize(name, baseName) {
  94618. var baseParts;
  94619. //Adjust any relative paths.
  94620. if (name && name.charAt(0) === '.') {
  94621. //If have a base name, try to normalize against it,
  94622. //otherwise, assume it is a top-level require that will
  94623. //be relative to baseUrl in the end.
  94624. if (baseName) {
  94625. baseParts = baseName.split('/');
  94626. baseParts = baseParts.slice(0, baseParts.length - 1);
  94627. baseParts = baseParts.concat(name.split('/'));
  94628. trimDots(baseParts);
  94629. name = baseParts.join('/');
  94630. }
  94631. }
  94632. return name;
  94633. }
  94634. /**
  94635. * Create the normalize() function passed to a loader plugin's
  94636. * normalize method.
  94637. */
  94638. function makeNormalize(relName) {
  94639. return function (name) {
  94640. return normalize(name, relName);
  94641. };
  94642. }
  94643. function makeLoad(id) {
  94644. function load(value) {
  94645. loaderCache[id] = value;
  94646. }
  94647. load.fromText = function (id, text) {
  94648. //This one is difficult because the text can/probably uses
  94649. //define, and any relative paths and requires should be relative
  94650. //to that id was it would be found on disk. But this would require
  94651. //bootstrapping a module/require fairly deeply from node core.
  94652. //Not sure how best to go about that yet.
  94653. throw new Error('amdefine does not implement load.fromText');
  94654. };
  94655. return load;
  94656. }
  94657. makeRequire = function (systemRequire, exports, module, relId) {
  94658. function requireInContext(depName) {
  94659. return stringRequire(systemRequire, exports, module, depName, relId);
  94660. }
  94661. function amdRequire(deps, callback) {
  94662. if (typeof deps === 'string') {
  94663. //Synchronous, single module require('')
  94664. return requireInContext(deps);
  94665. } else {
  94666. //Array of dependencies with a callback.
  94667. if (callback) {
  94668. //Wait for next tick to call back the require call.
  94669. process.nextTick(function () {
  94670. //Convert the dependencies to modules.
  94671. callback.apply(null, deps.map(requireInContext));
  94672. });
  94673. } else {
  94674. //Require the dependencies' moduies.
  94675. deps.forEach(requireInContext);
  94676. }
  94677. }
  94678. }
  94679. amdRequire.toUrl = function (filePath) {
  94680. if (filePath.indexOf('.') === 0) {
  94681. return normalize(filePath, path.dirname(module.filename));
  94682. } else {
  94683. return filePath;
  94684. }
  94685. };
  94686. return amdRequire;
  94687. };
  94688. //Favor explicit value, passed in if the module wants to support Node 0.4.
  94689. requireFn = requireFn || function req() {
  94690. return module.require.apply(module, arguments);
  94691. };
  94692. function runFactory(id, deps, factory) {
  94693. var r, e, m, result;
  94694. if (id) {
  94695. e = loaderCache[id] = {};
  94696. m = {
  94697. id: id,
  94698. uri: __filename,
  94699. exports: e
  94700. };
  94701. r = makeRequire(requireFn, e, m, id);
  94702. } else {
  94703. //Only support one define call per file
  94704. if (alreadyCalled) {
  94705. throw new Error('amdefine with no module ID cannot be called more than once per file.');
  94706. }
  94707. alreadyCalled = true;
  94708. //Use the real variables from node
  94709. //Use module.exports for exports, since
  94710. //the exports in here is amdefine exports.
  94711. e = module.exports;
  94712. m = module;
  94713. r = makeRequire(requireFn, e, m, module.id);
  94714. }
  94715. //If there are dependencies, they are strings, so need
  94716. //to convert them to dependency values.
  94717. if (deps) {
  94718. deps = deps.map(function (depName) {
  94719. return r(depName);
  94720. });
  94721. }
  94722. //Call the factory with the right dependencies.
  94723. if (typeof factory === 'function') {
  94724. result = factory.apply(m.exports, deps);
  94725. } else {
  94726. result = factory;
  94727. }
  94728. if (result !== undefined) {
  94729. m.exports = result;
  94730. if (id) {
  94731. loaderCache[id] = m.exports;
  94732. }
  94733. }
  94734. }
  94735. stringRequire = function (systemRequire, exports, module, id, relId) {
  94736. //Split the ID by a ! so that
  94737. var index = id.indexOf('!'),
  94738. originalId = id,
  94739. prefix, plugin;
  94740. if (index === -1) {
  94741. id = normalize(id, relId);
  94742. //Straight module lookup. If it is one of the special dependencies,
  94743. //deal with it, otherwise, delegate to node.
  94744. if (id === 'require') {
  94745. return makeRequire(systemRequire, exports, module, relId);
  94746. } else if (id === 'exports') {
  94747. return exports;
  94748. } else if (id === 'module') {
  94749. return module;
  94750. } else if (loaderCache.hasOwnProperty(id)) {
  94751. return loaderCache[id];
  94752. } else if (defineCache[id]) {
  94753. runFactory.apply(null, defineCache[id]);
  94754. return loaderCache[id];
  94755. } else {
  94756. if(systemRequire) {
  94757. return systemRequire(originalId);
  94758. } else {
  94759. throw new Error('No module with ID: ' + id);
  94760. }
  94761. }
  94762. } else {
  94763. //There is a plugin in play.
  94764. prefix = id.substring(0, index);
  94765. id = id.substring(index + 1, id.length);
  94766. plugin = stringRequire(systemRequire, exports, module, prefix, relId);
  94767. if (plugin.normalize) {
  94768. id = plugin.normalize(id, makeNormalize(relId));
  94769. } else {
  94770. //Normalize the ID normally.
  94771. id = normalize(id, relId);
  94772. }
  94773. if (loaderCache[id]) {
  94774. return loaderCache[id];
  94775. } else {
  94776. plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {});
  94777. return loaderCache[id];
  94778. }
  94779. }
  94780. };
  94781. //Create a define function specific to the module asking for amdefine.
  94782. function define(id, deps, factory) {
  94783. if (Array.isArray(id)) {
  94784. factory = deps;
  94785. deps = id;
  94786. id = undefined;
  94787. } else if (typeof id !== 'string') {
  94788. factory = id;
  94789. id = deps = undefined;
  94790. }
  94791. if (deps && !Array.isArray(deps)) {
  94792. factory = deps;
  94793. deps = undefined;
  94794. }
  94795. if (!deps) {
  94796. deps = ['require', 'exports', 'module'];
  94797. }
  94798. //Set up properties for this module. If an ID, then use
  94799. //internal cache. If no ID, then use the external variables
  94800. //for this node module.
  94801. if (id) {
  94802. //Put the module in deep freeze until there is a
  94803. //require call for it.
  94804. defineCache[id] = [id, deps, factory];
  94805. } else {
  94806. runFactory(id, deps, factory);
  94807. }
  94808. }
  94809. //define.require, which has access to all the values in the
  94810. //cache. Useful for AMD modules that all have IDs in the file,
  94811. //but need to finally export a value to node based on one of those
  94812. //IDs.
  94813. define.require = function (id) {
  94814. if (loaderCache[id]) {
  94815. return loaderCache[id];
  94816. }
  94817. if (defineCache[id]) {
  94818. runFactory.apply(null, defineCache[id]);
  94819. return loaderCache[id];
  94820. }
  94821. };
  94822. define.amd = {};
  94823. return define;
  94824. }(module)), require));